From 9cc5f06f785a33252c36034a6ae0fe0a52498637 Mon Sep 17 00:00:00 2001 From: Josephus Paye II Date: Thu, 18 May 2017 22:24:57 +1000 Subject: [PATCH 01/17] Initial work on Configuration - Includes a basic working Tree component for browsing configuration files --- src/client/components/app/style.css | 4 ++ src/client/components/configuration/style.css | 48 +++++++++++++ .../components/configuration/tree/file.svg | 3 + .../configuration/tree/folder-open.svg | 3 + .../components/configuration/tree/folder.svg | 3 + .../components/configuration/tree/style.css | 49 +++++++++++++ .../components/configuration/tree/tree.tsx | 68 ++++++++++++++++++ .../components/configuration/tree_store.tsx | 39 ++++++++++ src/client/components/configuration/view.tsx | 71 +++++++++++++++++++ src/client/components/navigation/view.tsx | 1 + src/client/index.tsx | 2 + 11 files changed, 291 insertions(+) create mode 100644 src/client/components/configuration/style.css create mode 100644 src/client/components/configuration/tree/file.svg create mode 100644 src/client/components/configuration/tree/folder-open.svg create mode 100644 src/client/components/configuration/tree/folder.svg create mode 100644 src/client/components/configuration/tree/style.css create mode 100644 src/client/components/configuration/tree/tree.tsx create mode 100644 src/client/components/configuration/tree_store.tsx create mode 100644 src/client/components/configuration/view.tsx diff --git a/src/client/components/app/style.css b/src/client/components/app/style.css index a144dafe..56a9d081 100644 --- a/src/client/components/app/style.css +++ b/src/client/components/app/style.css @@ -1,5 +1,9 @@ @import url('https://fonts.googleapis.com/css?family=Open+Sans:300,400,500'); +* { + box-sizing: border-box; +} + html, body { margin: 0; diff --git a/src/client/components/configuration/style.css b/src/client/components/configuration/style.css new file mode 100644 index 00000000..5666d7c0 --- /dev/null +++ b/src/client/components/configuration/style.css @@ -0,0 +1,48 @@ +.configuration { + flex-grow: 1; + flex-shrink: 1; + display: flex; + flex-direction: column; + font-weight: normal; +} + +.configuration__header { + height: 61px; + border-bottom: 1px solid #DDD; + display: flex; + align-items: center; + padding: 8px; + flex-shrink: 0; +} + +.configuration__headerTitle { + margin: 0; + padding: 0; + font-size: 18px; +} + +.configuration__body { + flex-grow: 1; + display: flex; +} + +.configuration__sidebar { + width: 256px; + border-right: 1px solid #DDD; +} + +.configuration__sidebarHeader { + background-color: #EEE; + padding: 4px 8px; + border-bottom: 1px solid #DDD; + font-weight: bold; +} + +.configuration__content { + flex-grow: 1; +} + +.configuration__contentPlaceholder { + padding-top: 32px; + text-align: center; +} diff --git a/src/client/components/configuration/tree/file.svg b/src/client/components/configuration/tree/file.svg new file mode 100644 index 00000000..06bbcc51 --- /dev/null +++ b/src/client/components/configuration/tree/file.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/client/components/configuration/tree/folder-open.svg b/src/client/components/configuration/tree/folder-open.svg new file mode 100644 index 00000000..05ad2689 --- /dev/null +++ b/src/client/components/configuration/tree/folder-open.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/client/components/configuration/tree/folder.svg b/src/client/components/configuration/tree/folder.svg new file mode 100644 index 00000000..d7d70dfa --- /dev/null +++ b/src/client/components/configuration/tree/folder.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/client/components/configuration/tree/style.css b/src/client/components/configuration/tree/style.css new file mode 100644 index 00000000..54540364 --- /dev/null +++ b/src/client/components/configuration/tree/style.css @@ -0,0 +1,49 @@ +.treenode { + display: flex; + flex-direction: column; +} + +.treenode__header { + display: flex; + align-items: center; + height: 28px; + padding: 4px 8px; + cursor: pointer; + user-select: none; +} + +.treenode__header:hover { + background-color: #EEE; + color: #1976D2; +} + +.treenode__icon { + margin-right: 4px; +} + +.treenode__icon svg { + display: block; + width: 18px; + height: 18px; +} + +.treenode__label { + flex-grow: 1; +} + +.treenode__children { + display: none; +} + +.treenode--expanded > .treenode__children { + display: block; +} + +.treenode--selected > .treenode__header { + color: white; + background-color: #2196F3; +} + +.treenode--selected > .treenode__header svg { + fill: rgba(255, 255, 255, 0.75); +} diff --git a/src/client/components/configuration/tree/tree.tsx b/src/client/components/configuration/tree/tree.tsx new file mode 100644 index 00000000..df44dd25 --- /dev/null +++ b/src/client/components/configuration/tree/tree.tsx @@ -0,0 +1,68 @@ +import * as classnames from 'classnames' +import { observer } from 'mobx-react' +import * as React from 'react' + +import FileIcon from './file.svg' +import FolderIconOpen from './folder-open.svg' +import FolderIcon from './folder.svg' +import * as style from './style.css' + +export interface Node { + label: string, + expanded: boolean, + leaf: boolean, + selected: boolean, + children?: Node[] +} + +export interface TreeProps { + data: Node, + level?: number, + onClick(node: Node): void +} + +@observer +export class Tree extends React.Component { + constructor(props: any, context: any) { + super(props, context) + this.onClick = this.onClick.bind(this) + } + + public render(): JSX.Element { + const children = this.props.data.children || [] + const hasChildren = children.length > 0 + const level = this.props.level || 0 + const classes = classnames( + style.treenode, + { [style['treenode--expanded']]: this.props.data.expanded }, + { [style['treenode--selected']]: this.props.data.selected }, + ) + const headerInlineStyle = { paddingLeft: 8 + (level * 22) + 'px' } + + return ( +
+
+
+ { + hasChildren ? + (this.props.data.expanded ? : ) : + + } +
+ +
{ this.props.data.label }
+
+ +
+ { children.map((child, i) => ) } +
+
+ ) + } + + private onClick = (e: any) => { + this.props.onClick(this.props.data) + } +} + +export default Tree diff --git a/src/client/components/configuration/tree_store.tsx b/src/client/components/configuration/tree_store.tsx new file mode 100644 index 00000000..71ace886 --- /dev/null +++ b/src/client/components/configuration/tree_store.tsx @@ -0,0 +1,39 @@ +import { action, observable } from 'mobx' +import { Node } from './tree/tree' + +export default class TreeStore { + @observable + public data: Node + + @observable + public selectedNode: Node + + constructor(data: Node) { + this.data = data + this.onNodeClick = this.onNodeClick.bind(this) + } + + @action + public onNodeClick(node: Node): void { + if (node.leaf) { + this.selectNode(node) + } else { + this.toggleExpansion(node) + } + } + + @action + public toggleExpansion(node: Node) { + node.expanded = !node.expanded + } + + @action + public selectNode(node: Node) { + if (this.selectedNode) { + this.selectedNode.selected = false + } + + node.selected = true + this.selectedNode = node + } +} diff --git a/src/client/components/configuration/view.tsx b/src/client/components/configuration/view.tsx new file mode 100644 index 00000000..2606619a --- /dev/null +++ b/src/client/components/configuration/view.tsx @@ -0,0 +1,71 @@ +import * as React from 'react' +import * as style from './style.css' +import { Node, Tree } from './tree/tree' +import TreeStore from './tree_store' + +const store = new TreeStore({ + label: 'root', + expanded: true, + leaf: false, + selected: false, + children: [ + { + label: 'parent', + expanded: false, + leaf: false, + selected: false, + children: [ + { label: 'child1', expanded: false, leaf: true, selected: false }, + { label: 'child2', expanded: false, leaf: true, selected: false }, + ], + }, + { + label: 'parent', + expanded: false, + leaf: false, + selected: false, + children: [ + { + label: 'nested parent', + expanded: false, + leaf: false, + selected: false, + children: [ + { label: 'nested child 1', expanded: false, leaf: true, selected: false }, + { label: 'nested child 2', expanded: false, leaf: true, selected: false }, + ], + }, + ], + }, + { + label: 'Some file here', + expanded: true, + leaf: true, + selected: false, + children: [] as Node[], + }, + ], +}) + +export const Configuration = () => ( +
+
+

Configuration

+
+ +
+
+
Files
+ +
+ +
+
+ Select a file to edit +
+
+
+
+) + +export default Configuration diff --git a/src/client/components/navigation/view.tsx b/src/client/components/navigation/view.tsx index cf103d2e..4a22f532 100644 --- a/src/client/components/navigation/view.tsx +++ b/src/client/components/navigation/view.tsx @@ -43,6 +43,7 @@ export const NavigationView = () => ( Classifier Subsumption GameState + Configuration ) diff --git a/src/client/index.tsx b/src/client/index.tsx index 2ab0c02e..50d87165 100644 --- a/src/client/index.tsx +++ b/src/client/index.tsx @@ -8,6 +8,7 @@ import * as io from 'socket.io-client' import { AppView } from './components/app/view' import { Chart } from './components/chart/view' import { Classifier } from './components/classifier/view' +import { Configuration } from './components/configuration/view' import { Dashboard } from './components/dashboard/view' import { GameState } from './components/game_state/view' import { RobotModel } from './components/localisation/darwin_robot/model' @@ -96,6 +97,7 @@ ReactDOM.render( + , From 1f61d48a9517cab937e61fdaaf0c4c47bde6dc58 Mon Sep 17 00:00:00 2001 From: Josephus Paye II Date: Fri, 19 May 2017 11:44:16 +1000 Subject: [PATCH 02/17] Convert indents to 2-spaces --- src/client/components/configuration/style.css | 96 +++++++++---------- .../components/configuration/tree/style.css | 40 ++++---- 2 files changed, 68 insertions(+), 68 deletions(-) diff --git a/src/client/components/configuration/style.css b/src/client/components/configuration/style.css index 5666d7c0..7bdfeb56 100644 --- a/src/client/components/configuration/style.css +++ b/src/client/components/configuration/style.css @@ -1,48 +1,48 @@ -.configuration { - flex-grow: 1; - flex-shrink: 1; - display: flex; - flex-direction: column; - font-weight: normal; -} - -.configuration__header { - height: 61px; - border-bottom: 1px solid #DDD; - display: flex; - align-items: center; - padding: 8px; - flex-shrink: 0; -} - -.configuration__headerTitle { - margin: 0; - padding: 0; - font-size: 18px; -} - -.configuration__body { - flex-grow: 1; - display: flex; -} - -.configuration__sidebar { - width: 256px; - border-right: 1px solid #DDD; -} - -.configuration__sidebarHeader { - background-color: #EEE; - padding: 4px 8px; - border-bottom: 1px solid #DDD; - font-weight: bold; -} - -.configuration__content { - flex-grow: 1; -} - -.configuration__contentPlaceholder { - padding-top: 32px; - text-align: center; -} +.configuration { + flex-grow: 1; + flex-shrink: 1; + display: flex; + flex-direction: column; + font-weight: normal; +} + +.configuration__header { + height: 61px; + border-bottom: 1px solid #DDD; + display: flex; + align-items: center; + padding: 8px; + flex-shrink: 0; +} + +.configuration__headerTitle { + margin: 0; + padding: 0; + font-size: 18px; +} + +.configuration__body { + flex-grow: 1; + display: flex; +} + +.configuration__sidebar { + width: 256px; + border-right: 1px solid #DDD; +} + +.configuration__sidebarHeader { + background-color: #EEE; + padding: 4px 8px; + border-bottom: 1px solid #DDD; + font-weight: bold; +} + +.configuration__content { + flex-grow: 1; +} + +.configuration__contentPlaceholder { + padding-top: 32px; + text-align: center; +} diff --git a/src/client/components/configuration/tree/style.css b/src/client/components/configuration/tree/style.css index 54540364..c99e6ba4 100644 --- a/src/client/components/configuration/tree/style.css +++ b/src/client/components/configuration/tree/style.css @@ -1,49 +1,49 @@ .treenode { - display: flex; - flex-direction: column; + display: flex; + flex-direction: column; } .treenode__header { - display: flex; - align-items: center; - height: 28px; - padding: 4px 8px; - cursor: pointer; - user-select: none; + display: flex; + align-items: center; + height: 28px; + padding: 4px 8px; + cursor: pointer; + user-select: none; } .treenode__header:hover { - background-color: #EEE; - color: #1976D2; + background-color: #EEE; + color: #1976D2; } .treenode__icon { - margin-right: 4px; + margin-right: 4px; } .treenode__icon svg { - display: block; - width: 18px; - height: 18px; + display: block; + width: 18px; + height: 18px; } .treenode__label { - flex-grow: 1; + flex-grow: 1; } .treenode__children { - display: none; + display: none; } .treenode--expanded > .treenode__children { - display: block; + display: block; } .treenode--selected > .treenode__header { - color: white; - background-color: #2196F3; + color: white; + background-color: #2196F3; } .treenode--selected > .treenode__header svg { - fill: rgba(255, 255, 255, 0.75); + fill: rgba(255, 255, 255, 0.75); } From a097af5b8fc06d122ce915b3b276f7ea9a21a312 Mon Sep 17 00:00:00 2001 From: Josephus Paye II Date: Fri, 19 May 2017 11:45:25 +1000 Subject: [PATCH 03/17] Add trailing newline to SVG files, use 2 space indents --- src/client/components/configuration/tree/file.svg | 4 ++-- src/client/components/configuration/tree/folder-open.svg | 4 ++-- src/client/components/configuration/tree/folder.svg | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/client/components/configuration/tree/file.svg b/src/client/components/configuration/tree/file.svg index 06bbcc51..8f19e81a 100644 --- a/src/client/components/configuration/tree/file.svg +++ b/src/client/components/configuration/tree/file.svg @@ -1,3 +1,3 @@ - - \ No newline at end of file + + diff --git a/src/client/components/configuration/tree/folder-open.svg b/src/client/components/configuration/tree/folder-open.svg index 05ad2689..6b4b5d8e 100644 --- a/src/client/components/configuration/tree/folder-open.svg +++ b/src/client/components/configuration/tree/folder-open.svg @@ -1,3 +1,3 @@ - - \ No newline at end of file + + diff --git a/src/client/components/configuration/tree/folder.svg b/src/client/components/configuration/tree/folder.svg index d7d70dfa..fc84416d 100644 --- a/src/client/components/configuration/tree/folder.svg +++ b/src/client/components/configuration/tree/folder.svg @@ -1,3 +1,3 @@ - - \ No newline at end of file + + From ead72c5d7b3b9eadba79c5457342e857368e2c2a Mon Sep 17 00:00:00 2001 From: Josephus Paye II Date: Fri, 19 May 2017 11:53:23 +1000 Subject: [PATCH 04/17] Remove trailing commas from interfaces --- src/client/components/configuration/tree/tree.tsx | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/client/components/configuration/tree/tree.tsx b/src/client/components/configuration/tree/tree.tsx index df44dd25..550d6c89 100644 --- a/src/client/components/configuration/tree/tree.tsx +++ b/src/client/components/configuration/tree/tree.tsx @@ -8,16 +8,16 @@ import FolderIcon from './folder.svg' import * as style from './style.css' export interface Node { - label: string, - expanded: boolean, - leaf: boolean, - selected: boolean, + label: string + expanded: boolean + leaf: boolean + selected: boolean children?: Node[] } export interface TreeProps { - data: Node, - level?: number, + data: Node + level?: number onClick(node: Node): void } From 58266010424514ede012ba8ec08ce4decb669dc6 Mon Sep 17 00:00:00 2001 From: Josephus Paye II Date: Fri, 19 May 2017 11:59:10 +1000 Subject: [PATCH 05/17] Remove default exports --- src/client/components/configuration/tree/tree.tsx | 2 -- src/client/components/configuration/tree_store.tsx | 2 +- src/client/components/configuration/view.tsx | 4 +--- 3 files changed, 2 insertions(+), 6 deletions(-) diff --git a/src/client/components/configuration/tree/tree.tsx b/src/client/components/configuration/tree/tree.tsx index 550d6c89..70e2ce24 100644 --- a/src/client/components/configuration/tree/tree.tsx +++ b/src/client/components/configuration/tree/tree.tsx @@ -64,5 +64,3 @@ export class Tree extends React.Component { this.props.onClick(this.props.data) } } - -export default Tree diff --git a/src/client/components/configuration/tree_store.tsx b/src/client/components/configuration/tree_store.tsx index 71ace886..117e3242 100644 --- a/src/client/components/configuration/tree_store.tsx +++ b/src/client/components/configuration/tree_store.tsx @@ -1,7 +1,7 @@ import { action, observable } from 'mobx' import { Node } from './tree/tree' -export default class TreeStore { +export class TreeStore { @observable public data: Node diff --git a/src/client/components/configuration/view.tsx b/src/client/components/configuration/view.tsx index 2606619a..d1ed333a 100644 --- a/src/client/components/configuration/view.tsx +++ b/src/client/components/configuration/view.tsx @@ -1,7 +1,7 @@ import * as React from 'react' import * as style from './style.css' import { Node, Tree } from './tree/tree' -import TreeStore from './tree_store' +import { TreeStore } from './tree_store' const store = new TreeStore({ label: 'root', @@ -67,5 +67,3 @@ export const Configuration = () => ( ) - -export default Configuration From b1018052b329b4648d57c26c280a2291019de626 Mon Sep 17 00:00:00 2001 From: Josephus Paye II Date: Wed, 24 May 2017 16:31:36 +1000 Subject: [PATCH 06/17] Remove unnecessary tree constructor, render children only when expanded --- .../components/configuration/tree/style.css | 12 ++---------- src/client/components/configuration/tree/tree.tsx | 15 ++++++--------- 2 files changed, 8 insertions(+), 19 deletions(-) diff --git a/src/client/components/configuration/tree/style.css b/src/client/components/configuration/tree/style.css index c99e6ba4..1854a5ef 100644 --- a/src/client/components/configuration/tree/style.css +++ b/src/client/components/configuration/tree/style.css @@ -31,19 +31,11 @@ flex-grow: 1; } -.treenode__children { - display: none; -} - -.treenode--expanded > .treenode__children { - display: block; -} - -.treenode--selected > .treenode__header { +.treenode--selected .treenode__header { color: white; background-color: #2196F3; } -.treenode--selected > .treenode__header svg { +.treenode--selected .treenode__header svg { fill: rgba(255, 255, 255, 0.75); } diff --git a/src/client/components/configuration/tree/tree.tsx b/src/client/components/configuration/tree/tree.tsx index 70e2ce24..7a2f0bfc 100644 --- a/src/client/components/configuration/tree/tree.tsx +++ b/src/client/components/configuration/tree/tree.tsx @@ -22,12 +22,7 @@ export interface TreeProps { } @observer -export class Tree extends React.Component { - constructor(props: any, context: any) { - super(props, context) - this.onClick = this.onClick.bind(this) - } - +export class Tree extends React.Component { public render(): JSX.Element { const children = this.props.data.children || [] const hasChildren = children.length > 0 @@ -53,9 +48,11 @@ export class Tree extends React.Component {
{ this.props.data.label }
-
- { children.map((child, i) => ) } -
+ {this.props.data.expanded && +
+ { children.map((child, i) => ) } +
+ } ) } From 5188eaca99d6c02b39ca355157a003743c16a762 Mon Sep 17 00:00:00 2001 From: Josephus Paye II Date: Wed, 24 May 2017 17:20:52 +1000 Subject: [PATCH 07/17] Rename tree_store to tree_model --- src/client/components/configuration/tree/tree.tsx | 1 - .../components/configuration/{tree_store.tsx => tree_model.tsx} | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) rename src/client/components/configuration/{tree_store.tsx => tree_model.tsx} (96%) diff --git a/src/client/components/configuration/tree/tree.tsx b/src/client/components/configuration/tree/tree.tsx index 7a2f0bfc..74808959 100644 --- a/src/client/components/configuration/tree/tree.tsx +++ b/src/client/components/configuration/tree/tree.tsx @@ -29,7 +29,6 @@ export class Tree extends React.Component { const level = this.props.level || 0 const classes = classnames( style.treenode, - { [style['treenode--expanded']]: this.props.data.expanded }, { [style['treenode--selected']]: this.props.data.selected }, ) const headerInlineStyle = { paddingLeft: 8 + (level * 22) + 'px' } diff --git a/src/client/components/configuration/tree_store.tsx b/src/client/components/configuration/tree_model.tsx similarity index 96% rename from src/client/components/configuration/tree_store.tsx rename to src/client/components/configuration/tree_model.tsx index 117e3242..abeb4f03 100644 --- a/src/client/components/configuration/tree_store.tsx +++ b/src/client/components/configuration/tree_model.tsx @@ -1,7 +1,7 @@ import { action, observable } from 'mobx' import { Node } from './tree/tree' -export class TreeStore { +export class TreeModel { @observable public data: Node From 3e28be43f7630c09a2953874731be23de45d2361 Mon Sep 17 00:00:00 2001 From: Josephus Paye II Date: Wed, 24 May 2017 17:25:11 +1000 Subject: [PATCH 08/17] Extract sidebar wrapper to standalone panel component --- .../components/configuration/panel/panel.tsx | 25 +++++++++++++++++++ .../components/configuration/panel/style.css | 21 ++++++++++++++++ src/client/components/configuration/style.css | 7 ------ src/client/components/configuration/view.tsx | 13 +++++----- 4 files changed, 53 insertions(+), 13 deletions(-) create mode 100644 src/client/components/configuration/panel/panel.tsx create mode 100644 src/client/components/configuration/panel/style.css diff --git a/src/client/components/configuration/panel/panel.tsx b/src/client/components/configuration/panel/panel.tsx new file mode 100644 index 00000000..8705197d --- /dev/null +++ b/src/client/components/configuration/panel/panel.tsx @@ -0,0 +1,25 @@ +import * as React from 'react' +import * as style from './style.css' + +export interface PanelProps { + title: string + className?: string +} + +export class Panel extends React.Component { + public static defaultProps: Partial = { + className: '', + } + + public render(): JSX.Element { + return ( +
+
+
{ this.props.title }
+
+ +
{ this.props.children }
+
+ ) + } +} diff --git a/src/client/components/configuration/panel/style.css b/src/client/components/configuration/panel/style.css new file mode 100644 index 00000000..97422687 --- /dev/null +++ b/src/client/components/configuration/panel/style.css @@ -0,0 +1,21 @@ +.panel { + display: flex; + flex-direction: column; +} + +.panel__header { + background-color: #EEE; + border-bottom: 1px solid #DDD; + padding: 4px 8px; + flex-shrink: 0; +} + +.panel__title { + font-size: 14px; + font-weight: bold; +} + +.panel__body { + flex-grow: 1; + overflow: auto; +} diff --git a/src/client/components/configuration/style.css b/src/client/components/configuration/style.css index 7bdfeb56..173170da 100644 --- a/src/client/components/configuration/style.css +++ b/src/client/components/configuration/style.css @@ -31,13 +31,6 @@ border-right: 1px solid #DDD; } -.configuration__sidebarHeader { - background-color: #EEE; - padding: 4px 8px; - border-bottom: 1px solid #DDD; - font-weight: bold; -} - .configuration__content { flex-grow: 1; } diff --git a/src/client/components/configuration/view.tsx b/src/client/components/configuration/view.tsx index d1ed333a..1a8e6b2b 100644 --- a/src/client/components/configuration/view.tsx +++ b/src/client/components/configuration/view.tsx @@ -1,9 +1,11 @@ import * as React from 'react' import * as style from './style.css' + +import { Panel } from './panel/panel' import { Node, Tree } from './tree/tree' -import { TreeStore } from './tree_store' +import { TreeModel } from './tree_model' -const store = new TreeStore({ +const model = new TreeModel({ label: 'root', expanded: true, leaf: false, @@ -54,10 +56,9 @@ export const Configuration = () => (
-
-
Files
- -
+ + +
From e01ab49b8cbdd7cddabf38f3c3cfb0e0de2fd638 Mon Sep 17 00:00:00 2001 From: Josephus Paye II Date: Wed, 24 May 2017 18:10:59 +1000 Subject: [PATCH 09/17] Extract view wrapper (and header) to dedicated view component --- src/client/components/configuration/style.css | 20 --------- src/client/components/configuration/view.tsx | 23 ++++------- .../components/configuration/view/style.css | 33 +++++++++++++++ .../components/configuration/view/view.tsx | 41 +++++++++++++++++++ 4 files changed, 83 insertions(+), 34 deletions(-) create mode 100644 src/client/components/configuration/view/style.css create mode 100644 src/client/components/configuration/view/view.tsx diff --git a/src/client/components/configuration/style.css b/src/client/components/configuration/style.css index 173170da..89dfd204 100644 --- a/src/client/components/configuration/style.css +++ b/src/client/components/configuration/style.css @@ -1,28 +1,8 @@ .configuration { - flex-grow: 1; - flex-shrink: 1; - display: flex; - flex-direction: column; font-weight: normal; } -.configuration__header { - height: 61px; - border-bottom: 1px solid #DDD; - display: flex; - align-items: center; - padding: 8px; - flex-shrink: 0; -} - -.configuration__headerTitle { - margin: 0; - padding: 0; - font-size: 18px; -} - .configuration__body { - flex-grow: 1; display: flex; } diff --git a/src/client/components/configuration/view.tsx b/src/client/components/configuration/view.tsx index 1a8e6b2b..f712fbe7 100644 --- a/src/client/components/configuration/view.tsx +++ b/src/client/components/configuration/view.tsx @@ -4,6 +4,7 @@ import * as style from './style.css' import { Panel } from './panel/panel' import { Node, Tree } from './tree/tree' import { TreeModel } from './tree_model' +import { View } from './view/view' const model = new TreeModel({ label: 'root', @@ -50,21 +51,15 @@ const model = new TreeModel({ }) export const Configuration = () => ( -
-
-

Configuration

-
- -
- - - + + + + -
-
- Select a file to edit -
+
+
+ Select a file to edit
-
+
) diff --git a/src/client/components/configuration/view/style.css b/src/client/components/configuration/view/style.css new file mode 100644 index 00000000..13132967 --- /dev/null +++ b/src/client/components/configuration/view/style.css @@ -0,0 +1,33 @@ +.view { + display: flex; + flex-direction: column; + flex-grow: 1; + flex-shrink: 1; +} + +.view__header { + align-items: center; + border-bottom: 1px solid #DDD; + display: flex; + flex-shrink: 0; + height: 61px; + padding: 0 8px; +} + +.view__title { + font-size: 18px; + margin-right: 12px; +} + +.view__leftMenu { + +} + +.view__rightMenu { + margin-left: auto; +} + +.view__body { + flex-grow: 1; + position: relative; +} diff --git a/src/client/components/configuration/view/view.tsx b/src/client/components/configuration/view/view.tsx new file mode 100644 index 00000000..8178f58e --- /dev/null +++ b/src/client/components/configuration/view/view.tsx @@ -0,0 +1,41 @@ +import * as React from 'react' +import * as style from './style.css' + +export interface ViewProps { + title: string + className?: string + headerClassName?: string + bodyClassName?: string + leftMenu?: JSX.Element + rightMenu?: JSX.Element +} + +export class View extends React.Component { + public static defaultProps: Partial = { + className: '', + headerClassName: '', + bodyClassName: '', + } + + public render(): JSX.Element { + return ( +
+
+
{ this.props.title }
+ + { this.props.leftMenu !== undefined && +
{ this.props.leftMenu }
+ } + + { this.props.rightMenu !== undefined && +
{ this.props.rightMenu }
+ } +
+ +
+ { this.props.children } +
+
+ ) + } +} From ab6b8a78fa7b002c226c019995f6967882a10a3a Mon Sep 17 00:00:00 2001 From: Josephus Paye II Date: Wed, 24 May 2017 20:12:18 +1000 Subject: [PATCH 10/17] Add controller and model, move sample data to separate file --- .../components/configuration/controller.ts | 39 +++++++++ src/client/components/configuration/data.ts | 65 ++++++++++++++ src/client/components/configuration/model.ts | 18 ++++ .../components/configuration/tree_model.tsx | 39 --------- src/client/components/configuration/view.tsx | 87 +++++++------------ src/client/index.tsx | 27 +++--- 6 files changed, 170 insertions(+), 105 deletions(-) create mode 100644 src/client/components/configuration/controller.ts create mode 100644 src/client/components/configuration/data.ts create mode 100644 src/client/components/configuration/model.ts delete mode 100644 src/client/components/configuration/tree_model.tsx diff --git a/src/client/components/configuration/controller.ts b/src/client/components/configuration/controller.ts new file mode 100644 index 00000000..18e3ef6b --- /dev/null +++ b/src/client/components/configuration/controller.ts @@ -0,0 +1,39 @@ +import { action, observable } from 'mobx' +import { ConfigurationModel } from './model' +import { Node } from './tree/tree' + +export class ConfigurationController { + private model: ConfigurationModel + + constructor(opts: { model: ConfigurationModel }) { + Object.assign(this, opts) + } + + public static of(opts: { model: ConfigurationModel }) { + return new ConfigurationController(opts) + } + + @action + public onNodeClick = (node: Node): void => { + if (node.leaf) { + this.selectNode(node) + } else { + this.toggleNodeExpansion(node) + } + } + + @action + public selectNode = (node: Node) => { + if (this.model.selectedFile) { + this.model.selectedFile.selected = false + } + + node.selected = true + this.model.selectedFile = node + } + + @action + public toggleNodeExpansion = (node: Node) => { + node.expanded = !node.expanded + } +} diff --git a/src/client/components/configuration/data.ts b/src/client/components/configuration/data.ts new file mode 100644 index 00000000..39d57fee --- /dev/null +++ b/src/client/components/configuration/data.ts @@ -0,0 +1,65 @@ +import { Node } from './tree/tree' + +export const configurationData = { + label: 'root', + expanded: true, + leaf: false, + selected: false, + children: [ + { + label: 'parent', + expanded: false, + leaf: false, + selected: false, + children: [ + { + label: 'child1', + expanded: false, + leaf: true, + selected: false, + }, + { + label: 'child2', + expanded: false, + leaf: true, + selected: false, + }, + ], + }, + { + label: 'parent', + expanded: false, + leaf: false, + selected: false, + children: [ + { + label: 'nested parent', + expanded: false, + leaf: false, + selected: false, + children: [ + { + label: 'nested child 1', + expanded: false, + leaf: true, + selected: false, + }, + { + label: 'nested child 2', + expanded: false, + leaf: true, + selected: false, + }, + ], + }, + ], + }, + { + label: 'Some file here', + expanded: true, + leaf: true, + selected: false, + children: [] as Node[], + }, + ], +} diff --git a/src/client/components/configuration/model.ts b/src/client/components/configuration/model.ts new file mode 100644 index 00000000..13e85d0b --- /dev/null +++ b/src/client/components/configuration/model.ts @@ -0,0 +1,18 @@ +import { action, observable } from 'mobx' +import { Node } from './tree/tree' + +export class ConfigurationModel { + @observable + public files: Node + + @observable + public selectedFile: Node + + constructor(opts: { files: Node }) { + Object.assign(this, opts) + } + + public static of(opts: { files: Node }) { + return new ConfigurationModel(opts) + } +} diff --git a/src/client/components/configuration/tree_model.tsx b/src/client/components/configuration/tree_model.tsx deleted file mode 100644 index abeb4f03..00000000 --- a/src/client/components/configuration/tree_model.tsx +++ /dev/null @@ -1,39 +0,0 @@ -import { action, observable } from 'mobx' -import { Node } from './tree/tree' - -export class TreeModel { - @observable - public data: Node - - @observable - public selectedNode: Node - - constructor(data: Node) { - this.data = data - this.onNodeClick = this.onNodeClick.bind(this) - } - - @action - public onNodeClick(node: Node): void { - if (node.leaf) { - this.selectNode(node) - } else { - this.toggleExpansion(node) - } - } - - @action - public toggleExpansion(node: Node) { - node.expanded = !node.expanded - } - - @action - public selectNode(node: Node) { - if (this.selectedNode) { - this.selectedNode.selected = false - } - - node.selected = true - this.selectedNode = node - } -} diff --git a/src/client/components/configuration/view.tsx b/src/client/components/configuration/view.tsx index f712fbe7..3ee60000 100644 --- a/src/client/components/configuration/view.tsx +++ b/src/client/components/configuration/view.tsx @@ -1,65 +1,40 @@ import * as React from 'react' import * as style from './style.css' +import { ConfigurationController } from './controller' +import { ConfigurationModel } from './model' import { Panel } from './panel/panel' import { Node, Tree } from './tree/tree' -import { TreeModel } from './tree_model' import { View } from './view/view' -const model = new TreeModel({ - label: 'root', - expanded: true, - leaf: false, - selected: false, - children: [ - { - label: 'parent', - expanded: false, - leaf: false, - selected: false, - children: [ - { label: 'child1', expanded: false, leaf: true, selected: false }, - { label: 'child2', expanded: false, leaf: true, selected: false }, - ], - }, - { - label: 'parent', - expanded: false, - leaf: false, - selected: false, - children: [ - { - label: 'nested parent', - expanded: false, - leaf: false, - selected: false, - children: [ - { label: 'nested child 1', expanded: false, leaf: true, selected: false }, - { label: 'nested child 2', expanded: false, leaf: true, selected: false }, - ], - }, - ], - }, - { - label: 'Some file here', - expanded: true, - leaf: true, - selected: false, - children: [] as Node[], - }, - ], -}) +interface ConfigurationViewProps { + controller: ConfigurationController + model: ConfigurationModel +} -export const Configuration = () => ( - - - - +export class ConfigurationView extends React.Component { + private model: ConfigurationModel + private controller: ConfigurationController -
-
- Select a file to edit -
-
-
-) + public constructor(props: ConfigurationViewProps, context: any) { + super(props, context) + this.model = this.props.model + this.controller = this.props.controller + } + + public render(): JSX.Element { + return ( + + + + + +
+
+ Select a file to edit +
+
+
+ ) + } +} diff --git a/src/client/index.tsx b/src/client/index.tsx index c9ec1df9..baee794b 100644 --- a/src/client/index.tsx +++ b/src/client/index.tsx @@ -8,7 +8,10 @@ import * as io from 'socket.io-client' import { AppView } from './components/app/view' import { Chart } from './components/chart/view' import { Classifier } from './components/classifier/view' -import { Configuration } from './components/configuration/view' +import { ConfigurationController } from './components/configuration/controller' +import { configurationData } from './components/configuration/data' +import { ConfigurationModel } from './components/configuration/model' +import { ConfigurationView } from './components/configuration/view' import { Dashboard } from './components/dashboard/view' import { GameState } from './components/game_state/view' import { RobotModel } from './components/localisation/darwin_robot/model' @@ -23,18 +26,19 @@ import { Vision } from './components/vision/view' // enable MobX strict mode useStrict(true) -const stores = { +const models = { localisationStore: LocalisationModel.of(), + configurationModel: ConfigurationModel.of({ files: configurationData }), } runInAction(() => { - stores.localisationStore.camera.position.set(0, 0.2, 0.5) + models.localisationStore.camera.position.set(0, 0.2, 0.5) const colors = [undefined, 'magenta', undefined, 'blue', undefined, 'cyan', undefined, 'red'] const numRobots = 8 new Array(numRobots).fill(0).map((_, id) => { const robot = RobotModel.of({ id, name: `Robot ${id + 1}`, color: colors[id] || undefined, heading: 0 }) - stores.localisationStore.robots.push(robot) + models.localisationStore.robots.push(robot) return robot }) }) @@ -42,8 +46,8 @@ runInAction(() => { requestAnimationFrame(function update() { requestAnimationFrame(update) runInAction(() => { - const numRobots = stores.localisationStore.robots.length; - stores.localisationStore.robots.forEach((robot, i) => { + const numRobots = models.localisationStore.robots.length + models.localisationStore.robots.forEach((robot, i) => { const angle = i * (2 * Math.PI) / numRobots + Date.now() / 4E3 const distance = Math.cos(Date.now() / 1E3 + 4 * i) * 0.3 + 1 @@ -80,15 +84,15 @@ io.connect(document.location.origin) // render react DOM ReactDOM.render( - + { const presenter = LocalisationPresenter.of({ - model: stores.localisationStore, + model: models.localisationStore, }) - return + return }}/> @@ -97,7 +101,10 @@ ReactDOM.render( - + { + const controller = ConfigurationController.of({ model: models.configurationModel }) + return + }} /> , From 6e431aca1c27000b468e78422d82fdb037bd99cf Mon Sep 17 00:00:00 2001 From: Josephus Paye II Date: Wed, 24 May 2017 20:24:28 +1000 Subject: [PATCH 11/17] Use ul/li tags for tree - Also use the sidebar color for hover and selected states --- .../components/configuration/tree/style.css | 7 ++-- .../components/configuration/tree/tree.tsx | 34 +++++++++---------- 2 files changed, 22 insertions(+), 19 deletions(-) diff --git a/src/client/components/configuration/tree/style.css b/src/client/components/configuration/tree/style.css index 1854a5ef..8ee65e9d 100644 --- a/src/client/components/configuration/tree/style.css +++ b/src/client/components/configuration/tree/style.css @@ -1,6 +1,9 @@ .treenode { display: flex; flex-direction: column; + list-style-type: none; + margin: 0; + padding: 0; } .treenode__header { @@ -14,7 +17,7 @@ .treenode__header:hover { background-color: #EEE; - color: #1976D2; + color: #1197d3; } .treenode__icon { @@ -33,7 +36,7 @@ .treenode--selected .treenode__header { color: white; - background-color: #2196F3; + background-color: #1197d3; } .treenode--selected .treenode__header svg { diff --git a/src/client/components/configuration/tree/tree.tsx b/src/client/components/configuration/tree/tree.tsx index 74808959..527e7374 100644 --- a/src/client/components/configuration/tree/tree.tsx +++ b/src/client/components/configuration/tree/tree.tsx @@ -34,25 +34,25 @@ export class Tree extends React.Component { const headerInlineStyle = { paddingLeft: 8 + (level * 22) + 'px' } return ( -
-
-
- { - hasChildren ? - (this.props.data.expanded ? : ) : - - } +
    +
  • +
    +
    + { + hasChildren ? + (this.props.data.expanded ? : ) : + + } +
    + +
    { this.props.data.label }
    -
    { this.props.data.label }
    -
- - {this.props.data.expanded && -
- { children.map((child, i) => ) } -
- } -
+ {this.props.data.expanded && + children.map((child, i) => ) + } + + ) } From 833fe7a3de8f0f4977d30ec2b31a97396ba621a5 Mon Sep 17 00:00:00 2001 From: Josephus Paye II Date: Wed, 24 May 2017 20:31:42 +1000 Subject: [PATCH 12/17] Add comment about inline paddingLeft --- src/client/components/configuration/tree/tree.tsx | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/client/components/configuration/tree/tree.tsx b/src/client/components/configuration/tree/tree.tsx index 527e7374..e48474d7 100644 --- a/src/client/components/configuration/tree/tree.tsx +++ b/src/client/components/configuration/tree/tree.tsx @@ -31,6 +31,9 @@ export class Tree extends React.Component { style.treenode, { [style['treenode--selected']]: this.props.data.selected }, ) + + // We're using inline padding-left to indent so that the hover and selected indicators + // are full width. Indentation is the default 8px plus the level's indent of 22px. const headerInlineStyle = { paddingLeft: 8 + (level * 22) + 'px' } return ( From 9d6f6a4452ffabf1cb90c239dfaf5cfcfdd881c4 Mon Sep 17 00:00:00 2001 From: Josephus Paye II Date: Wed, 24 May 2017 20:33:49 +1000 Subject: [PATCH 13/17] Tweak indentation comment --- src/client/components/configuration/tree/tree.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/client/components/configuration/tree/tree.tsx b/src/client/components/configuration/tree/tree.tsx index e48474d7..b1bb9091 100644 --- a/src/client/components/configuration/tree/tree.tsx +++ b/src/client/components/configuration/tree/tree.tsx @@ -32,8 +32,8 @@ export class Tree extends React.Component { { [style['treenode--selected']]: this.props.data.selected }, ) - // We're using inline padding-left to indent so that the hover and selected indicators - // are full width. Indentation is the default 8px plus the level's indent of 22px. + // We're using inline paddingLeft to indent so that the hover and selected background indicators + // are full width. Padding is the default 8px plus each level's indent of 22px. const headerInlineStyle = { paddingLeft: 8 + (level * 22) + 'px' } return ( From 76087a8e84794fdf6ea7df0894a9c7fe15fde21b Mon Sep 17 00:00:00 2001 From: Josephus Paye II Date: Tue, 20 Jun 2017 13:45:59 +1000 Subject: [PATCH 14/17] Merge origin/master --- .travis.yml | 24 + Procfile | 2 +- __mocks__/mock.frag | 0 __mocks__/mock.vert | 0 declarations/shader-loader.d.ts | 9 + jest.config.js | 4 +- nodemon.json | 1 + package.json | 25 +- src/assets/index.html | 8 +- src/client/components/app/view.tsx | 12 +- src/client/components/chart/view.tsx | 2 +- src/client/components/classifier/view.tsx | 2 +- src/client/components/dashboard/view.tsx | 2 +- src/client/components/game_state/view.tsx | 2 +- .../components/localisation/controller.ts | 272 + .../darwin_robot/body/config/body.json | 5626 +- .../darwin_robot/head/config/camera.json | 274 +- .../darwin_robot/head/config/eye_led.json | 1086 +- .../darwin_robot/head/config/head.json | 5216 +- .../darwin_robot/head/config/head_led.json | 202 +- .../darwin_robot/head/config/neck.json | 1882 +- .../left_arm/config/left_lower_arm.json | 5536 +- .../left_arm/config/left_shoulder.json | 2090 +- .../left_arm/config/left_upper_arm.json | 2490 +- .../darwin_robot/left_arm/view_model.ts | 4 +- .../left_leg/config/left_ankle.json | 1846 +- .../left_leg/config/left_foot.json | 1960 +- .../left_leg/config/left_lower_leg.json | 2044 +- .../left_leg/config/left_pelvis.json | 1842 +- .../left_leg/config/left_pelvis_y.json | 1870 +- .../left_leg/config/left_upper_leg.json | 3076 +- .../localisation/darwin_robot/model.ts | 2 +- .../right_arm/config/right_lower_arm.json | 5536 +- .../right_arm/config/right_shoulder.json | 2090 +- .../right_arm/config/right_upper_arm.json | 2490 +- .../darwin_robot/right_arm/view_model.ts | 6 +- .../right_leg/config/right_ankle.json | 1842 +- .../right_leg/config/right_foot.json | 1960 +- .../right_leg/config/right_lower_leg.json | 2044 +- .../right_leg/config/right_pelvis.json | 1842 +- .../right_leg/config/right_pelvis_y.json | 1870 +- .../right_leg/config/right_upper_leg.json | 3076 +- .../localisation/field/view_model.ts | 10 +- src/client/components/localisation/model.ts | 13 +- src/client/components/localisation/network.ts | 45 + .../components/localisation/skybox/model.ts | 30 + .../localisation/skybox/skybox.frag | 100 + .../localisation/skybox/skybox.vert | 69 + .../localisation/skybox/view_model.ts | 100 + src/client/components/localisation/style.css | 88 +- .../localisation/tests/controller.tests.ts | 36 + src/client/components/localisation/view.tsx | 93 +- .../components/localisation/view_model.ts | 8 + src/client/components/menu_bar/style.css | 4 + src/client/components/menu_bar/view.tsx | 13 + .../components/navigation/icons/chart.svg | 3 +- .../navigation/icons/controller.svg | 3 +- .../components/navigation/icons/cube.svg | 4 +- .../components/navigation/icons/eye.svg | 3 +- .../components/navigation/icons/map.svg | 8 +- .../components/navigation/icons/nuclear.svg | 4 +- .../components/navigation/icons/ordering.svg | 3 +- .../components/navigation/icons/scatter.svg | 3 +- .../navigation/icons/speedometer.svg | 6 +- src/client/components/navigation/style.css | 67 +- src/client/components/nuclear/view.tsx | 2 +- src/client/components/scatter_plot/view.tsx | 2 +- src/client/components/subsumption/view.tsx | 2 +- src/client/components/vision/view.tsx | 2 +- src/client/inversify.config.ts | 18 + src/client/network/global_network.ts | 71 + src/client/network/message_type_names.ts | 50 + src/client/network/network.ts | 36 + src/client/network/raw_socket.ts | 41 + .../network/tests/global_network.tests.ts | 56 + src/client/network/tests/network.tests.ts | 29 + src/server/app/client.ts | 73 + src/server/app/robot.ts | 15 + src/server/app/server.ts | 60 + src/server/dev.ts | 36 +- src/server/inversify.config.ts | 27 + src/server/prod.ts | 32 +- src/server/time/clock.ts | 8 + src/server/time/node_clock.ts | 25 + .../common/testing/create_mock_instance.ts | 25 + src/shared/proto/Matrix.proto | 105 + src/shared/proto/Neutron.proto | 15 + src/shared/proto/Vector.proto | 93 + .../proto/google/protobuf/duration.proto | 117 + .../proto/google/protobuf/timestamp.proto | 133 + src/shared/proto/message/Geometry.proto | 51 + src/shared/proto/message/audio/Beat.proto | 29 + .../proto/message/behaviour/Behaviour.proto | 45 + .../proto/message/behaviour/FieldTarget.proto | 33 + .../message/behaviour/FixedWalkCommand.proto | 44 + .../proto/message/behaviour/KickPlan.proto | 37 + src/shared/proto/message/behaviour/Look.proto | 46 + .../message/behaviour/MotionCommand.proto | 45 + src/shared/proto/message/behaviour/Nod.proto | 25 + .../message/behaviour/ServoCommand.proto | 32 + .../behaviour/SoccerObjectPriority.proto | 39 + .../proto/message/behaviour/Subsumption.proto | 57 + .../proto/message/behaviour/WalkPath.proto | 39 + .../message/input/CameraParameters.proto | 31 + .../proto/message/input/GameEvents.proto | 106 + .../proto/message/input/GameState.proto | 86 + src/shared/proto/message/input/Image.proto | 34 + .../proto/message/input/ImageFragment.proto | 33 + .../proto/message/input/MotionCapture.proto | 91 + .../message/input/PostureRecognition.proto | 33 + .../message/input/PresenceUserState.proto | 30 + .../proto/message/input/PushDetection.proto | 25 + src/shared/proto/message/input/Sensors.proto | 86 + .../proto/message/input/SoundChunk.proto | 52 + .../message/localisation/FieldObject.proto | 52 + .../message/localisation/Localisation.proto | 50 + .../localisation/ResetRobotHypotheses.proto | 36 + .../message/localisation/SideChecker.proto | 23 + .../proto/message/motion/BalanceCommand.proto | 36 + .../proto/message/motion/DiveCommand.proto | 29 + .../message/motion/FootMotionCommand.proto | 54 + .../message/motion/FootPlacementCommand.proto | 42 + .../proto/message/motion/GetupCommand.proto | 24 + .../proto/message/motion/HeadCommand.proto | 37 + .../proto/message/motion/KickCommand.proto | 64 + .../message/motion/KinematicsModels.proto | 118 + .../proto/message/motion/ServoTarget.proto | 36 + .../message/motion/TorsoMotionCommand.proto | 38 + .../proto/message/motion/WalkCommand.proto | 47 + src/shared/proto/message/output/Say.proto | 30 + .../platform/darwin/DarwinSensors.proto | 150 + .../research/AutoClassifierPixels.proto | 26 + .../scriptoptimizer/OptimizeScript.proto | 41 + .../OptimizeScriptResult.proto | 31 + .../message/support/FieldDescription.proto | 55 + .../proto/message/support/GlobalConfig.proto | 27 + .../message/support/SaveConfiguration.proto | 26 + .../message/support/ServoHealthTestData.proto | 57 + .../message/support/nubugger/Command.proto | 26 + .../message/support/nubugger/DataPoint.proto | 44 + .../support/nubugger/DrawObjects.proto | 71 + .../message/support/nubugger/Overview.proto | 67 + .../proto/message/support/nubugger/Ping.proto | 26 + .../support/nubugger/ReactionHandles.proto | 31 + .../support/nuclear/ReactionStatistics.proto | 35 + .../message/support/optimisation/DOpE.proto | 42 + .../support/optimisation/Episode.proto | 38 + .../support/optimisation/Estimate.proto | 36 + .../support/optimisation/OptimiserTypes.proto | 38 + .../message/vision/ClassifiedImage.proto | 83 + .../proto/message/vision/LookUpTable.proto | 31 + .../message/vision/LookUpTableDiff.proto | 32 + .../proto/message/vision/VisionObjects.proto | 128 + src/shared/proto/messages.d.ts | 32813 +++++++++ src/shared/proto/messages.js | 60347 ++++++++++++++++ src/simulators/flat_map.ts | 8 + src/simulators/nodemon.json | 5 + src/simulators/nuclearnet/fake_nuclearnet.ts | 69 + .../nuclearnet/fake_nuclearnet_server.ts | 36 + .../nuclearnet/tests/fake_nuclearnet.tests.ts | 91 + src/simulators/robot_simulator.ts | 78 + src/simulators/sensor_data_simulator.ts | 46 + src/simulators/simulate.ts | 44 + src/simulators/simulator.ts | 9 + tsconfig.json | 1 + tslint.json | 110 +- webpack.config.ts | 6 + yarn.lock | 156 +- 168 files changed, 128636 insertions(+), 30122 deletions(-) create mode 100644 __mocks__/mock.frag create mode 100644 __mocks__/mock.vert create mode 100644 declarations/shader-loader.d.ts create mode 100644 src/client/components/localisation/controller.ts create mode 100644 src/client/components/localisation/network.ts create mode 100644 src/client/components/localisation/skybox/model.ts create mode 100644 src/client/components/localisation/skybox/skybox.frag create mode 100644 src/client/components/localisation/skybox/skybox.vert create mode 100644 src/client/components/localisation/skybox/view_model.ts create mode 100644 src/client/components/localisation/tests/controller.tests.ts create mode 100644 src/client/components/menu_bar/style.css create mode 100644 src/client/components/menu_bar/view.tsx create mode 100644 src/client/inversify.config.ts create mode 100644 src/client/network/global_network.ts create mode 100644 src/client/network/message_type_names.ts create mode 100644 src/client/network/network.ts create mode 100644 src/client/network/raw_socket.ts create mode 100644 src/client/network/tests/global_network.tests.ts create mode 100644 src/client/network/tests/network.tests.ts create mode 100644 src/server/app/client.ts create mode 100644 src/server/app/robot.ts create mode 100644 src/server/app/server.ts create mode 100644 src/server/inversify.config.ts create mode 100644 src/server/time/clock.ts create mode 100644 src/server/time/node_clock.ts create mode 100644 src/shared/common/testing/create_mock_instance.ts create mode 100644 src/shared/proto/Matrix.proto create mode 100644 src/shared/proto/Neutron.proto create mode 100644 src/shared/proto/Vector.proto create mode 100644 src/shared/proto/google/protobuf/duration.proto create mode 100644 src/shared/proto/google/protobuf/timestamp.proto create mode 100644 src/shared/proto/message/Geometry.proto create mode 100644 src/shared/proto/message/audio/Beat.proto create mode 100644 src/shared/proto/message/behaviour/Behaviour.proto create mode 100644 src/shared/proto/message/behaviour/FieldTarget.proto create mode 100644 src/shared/proto/message/behaviour/FixedWalkCommand.proto create mode 100644 src/shared/proto/message/behaviour/KickPlan.proto create mode 100644 src/shared/proto/message/behaviour/Look.proto create mode 100644 src/shared/proto/message/behaviour/MotionCommand.proto create mode 100644 src/shared/proto/message/behaviour/Nod.proto create mode 100644 src/shared/proto/message/behaviour/ServoCommand.proto create mode 100644 src/shared/proto/message/behaviour/SoccerObjectPriority.proto create mode 100644 src/shared/proto/message/behaviour/Subsumption.proto create mode 100644 src/shared/proto/message/behaviour/WalkPath.proto create mode 100644 src/shared/proto/message/input/CameraParameters.proto create mode 100644 src/shared/proto/message/input/GameEvents.proto create mode 100644 src/shared/proto/message/input/GameState.proto create mode 100644 src/shared/proto/message/input/Image.proto create mode 100644 src/shared/proto/message/input/ImageFragment.proto create mode 100644 src/shared/proto/message/input/MotionCapture.proto create mode 100644 src/shared/proto/message/input/PostureRecognition.proto create mode 100644 src/shared/proto/message/input/PresenceUserState.proto create mode 100644 src/shared/proto/message/input/PushDetection.proto create mode 100644 src/shared/proto/message/input/Sensors.proto create mode 100644 src/shared/proto/message/input/SoundChunk.proto create mode 100644 src/shared/proto/message/localisation/FieldObject.proto create mode 100644 src/shared/proto/message/localisation/Localisation.proto create mode 100644 src/shared/proto/message/localisation/ResetRobotHypotheses.proto create mode 100644 src/shared/proto/message/localisation/SideChecker.proto create mode 100644 src/shared/proto/message/motion/BalanceCommand.proto create mode 100644 src/shared/proto/message/motion/DiveCommand.proto create mode 100644 src/shared/proto/message/motion/FootMotionCommand.proto create mode 100644 src/shared/proto/message/motion/FootPlacementCommand.proto create mode 100644 src/shared/proto/message/motion/GetupCommand.proto create mode 100644 src/shared/proto/message/motion/HeadCommand.proto create mode 100644 src/shared/proto/message/motion/KickCommand.proto create mode 100644 src/shared/proto/message/motion/KinematicsModels.proto create mode 100644 src/shared/proto/message/motion/ServoTarget.proto create mode 100644 src/shared/proto/message/motion/TorsoMotionCommand.proto create mode 100644 src/shared/proto/message/motion/WalkCommand.proto create mode 100644 src/shared/proto/message/output/Say.proto create mode 100644 src/shared/proto/message/platform/darwin/DarwinSensors.proto create mode 100644 src/shared/proto/message/research/AutoClassifierPixels.proto create mode 100644 src/shared/proto/message/research/scriptoptimizer/OptimizeScript.proto create mode 100644 src/shared/proto/message/research/scriptoptimizer/OptimizeScriptResult.proto create mode 100644 src/shared/proto/message/support/FieldDescription.proto create mode 100644 src/shared/proto/message/support/GlobalConfig.proto create mode 100644 src/shared/proto/message/support/SaveConfiguration.proto create mode 100644 src/shared/proto/message/support/ServoHealthTestData.proto create mode 100644 src/shared/proto/message/support/nubugger/Command.proto create mode 100644 src/shared/proto/message/support/nubugger/DataPoint.proto create mode 100644 src/shared/proto/message/support/nubugger/DrawObjects.proto create mode 100644 src/shared/proto/message/support/nubugger/Overview.proto create mode 100644 src/shared/proto/message/support/nubugger/Ping.proto create mode 100644 src/shared/proto/message/support/nubugger/ReactionHandles.proto create mode 100644 src/shared/proto/message/support/nuclear/ReactionStatistics.proto create mode 100644 src/shared/proto/message/support/optimisation/DOpE.proto create mode 100644 src/shared/proto/message/support/optimisation/Episode.proto create mode 100644 src/shared/proto/message/support/optimisation/Estimate.proto create mode 100644 src/shared/proto/message/support/optimisation/OptimiserTypes.proto create mode 100644 src/shared/proto/message/vision/ClassifiedImage.proto create mode 100644 src/shared/proto/message/vision/LookUpTable.proto create mode 100644 src/shared/proto/message/vision/LookUpTableDiff.proto create mode 100644 src/shared/proto/message/vision/VisionObjects.proto create mode 100644 src/shared/proto/messages.d.ts create mode 100644 src/shared/proto/messages.js create mode 100644 src/simulators/flat_map.ts create mode 100644 src/simulators/nodemon.json create mode 100644 src/simulators/nuclearnet/fake_nuclearnet.ts create mode 100644 src/simulators/nuclearnet/fake_nuclearnet_server.ts create mode 100644 src/simulators/nuclearnet/tests/fake_nuclearnet.tests.ts create mode 100644 src/simulators/robot_simulator.ts create mode 100644 src/simulators/sensor_data_simulator.ts create mode 100644 src/simulators/simulate.ts create mode 100644 src/simulators/simulator.ts diff --git a/.travis.yml b/.travis.yml index ec181ec1..b0486324 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,10 +1,34 @@ language: node_js dist: trusty node_js: + - '4' + - '5' + - '6' - '7' + - '8' + +# Cache yarn and node_modules to speed up the build +cache: + yarn: true + directories: + - node_modules + +# We need to set this so our compiler is g++-4.9 for NUClearNet.js +env: + - CXX=g++-4.9 +addons: + apt: + sources: + - ubuntu-toolchain-r-test + packages: + - g++-4.9 + +# Only build the master branch, PRs will build also due to settings in the web ui branches: only: - 'master' + +# Don't spam people with emails notifications: email: false slack: diff --git a/Procfile b/Procfile index 6992d93e..67bfb418 100644 --- a/Procfile +++ b/Procfile @@ -1 +1 @@ -web: yarn run prod +web: yarn run prod:sim diff --git a/__mocks__/mock.frag b/__mocks__/mock.frag new file mode 100644 index 00000000..e69de29b diff --git a/__mocks__/mock.vert b/__mocks__/mock.vert new file mode 100644 index 00000000..e69de29b diff --git a/declarations/shader-loader.d.ts b/declarations/shader-loader.d.ts new file mode 100644 index 00000000..85b47e2d --- /dev/null +++ b/declarations/shader-loader.d.ts @@ -0,0 +1,9 @@ +declare module "*.vert" { + const content: any; + export default content; +} + +declare module "*.frag" { + const content: any; + export default content; +} diff --git a/jest.config.js b/jest.config.js index f765e74c..3dae1c32 100644 --- a/jest.config.js +++ b/jest.config.js @@ -21,7 +21,9 @@ module.exports = { 'tsx' ], moduleNameMapper: { - '\\.(css)$': 'identity-obj-proxy' + '\\.(css)$': 'identity-obj-proxy', + '\\.(vert)$': '/__mocks__/mock.vert', + '\\.(frag)$': '/__mocks__/mock.frag' }, roots: [ '/src' diff --git a/nodemon.json b/nodemon.json index d9e06919..cd7a64c1 100644 --- a/nodemon.json +++ b/nodemon.json @@ -1,5 +1,6 @@ { "verbose": true, + "watch": "src", "ignore": ["*.tests.ts", "src/client"], "execMap": { "ts": "ts-node" diff --git a/package.json b/package.json index a3c3776d..36121905 100644 --- a/package.json +++ b/package.json @@ -2,23 +2,29 @@ "name": "NUsight", "version": "2.0.0", "private": true, + "engines": { + "node": ">=4.X.X" + }, "description": "", - "main": "index.js", "scripts": { "test": "jest", "test:ci": "yarn test -- --ci", "test:watch": "yarn test -- --watch", "coverage": "yarn test -- --coverage", "coverage:ci": "yarn test:ci -- --coverage", - "tslint": "tslint -c tslint.json 'src/**/*.ts'", - "tslint:fix": "tslint -c tslint.json 'src/**/*.ts' --fix", + "tslint": "tslint -c tslint.json 'src/**/*.ts{,x}' --exclude 'src/shared/proto/**'", + "tslint:fix": "tslint -c tslint.json 'src/**/*.ts{,x}' --exclude 'src/shared/proto/**' --fix", "start": "nodemon ./src/server/dev.ts", + "start:sim": "nodemon ./src/server/dev.ts --with-simulators", + "simulate": "nodemon ./src/simulators/simulate.ts", "prod": "ts-node -F ./src/server/prod.ts", + "prod:sim": "ts-node -F ./src/server/prod.ts --with-simulators", "build": "yarn clean:build && webpack -p --progress --colors", "clean": "yarn clean:build && yarn clean:coverage", "clean:build": "rimraf build", "clean:coverage": "rimraf coverage", - "heroku-postbuild": "yarn build" + "heroku-postbuild": "yarn build", + "prepush": "yarn tslint" }, "license": "MIT", "devDependencies": { @@ -30,6 +36,7 @@ "@types/extract-text-webpack-plugin": "^2.0.1", "@types/html-webpack-plugin": "^2.28.0", "@types/jest": "^19.2.3", + "@types/minimist": "^1.2.0", "@types/node": "^7.0.14", "@types/react": "^15.0.12", "@types/react-dom": "^0.14.23", @@ -54,6 +61,7 @@ "file-loader": "^0.10.0", "html-loader": "^0.4.4", "html-webpack-plugin": "^2.28.0", + "husky": "^0.13.3", "identity-obj-proxy": "^3.0.0", "jest": "^20.0.1", "jest-css-modules": "^1.1.0", @@ -65,6 +73,7 @@ "postcss-loader": "^1.3.1", "postcss-reporter": "^3.0.0", "postcss-url": "^5.1.2", + "raw-loader": "^0.5.1", "react-hot-loader": "^1.3.1", "react-svg-loader": "^1.1.1", "rimraf": "^2.6.1", @@ -74,6 +83,7 @@ "ts-jest": "^20.0.3", "ts-node": "^3.0.2", "tslint": "^5.2.0", + "tslint-eslint-rules": "^4.1.1", "typescript": "^2.2.1", "url-loader": "^0.5.7", "webpack": "^2.2.1", @@ -86,13 +96,18 @@ "compression": "^1.6.2", "connect-history-api-fallback": "^1.3.0", "express": "^4.15.2", + "inversify": "^4.1.0", + "inversify-inject-decorators": "^3.0.1", + "minimist": "^1.2.0", "mobx": "^3.1.0", "mobx-react": "^4.1.0", "mobx-react-router": "^3.1.2", - "nuclearnet.js": "^0.1.0", + "nuclearnet.js": "^1.0.5", + "protobufjs": "^6.7.3", "react": "^15.4.2", "react-dom": "^15.4.2", "react-router": "^3.0.2", + "reflect-metadata": "^0.1.10", "serve-favicon": "^2.4.2", "socket.io": "^1.7.3", "socket.io-client": "^1.7.3", diff --git a/src/assets/index.html b/src/assets/index.html index 3c242dd8..a2171b64 100644 --- a/src/assets/index.html +++ b/src/assets/index.html @@ -1,11 +1,11 @@ - - NUsight2 - + + NUsight2 + -
+
diff --git a/src/client/components/app/view.tsx b/src/client/components/app/view.tsx index 7063d788..efc5589f 100644 --- a/src/client/components/app/view.tsx +++ b/src/client/components/app/view.tsx @@ -5,14 +5,14 @@ import * as style from './style.css' export class AppView extends React.Component { public render() { return ( -
- -
-
- {this.props.children} -
+
+ +
+
+ {this.props.children}
+
) } } diff --git a/src/client/components/chart/view.tsx b/src/client/components/chart/view.tsx index e0b64240..f4d39c09 100644 --- a/src/client/components/chart/view.tsx +++ b/src/client/components/chart/view.tsx @@ -1,5 +1,5 @@ import * as React from 'react' export const Chart = () => ( -

Chart

+

Chart

) diff --git a/src/client/components/classifier/view.tsx b/src/client/components/classifier/view.tsx index 9f5c88f5..b604c161 100644 --- a/src/client/components/classifier/view.tsx +++ b/src/client/components/classifier/view.tsx @@ -1,5 +1,5 @@ import * as React from 'react' export const Classifier = () => ( -

Classifier

+

Classifier

) diff --git a/src/client/components/dashboard/view.tsx b/src/client/components/dashboard/view.tsx index 0fed7f98..5f573e5a 100644 --- a/src/client/components/dashboard/view.tsx +++ b/src/client/components/dashboard/view.tsx @@ -1,5 +1,5 @@ import * as React from 'react' export const Dashboard = () => ( -

Dashboard

+

Dashboard

) diff --git a/src/client/components/game_state/view.tsx b/src/client/components/game_state/view.tsx index 9285c01b..b607250a 100644 --- a/src/client/components/game_state/view.tsx +++ b/src/client/components/game_state/view.tsx @@ -1,5 +1,5 @@ import * as React from 'react' export const GameState = () => ( -

GameState

+

GameState

) diff --git a/src/client/components/localisation/controller.ts b/src/client/components/localisation/controller.ts new file mode 100644 index 00000000..f77824a8 --- /dev/null +++ b/src/client/components/localisation/controller.ts @@ -0,0 +1,272 @@ +import { injectable } from 'inversify' +import { action } from 'mobx' +import * as THREE from 'three' +import { HIP_TO_FOOT } from './darwin_robot/view_model' +import { KeyCode } from './keycodes' +import { LocalisationModel } from './model' +import { Vector3 } from './model' +import { ViewMode } from './model' + +interface KeyModifiers { + shiftKey: boolean + ctrlKey: boolean +} + +@injectable() +export class LocalisationController { + @action + public onAnimationFrame(model: LocalisationModel, time: number) { + model.time.time = time / 1000 + this.updatePosition(model) + } + + @action + public onLeftClick(model: LocalisationModel, requestPointerLock: () => void) { + if (!model.locked) { + requestPointerLock() + } else { + model.target = this.getNextTarget(model) + } + } + + @action + public onRightClick(model: LocalisationModel) { + if (model.locked) { + model.target = this.getPreviousTarget(model) + } + } + + @action + public onHawkEyeClick(model: LocalisationModel) { + model.controls.pitch = -Math.PI / 2 + model.controls.yaw = 0 + model.camera.position.set(0, 5, 0) + model.viewMode = ViewMode.FreeCamera + this.updatePosition(model) + } + + @action + public onPointerLockChange(model: LocalisationModel, locked: boolean): void { + model.locked = locked + } + + @action + public onMouseMove(model: LocalisationModel, movementX: number, movementY: number): void { + if (!model.locked || model.viewMode === ViewMode.FirstPerson) { + return + } + + const pitch = Math.max(-Math.PI / 2, Math.min(Math.PI / 2, model.controls.pitch - movementY / 200)) + model.controls.pitch = pitch + model.controls.yaw = model.controls.yaw - movementX / 200 + } + + @action + public onWheel(model: LocalisationModel, deltaY: number): void { + const newDistance = model.camera.distance + deltaY / 200 + model.camera.distance = Math.min(10, Math.max(0.1, newDistance)) + } + + @action + public onKeyDown(model: LocalisationModel, key: KeyCode, modifiers: KeyModifiers): void { + if (model.locked) { + switch (key) { + case KeyCode.W: + model.controls.forward = true + return + case KeyCode.A: + model.controls.left = true + return + case KeyCode.S: + model.controls.back = true + return + case KeyCode.D: + model.controls.right = true + return + case KeyCode.R: + model.controls.up = true + return + case KeyCode.F: + model.controls.down = true + return + case KeyCode.Space: + model.viewMode = this.getNextViewMode(model) + + // TODO (Annable): move this somewhere. + if (model.viewMode === ViewMode.FreeCamera) { + model.controls.pitch = model.camera.pitch + model.controls.yaw = model.camera.yaw + } else if (model.viewMode === ViewMode.FirstPerson) { + model.controls.pitch = 0 + model.controls.yaw = 0 + } + + this.updatePosition(model) + return + case KeyCode.Enter: + if (modifiers.shiftKey) { + model.target = this.getPreviousTarget(model) + } else { + model.target = this.getNextTarget(model) + } + return + } + } + } + + @action + public onKeyUp(model: LocalisationModel, key: KeyCode): void { + if (model.locked) { + switch (key) { + case KeyCode.W: + model.controls.forward = false + return + case KeyCode.A: + model.controls.left = false + return + case KeyCode.S: + model.controls.back = false + return + case KeyCode.D: + model.controls.right = false + return + case KeyCode.R: + model.controls.up = false + return + case KeyCode.F: + model.controls.down = false + return + } + } + } + + private updatePosition(model: LocalisationModel) { + switch (model.viewMode) { + case ViewMode.FreeCamera: + this.updatePositionNoClip(model) + return + case ViewMode.FirstPerson: + this.updatePositionFirstPerson(model) + return + case ViewMode.ThirdPerson: + this.updatePositionThirdPerson(model) + return + default: + throw new Error(`No view behaviour defined for ${model.viewMode}`) + } + } + + private updatePositionNoClip(model: LocalisationModel) { + const delta = model.time.timeSinceLastRender + const movement = Vector3.of() + const movementSpeed = 1 + const actualSpeed = delta * movementSpeed + + if (model.controls.forward) { + movement.z = movement.z - actualSpeed + } + + if (model.controls.back) { + movement.z = movement.z + actualSpeed + } + + if (model.controls.left) { + movement.x = movement.x - actualSpeed + } + + if (model.controls.right) { + movement.x = movement.x + actualSpeed + } + + // TODO (Annable): remove THREE dependency from controller. + const temp = new THREE.Vector3(movement.x, movement.y, movement.z) + temp.applyEuler(new THREE.Euler(model.controls.pitch, model.controls.yaw, 0, 'YXZ')) + movement.set(temp.x, temp.y, temp.z) + + // Apply up/down after rotation to keep movement vertical. + if (model.controls.up) { + movement.y = movement.y + actualSpeed + } + + if (model.controls.down) { + movement.y = movement.y - actualSpeed + } + + model.camera.pitch = model.controls.pitch + model.camera.yaw = model.controls.yaw + + model.camera.position.add(movement) + } + + private updatePositionFirstPerson(model: LocalisationModel) { + if (model.robots.length === 0) { + return + } + + if (!model.target) { + // TODO (Annable): Handle no robots. + model.target = model.robots[0] + } + + const target = model.target + + // This camera position hack will not work with orientation/head movement. + // TODO (Annable): Sync camera position/rotation properly using kinematic chain. + model.camera.position.set(target.position.x - 0.001, target.position.y + 0.4, target.position.z) + model.camera.yaw = target.heading + Math.PI // TODO (Annable): Find why offset by PI is needed. + model.camera.pitch = 0 + } + + private updatePositionThirdPerson(model: LocalisationModel) { + if (model.robots.length === 0) { + return + } + + if (!model.target) { + // TODO: Handle no robots. + model.target = model.robots[0] + } + + const target = model.target + + const distance = model.camera.distance + + const targetPosition = new Vector3(target.position.x, target.position.y + HIP_TO_FOOT, target.position.z) + + const yaw = model.controls.yaw + const pitch = -model.controls.pitch + Math.PI / 2 + const offset = new Vector3( + Math.sin(pitch) * Math.cos(yaw), + Math.cos(pitch), + Math.sin(pitch) * Math.sin(yaw), + ).multiplyScalar(distance) + const cameraPosition = targetPosition.clone().add(offset) + + model.camera.position.copy(cameraPosition) + model.camera.pitch = pitch - Math.PI / 2 + model.camera.yaw = -yaw + Math.PI / 2 + } + + private getNextViewMode(model: LocalisationModel) { + switch (model.viewMode) { + case ViewMode.FreeCamera: + return ViewMode.FirstPerson + case ViewMode.FirstPerson: + return ViewMode.ThirdPerson + case ViewMode.ThirdPerson: + return ViewMode.FreeCamera + default: + throw new Error(`No next view mode defined for ${model.viewMode}`) + } + } + + private getNextTarget(model: LocalisationModel) { + const targetIndex = model.robots.findIndex(robot => robot === model.target) + return model.robots[targetIndex + 1] || model.robots[0] + } + + private getPreviousTarget(model: LocalisationModel) { + const targetIndex = model.robots.findIndex(robot => robot === model.target) + return model.robots[targetIndex - 1] || model.robots[model.robots.length - 1] + } +} diff --git a/src/client/components/localisation/darwin_robot/body/config/body.json b/src/client/components/localisation/darwin_robot/body/config/body.json index 2c65ea5e..4e041518 100644 --- a/src/client/components/localisation/darwin_robot/body/config/body.json +++ b/src/client/components/localisation/darwin_robot/body/config/body.json @@ -1,2815 +1,2815 @@ { - "metadata": { - "formatVersion": 3, - "materials": 1 - }, - "materials": [ - { - "DbgColor": 15658734, - "DbgIndex": 0, - "DbgName": "Plastic", - "colorDiffuse": [ - 0.301961, - 0.301961, - 0.301961 - ], - "colorSpecular": [ - 0.401201, - 0.401201, - 0.401201 - ], - "shading": "Lambert", - "specularCoef": 50, - "opacity": 1.0, - "vertexColors": false - } - ], - "normals": [], - "colors": [], - "uvs": [], - "morphTargets": [], - "vertices": [ - 0.0189393, - -0.0980656, - 0.0268584, - -0.0189393, - -0.0980656, - 0.0268584, - 0.0329651, - -0.0785909, - 0.032466, - -0.0329651, - -0.0785909, - 0.032466, - 0, - -0.0980656, - 0.0268584, - 0, - -0.0785909, - 0.032466, - 0, - -0.0684064, - 0.034421, - 0, - -0.0628994, - 0.0351729, - 0, - -0.048721, - 0.0357745, - 0, - -0.0344986, - 0.0356692, - 0, - -0.0215196, - 0.0332293, - 0, - 0.0056817, - 0.0204932, - 0, - 0.0192564, - 0.0114116, - 0, - -0.0980656, - 0.0228699, - 0.0191471, - -0.0980656, - 0.0228699, - -0.0191471, - -0.0980656, - 0.0228699, - 0.0472058, - -0.0628994, - 0.0351729, - -0.0472058, - -0.0628994, - 0.0351729, - 0.0481432, - -0.0508762, - 0.0356895, - -0.0481432, - -0.0508762, - 0.0356895, - 0.048433, - -0.0344986, - 0.0356692, - -0.048433, - -0.0344986, - 0.0356692, - 0.048433, - -0.0215196, - 0.0332293, - -0.048433, - -0.0215196, - 0.0332293, - 0.048433, - -0.0079189, - 0.0277709, - -0.048433, - -0.0079189, - 0.0277709, - 0.048433, - 0.0056817, - 0.0204932, - -0.048433, - 0.0056817, - 0.0204932, - 0.048433, - 0.0192564, - 0.0114116, - -0.048433, - 0.0192564, - 0.0114116, - 0.0461024, - -0.0684064, - 0.034421, - -0.0461024, - -0.0684064, - 0.034421, - 0.0254606, - -0.0905876, - 0.0293183, - -0.0254606, - -0.0905876, - 0.0293183, - 0, - -0.0905876, - 0.0293183, - 0.0254606, - -0.0905876, - 0.0228699, - -0.0254606, - -0.0905876, - 0.0228699, - 0.0329651, - -0.0785909, - 0.0228699, - -0.0329651, - -0.0785909, - 0.0228699, - 0, - -0.0905876, - 0.0228699, - 0.0565076, - -0.0905876, - -0.0267561, - -0.0565076, - -0.0905876, - -0.0267561, - 0.0565076, - -0.0514098, - -0.0764782, - -0.0565076, - -0.0514098, - -0.0764782, - 0.0565076, - -0.0212185, - -0.0764782, - -0.0565076, - -0.0212185, - -0.0764782, - 0.0565076, - -0.0063517, - -0.0764782, - -0.0565076, - -0.0063517, - -0.0764782, - 0.0565076, - 0.0256694, - -0.0620687, - -0.0565076, - 0.0256694, - -0.0620687, - 0.0565076, - 0.0273448, - -0.0374196, - -0.0565076, - 0.0273448, - -0.0374196, - 0.0485225, - 0.02405, - -0.0331857, - -0.0485225, - 0.02405, - -0.0331857, - 0, - 0.0256694, - -0.0620687, - 0, - 0.0273448, - -0.0374196, - 0, - 0.02405, - -0.0331857, - 0.0504399, - -0.0876542, - -0.0306215, - -0.0504399, - -0.0876542, - -0.0306215, - 0.0504399, - -0.0559821, - -0.0707385, - -0.0504399, - -0.0559821, - -0.0707385, - 0.0504399, - -0.0875412, - -0.0707385, - -0.0504399, - -0.0875412, - -0.0707385, - 0, - -0.0875412, - -0.0707385, - 0, - -0.0559821, - -0.0707385, - 0, - -0.0876542, - -0.0306215, - 0, - -0.0514098, - -0.0764782, - 0, - -0.0905876, - -0.0266996, - 0.0565076, - -0.0628994, - -0.0331857, - -0.0565076, - -0.0628994, - -0.0331857, - 0.0565076, - 0.0262925, - -0.0529012, - -0.0565076, - 0.0262925, - -0.0529012, - 0.0565076, - -0.0063517, - -0.0591835, - -0.0565076, - -0.0063517, - -0.0591835, - 0.0565076, - -0.0027423, - -0.0545215, - -0.0565076, - -0.0027423, - -0.0545215, - 0.0565076, - 0.0019197, - -0.0530176, - -0.0565076, - 0.0019197, - -0.0530176, - 0, - -0.0063517, - -0.0764782, - 0.0626992, - -0.0212185, - -0.0764782, - -0.0626992, - -0.0212185, - -0.0764782, - 0.0626992, - -0.0628994, - -0.0331857, - -0.0626992, - -0.0628994, - -0.0331857, - 0.0626992, - 0.0273448, - -0.0374196, - -0.0626992, - 0.0273448, - -0.0374196, - 0.0626992, - 0.0262925, - -0.0529012, - -0.0626992, - 0.0262925, - -0.0529012, - 0.0626992, - -0.0063517, - -0.0764782, - -0.0626992, - -0.0063517, - -0.0764782, - 0.0626992, - -0.0063517, - -0.0591835, - -0.0626992, - -0.0063517, - -0.0591835, - 0.0626992, - -0.0027423, - -0.0545215, - -0.0626992, - -0.0027423, - -0.0545215, - 0.0626992, - 0.0019197, - -0.0530176, - -0.0626992, - 0.0019197, - -0.0530176, - 0.0565076, - -0.0628994, - 0.0295758, - -0.0565076, - -0.0628994, - 0.0295758, - 0.0565076, - -0.0296561, - 0.0295758, - -0.0565076, - -0.0296561, - 0.0295758, - 0.0565076, - -0.0215196, - 0.0270637, - -0.0565076, - -0.0215196, - 0.0270637, - 0.0565076, - -0.0079189, - 0.0216054, - -0.0565076, - -0.0079189, - 0.0216054, - 0.0565076, - 0.0056817, - 0.0143276, - -0.0565076, - 0.0056817, - 0.0143276, - 0.0565076, - 0.0152688, - 0.0052461, - -0.0565076, - 0.0152688, - 0.0052461, - 0.0565076, - 0.0200374, - -0.0331857, - -0.0565076, - 0.0200374, - -0.0331857, - 0.0626992, - 0.02405, - -0.0331857, - -0.0626992, - 0.02405, - -0.0331857, - 0.0565076, - -0.0296561, - -0.0070197, - -0.0565076, - -0.0296561, - -0.0070197, - 0.0565076, - -0.0254794, - -0.0151742, - -0.0565076, - -0.0254794, - -0.0151742, - 0.0565076, - -0.0181205, - -0.0241241, - -0.0565076, - -0.0181205, - -0.0241241, - 0.0565076, - -0.0183194, - -0.0331857, - -0.0565076, - -0.0183194, - -0.0331857, - 0.0601226, - -0.0296561, - -0.0070197, - -0.0601226, - -0.0296561, - -0.0070197, - 0.0609281, - -0.0254794, - -0.0151742, - -0.0609281, - -0.0254794, - -0.0151742, - 0.0618122, - -0.0181205, - -0.0241241, - -0.0618122, - -0.0181205, - -0.0241241, - 0.0626992, - -0.0183194, - -0.0331857, - -0.0626992, - -0.0183194, - -0.0331857, - 0.0565076, - 0.02405, - -0.0331857, - -0.0565076, - 0.02405, - -0.0331857, - 0.0524385, - -0.0905876, - 0.0160386, - -0.0524385, - -0.0905876, - 0.0160386, - 0.0565076, - -0.0905876, - -0.0045579, - -0.0565076, - -0.0905876, - -0.0045579, - 0.0329651, - -0.0905876, - 0.0228699, - -0.0329651, - -0.0905876, - 0.0228699, - 0.0550535, - -0.0905876, - 0.009958, - -0.0550535, - -0.0905876, - 0.009958, - 0.0464127, - -0.0905876, - 0.0202971, - -0.0464127, - -0.0905876, - 0.0202971, - 0.0565076, - -0.0628994, - -0.0045579, - -0.0565076, - -0.0628994, - -0.0045579, - 0.0550535, - -0.0628994, - 0.009958, - -0.0550535, - -0.0628994, - 0.009958, - 0.0524385, - -0.0628994, - 0.0160386, - -0.0524385, - -0.0628994, - 0.0160386, - 0.0464127, - -0.0628994, - 0.0202971, - -0.0464127, - -0.0628994, - 0.0202971, - 0.0162656, - -0.0079189, - 0.0277709, - -0.0162656, - -0.0079189, - 0.0277709, - 0.0200508, - 0.0056817, - 0.0204932, - -0.0200508, - 0.0056817, - 0.0204932, - 0.0131798, - -0.01695, - 0.0314025, - -0.0131798, - -0.01695, - 0.0314025, - 0.0131798, - -0.0171972, - 0.0298751, - -0.0131798, - -0.0171972, - 0.0298751, - 0.0162656, - -0.0080763, - 0.0264755, - -0.0162656, - -0.0080763, - 0.0264755, - 0, - -0.0080763, - 0.0264755, - 0, - -0.0215519, - 0.0315845, - 0.0344736, - -0.0344986, - 0.0356692, - -0.0344736, - -0.0344986, - 0.0356692, - 0.0326947, - -0.0439508, - 0.0357404, - -0.0326947, - -0.0439508, - 0.0357404, - 0.048433, - -0.026173, - 0.0341371, - -0.048433, - -0.026173, - 0.0341371, - 0.0524828, - -0.0320698, - 0.032613, - -0.0524828, - -0.0320698, - 0.032613, - 0.0523586, - -0.023864, - 0.0309799, - -0.0523586, - -0.023864, - 0.0309799, - 0.0520988, - -0.023936, - 0.0292534, - -0.0520988, - -0.023936, - 0.0292534, - 0.0521645, - -0.0322226, - 0.0307246, - -0.0521645, - -0.0322226, - 0.0307246, - 0.0481146, - -0.0263258, - 0.0322488, - -0.0481146, - -0.0263258, - 0.0322488, - 0.0323763, - -0.0441037, - 0.0338521, - -0.0323763, - -0.0441037, - 0.0338521, - 0.0341552, - -0.0346514, - 0.0337809, - -0.0341552, - -0.0346514, - 0.0337809, - 0.0481146, - -0.0346514, - 0.0337809, - -0.0481146, - -0.0346514, - 0.0337809, - 0.0389696, - -0.048721, - 0.0357745, - -0.0389696, - -0.048721, - 0.0357745, - 0.0342575, - -0.0594493, - 0.0353214, - -0.0342575, - -0.0594493, - 0.0353214, - 0.0482032, - -0.0445659, - 0.0357406, - -0.0482032, - -0.0445659, - 0.0357406, - 0.0524493, - -0.041828, - 0.0325327, - -0.0524493, - -0.041828, - 0.0325327, - 0.0529358, - -0.0478391, - 0.0321861, - -0.0529358, - -0.0478391, - 0.0321861, - 0.0482032, - -0.0445659, - 0.0341924, - -0.0482032, - -0.0445659, - 0.0341924, - 0.0524493, - -0.041828, - 0.0309845, - -0.0524493, - -0.041828, - 0.0309845, - 0.0481432, - -0.0508762, - 0.0341413, - -0.0481432, - -0.0508762, - 0.0341413, - 0.0342575, - -0.0594493, - 0.0337732, - -0.0342575, - -0.0594493, - 0.0337732, - 0.0389696, - -0.048721, - 0.0342264, - -0.0389696, - -0.048721, - 0.0342264, - 0.0529358, - -0.0478391, - 0.030638, - -0.0529358, - -0.0478391, - 0.030638, - 0, - 0.012601, - 0.015873, - 0.0114012, - 0.012601, - 0.015873, - -0.0114012, - 0.012601, - 0.015873, - 0.0216046, - 0.0142981, - 0.0147398, - -0.0216046, - 0.0142981, - 0.0147398, - 0.0290115, - 0.0174409, - 0.0126413, - -0.0290115, - 0.0174409, - 0.0126413, - 0.0312412, - 0.0192564, - 0.0114116, - -0.0312412, - 0.0192564, - 0.0114116, - 0, - 0.0192564, - 0.015873, - 0.0114012, - 0.0192564, - 0.015873, - -0.0114012, - 0.0192564, - 0.015873, - 0.0216046, - 0.0192564, - 0.0147398, - -0.0216046, - 0.0192564, - 0.0147398, - 0.0290115, - 0.0192564, - 0.0126413, - -0.0290115, - 0.0192564, - 0.0126413, - 0, - 0.0192564, - 0.0114116 - ], - "faces": [ - 2, - 16, - 7, - 6, - 0, - 2, - 6, - 7, - 17, - 0, - 2, - 30, - 5, - 2, - 0, - 2, - 3, - 5, - 31, - 0, - 2, - 30, - 6, - 5, - 0, - 2, - 5, - 6, - 31, - 0, - 2, - 6, - 30, - 16, - 0, - 2, - 17, - 31, - 6, - 0, - 2, - 57, - 61, - 59, - 0, - 2, - 60, - 62, - 58, - 0, - 2, - 42, - 44, - 68, - 0, - 2, - 69, - 45, - 43, - 0, - 2, - 70, - 54, - 55, - 0, - 2, - 55, - 54, - 71, - 0, - 2, - 48, - 54, - 70, - 0, - 2, - 71, - 54, - 49, - 0, - 2, - 70, - 55, - 50, - 0, - 2, - 51, - 55, - 71, - 0, - 2, - 40, - 42, - 68, - 0, - 2, - 69, - 43, - 41, - 0, - 2, - 46, - 44, - 78, - 0, - 2, - 78, - 45, - 47, - 0, - 2, - 16, - 95, - 18, - 0, - 2, - 19, - 96, - 17, - 0, - 2, - 16, - 30, - 95, - 0, - 2, - 96, - 31, - 17, - 0, - 2, - 52, - 105, - 107, - 0, - 2, - 108, - 106, - 53, - 0, - 2, - 87, - 89, - 79, - 0, - 2, - 80, - 90, - 88, - 0, - 2, - 93, - 109, - 91, - 0, - 2, - 92, - 110, - 94, - 0, - 2, - 83, - 109, - 93, - 0, - 2, - 94, - 110, - 84, - 0, - 2, - 83, - 93, - 85, - 0, - 2, - 86, - 94, - 84, - 0, - 2, - 28, - 105, - 52, - 0, - 2, - 53, - 106, - 29, - 0, - 2, - 72, - 46, - 76, - 0, - 2, - 77, - 47, - 73, - 0, - 2, - 72, - 76, - 74, - 0, - 2, - 75, - 77, - 73, - 0, - 2, - 48, - 70, - 76, - 0, - 2, - 77, - 71, - 49, - 0, - 2, - 48, - 76, - 46, - 0, - 2, - 47, - 77, - 49, - 0, - 2, - 97, - 119, - 111, - 0, - 2, - 112, - 120, - 98, - 0, - 2, - 125, - 81, - 79, - 0, - 2, - 80, - 82, - 126, - 0, - 2, - 109, - 125, - 91, - 0, - 2, - 92, - 126, - 110, - 0, - 2, - 79, - 89, - 125, - 0, - 2, - 126, - 90, - 80, - 0, - 2, - 89, - 91, - 125, - 0, - 2, - 126, - 92, - 90, - 0, - 2, - 121, - 119, - 81, - 0, - 2, - 82, - 120, - 122, - 0, - 2, - 123, - 121, - 81, - 0, - 2, - 82, - 122, - 124, - 0, - 2, - 125, - 123, - 81, - 0, - 2, - 82, - 124, - 126, - 0, - 2, - 111, - 113, - 115, - 0, - 2, - 116, - 114, - 112, - 0, - 2, - 115, - 101, - 99, - 0, - 2, - 100, - 102, - 116, - 0, - 2, - 99, - 97, - 111, - 0, - 2, - 112, - 98, - 100, - 0, - 2, - 99, - 111, - 115, - 0, - 2, - 116, - 112, - 100, - 0, - 2, - 115, - 117, - 107, - 0, - 2, - 108, - 118, - 116, - 0, - 2, - 115, - 107, - 105, - 0, - 2, - 106, - 108, - 116, - 0, - 2, - 103, - 101, - 115, - 0, - 2, - 116, - 102, - 104, - 0, - 2, - 103, - 115, - 105, - 0, - 2, - 106, - 116, - 104, - 0, - 2, - 125, - 109, - 107, - 0, - 2, - 108, - 110, - 126, - 0, - 2, - 125, - 107, - 117, - 0, - 2, - 118, - 108, - 126, - 0, - 2, - 95, - 81, - 119, - 0, - 2, - 120, - 82, - 96, - 0, - 2, - 95, - 119, - 97, - 0, - 2, - 98, - 120, - 96, - 0, - 2, - 115, - 123, - 117, - 0, - 2, - 118, - 124, - 116, - 0, - 2, - 123, - 125, - 117, - 0, - 2, - 118, - 126, - 124, - 0, - 2, - 113, - 121, - 115, - 0, - 2, - 116, - 122, - 114, - 0, - 2, - 121, - 123, - 115, - 0, - 2, - 116, - 124, - 122, - 0, - 2, - 111, - 119, - 113, - 0, - 2, - 114, - 120, - 112, - 0, - 2, - 119, - 121, - 113, - 0, - 2, - 114, - 122, - 120, - 0, - 2, - 50, - 109, - 83, - 0, - 2, - 84, - 110, - 51, - 0, - 2, - 44, - 46, - 87, - 0, - 2, - 88, - 47, - 45, - 0, - 2, - 44, - 87, - 79, - 0, - 2, - 80, - 88, - 45, - 0, - 2, - 76, - 70, - 85, - 0, - 2, - 86, - 71, - 77, - 0, - 2, - 76, - 85, - 93, - 0, - 2, - 94, - 86, - 77, - 0, - 2, - 74, - 76, - 93, - 0, - 2, - 94, - 77, - 75, - 0, - 2, - 74, - 93, - 91, - 0, - 2, - 92, - 94, - 75, - 0, - 2, - 72, - 74, - 91, - 0, - 2, - 92, - 75, - 73, - 0, - 2, - 72, - 91, - 89, - 0, - 2, - 90, - 92, - 73, - 0, - 2, - 46, - 72, - 89, - 0, - 2, - 90, - 73, - 47, - 0, - 2, - 46, - 89, - 87, - 0, - 2, - 88, - 90, - 47, - 0, - 2, - 50, - 85, - 70, - 0, - 2, - 71, - 86, - 51, - 0, - 2, - 50, - 83, - 85, - 0, - 2, - 86, - 84, - 51, - 0, - 2, - 68, - 44, - 79, - 0, - 2, - 80, - 45, - 69, - 0, - 2, - 68, - 79, - 81, - 0, - 2, - 82, - 80, - 69, - 0, - 2, - 46, - 78, - 54, - 0, - 2, - 54, - 78, - 47, - 0, - 2, - 46, - 54, - 48, - 0, - 2, - 49, - 54, - 47, - 0, - 2, - 42, - 66, - 44, - 0, - 2, - 45, - 66, - 43, - 0, - 2, - 66, - 78, - 44, - 0, - 2, - 45, - 78, - 66, - 0, - 2, - 57, - 40, - 67, - 0, - 2, - 67, - 41, - 58, - 0, - 2, - 57, - 67, - 65, - 0, - 2, - 65, - 67, - 58, - 0, - 2, - 59, - 66, - 42, - 0, - 2, - 43, - 66, - 60, - 0, - 2, - 59, - 64, - 66, - 0, - 2, - 66, - 64, - 60, - 0, - 2, - 57, - 63, - 61, - 0, - 2, - 62, - 63, - 58, - 0, - 2, - 57, - 65, - 63, - 0, - 2, - 63, - 65, - 58, - 0, - 2, - 61, - 64, - 59, - 0, - 2, - 60, - 64, - 62, - 0, - 2, - 61, - 63, - 64, - 0, - 2, - 64, - 63, - 62, - 0, - 2, - 57, - 59, - 40, - 0, - 2, - 41, - 60, - 58, - 0, - 2, - 59, - 42, - 40, - 0, - 2, - 41, - 43, - 60, - 0, - 2, - 52, - 50, - 55, - 0, - 2, - 55, - 51, - 53, - 0, - 2, - 52, - 55, - 56, - 0, - 2, - 56, - 55, - 53, - 0, - 2, - 13, - 39, - 14, - 0, - 2, - 15, - 39, - 13, - 0, - 2, - 14, - 39, - 35, - 0, - 2, - 36, - 39, - 15, - 0, - 2, - 2, - 32, - 37, - 0, - 2, - 38, - 33, - 3, - 0, - 2, - 37, - 32, - 35, - 0, - 2, - 36, - 33, - 38, - 0, - 2, - 0, - 35, - 32, - 0, - 2, - 33, - 36, - 1, - 0, - 2, - 0, - 14, - 35, - 0, - 2, - 36, - 15, - 1, - 0, - 2, - 34, - 0, - 32, - 0, - 2, - 33, - 1, - 34, - 0, - 2, - 0, - 34, - 4, - 0, - 2, - 4, - 34, - 1, - 0, - 2, - 2, - 5, - 32, - 0, - 2, - 33, - 5, - 3, - 0, - 2, - 32, - 5, - 34, - 0, - 2, - 34, - 5, - 33, - 0, - 2, - 14, - 0, - 4, - 0, - 2, - 4, - 1, - 15, - 0, - 2, - 4, - 13, - 14, - 0, - 2, - 15, - 13, - 4, - 0, - 2, - 107, - 127, - 52, - 0, - 2, - 53, - 128, - 108, - 0, - 2, - 127, - 50, - 52, - 0, - 2, - 53, - 51, - 128, - 0, - 2, - 107, - 109, - 127, - 0, - 2, - 128, - 110, - 108, - 0, - 2, - 127, - 109, - 50, - 0, - 2, - 51, - 110, - 128, - 0, - 2, - 35, - 133, - 37, - 0, - 2, - 38, - 134, - 36, - 0, - 2, - 68, - 81, - 139, - 0, - 2, - 140, - 82, - 69, - 0, - 2, - 81, - 141, - 139, - 0, - 2, - 140, - 142, - 82, - 0, - 2, - 95, - 141, - 81, - 0, - 2, - 82, - 142, - 96, - 0, - 2, - 95, - 143, - 141, - 0, - 2, - 142, - 144, - 96, - 0, - 2, - 95, - 145, - 143, - 0, - 2, - 144, - 146, - 96, - 0, - 2, - 95, - 37, - 145, - 0, - 2, - 146, - 38, - 96, - 0, - 2, - 30, - 37, - 95, - 0, - 2, - 96, - 38, - 31, - 0, - 2, - 2, - 37, - 30, - 0, - 2, - 31, - 38, - 3, - 0, - 2, - 35, - 39, - 67, - 0, - 2, - 67, - 39, - 36, - 0, - 2, - 133, - 35, - 67, - 0, - 2, - 67, - 36, - 134, - 0, - 2, - 137, - 133, - 67, - 0, - 2, - 67, - 134, - 138, - 0, - 2, - 129, - 137, - 67, - 0, - 2, - 67, - 138, - 130, - 0, - 2, - 135, - 129, - 67, - 0, - 2, - 67, - 130, - 136, - 0, - 2, - 131, - 135, - 67, - 0, - 2, - 67, - 136, - 132, - 0, - 2, - 40, - 131, - 67, - 0, - 2, - 67, - 132, - 41, - 0, - 2, - 9, - 22, - 10, - 0, - 2, - 10, - 23, - 9, - 0, - 2, - 10, - 22, - 24, - 0, - 2, - 25, - 23, - 10, - 0, - 2, - 12, - 52, - 56, - 0, - 2, - 56, - 53, - 12, - 0, - 2, - 24, - 26, - 147, - 0, - 2, - 148, - 27, - 25, - 0, - 2, - 26, - 28, - 149, - 0, - 2, - 150, - 29, - 27, - 0, - 2, - 151, - 10, - 24, - 0, - 2, - 25, - 10, - 152, - 0, - 2, - 151, - 24, - 147, - 0, - 2, - 148, - 25, - 152, - 0, - 2, - 149, - 147, - 26, - 0, - 2, - 27, - 148, - 150, - 0, - 2, - 155, - 157, - 153, - 0, - 2, - 154, - 157, - 156, - 0, - 2, - 153, - 157, - 158, - 0, - 2, - 158, - 157, - 154, - 0, - 2, - 147, - 149, - 155, - 0, - 2, - 156, - 150, - 148, - 0, - 2, - 159, - 22, - 9, - 0, - 2, - 9, - 23, - 160, - 0, - 2, - 9, - 8, - 159, - 0, - 2, - 160, - 8, - 9, - 0, - 2, - 161, - 159, - 8, - 0, - 2, - 8, - 160, - 162, - 0, - 2, - 22, - 159, - 163, - 0, - 2, - 164, - 160, - 23, - 0, - 2, - 167, - 97, - 99, - 0, - 2, - 100, - 98, - 168, - 0, - 2, - 99, - 22, - 167, - 0, - 2, - 168, - 23, - 100, - 0, - 2, - 167, - 22, - 163, - 0, - 2, - 164, - 23, - 168, - 0, - 2, - 97, - 167, - 165, - 0, - 2, - 166, - 168, - 98, - 0, - 2, - 171, - 169, - 173, - 0, - 2, - 174, - 170, - 172, - 0, - 2, - 179, - 173, - 177, - 0, - 2, - 178, - 174, - 180, - 0, - 2, - 171, - 173, - 179, - 0, - 2, - 180, - 174, - 172, - 0, - 2, - 179, - 177, - 175, - 0, - 2, - 176, - 178, - 180, - 0, - 2, - 181, - 161, - 8, - 0, - 2, - 8, - 162, - 182, - 0, - 2, - 8, - 7, - 183, - 0, - 2, - 184, - 7, - 8, - 0, - 2, - 183, - 7, - 16, - 0, - 2, - 17, - 7, - 184, - 0, - 2, - 183, - 181, - 8, - 0, - 2, - 8, - 182, - 184, - 0, - 2, - 20, - 161, - 185, - 0, - 2, - 186, - 162, - 21, - 0, - 2, - 185, - 165, - 20, - 0, - 2, - 21, - 166, - 186, - 0, - 2, - 97, - 165, - 187, - 0, - 2, - 188, - 166, - 98, - 0, - 2, - 189, - 18, - 95, - 0, - 2, - 96, - 19, - 190, - 0, - 2, - 95, - 97, - 189, - 0, - 2, - 190, - 98, - 96, - 0, - 2, - 189, - 97, - 187, - 0, - 2, - 188, - 98, - 190, - 0, - 2, - 161, - 181, - 185, - 0, - 2, - 186, - 182, - 162, - 0, - 2, - 16, - 18, - 183, - 0, - 2, - 184, - 19, - 17, - 0, - 2, - 187, - 165, - 185, - 0, - 2, - 186, - 166, - 188, - 0, - 2, - 201, - 191, - 195, - 0, - 2, - 196, - 192, - 202, - 0, - 2, - 201, - 193, - 191, - 0, - 2, - 192, - 194, - 202, - 0, - 2, - 195, - 199, - 197, - 0, - 2, - 198, - 200, - 196, - 0, - 2, - 195, - 191, - 199, - 0, - 2, - 200, - 192, - 196, - 0, - 2, - 208, - 210, - 217, - 0, - 2, - 218, - 211, - 209, - 0, - 2, - 12, - 28, - 52, - 0, - 2, - 53, - 29, - 12, - 0, - 2, - 213, - 219, - 212, - 0, - 2, - 212, - 219, - 214, - 0, - 2, - 215, - 219, - 213, - 0, - 2, - 214, - 219, - 216, - 0, - 2, - 217, - 219, - 215, - 0, - 2, - 216, - 219, - 218, - 0, - 2, - 210, - 219, - 217, - 0, - 2, - 218, - 219, - 211, - 0, - 2, - 11, - 149, - 12, - 0, - 2, - 12, - 150, - 11, - 0, - 2, - 12, - 149, - 28, - 0, - 2, - 29, - 150, - 12, - 0, - 2, - 206, - 208, - 215, - 0, - 2, - 216, - 209, - 207, - 0, - 2, - 208, - 217, - 215, - 0, - 2, - 216, - 218, - 209, - 0, - 2, - 206, - 213, - 204, - 0, - 2, - 205, - 214, - 207, - 0, - 2, - 206, - 215, - 213, - 0, - 2, - 214, - 216, - 207, - 0, - 2, - 204, - 212, - 203, - 0, - 2, - 203, - 212, - 205, - 0, - 2, - 204, - 213, - 212, - 0, - 2, - 212, - 214, - 205, - 0, - 2, - 181, - 183, - 199, - 0, - 2, - 200, - 184, - 182, - 0, - 2, - 183, - 197, - 199, - 0, - 2, - 200, - 198, - 184, - 0, - 2, - 189, - 187, - 193, - 0, - 2, - 194, - 188, - 190, - 0, - 2, - 189, - 193, - 201, - 0, - 2, - 202, - 194, - 190, - 0, - 2, - 18, - 189, - 195, - 0, - 2, - 196, - 190, - 19, - 0, - 2, - 189, - 201, - 195, - 0, - 2, - 196, - 202, - 190, - 0, - 2, - 185, - 181, - 199, - 0, - 2, - 200, - 182, - 186, - 0, - 2, - 185, - 199, - 191, - 0, - 2, - 192, - 200, - 186, - 0, - 2, - 183, - 18, - 195, - 0, - 2, - 196, - 19, - 184, - 0, - 2, - 183, - 195, - 197, - 0, - 2, - 198, - 196, - 184, - 0, - 2, - 187, - 185, - 191, - 0, - 2, - 192, - 186, - 188, - 0, - 2, - 187, - 191, - 193, - 0, - 2, - 194, - 192, - 188, - 0, - 2, - 161, - 20, - 179, - 0, - 2, - 180, - 21, - 162, - 0, - 2, - 161, - 179, - 175, - 0, - 2, - 176, - 180, - 162, - 0, - 2, - 159, - 161, - 177, - 0, - 2, - 178, - 162, - 160, - 0, - 2, - 161, - 175, - 177, - 0, - 2, - 178, - 176, - 162, - 0, - 2, - 163, - 159, - 173, - 0, - 2, - 174, - 160, - 164, - 0, - 2, - 159, - 177, - 173, - 0, - 2, - 174, - 178, - 160, - 0, - 2, - 20, - 165, - 179, - 0, - 2, - 180, - 166, - 21, - 0, - 2, - 165, - 171, - 179, - 0, - 2, - 180, - 172, - 166, - 0, - 2, - 167, - 163, - 173, - 0, - 2, - 174, - 164, - 168, - 0, - 2, - 167, - 173, - 169, - 0, - 2, - 170, - 174, - 168, - 0, - 2, - 165, - 167, - 171, - 0, - 2, - 172, - 168, - 166, - 0, - 2, - 167, - 169, - 171, - 0, - 2, - 172, - 170, - 168, - 0, - 2, - 11, - 155, - 149, - 0, - 2, - 150, - 156, - 11, - 0, - 2, - 11, - 157, - 155, - 0, - 2, - 156, - 157, - 11, - 0, - 2, - 147, - 153, - 151, - 0, - 2, - 152, - 154, - 148, - 0, - 2, - 147, - 155, - 153, - 0, - 2, - 154, - 156, - 148, - 0, - 2, - 151, - 158, - 10, - 0, - 2, - 10, - 158, - 152, - 0, - 2, - 151, - 153, - 158, - 0, - 2, - 158, - 154, - 152, - 0, - 2, - 22, - 99, - 24, - 0, - 2, - 25, - 100, - 23, - 0, - 2, - 24, - 99, - 101, - 0, - 2, - 102, - 100, - 25, - 0, - 2, - 24, - 101, - 26, - 0, - 2, - 27, - 102, - 25, - 0, - 2, - 26, - 101, - 103, - 0, - 2, - 104, - 102, - 27, - 0, - 2, - 26, - 103, - 28, - 0, - 2, - 29, - 104, - 27, - 0, - 2, - 28, - 103, - 105, - 0, - 2, - 106, - 104, - 29, - 0, - 2, - 40, - 68, - 139, - 0, - 2, - 140, - 69, - 41, - 0, - 2, - 40, - 139, - 131, - 0, - 2, - 132, - 140, - 41, - 0, - 2, - 129, - 145, - 137, - 0, - 2, - 138, - 146, - 130, - 0, - 2, - 129, - 143, - 145, - 0, - 2, - 146, - 144, - 130, - 0, - 2, - 137, - 37, - 133, - 0, - 2, - 134, - 38, - 138, - 0, - 2, - 137, - 145, - 37, - 0, - 2, - 38, - 146, - 138, - 0, - 2, - 129, - 135, - 141, - 0, - 2, - 142, - 136, - 130, - 0, - 2, - 129, - 141, - 143, - 0, - 2, - 144, - 142, - 130, - 0, - 2, - 135, - 131, - 139, - 0, - 2, - 140, - 132, - 136, - 0, - 2, - 135, - 139, - 141, - 0, - 2, - 142, - 140, - 136, - 0 - ] + "metadata": { + "formatVersion": 3, + "materials": 1 + }, + "materials": [ + { + "DbgColor": 15658734, + "DbgIndex": 0, + "DbgName": "Plastic", + "colorDiffuse": [ + 0.301961, + 0.301961, + 0.301961 + ], + "colorSpecular": [ + 0.401201, + 0.401201, + 0.401201 + ], + "shading": "Lambert", + "specularCoef": 50, + "opacity": 1.0, + "vertexColors": false + } + ], + "normals": [], + "colors": [], + "uvs": [], + "morphTargets": [], + "vertices": [ + 0.0189393, + -0.0980656, + 0.0268584, + -0.0189393, + -0.0980656, + 0.0268584, + 0.0329651, + -0.0785909, + 0.032466, + -0.0329651, + -0.0785909, + 0.032466, + 0, + -0.0980656, + 0.0268584, + 0, + -0.0785909, + 0.032466, + 0, + -0.0684064, + 0.034421, + 0, + -0.0628994, + 0.0351729, + 0, + -0.048721, + 0.0357745, + 0, + -0.0344986, + 0.0356692, + 0, + -0.0215196, + 0.0332293, + 0, + 0.0056817, + 0.0204932, + 0, + 0.0192564, + 0.0114116, + 0, + -0.0980656, + 0.0228699, + 0.0191471, + -0.0980656, + 0.0228699, + -0.0191471, + -0.0980656, + 0.0228699, + 0.0472058, + -0.0628994, + 0.0351729, + -0.0472058, + -0.0628994, + 0.0351729, + 0.0481432, + -0.0508762, + 0.0356895, + -0.0481432, + -0.0508762, + 0.0356895, + 0.048433, + -0.0344986, + 0.0356692, + -0.048433, + -0.0344986, + 0.0356692, + 0.048433, + -0.0215196, + 0.0332293, + -0.048433, + -0.0215196, + 0.0332293, + 0.048433, + -0.0079189, + 0.0277709, + -0.048433, + -0.0079189, + 0.0277709, + 0.048433, + 0.0056817, + 0.0204932, + -0.048433, + 0.0056817, + 0.0204932, + 0.048433, + 0.0192564, + 0.0114116, + -0.048433, + 0.0192564, + 0.0114116, + 0.0461024, + -0.0684064, + 0.034421, + -0.0461024, + -0.0684064, + 0.034421, + 0.0254606, + -0.0905876, + 0.0293183, + -0.0254606, + -0.0905876, + 0.0293183, + 0, + -0.0905876, + 0.0293183, + 0.0254606, + -0.0905876, + 0.0228699, + -0.0254606, + -0.0905876, + 0.0228699, + 0.0329651, + -0.0785909, + 0.0228699, + -0.0329651, + -0.0785909, + 0.0228699, + 0, + -0.0905876, + 0.0228699, + 0.0565076, + -0.0905876, + -0.0267561, + -0.0565076, + -0.0905876, + -0.0267561, + 0.0565076, + -0.0514098, + -0.0764782, + -0.0565076, + -0.0514098, + -0.0764782, + 0.0565076, + -0.0212185, + -0.0764782, + -0.0565076, + -0.0212185, + -0.0764782, + 0.0565076, + -0.0063517, + -0.0764782, + -0.0565076, + -0.0063517, + -0.0764782, + 0.0565076, + 0.0256694, + -0.0620687, + -0.0565076, + 0.0256694, + -0.0620687, + 0.0565076, + 0.0273448, + -0.0374196, + -0.0565076, + 0.0273448, + -0.0374196, + 0.0485225, + 0.02405, + -0.0331857, + -0.0485225, + 0.02405, + -0.0331857, + 0, + 0.0256694, + -0.0620687, + 0, + 0.0273448, + -0.0374196, + 0, + 0.02405, + -0.0331857, + 0.0504399, + -0.0876542, + -0.0306215, + -0.0504399, + -0.0876542, + -0.0306215, + 0.0504399, + -0.0559821, + -0.0707385, + -0.0504399, + -0.0559821, + -0.0707385, + 0.0504399, + -0.0875412, + -0.0707385, + -0.0504399, + -0.0875412, + -0.0707385, + 0, + -0.0875412, + -0.0707385, + 0, + -0.0559821, + -0.0707385, + 0, + -0.0876542, + -0.0306215, + 0, + -0.0514098, + -0.0764782, + 0, + -0.0905876, + -0.0266996, + 0.0565076, + -0.0628994, + -0.0331857, + -0.0565076, + -0.0628994, + -0.0331857, + 0.0565076, + 0.0262925, + -0.0529012, + -0.0565076, + 0.0262925, + -0.0529012, + 0.0565076, + -0.0063517, + -0.0591835, + -0.0565076, + -0.0063517, + -0.0591835, + 0.0565076, + -0.0027423, + -0.0545215, + -0.0565076, + -0.0027423, + -0.0545215, + 0.0565076, + 0.0019197, + -0.0530176, + -0.0565076, + 0.0019197, + -0.0530176, + 0, + -0.0063517, + -0.0764782, + 0.0626992, + -0.0212185, + -0.0764782, + -0.0626992, + -0.0212185, + -0.0764782, + 0.0626992, + -0.0628994, + -0.0331857, + -0.0626992, + -0.0628994, + -0.0331857, + 0.0626992, + 0.0273448, + -0.0374196, + -0.0626992, + 0.0273448, + -0.0374196, + 0.0626992, + 0.0262925, + -0.0529012, + -0.0626992, + 0.0262925, + -0.0529012, + 0.0626992, + -0.0063517, + -0.0764782, + -0.0626992, + -0.0063517, + -0.0764782, + 0.0626992, + -0.0063517, + -0.0591835, + -0.0626992, + -0.0063517, + -0.0591835, + 0.0626992, + -0.0027423, + -0.0545215, + -0.0626992, + -0.0027423, + -0.0545215, + 0.0626992, + 0.0019197, + -0.0530176, + -0.0626992, + 0.0019197, + -0.0530176, + 0.0565076, + -0.0628994, + 0.0295758, + -0.0565076, + -0.0628994, + 0.0295758, + 0.0565076, + -0.0296561, + 0.0295758, + -0.0565076, + -0.0296561, + 0.0295758, + 0.0565076, + -0.0215196, + 0.0270637, + -0.0565076, + -0.0215196, + 0.0270637, + 0.0565076, + -0.0079189, + 0.0216054, + -0.0565076, + -0.0079189, + 0.0216054, + 0.0565076, + 0.0056817, + 0.0143276, + -0.0565076, + 0.0056817, + 0.0143276, + 0.0565076, + 0.0152688, + 0.0052461, + -0.0565076, + 0.0152688, + 0.0052461, + 0.0565076, + 0.0200374, + -0.0331857, + -0.0565076, + 0.0200374, + -0.0331857, + 0.0626992, + 0.02405, + -0.0331857, + -0.0626992, + 0.02405, + -0.0331857, + 0.0565076, + -0.0296561, + -0.0070197, + -0.0565076, + -0.0296561, + -0.0070197, + 0.0565076, + -0.0254794, + -0.0151742, + -0.0565076, + -0.0254794, + -0.0151742, + 0.0565076, + -0.0181205, + -0.0241241, + -0.0565076, + -0.0181205, + -0.0241241, + 0.0565076, + -0.0183194, + -0.0331857, + -0.0565076, + -0.0183194, + -0.0331857, + 0.0601226, + -0.0296561, + -0.0070197, + -0.0601226, + -0.0296561, + -0.0070197, + 0.0609281, + -0.0254794, + -0.0151742, + -0.0609281, + -0.0254794, + -0.0151742, + 0.0618122, + -0.0181205, + -0.0241241, + -0.0618122, + -0.0181205, + -0.0241241, + 0.0626992, + -0.0183194, + -0.0331857, + -0.0626992, + -0.0183194, + -0.0331857, + 0.0565076, + 0.02405, + -0.0331857, + -0.0565076, + 0.02405, + -0.0331857, + 0.0524385, + -0.0905876, + 0.0160386, + -0.0524385, + -0.0905876, + 0.0160386, + 0.0565076, + -0.0905876, + -0.0045579, + -0.0565076, + -0.0905876, + -0.0045579, + 0.0329651, + -0.0905876, + 0.0228699, + -0.0329651, + -0.0905876, + 0.0228699, + 0.0550535, + -0.0905876, + 0.009958, + -0.0550535, + -0.0905876, + 0.009958, + 0.0464127, + -0.0905876, + 0.0202971, + -0.0464127, + -0.0905876, + 0.0202971, + 0.0565076, + -0.0628994, + -0.0045579, + -0.0565076, + -0.0628994, + -0.0045579, + 0.0550535, + -0.0628994, + 0.009958, + -0.0550535, + -0.0628994, + 0.009958, + 0.0524385, + -0.0628994, + 0.0160386, + -0.0524385, + -0.0628994, + 0.0160386, + 0.0464127, + -0.0628994, + 0.0202971, + -0.0464127, + -0.0628994, + 0.0202971, + 0.0162656, + -0.0079189, + 0.0277709, + -0.0162656, + -0.0079189, + 0.0277709, + 0.0200508, + 0.0056817, + 0.0204932, + -0.0200508, + 0.0056817, + 0.0204932, + 0.0131798, + -0.01695, + 0.0314025, + -0.0131798, + -0.01695, + 0.0314025, + 0.0131798, + -0.0171972, + 0.0298751, + -0.0131798, + -0.0171972, + 0.0298751, + 0.0162656, + -0.0080763, + 0.0264755, + -0.0162656, + -0.0080763, + 0.0264755, + 0, + -0.0080763, + 0.0264755, + 0, + -0.0215519, + 0.0315845, + 0.0344736, + -0.0344986, + 0.0356692, + -0.0344736, + -0.0344986, + 0.0356692, + 0.0326947, + -0.0439508, + 0.0357404, + -0.0326947, + -0.0439508, + 0.0357404, + 0.048433, + -0.026173, + 0.0341371, + -0.048433, + -0.026173, + 0.0341371, + 0.0524828, + -0.0320698, + 0.032613, + -0.0524828, + -0.0320698, + 0.032613, + 0.0523586, + -0.023864, + 0.0309799, + -0.0523586, + -0.023864, + 0.0309799, + 0.0520988, + -0.023936, + 0.0292534, + -0.0520988, + -0.023936, + 0.0292534, + 0.0521645, + -0.0322226, + 0.0307246, + -0.0521645, + -0.0322226, + 0.0307246, + 0.0481146, + -0.0263258, + 0.0322488, + -0.0481146, + -0.0263258, + 0.0322488, + 0.0323763, + -0.0441037, + 0.0338521, + -0.0323763, + -0.0441037, + 0.0338521, + 0.0341552, + -0.0346514, + 0.0337809, + -0.0341552, + -0.0346514, + 0.0337809, + 0.0481146, + -0.0346514, + 0.0337809, + -0.0481146, + -0.0346514, + 0.0337809, + 0.0389696, + -0.048721, + 0.0357745, + -0.0389696, + -0.048721, + 0.0357745, + 0.0342575, + -0.0594493, + 0.0353214, + -0.0342575, + -0.0594493, + 0.0353214, + 0.0482032, + -0.0445659, + 0.0357406, + -0.0482032, + -0.0445659, + 0.0357406, + 0.0524493, + -0.041828, + 0.0325327, + -0.0524493, + -0.041828, + 0.0325327, + 0.0529358, + -0.0478391, + 0.0321861, + -0.0529358, + -0.0478391, + 0.0321861, + 0.0482032, + -0.0445659, + 0.0341924, + -0.0482032, + -0.0445659, + 0.0341924, + 0.0524493, + -0.041828, + 0.0309845, + -0.0524493, + -0.041828, + 0.0309845, + 0.0481432, + -0.0508762, + 0.0341413, + -0.0481432, + -0.0508762, + 0.0341413, + 0.0342575, + -0.0594493, + 0.0337732, + -0.0342575, + -0.0594493, + 0.0337732, + 0.0389696, + -0.048721, + 0.0342264, + -0.0389696, + -0.048721, + 0.0342264, + 0.0529358, + -0.0478391, + 0.030638, + -0.0529358, + -0.0478391, + 0.030638, + 0, + 0.012601, + 0.015873, + 0.0114012, + 0.012601, + 0.015873, + -0.0114012, + 0.012601, + 0.015873, + 0.0216046, + 0.0142981, + 0.0147398, + -0.0216046, + 0.0142981, + 0.0147398, + 0.0290115, + 0.0174409, + 0.0126413, + -0.0290115, + 0.0174409, + 0.0126413, + 0.0312412, + 0.0192564, + 0.0114116, + -0.0312412, + 0.0192564, + 0.0114116, + 0, + 0.0192564, + 0.015873, + 0.0114012, + 0.0192564, + 0.015873, + -0.0114012, + 0.0192564, + 0.015873, + 0.0216046, + 0.0192564, + 0.0147398, + -0.0216046, + 0.0192564, + 0.0147398, + 0.0290115, + 0.0192564, + 0.0126413, + -0.0290115, + 0.0192564, + 0.0126413, + 0, + 0.0192564, + 0.0114116 + ], + "faces": [ + 2, + 16, + 7, + 6, + 0, + 2, + 6, + 7, + 17, + 0, + 2, + 30, + 5, + 2, + 0, + 2, + 3, + 5, + 31, + 0, + 2, + 30, + 6, + 5, + 0, + 2, + 5, + 6, + 31, + 0, + 2, + 6, + 30, + 16, + 0, + 2, + 17, + 31, + 6, + 0, + 2, + 57, + 61, + 59, + 0, + 2, + 60, + 62, + 58, + 0, + 2, + 42, + 44, + 68, + 0, + 2, + 69, + 45, + 43, + 0, + 2, + 70, + 54, + 55, + 0, + 2, + 55, + 54, + 71, + 0, + 2, + 48, + 54, + 70, + 0, + 2, + 71, + 54, + 49, + 0, + 2, + 70, + 55, + 50, + 0, + 2, + 51, + 55, + 71, + 0, + 2, + 40, + 42, + 68, + 0, + 2, + 69, + 43, + 41, + 0, + 2, + 46, + 44, + 78, + 0, + 2, + 78, + 45, + 47, + 0, + 2, + 16, + 95, + 18, + 0, + 2, + 19, + 96, + 17, + 0, + 2, + 16, + 30, + 95, + 0, + 2, + 96, + 31, + 17, + 0, + 2, + 52, + 105, + 107, + 0, + 2, + 108, + 106, + 53, + 0, + 2, + 87, + 89, + 79, + 0, + 2, + 80, + 90, + 88, + 0, + 2, + 93, + 109, + 91, + 0, + 2, + 92, + 110, + 94, + 0, + 2, + 83, + 109, + 93, + 0, + 2, + 94, + 110, + 84, + 0, + 2, + 83, + 93, + 85, + 0, + 2, + 86, + 94, + 84, + 0, + 2, + 28, + 105, + 52, + 0, + 2, + 53, + 106, + 29, + 0, + 2, + 72, + 46, + 76, + 0, + 2, + 77, + 47, + 73, + 0, + 2, + 72, + 76, + 74, + 0, + 2, + 75, + 77, + 73, + 0, + 2, + 48, + 70, + 76, + 0, + 2, + 77, + 71, + 49, + 0, + 2, + 48, + 76, + 46, + 0, + 2, + 47, + 77, + 49, + 0, + 2, + 97, + 119, + 111, + 0, + 2, + 112, + 120, + 98, + 0, + 2, + 125, + 81, + 79, + 0, + 2, + 80, + 82, + 126, + 0, + 2, + 109, + 125, + 91, + 0, + 2, + 92, + 126, + 110, + 0, + 2, + 79, + 89, + 125, + 0, + 2, + 126, + 90, + 80, + 0, + 2, + 89, + 91, + 125, + 0, + 2, + 126, + 92, + 90, + 0, + 2, + 121, + 119, + 81, + 0, + 2, + 82, + 120, + 122, + 0, + 2, + 123, + 121, + 81, + 0, + 2, + 82, + 122, + 124, + 0, + 2, + 125, + 123, + 81, + 0, + 2, + 82, + 124, + 126, + 0, + 2, + 111, + 113, + 115, + 0, + 2, + 116, + 114, + 112, + 0, + 2, + 115, + 101, + 99, + 0, + 2, + 100, + 102, + 116, + 0, + 2, + 99, + 97, + 111, + 0, + 2, + 112, + 98, + 100, + 0, + 2, + 99, + 111, + 115, + 0, + 2, + 116, + 112, + 100, + 0, + 2, + 115, + 117, + 107, + 0, + 2, + 108, + 118, + 116, + 0, + 2, + 115, + 107, + 105, + 0, + 2, + 106, + 108, + 116, + 0, + 2, + 103, + 101, + 115, + 0, + 2, + 116, + 102, + 104, + 0, + 2, + 103, + 115, + 105, + 0, + 2, + 106, + 116, + 104, + 0, + 2, + 125, + 109, + 107, + 0, + 2, + 108, + 110, + 126, + 0, + 2, + 125, + 107, + 117, + 0, + 2, + 118, + 108, + 126, + 0, + 2, + 95, + 81, + 119, + 0, + 2, + 120, + 82, + 96, + 0, + 2, + 95, + 119, + 97, + 0, + 2, + 98, + 120, + 96, + 0, + 2, + 115, + 123, + 117, + 0, + 2, + 118, + 124, + 116, + 0, + 2, + 123, + 125, + 117, + 0, + 2, + 118, + 126, + 124, + 0, + 2, + 113, + 121, + 115, + 0, + 2, + 116, + 122, + 114, + 0, + 2, + 121, + 123, + 115, + 0, + 2, + 116, + 124, + 122, + 0, + 2, + 111, + 119, + 113, + 0, + 2, + 114, + 120, + 112, + 0, + 2, + 119, + 121, + 113, + 0, + 2, + 114, + 122, + 120, + 0, + 2, + 50, + 109, + 83, + 0, + 2, + 84, + 110, + 51, + 0, + 2, + 44, + 46, + 87, + 0, + 2, + 88, + 47, + 45, + 0, + 2, + 44, + 87, + 79, + 0, + 2, + 80, + 88, + 45, + 0, + 2, + 76, + 70, + 85, + 0, + 2, + 86, + 71, + 77, + 0, + 2, + 76, + 85, + 93, + 0, + 2, + 94, + 86, + 77, + 0, + 2, + 74, + 76, + 93, + 0, + 2, + 94, + 77, + 75, + 0, + 2, + 74, + 93, + 91, + 0, + 2, + 92, + 94, + 75, + 0, + 2, + 72, + 74, + 91, + 0, + 2, + 92, + 75, + 73, + 0, + 2, + 72, + 91, + 89, + 0, + 2, + 90, + 92, + 73, + 0, + 2, + 46, + 72, + 89, + 0, + 2, + 90, + 73, + 47, + 0, + 2, + 46, + 89, + 87, + 0, + 2, + 88, + 90, + 47, + 0, + 2, + 50, + 85, + 70, + 0, + 2, + 71, + 86, + 51, + 0, + 2, + 50, + 83, + 85, + 0, + 2, + 86, + 84, + 51, + 0, + 2, + 68, + 44, + 79, + 0, + 2, + 80, + 45, + 69, + 0, + 2, + 68, + 79, + 81, + 0, + 2, + 82, + 80, + 69, + 0, + 2, + 46, + 78, + 54, + 0, + 2, + 54, + 78, + 47, + 0, + 2, + 46, + 54, + 48, + 0, + 2, + 49, + 54, + 47, + 0, + 2, + 42, + 66, + 44, + 0, + 2, + 45, + 66, + 43, + 0, + 2, + 66, + 78, + 44, + 0, + 2, + 45, + 78, + 66, + 0, + 2, + 57, + 40, + 67, + 0, + 2, + 67, + 41, + 58, + 0, + 2, + 57, + 67, + 65, + 0, + 2, + 65, + 67, + 58, + 0, + 2, + 59, + 66, + 42, + 0, + 2, + 43, + 66, + 60, + 0, + 2, + 59, + 64, + 66, + 0, + 2, + 66, + 64, + 60, + 0, + 2, + 57, + 63, + 61, + 0, + 2, + 62, + 63, + 58, + 0, + 2, + 57, + 65, + 63, + 0, + 2, + 63, + 65, + 58, + 0, + 2, + 61, + 64, + 59, + 0, + 2, + 60, + 64, + 62, + 0, + 2, + 61, + 63, + 64, + 0, + 2, + 64, + 63, + 62, + 0, + 2, + 57, + 59, + 40, + 0, + 2, + 41, + 60, + 58, + 0, + 2, + 59, + 42, + 40, + 0, + 2, + 41, + 43, + 60, + 0, + 2, + 52, + 50, + 55, + 0, + 2, + 55, + 51, + 53, + 0, + 2, + 52, + 55, + 56, + 0, + 2, + 56, + 55, + 53, + 0, + 2, + 13, + 39, + 14, + 0, + 2, + 15, + 39, + 13, + 0, + 2, + 14, + 39, + 35, + 0, + 2, + 36, + 39, + 15, + 0, + 2, + 2, + 32, + 37, + 0, + 2, + 38, + 33, + 3, + 0, + 2, + 37, + 32, + 35, + 0, + 2, + 36, + 33, + 38, + 0, + 2, + 0, + 35, + 32, + 0, + 2, + 33, + 36, + 1, + 0, + 2, + 0, + 14, + 35, + 0, + 2, + 36, + 15, + 1, + 0, + 2, + 34, + 0, + 32, + 0, + 2, + 33, + 1, + 34, + 0, + 2, + 0, + 34, + 4, + 0, + 2, + 4, + 34, + 1, + 0, + 2, + 2, + 5, + 32, + 0, + 2, + 33, + 5, + 3, + 0, + 2, + 32, + 5, + 34, + 0, + 2, + 34, + 5, + 33, + 0, + 2, + 14, + 0, + 4, + 0, + 2, + 4, + 1, + 15, + 0, + 2, + 4, + 13, + 14, + 0, + 2, + 15, + 13, + 4, + 0, + 2, + 107, + 127, + 52, + 0, + 2, + 53, + 128, + 108, + 0, + 2, + 127, + 50, + 52, + 0, + 2, + 53, + 51, + 128, + 0, + 2, + 107, + 109, + 127, + 0, + 2, + 128, + 110, + 108, + 0, + 2, + 127, + 109, + 50, + 0, + 2, + 51, + 110, + 128, + 0, + 2, + 35, + 133, + 37, + 0, + 2, + 38, + 134, + 36, + 0, + 2, + 68, + 81, + 139, + 0, + 2, + 140, + 82, + 69, + 0, + 2, + 81, + 141, + 139, + 0, + 2, + 140, + 142, + 82, + 0, + 2, + 95, + 141, + 81, + 0, + 2, + 82, + 142, + 96, + 0, + 2, + 95, + 143, + 141, + 0, + 2, + 142, + 144, + 96, + 0, + 2, + 95, + 145, + 143, + 0, + 2, + 144, + 146, + 96, + 0, + 2, + 95, + 37, + 145, + 0, + 2, + 146, + 38, + 96, + 0, + 2, + 30, + 37, + 95, + 0, + 2, + 96, + 38, + 31, + 0, + 2, + 2, + 37, + 30, + 0, + 2, + 31, + 38, + 3, + 0, + 2, + 35, + 39, + 67, + 0, + 2, + 67, + 39, + 36, + 0, + 2, + 133, + 35, + 67, + 0, + 2, + 67, + 36, + 134, + 0, + 2, + 137, + 133, + 67, + 0, + 2, + 67, + 134, + 138, + 0, + 2, + 129, + 137, + 67, + 0, + 2, + 67, + 138, + 130, + 0, + 2, + 135, + 129, + 67, + 0, + 2, + 67, + 130, + 136, + 0, + 2, + 131, + 135, + 67, + 0, + 2, + 67, + 136, + 132, + 0, + 2, + 40, + 131, + 67, + 0, + 2, + 67, + 132, + 41, + 0, + 2, + 9, + 22, + 10, + 0, + 2, + 10, + 23, + 9, + 0, + 2, + 10, + 22, + 24, + 0, + 2, + 25, + 23, + 10, + 0, + 2, + 12, + 52, + 56, + 0, + 2, + 56, + 53, + 12, + 0, + 2, + 24, + 26, + 147, + 0, + 2, + 148, + 27, + 25, + 0, + 2, + 26, + 28, + 149, + 0, + 2, + 150, + 29, + 27, + 0, + 2, + 151, + 10, + 24, + 0, + 2, + 25, + 10, + 152, + 0, + 2, + 151, + 24, + 147, + 0, + 2, + 148, + 25, + 152, + 0, + 2, + 149, + 147, + 26, + 0, + 2, + 27, + 148, + 150, + 0, + 2, + 155, + 157, + 153, + 0, + 2, + 154, + 157, + 156, + 0, + 2, + 153, + 157, + 158, + 0, + 2, + 158, + 157, + 154, + 0, + 2, + 147, + 149, + 155, + 0, + 2, + 156, + 150, + 148, + 0, + 2, + 159, + 22, + 9, + 0, + 2, + 9, + 23, + 160, + 0, + 2, + 9, + 8, + 159, + 0, + 2, + 160, + 8, + 9, + 0, + 2, + 161, + 159, + 8, + 0, + 2, + 8, + 160, + 162, + 0, + 2, + 22, + 159, + 163, + 0, + 2, + 164, + 160, + 23, + 0, + 2, + 167, + 97, + 99, + 0, + 2, + 100, + 98, + 168, + 0, + 2, + 99, + 22, + 167, + 0, + 2, + 168, + 23, + 100, + 0, + 2, + 167, + 22, + 163, + 0, + 2, + 164, + 23, + 168, + 0, + 2, + 97, + 167, + 165, + 0, + 2, + 166, + 168, + 98, + 0, + 2, + 171, + 169, + 173, + 0, + 2, + 174, + 170, + 172, + 0, + 2, + 179, + 173, + 177, + 0, + 2, + 178, + 174, + 180, + 0, + 2, + 171, + 173, + 179, + 0, + 2, + 180, + 174, + 172, + 0, + 2, + 179, + 177, + 175, + 0, + 2, + 176, + 178, + 180, + 0, + 2, + 181, + 161, + 8, + 0, + 2, + 8, + 162, + 182, + 0, + 2, + 8, + 7, + 183, + 0, + 2, + 184, + 7, + 8, + 0, + 2, + 183, + 7, + 16, + 0, + 2, + 17, + 7, + 184, + 0, + 2, + 183, + 181, + 8, + 0, + 2, + 8, + 182, + 184, + 0, + 2, + 20, + 161, + 185, + 0, + 2, + 186, + 162, + 21, + 0, + 2, + 185, + 165, + 20, + 0, + 2, + 21, + 166, + 186, + 0, + 2, + 97, + 165, + 187, + 0, + 2, + 188, + 166, + 98, + 0, + 2, + 189, + 18, + 95, + 0, + 2, + 96, + 19, + 190, + 0, + 2, + 95, + 97, + 189, + 0, + 2, + 190, + 98, + 96, + 0, + 2, + 189, + 97, + 187, + 0, + 2, + 188, + 98, + 190, + 0, + 2, + 161, + 181, + 185, + 0, + 2, + 186, + 182, + 162, + 0, + 2, + 16, + 18, + 183, + 0, + 2, + 184, + 19, + 17, + 0, + 2, + 187, + 165, + 185, + 0, + 2, + 186, + 166, + 188, + 0, + 2, + 201, + 191, + 195, + 0, + 2, + 196, + 192, + 202, + 0, + 2, + 201, + 193, + 191, + 0, + 2, + 192, + 194, + 202, + 0, + 2, + 195, + 199, + 197, + 0, + 2, + 198, + 200, + 196, + 0, + 2, + 195, + 191, + 199, + 0, + 2, + 200, + 192, + 196, + 0, + 2, + 208, + 210, + 217, + 0, + 2, + 218, + 211, + 209, + 0, + 2, + 12, + 28, + 52, + 0, + 2, + 53, + 29, + 12, + 0, + 2, + 213, + 219, + 212, + 0, + 2, + 212, + 219, + 214, + 0, + 2, + 215, + 219, + 213, + 0, + 2, + 214, + 219, + 216, + 0, + 2, + 217, + 219, + 215, + 0, + 2, + 216, + 219, + 218, + 0, + 2, + 210, + 219, + 217, + 0, + 2, + 218, + 219, + 211, + 0, + 2, + 11, + 149, + 12, + 0, + 2, + 12, + 150, + 11, + 0, + 2, + 12, + 149, + 28, + 0, + 2, + 29, + 150, + 12, + 0, + 2, + 206, + 208, + 215, + 0, + 2, + 216, + 209, + 207, + 0, + 2, + 208, + 217, + 215, + 0, + 2, + 216, + 218, + 209, + 0, + 2, + 206, + 213, + 204, + 0, + 2, + 205, + 214, + 207, + 0, + 2, + 206, + 215, + 213, + 0, + 2, + 214, + 216, + 207, + 0, + 2, + 204, + 212, + 203, + 0, + 2, + 203, + 212, + 205, + 0, + 2, + 204, + 213, + 212, + 0, + 2, + 212, + 214, + 205, + 0, + 2, + 181, + 183, + 199, + 0, + 2, + 200, + 184, + 182, + 0, + 2, + 183, + 197, + 199, + 0, + 2, + 200, + 198, + 184, + 0, + 2, + 189, + 187, + 193, + 0, + 2, + 194, + 188, + 190, + 0, + 2, + 189, + 193, + 201, + 0, + 2, + 202, + 194, + 190, + 0, + 2, + 18, + 189, + 195, + 0, + 2, + 196, + 190, + 19, + 0, + 2, + 189, + 201, + 195, + 0, + 2, + 196, + 202, + 190, + 0, + 2, + 185, + 181, + 199, + 0, + 2, + 200, + 182, + 186, + 0, + 2, + 185, + 199, + 191, + 0, + 2, + 192, + 200, + 186, + 0, + 2, + 183, + 18, + 195, + 0, + 2, + 196, + 19, + 184, + 0, + 2, + 183, + 195, + 197, + 0, + 2, + 198, + 196, + 184, + 0, + 2, + 187, + 185, + 191, + 0, + 2, + 192, + 186, + 188, + 0, + 2, + 187, + 191, + 193, + 0, + 2, + 194, + 192, + 188, + 0, + 2, + 161, + 20, + 179, + 0, + 2, + 180, + 21, + 162, + 0, + 2, + 161, + 179, + 175, + 0, + 2, + 176, + 180, + 162, + 0, + 2, + 159, + 161, + 177, + 0, + 2, + 178, + 162, + 160, + 0, + 2, + 161, + 175, + 177, + 0, + 2, + 178, + 176, + 162, + 0, + 2, + 163, + 159, + 173, + 0, + 2, + 174, + 160, + 164, + 0, + 2, + 159, + 177, + 173, + 0, + 2, + 174, + 178, + 160, + 0, + 2, + 20, + 165, + 179, + 0, + 2, + 180, + 166, + 21, + 0, + 2, + 165, + 171, + 179, + 0, + 2, + 180, + 172, + 166, + 0, + 2, + 167, + 163, + 173, + 0, + 2, + 174, + 164, + 168, + 0, + 2, + 167, + 173, + 169, + 0, + 2, + 170, + 174, + 168, + 0, + 2, + 165, + 167, + 171, + 0, + 2, + 172, + 168, + 166, + 0, + 2, + 167, + 169, + 171, + 0, + 2, + 172, + 170, + 168, + 0, + 2, + 11, + 155, + 149, + 0, + 2, + 150, + 156, + 11, + 0, + 2, + 11, + 157, + 155, + 0, + 2, + 156, + 157, + 11, + 0, + 2, + 147, + 153, + 151, + 0, + 2, + 152, + 154, + 148, + 0, + 2, + 147, + 155, + 153, + 0, + 2, + 154, + 156, + 148, + 0, + 2, + 151, + 158, + 10, + 0, + 2, + 10, + 158, + 152, + 0, + 2, + 151, + 153, + 158, + 0, + 2, + 158, + 154, + 152, + 0, + 2, + 22, + 99, + 24, + 0, + 2, + 25, + 100, + 23, + 0, + 2, + 24, + 99, + 101, + 0, + 2, + 102, + 100, + 25, + 0, + 2, + 24, + 101, + 26, + 0, + 2, + 27, + 102, + 25, + 0, + 2, + 26, + 101, + 103, + 0, + 2, + 104, + 102, + 27, + 0, + 2, + 26, + 103, + 28, + 0, + 2, + 29, + 104, + 27, + 0, + 2, + 28, + 103, + 105, + 0, + 2, + 106, + 104, + 29, + 0, + 2, + 40, + 68, + 139, + 0, + 2, + 140, + 69, + 41, + 0, + 2, + 40, + 139, + 131, + 0, + 2, + 132, + 140, + 41, + 0, + 2, + 129, + 145, + 137, + 0, + 2, + 138, + 146, + 130, + 0, + 2, + 129, + 143, + 145, + 0, + 2, + 146, + 144, + 130, + 0, + 2, + 137, + 37, + 133, + 0, + 2, + 134, + 38, + 138, + 0, + 2, + 137, + 145, + 37, + 0, + 2, + 38, + 146, + 138, + 0, + 2, + 129, + 135, + 141, + 0, + 2, + 142, + 136, + 130, + 0, + 2, + 129, + 141, + 143, + 0, + 2, + 144, + 142, + 130, + 0, + 2, + 135, + 131, + 139, + 0, + 2, + 140, + 132, + 136, + 0, + 2, + 135, + 139, + 141, + 0, + 2, + 142, + 140, + 136, + 0 + ] } diff --git a/src/client/components/localisation/darwin_robot/head/config/camera.json b/src/client/components/localisation/darwin_robot/head/config/camera.json index 6ffd8205..381254cc 100644 --- a/src/client/components/localisation/darwin_robot/head/config/camera.json +++ b/src/client/components/localisation/darwin_robot/head/config/camera.json @@ -1,139 +1,139 @@ { - "metadata": { - "formatVersion": 3 - }, - "materials": [ - { - "DbgColor": 15658734, - "DbgIndex": 0, - "DbgName": "CameraMaterial", - "colorDiffuse": [ - 0, - 0, - 0 - ], - "colorSpecular": [ - 0.401201, - 0.401201, - 0.401201 - ], - "shading": "Lambert", - "specularCoef": 50, - "opacity": 1.0, - "vertexColors": false - } - ], - "normals": [], - "colors": [], - "uvs": [], - "vertices": [ - 0.0012902, - 0.0006454, - -0.0016242, - 0.0012902, - -0.0018532, - -0.0009796, - -0.0012902, - -0.0018532, - -0.0009796, - -0.0012902, - 0.0006454, - -0.0016242, - 0.0030927, - 0.0010956, - 0.0001212, - 0.0030927, - -0.001403, - 0.0007657, - 0.0012902, - -0.0031483, - 0.001216, - -0.0012901, - -0.0031484, - 0.001216, - -0.0030927, - -0.001403, - 0.0007657, - -0.0030927, - 0.0010956, - 0.0001212, - 0.0012902, - 0.002841, - -0.0003291, - -0.0012902, - 0.002841, - -0.0003291 - ], - "faces": [ - 2, - 0, - 10, - 4, - 0, - 2, - 1, - 5, - 6, - 0, - 2, - 2, - 7, - 8, - 0, - 2, - 3, - 9, - 11, - 0, - 2, - 9, - 3, - 2, - 0, - 2, - 9, - 2, - 8, - 0, - 2, - 10, - 0, - 3, - 0, - 2, - 10, - 3, - 11, - 0, - 2, - 7, - 2, - 1, - 0, - 2, - 7, - 1, - 6, - 0, - 2, - 0, - 4, - 5, - 0, - 2, - 0, - 5, - 1, - 0, - 2, - 0, - 1, - 2, - 0, - 2, - 0, - 2, - 3, - 0 - ] + "metadata": { + "formatVersion": 3 + }, + "materials": [ + { + "DbgColor": 15658734, + "DbgIndex": 0, + "DbgName": "CameraMaterial", + "colorDiffuse": [ + 0, + 0, + 0 + ], + "colorSpecular": [ + 0.401201, + 0.401201, + 0.401201 + ], + "shading": "Lambert", + "specularCoef": 50, + "opacity": 1.0, + "vertexColors": false + } + ], + "normals": [], + "colors": [], + "uvs": [], + "vertices": [ + 0.0012902, + 0.0006454, + -0.0016242, + 0.0012902, + -0.0018532, + -0.0009796, + -0.0012902, + -0.0018532, + -0.0009796, + -0.0012902, + 0.0006454, + -0.0016242, + 0.0030927, + 0.0010956, + 0.0001212, + 0.0030927, + -0.001403, + 0.0007657, + 0.0012902, + -0.0031483, + 0.001216, + -0.0012901, + -0.0031484, + 0.001216, + -0.0030927, + -0.001403, + 0.0007657, + -0.0030927, + 0.0010956, + 0.0001212, + 0.0012902, + 0.002841, + -0.0003291, + -0.0012902, + 0.002841, + -0.0003291 + ], + "faces": [ + 2, + 0, + 10, + 4, + 0, + 2, + 1, + 5, + 6, + 0, + 2, + 2, + 7, + 8, + 0, + 2, + 3, + 9, + 11, + 0, + 2, + 9, + 3, + 2, + 0, + 2, + 9, + 2, + 8, + 0, + 2, + 10, + 0, + 3, + 0, + 2, + 10, + 3, + 11, + 0, + 2, + 7, + 2, + 1, + 0, + 2, + 7, + 1, + 6, + 0, + 2, + 0, + 4, + 5, + 0, + 2, + 0, + 5, + 1, + 0, + 2, + 0, + 1, + 2, + 0, + 2, + 0, + 2, + 3, + 0 + ] } diff --git a/src/client/components/localisation/darwin_robot/head/config/eye_led.json b/src/client/components/localisation/darwin_robot/head/config/eye_led.json index 7d18a671..d28d6ef4 100644 --- a/src/client/components/localisation/darwin_robot/head/config/eye_led.json +++ b/src/client/components/localisation/darwin_robot/head/config/eye_led.json @@ -1,545 +1,545 @@ { - "metadata": { - "formatVersion": 3 - }, - "materials": [ - { - "DbgColor": 15658734, - "DbgIndex": 0, - "DbgName": "LEDMaterial", - "colorDiffuse": [ - 0.7, - 0.7, - 0.7 - ], - "colorSpecular": [ - 0.401201, - 0.401201, - 0.401201 - ], - "shading": "Lambert", - "specularCoef": 50, - "opacity": 1.0, - "vertexColors": false - } - ], - "normals": [], - "colors": [], - "uvs": [], - "vertices": [ - 0.0116412, - 0.0265999, - 0.0366955, - -0.0116412, - 0.0265999, - 0.0366955, - 0.0152554, - 0.0218632, - 0.0363648, - -0.0152554, - 0.0218632, - 0.0363648, - 0.0201309, - 0.0187384, - 0.0349243, - -0.0201309, - 0.0187384, - 0.0349243, - 0.0255253, - 0.0177015, - 0.0325931, - -0.0255253, - 0.0177015, - 0.0325931, - 0.0306174, - 0.0189101, - 0.0297263, - -0.0306174, - 0.0189101, - 0.0297263, - 0.034632, - 0.0221804, - 0.0267603, - -0.034632, - 0.0221804, - 0.0267603, - 0.0369579, - 0.0270145, - 0.0241466, - -0.0369579, - 0.0270145, - 0.0241466, - 0.037241, - 0.0326763, - 0.0222832, - -0.037241, - 0.0326763, - 0.0222832, - 0.0354382, - 0.038304, - 0.0214537, - -0.0354382, - 0.038304, - 0.0214537, - 0.0318239, - 0.0430408, - 0.0217844, - -0.0318239, - 0.0430408, - 0.0217844, - 0.0269485, - 0.0461655, - 0.023225, - -0.0269485, - 0.0461655, - 0.023225, - 0.0215541, - 0.0472024, - 0.0255561, - -0.0215541, - 0.0472024, - 0.0255561, - 0.016462, - 0.0459938, - 0.0284229, - -0.016462, - 0.0459938, - 0.0284229, - 0.0124474, - 0.0427235, - 0.0313889, - -0.0124474, - 0.0427235, - 0.0313889, - 0.0101215, - 0.0378894, - 0.0340026, - -0.0101215, - 0.0378894, - 0.0340026, - 0.0098384, - 0.0322276, - 0.035866, - -0.0098384, - 0.0322276, - 0.035866, - 0.0174415, - 0.0294527, - 0.0329804, - -0.0174415, - 0.0294527, - 0.0329804, - 0.0192939, - 0.0270251, - 0.032811, - -0.0192939, - 0.0270251, - 0.032811, - 0.0217926, - 0.0254236, - 0.0320726, - -0.0217926, - 0.0254236, - 0.0320726, - 0.0245573, - 0.0248921, - 0.0308779, - -0.0245573, - 0.0248921, - 0.0308779, - 0.0271671, - 0.0255116, - 0.0294086, - -0.0271671, - 0.0255116, - 0.0294086, - 0.0292247, - 0.0271877, - 0.0278885, - -0.0292247, - 0.0271877, - 0.0278885, - 0.0304167, - 0.0296652, - 0.026549, - -0.0304167, - 0.0296652, - 0.026549, - 0.0305618, - 0.0325669, - 0.0255939, - -0.0305618, - 0.0325669, - 0.0255939, - 0.0296378, - 0.0354512, - 0.0251688, - -0.0296378, - 0.0354512, - 0.0251688, - 0.0277855, - 0.0378789, - 0.0253383, - -0.0277855, - 0.0378789, - 0.0253383, - 0.0252868, - 0.0394803, - 0.0260766, - -0.0252868, - 0.0394803, - 0.0260766, - 0.022522, - 0.0400118, - 0.0272713, - -0.022522, - 0.0400118, - 0.0272713, - 0.0199123, - 0.0393923, - 0.0287406, - -0.0199123, - 0.0393923, - 0.0287406, - 0.0178547, - 0.0377163, - 0.0302607, - -0.0178547, - 0.0377163, - 0.0302607, - 0.0166627, - 0.0352387, - 0.0316003, - -0.0166627, - 0.0352387, - 0.0316003, - 0.0165176, - 0.032337, - 0.0325553, - -0.0165176, - 0.032337, - 0.0325553 - ], - "faces": [ - 2, - 0, - 32, - 62, - 0, - 2, - 63, - 33, - 1, - 0, - 2, - 0, - 62, - 30, - 0, - 2, - 31, - 63, - 1, - 0, - 2, - 0, - 2, - 34, - 0, - 2, - 35, - 3, - 1, - 0, - 2, - 0, - 34, - 32, - 0, - 2, - 33, - 35, - 1, - 0, - 2, - 2, - 4, - 36, - 0, - 2, - 37, - 5, - 3, - 0, - 2, - 2, - 36, - 34, - 0, - 2, - 35, - 37, - 3, - 0, - 2, - 6, - 8, - 40, - 0, - 2, - 41, - 9, - 7, - 0, - 2, - 6, - 40, - 38, - 0, - 2, - 39, - 41, - 7, - 0, - 2, - 8, - 10, - 42, - 0, - 2, - 43, - 11, - 9, - 0, - 2, - 8, - 42, - 40, - 0, - 2, - 41, - 43, - 9, - 0, - 2, - 10, - 12, - 44, - 0, - 2, - 45, - 13, - 11, - 0, - 2, - 10, - 44, - 42, - 0, - 2, - 43, - 45, - 11, - 0, - 2, - 14, - 16, - 48, - 0, - 2, - 49, - 17, - 15, - 0, - 2, - 14, - 48, - 46, - 0, - 2, - 47, - 49, - 15, - 0, - 2, - 16, - 18, - 50, - 0, - 2, - 51, - 19, - 17, - 0, - 2, - 16, - 50, - 48, - 0, - 2, - 49, - 51, - 17, - 0, - 2, - 18, - 20, - 52, - 0, - 2, - 53, - 21, - 19, - 0, - 2, - 18, - 52, - 50, - 0, - 2, - 51, - 53, - 19, - 0, - 2, - 22, - 24, - 56, - 0, - 2, - 57, - 25, - 23, - 0, - 2, - 22, - 56, - 54, - 0, - 2, - 55, - 57, - 23, - 0, - 2, - 24, - 26, - 58, - 0, - 2, - 59, - 27, - 25, - 0, - 2, - 24, - 58, - 56, - 0, - 2, - 57, - 59, - 25, - 0, - 2, - 26, - 28, - 60, - 0, - 2, - 61, - 29, - 27, - 0, - 2, - 26, - 60, - 58, - 0, - 2, - 59, - 61, - 27, - 0, - 2, - 28, - 30, - 62, - 0, - 2, - 63, - 31, - 29, - 0, - 2, - 28, - 62, - 60, - 0, - 2, - 61, - 63, - 29, - 0, - 2, - 4, - 6, - 38, - 0, - 2, - 39, - 7, - 5, - 0, - 2, - 4, - 38, - 36, - 0, - 2, - 37, - 39, - 5, - 0, - 2, - 12, - 14, - 46, - 0, - 2, - 47, - 15, - 13, - 0, - 2, - 12, - 46, - 44, - 0, - 2, - 45, - 47, - 13, - 0, - 2, - 20, - 22, - 54, - 0, - 2, - 55, - 23, - 21, - 0, - 2, - 20, - 54, - 52, - 0, - 2, - 53, - 55, - 21, - 0 - ] + "metadata": { + "formatVersion": 3 + }, + "materials": [ + { + "DbgColor": 15658734, + "DbgIndex": 0, + "DbgName": "LEDMaterial", + "colorDiffuse": [ + 0.7, + 0.7, + 0.7 + ], + "colorSpecular": [ + 0.401201, + 0.401201, + 0.401201 + ], + "shading": "Lambert", + "specularCoef": 50, + "opacity": 1.0, + "vertexColors": false + } + ], + "normals": [], + "colors": [], + "uvs": [], + "vertices": [ + 0.0116412, + 0.0265999, + 0.0366955, + -0.0116412, + 0.0265999, + 0.0366955, + 0.0152554, + 0.0218632, + 0.0363648, + -0.0152554, + 0.0218632, + 0.0363648, + 0.0201309, + 0.0187384, + 0.0349243, + -0.0201309, + 0.0187384, + 0.0349243, + 0.0255253, + 0.0177015, + 0.0325931, + -0.0255253, + 0.0177015, + 0.0325931, + 0.0306174, + 0.0189101, + 0.0297263, + -0.0306174, + 0.0189101, + 0.0297263, + 0.034632, + 0.0221804, + 0.0267603, + -0.034632, + 0.0221804, + 0.0267603, + 0.0369579, + 0.0270145, + 0.0241466, + -0.0369579, + 0.0270145, + 0.0241466, + 0.037241, + 0.0326763, + 0.0222832, + -0.037241, + 0.0326763, + 0.0222832, + 0.0354382, + 0.038304, + 0.0214537, + -0.0354382, + 0.038304, + 0.0214537, + 0.0318239, + 0.0430408, + 0.0217844, + -0.0318239, + 0.0430408, + 0.0217844, + 0.0269485, + 0.0461655, + 0.023225, + -0.0269485, + 0.0461655, + 0.023225, + 0.0215541, + 0.0472024, + 0.0255561, + -0.0215541, + 0.0472024, + 0.0255561, + 0.016462, + 0.0459938, + 0.0284229, + -0.016462, + 0.0459938, + 0.0284229, + 0.0124474, + 0.0427235, + 0.0313889, + -0.0124474, + 0.0427235, + 0.0313889, + 0.0101215, + 0.0378894, + 0.0340026, + -0.0101215, + 0.0378894, + 0.0340026, + 0.0098384, + 0.0322276, + 0.035866, + -0.0098384, + 0.0322276, + 0.035866, + 0.0174415, + 0.0294527, + 0.0329804, + -0.0174415, + 0.0294527, + 0.0329804, + 0.0192939, + 0.0270251, + 0.032811, + -0.0192939, + 0.0270251, + 0.032811, + 0.0217926, + 0.0254236, + 0.0320726, + -0.0217926, + 0.0254236, + 0.0320726, + 0.0245573, + 0.0248921, + 0.0308779, + -0.0245573, + 0.0248921, + 0.0308779, + 0.0271671, + 0.0255116, + 0.0294086, + -0.0271671, + 0.0255116, + 0.0294086, + 0.0292247, + 0.0271877, + 0.0278885, + -0.0292247, + 0.0271877, + 0.0278885, + 0.0304167, + 0.0296652, + 0.026549, + -0.0304167, + 0.0296652, + 0.026549, + 0.0305618, + 0.0325669, + 0.0255939, + -0.0305618, + 0.0325669, + 0.0255939, + 0.0296378, + 0.0354512, + 0.0251688, + -0.0296378, + 0.0354512, + 0.0251688, + 0.0277855, + 0.0378789, + 0.0253383, + -0.0277855, + 0.0378789, + 0.0253383, + 0.0252868, + 0.0394803, + 0.0260766, + -0.0252868, + 0.0394803, + 0.0260766, + 0.022522, + 0.0400118, + 0.0272713, + -0.022522, + 0.0400118, + 0.0272713, + 0.0199123, + 0.0393923, + 0.0287406, + -0.0199123, + 0.0393923, + 0.0287406, + 0.0178547, + 0.0377163, + 0.0302607, + -0.0178547, + 0.0377163, + 0.0302607, + 0.0166627, + 0.0352387, + 0.0316003, + -0.0166627, + 0.0352387, + 0.0316003, + 0.0165176, + 0.032337, + 0.0325553, + -0.0165176, + 0.032337, + 0.0325553 + ], + "faces": [ + 2, + 0, + 32, + 62, + 0, + 2, + 63, + 33, + 1, + 0, + 2, + 0, + 62, + 30, + 0, + 2, + 31, + 63, + 1, + 0, + 2, + 0, + 2, + 34, + 0, + 2, + 35, + 3, + 1, + 0, + 2, + 0, + 34, + 32, + 0, + 2, + 33, + 35, + 1, + 0, + 2, + 2, + 4, + 36, + 0, + 2, + 37, + 5, + 3, + 0, + 2, + 2, + 36, + 34, + 0, + 2, + 35, + 37, + 3, + 0, + 2, + 6, + 8, + 40, + 0, + 2, + 41, + 9, + 7, + 0, + 2, + 6, + 40, + 38, + 0, + 2, + 39, + 41, + 7, + 0, + 2, + 8, + 10, + 42, + 0, + 2, + 43, + 11, + 9, + 0, + 2, + 8, + 42, + 40, + 0, + 2, + 41, + 43, + 9, + 0, + 2, + 10, + 12, + 44, + 0, + 2, + 45, + 13, + 11, + 0, + 2, + 10, + 44, + 42, + 0, + 2, + 43, + 45, + 11, + 0, + 2, + 14, + 16, + 48, + 0, + 2, + 49, + 17, + 15, + 0, + 2, + 14, + 48, + 46, + 0, + 2, + 47, + 49, + 15, + 0, + 2, + 16, + 18, + 50, + 0, + 2, + 51, + 19, + 17, + 0, + 2, + 16, + 50, + 48, + 0, + 2, + 49, + 51, + 17, + 0, + 2, + 18, + 20, + 52, + 0, + 2, + 53, + 21, + 19, + 0, + 2, + 18, + 52, + 50, + 0, + 2, + 51, + 53, + 19, + 0, + 2, + 22, + 24, + 56, + 0, + 2, + 57, + 25, + 23, + 0, + 2, + 22, + 56, + 54, + 0, + 2, + 55, + 57, + 23, + 0, + 2, + 24, + 26, + 58, + 0, + 2, + 59, + 27, + 25, + 0, + 2, + 24, + 58, + 56, + 0, + 2, + 57, + 59, + 25, + 0, + 2, + 26, + 28, + 60, + 0, + 2, + 61, + 29, + 27, + 0, + 2, + 26, + 60, + 58, + 0, + 2, + 59, + 61, + 27, + 0, + 2, + 28, + 30, + 62, + 0, + 2, + 63, + 31, + 29, + 0, + 2, + 28, + 62, + 60, + 0, + 2, + 61, + 63, + 29, + 0, + 2, + 4, + 6, + 38, + 0, + 2, + 39, + 7, + 5, + 0, + 2, + 4, + 38, + 36, + 0, + 2, + 37, + 39, + 5, + 0, + 2, + 12, + 14, + 46, + 0, + 2, + 47, + 15, + 13, + 0, + 2, + 12, + 46, + 44, + 0, + 2, + 45, + 47, + 13, + 0, + 2, + 20, + 22, + 54, + 0, + 2, + 55, + 23, + 21, + 0, + 2, + 20, + 54, + 52, + 0, + 2, + 53, + 55, + 21, + 0 + ] } diff --git a/src/client/components/localisation/darwin_robot/head/config/head.json b/src/client/components/localisation/darwin_robot/head/config/head.json index a6b44ac0..c49eb455 100644 --- a/src/client/components/localisation/darwin_robot/head/config/head.json +++ b/src/client/components/localisation/darwin_robot/head/config/head.json @@ -1,2610 +1,2610 @@ { - "metadata": { - "formatVersion": 1 - }, - "materials": [ - { - "DbgColor": 15658734, - "DbgIndex": 0, - "DbgName": "Plastic", - "colorDiffuse": [ - 0.301961, - 0.301961, - 0.301961 - ], - "colorSpecular": [ - 0.401201, - 0.401201, - 0.401201 - ], - "shading": "Lambert", - "specularCoef": 50, - "opacity": 1.0, - "vertexColors": false - }, - { - "DbgColor": 15658734, - "DbgIndex": 1, - "DbgName": "EyeMaterial", - "colorDiffuse": [ - 0.14, - 0.14, - 0.14 - ], - "colorSpecular": [ - 0.401201, - 0.401201, - 0.401201 - ], - "shading": "Lambert", - "specularCoef": 50, - "opacity": 1.0, - "vertexColors": false - } - ], - "normals": [], - "colors": [], - "uvs": [], - "vertices": [ - 0.0392305, - 0.0221018, - -0.0570645, - -0.0392305, - 0.0221018, - -0.0570645, - 0.0405922, - 0.0152099, - -0.0401748, - -0.0405922, - 0.0152099, - -0.0401748, - 0.0411355, - 0.0081425, - -0.0334363, - -0.0411355, - 0.0081425, - -0.0334363, - 0.0416294, - -0.0007687, - -0.0273103, - -0.0416294, - -0.0007687, - -0.0273103, - 0.0424073, - -0.0072215, - -0.0176621, - -0.0424073, - -0.0072215, - -0.0176621, - 0.0433401, - -0.0086732, - -0.0060919, - -0.0433401, - -0.0086732, - -0.0060919, - 0.044197, - -0.0061456, - 0.0045363, - -0.044197, - -0.0061456, - 0.0045363, - 0.0449545, - 0.0006532, - 0.0139317, - -0.0449545, - 0.0006532, - 0.0139317, - 0.0452514, - 0.0108622, - 0.0176143, - -0.0452514, - 0.0108622, - 0.0176143, - 0.0452514, - 0.0212564, - 0.0176141, - -0.0452514, - 0.0212564, - 0.0176141, - 0.0449057, - 0.0300627, - 0.0137528, - -0.0449057, - 0.0300627, - 0.0137528, - 0.0442507, - 0.0353979, - 0.0052024, - -0.0442507, - 0.0353979, - 0.0052024, - 0.0433849, - 0.0381032, - -0.0055372, - -0.0433849, - 0.0381032, - -0.0055372, - 0.038476, - 0.0363362, - -0.0664233, - -0.038476, - 0.0363362, - -0.0664233, - 0.0116412, - 0.0265999, - 0.0366955, - -0.0116412, - 0.0265999, - 0.0366955, - 0.0152554, - 0.0218632, - 0.0363648, - -0.0152554, - 0.0218632, - 0.0363648, - 0.0201309, - 0.0187384, - 0.0349243, - -0.0201309, - 0.0187384, - 0.0349243, - 0.0255253, - 0.0177015, - 0.0325931, - -0.0255253, - 0.0177015, - 0.0325931, - 0.0306174, - 0.0189101, - 0.0297263, - -0.0306174, - 0.0189101, - 0.0297263, - 0.034632, - 0.0221804, - 0.0267603, - -0.034632, - 0.0221804, - 0.0267603, - 0.0369579, - 0.0270145, - 0.0241466, - -0.0369579, - 0.0270145, - 0.0241466, - 0.037241, - 0.0326763, - 0.0222832, - -0.037241, - 0.0326763, - 0.0222832, - 0.0354382, - 0.038304, - 0.0214537, - -0.0354382, - 0.038304, - 0.0214537, - 0.0318239, - 0.0430408, - 0.0217844, - -0.0318239, - 0.0430408, - 0.0217844, - 0.0269485, - 0.0461655, - 0.023225, - -0.0269485, - 0.0461655, - 0.023225, - 0.0215541, - 0.0472024, - 0.0255561, - -0.0215541, - 0.0472024, - 0.0255561, - 0.016462, - 0.0459938, - 0.0284229, - -0.016462, - 0.0459938, - 0.0284229, - 0.0124474, - 0.0427235, - 0.0313889, - -0.0124474, - 0.0427235, - 0.0313889, - 0.0101215, - 0.0378894, - 0.0340026, - -0.0101215, - 0.0378894, - 0.0340026, - 0.0098384, - 0.0322276, - 0.035866, - -0.0098384, - 0.0322276, - 0.035866, - 0.0174415, - 0.0294527, - 0.0329804, - -0.0174415, - 0.0294527, - 0.0329804, - 0.0192939, - 0.0270251, - 0.032811, - -0.0192939, - 0.0270251, - 0.032811, - 0.0217926, - 0.0254236, - 0.0320726, - -0.0217926, - 0.0254236, - 0.0320726, - 0.0245573, - 0.0248921, - 0.0308779, - -0.0245573, - 0.0248921, - 0.0308779, - 0.0271671, - 0.0255116, - 0.0294086, - -0.0271671, - 0.0255116, - 0.0294086, - 0.0292247, - 0.0271877, - 0.0278885, - -0.0292247, - 0.0271877, - 0.0278885, - 0.0304167, - 0.0296652, - 0.026549, - -0.0304167, - 0.0296652, - 0.026549, - 0.0305618, - 0.0325669, - 0.0255939, - -0.0305618, - 0.0325669, - 0.0255939, - 0.0296378, - 0.0354512, - 0.0251688, - -0.0296378, - 0.0354512, - 0.0251688, - 0.0277855, - 0.0378789, - 0.0253383, - -0.0277855, - 0.0378789, - 0.0253383, - 0.0252868, - 0.0394803, - 0.0260766, - -0.0252868, - 0.0394803, - 0.0260766, - 0.022522, - 0.0400118, - 0.0272713, - -0.022522, - 0.0400118, - 0.0272713, - 0.0199123, - 0.0393923, - 0.0287406, - -0.0199123, - 0.0393923, - 0.0287406, - 0.0178547, - 0.0377163, - 0.0302607, - -0.0178547, - 0.0377163, - 0.0302607, - 0.0166627, - 0.0352387, - 0.0316003, - -0.0166627, - 0.0352387, - 0.0316003, - 0.0165176, - 0.032337, - 0.0325553, - -0.0165176, - 0.032337, - 0.0325553, - 0.0235397, - 0.032452, - 0.0290746, - -0.0235397, - 0.032452, - 0.0290746, - 0.0195178, - 0.0464315, - -0.0795508, - -0.0195178, - 0.0464315, - -0.0795508, - 0.0225675, - 0.0325759, - -0.07354, - -0.0225675, - 0.0325759, - -0.07354, - 0.0195174, - 0.016289, - -0.0574006, - -0.0195174, - 0.016289, - -0.0574006, - 0.0186086, - 0.0055227, - -0.0552789, - -0.0186086, - 0.0055227, - -0.0552789, - 0.0184255, - -0.0009917, - -0.051584, - -0.0184255, - -0.0009917, - -0.051584, - 0.0186973, - -0.0121609, - -0.0394498, - -0.0186973, - -0.0121609, - -0.0394498, - 0.0207908, - -0.0194756, - -0.0266185, - -0.0207908, - -0.0194756, - -0.0266185, - 0.0185759, - -0.0211818, - -0.014516, - -0.0185759, - -0.0211818, - -0.014516, - 0.0186379, - -0.0196935, - -0.001655, - -0.0186379, - -0.0196935, - -0.001655, - 0.0187539, - -0.0135358, - 0.0128219, - -0.0187539, - -0.0135358, - 0.0128219, - 0.018584, - -0.0050813, - 0.024037, - -0.018584, - -0.0050813, - 0.024037, - 0.0164893, - 0.0066883, - 0.0349741, - -0.0164893, - 0.0066883, - 0.0349741, - 0.0165623, - 0.0155422, - 0.0362219, - -0.0165623, - 0.0155422, - 0.0362219, - 0.0170276, - 0.0499737, - 0.0249869, - -0.0170276, - 0.0499737, - 0.0249869, - 0.01726, - 0.0553882, - 0.0150497, - -0.01726, - 0.0553882, - 0.0150497, - 0.0120454, - 0.0605195, - 0.0046781, - -0.0120454, - 0.0605195, - 0.0046781, - 0.0181589, - 0.0602533, - -0.0062721, - -0.0181589, - 0.0602533, - -0.0062721, - 0.0195168, - 0.060201, - -0.0189165, - -0.0195168, - 0.060201, - -0.0189165, - 0.0195174, - 0.0540533, - -0.0540891, - -0.0195174, - 0.0540533, - -0.0540891, - 0, - -0.0138808, - -0.0402319, - 0, - -0.0213466, - -0.0278119, - 0, - -0.0227678, - -0.0144287, - 0, - -0.022019, - -1.81e-05, - 0, - -0.0156556, - 0.0154359, - 0, - -0.0061624, - 0.0265574, - 0, - 0.0074755, - 0.0378864, - 0, - 0.0175306, - 0.0379284, - 0, - 0.032467, - 0.0361502, - 0, - 0.0381629, - 0.0344413, - 0, - 0.045242, - 0.0309423, - 0, - 0.0488546, - 0.0285779, - 0, - 0.057406, - 0.0180599, - 0, - 0.0609716, - 0.0107532, - 0, - 0.060921, - -0.0062633, - 0, - 0.0608675, - -0.0189168, - 0, - 0.051912, - -0.0393596, - 0, - 0.0386829, - -0.0524273, - 0.0195171, - 0.0508041, - -0.0384949, - -0.0195171, - 0.0508041, - -0.0384949, - 0.0195173, - 0.0380376, - -0.0514338, - -0.0195173, - 0.0380376, - -0.0514338, - 0, - 0.0161334, - -0.0593111, - 0, - 0.004431, - -0.0571641, - 0, - -0.0022158, - -0.0534247, - 0.0291343, - 0.0417313, - -0.0729934, - -0.0291343, - 0.0417313, - -0.0729934, - 0.0304317, - 0.0350942, - -0.0702807, - -0.0304317, - 0.0350942, - -0.0702807, - 0.0297588, - 0.0190742, - -0.0580713, - -0.0297588, - 0.0190742, - -0.0580713, - 0.031687, - 0.0160369, - -0.0526305, - -0.031687, - 0.0160369, - -0.0526305, - 0.0309837, - 0.0092284, - -0.0486846, - -0.0309837, - 0.0092284, - -0.0486846, - 0.030947, - 0.0028528, - -0.0442747, - -0.030947, - 0.0028528, - -0.0442747, - 0.0313671, - -0.0070052, - -0.0342981, - -0.0313671, - -0.0070052, - -0.0342981, - 0.0327293, - -0.0142829, - -0.0243646, - -0.0327293, - -0.0142829, - -0.0243646, - 0.0320906, - -0.0174994, - -0.0152496, - -0.0320906, - -0.0174994, - -0.0152496, - 0.0334606, - -0.0171215, - -0.0025047, - -0.0334606, - -0.0171215, - -0.0025047, - 0.0348758, - -0.0119176, - 0.010511, - -0.0348758, - -0.0119176, - 0.010511, - 0.0352073, - -0.0039472, - 0.0212155, - -0.0352073, - -0.0039472, - 0.0212155, - 0.0303691, - 0.0014046, - 0.0276174, - -0.0303691, - 0.0014046, - 0.0276174, - 0.0331355, - 0.0159014, - 0.0280857, - -0.0331355, - 0.0159014, - 0.0280857, - 0.033055, - 0.0441668, - 0.018925, - -0.033055, - 0.0441668, - 0.018925, - 0.0272452, - 0.0520301, - 0.0117203, - -0.0272452, - 0.0520301, - 0.0117203, - 0.0274988, - 0.054967, - 0.0026082, - -0.0274988, - 0.054967, - 0.0026082, - 0.0273044, - 0.0556295, - -0.0065691, - -0.0273044, - 0.0556295, - -0.0065691, - 0.0276693, - 0.0543365, - -0.0244786, - -0.0276693, - 0.0543365, - -0.0244786, - 0.0323266, - 0.0444186, - -0.0491837, - -0.0323266, - 0.0444186, - -0.0491837, - 0.0417486, - 0.0375142, - -0.0258325, - -0.0417486, - 0.0375142, - -0.0258325, - 0.0401123, - 0.0369252, - -0.0461279, - -0.0401123, - 0.0369252, - -0.0461279, - 0.0070464, - 0.0573781, - 0.01728, - -0.0070464, - 0.0573781, - 0.01728, - 0.0083894, - 0.0559858, - 0.019199, - -0.0083894, - 0.0559858, - 0.019199, - 0.008978, - 0.0540208, - 0.0218855, - -0.008978, - 0.0540208, - 0.0218855, - 0.0049843, - 0.051013, - 0.0258813, - -0.0049843, - 0.051013, - 0.0258813, - 0.0381348, - 0.039614, - 0.0149968, - -0.0381348, - 0.039614, - 0.0149968, - 0.0374798, - 0.0437726, - 0.0079673, - -0.0374798, - 0.0437726, - 0.0079673, - 0.0368872, - 0.0477009, - -0.0022339, - -0.0368872, - 0.0477009, - -0.0022339, - 0.0349777, - 0.0463099, - -0.0278206, - -0.0349777, - 0.0463099, - -0.0278206, - 0, - 0.0572104, - -0.0285718, - 0, - 0.0462024, - -0.0462686, - 0.0195172, - 0.0456088, - -0.0455197, - -0.0195172, - 0.0456088, - -0.0455197, - 0.0195174, - 0.0280225, - -0.056562, - -0.0195174, - 0.0280225, - -0.056562, - 0, - 0.0286387, - -0.0571265, - 0.0195169, - 0.0566908, - -0.0283183, - -0.0195169, - 0.0566908, - -0.0283183 - ], - "faces": [ - 2, - 18, - 16, - 14, - 0, - 2, - 15, - 17, - 19, - 0, - 2, - 20, - 18, - 14, - 0, - 2, - 15, - 19, - 21, - 0, - 2, - 20, - 14, - 12, - 0, - 2, - 13, - 15, - 21, - 0, - 2, - 22, - 20, - 12, - 0, - 2, - 13, - 21, - 23, - 0, - 2, - 24, - 22, - 12, - 0, - 2, - 13, - 23, - 25, - 0, - 2, - 24, - 12, - 10, - 0, - 2, - 11, - 13, - 25, - 0, - 2, - 197, - 24, - 10, - 0, - 2, - 11, - 25, - 198, - 0, - 2, - 197, - 10, - 8, - 0, - 2, - 9, - 11, - 198, - 0, - 2, - 197, - 8, - 6, - 0, - 2, - 7, - 9, - 198, - 0, - 2, - 199, - 197, - 6, - 0, - 2, - 7, - 198, - 200, - 0, - 2, - 199, - 6, - 4, - 0, - 2, - 5, - 7, - 200, - 0, - 2, - 199, - 4, - 2, - 0, - 2, - 3, - 5, - 200, - 0, - 2, - 187, - 48, - 185, - 0, - 2, - 186, - 49, - 188, - 0, - 2, - 122, - 48, - 187, - 0, - 2, - 188, - 49, - 123, - 0, - 2, - 124, - 122, - 187, - 0, - 2, - 188, - 123, - 125, - 0, - 2, - 124, - 187, - 189, - 0, - 2, - 190, - 188, - 125, - 0, - 2, - 126, - 124, - 189, - 0, - 2, - 190, - 125, - 127, - 0, - 2, - 126, - 189, - 191, - 0, - 2, - 192, - 190, - 127, - 0, - 2, - 126, - 191, - 193, - 0, - 2, - 194, - 192, - 127, - 0, - 2, - 128, - 126, - 193, - 0, - 2, - 194, - 127, - 129, - 0, - 2, - 130, - 128, - 193, - 0, - 2, - 194, - 129, - 131, - 0, - 2, - 130, - 193, - 195, - 0, - 2, - 196, - 194, - 131, - 0, - 2, - 116, - 138, - 137, - 0, - 2, - 137, - 138, - 117, - 0, - 2, - 34, - 118, - 116, - 0, - 2, - 117, - 119, - 35, - 0, - 2, - 114, - 116, - 137, - 0, - 2, - 137, - 117, - 115, - 0, - 2, - 181, - 116, - 114, - 0, - 2, - 115, - 117, - 182, - 0, - 2, - 34, - 116, - 181, - 0, - 2, - 182, - 117, - 35, - 0, - 2, - 183, - 34, - 181, - 0, - 2, - 182, - 35, - 184, - 0, - 2, - 179, - 181, - 114, - 0, - 2, - 115, - 182, - 180, - 0, - 2, - 16, - 181, - 179, - 0, - 2, - 180, - 182, - 17, - 0, - 2, - 114, - 137, - 136, - 0, - 2, - 136, - 137, - 115, - 0, - 2, - 112, - 114, - 136, - 0, - 2, - 136, - 115, - 113, - 0, - 2, - 179, - 114, - 112, - 0, - 2, - 113, - 115, - 180, - 0, - 2, - 177, - 179, - 112, - 0, - 2, - 113, - 180, - 178, - 0, - 2, - 14, - 179, - 177, - 0, - 2, - 178, - 180, - 15, - 0, - 2, - 16, - 179, - 14, - 0, - 2, - 15, - 180, - 17, - 0, - 2, - 112, - 136, - 135, - 0, - 2, - 135, - 136, - 113, - 0, - 2, - 110, - 112, - 135, - 0, - 2, - 135, - 113, - 111, - 0, - 2, - 177, - 112, - 110, - 0, - 2, - 111, - 113, - 178, - 0, - 2, - 12, - 14, - 177, - 0, - 2, - 178, - 15, - 13, - 0, - 2, - 175, - 177, - 110, - 0, - 2, - 111, - 178, - 176, - 0, - 2, - 12, - 177, - 175, - 0, - 2, - 176, - 178, - 13, - 0, - 2, - 10, - 12, - 175, - 0, - 2, - 176, - 13, - 11, - 0, - 2, - 110, - 135, - 134, - 0, - 2, - 134, - 135, - 111, - 0, - 2, - 108, - 110, - 134, - 0, - 2, - 134, - 111, - 109, - 0, - 2, - 175, - 110, - 108, - 0, - 2, - 109, - 111, - 176, - 0, - 2, - 173, - 175, - 108, - 0, - 2, - 109, - 176, - 174, - 0, - 2, - 10, - 175, - 173, - 0, - 2, - 174, - 176, - 11, - 0, - 2, - 8, - 10, - 173, - 0, - 2, - 174, - 11, - 9, - 0, - 2, - 108, - 134, - 133, - 0, - 2, - 133, - 134, - 109, - 0, - 2, - 106, - 108, - 133, - 0, - 2, - 133, - 109, - 107, - 0, - 2, - 173, - 108, - 106, - 0, - 2, - 107, - 109, - 174, - 0, - 2, - 171, - 173, - 106, - 0, - 2, - 107, - 174, - 172, - 0, - 2, - 8, - 173, - 171, - 0, - 2, - 172, - 174, - 9, - 0, - 2, - 6, - 8, - 171, - 0, - 2, - 172, - 9, - 7, - 0, - 2, - 169, - 171, - 106, - 0, - 2, - 107, - 172, - 170, - 0, - 2, - 6, - 171, - 169, - 0, - 2, - 170, - 172, - 7, - 0, - 2, - 104, - 106, - 133, - 0, - 2, - 133, - 107, - 105, - 0, - 2, - 169, - 106, - 104, - 0, - 2, - 105, - 107, - 170, - 0, - 2, - 4, - 6, - 169, - 0, - 2, - 170, - 7, - 5, - 0, - 2, - 104, - 133, - 132, - 0, - 2, - 132, - 133, - 105, - 0, - 2, - 167, - 4, - 169, - 0, - 2, - 170, - 5, - 168, - 0, - 2, - 167, - 169, - 104, - 0, - 2, - 105, - 170, - 168, - 0, - 2, - 102, - 104, - 132, - 0, - 2, - 132, - 105, - 103, - 0, - 2, - 167, - 104, - 102, - 0, - 2, - 103, - 105, - 168, - 0, - 2, - 102, - 132, - 156, - 0, - 2, - 156, - 132, - 103, - 0, - 2, - 165, - 167, - 102, - 0, - 2, - 103, - 168, - 166, - 0, - 2, - 100, - 165, - 102, - 0, - 2, - 103, - 166, - 101, - 0, - 2, - 118, - 30, - 139, - 0, - 2, - 139, - 31, - 119, - 0, - 2, - 32, - 30, - 118, - 0, - 2, - 119, - 31, - 33, - 0, - 2, - 118, - 139, - 138, - 0, - 2, - 138, - 139, - 119, - 0, - 2, - 116, - 118, - 138, - 0, - 2, - 138, - 119, - 117, - 0, - 2, - 32, - 118, - 34, - 0, - 2, - 35, - 119, - 33, - 0, - 2, - 34, - 183, - 36, - 0, - 2, - 37, - 184, - 35, - 0, - 2, - 36, - 183, - 38, - 0, - 2, - 39, - 184, - 37, - 0, - 2, - 18, - 38, - 183, - 0, - 2, - 184, - 39, - 19, - 0, - 2, - 18, - 40, - 38, - 0, - 2, - 39, - 41, - 19, - 0, - 2, - 44, - 185, - 46, - 0, - 2, - 47, - 186, - 45, - 0, - 2, - 46, - 185, - 48, - 0, - 2, - 49, - 186, - 47, - 0, - 2, - 28, - 139, - 30, - 0, - 2, - 31, - 139, - 29, - 0, - 2, - 140, - 139, - 28, - 0, - 2, - 29, - 139, - 140, - 0, - 2, - 140, - 28, - 58, - 0, - 2, - 59, - 29, - 140, - 0, - 2, - 141, - 140, - 58, - 0, - 2, - 59, - 140, - 141, - 0, - 2, - 141, - 58, - 56, - 0, - 2, - 57, - 59, - 141, - 0, - 2, - 142, - 141, - 56, - 0, - 2, - 57, - 141, - 142, - 0, - 2, - 142, - 56, - 54, - 0, - 2, - 55, - 57, - 142, - 0, - 2, - 143, - 54, - 52, - 0, - 2, - 53, - 55, - 143, - 0, - 2, - 142, - 54, - 143, - 0, - 2, - 143, - 55, - 142, - 0, - 2, - 52, - 120, - 143, - 0, - 2, - 143, - 121, - 53, - 0, - 2, - 50, - 120, - 52, - 0, - 2, - 53, - 121, - 51, - 0, - 2, - 48, - 122, - 120, - 0, - 2, - 121, - 123, - 49, - 0, - 2, - 50, - 48, - 120, - 0, - 2, - 121, - 49, - 51, - 0, - 2, - 122, - 205, - 120, - 0, - 2, - 121, - 206, - 123, - 0, - 2, - 122, - 203, - 205, - 0, - 2, - 206, - 204, - 123, - 0, - 2, - 122, - 201, - 203, - 0, - 2, - 204, - 202, - 123, - 0, - 2, - 124, - 146, - 145, - 0, - 2, - 145, - 146, - 125, - 0, - 2, - 126, - 146, - 124, - 0, - 2, - 125, - 146, - 127, - 0, - 2, - 128, - 146, - 126, - 0, - 2, - 127, - 146, - 129, - 0, - 2, - 128, - 147, - 146, - 0, - 2, - 146, - 147, - 129, - 0, - 2, - 201, - 145, - 144, - 0, - 2, - 144, - 145, - 202, - 0, - 2, - 122, - 145, - 201, - 0, - 2, - 202, - 145, - 123, - 0, - 2, - 124, - 145, - 122, - 0, - 2, - 123, - 145, - 125, - 0, - 2, - 100, - 154, - 98, - 0, - 2, - 99, - 154, - 101, - 0, - 2, - 100, - 155, - 154, - 0, - 2, - 154, - 155, - 101, - 0, - 2, - 102, - 155, - 100, - 0, - 2, - 101, - 155, - 103, - 0, - 2, - 102, - 156, - 155, - 0, - 2, - 155, - 156, - 103, - 0, - 2, - 163, - 2, - 165, - 0, - 2, - 166, - 3, - 164, - 0, - 2, - 0, - 2, - 163, - 0, - 2, - 164, - 3, - 1, - 0, - 2, - 195, - 199, - 26, - 0, - 2, - 27, - 200, - 196, - 0, - 2, - 157, - 195, - 26, - 0, - 2, - 27, - 196, - 158, - 0, - 2, - 130, - 195, - 157, - 0, - 2, - 158, - 196, - 131, - 0, - 2, - 161, - 163, - 98, - 0, - 2, - 99, - 164, - 162, - 0, - 2, - 0, - 163, - 161, - 0, - 2, - 162, - 164, - 1, - 0, - 2, - 94, - 130, - 157, - 0, - 2, - 158, - 131, - 95, - 0, - 2, - 161, - 98, - 96, - 0, - 2, - 97, - 99, - 162, - 0, - 2, - 26, - 0, - 161, - 0, - 2, - 162, - 1, - 27, - 0, - 2, - 159, - 161, - 96, - 0, - 2, - 97, - 162, - 160, - 0, - 2, - 26, - 161, - 159, - 0, - 2, - 160, - 162, - 27, - 0, - 2, - 157, - 26, - 159, - 0, - 2, - 160, - 27, - 158, - 0, - 2, - 157, - 159, - 96, - 0, - 2, - 97, - 160, - 158, - 0, - 2, - 94, - 157, - 96, - 0, - 2, - 97, - 158, - 95, - 0, - 2, - 2, - 4, - 167, - 0, - 2, - 168, - 5, - 3, - 0, - 2, - 165, - 2, - 167, - 0, - 2, - 168, - 3, - 166, - 0, - 2, - 94, - 96, - 98, - 0, - 2, - 99, - 97, - 95, - 0, - 2, - 0, - 26, - 199, - 0, - 2, - 200, - 27, - 1, - 0, - 2, - 0, - 199, - 2, - 0, - 2, - 3, - 200, - 1, - 0, - 2, - 120, - 205, - 207, - 0, - 2, - 208, - 206, - 121, - 0, - 2, - 120, - 207, - 143, - 0, - 2, - 143, - 208, - 121, - 0, - 2, - 16, - 18, - 183, - 0, - 2, - 184, - 19, - 17, - 0, - 2, - 16, - 183, - 181, - 0, - 2, - 182, - 184, - 17, - 0, - 2, - 44, - 209, - 185, - 0, - 2, - 186, - 210, - 45, - 0, - 2, - 189, - 213, - 191, - 0, - 2, - 192, - 214, - 190, - 0, - 2, - 193, - 215, - 195, - 0, - 2, - 196, - 216, - 194, - 0, - 2, - 130, - 224, - 128, - 0, - 2, - 129, - 225, - 131, - 0, - 2, - 130, - 150, - 224, - 0, - 2, - 225, - 151, - 131, - 0, - 2, - 130, - 219, - 150, - 0, - 2, - 151, - 220, - 131, - 0, - 2, - 130, - 152, - 219, - 0, - 2, - 220, - 153, - 131, - 0, - 2, - 94, - 98, - 221, - 0, - 2, - 222, - 99, - 95, - 0, - 2, - 152, - 94, - 221, - 0, - 2, - 222, - 95, - 153, - 0, - 2, - 152, - 130, - 94, - 0, - 2, - 95, - 131, - 153, - 0, - 2, - 221, - 98, - 154, - 0, - 2, - 154, - 99, - 222, - 0, - 2, - 221, - 154, - 223, - 0, - 2, - 223, - 154, - 222, - 0, - 2, - 152, - 221, - 223, - 0, - 2, - 223, - 222, - 153, - 0, - 2, - 152, - 223, - 149, - 0, - 2, - 149, - 223, - 153, - 0, - 2, - 219, - 152, - 218, - 0, - 2, - 218, - 153, - 220, - 0, - 2, - 152, - 149, - 218, - 0, - 2, - 218, - 149, - 153, - 0, - 2, - 150, - 219, - 148, - 0, - 2, - 148, - 220, - 151, - 0, - 2, - 219, - 218, - 148, - 0, - 2, - 148, - 218, - 220, - 0, - 2, - 224, - 150, - 217, - 0, - 2, - 217, - 151, - 225, - 0, - 2, - 150, - 148, - 217, - 0, - 2, - 217, - 148, - 151, - 0, - 2, - 128, - 224, - 217, - 0, - 2, - 217, - 225, - 129, - 0, - 2, - 128, - 217, - 147, - 0, - 2, - 147, - 217, - 129, - 0, - 2, - 197, - 199, - 215, - 0, - 2, - 216, - 200, - 198, - 0, - 2, - 199, - 195, - 215, - 0, - 2, - 216, - 196, - 200, - 0, - 2, - 191, - 213, - 215, - 0, - 2, - 216, - 214, - 192, - 0, - 2, - 191, - 215, - 193, - 0, - 2, - 194, - 216, - 192, - 0, - 2, - 187, - 211, - 189, - 0, - 2, - 190, - 212, - 188, - 0, - 2, - 211, - 213, - 189, - 0, - 2, - 190, - 214, - 212, - 0, - 2, - 185, - 209, - 211, - 0, - 2, - 212, - 210, - 186, - 0, - 2, - 185, - 211, - 187, - 0, - 2, - 188, - 212, - 186, - 0, - 2, - 20, - 209, - 42, - 0, - 2, - 43, - 210, - 21, - 0, - 2, - 209, - 44, - 42, - 0, - 2, - 43, - 45, - 210, - 0, - 2, - 18, - 20, - 40, - 0, - 2, - 41, - 21, - 19, - 0, - 2, - 20, - 42, - 40, - 0, - 2, - 41, - 43, - 21, - 0, - 2, - 24, - 197, - 215, - 0, - 2, - 216, - 198, - 25, - 0, - 2, - 24, - 215, - 213, - 0, - 2, - 214, - 216, - 25, - 0, - 2, - 22, - 24, - 211, - 0, - 2, - 212, - 25, - 23, - 0, - 2, - 24, - 213, - 211, - 0, - 2, - 212, - 214, - 25, - 0, - 2, - 20, - 22, - 209, - 0, - 2, - 210, - 23, - 21, - 0, - 2, - 22, - 211, - 209, - 0, - 2, - 210, - 212, - 23, - 0, - 2, - 98, - 163, - 165, - 0, - 2, - 166, - 164, - 99, - 0, - 2, - 98, - 165, - 100, - 0, - 2, - 101, - 166, - 99, - 0, - 2, - 62, - 92, - 60, - 1, - 2, - 61, - 93, - 63, - 1, - 2, - 64, - 92, - 62, - 1, - 2, - 63, - 93, - 65, - 1, - 2, - 66, - 92, - 64, - 1, - 2, - 65, - 93, - 67, - 1, - 2, - 68, - 92, - 66, - 1, - 2, - 67, - 93, - 69, - 1, - 2, - 70, - 92, - 68, - 1, - 2, - 69, - 93, - 71, - 1, - 2, - 72, - 92, - 70, - 1, - 2, - 71, - 93, - 73, - 1, - 2, - 74, - 92, - 72, - 1, - 2, - 73, - 93, - 75, - 1, - 2, - 76, - 92, - 74, - 1, - 2, - 75, - 93, - 77, - 1, - 2, - 78, - 92, - 76, - 1, - 2, - 77, - 93, - 79, - 1, - 2, - 80, - 92, - 78, - 1, - 2, - 79, - 93, - 81, - 1, - 2, - 82, - 92, - 80, - 1, - 2, - 81, - 93, - 83, - 1, - 2, - 84, - 92, - 82, - 1, - 2, - 83, - 93, - 85, - 1, - 2, - 86, - 92, - 84, - 1, - 2, - 85, - 93, - 87, - 1, - 2, - 88, - 92, - 86, - 1, - 2, - 87, - 93, - 89, - 1, - 2, - 90, - 92, - 88, - 1, - 2, - 89, - 93, - 91, - 1, - 2, - 60, - 92, - 90, - 1, - 2, - 91, - 93, - 61, - 1 - ] + "metadata": { + "formatVersion": 1 + }, + "materials": [ + { + "DbgColor": 15658734, + "DbgIndex": 0, + "DbgName": "Plastic", + "colorDiffuse": [ + 0.301961, + 0.301961, + 0.301961 + ], + "colorSpecular": [ + 0.401201, + 0.401201, + 0.401201 + ], + "shading": "Lambert", + "specularCoef": 50, + "opacity": 1.0, + "vertexColors": false + }, + { + "DbgColor": 15658734, + "DbgIndex": 1, + "DbgName": "EyeMaterial", + "colorDiffuse": [ + 0.14, + 0.14, + 0.14 + ], + "colorSpecular": [ + 0.401201, + 0.401201, + 0.401201 + ], + "shading": "Lambert", + "specularCoef": 50, + "opacity": 1.0, + "vertexColors": false + } + ], + "normals": [], + "colors": [], + "uvs": [], + "vertices": [ + 0.0392305, + 0.0221018, + -0.0570645, + -0.0392305, + 0.0221018, + -0.0570645, + 0.0405922, + 0.0152099, + -0.0401748, + -0.0405922, + 0.0152099, + -0.0401748, + 0.0411355, + 0.0081425, + -0.0334363, + -0.0411355, + 0.0081425, + -0.0334363, + 0.0416294, + -0.0007687, + -0.0273103, + -0.0416294, + -0.0007687, + -0.0273103, + 0.0424073, + -0.0072215, + -0.0176621, + -0.0424073, + -0.0072215, + -0.0176621, + 0.0433401, + -0.0086732, + -0.0060919, + -0.0433401, + -0.0086732, + -0.0060919, + 0.044197, + -0.0061456, + 0.0045363, + -0.044197, + -0.0061456, + 0.0045363, + 0.0449545, + 0.0006532, + 0.0139317, + -0.0449545, + 0.0006532, + 0.0139317, + 0.0452514, + 0.0108622, + 0.0176143, + -0.0452514, + 0.0108622, + 0.0176143, + 0.0452514, + 0.0212564, + 0.0176141, + -0.0452514, + 0.0212564, + 0.0176141, + 0.0449057, + 0.0300627, + 0.0137528, + -0.0449057, + 0.0300627, + 0.0137528, + 0.0442507, + 0.0353979, + 0.0052024, + -0.0442507, + 0.0353979, + 0.0052024, + 0.0433849, + 0.0381032, + -0.0055372, + -0.0433849, + 0.0381032, + -0.0055372, + 0.038476, + 0.0363362, + -0.0664233, + -0.038476, + 0.0363362, + -0.0664233, + 0.0116412, + 0.0265999, + 0.0366955, + -0.0116412, + 0.0265999, + 0.0366955, + 0.0152554, + 0.0218632, + 0.0363648, + -0.0152554, + 0.0218632, + 0.0363648, + 0.0201309, + 0.0187384, + 0.0349243, + -0.0201309, + 0.0187384, + 0.0349243, + 0.0255253, + 0.0177015, + 0.0325931, + -0.0255253, + 0.0177015, + 0.0325931, + 0.0306174, + 0.0189101, + 0.0297263, + -0.0306174, + 0.0189101, + 0.0297263, + 0.034632, + 0.0221804, + 0.0267603, + -0.034632, + 0.0221804, + 0.0267603, + 0.0369579, + 0.0270145, + 0.0241466, + -0.0369579, + 0.0270145, + 0.0241466, + 0.037241, + 0.0326763, + 0.0222832, + -0.037241, + 0.0326763, + 0.0222832, + 0.0354382, + 0.038304, + 0.0214537, + -0.0354382, + 0.038304, + 0.0214537, + 0.0318239, + 0.0430408, + 0.0217844, + -0.0318239, + 0.0430408, + 0.0217844, + 0.0269485, + 0.0461655, + 0.023225, + -0.0269485, + 0.0461655, + 0.023225, + 0.0215541, + 0.0472024, + 0.0255561, + -0.0215541, + 0.0472024, + 0.0255561, + 0.016462, + 0.0459938, + 0.0284229, + -0.016462, + 0.0459938, + 0.0284229, + 0.0124474, + 0.0427235, + 0.0313889, + -0.0124474, + 0.0427235, + 0.0313889, + 0.0101215, + 0.0378894, + 0.0340026, + -0.0101215, + 0.0378894, + 0.0340026, + 0.0098384, + 0.0322276, + 0.035866, + -0.0098384, + 0.0322276, + 0.035866, + 0.0174415, + 0.0294527, + 0.0329804, + -0.0174415, + 0.0294527, + 0.0329804, + 0.0192939, + 0.0270251, + 0.032811, + -0.0192939, + 0.0270251, + 0.032811, + 0.0217926, + 0.0254236, + 0.0320726, + -0.0217926, + 0.0254236, + 0.0320726, + 0.0245573, + 0.0248921, + 0.0308779, + -0.0245573, + 0.0248921, + 0.0308779, + 0.0271671, + 0.0255116, + 0.0294086, + -0.0271671, + 0.0255116, + 0.0294086, + 0.0292247, + 0.0271877, + 0.0278885, + -0.0292247, + 0.0271877, + 0.0278885, + 0.0304167, + 0.0296652, + 0.026549, + -0.0304167, + 0.0296652, + 0.026549, + 0.0305618, + 0.0325669, + 0.0255939, + -0.0305618, + 0.0325669, + 0.0255939, + 0.0296378, + 0.0354512, + 0.0251688, + -0.0296378, + 0.0354512, + 0.0251688, + 0.0277855, + 0.0378789, + 0.0253383, + -0.0277855, + 0.0378789, + 0.0253383, + 0.0252868, + 0.0394803, + 0.0260766, + -0.0252868, + 0.0394803, + 0.0260766, + 0.022522, + 0.0400118, + 0.0272713, + -0.022522, + 0.0400118, + 0.0272713, + 0.0199123, + 0.0393923, + 0.0287406, + -0.0199123, + 0.0393923, + 0.0287406, + 0.0178547, + 0.0377163, + 0.0302607, + -0.0178547, + 0.0377163, + 0.0302607, + 0.0166627, + 0.0352387, + 0.0316003, + -0.0166627, + 0.0352387, + 0.0316003, + 0.0165176, + 0.032337, + 0.0325553, + -0.0165176, + 0.032337, + 0.0325553, + 0.0235397, + 0.032452, + 0.0290746, + -0.0235397, + 0.032452, + 0.0290746, + 0.0195178, + 0.0464315, + -0.0795508, + -0.0195178, + 0.0464315, + -0.0795508, + 0.0225675, + 0.0325759, + -0.07354, + -0.0225675, + 0.0325759, + -0.07354, + 0.0195174, + 0.016289, + -0.0574006, + -0.0195174, + 0.016289, + -0.0574006, + 0.0186086, + 0.0055227, + -0.0552789, + -0.0186086, + 0.0055227, + -0.0552789, + 0.0184255, + -0.0009917, + -0.051584, + -0.0184255, + -0.0009917, + -0.051584, + 0.0186973, + -0.0121609, + -0.0394498, + -0.0186973, + -0.0121609, + -0.0394498, + 0.0207908, + -0.0194756, + -0.0266185, + -0.0207908, + -0.0194756, + -0.0266185, + 0.0185759, + -0.0211818, + -0.014516, + -0.0185759, + -0.0211818, + -0.014516, + 0.0186379, + -0.0196935, + -0.001655, + -0.0186379, + -0.0196935, + -0.001655, + 0.0187539, + -0.0135358, + 0.0128219, + -0.0187539, + -0.0135358, + 0.0128219, + 0.018584, + -0.0050813, + 0.024037, + -0.018584, + -0.0050813, + 0.024037, + 0.0164893, + 0.0066883, + 0.0349741, + -0.0164893, + 0.0066883, + 0.0349741, + 0.0165623, + 0.0155422, + 0.0362219, + -0.0165623, + 0.0155422, + 0.0362219, + 0.0170276, + 0.0499737, + 0.0249869, + -0.0170276, + 0.0499737, + 0.0249869, + 0.01726, + 0.0553882, + 0.0150497, + -0.01726, + 0.0553882, + 0.0150497, + 0.0120454, + 0.0605195, + 0.0046781, + -0.0120454, + 0.0605195, + 0.0046781, + 0.0181589, + 0.0602533, + -0.0062721, + -0.0181589, + 0.0602533, + -0.0062721, + 0.0195168, + 0.060201, + -0.0189165, + -0.0195168, + 0.060201, + -0.0189165, + 0.0195174, + 0.0540533, + -0.0540891, + -0.0195174, + 0.0540533, + -0.0540891, + 0, + -0.0138808, + -0.0402319, + 0, + -0.0213466, + -0.0278119, + 0, + -0.0227678, + -0.0144287, + 0, + -0.022019, + -1.81e-05, + 0, + -0.0156556, + 0.0154359, + 0, + -0.0061624, + 0.0265574, + 0, + 0.0074755, + 0.0378864, + 0, + 0.0175306, + 0.0379284, + 0, + 0.032467, + 0.0361502, + 0, + 0.0381629, + 0.0344413, + 0, + 0.045242, + 0.0309423, + 0, + 0.0488546, + 0.0285779, + 0, + 0.057406, + 0.0180599, + 0, + 0.0609716, + 0.0107532, + 0, + 0.060921, + -0.0062633, + 0, + 0.0608675, + -0.0189168, + 0, + 0.051912, + -0.0393596, + 0, + 0.0386829, + -0.0524273, + 0.0195171, + 0.0508041, + -0.0384949, + -0.0195171, + 0.0508041, + -0.0384949, + 0.0195173, + 0.0380376, + -0.0514338, + -0.0195173, + 0.0380376, + -0.0514338, + 0, + 0.0161334, + -0.0593111, + 0, + 0.004431, + -0.0571641, + 0, + -0.0022158, + -0.0534247, + 0.0291343, + 0.0417313, + -0.0729934, + -0.0291343, + 0.0417313, + -0.0729934, + 0.0304317, + 0.0350942, + -0.0702807, + -0.0304317, + 0.0350942, + -0.0702807, + 0.0297588, + 0.0190742, + -0.0580713, + -0.0297588, + 0.0190742, + -0.0580713, + 0.031687, + 0.0160369, + -0.0526305, + -0.031687, + 0.0160369, + -0.0526305, + 0.0309837, + 0.0092284, + -0.0486846, + -0.0309837, + 0.0092284, + -0.0486846, + 0.030947, + 0.0028528, + -0.0442747, + -0.030947, + 0.0028528, + -0.0442747, + 0.0313671, + -0.0070052, + -0.0342981, + -0.0313671, + -0.0070052, + -0.0342981, + 0.0327293, + -0.0142829, + -0.0243646, + -0.0327293, + -0.0142829, + -0.0243646, + 0.0320906, + -0.0174994, + -0.0152496, + -0.0320906, + -0.0174994, + -0.0152496, + 0.0334606, + -0.0171215, + -0.0025047, + -0.0334606, + -0.0171215, + -0.0025047, + 0.0348758, + -0.0119176, + 0.010511, + -0.0348758, + -0.0119176, + 0.010511, + 0.0352073, + -0.0039472, + 0.0212155, + -0.0352073, + -0.0039472, + 0.0212155, + 0.0303691, + 0.0014046, + 0.0276174, + -0.0303691, + 0.0014046, + 0.0276174, + 0.0331355, + 0.0159014, + 0.0280857, + -0.0331355, + 0.0159014, + 0.0280857, + 0.033055, + 0.0441668, + 0.018925, + -0.033055, + 0.0441668, + 0.018925, + 0.0272452, + 0.0520301, + 0.0117203, + -0.0272452, + 0.0520301, + 0.0117203, + 0.0274988, + 0.054967, + 0.0026082, + -0.0274988, + 0.054967, + 0.0026082, + 0.0273044, + 0.0556295, + -0.0065691, + -0.0273044, + 0.0556295, + -0.0065691, + 0.0276693, + 0.0543365, + -0.0244786, + -0.0276693, + 0.0543365, + -0.0244786, + 0.0323266, + 0.0444186, + -0.0491837, + -0.0323266, + 0.0444186, + -0.0491837, + 0.0417486, + 0.0375142, + -0.0258325, + -0.0417486, + 0.0375142, + -0.0258325, + 0.0401123, + 0.0369252, + -0.0461279, + -0.0401123, + 0.0369252, + -0.0461279, + 0.0070464, + 0.0573781, + 0.01728, + -0.0070464, + 0.0573781, + 0.01728, + 0.0083894, + 0.0559858, + 0.019199, + -0.0083894, + 0.0559858, + 0.019199, + 0.008978, + 0.0540208, + 0.0218855, + -0.008978, + 0.0540208, + 0.0218855, + 0.0049843, + 0.051013, + 0.0258813, + -0.0049843, + 0.051013, + 0.0258813, + 0.0381348, + 0.039614, + 0.0149968, + -0.0381348, + 0.039614, + 0.0149968, + 0.0374798, + 0.0437726, + 0.0079673, + -0.0374798, + 0.0437726, + 0.0079673, + 0.0368872, + 0.0477009, + -0.0022339, + -0.0368872, + 0.0477009, + -0.0022339, + 0.0349777, + 0.0463099, + -0.0278206, + -0.0349777, + 0.0463099, + -0.0278206, + 0, + 0.0572104, + -0.0285718, + 0, + 0.0462024, + -0.0462686, + 0.0195172, + 0.0456088, + -0.0455197, + -0.0195172, + 0.0456088, + -0.0455197, + 0.0195174, + 0.0280225, + -0.056562, + -0.0195174, + 0.0280225, + -0.056562, + 0, + 0.0286387, + -0.0571265, + 0.0195169, + 0.0566908, + -0.0283183, + -0.0195169, + 0.0566908, + -0.0283183 + ], + "faces": [ + 2, + 18, + 16, + 14, + 0, + 2, + 15, + 17, + 19, + 0, + 2, + 20, + 18, + 14, + 0, + 2, + 15, + 19, + 21, + 0, + 2, + 20, + 14, + 12, + 0, + 2, + 13, + 15, + 21, + 0, + 2, + 22, + 20, + 12, + 0, + 2, + 13, + 21, + 23, + 0, + 2, + 24, + 22, + 12, + 0, + 2, + 13, + 23, + 25, + 0, + 2, + 24, + 12, + 10, + 0, + 2, + 11, + 13, + 25, + 0, + 2, + 197, + 24, + 10, + 0, + 2, + 11, + 25, + 198, + 0, + 2, + 197, + 10, + 8, + 0, + 2, + 9, + 11, + 198, + 0, + 2, + 197, + 8, + 6, + 0, + 2, + 7, + 9, + 198, + 0, + 2, + 199, + 197, + 6, + 0, + 2, + 7, + 198, + 200, + 0, + 2, + 199, + 6, + 4, + 0, + 2, + 5, + 7, + 200, + 0, + 2, + 199, + 4, + 2, + 0, + 2, + 3, + 5, + 200, + 0, + 2, + 187, + 48, + 185, + 0, + 2, + 186, + 49, + 188, + 0, + 2, + 122, + 48, + 187, + 0, + 2, + 188, + 49, + 123, + 0, + 2, + 124, + 122, + 187, + 0, + 2, + 188, + 123, + 125, + 0, + 2, + 124, + 187, + 189, + 0, + 2, + 190, + 188, + 125, + 0, + 2, + 126, + 124, + 189, + 0, + 2, + 190, + 125, + 127, + 0, + 2, + 126, + 189, + 191, + 0, + 2, + 192, + 190, + 127, + 0, + 2, + 126, + 191, + 193, + 0, + 2, + 194, + 192, + 127, + 0, + 2, + 128, + 126, + 193, + 0, + 2, + 194, + 127, + 129, + 0, + 2, + 130, + 128, + 193, + 0, + 2, + 194, + 129, + 131, + 0, + 2, + 130, + 193, + 195, + 0, + 2, + 196, + 194, + 131, + 0, + 2, + 116, + 138, + 137, + 0, + 2, + 137, + 138, + 117, + 0, + 2, + 34, + 118, + 116, + 0, + 2, + 117, + 119, + 35, + 0, + 2, + 114, + 116, + 137, + 0, + 2, + 137, + 117, + 115, + 0, + 2, + 181, + 116, + 114, + 0, + 2, + 115, + 117, + 182, + 0, + 2, + 34, + 116, + 181, + 0, + 2, + 182, + 117, + 35, + 0, + 2, + 183, + 34, + 181, + 0, + 2, + 182, + 35, + 184, + 0, + 2, + 179, + 181, + 114, + 0, + 2, + 115, + 182, + 180, + 0, + 2, + 16, + 181, + 179, + 0, + 2, + 180, + 182, + 17, + 0, + 2, + 114, + 137, + 136, + 0, + 2, + 136, + 137, + 115, + 0, + 2, + 112, + 114, + 136, + 0, + 2, + 136, + 115, + 113, + 0, + 2, + 179, + 114, + 112, + 0, + 2, + 113, + 115, + 180, + 0, + 2, + 177, + 179, + 112, + 0, + 2, + 113, + 180, + 178, + 0, + 2, + 14, + 179, + 177, + 0, + 2, + 178, + 180, + 15, + 0, + 2, + 16, + 179, + 14, + 0, + 2, + 15, + 180, + 17, + 0, + 2, + 112, + 136, + 135, + 0, + 2, + 135, + 136, + 113, + 0, + 2, + 110, + 112, + 135, + 0, + 2, + 135, + 113, + 111, + 0, + 2, + 177, + 112, + 110, + 0, + 2, + 111, + 113, + 178, + 0, + 2, + 12, + 14, + 177, + 0, + 2, + 178, + 15, + 13, + 0, + 2, + 175, + 177, + 110, + 0, + 2, + 111, + 178, + 176, + 0, + 2, + 12, + 177, + 175, + 0, + 2, + 176, + 178, + 13, + 0, + 2, + 10, + 12, + 175, + 0, + 2, + 176, + 13, + 11, + 0, + 2, + 110, + 135, + 134, + 0, + 2, + 134, + 135, + 111, + 0, + 2, + 108, + 110, + 134, + 0, + 2, + 134, + 111, + 109, + 0, + 2, + 175, + 110, + 108, + 0, + 2, + 109, + 111, + 176, + 0, + 2, + 173, + 175, + 108, + 0, + 2, + 109, + 176, + 174, + 0, + 2, + 10, + 175, + 173, + 0, + 2, + 174, + 176, + 11, + 0, + 2, + 8, + 10, + 173, + 0, + 2, + 174, + 11, + 9, + 0, + 2, + 108, + 134, + 133, + 0, + 2, + 133, + 134, + 109, + 0, + 2, + 106, + 108, + 133, + 0, + 2, + 133, + 109, + 107, + 0, + 2, + 173, + 108, + 106, + 0, + 2, + 107, + 109, + 174, + 0, + 2, + 171, + 173, + 106, + 0, + 2, + 107, + 174, + 172, + 0, + 2, + 8, + 173, + 171, + 0, + 2, + 172, + 174, + 9, + 0, + 2, + 6, + 8, + 171, + 0, + 2, + 172, + 9, + 7, + 0, + 2, + 169, + 171, + 106, + 0, + 2, + 107, + 172, + 170, + 0, + 2, + 6, + 171, + 169, + 0, + 2, + 170, + 172, + 7, + 0, + 2, + 104, + 106, + 133, + 0, + 2, + 133, + 107, + 105, + 0, + 2, + 169, + 106, + 104, + 0, + 2, + 105, + 107, + 170, + 0, + 2, + 4, + 6, + 169, + 0, + 2, + 170, + 7, + 5, + 0, + 2, + 104, + 133, + 132, + 0, + 2, + 132, + 133, + 105, + 0, + 2, + 167, + 4, + 169, + 0, + 2, + 170, + 5, + 168, + 0, + 2, + 167, + 169, + 104, + 0, + 2, + 105, + 170, + 168, + 0, + 2, + 102, + 104, + 132, + 0, + 2, + 132, + 105, + 103, + 0, + 2, + 167, + 104, + 102, + 0, + 2, + 103, + 105, + 168, + 0, + 2, + 102, + 132, + 156, + 0, + 2, + 156, + 132, + 103, + 0, + 2, + 165, + 167, + 102, + 0, + 2, + 103, + 168, + 166, + 0, + 2, + 100, + 165, + 102, + 0, + 2, + 103, + 166, + 101, + 0, + 2, + 118, + 30, + 139, + 0, + 2, + 139, + 31, + 119, + 0, + 2, + 32, + 30, + 118, + 0, + 2, + 119, + 31, + 33, + 0, + 2, + 118, + 139, + 138, + 0, + 2, + 138, + 139, + 119, + 0, + 2, + 116, + 118, + 138, + 0, + 2, + 138, + 119, + 117, + 0, + 2, + 32, + 118, + 34, + 0, + 2, + 35, + 119, + 33, + 0, + 2, + 34, + 183, + 36, + 0, + 2, + 37, + 184, + 35, + 0, + 2, + 36, + 183, + 38, + 0, + 2, + 39, + 184, + 37, + 0, + 2, + 18, + 38, + 183, + 0, + 2, + 184, + 39, + 19, + 0, + 2, + 18, + 40, + 38, + 0, + 2, + 39, + 41, + 19, + 0, + 2, + 44, + 185, + 46, + 0, + 2, + 47, + 186, + 45, + 0, + 2, + 46, + 185, + 48, + 0, + 2, + 49, + 186, + 47, + 0, + 2, + 28, + 139, + 30, + 0, + 2, + 31, + 139, + 29, + 0, + 2, + 140, + 139, + 28, + 0, + 2, + 29, + 139, + 140, + 0, + 2, + 140, + 28, + 58, + 0, + 2, + 59, + 29, + 140, + 0, + 2, + 141, + 140, + 58, + 0, + 2, + 59, + 140, + 141, + 0, + 2, + 141, + 58, + 56, + 0, + 2, + 57, + 59, + 141, + 0, + 2, + 142, + 141, + 56, + 0, + 2, + 57, + 141, + 142, + 0, + 2, + 142, + 56, + 54, + 0, + 2, + 55, + 57, + 142, + 0, + 2, + 143, + 54, + 52, + 0, + 2, + 53, + 55, + 143, + 0, + 2, + 142, + 54, + 143, + 0, + 2, + 143, + 55, + 142, + 0, + 2, + 52, + 120, + 143, + 0, + 2, + 143, + 121, + 53, + 0, + 2, + 50, + 120, + 52, + 0, + 2, + 53, + 121, + 51, + 0, + 2, + 48, + 122, + 120, + 0, + 2, + 121, + 123, + 49, + 0, + 2, + 50, + 48, + 120, + 0, + 2, + 121, + 49, + 51, + 0, + 2, + 122, + 205, + 120, + 0, + 2, + 121, + 206, + 123, + 0, + 2, + 122, + 203, + 205, + 0, + 2, + 206, + 204, + 123, + 0, + 2, + 122, + 201, + 203, + 0, + 2, + 204, + 202, + 123, + 0, + 2, + 124, + 146, + 145, + 0, + 2, + 145, + 146, + 125, + 0, + 2, + 126, + 146, + 124, + 0, + 2, + 125, + 146, + 127, + 0, + 2, + 128, + 146, + 126, + 0, + 2, + 127, + 146, + 129, + 0, + 2, + 128, + 147, + 146, + 0, + 2, + 146, + 147, + 129, + 0, + 2, + 201, + 145, + 144, + 0, + 2, + 144, + 145, + 202, + 0, + 2, + 122, + 145, + 201, + 0, + 2, + 202, + 145, + 123, + 0, + 2, + 124, + 145, + 122, + 0, + 2, + 123, + 145, + 125, + 0, + 2, + 100, + 154, + 98, + 0, + 2, + 99, + 154, + 101, + 0, + 2, + 100, + 155, + 154, + 0, + 2, + 154, + 155, + 101, + 0, + 2, + 102, + 155, + 100, + 0, + 2, + 101, + 155, + 103, + 0, + 2, + 102, + 156, + 155, + 0, + 2, + 155, + 156, + 103, + 0, + 2, + 163, + 2, + 165, + 0, + 2, + 166, + 3, + 164, + 0, + 2, + 0, + 2, + 163, + 0, + 2, + 164, + 3, + 1, + 0, + 2, + 195, + 199, + 26, + 0, + 2, + 27, + 200, + 196, + 0, + 2, + 157, + 195, + 26, + 0, + 2, + 27, + 196, + 158, + 0, + 2, + 130, + 195, + 157, + 0, + 2, + 158, + 196, + 131, + 0, + 2, + 161, + 163, + 98, + 0, + 2, + 99, + 164, + 162, + 0, + 2, + 0, + 163, + 161, + 0, + 2, + 162, + 164, + 1, + 0, + 2, + 94, + 130, + 157, + 0, + 2, + 158, + 131, + 95, + 0, + 2, + 161, + 98, + 96, + 0, + 2, + 97, + 99, + 162, + 0, + 2, + 26, + 0, + 161, + 0, + 2, + 162, + 1, + 27, + 0, + 2, + 159, + 161, + 96, + 0, + 2, + 97, + 162, + 160, + 0, + 2, + 26, + 161, + 159, + 0, + 2, + 160, + 162, + 27, + 0, + 2, + 157, + 26, + 159, + 0, + 2, + 160, + 27, + 158, + 0, + 2, + 157, + 159, + 96, + 0, + 2, + 97, + 160, + 158, + 0, + 2, + 94, + 157, + 96, + 0, + 2, + 97, + 158, + 95, + 0, + 2, + 2, + 4, + 167, + 0, + 2, + 168, + 5, + 3, + 0, + 2, + 165, + 2, + 167, + 0, + 2, + 168, + 3, + 166, + 0, + 2, + 94, + 96, + 98, + 0, + 2, + 99, + 97, + 95, + 0, + 2, + 0, + 26, + 199, + 0, + 2, + 200, + 27, + 1, + 0, + 2, + 0, + 199, + 2, + 0, + 2, + 3, + 200, + 1, + 0, + 2, + 120, + 205, + 207, + 0, + 2, + 208, + 206, + 121, + 0, + 2, + 120, + 207, + 143, + 0, + 2, + 143, + 208, + 121, + 0, + 2, + 16, + 18, + 183, + 0, + 2, + 184, + 19, + 17, + 0, + 2, + 16, + 183, + 181, + 0, + 2, + 182, + 184, + 17, + 0, + 2, + 44, + 209, + 185, + 0, + 2, + 186, + 210, + 45, + 0, + 2, + 189, + 213, + 191, + 0, + 2, + 192, + 214, + 190, + 0, + 2, + 193, + 215, + 195, + 0, + 2, + 196, + 216, + 194, + 0, + 2, + 130, + 224, + 128, + 0, + 2, + 129, + 225, + 131, + 0, + 2, + 130, + 150, + 224, + 0, + 2, + 225, + 151, + 131, + 0, + 2, + 130, + 219, + 150, + 0, + 2, + 151, + 220, + 131, + 0, + 2, + 130, + 152, + 219, + 0, + 2, + 220, + 153, + 131, + 0, + 2, + 94, + 98, + 221, + 0, + 2, + 222, + 99, + 95, + 0, + 2, + 152, + 94, + 221, + 0, + 2, + 222, + 95, + 153, + 0, + 2, + 152, + 130, + 94, + 0, + 2, + 95, + 131, + 153, + 0, + 2, + 221, + 98, + 154, + 0, + 2, + 154, + 99, + 222, + 0, + 2, + 221, + 154, + 223, + 0, + 2, + 223, + 154, + 222, + 0, + 2, + 152, + 221, + 223, + 0, + 2, + 223, + 222, + 153, + 0, + 2, + 152, + 223, + 149, + 0, + 2, + 149, + 223, + 153, + 0, + 2, + 219, + 152, + 218, + 0, + 2, + 218, + 153, + 220, + 0, + 2, + 152, + 149, + 218, + 0, + 2, + 218, + 149, + 153, + 0, + 2, + 150, + 219, + 148, + 0, + 2, + 148, + 220, + 151, + 0, + 2, + 219, + 218, + 148, + 0, + 2, + 148, + 218, + 220, + 0, + 2, + 224, + 150, + 217, + 0, + 2, + 217, + 151, + 225, + 0, + 2, + 150, + 148, + 217, + 0, + 2, + 217, + 148, + 151, + 0, + 2, + 128, + 224, + 217, + 0, + 2, + 217, + 225, + 129, + 0, + 2, + 128, + 217, + 147, + 0, + 2, + 147, + 217, + 129, + 0, + 2, + 197, + 199, + 215, + 0, + 2, + 216, + 200, + 198, + 0, + 2, + 199, + 195, + 215, + 0, + 2, + 216, + 196, + 200, + 0, + 2, + 191, + 213, + 215, + 0, + 2, + 216, + 214, + 192, + 0, + 2, + 191, + 215, + 193, + 0, + 2, + 194, + 216, + 192, + 0, + 2, + 187, + 211, + 189, + 0, + 2, + 190, + 212, + 188, + 0, + 2, + 211, + 213, + 189, + 0, + 2, + 190, + 214, + 212, + 0, + 2, + 185, + 209, + 211, + 0, + 2, + 212, + 210, + 186, + 0, + 2, + 185, + 211, + 187, + 0, + 2, + 188, + 212, + 186, + 0, + 2, + 20, + 209, + 42, + 0, + 2, + 43, + 210, + 21, + 0, + 2, + 209, + 44, + 42, + 0, + 2, + 43, + 45, + 210, + 0, + 2, + 18, + 20, + 40, + 0, + 2, + 41, + 21, + 19, + 0, + 2, + 20, + 42, + 40, + 0, + 2, + 41, + 43, + 21, + 0, + 2, + 24, + 197, + 215, + 0, + 2, + 216, + 198, + 25, + 0, + 2, + 24, + 215, + 213, + 0, + 2, + 214, + 216, + 25, + 0, + 2, + 22, + 24, + 211, + 0, + 2, + 212, + 25, + 23, + 0, + 2, + 24, + 213, + 211, + 0, + 2, + 212, + 214, + 25, + 0, + 2, + 20, + 22, + 209, + 0, + 2, + 210, + 23, + 21, + 0, + 2, + 22, + 211, + 209, + 0, + 2, + 210, + 212, + 23, + 0, + 2, + 98, + 163, + 165, + 0, + 2, + 166, + 164, + 99, + 0, + 2, + 98, + 165, + 100, + 0, + 2, + 101, + 166, + 99, + 0, + 2, + 62, + 92, + 60, + 1, + 2, + 61, + 93, + 63, + 1, + 2, + 64, + 92, + 62, + 1, + 2, + 63, + 93, + 65, + 1, + 2, + 66, + 92, + 64, + 1, + 2, + 65, + 93, + 67, + 1, + 2, + 68, + 92, + 66, + 1, + 2, + 67, + 93, + 69, + 1, + 2, + 70, + 92, + 68, + 1, + 2, + 69, + 93, + 71, + 1, + 2, + 72, + 92, + 70, + 1, + 2, + 71, + 93, + 73, + 1, + 2, + 74, + 92, + 72, + 1, + 2, + 73, + 93, + 75, + 1, + 2, + 76, + 92, + 74, + 1, + 2, + 75, + 93, + 77, + 1, + 2, + 78, + 92, + 76, + 1, + 2, + 77, + 93, + 79, + 1, + 2, + 80, + 92, + 78, + 1, + 2, + 79, + 93, + 81, + 1, + 2, + 82, + 92, + 80, + 1, + 2, + 81, + 93, + 83, + 1, + 2, + 84, + 92, + 82, + 1, + 2, + 83, + 93, + 85, + 1, + 2, + 86, + 92, + 84, + 1, + 2, + 85, + 93, + 87, + 1, + 2, + 88, + 92, + 86, + 1, + 2, + 87, + 93, + 89, + 1, + 2, + 90, + 92, + 88, + 1, + 2, + 89, + 93, + 91, + 1, + 2, + 60, + 92, + 90, + 1, + 2, + 91, + 93, + 61, + 1 + ] } diff --git a/src/client/components/localisation/darwin_robot/head/config/head_led.json b/src/client/components/localisation/darwin_robot/head/config/head_led.json index fbe67559..8bcd8827 100644 --- a/src/client/components/localisation/darwin_robot/head/config/head_led.json +++ b/src/client/components/localisation/darwin_robot/head/config/head_led.json @@ -1,103 +1,103 @@ { - "metadata": { - "formatVersion": 3 - }, - "materials": [ - { - "DbgColor": 15658734, - "DbgIndex": 0, - "DbgName": "LEDMaterial", - "colorDiffuse": [ - 0.7, - 0.7, - 0.7 - ], - "colorSpecular": [ - 0.401201, - 0.401201, - 0.401201 - ], - "shading": "Lambert", - "specularCoef": 50, - "opacity": 1.0, - "vertexColors": false - } - ], - "normals": [], - "colors": [], - "uvs": [], - "vertices": [ - 0, - 0.0488546, - 0.0285779, - 0, - 0.057406, - 0.0180599, - 0.0070464, - 0.0573781, - 0.01728, - -0.0070464, - 0.0573781, - 0.01728, - 0.0083894, - 0.0559858, - 0.019199, - -0.0083894, - 0.0559858, - 0.019199, - 0.008978, - 0.0540208, - 0.0218855, - -0.008978, - 0.0540208, - 0.0218855, - 0.0049843, - 0.051013, - 0.0258813, - -0.0049843, - 0.051013, - 0.0258813 - ], - "faces": [ - 2, - 0, - 8, - 1, - 0, - 2, - 9, - 0, - 1, - 0, - 2, - 1, - 8, - 6, - 0, - 2, - 7, - 9, - 1, - 0, - 2, - 1, - 6, - 4, - 0, - 2, - 5, - 7, - 1, - 0, - 2, - 1, - 4, - 2, - 0, - 2, - 3, - 5, - 1, - 0 - ] + "metadata": { + "formatVersion": 3 + }, + "materials": [ + { + "DbgColor": 15658734, + "DbgIndex": 0, + "DbgName": "LEDMaterial", + "colorDiffuse": [ + 0.7, + 0.7, + 0.7 + ], + "colorSpecular": [ + 0.401201, + 0.401201, + 0.401201 + ], + "shading": "Lambert", + "specularCoef": 50, + "opacity": 1.0, + "vertexColors": false + } + ], + "normals": [], + "colors": [], + "uvs": [], + "vertices": [ + 0, + 0.0488546, + 0.0285779, + 0, + 0.057406, + 0.0180599, + 0.0070464, + 0.0573781, + 0.01728, + -0.0070464, + 0.0573781, + 0.01728, + 0.0083894, + 0.0559858, + 0.019199, + -0.0083894, + 0.0559858, + 0.019199, + 0.008978, + 0.0540208, + 0.0218855, + -0.008978, + 0.0540208, + 0.0218855, + 0.0049843, + 0.051013, + 0.0258813, + -0.0049843, + 0.051013, + 0.0258813 + ], + "faces": [ + 2, + 0, + 8, + 1, + 0, + 2, + 9, + 0, + 1, + 0, + 2, + 1, + 8, + 6, + 0, + 2, + 7, + 9, + 1, + 0, + 2, + 1, + 6, + 4, + 0, + 2, + 5, + 7, + 1, + 0, + 2, + 1, + 4, + 2, + 0, + 2, + 3, + 5, + 1, + 0 + ] } diff --git a/src/client/components/localisation/darwin_robot/head/config/neck.json b/src/client/components/localisation/darwin_robot/head/config/neck.json index 8d04b958..704def90 100644 --- a/src/client/components/localisation/darwin_robot/head/config/neck.json +++ b/src/client/components/localisation/darwin_robot/head/config/neck.json @@ -1,943 +1,943 @@ { - "metadata": { - "formatVersion": 3 - }, - "materials": [ - { - "DbgColor": 15658734, - "DbgIndex": 0, - "DbgName": "Metal", - "colorDiffuse": [ - 0.7, - 0.7, - 0.7 - ], - "colorSpecular": [ - 0.168737, - 0.168737, - 0.168737 - ], - "shading": "Lambert", - "specularCoef": 50, - "opacity": 1.0, - "vertexColors": false - } - ], - "normals": [], - "colors": [], - "uvs": [], - "vertices": [ - 0.0208742, - 0.0089758, - 0.0084754, - 0.0208741, - 0.0005642, - 0.0119739, - 0.0208742, - -0.0079164, - 0.0084754, - 0.0208744, - -0.0114149, - 2.93e-05, - 0.0208747, - -0.0079164, - -0.0084168, - 0.0208748, - 0.0005642, - -0.0119153, - 0.0208747, - 0.0089758, - -0.0084168, - 0.0208744, - 0.0124743, - 2.93e-05, - 0.0190454, - 0.0089758, - 0.0084754, - 0.0190453, - 0.0005642, - 0.0119739, - 0.0190454, - -0.0079164, - 0.0084754, - 0.0190457, - -0.0114149, - 2.93e-05, - 0.019046, - -0.0079164, - -0.0084169, - 0.0190461, - 0.0005642, - -0.0119153, - 0.019046, - 0.0089758, - -0.0084168, - 0.0190457, - 0.0124743, - 2.93e-05, - 0.0221934, - -0.0308684, - -0.0108051, - 0.0221927, - -0.0308684, - 0.011001, - 0.0208741, - -0.0294766, - 0.011001, - 0.0208748, - -0.0294766, - -0.0108052, - 0.0208748, - 0.0005642, - -0.0108052, - 0.0208741, - 0.0005642, - 0.011001, - 0.0221927, - 0.0005642, - 0.011001, - 0.0221934, - 0.0005642, - -0.0108051, - -0.0087984, - -0.0327532, - 2.38e-05, - -0.0062282, - -0.0327532, - -0.0061801, - -2.38e-05, - -0.0327532, - -0.0087497, - 0.0061804, - -0.0327532, - -0.0061797, - 0.0087501, - -0.0327532, - 2.44e-05, - 0.00618, - -0.0327532, - 0.0062283, - -2.44e-05, - -0.0327532, - 0.0087979, - -0.0062287, - -0.0327532, - 0.0062279, - -0.0087984, - -0.0308684, - 2.38e-05, - -0.0062282, - -0.0308684, - -0.0061801, - -2.38e-05, - -0.0308684, - -0.0087497, - 0.0061804, - -0.0308684, - -0.0061797, - 0.0087501, - -0.0308684, - 2.44e-05, - 0.00618, - -0.0308684, - 0.0062283, - -2.44e-05, - -0.0308684, - 0.0087979, - -0.0062287, - -0.0308684, - 0.0062279, - 0.0225672, - 0.0047428, - 2.94e-05, - 0.0225673, - 0.0035099, - -0.002947, - 0.0225674, - 0.0005528, - -0.0041799, - 0.0225673, - -0.0024429, - -0.002947, - 0.0225672, - -0.0036757, - 2.94e-05, - 0.0225671, - -0.0024429, - 0.0030058, - 0.0225671, - 0.0005528, - 0.0042386, - 0.0225671, - 0.0035099, - 0.0030058, - -0.0225672, - 0.0035099, - 0.003005, - -0.0225672, - 0.0005528, - 0.0042379, - -0.0225672, - -0.0024429, - 0.003005, - -0.0225672, - -0.0036757, - 2.86e-05, - -0.0225672, - -0.0024429, - -0.0029478, - -0.0225672, - 0.0005528, - -0.0041806, - -0.0225672, - 0.0035099, - -0.0029478, - -0.0225672, - 0.0047428, - 2.86e-05, - -0.0190457, - 0.0124743, - 2.86e-05, - -0.0190457, - 0.0089758, - -0.0084175, - -0.0190457, - 0.0005642, - -0.011916, - -0.0190457, - -0.0079164, - -0.0084175, - -0.0190457, - -0.0114149, - 2.86e-05, - -0.0190457, - -0.0079164, - 0.0084747, - -0.0190457, - 0.0005642, - 0.0119732, - -0.0190457, - 0.0089758, - 0.0084747, - -0.0208745, - 0.0124743, - 2.86e-05, - -0.0208744, - 0.0089758, - -0.0084175, - -0.0208744, - 0.0005642, - -0.011916, - -0.0208744, - -0.0079164, - -0.0084175, - -0.0208745, - -0.0114149, - 2.86e-05, - -0.0208745, - -0.0079164, - 0.0084747, - -0.0208745, - 0.0005642, - 0.0119732, - -0.0208745, - 0.0089758, - 0.0084747, - -0.022193, - 0.0005642, - -0.0108059, - -0.022193, - 0.0005642, - 0.0110002, - -0.0208745, - 0.0005642, - 0.0110002, - -0.0208744, - 0.0005642, - -0.0108059, - -0.0208744, - -0.0294766, - -0.0108059, - -0.0208745, - -0.0294766, - 0.0110002, - -0.022193, - -0.0308684, - 0.0110002, - -0.022193, - -0.0308684, - -0.0108059 - ], - "faces": [ - 2, - 2, - 3, - 4, - 0, - 2, - 1, - 2, - 4, - 0, - 2, - 1, - 4, - 5, - 0, - 2, - 0, - 1, - 5, - 0, - 2, - 0, - 5, - 6, - 0, - 2, - 0, - 6, - 7, - 0, - 2, - 10, - 12, - 11, - 0, - 2, - 10, - 13, - 12, - 0, - 2, - 9, - 13, - 10, - 0, - 2, - 8, - 13, - 9, - 0, - 2, - 8, - 14, - 13, - 0, - 2, - 15, - 14, - 8, - 0, - 2, - 24, - 25, - 31, - 0, - 2, - 31, - 25, - 26, - 0, - 2, - 31, - 26, - 30, - 0, - 2, - 30, - 26, - 29, - 0, - 2, - 29, - 26, - 27, - 0, - 2, - 29, - 27, - 28, - 0, - 2, - 41, - 40, - 47, - 0, - 2, - 41, - 47, - 42, - 0, - 2, - 42, - 47, - 46, - 0, - 2, - 42, - 46, - 45, - 0, - 2, - 42, - 45, - 43, - 0, - 2, - 43, - 45, - 44, - 0, - 2, - 39, - 31, - 30, - 0, - 2, - 39, - 30, - 38, - 0, - 2, - 38, - 30, - 29, - 0, - 2, - 38, - 29, - 37, - 0, - 2, - 37, - 29, - 28, - 0, - 2, - 37, - 28, - 36, - 0, - 2, - 36, - 28, - 27, - 0, - 2, - 36, - 27, - 35, - 0, - 2, - 35, - 27, - 26, - 0, - 2, - 35, - 26, - 34, - 0, - 2, - 34, - 26, - 25, - 0, - 2, - 34, - 25, - 33, - 0, - 2, - 33, - 25, - 24, - 0, - 2, - 33, - 24, - 32, - 0, - 2, - 31, - 39, - 32, - 0, - 2, - 31, - 32, - 24, - 0, - 2, - 19, - 21, - 20, - 0, - 2, - 19, - 18, - 21, - 0, - 2, - 23, - 21, - 22, - 0, - 2, - 23, - 20, - 21, - 0, - 2, - 16, - 22, - 17, - 0, - 2, - 16, - 23, - 22, - 0, - 2, - 17, - 22, - 18, - 0, - 2, - 18, - 22, - 21, - 0, - 2, - 19, - 23, - 16, - 0, - 2, - 19, - 20, - 23, - 0, - 2, - 8, - 0, - 7, - 0, - 2, - 8, - 7, - 15, - 0, - 2, - 6, - 14, - 15, - 0, - 2, - 6, - 15, - 7, - 0, - 2, - 5, - 13, - 14, - 0, - 2, - 5, - 14, - 6, - 0, - 2, - 4, - 12, - 13, - 0, - 2, - 4, - 13, - 5, - 0, - 2, - 3, - 11, - 12, - 0, - 2, - 3, - 12, - 4, - 0, - 2, - 2, - 10, - 11, - 0, - 2, - 2, - 11, - 3, - 0, - 2, - 1, - 9, - 10, - 0, - 2, - 1, - 10, - 2, - 0, - 2, - 0, - 8, - 9, - 0, - 2, - 0, - 9, - 1, - 0, - 2, - 71, - 70, - 62, - 0, - 2, - 71, - 62, - 63, - 0, - 2, - 70, - 69, - 61, - 0, - 2, - 70, - 61, - 62, - 0, - 2, - 69, - 68, - 60, - 0, - 2, - 69, - 60, - 61, - 0, - 2, - 68, - 67, - 59, - 0, - 2, - 68, - 59, - 60, - 0, - 2, - 67, - 66, - 58, - 0, - 2, - 67, - 58, - 59, - 0, - 2, - 66, - 65, - 57, - 0, - 2, - 66, - 57, - 58, - 0, - 2, - 65, - 64, - 56, - 0, - 2, - 65, - 56, - 57, - 0, - 2, - 63, - 56, - 64, - 0, - 2, - 63, - 64, - 71, - 0, - 2, - 52, - 51, - 50, - 0, - 2, - 53, - 52, - 50, - 0, - 2, - 53, - 50, - 49, - 0, - 2, - 53, - 49, - 48, - 0, - 2, - 54, - 53, - 48, - 0, - 2, - 54, - 48, - 55, - 0, - 2, - 56, - 63, - 57, - 0, - 2, - 63, - 58, - 57, - 0, - 2, - 63, - 62, - 58, - 0, - 2, - 62, - 61, - 58, - 0, - 2, - 61, - 59, - 58, - 0, - 2, - 61, - 60, - 59, - 0, - 2, - 71, - 64, - 65, - 0, - 2, - 71, - 65, - 66, - 0, - 2, - 71, - 66, - 70, - 0, - 2, - 70, - 66, - 67, - 0, - 2, - 70, - 67, - 69, - 0, - 2, - 69, - 67, - 68, - 0, - 2, - 76, - 72, - 75, - 0, - 2, - 76, - 79, - 72, - 0, - 2, - 77, - 74, - 73, - 0, - 2, - 78, - 77, - 73, - 0, - 2, - 79, - 73, - 72, - 0, - 2, - 79, - 78, - 73, - 0, - 2, - 72, - 74, - 75, - 0, - 2, - 72, - 73, - 74, - 0, - 2, - 76, - 74, - 77, - 0, - 2, - 76, - 75, - 74, - 0, - 2, - 40, - 41, - 54, - 0, - 2, - 40, - 54, - 55, - 0, - 2, - 41, - 42, - 53, - 0, - 2, - 41, - 53, - 54, - 0, - 2, - 42, - 43, - 52, - 0, - 2, - 42, - 52, - 53, - 0, - 2, - 43, - 44, - 51, - 0, - 2, - 43, - 51, - 52, - 0, - 2, - 44, - 45, - 50, - 0, - 2, - 44, - 50, - 51, - 0, - 2, - 45, - 46, - 49, - 0, - 2, - 45, - 49, - 50, - 0, - 2, - 46, - 47, - 48, - 0, - 2, - 46, - 48, - 49, - 0, - 2, - 40, - 55, - 48, - 0, - 2, - 40, - 48, - 47, - 0, - 2, - 17, - 18, - 77, - 0, - 2, - 17, - 77, - 78, - 0, - 2, - 18, - 19, - 76, - 0, - 2, - 18, - 76, - 77, - 0, - 2, - 16, - 17, - 78, - 0, - 2, - 16, - 78, - 79, - 0, - 2, - 16, - 79, - 76, - 0, - 2, - 16, - 76, - 19, - 0 - ] + "metadata": { + "formatVersion": 3 + }, + "materials": [ + { + "DbgColor": 15658734, + "DbgIndex": 0, + "DbgName": "Metal", + "colorDiffuse": [ + 0.7, + 0.7, + 0.7 + ], + "colorSpecular": [ + 0.168737, + 0.168737, + 0.168737 + ], + "shading": "Lambert", + "specularCoef": 50, + "opacity": 1.0, + "vertexColors": false + } + ], + "normals": [], + "colors": [], + "uvs": [], + "vertices": [ + 0.0208742, + 0.0089758, + 0.0084754, + 0.0208741, + 0.0005642, + 0.0119739, + 0.0208742, + -0.0079164, + 0.0084754, + 0.0208744, + -0.0114149, + 2.93e-05, + 0.0208747, + -0.0079164, + -0.0084168, + 0.0208748, + 0.0005642, + -0.0119153, + 0.0208747, + 0.0089758, + -0.0084168, + 0.0208744, + 0.0124743, + 2.93e-05, + 0.0190454, + 0.0089758, + 0.0084754, + 0.0190453, + 0.0005642, + 0.0119739, + 0.0190454, + -0.0079164, + 0.0084754, + 0.0190457, + -0.0114149, + 2.93e-05, + 0.019046, + -0.0079164, + -0.0084169, + 0.0190461, + 0.0005642, + -0.0119153, + 0.019046, + 0.0089758, + -0.0084168, + 0.0190457, + 0.0124743, + 2.93e-05, + 0.0221934, + -0.0308684, + -0.0108051, + 0.0221927, + -0.0308684, + 0.011001, + 0.0208741, + -0.0294766, + 0.011001, + 0.0208748, + -0.0294766, + -0.0108052, + 0.0208748, + 0.0005642, + -0.0108052, + 0.0208741, + 0.0005642, + 0.011001, + 0.0221927, + 0.0005642, + 0.011001, + 0.0221934, + 0.0005642, + -0.0108051, + -0.0087984, + -0.0327532, + 2.38e-05, + -0.0062282, + -0.0327532, + -0.0061801, + -2.38e-05, + -0.0327532, + -0.0087497, + 0.0061804, + -0.0327532, + -0.0061797, + 0.0087501, + -0.0327532, + 2.44e-05, + 0.00618, + -0.0327532, + 0.0062283, + -2.44e-05, + -0.0327532, + 0.0087979, + -0.0062287, + -0.0327532, + 0.0062279, + -0.0087984, + -0.0308684, + 2.38e-05, + -0.0062282, + -0.0308684, + -0.0061801, + -2.38e-05, + -0.0308684, + -0.0087497, + 0.0061804, + -0.0308684, + -0.0061797, + 0.0087501, + -0.0308684, + 2.44e-05, + 0.00618, + -0.0308684, + 0.0062283, + -2.44e-05, + -0.0308684, + 0.0087979, + -0.0062287, + -0.0308684, + 0.0062279, + 0.0225672, + 0.0047428, + 2.94e-05, + 0.0225673, + 0.0035099, + -0.002947, + 0.0225674, + 0.0005528, + -0.0041799, + 0.0225673, + -0.0024429, + -0.002947, + 0.0225672, + -0.0036757, + 2.94e-05, + 0.0225671, + -0.0024429, + 0.0030058, + 0.0225671, + 0.0005528, + 0.0042386, + 0.0225671, + 0.0035099, + 0.0030058, + -0.0225672, + 0.0035099, + 0.003005, + -0.0225672, + 0.0005528, + 0.0042379, + -0.0225672, + -0.0024429, + 0.003005, + -0.0225672, + -0.0036757, + 2.86e-05, + -0.0225672, + -0.0024429, + -0.0029478, + -0.0225672, + 0.0005528, + -0.0041806, + -0.0225672, + 0.0035099, + -0.0029478, + -0.0225672, + 0.0047428, + 2.86e-05, + -0.0190457, + 0.0124743, + 2.86e-05, + -0.0190457, + 0.0089758, + -0.0084175, + -0.0190457, + 0.0005642, + -0.011916, + -0.0190457, + -0.0079164, + -0.0084175, + -0.0190457, + -0.0114149, + 2.86e-05, + -0.0190457, + -0.0079164, + 0.0084747, + -0.0190457, + 0.0005642, + 0.0119732, + -0.0190457, + 0.0089758, + 0.0084747, + -0.0208745, + 0.0124743, + 2.86e-05, + -0.0208744, + 0.0089758, + -0.0084175, + -0.0208744, + 0.0005642, + -0.011916, + -0.0208744, + -0.0079164, + -0.0084175, + -0.0208745, + -0.0114149, + 2.86e-05, + -0.0208745, + -0.0079164, + 0.0084747, + -0.0208745, + 0.0005642, + 0.0119732, + -0.0208745, + 0.0089758, + 0.0084747, + -0.022193, + 0.0005642, + -0.0108059, + -0.022193, + 0.0005642, + 0.0110002, + -0.0208745, + 0.0005642, + 0.0110002, + -0.0208744, + 0.0005642, + -0.0108059, + -0.0208744, + -0.0294766, + -0.0108059, + -0.0208745, + -0.0294766, + 0.0110002, + -0.022193, + -0.0308684, + 0.0110002, + -0.022193, + -0.0308684, + -0.0108059 + ], + "faces": [ + 2, + 2, + 3, + 4, + 0, + 2, + 1, + 2, + 4, + 0, + 2, + 1, + 4, + 5, + 0, + 2, + 0, + 1, + 5, + 0, + 2, + 0, + 5, + 6, + 0, + 2, + 0, + 6, + 7, + 0, + 2, + 10, + 12, + 11, + 0, + 2, + 10, + 13, + 12, + 0, + 2, + 9, + 13, + 10, + 0, + 2, + 8, + 13, + 9, + 0, + 2, + 8, + 14, + 13, + 0, + 2, + 15, + 14, + 8, + 0, + 2, + 24, + 25, + 31, + 0, + 2, + 31, + 25, + 26, + 0, + 2, + 31, + 26, + 30, + 0, + 2, + 30, + 26, + 29, + 0, + 2, + 29, + 26, + 27, + 0, + 2, + 29, + 27, + 28, + 0, + 2, + 41, + 40, + 47, + 0, + 2, + 41, + 47, + 42, + 0, + 2, + 42, + 47, + 46, + 0, + 2, + 42, + 46, + 45, + 0, + 2, + 42, + 45, + 43, + 0, + 2, + 43, + 45, + 44, + 0, + 2, + 39, + 31, + 30, + 0, + 2, + 39, + 30, + 38, + 0, + 2, + 38, + 30, + 29, + 0, + 2, + 38, + 29, + 37, + 0, + 2, + 37, + 29, + 28, + 0, + 2, + 37, + 28, + 36, + 0, + 2, + 36, + 28, + 27, + 0, + 2, + 36, + 27, + 35, + 0, + 2, + 35, + 27, + 26, + 0, + 2, + 35, + 26, + 34, + 0, + 2, + 34, + 26, + 25, + 0, + 2, + 34, + 25, + 33, + 0, + 2, + 33, + 25, + 24, + 0, + 2, + 33, + 24, + 32, + 0, + 2, + 31, + 39, + 32, + 0, + 2, + 31, + 32, + 24, + 0, + 2, + 19, + 21, + 20, + 0, + 2, + 19, + 18, + 21, + 0, + 2, + 23, + 21, + 22, + 0, + 2, + 23, + 20, + 21, + 0, + 2, + 16, + 22, + 17, + 0, + 2, + 16, + 23, + 22, + 0, + 2, + 17, + 22, + 18, + 0, + 2, + 18, + 22, + 21, + 0, + 2, + 19, + 23, + 16, + 0, + 2, + 19, + 20, + 23, + 0, + 2, + 8, + 0, + 7, + 0, + 2, + 8, + 7, + 15, + 0, + 2, + 6, + 14, + 15, + 0, + 2, + 6, + 15, + 7, + 0, + 2, + 5, + 13, + 14, + 0, + 2, + 5, + 14, + 6, + 0, + 2, + 4, + 12, + 13, + 0, + 2, + 4, + 13, + 5, + 0, + 2, + 3, + 11, + 12, + 0, + 2, + 3, + 12, + 4, + 0, + 2, + 2, + 10, + 11, + 0, + 2, + 2, + 11, + 3, + 0, + 2, + 1, + 9, + 10, + 0, + 2, + 1, + 10, + 2, + 0, + 2, + 0, + 8, + 9, + 0, + 2, + 0, + 9, + 1, + 0, + 2, + 71, + 70, + 62, + 0, + 2, + 71, + 62, + 63, + 0, + 2, + 70, + 69, + 61, + 0, + 2, + 70, + 61, + 62, + 0, + 2, + 69, + 68, + 60, + 0, + 2, + 69, + 60, + 61, + 0, + 2, + 68, + 67, + 59, + 0, + 2, + 68, + 59, + 60, + 0, + 2, + 67, + 66, + 58, + 0, + 2, + 67, + 58, + 59, + 0, + 2, + 66, + 65, + 57, + 0, + 2, + 66, + 57, + 58, + 0, + 2, + 65, + 64, + 56, + 0, + 2, + 65, + 56, + 57, + 0, + 2, + 63, + 56, + 64, + 0, + 2, + 63, + 64, + 71, + 0, + 2, + 52, + 51, + 50, + 0, + 2, + 53, + 52, + 50, + 0, + 2, + 53, + 50, + 49, + 0, + 2, + 53, + 49, + 48, + 0, + 2, + 54, + 53, + 48, + 0, + 2, + 54, + 48, + 55, + 0, + 2, + 56, + 63, + 57, + 0, + 2, + 63, + 58, + 57, + 0, + 2, + 63, + 62, + 58, + 0, + 2, + 62, + 61, + 58, + 0, + 2, + 61, + 59, + 58, + 0, + 2, + 61, + 60, + 59, + 0, + 2, + 71, + 64, + 65, + 0, + 2, + 71, + 65, + 66, + 0, + 2, + 71, + 66, + 70, + 0, + 2, + 70, + 66, + 67, + 0, + 2, + 70, + 67, + 69, + 0, + 2, + 69, + 67, + 68, + 0, + 2, + 76, + 72, + 75, + 0, + 2, + 76, + 79, + 72, + 0, + 2, + 77, + 74, + 73, + 0, + 2, + 78, + 77, + 73, + 0, + 2, + 79, + 73, + 72, + 0, + 2, + 79, + 78, + 73, + 0, + 2, + 72, + 74, + 75, + 0, + 2, + 72, + 73, + 74, + 0, + 2, + 76, + 74, + 77, + 0, + 2, + 76, + 75, + 74, + 0, + 2, + 40, + 41, + 54, + 0, + 2, + 40, + 54, + 55, + 0, + 2, + 41, + 42, + 53, + 0, + 2, + 41, + 53, + 54, + 0, + 2, + 42, + 43, + 52, + 0, + 2, + 42, + 52, + 53, + 0, + 2, + 43, + 44, + 51, + 0, + 2, + 43, + 51, + 52, + 0, + 2, + 44, + 45, + 50, + 0, + 2, + 44, + 50, + 51, + 0, + 2, + 45, + 46, + 49, + 0, + 2, + 45, + 49, + 50, + 0, + 2, + 46, + 47, + 48, + 0, + 2, + 46, + 48, + 49, + 0, + 2, + 40, + 55, + 48, + 0, + 2, + 40, + 48, + 47, + 0, + 2, + 17, + 18, + 77, + 0, + 2, + 17, + 77, + 78, + 0, + 2, + 18, + 19, + 76, + 0, + 2, + 18, + 76, + 77, + 0, + 2, + 16, + 17, + 78, + 0, + 2, + 16, + 78, + 79, + 0, + 2, + 16, + 79, + 76, + 0, + 2, + 16, + 76, + 19, + 0 + ] } diff --git a/src/client/components/localisation/darwin_robot/left_arm/config/left_lower_arm.json b/src/client/components/localisation/darwin_robot/left_arm/config/left_lower_arm.json index 4507b2d6..2b0bd216 100644 --- a/src/client/components/localisation/darwin_robot/left_arm/config/left_lower_arm.json +++ b/src/client/components/localisation/darwin_robot/left_arm/config/left_lower_arm.json @@ -1,2770 +1,2770 @@ { - "metadata": { - "formatVersion": 3 - }, - "materials": [ - { - "DbgColor": 15658734, - "DbgIndex": 0, - "DbgName": "Plastic", - "colorDiffuse": [ - 0.301961, - 0.301961, - 0.301961 - ], - "colorSpecular": [ - 0.401201, - 0.401201, - 0.401201 - ], - "shading": "Lambert", - "specularCoef": 50, - "opacity": 1.0, - "vertexColors": false - }, - { - "DbgColor": 15658734, - "DbgIndex": 1, - "DbgName": "Metal", - "colorDiffuse": [ - 0.7, - 0.7, - 0.7 - ], - "colorSpecular": [ - 0.168737, - 0.168737, - 0.168737 - ], - "shading": "Lambert", - "specularCoef": 50, - "opacity": 1.0, - "vertexColors": false - } - ], - "normals": [], - "colors": [], - "uvs": [], - "vertices": [ - 0.021316, - -0.0889728, - -0.0160007, - 0.0211875, - -0.0894323, - -0.0247776, - 0.0211882, - -0.0894323, - -0.0072239, - 0.020141, - -0.0931765, - -0.0318913, - 0.0201421, - -0.0931765, - -0.0001101, - 0.0178793, - -0.101268, - -0.0354511, - 0.0178807, - -0.101268, - 0.0034499, - 0.0133817, - -0.117359, - -0.0357492, - 0.013383, - -0.117359, - 0.0037483, - 0.0112757, - -0.124894, - -0.0340975, - 0.0112769, - -0.124894, - 0.0020967, - 0.0102082, - -0.128713, - -0.0294763, - 0.0102092, - -0.128713, - -0.0025244, - 0.0101119, - -0.129057, - -0.0160004, - 0.0247634, - -0.0160601, - -0.0160009, - 0.0246349, - -0.0165195, - -0.0288783, - 0.0246358, - -0.0165195, - -0.0031235, - 0.0235883, - -0.0222589, - -0.0318913, - 0.0235895, - -0.0222589, - -0.0001104, - 0.0213268, - -0.0232768, - -0.0354511, - 0.0213282, - -0.0232768, - 0.0034496, - 0.0084479, - -0.0958579, - -0.0414531, - 0.0084497, - -0.0958579, - 0.0094525, - 0.0189941, - -0.0243808, - -0.0379746, - 0.0189956, - -0.0243808, - 0.0059733, - 0.0084476, - -0.114721, - -0.0386055, - 0.0084491, - -0.114721, - 0.0066049, - 0.0033958, - -0.0243805, - -0.0379746, - 0.0033974, - -0.0243805, - 0.0059743, - 0.0033955, - -0.0444894, - -0.038953, - 0.0033971, - -0.0444894, - 0.0069527, - -0.0015018, - -0.0548154, - -0.0394554, - -0.0015002, - -0.0548154, - 0.0074555, - -0.0060363, - -0.0578951, - -0.0396052, - -0.0060346, - -0.0578951, - 0.0076056, - -0.0058553, - -0.0828953, - -0.0408216, - -0.0058536, - -0.0828953, - 0.008822, - -0.0004141, - -0.0841635, - -0.0408833, - -0.0004123, - -0.0841635, - 0.0088833, - 0.0035761, - -0.0870622, - -0.0410243, - 0.0035779, - -0.0870622, - 0.0090241, - 0.0052379, - -0.0958578, - -0.0414531, - 0.0052397, - -0.0958578, - 0.0094527, - 0.0052376, - -0.114721, - -0.0386055, - 0.0052392, - -0.114721, - 0.0066051, - 0.0052374, - -0.124894, - -0.0340975, - 0.0052387, - -0.124894, - 0.0020972, - 0.0052374, - -0.128713, - -0.0294763, - 0.0052383, - -0.128713, - -0.002524, - 0.0052373, - -0.129057, - -0.0160002, - 0.0052376, - -0.114721, - -0.0160002, - 0.0052379, - -0.0958578, - -0.0160002, - 0.0033955, - -0.0444894, - -0.0160001, - 0.0033958, - -0.0243805, - -0.0160001, - -0.0116696, - -0.0256596, - -0.0293495, - -0.0116686, - -0.0256596, - -0.0026497, - -0.0117108, - -0.0319478, - -0.0293495, - -0.0117099, - -0.0319478, - -0.0026497, - 1.3e-06, - -0.0384555, - -0.0293495, - 2.2e-06, - -0.0384555, - -0.0026505, - 0.0001588, - -0.051073, - -0.0293495, - 0.0001597, - -0.051073, - -0.0026505, - -0.0052654, - -0.0576902, - -0.0293495, - -0.0052645, - -0.0576902, - -0.0026501, - -0.0052454, - -0.0878142, - -0.0293495, - -0.0052444, - -0.0878142, - -0.0026501, - 0.0001579, - -0.104224, - -0.0293495, - 0.0001588, - -0.104224, - -0.0026505, - 0.0066037, - -0.104286, - -0.0160002, - 0.0025852, - -0.114613, - -0.0160001, - -0.0086951, - -0.114558, - -0.0159997, - -0.0086745, - -0.116567, - -0.0159997, - 0.0037989, - -0.116663, - -0.0160001, - 0.0073511, - -0.108613, - -0.0160003, - 0.0064391, - -0.02566, - -0.0293495, - 0.00644, - -0.02566, - -0.002651, - 0.0025852, - -0.114613, - -0.0293495, - 0.0025861, - -0.114613, - -0.0026507, - -0.0086951, - -0.114558, - -0.0293495, - -0.0086941, - -0.114558, - -0.0026499, - -0.0086745, - -0.116567, - -0.0293495, - -0.0086736, - -0.116567, - -0.0026499, - 0.0037989, - -0.116663, - -0.0293495, - 0.0037998, - -0.116663, - -0.0026508, - 0.0073511, - -0.108613, - -0.0293495, - 0.007352, - -0.108613, - -0.002651, - -0.0116696, - -0.0256596, - -0.0315563, - -0.0116685, - -0.0256596, - -0.0004429, - -0.0117108, - -0.0319478, - -0.0315563, - -0.0117097, - -0.0319478, - -0.0004429, - 1.3e-06, - -0.0384555, - -0.0315563, - 2.4e-06, - -0.0384555, - -0.0004437, - 0.0001588, - -0.051073, - -0.0315563, - 0.0001599, - -0.051073, - -0.0004437, - -0.0052654, - -0.0576902, - -0.0315563, - -0.0052643, - -0.0576902, - -0.0004433, - -0.0052454, - -0.0878142, - -0.0315563, - -0.0052443, - -0.0878142, - -0.0004433, - 0.0001579, - -0.104224, - -0.0315563, - 0.000159, - -0.104224, - -0.0004437, - 0.0064377, - -0.104224, - -0.0293495, - 0.0064387, - -0.104224, - -0.002651, - 0.0064377, - -0.104224, - -0.0315563, - 0.0064388, - -0.104224, - -0.0004442, - 0.006438, - -0.0878144, - -0.0315563, - 0.0064391, - -0.0878144, - -0.0004442, - 0.0064386, - -0.0576904, - -0.0315563, - 0.0064396, - -0.0576904, - -0.0004442, - 0.0064387, - -0.0510731, - -0.0315563, - 0.0064398, - -0.0510731, - -0.0004442, - 0.0064389, - -0.0384557, - -0.0315563, - 0.00644, - -0.0384557, - -0.0004442, - 0.006439, - -0.0319481, - -0.0315563, - 0.0064401, - -0.0319481, - -0.0004442, - 0.0064391, - -0.02566, - -0.0315563, - 0.0064402, - -0.02566, - -0.0004442, - 0.006438, - -0.0878144, - -0.0293495, - 0.006439, - -0.0878144, - -0.002651, - 0.0064386, - -0.0576904, - -0.0293495, - 0.0064395, - -0.0576904, - -0.002651, - 0.0064387, - -0.0510731, - -0.0293495, - 0.0064396, - -0.0510731, - -0.002651, - 0.0064389, - -0.0384557, - -0.0293495, - 0.0064398, - -0.0384557, - -0.002651, - 0.006439, - -0.0319481, - -0.0293495, - 0.0064399, - -0.0319481, - -0.002651, - 0.0052379, - -0.0959539, - -0.039479, - 0.0052396, - -0.0959539, - 0.0074787, - 0.0035761, - -0.0871582, - -0.0390503, - 0.0035777, - -0.0871582, - 0.00705, - -0.0004141, - -0.0842596, - -0.0389092, - -0.0004125, - -0.0842596, - 0.0069093, - -0.0058553, - -0.0829914, - -0.0388475, - -0.0058537, - -0.0829914, - 0.006848, - -0.0060363, - -0.0579911, - -0.0376312, - -0.0060347, - -0.0579911, - 0.0056316, - -0.0015018, - -0.0549115, - -0.0374813, - -0.0015003, - -0.0549115, - 0.0054814, - 0.0033955, - -0.0445854, - -0.0369789, - 0.003397, - -0.0445854, - 0.0049787, - 0.0203417, - 0.002702, - 0.0114163, - 0.0203417, - -0.0062094, - 0.009524, - 0.0203421, - -0.0112073, - 0.0018311, - 0.0203425, - -0.0092954, - -0.0071087, - 0.0203428, - -0.0016221, - -0.0120783, - 0.0203428, - 0.0073461, - -0.0101468, - 0.0203425, - 0.0122873, - -0.002493, - 0.020342, - 0.0103754, - 0.0064468, - 0.0181779, - 0.0027021, - 0.0114162, - 0.0181779, - -0.0062094, - 0.0095239, - 0.0181782, - -0.0112073, - 0.001831, - 0.0181787, - -0.0092954, - -0.0071088, - 0.018179, - -0.0016221, - -0.0120784, - 0.018179, - 0.0073462, - -0.0101469, - 0.0181787, - 0.0122873, - -0.0024931, - 0.0181782, - 0.0103754, - 0.0064467, - 0.0219035, - -0.0234641, - -0.0267147, - 0.0219024, - -0.0234347, - -0.0049086, - 0.0203422, - -0.0219683, - -0.0049087, - 0.0203434, - -0.0220723, - -0.0267148, - 0.0203427, - 0.0086399, - -0.0076669, - 0.0203418, - -0.0073529, - 0.0075925, - 0.021902, - -0.0073529, - 0.0075926, - 0.0219029, - 0.0086399, - -0.0076668, - -0.011192, - -0.0254357, - -0.015882, - -0.0078701, - -0.0254358, - -0.0239007, - 0.0001489, - -0.0254359, - -0.0272217, - 0.0081676, - -0.0254358, - -0.0238998, - 0.0114887, - -0.0254357, - -0.0158808, - 0.0081667, - -0.0254355, - -0.0078622, - 0.0001477, - -0.0254355, - -0.0045411, - -0.0078709, - -0.0254355, - -0.007863, - -0.011192, - -0.0233769, - -0.015882, - -0.0078701, - -0.023377, - -0.0239007, - 0.0001489, - -0.0233771, - -0.0272218, - 0.0081676, - -0.023377, - -0.0238999, - 0.0114887, - -0.0233769, - -0.0158809, - 0.0081667, - -0.0233767, - -0.0078622, - 0.0001478, - -0.0234347, - -0.0045411, - -0.0078709, - -0.0233767, - -0.0078631, - 0.0223451, - 0.0040091, - 0.0020598, - 0.0223453, - 0.0046828, - -0.0010906, - 0.0223454, - 0.0029474, - -0.0037838, - 0.0223454, - -0.0002188, - -0.0044684, - 0.0223453, - -0.0029229, - -0.0027172, - 0.0223451, - -0.0035966, - 0.0004332, - 0.022345, - -0.0018295, - 0.0031482, - 0.022345, - 0.001305, - 0.003811, - -0.0219962, - 0.001305, - 0.0038095, - -0.0219962, - -0.0018295, - 0.0031467, - -0.0219961, - -0.0035966, - 0.0004317, - -0.0219961, - -0.0029229, - -0.0027187, - -0.0219961, - -0.0002188, - -0.00447, - -0.0219961, - 0.0029474, - -0.0037853, - -0.0219962, - 0.0046828, - -0.0010922, - -0.0219962, - 0.0040091, - 0.0020582, - -0.0215533, - 0.0086399, - -0.0076683, - -0.0215535, - -0.0073529, - 0.0075911, - -0.0199933, - -0.0073529, - 0.0075911, - -0.0199931, - 0.0086399, - -0.0076683, - -0.0199925, - -0.0220723, - -0.0267162, - -0.0199929, - -0.0219683, - -0.0049101, - -0.021553, - -0.0234347, - -0.0049101, - -0.0215526, - -0.0234641, - -0.0267162, - -0.0178296, - 0.0103754, - 0.0064455, - -0.0178295, - 0.0122873, - -0.0024944, - -0.0178293, - 0.0073462, - -0.0101482, - -0.0178291, - -0.0016221, - -0.0120796, - -0.0178291, - -0.0092954, - -0.0071101, - -0.0178293, - -0.0112073, - 0.0018298, - -0.0178295, - -0.0062094, - 0.0095226, - -0.0178296, - 0.0027021, - 0.011415, - -0.0199934, - 0.0103754, - 0.0064454, - -0.0199933, - 0.0122873, - -0.0024944, - -0.0199931, - 0.0073461, - -0.0101482, - -0.0199929, - -0.0016221, - -0.0120797, - -0.019993, - -0.0092954, - -0.0071101, - -0.0199931, - -0.0112073, - 0.0018297, - -0.0199933, - -0.0062094, - 0.0095226, - -0.0199935, - 0.002702, - 0.0114149, - 0.0203422, - -0.0200317, - -0.0049087, - 0.0219024, - -0.0200317, - -0.0049087, - -0.021553, - -0.0200317, - -0.0049102, - -0.0199929, - -0.0200317, - -0.0049101, - 0.0203434, - -0.0110508, - -0.026715, - 0.0219035, - -0.0110508, - -0.0267149, - -0.0215526, - -0.0110508, - -0.0267165, - -0.0199925, - -0.0110508, - -0.0267164, - 0.0064387, - -0.104224, - -0.002651, - 0.0064377, - -0.104224, - -0.0293495, - 0.00644, - -0.02566, - -0.002651, - 0.0064391, - -0.02566, - -0.0293495, - 0.0022139, - -0.0256599, - -0.0293494, - 0.0022148, - -0.0256599, - -0.0026509, - 0.0022125, - -0.104224, - -0.0293494, - 0.0022135, - -0.104224, - -0.0026509 - ], - "faces": [ - 2, - 1, - 0, - 13, - 0, - 2, - 13, - 0, - 2, - 0, - 2, - 11, - 1, - 13, - 0, - 2, - 2, - 12, - 13, - 0, - 2, - 11, - 3, - 1, - 0, - 2, - 4, - 12, - 2, - 0, - 2, - 9, - 3, - 11, - 0, - 2, - 4, - 10, - 12, - 0, - 2, - 9, - 5, - 3, - 0, - 2, - 6, - 10, - 4, - 0, - 2, - 7, - 5, - 9, - 0, - 2, - 6, - 8, - 10, - 0, - 2, - 5, - 7, - 21, - 0, - 2, - 8, - 6, - 22, - 0, - 2, - 7, - 25, - 21, - 0, - 2, - 26, - 8, - 22, - 0, - 2, - 7, - 9, - 25, - 0, - 2, - 10, - 8, - 26, - 0, - 2, - 21, - 27, - 23, - 0, - 2, - 28, - 22, - 24, - 0, - 2, - 41, - 27, - 21, - 0, - 2, - 28, - 42, - 22, - 0, - 2, - 14, - 15, - 53, - 0, - 2, - 16, - 14, - 53, - 0, - 2, - 15, - 17, - 53, - 0, - 2, - 18, - 16, - 53, - 0, - 2, - 17, - 19, - 53, - 0, - 2, - 20, - 18, - 53, - 0, - 2, - 19, - 23, - 53, - 0, - 2, - 24, - 20, - 53, - 0, - 2, - 23, - 27, - 53, - 0, - 2, - 28, - 24, - 53, - 0, - 2, - 27, - 29, - 138, - 0, - 2, - 139, - 30, - 28, - 0, - 2, - 41, - 43, - 126, - 0, - 2, - 127, - 44, - 42, - 0, - 2, - 51, - 128, - 126, - 0, - 2, - 127, - 129, - 51, - 0, - 2, - 51, - 50, - 44, - 0, - 2, - 51, - 44, - 127, - 0, - 2, - 43, - 50, - 51, - 0, - 2, - 43, - 51, - 126, - 0, - 2, - 139, - 52, - 129, - 0, - 2, - 129, - 52, - 51, - 0, - 2, - 51, - 52, - 128, - 0, - 2, - 128, - 52, - 138, - 0, - 2, - 52, - 139, - 53, - 0, - 2, - 139, - 28, - 53, - 0, - 2, - 27, - 138, - 53, - 0, - 2, - 138, - 52, - 53, - 0, - 2, - 131, - 137, - 129, - 0, - 2, - 129, - 137, - 139, - 0, - 2, - 138, - 136, - 128, - 0, - 2, - 128, - 136, - 130, - 0, - 2, - 133, - 135, - 131, - 0, - 2, - 131, - 135, - 137, - 0, - 2, - 136, - 134, - 130, - 0, - 2, - 134, - 132, - 130, - 0, - 2, - 139, - 137, - 32, - 0, - 2, - 139, - 32, - 30, - 0, - 2, - 31, - 138, - 29, - 0, - 2, - 31, - 136, - 138, - 0, - 2, - 137, - 135, - 34, - 0, - 2, - 137, - 34, - 32, - 0, - 2, - 33, - 134, - 136, - 0, - 2, - 33, - 136, - 31, - 0, - 2, - 135, - 133, - 36, - 0, - 2, - 135, - 36, - 34, - 0, - 2, - 35, - 132, - 134, - 0, - 2, - 35, - 134, - 33, - 0, - 2, - 133, - 131, - 38, - 0, - 2, - 133, - 38, - 36, - 0, - 2, - 37, - 130, - 132, - 0, - 2, - 37, - 132, - 35, - 0, - 2, - 131, - 129, - 40, - 0, - 2, - 131, - 40, - 38, - 0, - 2, - 39, - 128, - 130, - 0, - 2, - 39, - 130, - 37, - 0, - 2, - 127, - 42, - 40, - 0, - 2, - 127, - 40, - 129, - 0, - 2, - 39, - 41, - 126, - 0, - 2, - 39, - 126, - 128, - 0, - 2, - 40, - 42, - 30, - 0, - 2, - 42, - 28, - 30, - 0, - 2, - 27, - 41, - 29, - 0, - 2, - 41, - 39, - 29, - 0, - 2, - 49, - 46, - 50, - 0, - 2, - 46, - 44, - 50, - 0, - 2, - 43, - 45, - 50, - 0, - 2, - 45, - 49, - 50, - 0, - 2, - 44, - 26, - 22, - 0, - 2, - 44, - 22, - 42, - 0, - 2, - 21, - 25, - 43, - 0, - 2, - 21, - 43, - 41, - 0, - 2, - 44, - 46, - 26, - 0, - 2, - 46, - 10, - 26, - 0, - 2, - 9, - 45, - 25, - 0, - 2, - 45, - 43, - 25, - 0, - 2, - 49, - 13, - 48, - 0, - 2, - 13, - 12, - 48, - 0, - 2, - 11, - 13, - 47, - 0, - 2, - 13, - 49, - 47, - 0, - 2, - 48, - 12, - 46, - 0, - 2, - 12, - 10, - 46, - 0, - 2, - 9, - 11, - 45, - 0, - 2, - 11, - 47, - 45, - 0, - 2, - 24, - 22, - 20, - 0, - 2, - 22, - 6, - 20, - 0, - 2, - 5, - 21, - 19, - 0, - 2, - 21, - 23, - 19, - 0, - 2, - 20, - 6, - 4, - 0, - 2, - 20, - 4, - 18, - 0, - 2, - 3, - 5, - 19, - 0, - 2, - 3, - 19, - 17, - 0, - 2, - 18, - 4, - 2, - 0, - 2, - 18, - 2, - 16, - 0, - 2, - 1, - 3, - 17, - 0, - 2, - 1, - 17, - 15, - 0, - 2, - 0, - 14, - 16, - 0, - 2, - 0, - 16, - 2, - 0, - 2, - 0, - 1, - 15, - 0, - 2, - 0, - 15, - 14, - 0, - 2, - 45, - 47, - 49, - 0, - 2, - 46, - 49, - 48, - 0, - 2, - 37, - 29, - 39, - 0, - 2, - 37, - 31, - 29, - 0, - 2, - 35, - 31, - 37, - 0, - 2, - 35, - 33, - 31, - 0, - 2, - 38, - 40, - 30, - 0, - 2, - 38, - 30, - 32, - 0, - 2, - 36, - 38, - 32, - 0, - 2, - 36, - 32, - 34, - 0, - 2, - 150, - 152, - 151, - 1, - 2, - 155, - 154, - 148, - 1, - 2, - 164, - 165, - 171, - 1, - 2, - 169, - 167, - 168, - 1, - 2, - 181, - 180, - 187, - 1, - 2, - 183, - 185, - 184, - 1, - 2, - 192, - 191, - 190, - 1, - 2, - 194, - 188, - 195, - 1, - 2, - 204, - 211, - 205, - 1, - 2, - 209, - 208, - 207, - 1, - 2, - 161, - 159, - 220, - 1, - 2, - 220, - 159, - 158, - 1, - 2, - 157, - 156, - 221, - 1, - 2, - 221, - 156, - 162, - 1, - 2, - 202, - 222, - 203, - 1, - 2, - 222, - 197, - 203, - 1, - 2, - 198, - 223, - 200, - 1, - 2, - 223, - 201, - 200, - 1, - 2, - 159, - 161, - 224, - 1, - 2, - 224, - 161, - 160, - 1, - 2, - 163, - 162, - 225, - 1, - 2, - 225, - 162, - 156, - 1, - 2, - 196, - 226, - 197, - 1, - 2, - 226, - 203, - 197, - 1, - 2, - 200, - 227, - 198, - 1, - 2, - 227, - 199, - 198, - 1, - 2, - 227, - 200, - 226, - 1, - 2, - 200, - 203, - 226, - 1, - 2, - 199, - 227, - 226, - 1, - 2, - 199, - 226, - 196, - 1, - 2, - 225, - 160, - 163, - 1, - 2, - 225, - 224, - 160, - 1, - 2, - 156, - 159, - 225, - 1, - 2, - 225, - 159, - 224, - 1, - 2, - 222, - 202, - 201, - 1, - 2, - 222, - 201, - 223, - 1, - 2, - 197, - 222, - 223, - 1, - 2, - 197, - 223, - 198, - 1, - 2, - 220, - 162, - 161, - 1, - 2, - 220, - 221, - 162, - 1, - 2, - 158, - 221, - 220, - 1, - 2, - 158, - 157, - 221, - 1, - 2, - 218, - 215, - 217, - 1, - 2, - 217, - 215, - 216, - 1, - 2, - 219, - 215, - 218, - 1, - 2, - 219, - 214, - 215, - 1, - 2, - 212, - 214, - 219, - 1, - 2, - 212, - 213, - 214, - 1, - 2, - 210, - 209, - 207, - 1, - 2, - 210, - 207, - 206, - 1, - 2, - 205, - 211, - 210, - 1, - 2, - 205, - 210, - 206, - 1, - 2, - 189, - 188, - 194, - 1, - 2, - 189, - 194, - 193, - 1, - 2, - 192, - 190, - 189, - 1, - 2, - 192, - 189, - 193, - 1, - 2, - 199, - 196, - 197, - 1, - 2, - 199, - 197, - 198, - 1, - 2, - 204, - 219, - 211, - 1, - 2, - 204, - 212, - 219, - 1, - 2, - 212, - 205, - 213, - 1, - 2, - 212, - 204, - 205, - 1, - 2, - 213, - 206, - 214, - 1, - 2, - 213, - 205, - 206, - 1, - 2, - 214, - 207, - 215, - 1, - 2, - 214, - 206, - 207, - 1, - 2, - 215, - 208, - 216, - 1, - 2, - 215, - 207, - 208, - 1, - 2, - 216, - 209, - 217, - 1, - 2, - 216, - 208, - 209, - 1, - 2, - 217, - 210, - 218, - 1, - 2, - 217, - 209, - 210, - 1, - 2, - 218, - 211, - 219, - 1, - 2, - 218, - 210, - 211, - 1, - 2, - 141, - 140, - 148, - 1, - 2, - 141, - 148, - 149, - 1, - 2, - 149, - 150, - 142, - 1, - 2, - 149, - 142, - 141, - 1, - 2, - 150, - 151, - 143, - 1, - 2, - 150, - 143, - 142, - 1, - 2, - 151, - 152, - 144, - 1, - 2, - 151, - 144, - 143, - 1, - 2, - 152, - 153, - 145, - 1, - 2, - 152, - 145, - 144, - 1, - 2, - 153, - 154, - 146, - 1, - 2, - 153, - 146, - 145, - 1, - 2, - 154, - 155, - 147, - 1, - 2, - 154, - 147, - 146, - 1, - 2, - 140, - 147, - 155, - 1, - 2, - 140, - 155, - 148, - 1, - 2, - 162, - 160, - 161, - 1, - 2, - 162, - 163, - 160, - 1, - 2, - 179, - 172, - 164, - 1, - 2, - 179, - 164, - 171, - 1, - 2, - 165, - 164, - 172, - 1, - 2, - 165, - 172, - 173, - 1, - 2, - 166, - 165, - 173, - 1, - 2, - 166, - 173, - 174, - 1, - 2, - 167, - 166, - 174, - 1, - 2, - 167, - 174, - 175, - 1, - 2, - 168, - 167, - 175, - 1, - 2, - 168, - 175, - 176, - 1, - 2, - 169, - 168, - 176, - 1, - 2, - 169, - 176, - 177, - 1, - 2, - 170, - 169, - 178, - 1, - 2, - 169, - 177, - 178, - 1, - 2, - 171, - 170, - 178, - 1, - 2, - 171, - 178, - 179, - 1, - 2, - 186, - 183, - 182, - 1, - 2, - 186, - 185, - 183, - 1, - 2, - 181, - 186, - 182, - 1, - 2, - 181, - 187, - 186, - 1, - 2, - 170, - 167, - 169, - 1, - 2, - 170, - 166, - 167, - 1, - 2, - 165, - 170, - 171, - 1, - 2, - 165, - 166, - 170, - 1, - 2, - 149, - 154, - 153, - 1, - 2, - 149, - 148, - 154, - 1, - 2, - 152, - 149, - 153, - 1, - 2, - 152, - 150, - 149, - 1, - 2, - 147, - 140, - 145, - 1, - 2, - 147, - 145, - 146, - 1, - 2, - 140, - 141, - 144, - 1, - 2, - 140, - 144, - 145, - 1, - 2, - 143, - 144, - 142, - 1, - 2, - 144, - 141, - 142, - 1, - 2, - 182, - 183, - 192, - 1, - 2, - 182, - 192, - 193, - 1, - 2, - 183, - 184, - 191, - 1, - 2, - 183, - 191, - 192, - 1, - 2, - 184, - 185, - 190, - 1, - 2, - 184, - 190, - 191, - 1, - 2, - 185, - 186, - 189, - 1, - 2, - 185, - 189, - 190, - 1, - 2, - 186, - 187, - 188, - 1, - 2, - 186, - 188, - 189, - 1, - 2, - 180, - 195, - 188, - 1, - 2, - 180, - 188, - 187, - 1, - 2, - 180, - 181, - 194, - 1, - 2, - 180, - 194, - 195, - 1, - 2, - 181, - 182, - 193, - 1, - 2, - 181, - 193, - 194, - 1, - 2, - 157, - 158, - 201, - 1, - 2, - 157, - 201, - 202, - 1, - 2, - 156, - 203, - 200, - 1, - 2, - 156, - 200, - 159, - 1, - 2, - 158, - 159, - 200, - 1, - 2, - 158, - 200, - 201, - 1, - 2, - 156, - 157, - 202, - 1, - 2, - 156, - 202, - 203, - 1, - 2, - 125, - 57, - 55, - 1, - 2, - 125, - 55, - 75, - 1, - 2, - 54, - 56, - 124, - 1, - 2, - 54, - 124, - 74, - 1, - 2, - 123, - 59, - 125, - 1, - 2, - 59, - 57, - 125, - 1, - 2, - 56, - 58, - 124, - 1, - 2, - 58, - 122, - 124, - 1, - 2, - 121, - 61, - 123, - 1, - 2, - 61, - 59, - 123, - 1, - 2, - 58, - 60, - 122, - 1, - 2, - 60, - 120, - 122, - 1, - 2, - 119, - 63, - 61, - 1, - 2, - 119, - 61, - 121, - 1, - 2, - 60, - 62, - 118, - 1, - 2, - 60, - 118, - 120, - 1, - 2, - 117, - 65, - 119, - 1, - 2, - 65, - 63, - 119, - 1, - 2, - 62, - 64, - 118, - 1, - 2, - 64, - 116, - 118, - 1, - 2, - 101, - 67, - 117, - 1, - 2, - 67, - 65, - 117, - 1, - 2, - 64, - 66, - 116, - 1, - 2, - 66, - 100, - 116, - 1, - 2, - 75, - 55, - 87, - 1, - 2, - 75, - 87, - 115, - 1, - 2, - 86, - 54, - 74, - 1, - 2, - 86, - 74, - 114, - 1, - 2, - 115, - 87, - 113, - 1, - 2, - 87, - 89, - 113, - 1, - 2, - 88, - 86, - 112, - 1, - 2, - 86, - 114, - 112, - 1, - 2, - 113, - 89, - 91, - 1, - 2, - 113, - 91, - 111, - 1, - 2, - 90, - 88, - 112, - 1, - 2, - 90, - 112, - 110, - 1, - 2, - 111, - 91, - 93, - 1, - 2, - 111, - 93, - 109, - 1, - 2, - 92, - 90, - 110, - 1, - 2, - 92, - 110, - 108, - 1, - 2, - 109, - 93, - 107, - 1, - 2, - 93, - 95, - 107, - 1, - 2, - 94, - 92, - 106, - 1, - 2, - 92, - 108, - 106, - 1, - 2, - 107, - 95, - 97, - 1, - 2, - 107, - 97, - 105, - 1, - 2, - 96, - 94, - 106, - 1, - 2, - 96, - 106, - 104, - 1, - 2, - 105, - 97, - 99, - 1, - 2, - 105, - 99, - 103, - 1, - 2, - 98, - 96, - 104, - 1, - 2, - 98, - 104, - 102, - 1, - 2, - 103, - 99, - 67, - 1, - 2, - 103, - 67, - 101, - 1, - 2, - 66, - 98, - 102, - 1, - 2, - 66, - 102, - 100, - 1, - 2, - 85, - 77, - 83, - 1, - 2, - 85, - 101, - 77, - 1, - 2, - 76, - 84, - 82, - 1, - 2, - 76, - 100, - 84, - 1, - 2, - 83, - 77, - 81, - 1, - 2, - 81, - 77, - 79, - 1, - 2, - 78, - 76, - 80, - 1, - 2, - 80, - 76, - 82, - 1, - 2, - 97, - 65, - 67, - 1, - 2, - 97, - 67, - 99, - 1, - 2, - 66, - 64, - 96, - 1, - 2, - 66, - 96, - 98, - 1, - 2, - 95, - 63, - 65, - 1, - 2, - 95, - 65, - 97, - 1, - 2, - 64, - 62, - 94, - 1, - 2, - 64, - 94, - 96, - 1, - 2, - 93, - 61, - 63, - 1, - 2, - 93, - 63, - 95, - 1, - 2, - 62, - 60, - 92, - 1, - 2, - 62, - 92, - 94, - 1, - 2, - 91, - 59, - 61, - 1, - 2, - 91, - 61, - 93, - 1, - 2, - 60, - 58, - 90, - 1, - 2, - 60, - 90, - 92, - 1, - 2, - 89, - 57, - 59, - 1, - 2, - 89, - 59, - 91, - 1, - 2, - 58, - 56, - 88, - 1, - 2, - 58, - 88, - 90, - 1, - 2, - 87, - 55, - 57, - 1, - 2, - 87, - 57, - 89, - 1, - 2, - 56, - 54, - 86, - 1, - 2, - 56, - 86, - 88, - 1, - 2, - 83, - 72, - 73, - 1, - 2, - 83, - 73, - 85, - 1, - 2, - 73, - 72, - 82, - 1, - 2, - 73, - 82, - 84, - 1, - 2, - 81, - 71, - 72, - 1, - 2, - 81, - 72, - 83, - 1, - 2, - 72, - 71, - 80, - 1, - 2, - 72, - 80, - 82, - 1, - 2, - 79, - 70, - 71, - 1, - 2, - 79, - 71, - 81, - 1, - 2, - 71, - 70, - 78, - 1, - 2, - 71, - 78, - 80, - 1, - 2, - 77, - 69, - 79, - 1, - 2, - 69, - 70, - 79, - 1, - 2, - 70, - 69, - 78, - 1, - 2, - 69, - 76, - 78, - 1, - 2, - 101, - 68, - 69, - 1, - 2, - 101, - 69, - 77, - 1, - 2, - 69, - 68, - 100, - 1, - 2, - 69, - 100, - 76, - 1, - 2, - 232, - 234, - 235, - 1, - 2, - 232, - 235, - 233, - 1, - 2, - 230, - 233, - 235, - 1, - 2, - 230, - 235, - 228, - 1, - 2, - 231, - 232, - 233, - 1, - 2, - 231, - 233, - 230, - 1, - 2, - 229, - 234, - 232, - 1, - 2, - 229, - 232, - 231, - 1, - 2, - 228, - 235, - 229, - 1, - 2, - 235, - 234, - 229, - 1, - 2, - 228, - 229, - 231, - 1, - 2, - 228, - 231, - 230, - 1 - ] + "metadata": { + "formatVersion": 3 + }, + "materials": [ + { + "DbgColor": 15658734, + "DbgIndex": 0, + "DbgName": "Plastic", + "colorDiffuse": [ + 0.301961, + 0.301961, + 0.301961 + ], + "colorSpecular": [ + 0.401201, + 0.401201, + 0.401201 + ], + "shading": "Lambert", + "specularCoef": 50, + "opacity": 1.0, + "vertexColors": false + }, + { + "DbgColor": 15658734, + "DbgIndex": 1, + "DbgName": "Metal", + "colorDiffuse": [ + 0.7, + 0.7, + 0.7 + ], + "colorSpecular": [ + 0.168737, + 0.168737, + 0.168737 + ], + "shading": "Lambert", + "specularCoef": 50, + "opacity": 1.0, + "vertexColors": false + } + ], + "normals": [], + "colors": [], + "uvs": [], + "vertices": [ + 0.021316, + -0.0889728, + -0.0160007, + 0.0211875, + -0.0894323, + -0.0247776, + 0.0211882, + -0.0894323, + -0.0072239, + 0.020141, + -0.0931765, + -0.0318913, + 0.0201421, + -0.0931765, + -0.0001101, + 0.0178793, + -0.101268, + -0.0354511, + 0.0178807, + -0.101268, + 0.0034499, + 0.0133817, + -0.117359, + -0.0357492, + 0.013383, + -0.117359, + 0.0037483, + 0.0112757, + -0.124894, + -0.0340975, + 0.0112769, + -0.124894, + 0.0020967, + 0.0102082, + -0.128713, + -0.0294763, + 0.0102092, + -0.128713, + -0.0025244, + 0.0101119, + -0.129057, + -0.0160004, + 0.0247634, + -0.0160601, + -0.0160009, + 0.0246349, + -0.0165195, + -0.0288783, + 0.0246358, + -0.0165195, + -0.0031235, + 0.0235883, + -0.0222589, + -0.0318913, + 0.0235895, + -0.0222589, + -0.0001104, + 0.0213268, + -0.0232768, + -0.0354511, + 0.0213282, + -0.0232768, + 0.0034496, + 0.0084479, + -0.0958579, + -0.0414531, + 0.0084497, + -0.0958579, + 0.0094525, + 0.0189941, + -0.0243808, + -0.0379746, + 0.0189956, + -0.0243808, + 0.0059733, + 0.0084476, + -0.114721, + -0.0386055, + 0.0084491, + -0.114721, + 0.0066049, + 0.0033958, + -0.0243805, + -0.0379746, + 0.0033974, + -0.0243805, + 0.0059743, + 0.0033955, + -0.0444894, + -0.038953, + 0.0033971, + -0.0444894, + 0.0069527, + -0.0015018, + -0.0548154, + -0.0394554, + -0.0015002, + -0.0548154, + 0.0074555, + -0.0060363, + -0.0578951, + -0.0396052, + -0.0060346, + -0.0578951, + 0.0076056, + -0.0058553, + -0.0828953, + -0.0408216, + -0.0058536, + -0.0828953, + 0.008822, + -0.0004141, + -0.0841635, + -0.0408833, + -0.0004123, + -0.0841635, + 0.0088833, + 0.0035761, + -0.0870622, + -0.0410243, + 0.0035779, + -0.0870622, + 0.0090241, + 0.0052379, + -0.0958578, + -0.0414531, + 0.0052397, + -0.0958578, + 0.0094527, + 0.0052376, + -0.114721, + -0.0386055, + 0.0052392, + -0.114721, + 0.0066051, + 0.0052374, + -0.124894, + -0.0340975, + 0.0052387, + -0.124894, + 0.0020972, + 0.0052374, + -0.128713, + -0.0294763, + 0.0052383, + -0.128713, + -0.002524, + 0.0052373, + -0.129057, + -0.0160002, + 0.0052376, + -0.114721, + -0.0160002, + 0.0052379, + -0.0958578, + -0.0160002, + 0.0033955, + -0.0444894, + -0.0160001, + 0.0033958, + -0.0243805, + -0.0160001, + -0.0116696, + -0.0256596, + -0.0293495, + -0.0116686, + -0.0256596, + -0.0026497, + -0.0117108, + -0.0319478, + -0.0293495, + -0.0117099, + -0.0319478, + -0.0026497, + 1.3e-06, + -0.0384555, + -0.0293495, + 2.2e-06, + -0.0384555, + -0.0026505, + 0.0001588, + -0.051073, + -0.0293495, + 0.0001597, + -0.051073, + -0.0026505, + -0.0052654, + -0.0576902, + -0.0293495, + -0.0052645, + -0.0576902, + -0.0026501, + -0.0052454, + -0.0878142, + -0.0293495, + -0.0052444, + -0.0878142, + -0.0026501, + 0.0001579, + -0.104224, + -0.0293495, + 0.0001588, + -0.104224, + -0.0026505, + 0.0066037, + -0.104286, + -0.0160002, + 0.0025852, + -0.114613, + -0.0160001, + -0.0086951, + -0.114558, + -0.0159997, + -0.0086745, + -0.116567, + -0.0159997, + 0.0037989, + -0.116663, + -0.0160001, + 0.0073511, + -0.108613, + -0.0160003, + 0.0064391, + -0.02566, + -0.0293495, + 0.00644, + -0.02566, + -0.002651, + 0.0025852, + -0.114613, + -0.0293495, + 0.0025861, + -0.114613, + -0.0026507, + -0.0086951, + -0.114558, + -0.0293495, + -0.0086941, + -0.114558, + -0.0026499, + -0.0086745, + -0.116567, + -0.0293495, + -0.0086736, + -0.116567, + -0.0026499, + 0.0037989, + -0.116663, + -0.0293495, + 0.0037998, + -0.116663, + -0.0026508, + 0.0073511, + -0.108613, + -0.0293495, + 0.007352, + -0.108613, + -0.002651, + -0.0116696, + -0.0256596, + -0.0315563, + -0.0116685, + -0.0256596, + -0.0004429, + -0.0117108, + -0.0319478, + -0.0315563, + -0.0117097, + -0.0319478, + -0.0004429, + 1.3e-06, + -0.0384555, + -0.0315563, + 2.4e-06, + -0.0384555, + -0.0004437, + 0.0001588, + -0.051073, + -0.0315563, + 0.0001599, + -0.051073, + -0.0004437, + -0.0052654, + -0.0576902, + -0.0315563, + -0.0052643, + -0.0576902, + -0.0004433, + -0.0052454, + -0.0878142, + -0.0315563, + -0.0052443, + -0.0878142, + -0.0004433, + 0.0001579, + -0.104224, + -0.0315563, + 0.000159, + -0.104224, + -0.0004437, + 0.0064377, + -0.104224, + -0.0293495, + 0.0064387, + -0.104224, + -0.002651, + 0.0064377, + -0.104224, + -0.0315563, + 0.0064388, + -0.104224, + -0.0004442, + 0.006438, + -0.0878144, + -0.0315563, + 0.0064391, + -0.0878144, + -0.0004442, + 0.0064386, + -0.0576904, + -0.0315563, + 0.0064396, + -0.0576904, + -0.0004442, + 0.0064387, + -0.0510731, + -0.0315563, + 0.0064398, + -0.0510731, + -0.0004442, + 0.0064389, + -0.0384557, + -0.0315563, + 0.00644, + -0.0384557, + -0.0004442, + 0.006439, + -0.0319481, + -0.0315563, + 0.0064401, + -0.0319481, + -0.0004442, + 0.0064391, + -0.02566, + -0.0315563, + 0.0064402, + -0.02566, + -0.0004442, + 0.006438, + -0.0878144, + -0.0293495, + 0.006439, + -0.0878144, + -0.002651, + 0.0064386, + -0.0576904, + -0.0293495, + 0.0064395, + -0.0576904, + -0.002651, + 0.0064387, + -0.0510731, + -0.0293495, + 0.0064396, + -0.0510731, + -0.002651, + 0.0064389, + -0.0384557, + -0.0293495, + 0.0064398, + -0.0384557, + -0.002651, + 0.006439, + -0.0319481, + -0.0293495, + 0.0064399, + -0.0319481, + -0.002651, + 0.0052379, + -0.0959539, + -0.039479, + 0.0052396, + -0.0959539, + 0.0074787, + 0.0035761, + -0.0871582, + -0.0390503, + 0.0035777, + -0.0871582, + 0.00705, + -0.0004141, + -0.0842596, + -0.0389092, + -0.0004125, + -0.0842596, + 0.0069093, + -0.0058553, + -0.0829914, + -0.0388475, + -0.0058537, + -0.0829914, + 0.006848, + -0.0060363, + -0.0579911, + -0.0376312, + -0.0060347, + -0.0579911, + 0.0056316, + -0.0015018, + -0.0549115, + -0.0374813, + -0.0015003, + -0.0549115, + 0.0054814, + 0.0033955, + -0.0445854, + -0.0369789, + 0.003397, + -0.0445854, + 0.0049787, + 0.0203417, + 0.002702, + 0.0114163, + 0.0203417, + -0.0062094, + 0.009524, + 0.0203421, + -0.0112073, + 0.0018311, + 0.0203425, + -0.0092954, + -0.0071087, + 0.0203428, + -0.0016221, + -0.0120783, + 0.0203428, + 0.0073461, + -0.0101468, + 0.0203425, + 0.0122873, + -0.002493, + 0.020342, + 0.0103754, + 0.0064468, + 0.0181779, + 0.0027021, + 0.0114162, + 0.0181779, + -0.0062094, + 0.0095239, + 0.0181782, + -0.0112073, + 0.001831, + 0.0181787, + -0.0092954, + -0.0071088, + 0.018179, + -0.0016221, + -0.0120784, + 0.018179, + 0.0073462, + -0.0101469, + 0.0181787, + 0.0122873, + -0.0024931, + 0.0181782, + 0.0103754, + 0.0064467, + 0.0219035, + -0.0234641, + -0.0267147, + 0.0219024, + -0.0234347, + -0.0049086, + 0.0203422, + -0.0219683, + -0.0049087, + 0.0203434, + -0.0220723, + -0.0267148, + 0.0203427, + 0.0086399, + -0.0076669, + 0.0203418, + -0.0073529, + 0.0075925, + 0.021902, + -0.0073529, + 0.0075926, + 0.0219029, + 0.0086399, + -0.0076668, + -0.011192, + -0.0254357, + -0.015882, + -0.0078701, + -0.0254358, + -0.0239007, + 0.0001489, + -0.0254359, + -0.0272217, + 0.0081676, + -0.0254358, + -0.0238998, + 0.0114887, + -0.0254357, + -0.0158808, + 0.0081667, + -0.0254355, + -0.0078622, + 0.0001477, + -0.0254355, + -0.0045411, + -0.0078709, + -0.0254355, + -0.007863, + -0.011192, + -0.0233769, + -0.015882, + -0.0078701, + -0.023377, + -0.0239007, + 0.0001489, + -0.0233771, + -0.0272218, + 0.0081676, + -0.023377, + -0.0238999, + 0.0114887, + -0.0233769, + -0.0158809, + 0.0081667, + -0.0233767, + -0.0078622, + 0.0001478, + -0.0234347, + -0.0045411, + -0.0078709, + -0.0233767, + -0.0078631, + 0.0223451, + 0.0040091, + 0.0020598, + 0.0223453, + 0.0046828, + -0.0010906, + 0.0223454, + 0.0029474, + -0.0037838, + 0.0223454, + -0.0002188, + -0.0044684, + 0.0223453, + -0.0029229, + -0.0027172, + 0.0223451, + -0.0035966, + 0.0004332, + 0.022345, + -0.0018295, + 0.0031482, + 0.022345, + 0.001305, + 0.003811, + -0.0219962, + 0.001305, + 0.0038095, + -0.0219962, + -0.0018295, + 0.0031467, + -0.0219961, + -0.0035966, + 0.0004317, + -0.0219961, + -0.0029229, + -0.0027187, + -0.0219961, + -0.0002188, + -0.00447, + -0.0219961, + 0.0029474, + -0.0037853, + -0.0219962, + 0.0046828, + -0.0010922, + -0.0219962, + 0.0040091, + 0.0020582, + -0.0215533, + 0.0086399, + -0.0076683, + -0.0215535, + -0.0073529, + 0.0075911, + -0.0199933, + -0.0073529, + 0.0075911, + -0.0199931, + 0.0086399, + -0.0076683, + -0.0199925, + -0.0220723, + -0.0267162, + -0.0199929, + -0.0219683, + -0.0049101, + -0.021553, + -0.0234347, + -0.0049101, + -0.0215526, + -0.0234641, + -0.0267162, + -0.0178296, + 0.0103754, + 0.0064455, + -0.0178295, + 0.0122873, + -0.0024944, + -0.0178293, + 0.0073462, + -0.0101482, + -0.0178291, + -0.0016221, + -0.0120796, + -0.0178291, + -0.0092954, + -0.0071101, + -0.0178293, + -0.0112073, + 0.0018298, + -0.0178295, + -0.0062094, + 0.0095226, + -0.0178296, + 0.0027021, + 0.011415, + -0.0199934, + 0.0103754, + 0.0064454, + -0.0199933, + 0.0122873, + -0.0024944, + -0.0199931, + 0.0073461, + -0.0101482, + -0.0199929, + -0.0016221, + -0.0120797, + -0.019993, + -0.0092954, + -0.0071101, + -0.0199931, + -0.0112073, + 0.0018297, + -0.0199933, + -0.0062094, + 0.0095226, + -0.0199935, + 0.002702, + 0.0114149, + 0.0203422, + -0.0200317, + -0.0049087, + 0.0219024, + -0.0200317, + -0.0049087, + -0.021553, + -0.0200317, + -0.0049102, + -0.0199929, + -0.0200317, + -0.0049101, + 0.0203434, + -0.0110508, + -0.026715, + 0.0219035, + -0.0110508, + -0.0267149, + -0.0215526, + -0.0110508, + -0.0267165, + -0.0199925, + -0.0110508, + -0.0267164, + 0.0064387, + -0.104224, + -0.002651, + 0.0064377, + -0.104224, + -0.0293495, + 0.00644, + -0.02566, + -0.002651, + 0.0064391, + -0.02566, + -0.0293495, + 0.0022139, + -0.0256599, + -0.0293494, + 0.0022148, + -0.0256599, + -0.0026509, + 0.0022125, + -0.104224, + -0.0293494, + 0.0022135, + -0.104224, + -0.0026509 + ], + "faces": [ + 2, + 1, + 0, + 13, + 0, + 2, + 13, + 0, + 2, + 0, + 2, + 11, + 1, + 13, + 0, + 2, + 2, + 12, + 13, + 0, + 2, + 11, + 3, + 1, + 0, + 2, + 4, + 12, + 2, + 0, + 2, + 9, + 3, + 11, + 0, + 2, + 4, + 10, + 12, + 0, + 2, + 9, + 5, + 3, + 0, + 2, + 6, + 10, + 4, + 0, + 2, + 7, + 5, + 9, + 0, + 2, + 6, + 8, + 10, + 0, + 2, + 5, + 7, + 21, + 0, + 2, + 8, + 6, + 22, + 0, + 2, + 7, + 25, + 21, + 0, + 2, + 26, + 8, + 22, + 0, + 2, + 7, + 9, + 25, + 0, + 2, + 10, + 8, + 26, + 0, + 2, + 21, + 27, + 23, + 0, + 2, + 28, + 22, + 24, + 0, + 2, + 41, + 27, + 21, + 0, + 2, + 28, + 42, + 22, + 0, + 2, + 14, + 15, + 53, + 0, + 2, + 16, + 14, + 53, + 0, + 2, + 15, + 17, + 53, + 0, + 2, + 18, + 16, + 53, + 0, + 2, + 17, + 19, + 53, + 0, + 2, + 20, + 18, + 53, + 0, + 2, + 19, + 23, + 53, + 0, + 2, + 24, + 20, + 53, + 0, + 2, + 23, + 27, + 53, + 0, + 2, + 28, + 24, + 53, + 0, + 2, + 27, + 29, + 138, + 0, + 2, + 139, + 30, + 28, + 0, + 2, + 41, + 43, + 126, + 0, + 2, + 127, + 44, + 42, + 0, + 2, + 51, + 128, + 126, + 0, + 2, + 127, + 129, + 51, + 0, + 2, + 51, + 50, + 44, + 0, + 2, + 51, + 44, + 127, + 0, + 2, + 43, + 50, + 51, + 0, + 2, + 43, + 51, + 126, + 0, + 2, + 139, + 52, + 129, + 0, + 2, + 129, + 52, + 51, + 0, + 2, + 51, + 52, + 128, + 0, + 2, + 128, + 52, + 138, + 0, + 2, + 52, + 139, + 53, + 0, + 2, + 139, + 28, + 53, + 0, + 2, + 27, + 138, + 53, + 0, + 2, + 138, + 52, + 53, + 0, + 2, + 131, + 137, + 129, + 0, + 2, + 129, + 137, + 139, + 0, + 2, + 138, + 136, + 128, + 0, + 2, + 128, + 136, + 130, + 0, + 2, + 133, + 135, + 131, + 0, + 2, + 131, + 135, + 137, + 0, + 2, + 136, + 134, + 130, + 0, + 2, + 134, + 132, + 130, + 0, + 2, + 139, + 137, + 32, + 0, + 2, + 139, + 32, + 30, + 0, + 2, + 31, + 138, + 29, + 0, + 2, + 31, + 136, + 138, + 0, + 2, + 137, + 135, + 34, + 0, + 2, + 137, + 34, + 32, + 0, + 2, + 33, + 134, + 136, + 0, + 2, + 33, + 136, + 31, + 0, + 2, + 135, + 133, + 36, + 0, + 2, + 135, + 36, + 34, + 0, + 2, + 35, + 132, + 134, + 0, + 2, + 35, + 134, + 33, + 0, + 2, + 133, + 131, + 38, + 0, + 2, + 133, + 38, + 36, + 0, + 2, + 37, + 130, + 132, + 0, + 2, + 37, + 132, + 35, + 0, + 2, + 131, + 129, + 40, + 0, + 2, + 131, + 40, + 38, + 0, + 2, + 39, + 128, + 130, + 0, + 2, + 39, + 130, + 37, + 0, + 2, + 127, + 42, + 40, + 0, + 2, + 127, + 40, + 129, + 0, + 2, + 39, + 41, + 126, + 0, + 2, + 39, + 126, + 128, + 0, + 2, + 40, + 42, + 30, + 0, + 2, + 42, + 28, + 30, + 0, + 2, + 27, + 41, + 29, + 0, + 2, + 41, + 39, + 29, + 0, + 2, + 49, + 46, + 50, + 0, + 2, + 46, + 44, + 50, + 0, + 2, + 43, + 45, + 50, + 0, + 2, + 45, + 49, + 50, + 0, + 2, + 44, + 26, + 22, + 0, + 2, + 44, + 22, + 42, + 0, + 2, + 21, + 25, + 43, + 0, + 2, + 21, + 43, + 41, + 0, + 2, + 44, + 46, + 26, + 0, + 2, + 46, + 10, + 26, + 0, + 2, + 9, + 45, + 25, + 0, + 2, + 45, + 43, + 25, + 0, + 2, + 49, + 13, + 48, + 0, + 2, + 13, + 12, + 48, + 0, + 2, + 11, + 13, + 47, + 0, + 2, + 13, + 49, + 47, + 0, + 2, + 48, + 12, + 46, + 0, + 2, + 12, + 10, + 46, + 0, + 2, + 9, + 11, + 45, + 0, + 2, + 11, + 47, + 45, + 0, + 2, + 24, + 22, + 20, + 0, + 2, + 22, + 6, + 20, + 0, + 2, + 5, + 21, + 19, + 0, + 2, + 21, + 23, + 19, + 0, + 2, + 20, + 6, + 4, + 0, + 2, + 20, + 4, + 18, + 0, + 2, + 3, + 5, + 19, + 0, + 2, + 3, + 19, + 17, + 0, + 2, + 18, + 4, + 2, + 0, + 2, + 18, + 2, + 16, + 0, + 2, + 1, + 3, + 17, + 0, + 2, + 1, + 17, + 15, + 0, + 2, + 0, + 14, + 16, + 0, + 2, + 0, + 16, + 2, + 0, + 2, + 0, + 1, + 15, + 0, + 2, + 0, + 15, + 14, + 0, + 2, + 45, + 47, + 49, + 0, + 2, + 46, + 49, + 48, + 0, + 2, + 37, + 29, + 39, + 0, + 2, + 37, + 31, + 29, + 0, + 2, + 35, + 31, + 37, + 0, + 2, + 35, + 33, + 31, + 0, + 2, + 38, + 40, + 30, + 0, + 2, + 38, + 30, + 32, + 0, + 2, + 36, + 38, + 32, + 0, + 2, + 36, + 32, + 34, + 0, + 2, + 150, + 152, + 151, + 1, + 2, + 155, + 154, + 148, + 1, + 2, + 164, + 165, + 171, + 1, + 2, + 169, + 167, + 168, + 1, + 2, + 181, + 180, + 187, + 1, + 2, + 183, + 185, + 184, + 1, + 2, + 192, + 191, + 190, + 1, + 2, + 194, + 188, + 195, + 1, + 2, + 204, + 211, + 205, + 1, + 2, + 209, + 208, + 207, + 1, + 2, + 161, + 159, + 220, + 1, + 2, + 220, + 159, + 158, + 1, + 2, + 157, + 156, + 221, + 1, + 2, + 221, + 156, + 162, + 1, + 2, + 202, + 222, + 203, + 1, + 2, + 222, + 197, + 203, + 1, + 2, + 198, + 223, + 200, + 1, + 2, + 223, + 201, + 200, + 1, + 2, + 159, + 161, + 224, + 1, + 2, + 224, + 161, + 160, + 1, + 2, + 163, + 162, + 225, + 1, + 2, + 225, + 162, + 156, + 1, + 2, + 196, + 226, + 197, + 1, + 2, + 226, + 203, + 197, + 1, + 2, + 200, + 227, + 198, + 1, + 2, + 227, + 199, + 198, + 1, + 2, + 227, + 200, + 226, + 1, + 2, + 200, + 203, + 226, + 1, + 2, + 199, + 227, + 226, + 1, + 2, + 199, + 226, + 196, + 1, + 2, + 225, + 160, + 163, + 1, + 2, + 225, + 224, + 160, + 1, + 2, + 156, + 159, + 225, + 1, + 2, + 225, + 159, + 224, + 1, + 2, + 222, + 202, + 201, + 1, + 2, + 222, + 201, + 223, + 1, + 2, + 197, + 222, + 223, + 1, + 2, + 197, + 223, + 198, + 1, + 2, + 220, + 162, + 161, + 1, + 2, + 220, + 221, + 162, + 1, + 2, + 158, + 221, + 220, + 1, + 2, + 158, + 157, + 221, + 1, + 2, + 218, + 215, + 217, + 1, + 2, + 217, + 215, + 216, + 1, + 2, + 219, + 215, + 218, + 1, + 2, + 219, + 214, + 215, + 1, + 2, + 212, + 214, + 219, + 1, + 2, + 212, + 213, + 214, + 1, + 2, + 210, + 209, + 207, + 1, + 2, + 210, + 207, + 206, + 1, + 2, + 205, + 211, + 210, + 1, + 2, + 205, + 210, + 206, + 1, + 2, + 189, + 188, + 194, + 1, + 2, + 189, + 194, + 193, + 1, + 2, + 192, + 190, + 189, + 1, + 2, + 192, + 189, + 193, + 1, + 2, + 199, + 196, + 197, + 1, + 2, + 199, + 197, + 198, + 1, + 2, + 204, + 219, + 211, + 1, + 2, + 204, + 212, + 219, + 1, + 2, + 212, + 205, + 213, + 1, + 2, + 212, + 204, + 205, + 1, + 2, + 213, + 206, + 214, + 1, + 2, + 213, + 205, + 206, + 1, + 2, + 214, + 207, + 215, + 1, + 2, + 214, + 206, + 207, + 1, + 2, + 215, + 208, + 216, + 1, + 2, + 215, + 207, + 208, + 1, + 2, + 216, + 209, + 217, + 1, + 2, + 216, + 208, + 209, + 1, + 2, + 217, + 210, + 218, + 1, + 2, + 217, + 209, + 210, + 1, + 2, + 218, + 211, + 219, + 1, + 2, + 218, + 210, + 211, + 1, + 2, + 141, + 140, + 148, + 1, + 2, + 141, + 148, + 149, + 1, + 2, + 149, + 150, + 142, + 1, + 2, + 149, + 142, + 141, + 1, + 2, + 150, + 151, + 143, + 1, + 2, + 150, + 143, + 142, + 1, + 2, + 151, + 152, + 144, + 1, + 2, + 151, + 144, + 143, + 1, + 2, + 152, + 153, + 145, + 1, + 2, + 152, + 145, + 144, + 1, + 2, + 153, + 154, + 146, + 1, + 2, + 153, + 146, + 145, + 1, + 2, + 154, + 155, + 147, + 1, + 2, + 154, + 147, + 146, + 1, + 2, + 140, + 147, + 155, + 1, + 2, + 140, + 155, + 148, + 1, + 2, + 162, + 160, + 161, + 1, + 2, + 162, + 163, + 160, + 1, + 2, + 179, + 172, + 164, + 1, + 2, + 179, + 164, + 171, + 1, + 2, + 165, + 164, + 172, + 1, + 2, + 165, + 172, + 173, + 1, + 2, + 166, + 165, + 173, + 1, + 2, + 166, + 173, + 174, + 1, + 2, + 167, + 166, + 174, + 1, + 2, + 167, + 174, + 175, + 1, + 2, + 168, + 167, + 175, + 1, + 2, + 168, + 175, + 176, + 1, + 2, + 169, + 168, + 176, + 1, + 2, + 169, + 176, + 177, + 1, + 2, + 170, + 169, + 178, + 1, + 2, + 169, + 177, + 178, + 1, + 2, + 171, + 170, + 178, + 1, + 2, + 171, + 178, + 179, + 1, + 2, + 186, + 183, + 182, + 1, + 2, + 186, + 185, + 183, + 1, + 2, + 181, + 186, + 182, + 1, + 2, + 181, + 187, + 186, + 1, + 2, + 170, + 167, + 169, + 1, + 2, + 170, + 166, + 167, + 1, + 2, + 165, + 170, + 171, + 1, + 2, + 165, + 166, + 170, + 1, + 2, + 149, + 154, + 153, + 1, + 2, + 149, + 148, + 154, + 1, + 2, + 152, + 149, + 153, + 1, + 2, + 152, + 150, + 149, + 1, + 2, + 147, + 140, + 145, + 1, + 2, + 147, + 145, + 146, + 1, + 2, + 140, + 141, + 144, + 1, + 2, + 140, + 144, + 145, + 1, + 2, + 143, + 144, + 142, + 1, + 2, + 144, + 141, + 142, + 1, + 2, + 182, + 183, + 192, + 1, + 2, + 182, + 192, + 193, + 1, + 2, + 183, + 184, + 191, + 1, + 2, + 183, + 191, + 192, + 1, + 2, + 184, + 185, + 190, + 1, + 2, + 184, + 190, + 191, + 1, + 2, + 185, + 186, + 189, + 1, + 2, + 185, + 189, + 190, + 1, + 2, + 186, + 187, + 188, + 1, + 2, + 186, + 188, + 189, + 1, + 2, + 180, + 195, + 188, + 1, + 2, + 180, + 188, + 187, + 1, + 2, + 180, + 181, + 194, + 1, + 2, + 180, + 194, + 195, + 1, + 2, + 181, + 182, + 193, + 1, + 2, + 181, + 193, + 194, + 1, + 2, + 157, + 158, + 201, + 1, + 2, + 157, + 201, + 202, + 1, + 2, + 156, + 203, + 200, + 1, + 2, + 156, + 200, + 159, + 1, + 2, + 158, + 159, + 200, + 1, + 2, + 158, + 200, + 201, + 1, + 2, + 156, + 157, + 202, + 1, + 2, + 156, + 202, + 203, + 1, + 2, + 125, + 57, + 55, + 1, + 2, + 125, + 55, + 75, + 1, + 2, + 54, + 56, + 124, + 1, + 2, + 54, + 124, + 74, + 1, + 2, + 123, + 59, + 125, + 1, + 2, + 59, + 57, + 125, + 1, + 2, + 56, + 58, + 124, + 1, + 2, + 58, + 122, + 124, + 1, + 2, + 121, + 61, + 123, + 1, + 2, + 61, + 59, + 123, + 1, + 2, + 58, + 60, + 122, + 1, + 2, + 60, + 120, + 122, + 1, + 2, + 119, + 63, + 61, + 1, + 2, + 119, + 61, + 121, + 1, + 2, + 60, + 62, + 118, + 1, + 2, + 60, + 118, + 120, + 1, + 2, + 117, + 65, + 119, + 1, + 2, + 65, + 63, + 119, + 1, + 2, + 62, + 64, + 118, + 1, + 2, + 64, + 116, + 118, + 1, + 2, + 101, + 67, + 117, + 1, + 2, + 67, + 65, + 117, + 1, + 2, + 64, + 66, + 116, + 1, + 2, + 66, + 100, + 116, + 1, + 2, + 75, + 55, + 87, + 1, + 2, + 75, + 87, + 115, + 1, + 2, + 86, + 54, + 74, + 1, + 2, + 86, + 74, + 114, + 1, + 2, + 115, + 87, + 113, + 1, + 2, + 87, + 89, + 113, + 1, + 2, + 88, + 86, + 112, + 1, + 2, + 86, + 114, + 112, + 1, + 2, + 113, + 89, + 91, + 1, + 2, + 113, + 91, + 111, + 1, + 2, + 90, + 88, + 112, + 1, + 2, + 90, + 112, + 110, + 1, + 2, + 111, + 91, + 93, + 1, + 2, + 111, + 93, + 109, + 1, + 2, + 92, + 90, + 110, + 1, + 2, + 92, + 110, + 108, + 1, + 2, + 109, + 93, + 107, + 1, + 2, + 93, + 95, + 107, + 1, + 2, + 94, + 92, + 106, + 1, + 2, + 92, + 108, + 106, + 1, + 2, + 107, + 95, + 97, + 1, + 2, + 107, + 97, + 105, + 1, + 2, + 96, + 94, + 106, + 1, + 2, + 96, + 106, + 104, + 1, + 2, + 105, + 97, + 99, + 1, + 2, + 105, + 99, + 103, + 1, + 2, + 98, + 96, + 104, + 1, + 2, + 98, + 104, + 102, + 1, + 2, + 103, + 99, + 67, + 1, + 2, + 103, + 67, + 101, + 1, + 2, + 66, + 98, + 102, + 1, + 2, + 66, + 102, + 100, + 1, + 2, + 85, + 77, + 83, + 1, + 2, + 85, + 101, + 77, + 1, + 2, + 76, + 84, + 82, + 1, + 2, + 76, + 100, + 84, + 1, + 2, + 83, + 77, + 81, + 1, + 2, + 81, + 77, + 79, + 1, + 2, + 78, + 76, + 80, + 1, + 2, + 80, + 76, + 82, + 1, + 2, + 97, + 65, + 67, + 1, + 2, + 97, + 67, + 99, + 1, + 2, + 66, + 64, + 96, + 1, + 2, + 66, + 96, + 98, + 1, + 2, + 95, + 63, + 65, + 1, + 2, + 95, + 65, + 97, + 1, + 2, + 64, + 62, + 94, + 1, + 2, + 64, + 94, + 96, + 1, + 2, + 93, + 61, + 63, + 1, + 2, + 93, + 63, + 95, + 1, + 2, + 62, + 60, + 92, + 1, + 2, + 62, + 92, + 94, + 1, + 2, + 91, + 59, + 61, + 1, + 2, + 91, + 61, + 93, + 1, + 2, + 60, + 58, + 90, + 1, + 2, + 60, + 90, + 92, + 1, + 2, + 89, + 57, + 59, + 1, + 2, + 89, + 59, + 91, + 1, + 2, + 58, + 56, + 88, + 1, + 2, + 58, + 88, + 90, + 1, + 2, + 87, + 55, + 57, + 1, + 2, + 87, + 57, + 89, + 1, + 2, + 56, + 54, + 86, + 1, + 2, + 56, + 86, + 88, + 1, + 2, + 83, + 72, + 73, + 1, + 2, + 83, + 73, + 85, + 1, + 2, + 73, + 72, + 82, + 1, + 2, + 73, + 82, + 84, + 1, + 2, + 81, + 71, + 72, + 1, + 2, + 81, + 72, + 83, + 1, + 2, + 72, + 71, + 80, + 1, + 2, + 72, + 80, + 82, + 1, + 2, + 79, + 70, + 71, + 1, + 2, + 79, + 71, + 81, + 1, + 2, + 71, + 70, + 78, + 1, + 2, + 71, + 78, + 80, + 1, + 2, + 77, + 69, + 79, + 1, + 2, + 69, + 70, + 79, + 1, + 2, + 70, + 69, + 78, + 1, + 2, + 69, + 76, + 78, + 1, + 2, + 101, + 68, + 69, + 1, + 2, + 101, + 69, + 77, + 1, + 2, + 69, + 68, + 100, + 1, + 2, + 69, + 100, + 76, + 1, + 2, + 232, + 234, + 235, + 1, + 2, + 232, + 235, + 233, + 1, + 2, + 230, + 233, + 235, + 1, + 2, + 230, + 235, + 228, + 1, + 2, + 231, + 232, + 233, + 1, + 2, + 231, + 233, + 230, + 1, + 2, + 229, + 234, + 232, + 1, + 2, + 229, + 232, + 231, + 1, + 2, + 228, + 235, + 229, + 1, + 2, + 235, + 234, + 229, + 1, + 2, + 228, + 229, + 231, + 1, + 2, + 228, + 231, + 230, + 1 + ] } diff --git a/src/client/components/localisation/darwin_robot/left_arm/config/left_shoulder.json b/src/client/components/localisation/darwin_robot/left_arm/config/left_shoulder.json index 12f9014d..426f43f4 100644 --- a/src/client/components/localisation/darwin_robot/left_arm/config/left_shoulder.json +++ b/src/client/components/localisation/darwin_robot/left_arm/config/left_shoulder.json @@ -1,1047 +1,1047 @@ { - "metadata": { - "formatVersion": 3 - }, - "materials": [ - { - "DbgColor": 15658734, - "DbgIndex": 0, - "DbgName": "Metal", - "colorDiffuse": [ - 0.7, - 0.7, - 0.7 - ], - "colorSpecular": [ - 0.168737, - 0.168737, - 0.168737 - ], - "shading": "Lambert", - "specularCoef": 50, - "opacity": 1.0, - "vertexColors": false - } - ], - "normals": [], - "colors": [], - "uvs": [], - "vertices": [ - 0.0025152, - -0.0272838, - -0.0201519, - -0.0063963, - -0.0253913, - -0.020152, - -0.011394, - -0.0176984, - -0.0201521, - -0.009482, - -0.0087585, - -0.0201522, - -0.0018086, - -0.0037891, - -0.0201522, - 0.0071596, - -0.0057208, - -0.0201521, - 0.0121006, - -0.0133746, - -0.020152, - 0.0101886, - -0.0223144, - -0.0201519, - 0.0025152, - -0.0272838, - -0.017988, - -0.0063963, - -0.0253913, - -0.0179881, - -0.011394, - -0.0176983, - -0.0179883, - -0.009482, - -0.0087585, - -0.0179884, - -0.0018086, - -0.0037891, - -0.0179884, - 0.0071596, - -0.0057207, - -0.0179883, - 0.0121006, - -0.0133746, - -0.0179882, - 0.0101886, - -0.0223144, - -0.0179881, - -0.0236502, - 0.0108478, - -0.0217128, - -0.0236213, - -0.0109584, - -0.0217124, - -0.0221549, - -0.0109583, - -0.0201523, - -0.0222586, - 0.0108478, - -0.0201526, - 0.0084534, - -0.0082007, - -0.0201521, - -0.0075397, - -0.0234598, - -0.020152, - -0.0075397, - -0.0234599, - -0.0217122, - 0.0084534, - -0.0082007, - -0.0217123, - -0.0256226, - 1.39e-05, - 0.0113823, - -0.0256226, - 0.0080327, - 0.0080607, - -0.0256224, - 0.011354, - 4.18e-05, - -0.0256223, - 0.0080324, - -0.007977, - -0.0256222, - 1.35e-05, - -0.0112984, - -0.0256223, - -0.0080052, - -0.0079767, - -0.0256224, - -0.0113266, - 4.22e-05, - -0.0256226, - -0.008005, - 0.0080609, - -0.0235638, - 1.39e-05, - 0.0113823, - -0.0235638, - 0.0080327, - 0.0080607, - -0.0235636, - 0.011354, - 4.18e-05, - -0.0235635, - 0.0080324, - -0.007977, - -0.0235634, - 1.35e-05, - -0.0112983, - -0.0235635, - -0.0080052, - -0.0079767, - -0.0236216, - -0.0113266, - 4.22e-05, - -0.0235638, - -0.008005, - 0.008061, - 0.0038224, - -0.0179272, - -0.0221549, - 0.0044962, - -0.0147768, - -0.022155, - 0.0027608, - -0.0120837, - -0.022155, - -0.0004054, - -0.0113989, - -0.0221551, - -0.0031095, - -0.0131501, - -0.0221551, - -0.0037833, - -0.0163005, - -0.022155, - -0.0020162, - -0.0190155, - -0.022155, - 0.0011183, - -0.0196784, - -0.0221549, - 0.0011175, - -0.0196784, - 0.0221863, - -0.002017, - -0.0190155, - 0.0221863, - -0.0037841, - -0.0163005, - 0.0221862, - -0.0031103, - -0.0131501, - 0.0221863, - -0.0004062, - -0.0113989, - 0.0221864, - 0.0027601, - -0.0120837, - 0.0221865, - 0.0044954, - -0.0147768, - 0.0221865, - 0.0038216, - -0.0179272, - 0.0221864, - 0.0084526, - -0.0082007, - 0.0217439, - -0.0075404, - -0.0234599, - 0.0217433, - -0.0075404, - -0.0234598, - 0.0201831, - 0.0084527, - -0.0082007, - 0.0201838, - -0.0222593, - 0.0108478, - 0.0201832, - -0.0221556, - -0.0109583, - 0.0201828, - -0.023622, - -0.0109584, - 0.021743, - -0.023651, - 0.0108478, - 0.0217434, - 0.0101879, - -0.0223144, - 0.0180198, - 0.0121, - -0.0133746, - 0.01802, - 0.007159, - -0.0057207, - 0.0180199, - -0.0018092, - -0.0037891, - 0.0180197, - -0.0094826, - -0.0087585, - 0.0180194, - -0.0113947, - -0.0176983, - 0.0180193, - -0.0063969, - -0.0253913, - 0.0180193, - 0.0025145, - -0.0272838, - 0.0180195, - 0.0101879, - -0.0223144, - 0.0201836, - 0.0120999, - -0.0133746, - 0.0201838, - 0.0071589, - -0.0057208, - 0.0201838, - -0.0018093, - -0.0037891, - 0.0201835, - -0.0094827, - -0.0087585, - 0.0201833, - -0.0113947, - -0.0176984, - 0.0201831, - -0.006397, - -0.0253913, - 0.0201831, - 0.0025145, - -0.0272838, - 0.0201833, - -0.0202183, - -0.0109583, - -0.0201522, - -0.0202183, - -0.0109584, - -0.0217124, - -0.020219, - -0.0109584, - 0.021743, - -0.020219, - -0.0109583, - 0.0201829, - -0.0112371, - 0.0108478, - -0.0201524, - -0.011237, - 0.0108478, - -0.0217126, - -0.0112378, - 0.0108478, - 0.0217436, - -0.0112378, - 0.0108478, - 0.0201834 - ], - "faces": [ - 2, - 10, - 12, - 11, - 0, - 2, - 15, - 14, - 8, - 0, - 2, - 24, - 25, - 31, - 0, - 2, - 29, - 27, - 28, - 0, - 2, - 41, - 40, - 47, - 0, - 2, - 43, - 45, - 44, - 0, - 2, - 52, - 51, - 50, - 0, - 2, - 54, - 48, - 55, - 0, - 2, - 64, - 71, - 65, - 0, - 2, - 69, - 68, - 67, - 0, - 2, - 21, - 19, - 80, - 0, - 2, - 80, - 19, - 18, - 0, - 2, - 17, - 16, - 81, - 0, - 2, - 81, - 16, - 22, - 0, - 2, - 62, - 82, - 63, - 0, - 2, - 82, - 57, - 63, - 0, - 2, - 58, - 83, - 60, - 0, - 2, - 83, - 61, - 60, - 0, - 2, - 19, - 21, - 84, - 0, - 2, - 84, - 21, - 20, - 0, - 2, - 23, - 22, - 85, - 0, - 2, - 85, - 22, - 16, - 0, - 2, - 56, - 86, - 57, - 0, - 2, - 86, - 63, - 57, - 0, - 2, - 60, - 87, - 58, - 0, - 2, - 87, - 59, - 58, - 0, - 2, - 87, - 60, - 86, - 0, - 2, - 60, - 63, - 86, - 0, - 2, - 59, - 87, - 86, - 0, - 2, - 59, - 86, - 56, - 0, - 2, - 85, - 20, - 23, - 0, - 2, - 85, - 84, - 20, - 0, - 2, - 16, - 19, - 85, - 0, - 2, - 85, - 19, - 84, - 0, - 2, - 82, - 62, - 61, - 0, - 2, - 82, - 61, - 83, - 0, - 2, - 57, - 82, - 83, - 0, - 2, - 57, - 83, - 58, - 0, - 2, - 80, - 22, - 21, - 0, - 2, - 80, - 81, - 22, - 0, - 2, - 18, - 81, - 80, - 0, - 2, - 18, - 17, - 81, - 0, - 2, - 78, - 75, - 77, - 0, - 2, - 77, - 75, - 76, - 0, - 2, - 79, - 75, - 78, - 0, - 2, - 79, - 74, - 75, - 0, - 2, - 72, - 74, - 79, - 0, - 2, - 72, - 73, - 74, - 0, - 2, - 70, - 69, - 67, - 0, - 2, - 70, - 67, - 66, - 0, - 2, - 65, - 71, - 70, - 0, - 2, - 65, - 70, - 66, - 0, - 2, - 49, - 48, - 54, - 0, - 2, - 49, - 54, - 53, - 0, - 2, - 52, - 50, - 49, - 0, - 2, - 52, - 49, - 53, - 0, - 2, - 59, - 56, - 57, - 0, - 2, - 59, - 57, - 58, - 0, - 2, - 64, - 79, - 71, - 0, - 2, - 64, - 72, - 79, - 0, - 2, - 72, - 65, - 73, - 0, - 2, - 72, - 64, - 65, - 0, - 2, - 73, - 66, - 74, - 0, - 2, - 73, - 65, - 66, - 0, - 2, - 74, - 67, - 75, - 0, - 2, - 74, - 66, - 67, - 0, - 2, - 75, - 68, - 76, - 0, - 2, - 75, - 67, - 68, - 0, - 2, - 76, - 69, - 77, - 0, - 2, - 76, - 68, - 69, - 0, - 2, - 77, - 70, - 78, - 0, - 2, - 77, - 69, - 70, - 0, - 2, - 78, - 71, - 79, - 0, - 2, - 78, - 70, - 71, - 0, - 2, - 1, - 0, - 8, - 0, - 2, - 1, - 8, - 9, - 0, - 2, - 9, - 10, - 2, - 0, - 2, - 9, - 2, - 1, - 0, - 2, - 10, - 11, - 3, - 0, - 2, - 10, - 3, - 2, - 0, - 2, - 11, - 12, - 4, - 0, - 2, - 11, - 4, - 3, - 0, - 2, - 12, - 13, - 5, - 0, - 2, - 12, - 5, - 4, - 0, - 2, - 13, - 14, - 6, - 0, - 2, - 13, - 6, - 5, - 0, - 2, - 14, - 15, - 7, - 0, - 2, - 14, - 7, - 6, - 0, - 2, - 0, - 7, - 15, - 0, - 2, - 0, - 15, - 8, - 0, - 2, - 22, - 20, - 21, - 0, - 2, - 22, - 23, - 20, - 0, - 2, - 39, - 32, - 24, - 0, - 2, - 39, - 24, - 31, - 0, - 2, - 25, - 24, - 32, - 0, - 2, - 25, - 32, - 33, - 0, - 2, - 26, - 25, - 33, - 0, - 2, - 26, - 33, - 34, - 0, - 2, - 27, - 26, - 34, - 0, - 2, - 27, - 34, - 35, - 0, - 2, - 28, - 27, - 35, - 0, - 2, - 28, - 35, - 36, - 0, - 2, - 29, - 28, - 36, - 0, - 2, - 29, - 36, - 37, - 0, - 2, - 30, - 29, - 38, - 0, - 2, - 29, - 37, - 38, - 0, - 2, - 31, - 30, - 38, - 0, - 2, - 31, - 38, - 39, - 0, - 2, - 46, - 43, - 42, - 0, - 2, - 46, - 45, - 43, - 0, - 2, - 41, - 46, - 42, - 0, - 2, - 41, - 47, - 46, - 0, - 2, - 30, - 27, - 29, - 0, - 2, - 30, - 26, - 27, - 0, - 2, - 25, - 30, - 31, - 0, - 2, - 25, - 26, - 30, - 0, - 2, - 9, - 14, - 13, - 0, - 2, - 9, - 8, - 14, - 0, - 2, - 12, - 9, - 13, - 0, - 2, - 12, - 10, - 9, - 0, - 2, - 7, - 0, - 5, - 0, - 2, - 7, - 5, - 6, - 0, - 2, - 0, - 1, - 4, - 0, - 2, - 0, - 4, - 5, - 0, - 2, - 3, - 4, - 2, - 0, - 2, - 4, - 1, - 2, - 0, - 2, - 42, - 43, - 52, - 0, - 2, - 42, - 52, - 53, - 0, - 2, - 43, - 44, - 51, - 0, - 2, - 43, - 51, - 52, - 0, - 2, - 44, - 45, - 50, - 0, - 2, - 44, - 50, - 51, - 0, - 2, - 45, - 46, - 49, - 0, - 2, - 45, - 49, - 50, - 0, - 2, - 46, - 47, - 48, - 0, - 2, - 46, - 48, - 49, - 0, - 2, - 40, - 55, - 48, - 0, - 2, - 40, - 48, - 47, - 0, - 2, - 40, - 41, - 54, - 0, - 2, - 40, - 54, - 55, - 0, - 2, - 41, - 42, - 53, - 0, - 2, - 41, - 53, - 54, - 0, - 2, - 17, - 18, - 61, - 0, - 2, - 17, - 61, - 62, - 0, - 2, - 16, - 63, - 60, - 0, - 2, - 16, - 60, - 19, - 0, - 2, - 18, - 19, - 60, - 0, - 2, - 18, - 60, - 61, - 0, - 2, - 16, - 17, - 62, - 0, - 2, - 16, - 62, - 63, - 0 - ] + "metadata": { + "formatVersion": 3 + }, + "materials": [ + { + "DbgColor": 15658734, + "DbgIndex": 0, + "DbgName": "Metal", + "colorDiffuse": [ + 0.7, + 0.7, + 0.7 + ], + "colorSpecular": [ + 0.168737, + 0.168737, + 0.168737 + ], + "shading": "Lambert", + "specularCoef": 50, + "opacity": 1.0, + "vertexColors": false + } + ], + "normals": [], + "colors": [], + "uvs": [], + "vertices": [ + 0.0025152, + -0.0272838, + -0.0201519, + -0.0063963, + -0.0253913, + -0.020152, + -0.011394, + -0.0176984, + -0.0201521, + -0.009482, + -0.0087585, + -0.0201522, + -0.0018086, + -0.0037891, + -0.0201522, + 0.0071596, + -0.0057208, + -0.0201521, + 0.0121006, + -0.0133746, + -0.020152, + 0.0101886, + -0.0223144, + -0.0201519, + 0.0025152, + -0.0272838, + -0.017988, + -0.0063963, + -0.0253913, + -0.0179881, + -0.011394, + -0.0176983, + -0.0179883, + -0.009482, + -0.0087585, + -0.0179884, + -0.0018086, + -0.0037891, + -0.0179884, + 0.0071596, + -0.0057207, + -0.0179883, + 0.0121006, + -0.0133746, + -0.0179882, + 0.0101886, + -0.0223144, + -0.0179881, + -0.0236502, + 0.0108478, + -0.0217128, + -0.0236213, + -0.0109584, + -0.0217124, + -0.0221549, + -0.0109583, + -0.0201523, + -0.0222586, + 0.0108478, + -0.0201526, + 0.0084534, + -0.0082007, + -0.0201521, + -0.0075397, + -0.0234598, + -0.020152, + -0.0075397, + -0.0234599, + -0.0217122, + 0.0084534, + -0.0082007, + -0.0217123, + -0.0256226, + 1.39e-05, + 0.0113823, + -0.0256226, + 0.0080327, + 0.0080607, + -0.0256224, + 0.011354, + 4.18e-05, + -0.0256223, + 0.0080324, + -0.007977, + -0.0256222, + 1.35e-05, + -0.0112984, + -0.0256223, + -0.0080052, + -0.0079767, + -0.0256224, + -0.0113266, + 4.22e-05, + -0.0256226, + -0.008005, + 0.0080609, + -0.0235638, + 1.39e-05, + 0.0113823, + -0.0235638, + 0.0080327, + 0.0080607, + -0.0235636, + 0.011354, + 4.18e-05, + -0.0235635, + 0.0080324, + -0.007977, + -0.0235634, + 1.35e-05, + -0.0112983, + -0.0235635, + -0.0080052, + -0.0079767, + -0.0236216, + -0.0113266, + 4.22e-05, + -0.0235638, + -0.008005, + 0.008061, + 0.0038224, + -0.0179272, + -0.0221549, + 0.0044962, + -0.0147768, + -0.022155, + 0.0027608, + -0.0120837, + -0.022155, + -0.0004054, + -0.0113989, + -0.0221551, + -0.0031095, + -0.0131501, + -0.0221551, + -0.0037833, + -0.0163005, + -0.022155, + -0.0020162, + -0.0190155, + -0.022155, + 0.0011183, + -0.0196784, + -0.0221549, + 0.0011175, + -0.0196784, + 0.0221863, + -0.002017, + -0.0190155, + 0.0221863, + -0.0037841, + -0.0163005, + 0.0221862, + -0.0031103, + -0.0131501, + 0.0221863, + -0.0004062, + -0.0113989, + 0.0221864, + 0.0027601, + -0.0120837, + 0.0221865, + 0.0044954, + -0.0147768, + 0.0221865, + 0.0038216, + -0.0179272, + 0.0221864, + 0.0084526, + -0.0082007, + 0.0217439, + -0.0075404, + -0.0234599, + 0.0217433, + -0.0075404, + -0.0234598, + 0.0201831, + 0.0084527, + -0.0082007, + 0.0201838, + -0.0222593, + 0.0108478, + 0.0201832, + -0.0221556, + -0.0109583, + 0.0201828, + -0.023622, + -0.0109584, + 0.021743, + -0.023651, + 0.0108478, + 0.0217434, + 0.0101879, + -0.0223144, + 0.0180198, + 0.0121, + -0.0133746, + 0.01802, + 0.007159, + -0.0057207, + 0.0180199, + -0.0018092, + -0.0037891, + 0.0180197, + -0.0094826, + -0.0087585, + 0.0180194, + -0.0113947, + -0.0176983, + 0.0180193, + -0.0063969, + -0.0253913, + 0.0180193, + 0.0025145, + -0.0272838, + 0.0180195, + 0.0101879, + -0.0223144, + 0.0201836, + 0.0120999, + -0.0133746, + 0.0201838, + 0.0071589, + -0.0057208, + 0.0201838, + -0.0018093, + -0.0037891, + 0.0201835, + -0.0094827, + -0.0087585, + 0.0201833, + -0.0113947, + -0.0176984, + 0.0201831, + -0.006397, + -0.0253913, + 0.0201831, + 0.0025145, + -0.0272838, + 0.0201833, + -0.0202183, + -0.0109583, + -0.0201522, + -0.0202183, + -0.0109584, + -0.0217124, + -0.020219, + -0.0109584, + 0.021743, + -0.020219, + -0.0109583, + 0.0201829, + -0.0112371, + 0.0108478, + -0.0201524, + -0.011237, + 0.0108478, + -0.0217126, + -0.0112378, + 0.0108478, + 0.0217436, + -0.0112378, + 0.0108478, + 0.0201834 + ], + "faces": [ + 2, + 10, + 12, + 11, + 0, + 2, + 15, + 14, + 8, + 0, + 2, + 24, + 25, + 31, + 0, + 2, + 29, + 27, + 28, + 0, + 2, + 41, + 40, + 47, + 0, + 2, + 43, + 45, + 44, + 0, + 2, + 52, + 51, + 50, + 0, + 2, + 54, + 48, + 55, + 0, + 2, + 64, + 71, + 65, + 0, + 2, + 69, + 68, + 67, + 0, + 2, + 21, + 19, + 80, + 0, + 2, + 80, + 19, + 18, + 0, + 2, + 17, + 16, + 81, + 0, + 2, + 81, + 16, + 22, + 0, + 2, + 62, + 82, + 63, + 0, + 2, + 82, + 57, + 63, + 0, + 2, + 58, + 83, + 60, + 0, + 2, + 83, + 61, + 60, + 0, + 2, + 19, + 21, + 84, + 0, + 2, + 84, + 21, + 20, + 0, + 2, + 23, + 22, + 85, + 0, + 2, + 85, + 22, + 16, + 0, + 2, + 56, + 86, + 57, + 0, + 2, + 86, + 63, + 57, + 0, + 2, + 60, + 87, + 58, + 0, + 2, + 87, + 59, + 58, + 0, + 2, + 87, + 60, + 86, + 0, + 2, + 60, + 63, + 86, + 0, + 2, + 59, + 87, + 86, + 0, + 2, + 59, + 86, + 56, + 0, + 2, + 85, + 20, + 23, + 0, + 2, + 85, + 84, + 20, + 0, + 2, + 16, + 19, + 85, + 0, + 2, + 85, + 19, + 84, + 0, + 2, + 82, + 62, + 61, + 0, + 2, + 82, + 61, + 83, + 0, + 2, + 57, + 82, + 83, + 0, + 2, + 57, + 83, + 58, + 0, + 2, + 80, + 22, + 21, + 0, + 2, + 80, + 81, + 22, + 0, + 2, + 18, + 81, + 80, + 0, + 2, + 18, + 17, + 81, + 0, + 2, + 78, + 75, + 77, + 0, + 2, + 77, + 75, + 76, + 0, + 2, + 79, + 75, + 78, + 0, + 2, + 79, + 74, + 75, + 0, + 2, + 72, + 74, + 79, + 0, + 2, + 72, + 73, + 74, + 0, + 2, + 70, + 69, + 67, + 0, + 2, + 70, + 67, + 66, + 0, + 2, + 65, + 71, + 70, + 0, + 2, + 65, + 70, + 66, + 0, + 2, + 49, + 48, + 54, + 0, + 2, + 49, + 54, + 53, + 0, + 2, + 52, + 50, + 49, + 0, + 2, + 52, + 49, + 53, + 0, + 2, + 59, + 56, + 57, + 0, + 2, + 59, + 57, + 58, + 0, + 2, + 64, + 79, + 71, + 0, + 2, + 64, + 72, + 79, + 0, + 2, + 72, + 65, + 73, + 0, + 2, + 72, + 64, + 65, + 0, + 2, + 73, + 66, + 74, + 0, + 2, + 73, + 65, + 66, + 0, + 2, + 74, + 67, + 75, + 0, + 2, + 74, + 66, + 67, + 0, + 2, + 75, + 68, + 76, + 0, + 2, + 75, + 67, + 68, + 0, + 2, + 76, + 69, + 77, + 0, + 2, + 76, + 68, + 69, + 0, + 2, + 77, + 70, + 78, + 0, + 2, + 77, + 69, + 70, + 0, + 2, + 78, + 71, + 79, + 0, + 2, + 78, + 70, + 71, + 0, + 2, + 1, + 0, + 8, + 0, + 2, + 1, + 8, + 9, + 0, + 2, + 9, + 10, + 2, + 0, + 2, + 9, + 2, + 1, + 0, + 2, + 10, + 11, + 3, + 0, + 2, + 10, + 3, + 2, + 0, + 2, + 11, + 12, + 4, + 0, + 2, + 11, + 4, + 3, + 0, + 2, + 12, + 13, + 5, + 0, + 2, + 12, + 5, + 4, + 0, + 2, + 13, + 14, + 6, + 0, + 2, + 13, + 6, + 5, + 0, + 2, + 14, + 15, + 7, + 0, + 2, + 14, + 7, + 6, + 0, + 2, + 0, + 7, + 15, + 0, + 2, + 0, + 15, + 8, + 0, + 2, + 22, + 20, + 21, + 0, + 2, + 22, + 23, + 20, + 0, + 2, + 39, + 32, + 24, + 0, + 2, + 39, + 24, + 31, + 0, + 2, + 25, + 24, + 32, + 0, + 2, + 25, + 32, + 33, + 0, + 2, + 26, + 25, + 33, + 0, + 2, + 26, + 33, + 34, + 0, + 2, + 27, + 26, + 34, + 0, + 2, + 27, + 34, + 35, + 0, + 2, + 28, + 27, + 35, + 0, + 2, + 28, + 35, + 36, + 0, + 2, + 29, + 28, + 36, + 0, + 2, + 29, + 36, + 37, + 0, + 2, + 30, + 29, + 38, + 0, + 2, + 29, + 37, + 38, + 0, + 2, + 31, + 30, + 38, + 0, + 2, + 31, + 38, + 39, + 0, + 2, + 46, + 43, + 42, + 0, + 2, + 46, + 45, + 43, + 0, + 2, + 41, + 46, + 42, + 0, + 2, + 41, + 47, + 46, + 0, + 2, + 30, + 27, + 29, + 0, + 2, + 30, + 26, + 27, + 0, + 2, + 25, + 30, + 31, + 0, + 2, + 25, + 26, + 30, + 0, + 2, + 9, + 14, + 13, + 0, + 2, + 9, + 8, + 14, + 0, + 2, + 12, + 9, + 13, + 0, + 2, + 12, + 10, + 9, + 0, + 2, + 7, + 0, + 5, + 0, + 2, + 7, + 5, + 6, + 0, + 2, + 0, + 1, + 4, + 0, + 2, + 0, + 4, + 5, + 0, + 2, + 3, + 4, + 2, + 0, + 2, + 4, + 1, + 2, + 0, + 2, + 42, + 43, + 52, + 0, + 2, + 42, + 52, + 53, + 0, + 2, + 43, + 44, + 51, + 0, + 2, + 43, + 51, + 52, + 0, + 2, + 44, + 45, + 50, + 0, + 2, + 44, + 50, + 51, + 0, + 2, + 45, + 46, + 49, + 0, + 2, + 45, + 49, + 50, + 0, + 2, + 46, + 47, + 48, + 0, + 2, + 46, + 48, + 49, + 0, + 2, + 40, + 55, + 48, + 0, + 2, + 40, + 48, + 47, + 0, + 2, + 40, + 41, + 54, + 0, + 2, + 40, + 54, + 55, + 0, + 2, + 41, + 42, + 53, + 0, + 2, + 41, + 53, + 54, + 0, + 2, + 17, + 18, + 61, + 0, + 2, + 17, + 61, + 62, + 0, + 2, + 16, + 63, + 60, + 0, + 2, + 16, + 60, + 19, + 0, + 2, + 18, + 19, + 60, + 0, + 2, + 18, + 60, + 61, + 0, + 2, + 16, + 17, + 62, + 0, + 2, + 16, + 62, + 63, + 0 + ] } diff --git a/src/client/components/localisation/darwin_robot/left_arm/config/left_upper_arm.json b/src/client/components/localisation/darwin_robot/left_arm/config/left_upper_arm.json index 2e78f3ef..84959a5d 100644 --- a/src/client/components/localisation/darwin_robot/left_arm/config/left_upper_arm.json +++ b/src/client/components/localisation/darwin_robot/left_arm/config/left_upper_arm.json @@ -1,1247 +1,1247 @@ { - "metadata": { - "formatVersion": 3 - }, - "materials": [ - { - "DbgColor": 15658734, - "DbgIndex": 0, - "DbgName": "Plastic", - "colorDiffuse": [ - 0.301961, - 0.301961, - 0.301961 - ], - "colorSpecular": [ - 0.401201, - 0.401201, - 0.401201 - ], - "shading": "Lambert", - "specularCoef": 50, - "opacity": 1.0, - "vertexColors": false - }, - { - "DbgColor": 15658734, - "DbgIndex": 1, - "DbgName": "ServoMaterial", - "colorDiffuse": [ - 0.14, - 0.14, - 0.14 - ], - "colorSpecular": [ - 0.168737, - 0.168737, - 0.168737 - ], - "shading": "Lambert", - "specularCoef": 50, - "opacity": 1.0, - "vertexColors": false - } - ], - "normals": [], - "colors": [], - "uvs": [], - "vertices": [ - -0.0156142, - -0.0115128, - -0.0201609, - -0.0156147, - -0.0373784, - -0.0201613, - -0.0116718, - -0.0403751, - -0.0201614, - 0.0161002, - -0.0403756, - -0.0201614, - 0.0041005, - -0.0116708, - -0.0201609, - 0.0089898, - -0.0072548, - -0.0201608, - 0.0091477, - 0.004574, - -0.0201606, - 0.0064666, - 0.0080438, - -0.0201605, - -0.0058354, - 0.0080441, - -0.0201605, - -0.005993, - 0.0146682, - -0.0201604, - 0.0102519, - 0.0130908, - -0.0201605, - 0.0148394, - 0.0107249, - -0.0201605, - 0.016101, - 0.0073237, - -0.0201606, - -0.0156142, - -0.0115135, - 0.0198856, - -0.0156147, - -0.0373791, - 0.0198852, - -0.0116718, - -0.0403758, - 0.0198851, - 0.0161002, - -0.0403763, - 0.0198851, - 0.0041005, - -0.0116715, - 0.0198856, - 0.0089898, - -0.0072555, - 0.0198857, - 0.0091477, - 0.0045733, - 0.0198859, - 0.0064666, - 0.0080432, - 0.019886, - -0.0058354, - 0.0080434, - 0.019886, - -0.005993, - 0.0146675, - 0.0198861, - 0.0102519, - 0.0130901, - 0.0198861, - 0.0148394, - 0.0107242, - 0.019886, - 0.016101, - 0.007323, - 0.019886, - 0.0161002, - -0.0403759, - -0.0001381, - 0.0201096, - -0.0119169, - -0.0121516, - 0.0210096, - -0.0162368, - -0.0041424, - 0.0210096, - -0.0162369, - 0.0038669, - 0.0201096, - -0.0119173, - 0.0118763, - 0.020109, - -0.0454281, - -0.0121522, - 0.0210091, - -0.0480784, - -0.0041429, - 0.0210091, - -0.0480785, - 0.0038664, - 0.020109, - -0.0454285, - 0.0118757, - 0.015025, - -0.0472413, - -0.0225059, - 0.0150258, - -0.0472414, - 0.0278522, - 0.0150241, - -0.0726356, - -0.0225059, - 0.0150249, - -0.0726357, - 0.0278522, - 0.0106211, - -0.0726355, - 0.0278523, - 0.010622, - -0.0472412, - 0.0278522, - 0.0106203, - -0.0726354, - -0.0225058, - 0.0106212, - -0.0472412, - -0.0225058, - 0.0106208, - -0.0778295, - 0.0219381, - 0.0106221, - -0.0422118, - 0.0219381, - 0.0106202, - -0.0778294, - -0.0165917, - 0.0106215, - -0.0422117, - -0.0165917, - 0.0150246, - -0.0778296, - 0.0219381, - 0.0150258, - -0.042212, - 0.021938, - 0.015024, - -0.0778295, - -0.0165917, - 0.0150252, - -0.0422119, - -0.0165917, - -0.0102096, - -0.0422114, - -0.0165917, - -0.0102108, - -0.0778291, - -0.0165917, - -0.010209, - -0.0422115, - 0.0219381, - -0.0102102, - -0.0778292, - 0.0219381, - -0.0146133, - -0.0422113, - -0.0165917, - -0.0146146, - -0.0778289, - -0.0165917, - -0.0146128, - -0.0422114, - 0.0219381, - -0.014614, - -0.077829, - 0.0219381, - -0.0146136, - -0.0472407, - -0.0225058, - -0.0146145, - -0.072635, - -0.0225058, - -0.0146128, - -0.0472408, - 0.0278522, - -0.0146137, - -0.0726351, - 0.0278523, - -0.0102099, - -0.0726352, - 0.0278522, - -0.0102107, - -0.0726351, - -0.0225059, - -0.0102091, - -0.0472409, - 0.0278522, - -0.0102098, - -0.0472408, - -0.0225059, - 0.0183641, - -0.0726358, - 0.0278522, - 0.0183633, - -0.0726357, - -0.0225059, - 0.018365, - -0.0472415, - 0.0278521, - 0.0183642, - -0.0472414, - -0.0225059, - -0.0176104, - -0.072635, - 0.0278523, - -0.0176095, - -0.0472407, - 0.0278523, - -0.0176112, - -0.0726349, - -0.0225057, - -0.0176103, - -0.0472406, - -0.0225058, - -0.0124886, - 0.0116459, - -0.018096, - 0.0129057, - 0.011645, - -0.0180965, - -0.0124903, - -0.0387122, - -0.0180961, - 0.012904, - -0.038713, - -0.0180966, - -0.0124884, - 0.0116454, - 0.0178784, - -0.0124901, - -0.0387126, - 0.0178783, - 0.0129058, - 0.0116445, - 0.0178779, - 0.0129042, - -0.0387135, - 0.0178778, - -0.0124885, - 0.0116459, - -0.0106956, - -0.0124902, - -0.0387122, - -0.0106957, - 0.0129058, - 0.011645, - -0.0106961, - 0.0129041, - -0.0387131, - -0.0106962, - 0.0129041, - -0.0387131, - -0.0150999, - -0.0124902, - -0.0387122, - -0.0150995, - 0.0129057, - 0.011645, - -0.0150998, - -0.0124885, - 0.0116459, - -0.0150994, - 0.0180982, - -0.0327991, - -0.0151, - -0.0175194, - -0.0327978, - -0.0150994, - 0.0180995, - 0.0057307, - -0.0150999, - -0.0175182, - 0.0057319, - -0.0150993, - 0.0180983, - -0.0327991, - -0.0106963, - -0.0175194, - -0.0327979, - -0.0106956, - 0.0180995, - 0.0057306, - -0.0106962, - -0.0175181, - 0.0057319, - -0.0106955, - -0.0175181, - 0.0057314, - 0.0145393, - 0.0180995, - 0.0057302, - 0.0145386, - -0.0175194, - -0.0327983, - 0.0145392, - 0.0180983, - -0.0327996, - 0.0145385, - -0.0175182, - 0.0057315, - 0.0101355, - 0.0180995, - 0.0057302, - 0.0101349, - -0.0175194, - -0.0327983, - 0.0101354, - 0.0180982, - -0.0327995, - 0.0101348, - -0.0124885, - 0.0116454, - 0.0101354, - 0.0129057, - 0.0116446, - 0.010135, - -0.0124902, - -0.0387126, - 0.0101353, - 0.0129041, - -0.0387135, - 0.0101349, - 0.0129041, - -0.0387135, - 0.0145386, - 0.0129058, - 0.0116445, - 0.0145387, - -0.0124902, - -0.0387126, - 0.0145391, - -0.0124885, - 0.0116454, - 0.0145392 - ], - "faces": [ - 2, - 3, - 11, - 12, - 0, - 2, - 5, - 11, - 3, - 0, - 2, - 2, - 5, - 3, - 0, - 2, - 5, - 10, - 11, - 0, - 2, - 7, - 9, - 10, - 0, - 2, - 6, - 7, - 10, - 0, - 2, - 5, - 6, - 10, - 0, - 2, - 2, - 4, - 5, - 0, - 2, - 8, - 9, - 7, - 0, - 2, - 2, - 0, - 4, - 0, - 2, - 1, - 0, - 2, - 0, - 2, - 16, - 25, - 24, - 0, - 2, - 18, - 16, - 24, - 0, - 2, - 15, - 16, - 18, - 0, - 2, - 18, - 24, - 23, - 0, - 2, - 20, - 23, - 22, - 0, - 2, - 19, - 23, - 20, - 0, - 2, - 18, - 23, - 19, - 0, - 2, - 15, - 18, - 17, - 0, - 2, - 21, - 20, - 22, - 0, - 2, - 15, - 17, - 13, - 0, - 2, - 14, - 15, - 13, - 0, - 2, - 2, - 26, - 15, - 0, - 2, - 15, - 26, - 16, - 0, - 2, - 2, - 3, - 26, - 0, - 2, - 26, - 32, - 33, - 0, - 2, - 26, - 31, - 32, - 0, - 2, - 3, - 31, - 26, - 0, - 2, - 26, - 33, - 34, - 0, - 2, - 16, - 26, - 34, - 0, - 2, - 28, - 30, - 29, - 0, - 2, - 28, - 27, - 30, - 0, - 2, - 12, - 30, - 27, - 0, - 2, - 12, - 25, - 30, - 0, - 2, - 3, - 27, - 31, - 0, - 2, - 3, - 12, - 27, - 0, - 2, - 27, - 28, - 31, - 0, - 2, - 28, - 32, - 31, - 0, - 2, - 28, - 29, - 33, - 0, - 2, - 28, - 33, - 32, - 0, - 2, - 29, - 30, - 34, - 0, - 2, - 29, - 34, - 33, - 0, - 2, - 16, - 34, - 30, - 0, - 2, - 16, - 30, - 25, - 0, - 2, - 10, - 24, - 11, - 0, - 2, - 10, - 23, - 24, - 0, - 2, - 11, - 24, - 25, - 0, - 2, - 11, - 25, - 12, - 0, - 2, - 1, - 15, - 14, - 0, - 2, - 1, - 2, - 15, - 0, - 2, - 0, - 14, - 13, - 0, - 2, - 0, - 1, - 14, - 0, - 2, - 0, - 17, - 4, - 0, - 2, - 0, - 13, - 17, - 0, - 2, - 4, - 18, - 5, - 0, - 2, - 4, - 17, - 18, - 0, - 2, - 8, - 22, - 9, - 0, - 2, - 8, - 21, - 22, - 0, - 2, - 5, - 19, - 6, - 0, - 2, - 5, - 18, - 19, - 0, - 2, - 6, - 20, - 7, - 0, - 2, - 6, - 19, - 20, - 0, - 2, - 7, - 21, - 8, - 0, - 2, - 7, - 20, - 21, - 0, - 2, - 9, - 23, - 10, - 0, - 2, - 9, - 22, - 23, - 0, - 2, - 103, - 105, - 101, - 1, - 2, - 103, - 101, - 99, - 1, - 2, - 100, - 102, - 106, - 1, - 2, - 100, - 106, - 104, - 1, - 2, - 106, - 110, - 108, - 1, - 2, - 106, - 108, - 104, - 1, - 2, - 102, - 112, - 111, - 1, - 2, - 102, - 100, - 112, - 1, - 2, - 111, - 110, - 106, - 1, - 2, - 111, - 106, - 102, - 1, - 2, - 104, - 108, - 112, - 1, - 2, - 104, - 112, - 100, - 1, - 2, - 114, - 107, - 103, - 1, - 2, - 114, - 103, - 99, - 1, - 2, - 101, - 113, - 114, - 1, - 2, - 101, - 114, - 99, - 1, - 2, - 107, - 109, - 105, - 1, - 2, - 107, - 105, - 103, - 1, - 2, - 105, - 109, - 113, - 1, - 2, - 105, - 113, - 101, - 1, - 2, - 92, - 88, - 84, - 1, - 2, - 92, - 84, - 96, - 1, - 2, - 90, - 88, - 92, - 1, - 2, - 90, - 92, - 94, - 1, - 2, - 96, - 84, - 83, - 1, - 2, - 96, - 83, - 98, - 1, - 2, - 83, - 90, - 94, - 1, - 2, - 83, - 94, - 98, - 1, - 2, - 93, - 89, - 85, - 1, - 2, - 93, - 85, - 97, - 1, - 2, - 86, - 87, - 91, - 1, - 2, - 86, - 91, - 95, - 1, - 2, - 95, - 85, - 86, - 1, - 2, - 95, - 97, - 85, - 1, - 2, - 91, - 87, - 89, - 1, - 2, - 91, - 89, - 93, - 1, - 2, - 97, - 95, - 91, - 1, - 2, - 97, - 91, - 93, - 1, - 2, - 94, - 92, - 96, - 1, - 2, - 94, - 96, - 98, - 1, - 2, - 82, - 79, - 80, - 1, - 2, - 82, - 81, - 79, - 1, - 2, - 76, - 78, - 77, - 1, - 2, - 76, - 77, - 75, - 1, - 2, - 82, - 77, - 78, - 1, - 2, - 82, - 80, - 77, - 1, - 2, - 81, - 76, - 75, - 1, - 2, - 81, - 75, - 79, - 1, - 2, - 79, - 77, - 80, - 1, - 2, - 79, - 75, - 77, - 1, - 2, - 82, - 78, - 81, - 1, - 2, - 81, - 78, - 76, - 1, - 2, - 67, - 71, - 68, - 1, - 2, - 68, - 71, - 73, - 1, - 2, - 70, - 72, - 69, - 1, - 2, - 70, - 74, - 72, - 1, - 2, - 68, - 73, - 74, - 1, - 2, - 68, - 74, - 70, - 1, - 2, - 67, - 72, - 71, - 1, - 2, - 67, - 69, - 72, - 1, - 2, - 73, - 71, - 72, - 1, - 2, - 73, - 72, - 74, - 1, - 2, - 67, - 70, - 69, - 1, - 2, - 67, - 68, - 70, - 1, - 2, - 55, - 53, - 57, - 1, - 2, - 55, - 51, - 53, - 1, - 2, - 52, - 54, - 58, - 1, - 2, - 52, - 58, - 56, - 1, - 2, - 58, - 62, - 60, - 1, - 2, - 58, - 60, - 56, - 1, - 2, - 54, - 64, - 63, - 1, - 2, - 54, - 52, - 64, - 1, - 2, - 63, - 62, - 58, - 1, - 2, - 63, - 58, - 54, - 1, - 2, - 56, - 60, - 64, - 1, - 2, - 56, - 64, - 52, - 1, - 2, - 66, - 55, - 59, - 1, - 2, - 66, - 51, - 55, - 1, - 2, - 53, - 66, - 65, - 1, - 2, - 53, - 51, - 66, - 1, - 2, - 59, - 57, - 61, - 1, - 2, - 59, - 55, - 57, - 1, - 2, - 57, - 65, - 61, - 1, - 2, - 57, - 53, - 65, - 1, - 2, - 44, - 36, - 40, - 1, - 2, - 44, - 48, - 36, - 1, - 2, - 42, - 44, - 40, - 1, - 2, - 42, - 46, - 44, - 1, - 2, - 35, - 48, - 50, - 1, - 2, - 35, - 36, - 48, - 1, - 2, - 35, - 46, - 42, - 1, - 2, - 35, - 50, - 46, - 1, - 2, - 45, - 41, - 37, - 1, - 2, - 45, - 37, - 49, - 1, - 2, - 38, - 39, - 43, - 1, - 2, - 38, - 43, - 47, - 1, - 2, - 47, - 37, - 38, - 1, - 2, - 47, - 49, - 37, - 1, - 2, - 43, - 39, - 41, - 1, - 2, - 43, - 41, - 45, - 1, - 2, - 49, - 47, - 43, - 1, - 2, - 49, - 43, - 45, - 1, - 2, - 46, - 48, - 44, - 1, - 2, - 46, - 50, - 48, - 1 - ] + "metadata": { + "formatVersion": 3 + }, + "materials": [ + { + "DbgColor": 15658734, + "DbgIndex": 0, + "DbgName": "Plastic", + "colorDiffuse": [ + 0.301961, + 0.301961, + 0.301961 + ], + "colorSpecular": [ + 0.401201, + 0.401201, + 0.401201 + ], + "shading": "Lambert", + "specularCoef": 50, + "opacity": 1.0, + "vertexColors": false + }, + { + "DbgColor": 15658734, + "DbgIndex": 1, + "DbgName": "ServoMaterial", + "colorDiffuse": [ + 0.14, + 0.14, + 0.14 + ], + "colorSpecular": [ + 0.168737, + 0.168737, + 0.168737 + ], + "shading": "Lambert", + "specularCoef": 50, + "opacity": 1.0, + "vertexColors": false + } + ], + "normals": [], + "colors": [], + "uvs": [], + "vertices": [ + -0.0156142, + -0.0115128, + -0.0201609, + -0.0156147, + -0.0373784, + -0.0201613, + -0.0116718, + -0.0403751, + -0.0201614, + 0.0161002, + -0.0403756, + -0.0201614, + 0.0041005, + -0.0116708, + -0.0201609, + 0.0089898, + -0.0072548, + -0.0201608, + 0.0091477, + 0.004574, + -0.0201606, + 0.0064666, + 0.0080438, + -0.0201605, + -0.0058354, + 0.0080441, + -0.0201605, + -0.005993, + 0.0146682, + -0.0201604, + 0.0102519, + 0.0130908, + -0.0201605, + 0.0148394, + 0.0107249, + -0.0201605, + 0.016101, + 0.0073237, + -0.0201606, + -0.0156142, + -0.0115135, + 0.0198856, + -0.0156147, + -0.0373791, + 0.0198852, + -0.0116718, + -0.0403758, + 0.0198851, + 0.0161002, + -0.0403763, + 0.0198851, + 0.0041005, + -0.0116715, + 0.0198856, + 0.0089898, + -0.0072555, + 0.0198857, + 0.0091477, + 0.0045733, + 0.0198859, + 0.0064666, + 0.0080432, + 0.019886, + -0.0058354, + 0.0080434, + 0.019886, + -0.005993, + 0.0146675, + 0.0198861, + 0.0102519, + 0.0130901, + 0.0198861, + 0.0148394, + 0.0107242, + 0.019886, + 0.016101, + 0.007323, + 0.019886, + 0.0161002, + -0.0403759, + -0.0001381, + 0.0201096, + -0.0119169, + -0.0121516, + 0.0210096, + -0.0162368, + -0.0041424, + 0.0210096, + -0.0162369, + 0.0038669, + 0.0201096, + -0.0119173, + 0.0118763, + 0.020109, + -0.0454281, + -0.0121522, + 0.0210091, + -0.0480784, + -0.0041429, + 0.0210091, + -0.0480785, + 0.0038664, + 0.020109, + -0.0454285, + 0.0118757, + 0.015025, + -0.0472413, + -0.0225059, + 0.0150258, + -0.0472414, + 0.0278522, + 0.0150241, + -0.0726356, + -0.0225059, + 0.0150249, + -0.0726357, + 0.0278522, + 0.0106211, + -0.0726355, + 0.0278523, + 0.010622, + -0.0472412, + 0.0278522, + 0.0106203, + -0.0726354, + -0.0225058, + 0.0106212, + -0.0472412, + -0.0225058, + 0.0106208, + -0.0778295, + 0.0219381, + 0.0106221, + -0.0422118, + 0.0219381, + 0.0106202, + -0.0778294, + -0.0165917, + 0.0106215, + -0.0422117, + -0.0165917, + 0.0150246, + -0.0778296, + 0.0219381, + 0.0150258, + -0.042212, + 0.021938, + 0.015024, + -0.0778295, + -0.0165917, + 0.0150252, + -0.0422119, + -0.0165917, + -0.0102096, + -0.0422114, + -0.0165917, + -0.0102108, + -0.0778291, + -0.0165917, + -0.010209, + -0.0422115, + 0.0219381, + -0.0102102, + -0.0778292, + 0.0219381, + -0.0146133, + -0.0422113, + -0.0165917, + -0.0146146, + -0.0778289, + -0.0165917, + -0.0146128, + -0.0422114, + 0.0219381, + -0.014614, + -0.077829, + 0.0219381, + -0.0146136, + -0.0472407, + -0.0225058, + -0.0146145, + -0.072635, + -0.0225058, + -0.0146128, + -0.0472408, + 0.0278522, + -0.0146137, + -0.0726351, + 0.0278523, + -0.0102099, + -0.0726352, + 0.0278522, + -0.0102107, + -0.0726351, + -0.0225059, + -0.0102091, + -0.0472409, + 0.0278522, + -0.0102098, + -0.0472408, + -0.0225059, + 0.0183641, + -0.0726358, + 0.0278522, + 0.0183633, + -0.0726357, + -0.0225059, + 0.018365, + -0.0472415, + 0.0278521, + 0.0183642, + -0.0472414, + -0.0225059, + -0.0176104, + -0.072635, + 0.0278523, + -0.0176095, + -0.0472407, + 0.0278523, + -0.0176112, + -0.0726349, + -0.0225057, + -0.0176103, + -0.0472406, + -0.0225058, + -0.0124886, + 0.0116459, + -0.018096, + 0.0129057, + 0.011645, + -0.0180965, + -0.0124903, + -0.0387122, + -0.0180961, + 0.012904, + -0.038713, + -0.0180966, + -0.0124884, + 0.0116454, + 0.0178784, + -0.0124901, + -0.0387126, + 0.0178783, + 0.0129058, + 0.0116445, + 0.0178779, + 0.0129042, + -0.0387135, + 0.0178778, + -0.0124885, + 0.0116459, + -0.0106956, + -0.0124902, + -0.0387122, + -0.0106957, + 0.0129058, + 0.011645, + -0.0106961, + 0.0129041, + -0.0387131, + -0.0106962, + 0.0129041, + -0.0387131, + -0.0150999, + -0.0124902, + -0.0387122, + -0.0150995, + 0.0129057, + 0.011645, + -0.0150998, + -0.0124885, + 0.0116459, + -0.0150994, + 0.0180982, + -0.0327991, + -0.0151, + -0.0175194, + -0.0327978, + -0.0150994, + 0.0180995, + 0.0057307, + -0.0150999, + -0.0175182, + 0.0057319, + -0.0150993, + 0.0180983, + -0.0327991, + -0.0106963, + -0.0175194, + -0.0327979, + -0.0106956, + 0.0180995, + 0.0057306, + -0.0106962, + -0.0175181, + 0.0057319, + -0.0106955, + -0.0175181, + 0.0057314, + 0.0145393, + 0.0180995, + 0.0057302, + 0.0145386, + -0.0175194, + -0.0327983, + 0.0145392, + 0.0180983, + -0.0327996, + 0.0145385, + -0.0175182, + 0.0057315, + 0.0101355, + 0.0180995, + 0.0057302, + 0.0101349, + -0.0175194, + -0.0327983, + 0.0101354, + 0.0180982, + -0.0327995, + 0.0101348, + -0.0124885, + 0.0116454, + 0.0101354, + 0.0129057, + 0.0116446, + 0.010135, + -0.0124902, + -0.0387126, + 0.0101353, + 0.0129041, + -0.0387135, + 0.0101349, + 0.0129041, + -0.0387135, + 0.0145386, + 0.0129058, + 0.0116445, + 0.0145387, + -0.0124902, + -0.0387126, + 0.0145391, + -0.0124885, + 0.0116454, + 0.0145392 + ], + "faces": [ + 2, + 3, + 11, + 12, + 0, + 2, + 5, + 11, + 3, + 0, + 2, + 2, + 5, + 3, + 0, + 2, + 5, + 10, + 11, + 0, + 2, + 7, + 9, + 10, + 0, + 2, + 6, + 7, + 10, + 0, + 2, + 5, + 6, + 10, + 0, + 2, + 2, + 4, + 5, + 0, + 2, + 8, + 9, + 7, + 0, + 2, + 2, + 0, + 4, + 0, + 2, + 1, + 0, + 2, + 0, + 2, + 16, + 25, + 24, + 0, + 2, + 18, + 16, + 24, + 0, + 2, + 15, + 16, + 18, + 0, + 2, + 18, + 24, + 23, + 0, + 2, + 20, + 23, + 22, + 0, + 2, + 19, + 23, + 20, + 0, + 2, + 18, + 23, + 19, + 0, + 2, + 15, + 18, + 17, + 0, + 2, + 21, + 20, + 22, + 0, + 2, + 15, + 17, + 13, + 0, + 2, + 14, + 15, + 13, + 0, + 2, + 2, + 26, + 15, + 0, + 2, + 15, + 26, + 16, + 0, + 2, + 2, + 3, + 26, + 0, + 2, + 26, + 32, + 33, + 0, + 2, + 26, + 31, + 32, + 0, + 2, + 3, + 31, + 26, + 0, + 2, + 26, + 33, + 34, + 0, + 2, + 16, + 26, + 34, + 0, + 2, + 28, + 30, + 29, + 0, + 2, + 28, + 27, + 30, + 0, + 2, + 12, + 30, + 27, + 0, + 2, + 12, + 25, + 30, + 0, + 2, + 3, + 27, + 31, + 0, + 2, + 3, + 12, + 27, + 0, + 2, + 27, + 28, + 31, + 0, + 2, + 28, + 32, + 31, + 0, + 2, + 28, + 29, + 33, + 0, + 2, + 28, + 33, + 32, + 0, + 2, + 29, + 30, + 34, + 0, + 2, + 29, + 34, + 33, + 0, + 2, + 16, + 34, + 30, + 0, + 2, + 16, + 30, + 25, + 0, + 2, + 10, + 24, + 11, + 0, + 2, + 10, + 23, + 24, + 0, + 2, + 11, + 24, + 25, + 0, + 2, + 11, + 25, + 12, + 0, + 2, + 1, + 15, + 14, + 0, + 2, + 1, + 2, + 15, + 0, + 2, + 0, + 14, + 13, + 0, + 2, + 0, + 1, + 14, + 0, + 2, + 0, + 17, + 4, + 0, + 2, + 0, + 13, + 17, + 0, + 2, + 4, + 18, + 5, + 0, + 2, + 4, + 17, + 18, + 0, + 2, + 8, + 22, + 9, + 0, + 2, + 8, + 21, + 22, + 0, + 2, + 5, + 19, + 6, + 0, + 2, + 5, + 18, + 19, + 0, + 2, + 6, + 20, + 7, + 0, + 2, + 6, + 19, + 20, + 0, + 2, + 7, + 21, + 8, + 0, + 2, + 7, + 20, + 21, + 0, + 2, + 9, + 23, + 10, + 0, + 2, + 9, + 22, + 23, + 0, + 2, + 103, + 105, + 101, + 1, + 2, + 103, + 101, + 99, + 1, + 2, + 100, + 102, + 106, + 1, + 2, + 100, + 106, + 104, + 1, + 2, + 106, + 110, + 108, + 1, + 2, + 106, + 108, + 104, + 1, + 2, + 102, + 112, + 111, + 1, + 2, + 102, + 100, + 112, + 1, + 2, + 111, + 110, + 106, + 1, + 2, + 111, + 106, + 102, + 1, + 2, + 104, + 108, + 112, + 1, + 2, + 104, + 112, + 100, + 1, + 2, + 114, + 107, + 103, + 1, + 2, + 114, + 103, + 99, + 1, + 2, + 101, + 113, + 114, + 1, + 2, + 101, + 114, + 99, + 1, + 2, + 107, + 109, + 105, + 1, + 2, + 107, + 105, + 103, + 1, + 2, + 105, + 109, + 113, + 1, + 2, + 105, + 113, + 101, + 1, + 2, + 92, + 88, + 84, + 1, + 2, + 92, + 84, + 96, + 1, + 2, + 90, + 88, + 92, + 1, + 2, + 90, + 92, + 94, + 1, + 2, + 96, + 84, + 83, + 1, + 2, + 96, + 83, + 98, + 1, + 2, + 83, + 90, + 94, + 1, + 2, + 83, + 94, + 98, + 1, + 2, + 93, + 89, + 85, + 1, + 2, + 93, + 85, + 97, + 1, + 2, + 86, + 87, + 91, + 1, + 2, + 86, + 91, + 95, + 1, + 2, + 95, + 85, + 86, + 1, + 2, + 95, + 97, + 85, + 1, + 2, + 91, + 87, + 89, + 1, + 2, + 91, + 89, + 93, + 1, + 2, + 97, + 95, + 91, + 1, + 2, + 97, + 91, + 93, + 1, + 2, + 94, + 92, + 96, + 1, + 2, + 94, + 96, + 98, + 1, + 2, + 82, + 79, + 80, + 1, + 2, + 82, + 81, + 79, + 1, + 2, + 76, + 78, + 77, + 1, + 2, + 76, + 77, + 75, + 1, + 2, + 82, + 77, + 78, + 1, + 2, + 82, + 80, + 77, + 1, + 2, + 81, + 76, + 75, + 1, + 2, + 81, + 75, + 79, + 1, + 2, + 79, + 77, + 80, + 1, + 2, + 79, + 75, + 77, + 1, + 2, + 82, + 78, + 81, + 1, + 2, + 81, + 78, + 76, + 1, + 2, + 67, + 71, + 68, + 1, + 2, + 68, + 71, + 73, + 1, + 2, + 70, + 72, + 69, + 1, + 2, + 70, + 74, + 72, + 1, + 2, + 68, + 73, + 74, + 1, + 2, + 68, + 74, + 70, + 1, + 2, + 67, + 72, + 71, + 1, + 2, + 67, + 69, + 72, + 1, + 2, + 73, + 71, + 72, + 1, + 2, + 73, + 72, + 74, + 1, + 2, + 67, + 70, + 69, + 1, + 2, + 67, + 68, + 70, + 1, + 2, + 55, + 53, + 57, + 1, + 2, + 55, + 51, + 53, + 1, + 2, + 52, + 54, + 58, + 1, + 2, + 52, + 58, + 56, + 1, + 2, + 58, + 62, + 60, + 1, + 2, + 58, + 60, + 56, + 1, + 2, + 54, + 64, + 63, + 1, + 2, + 54, + 52, + 64, + 1, + 2, + 63, + 62, + 58, + 1, + 2, + 63, + 58, + 54, + 1, + 2, + 56, + 60, + 64, + 1, + 2, + 56, + 64, + 52, + 1, + 2, + 66, + 55, + 59, + 1, + 2, + 66, + 51, + 55, + 1, + 2, + 53, + 66, + 65, + 1, + 2, + 53, + 51, + 66, + 1, + 2, + 59, + 57, + 61, + 1, + 2, + 59, + 55, + 57, + 1, + 2, + 57, + 65, + 61, + 1, + 2, + 57, + 53, + 65, + 1, + 2, + 44, + 36, + 40, + 1, + 2, + 44, + 48, + 36, + 1, + 2, + 42, + 44, + 40, + 1, + 2, + 42, + 46, + 44, + 1, + 2, + 35, + 48, + 50, + 1, + 2, + 35, + 36, + 48, + 1, + 2, + 35, + 46, + 42, + 1, + 2, + 35, + 50, + 46, + 1, + 2, + 45, + 41, + 37, + 1, + 2, + 45, + 37, + 49, + 1, + 2, + 38, + 39, + 43, + 1, + 2, + 38, + 43, + 47, + 1, + 2, + 47, + 37, + 38, + 1, + 2, + 47, + 49, + 37, + 1, + 2, + 43, + 39, + 41, + 1, + 2, + 43, + 41, + 45, + 1, + 2, + 49, + 47, + 43, + 1, + 2, + 49, + 43, + 45, + 1, + 2, + 46, + 48, + 44, + 1, + 2, + 46, + 50, + 48, + 1 + ] } diff --git a/src/client/components/localisation/darwin_robot/left_arm/view_model.ts b/src/client/components/localisation/darwin_robot/left_arm/view_model.ts index 99c4e56c..336b4b41 100644 --- a/src/client/components/localisation/darwin_robot/left_arm/view_model.ts +++ b/src/client/components/localisation/darwin_robot/left_arm/view_model.ts @@ -29,7 +29,7 @@ export class LeftArmViewModel { const { geometry, materials } = this.leftShoulderGeometryAndMaterial const mesh = new Mesh(geometry, new MultiMaterial(materials)) mesh.position.set(0.082, 0, 0) - mesh.rotation.set(-this.model.motors.leftShoulderPitch.angle, 0, 0) + mesh.rotation.set(this.model.motors.leftShoulderPitch.angle - Math.PI / 2, 0, 0) mesh.add(this.leftUpperArm) return mesh } @@ -49,7 +49,7 @@ export class LeftArmViewModel { const { geometry, materials } = this.leftLowerArmGeometryAndMaterial const mesh = new Mesh(geometry, new MultiMaterial(materials)) mesh.position.set(0, -0.06, 0.016) - mesh.rotation.set(-this.model.motors.leftElbow.angle, 0, 0) + mesh.rotation.set(this.model.motors.leftElbow.angle, 0, 0) return mesh } diff --git a/src/client/components/localisation/darwin_robot/left_leg/config/left_ankle.json b/src/client/components/localisation/darwin_robot/left_leg/config/left_ankle.json index c52476df..c2f68ea1 100644 --- a/src/client/components/localisation/darwin_robot/left_leg/config/left_ankle.json +++ b/src/client/components/localisation/darwin_robot/left_leg/config/left_ankle.json @@ -1,925 +1,925 @@ { - "metadata": { - "formatVersion": 3, - "materials": 1 - }, - "materials": [ - { - "DbgColor": 15658734, - "DbgIndex": 0, - "DbgName": "ServoMaterial", - "colorDiffuse": [ - 0.14, - 0.14, - 0.14 - ], - "colorSpecular": [ - 0.168737, - 0.168737, - 0.168737 - ], - "shading": "Lambert", - "specularCoef": 50, - "opacity": 1.0, - "vertexColors": false - } - ], - "normals": [], - "colors": [], - "uvs": [], - "morphTargets": [], - "vertices": [ - 0.0180435, - -0.0121964, - 0.0214744, - 0.0180442, - -0.0122006, - -0.0191612, - -0.0175735, - -0.0121994, - -0.0191612, - -0.0175742, - -0.0121951, - 0.0214745, - 0.0180458, - 0.0384658, - -0.0141346, - -0.0175718, - 0.0384671, - -0.0141346, - -0.017572, - 0.0268712, - -0.0268364, - -0.0175714, - 0.0268675, - -0.0618517, - 0.0180463, - 0.0268663, - -0.0618511, - 0.0180457, - 0.0268699, - -0.0268358, - -0.0175731, - -0.0063734, - -0.0268329, - -0.0175725, - -0.0063771, - -0.0618482, - 0.0180451, - -0.0063783, - -0.0618476, - 0.0180445, - -0.0063747, - -0.0268323, - 0.0180443, - 0.0122078, - 0.0214719, - -0.0175733, - 0.012209, - 0.0214719, - -0.0175733, - 0.0122086, - 0.0173243, - 0.0180444, - 0.0122073, - 0.0173243, - 0.0155883, - 0.0384659, - -0.0141344, - -0.0151072, - 0.038467, - -0.0141347, - -0.0151073, - 0.0122085, - 0.0173242, - 0.0155882, - 0.0122074, - 0.0173245, - -0.0151072, - 0.0122079, - 0.0113894, - 0.0155883, - 0.0122068, - 0.01139, - 0.015589, - 0.0324513, - 0.0113879, - -0.0151065, - 0.0324524, - 0.0113873, - -0.0151059, - 0.0324492, - -0.0190551, - 0.0155895, - 0.0324481, - -0.0190548, - 0.0180457, - 0.032448, - -0.0190548, - -0.0175719, - 0.0324493, - -0.0190552, - 0.0155889, - 0.0324519, - 0.0173224, - 0.0180451, - 0.0324518, - 0.0173222, - -0.0175726, - 0.0324531, - 0.0173222, - -0.0151066, - 0.032453, - 0.017322, - 0.0180454, - 0.0384685, - 0.0113873, - 0.015589, - 0.0384686, - 0.0113872, - -0.0151065, - 0.0384696, - 0.0113867, - -0.0175722, - 0.0384697, - 0.0113866, - -0.0175719, - 0.0268709, - -0.0296622, - -0.0175714, - 0.0268678, - -0.0590251, - 0.0180462, - 0.0268666, - -0.0590245, - 0.0180457, - 0.0268697, - -0.0296616, - -0.0175731, - -0.0063737, - -0.0296588, - -0.0175726, - -0.0063768, - -0.0590216, - 0.0180451, - -0.006378, - -0.059021, - 0.0180445, - -0.006375, - -0.0296581, - -0.0125418, - 0.0326944, - -0.0590256, - -0.0125423, - 0.0326975, - -0.0296628, - 0.012852, - 0.0326966, - -0.0296623, - 0.0128525, - 0.0326935, - -0.0590252, - -0.0125434, - -0.0122037, - -0.0590209, - -0.0125439, - -0.0122006, - -0.0296581, - 0.0128504, - -0.0122015, - -0.0296576, - 0.0128509, - -0.0122046, - -0.0590205, - 0.012851, - -0.0122049, - -0.0618471, - 0.0128504, - -0.0122012, - -0.0268318, - 0.0128525, - 0.0326932, - -0.0618518, - 0.0128519, - 0.0326969, - -0.0268365, - -0.0125433, - -0.012204, - -0.0618475, - -0.0125417, - 0.0326941, - -0.0618522, - -0.0125424, - 0.0326978, - -0.026837, - -0.0125439, - -0.0122003, - -0.0268323, - -0.0097551, - 0.0087803, - -0.0157662, - -0.0097549, - 0.0087788, - -0.0307525, - -0.0097547, - 0.0147396, - -0.0307532, - -0.0097549, - 0.0147411, - -0.0157668, - 0.0100627, - 0.0087796, - -0.0157659, - 0.010063, - 0.008778, - -0.0307522, - 0.0100632, - 0.0147388, - -0.0307528, - 0.0100629, - 0.0147404, - -0.0157665, - 0.0100635, - 0.0318247, - -0.0157683, - 0.0100637, - 0.0318232, - -0.0307546, - 0.0100635, - 0.0258624, - -0.030754, - 0.0100633, - 0.0258639, - -0.0157676, - -0.0097544, - 0.0318255, - -0.0157686, - -0.0097541, - 0.0318239, - -0.030755, - -0.0097543, - 0.0258631, - -0.0307543, - -0.0097546, - 0.0258647, - -0.015768 - ], - "faces": [ - 2, - 0, - 1, - 14, - 0, - 2, - 15, - 2, - 3, - 0, - 2, - 1, - 17, - 14, - 0, - 2, - 2, - 15, - 16, - 0, - 2, - 16, - 15, - 20, - 0, - 2, - 21, - 14, - 17, - 0, - 2, - 22, - 25, - 33, - 0, - 2, - 27, - 24, - 35, - 0, - 2, - 5, - 19, - 26, - 0, - 2, - 4, - 27, - 18, - 0, - 2, - 4, - 28, - 27, - 0, - 2, - 1, - 27, - 28, - 0, - 2, - 1, - 28, - 17, - 0, - 2, - 5, - 26, - 29, - 0, - 2, - 2, - 29, - 26, - 0, - 2, - 2, - 16, - 29, - 0, - 2, - 33, - 25, - 36, - 0, - 2, - 35, - 24, - 30, - 0, - 2, - 33, - 20, - 22, - 0, - 2, - 35, - 18, - 27, - 0, - 2, - 31, - 17, - 28, - 0, - 2, - 37, - 5, - 29, - 0, - 2, - 75, - 77, - 74, - 0, - 2, - 75, - 76, - 77, - 0, - 2, - 73, - 71, - 70, - 0, - 2, - 73, - 72, - 71, - 0, - 2, - 77, - 72, - 73, - 0, - 2, - 77, - 76, - 72, - 0, - 2, - 75, - 70, - 71, - 0, - 2, - 75, - 74, - 70, - 0, - 2, - 64, - 69, - 68, - 0, - 2, - 64, - 65, - 69, - 0, - 2, - 62, - 67, - 66, - 0, - 2, - 62, - 63, - 67, - 0, - 2, - 66, - 68, - 69, - 0, - 2, - 66, - 67, - 68, - 0, - 2, - 64, - 62, - 65, - 0, - 2, - 64, - 63, - 62, - 0, - 2, - 46, - 51, - 47, - 0, - 2, - 46, - 50, - 51, - 0, - 2, - 56, - 59, - 46, - 0, - 2, - 56, - 46, - 49, - 0, - 2, - 46, - 47, - 48, - 0, - 2, - 46, - 48, - 49, - 0, - 2, - 47, - 57, - 48, - 0, - 2, - 47, - 60, - 57, - 0, - 2, - 55, - 61, - 51, - 0, - 2, - 55, - 51, - 52, - 0, - 2, - 54, - 50, - 58, - 0, - 2, - 54, - 53, - 50, - 0, - 2, - 50, - 53, - 52, - 0, - 2, - 50, - 52, - 51, - 0, - 2, - 38, - 51, - 42, - 0, - 2, - 38, - 47, - 51, - 0, - 2, - 6, - 47, - 38, - 0, - 2, - 6, - 60, - 47, - 0, - 2, - 6, - 61, - 60, - 0, - 2, - 6, - 10, - 61, - 0, - 2, - 10, - 51, - 61, - 0, - 2, - 10, - 42, - 51, - 0, - 2, - 11, - 50, - 43, - 0, - 2, - 11, - 58, - 50, - 0, - 2, - 39, - 50, - 46, - 0, - 2, - 39, - 43, - 50, - 0, - 2, - 7, - 58, - 11, - 0, - 2, - 7, - 59, - 58, - 0, - 2, - 7, - 46, - 59, - 0, - 2, - 7, - 39, - 46, - 0, - 2, - 9, - 48, - 57, - 0, - 2, - 9, - 41, - 48, - 0, - 2, - 9, - 55, - 13, - 0, - 2, - 9, - 57, - 55, - 0, - 2, - 13, - 52, - 45, - 0, - 2, - 13, - 55, - 52, - 0, - 2, - 8, - 49, - 40, - 0, - 2, - 8, - 56, - 49, - 0, - 2, - 12, - 53, - 54, - 0, - 2, - 12, - 44, - 53, - 0, - 2, - 8, - 12, - 54, - 0, - 2, - 8, - 54, - 56, - 0, - 2, - 40, - 53, - 44, - 0, - 2, - 40, - 49, - 53, - 0, - 2, - 55, - 57, - 60, - 0, - 2, - 55, - 60, - 61, - 0, - 2, - 56, - 54, - 58, - 0, - 2, - 56, - 58, - 59, - 0, - 2, - 48, - 52, - 53, - 0, - 2, - 48, - 53, - 49, - 0, - 2, - 40, - 12, - 8, - 0, - 2, - 40, - 44, - 12, - 0, - 2, - 9, - 45, - 41, - 0, - 2, - 9, - 13, - 45, - 0, - 2, - 38, - 10, - 6, - 0, - 2, - 38, - 42, - 10, - 0, - 2, - 7, - 43, - 39, - 0, - 2, - 7, - 11, - 43, - 0, - 2, - 36, - 32, - 33, - 0, - 2, - 36, - 37, - 32, - 0, - 2, - 30, - 34, - 35, - 0, - 2, - 30, - 31, - 34, - 0, - 2, - 29, - 16, - 37, - 0, - 2, - 37, - 16, - 32, - 0, - 2, - 28, - 34, - 31, - 0, - 2, - 28, - 4, - 34, - 0, - 2, - 1, - 26, - 27, - 0, - 2, - 1, - 2, - 26, - 0, - 2, - 26, - 19, - 25, - 0, - 2, - 25, - 19, - 36, - 0, - 2, - 24, - 26, - 25, - 0, - 2, - 24, - 27, - 26, - 0, - 2, - 23, - 30, - 24, - 0, - 2, - 23, - 21, - 30, - 0, - 2, - 23, - 25, - 22, - 0, - 2, - 23, - 24, - 25, - 0, - 2, - 14, - 20, - 15, - 0, - 2, - 14, - 21, - 20, - 0, - 2, - 20, - 23, - 22, - 0, - 2, - 20, - 21, - 23, - 0, - 2, - 36, - 5, - 37, - 0, - 2, - 36, - 19, - 5, - 0, - 2, - 34, - 18, - 35, - 0, - 2, - 34, - 4, - 18, - 0, - 2, - 32, - 20, - 33, - 0, - 2, - 32, - 16, - 20, - 0, - 2, - 30, - 17, - 31, - 0, - 2, - 30, - 21, - 17, - 0, - 2, - 3, - 0, - 14, - 0, - 2, - 14, - 15, - 3, - 0, - 2, - 0, - 2, - 1, - 0, - 2, - 0, - 3, - 2, - 0, - 3, - 41, - 45, - 52, - 48, - 0 - ] + "metadata": { + "formatVersion": 3, + "materials": 1 + }, + "materials": [ + { + "DbgColor": 15658734, + "DbgIndex": 0, + "DbgName": "ServoMaterial", + "colorDiffuse": [ + 0.14, + 0.14, + 0.14 + ], + "colorSpecular": [ + 0.168737, + 0.168737, + 0.168737 + ], + "shading": "Lambert", + "specularCoef": 50, + "opacity": 1.0, + "vertexColors": false + } + ], + "normals": [], + "colors": [], + "uvs": [], + "morphTargets": [], + "vertices": [ + 0.0180435, + -0.0121964, + 0.0214744, + 0.0180442, + -0.0122006, + -0.0191612, + -0.0175735, + -0.0121994, + -0.0191612, + -0.0175742, + -0.0121951, + 0.0214745, + 0.0180458, + 0.0384658, + -0.0141346, + -0.0175718, + 0.0384671, + -0.0141346, + -0.017572, + 0.0268712, + -0.0268364, + -0.0175714, + 0.0268675, + -0.0618517, + 0.0180463, + 0.0268663, + -0.0618511, + 0.0180457, + 0.0268699, + -0.0268358, + -0.0175731, + -0.0063734, + -0.0268329, + -0.0175725, + -0.0063771, + -0.0618482, + 0.0180451, + -0.0063783, + -0.0618476, + 0.0180445, + -0.0063747, + -0.0268323, + 0.0180443, + 0.0122078, + 0.0214719, + -0.0175733, + 0.012209, + 0.0214719, + -0.0175733, + 0.0122086, + 0.0173243, + 0.0180444, + 0.0122073, + 0.0173243, + 0.0155883, + 0.0384659, + -0.0141344, + -0.0151072, + 0.038467, + -0.0141347, + -0.0151073, + 0.0122085, + 0.0173242, + 0.0155882, + 0.0122074, + 0.0173245, + -0.0151072, + 0.0122079, + 0.0113894, + 0.0155883, + 0.0122068, + 0.01139, + 0.015589, + 0.0324513, + 0.0113879, + -0.0151065, + 0.0324524, + 0.0113873, + -0.0151059, + 0.0324492, + -0.0190551, + 0.0155895, + 0.0324481, + -0.0190548, + 0.0180457, + 0.032448, + -0.0190548, + -0.0175719, + 0.0324493, + -0.0190552, + 0.0155889, + 0.0324519, + 0.0173224, + 0.0180451, + 0.0324518, + 0.0173222, + -0.0175726, + 0.0324531, + 0.0173222, + -0.0151066, + 0.032453, + 0.017322, + 0.0180454, + 0.0384685, + 0.0113873, + 0.015589, + 0.0384686, + 0.0113872, + -0.0151065, + 0.0384696, + 0.0113867, + -0.0175722, + 0.0384697, + 0.0113866, + -0.0175719, + 0.0268709, + -0.0296622, + -0.0175714, + 0.0268678, + -0.0590251, + 0.0180462, + 0.0268666, + -0.0590245, + 0.0180457, + 0.0268697, + -0.0296616, + -0.0175731, + -0.0063737, + -0.0296588, + -0.0175726, + -0.0063768, + -0.0590216, + 0.0180451, + -0.006378, + -0.059021, + 0.0180445, + -0.006375, + -0.0296581, + -0.0125418, + 0.0326944, + -0.0590256, + -0.0125423, + 0.0326975, + -0.0296628, + 0.012852, + 0.0326966, + -0.0296623, + 0.0128525, + 0.0326935, + -0.0590252, + -0.0125434, + -0.0122037, + -0.0590209, + -0.0125439, + -0.0122006, + -0.0296581, + 0.0128504, + -0.0122015, + -0.0296576, + 0.0128509, + -0.0122046, + -0.0590205, + 0.012851, + -0.0122049, + -0.0618471, + 0.0128504, + -0.0122012, + -0.0268318, + 0.0128525, + 0.0326932, + -0.0618518, + 0.0128519, + 0.0326969, + -0.0268365, + -0.0125433, + -0.012204, + -0.0618475, + -0.0125417, + 0.0326941, + -0.0618522, + -0.0125424, + 0.0326978, + -0.026837, + -0.0125439, + -0.0122003, + -0.0268323, + -0.0097551, + 0.0087803, + -0.0157662, + -0.0097549, + 0.0087788, + -0.0307525, + -0.0097547, + 0.0147396, + -0.0307532, + -0.0097549, + 0.0147411, + -0.0157668, + 0.0100627, + 0.0087796, + -0.0157659, + 0.010063, + 0.008778, + -0.0307522, + 0.0100632, + 0.0147388, + -0.0307528, + 0.0100629, + 0.0147404, + -0.0157665, + 0.0100635, + 0.0318247, + -0.0157683, + 0.0100637, + 0.0318232, + -0.0307546, + 0.0100635, + 0.0258624, + -0.030754, + 0.0100633, + 0.0258639, + -0.0157676, + -0.0097544, + 0.0318255, + -0.0157686, + -0.0097541, + 0.0318239, + -0.030755, + -0.0097543, + 0.0258631, + -0.0307543, + -0.0097546, + 0.0258647, + -0.015768 + ], + "faces": [ + 2, + 0, + 1, + 14, + 0, + 2, + 15, + 2, + 3, + 0, + 2, + 1, + 17, + 14, + 0, + 2, + 2, + 15, + 16, + 0, + 2, + 16, + 15, + 20, + 0, + 2, + 21, + 14, + 17, + 0, + 2, + 22, + 25, + 33, + 0, + 2, + 27, + 24, + 35, + 0, + 2, + 5, + 19, + 26, + 0, + 2, + 4, + 27, + 18, + 0, + 2, + 4, + 28, + 27, + 0, + 2, + 1, + 27, + 28, + 0, + 2, + 1, + 28, + 17, + 0, + 2, + 5, + 26, + 29, + 0, + 2, + 2, + 29, + 26, + 0, + 2, + 2, + 16, + 29, + 0, + 2, + 33, + 25, + 36, + 0, + 2, + 35, + 24, + 30, + 0, + 2, + 33, + 20, + 22, + 0, + 2, + 35, + 18, + 27, + 0, + 2, + 31, + 17, + 28, + 0, + 2, + 37, + 5, + 29, + 0, + 2, + 75, + 77, + 74, + 0, + 2, + 75, + 76, + 77, + 0, + 2, + 73, + 71, + 70, + 0, + 2, + 73, + 72, + 71, + 0, + 2, + 77, + 72, + 73, + 0, + 2, + 77, + 76, + 72, + 0, + 2, + 75, + 70, + 71, + 0, + 2, + 75, + 74, + 70, + 0, + 2, + 64, + 69, + 68, + 0, + 2, + 64, + 65, + 69, + 0, + 2, + 62, + 67, + 66, + 0, + 2, + 62, + 63, + 67, + 0, + 2, + 66, + 68, + 69, + 0, + 2, + 66, + 67, + 68, + 0, + 2, + 64, + 62, + 65, + 0, + 2, + 64, + 63, + 62, + 0, + 2, + 46, + 51, + 47, + 0, + 2, + 46, + 50, + 51, + 0, + 2, + 56, + 59, + 46, + 0, + 2, + 56, + 46, + 49, + 0, + 2, + 46, + 47, + 48, + 0, + 2, + 46, + 48, + 49, + 0, + 2, + 47, + 57, + 48, + 0, + 2, + 47, + 60, + 57, + 0, + 2, + 55, + 61, + 51, + 0, + 2, + 55, + 51, + 52, + 0, + 2, + 54, + 50, + 58, + 0, + 2, + 54, + 53, + 50, + 0, + 2, + 50, + 53, + 52, + 0, + 2, + 50, + 52, + 51, + 0, + 2, + 38, + 51, + 42, + 0, + 2, + 38, + 47, + 51, + 0, + 2, + 6, + 47, + 38, + 0, + 2, + 6, + 60, + 47, + 0, + 2, + 6, + 61, + 60, + 0, + 2, + 6, + 10, + 61, + 0, + 2, + 10, + 51, + 61, + 0, + 2, + 10, + 42, + 51, + 0, + 2, + 11, + 50, + 43, + 0, + 2, + 11, + 58, + 50, + 0, + 2, + 39, + 50, + 46, + 0, + 2, + 39, + 43, + 50, + 0, + 2, + 7, + 58, + 11, + 0, + 2, + 7, + 59, + 58, + 0, + 2, + 7, + 46, + 59, + 0, + 2, + 7, + 39, + 46, + 0, + 2, + 9, + 48, + 57, + 0, + 2, + 9, + 41, + 48, + 0, + 2, + 9, + 55, + 13, + 0, + 2, + 9, + 57, + 55, + 0, + 2, + 13, + 52, + 45, + 0, + 2, + 13, + 55, + 52, + 0, + 2, + 8, + 49, + 40, + 0, + 2, + 8, + 56, + 49, + 0, + 2, + 12, + 53, + 54, + 0, + 2, + 12, + 44, + 53, + 0, + 2, + 8, + 12, + 54, + 0, + 2, + 8, + 54, + 56, + 0, + 2, + 40, + 53, + 44, + 0, + 2, + 40, + 49, + 53, + 0, + 2, + 55, + 57, + 60, + 0, + 2, + 55, + 60, + 61, + 0, + 2, + 56, + 54, + 58, + 0, + 2, + 56, + 58, + 59, + 0, + 2, + 48, + 52, + 53, + 0, + 2, + 48, + 53, + 49, + 0, + 2, + 40, + 12, + 8, + 0, + 2, + 40, + 44, + 12, + 0, + 2, + 9, + 45, + 41, + 0, + 2, + 9, + 13, + 45, + 0, + 2, + 38, + 10, + 6, + 0, + 2, + 38, + 42, + 10, + 0, + 2, + 7, + 43, + 39, + 0, + 2, + 7, + 11, + 43, + 0, + 2, + 36, + 32, + 33, + 0, + 2, + 36, + 37, + 32, + 0, + 2, + 30, + 34, + 35, + 0, + 2, + 30, + 31, + 34, + 0, + 2, + 29, + 16, + 37, + 0, + 2, + 37, + 16, + 32, + 0, + 2, + 28, + 34, + 31, + 0, + 2, + 28, + 4, + 34, + 0, + 2, + 1, + 26, + 27, + 0, + 2, + 1, + 2, + 26, + 0, + 2, + 26, + 19, + 25, + 0, + 2, + 25, + 19, + 36, + 0, + 2, + 24, + 26, + 25, + 0, + 2, + 24, + 27, + 26, + 0, + 2, + 23, + 30, + 24, + 0, + 2, + 23, + 21, + 30, + 0, + 2, + 23, + 25, + 22, + 0, + 2, + 23, + 24, + 25, + 0, + 2, + 14, + 20, + 15, + 0, + 2, + 14, + 21, + 20, + 0, + 2, + 20, + 23, + 22, + 0, + 2, + 20, + 21, + 23, + 0, + 2, + 36, + 5, + 37, + 0, + 2, + 36, + 19, + 5, + 0, + 2, + 34, + 18, + 35, + 0, + 2, + 34, + 4, + 18, + 0, + 2, + 32, + 20, + 33, + 0, + 2, + 32, + 16, + 20, + 0, + 2, + 30, + 17, + 31, + 0, + 2, + 30, + 21, + 17, + 0, + 2, + 3, + 0, + 14, + 0, + 2, + 14, + 15, + 3, + 0, + 2, + 0, + 2, + 1, + 0, + 2, + 0, + 3, + 2, + 0, + 3, + 41, + 45, + 52, + 48, + 0 + ] } diff --git a/src/client/components/localisation/darwin_robot/left_leg/config/left_foot.json b/src/client/components/localisation/darwin_robot/left_leg/config/left_foot.json index 972e0469..5b34e195 100644 --- a/src/client/components/localisation/darwin_robot/left_leg/config/left_foot.json +++ b/src/client/components/localisation/darwin_robot/left_leg/config/left_foot.json @@ -1,982 +1,982 @@ { - "metadata": { - "formatVersion": 3 - }, - "materials": [ - { - "DbgColor": 15658731, - "DbgIndex": 0, - "DbgName": "Plastic", - "colorDiffuse": [ - 0.301961, - 0.301961, - 0.301961 - ], - "colorSpecular": [ - 0.401201, - 0.401201, - 0.401201 - ], - "shading": "Lambert", - "specularCoef": 50, - "opacity": 1.0, - "vertexColors": false - }, - { - "DbgColor": 15658734, - "DbgIndex": 1, - "DbgName": "Metal", - "colorDiffuse": [ - 0.7, - 0.7, - 0.7 - ], - "colorSpecular": [ - 0.168737, - 0.168737, - 0.168737 - ], - "shading": "Lambert", - "specularCoef": 50, - "opacity": 1.0, - "vertexColors": false - } - ], - "normals": [], - "colors": [], - "uvs": [], - "vertices": [ - -0.0087402, - 0.0067738, - 0.0246943, - -0.0087402, - -0.0101185, - 0.0246961, - -0.0002941, - -0.0136169, - 0.024697, - 0.008152, - -0.0101184, - 0.0246972, - 0.0116505, - -0.0016379, - 0.0246966, - 0.008152, - 0.0067738, - 0.0246955, - -0.0002941, - 0.0102723, - 0.0246945, - -0.0087401, - 0.0067735, - 0.0225305, - -0.0122386, - -0.0016381, - 0.0225311, - -0.0087401, - -0.0101187, - 0.0225322, - -0.000294, - -0.0136172, - 0.0225332, - 0.0081521, - -0.0101187, - 0.0225334, - 0.0116506, - -0.0016381, - 0.0225328, - 0.0081521, - 0.0067735, - 0.0225316, - -0.000294, - 0.010272, - 0.0225307, - -0.0002906, - 0.010267, - -0.0258945, - 0.0081555, - 0.0067685, - -0.0258936, - 0.011654, - -0.0016432, - -0.0258925, - 0.0081555, - -0.0101237, - -0.0258918, - -0.0002906, - -0.0136222, - -0.025892, - -0.0087367, - -0.0101237, - -0.025893, - -0.0122352, - -0.0016432, - -0.0258941, - -0.0087367, - 0.0067685, - -0.0258948, - -0.0002907, - 0.0102672, - -0.0238477, - 0.0081554, - 0.0067687, - -0.0238467, - 0.0116539, - -0.001643, - -0.0238456, - 0.0081554, - -0.0101235, - -0.0238449, - -0.0002907, - -0.013622, - -0.0238452, - -0.0087369, - -0.0101235, - -0.0238461, - -0.0087369, - 0.0067687, - -0.0238479, - 0.0105403, - -0.0309114, - 0.0262598, - 0.0105438, - -0.0309167, - -0.0238425, - -0.0112658, - -0.0309114, - 0.0262583, - -0.0112623, - -0.0309167, - -0.023844, - -0.0112624, - -0.0295248, - -0.0223178, - -0.0112657, - -0.0295198, - 0.024698, - 0.0105404, - -0.0295198, - 0.0246995, - 0.0105437, - -0.0295248, - -0.0223163, - 0.0105436, - -0.0016428, - -0.0223194, - 0.0105404, - -0.0016379, - 0.0246965, - -0.0112658, - -0.0016379, - 0.024695, - -0.0112625, - -0.0016428, - -0.0223209, - -0.0112624, - -0.001643, - -0.0238472, - -0.0112659, - -0.0016377, - 0.0262551, - 0.0105403, - -0.0016377, - 0.0262567, - 0.0105437, - -0.001643, - -0.0238457, - -0.003267, - 0.0013025, - -0.0264138, - -0.0044998, - -0.0016546, - -0.0264136, - -0.003267, - -0.0046503, - -0.0264132, - -0.0002906, - -0.0058831, - -0.0264128, - 0.0026858, - -0.0046503, - -0.0264128, - 0.0039187, - -0.0016546, - -0.026413, - 0.0026858, - 0.0013025, - -0.0264134, - -0.0002906, - 0.0025354, - -0.0264137, - -0.0002943, - 0.0025409, - 0.0266983, - 0.0026821, - 0.0013081, - 0.0266986, - 0.003915, - -0.0016491, - 0.026699, - 0.0026821, - -0.0046447, - 0.0266992, - -0.0002943, - -0.0058776, - 0.0266991, - -0.0032707, - -0.0046447, - 0.0266988, - -0.0045035, - -0.0016491, - 0.0266984, - -0.0032707, - 0.0013081, - 0.0266982, - -0.0221594, - -0.0182954, - -0.0532328, - 0.0440031, - -0.0182966, - -0.0532305, - 0.0440028, - -0.0335107, - -0.0532297, - -0.0221597, - -0.0335494, - -0.053232, - -0.0145455, - -0.0335441, - 0.0507272, - 0.0376511, - -0.0335051, - 0.0503662, - 0.0376513, - -0.0238991, - 0.0503657, - -0.0145454, - -0.0238982, - 0.0507267, - -0.022162, - -0.0182915, - 0.0211815, - 0.0440005, - -0.0182927, - 0.0211838, - -0.0075757, - -0.0335441, - 0.0521784, - 0.0298263, - -0.0335448, - 0.0521797, - 0.0298265, - -0.0238989, - 0.0521792, - -0.0075755, - -0.0238982, - 0.0521779, - -0.0221629, - -0.0226602, - 0.0447686, - 0.0439996, - -0.0226613, - 0.0447709, - -0.0221631, - -0.0335044, - 0.0447691, - 0.0439994, - -0.0335055, - 0.0447714 - ], - "faces": [ - 2, - 76, - 70, - 66, - 0, - 2, - 71, - 77, - 67, - 0, - 2, - 70, - 76, - 75, - 0, - 2, - 76, - 69, - 75, - 0, - 2, - 68, - 77, - 74, - 0, - 2, - 77, - 71, - 74, - 0, - 2, - 67, - 73, - 79, - 0, - 2, - 64, - 79, - 73, - 0, - 2, - 64, - 77, - 79, - 0, - 2, - 63, - 77, - 64, - 0, - 2, - 63, - 71, - 77, - 0, - 2, - 62, - 76, - 70, - 0, - 2, - 65, - 72, - 78, - 0, - 2, - 66, - 78, - 72, - 0, - 2, - 62, - 65, - 76, - 0, - 2, - 65, - 78, - 76, - 0, - 2, - 66, - 69, - 78, - 0, - 2, - 69, - 76, - 78, - 0, - 2, - 67, - 79, - 68, - 0, - 2, - 79, - 77, - 68, - 0, - 2, - 75, - 74, - 71, - 0, - 2, - 75, - 71, - 70, - 0, - 2, - 75, - 69, - 66, - 0, - 2, - 75, - 66, - 72, - 0, - 2, - 74, - 75, - 72, - 0, - 2, - 74, - 72, - 73, - 0, - 2, - 68, - 74, - 67, - 0, - 2, - 74, - 73, - 67, - 0, - 2, - 73, - 72, - 64, - 0, - 2, - 72, - 65, - 64, - 0, - 2, - 62, - 70, - 71, - 0, - 2, - 62, - 71, - 63, - 0, - 2, - 62, - 63, - 64, - 0, - 2, - 62, - 64, - 65, - 0, - 2, - 1, - 2, - 3, - 1, - 2, - 40, - 1, - 3, - 1, - 2, - 40, - 3, - 4, - 1, - 2, - 0, - 40, - 4, - 1, - 2, - 0, - 4, - 5, - 1, - 2, - 0, - 5, - 6, - 1, - 2, - 9, - 11, - 10, - 1, - 2, - 9, - 12, - 11, - 1, - 2, - 8, - 12, - 9, - 1, - 2, - 7, - 12, - 8, - 1, - 2, - 7, - 13, - 12, - 1, - 2, - 14, - 13, - 7, - 1, - 2, - 28, - 27, - 26, - 1, - 2, - 42, - 28, - 26, - 1, - 2, - 42, - 26, - 25, - 1, - 2, - 29, - 42, - 25, - 1, - 2, - 29, - 25, - 24, - 1, - 2, - 29, - 24, - 23, - 1, - 2, - 20, - 18, - 19, - 1, - 2, - 20, - 17, - 18, - 1, - 2, - 21, - 17, - 20, - 1, - 2, - 22, - 17, - 21, - 1, - 2, - 22, - 16, - 17, - 1, - 2, - 15, - 16, - 22, - 1, - 2, - 53, - 52, - 46, - 1, - 2, - 46, - 52, - 51, - 1, - 2, - 46, - 51, - 47, - 1, - 2, - 47, - 51, - 48, - 1, - 2, - 48, - 51, - 50, - 1, - 2, - 48, - 50, - 49, - 1, - 2, - 55, - 54, - 61, - 1, - 2, - 55, - 61, - 56, - 1, - 2, - 56, - 61, - 60, - 1, - 2, - 56, - 60, - 59, - 1, - 2, - 56, - 59, - 57, - 1, - 2, - 57, - 59, - 58, - 1, - 2, - 47, - 61, - 46, - 1, - 2, - 47, - 60, - 61, - 1, - 2, - 48, - 60, - 47, - 1, - 2, - 48, - 59, - 60, - 1, - 2, - 49, - 59, - 48, - 1, - 2, - 49, - 58, - 59, - 1, - 2, - 50, - 58, - 49, - 1, - 2, - 50, - 57, - 58, - 1, - 2, - 51, - 57, - 50, - 1, - 2, - 51, - 56, - 57, - 1, - 2, - 52, - 56, - 51, - 1, - 2, - 52, - 55, - 56, - 1, - 2, - 53, - 55, - 52, - 1, - 2, - 53, - 54, - 55, - 1, - 2, - 46, - 54, - 53, - 1, - 2, - 46, - 61, - 54, - 1, - 2, - 38, - 34, - 37, - 1, - 2, - 38, - 41, - 34, - 1, - 2, - 36, - 40, - 39, - 1, - 2, - 36, - 35, - 40, - 1, - 2, - 42, - 38, - 45, - 1, - 2, - 42, - 41, - 38, - 1, - 2, - 44, - 40, - 43, - 1, - 2, - 44, - 39, - 40, - 1, - 2, - 33, - 45, - 31, - 1, - 2, - 33, - 42, - 45, - 1, - 2, - 30, - 43, - 32, - 1, - 2, - 30, - 44, - 43, - 1, - 2, - 34, - 42, - 33, - 1, - 2, - 34, - 41, - 42, - 1, - 2, - 32, - 43, - 35, - 1, - 2, - 35, - 43, - 40, - 1, - 2, - 36, - 44, - 30, - 1, - 2, - 36, - 39, - 44, - 1, - 2, - 31, - 45, - 37, - 1, - 2, - 37, - 45, - 38, - 1, - 2, - 29, - 22, - 21, - 1, - 2, - 29, - 21, - 42, - 1, - 2, - 42, - 21, - 20, - 1, - 2, - 42, - 20, - 28, - 1, - 2, - 28, - 20, - 19, - 1, - 2, - 28, - 19, - 27, - 1, - 2, - 27, - 19, - 18, - 1, - 2, - 27, - 18, - 26, - 1, - 2, - 26, - 18, - 17, - 1, - 2, - 26, - 17, - 25, - 1, - 2, - 25, - 17, - 16, - 1, - 2, - 25, - 16, - 24, - 1, - 2, - 24, - 16, - 15, - 1, - 2, - 24, - 15, - 23, - 1, - 2, - 23, - 15, - 22, - 1, - 2, - 23, - 22, - 29, - 1, - 2, - 7, - 0, - 6, - 1, - 2, - 7, - 6, - 14, - 1, - 2, - 5, - 13, - 14, - 1, - 2, - 5, - 14, - 6, - 1, - 2, - 4, - 12, - 13, - 1, - 2, - 4, - 13, - 5, - 1, - 2, - 3, - 11, - 12, - 1, - 2, - 3, - 12, - 4, - 1, - 2, - 2, - 10, - 11, - 1, - 2, - 2, - 11, - 3, - 1, - 2, - 1, - 9, - 10, - 1, - 2, - 1, - 10, - 2, - 1, - 2, - 40, - 8, - 9, - 1, - 2, - 40, - 9, - 1, - 1, - 2, - 0, - 7, - 8, - 1, - 2, - 0, - 8, - 40, - 1 - ] + "metadata": { + "formatVersion": 3 + }, + "materials": [ + { + "DbgColor": 15658731, + "DbgIndex": 0, + "DbgName": "Plastic", + "colorDiffuse": [ + 0.301961, + 0.301961, + 0.301961 + ], + "colorSpecular": [ + 0.401201, + 0.401201, + 0.401201 + ], + "shading": "Lambert", + "specularCoef": 50, + "opacity": 1.0, + "vertexColors": false + }, + { + "DbgColor": 15658734, + "DbgIndex": 1, + "DbgName": "Metal", + "colorDiffuse": [ + 0.7, + 0.7, + 0.7 + ], + "colorSpecular": [ + 0.168737, + 0.168737, + 0.168737 + ], + "shading": "Lambert", + "specularCoef": 50, + "opacity": 1.0, + "vertexColors": false + } + ], + "normals": [], + "colors": [], + "uvs": [], + "vertices": [ + -0.0087402, + 0.0067738, + 0.0246943, + -0.0087402, + -0.0101185, + 0.0246961, + -0.0002941, + -0.0136169, + 0.024697, + 0.008152, + -0.0101184, + 0.0246972, + 0.0116505, + -0.0016379, + 0.0246966, + 0.008152, + 0.0067738, + 0.0246955, + -0.0002941, + 0.0102723, + 0.0246945, + -0.0087401, + 0.0067735, + 0.0225305, + -0.0122386, + -0.0016381, + 0.0225311, + -0.0087401, + -0.0101187, + 0.0225322, + -0.000294, + -0.0136172, + 0.0225332, + 0.0081521, + -0.0101187, + 0.0225334, + 0.0116506, + -0.0016381, + 0.0225328, + 0.0081521, + 0.0067735, + 0.0225316, + -0.000294, + 0.010272, + 0.0225307, + -0.0002906, + 0.010267, + -0.0258945, + 0.0081555, + 0.0067685, + -0.0258936, + 0.011654, + -0.0016432, + -0.0258925, + 0.0081555, + -0.0101237, + -0.0258918, + -0.0002906, + -0.0136222, + -0.025892, + -0.0087367, + -0.0101237, + -0.025893, + -0.0122352, + -0.0016432, + -0.0258941, + -0.0087367, + 0.0067685, + -0.0258948, + -0.0002907, + 0.0102672, + -0.0238477, + 0.0081554, + 0.0067687, + -0.0238467, + 0.0116539, + -0.001643, + -0.0238456, + 0.0081554, + -0.0101235, + -0.0238449, + -0.0002907, + -0.013622, + -0.0238452, + -0.0087369, + -0.0101235, + -0.0238461, + -0.0087369, + 0.0067687, + -0.0238479, + 0.0105403, + -0.0309114, + 0.0262598, + 0.0105438, + -0.0309167, + -0.0238425, + -0.0112658, + -0.0309114, + 0.0262583, + -0.0112623, + -0.0309167, + -0.023844, + -0.0112624, + -0.0295248, + -0.0223178, + -0.0112657, + -0.0295198, + 0.024698, + 0.0105404, + -0.0295198, + 0.0246995, + 0.0105437, + -0.0295248, + -0.0223163, + 0.0105436, + -0.0016428, + -0.0223194, + 0.0105404, + -0.0016379, + 0.0246965, + -0.0112658, + -0.0016379, + 0.024695, + -0.0112625, + -0.0016428, + -0.0223209, + -0.0112624, + -0.001643, + -0.0238472, + -0.0112659, + -0.0016377, + 0.0262551, + 0.0105403, + -0.0016377, + 0.0262567, + 0.0105437, + -0.001643, + -0.0238457, + -0.003267, + 0.0013025, + -0.0264138, + -0.0044998, + -0.0016546, + -0.0264136, + -0.003267, + -0.0046503, + -0.0264132, + -0.0002906, + -0.0058831, + -0.0264128, + 0.0026858, + -0.0046503, + -0.0264128, + 0.0039187, + -0.0016546, + -0.026413, + 0.0026858, + 0.0013025, + -0.0264134, + -0.0002906, + 0.0025354, + -0.0264137, + -0.0002943, + 0.0025409, + 0.0266983, + 0.0026821, + 0.0013081, + 0.0266986, + 0.003915, + -0.0016491, + 0.026699, + 0.0026821, + -0.0046447, + 0.0266992, + -0.0002943, + -0.0058776, + 0.0266991, + -0.0032707, + -0.0046447, + 0.0266988, + -0.0045035, + -0.0016491, + 0.0266984, + -0.0032707, + 0.0013081, + 0.0266982, + -0.0221594, + -0.0182954, + -0.0532328, + 0.0440031, + -0.0182966, + -0.0532305, + 0.0440028, + -0.0335107, + -0.0532297, + -0.0221597, + -0.0335494, + -0.053232, + -0.0145455, + -0.0335441, + 0.0507272, + 0.0376511, + -0.0335051, + 0.0503662, + 0.0376513, + -0.0238991, + 0.0503657, + -0.0145454, + -0.0238982, + 0.0507267, + -0.022162, + -0.0182915, + 0.0211815, + 0.0440005, + -0.0182927, + 0.0211838, + -0.0075757, + -0.0335441, + 0.0521784, + 0.0298263, + -0.0335448, + 0.0521797, + 0.0298265, + -0.0238989, + 0.0521792, + -0.0075755, + -0.0238982, + 0.0521779, + -0.0221629, + -0.0226602, + 0.0447686, + 0.0439996, + -0.0226613, + 0.0447709, + -0.0221631, + -0.0335044, + 0.0447691, + 0.0439994, + -0.0335055, + 0.0447714 + ], + "faces": [ + 2, + 76, + 70, + 66, + 0, + 2, + 71, + 77, + 67, + 0, + 2, + 70, + 76, + 75, + 0, + 2, + 76, + 69, + 75, + 0, + 2, + 68, + 77, + 74, + 0, + 2, + 77, + 71, + 74, + 0, + 2, + 67, + 73, + 79, + 0, + 2, + 64, + 79, + 73, + 0, + 2, + 64, + 77, + 79, + 0, + 2, + 63, + 77, + 64, + 0, + 2, + 63, + 71, + 77, + 0, + 2, + 62, + 76, + 70, + 0, + 2, + 65, + 72, + 78, + 0, + 2, + 66, + 78, + 72, + 0, + 2, + 62, + 65, + 76, + 0, + 2, + 65, + 78, + 76, + 0, + 2, + 66, + 69, + 78, + 0, + 2, + 69, + 76, + 78, + 0, + 2, + 67, + 79, + 68, + 0, + 2, + 79, + 77, + 68, + 0, + 2, + 75, + 74, + 71, + 0, + 2, + 75, + 71, + 70, + 0, + 2, + 75, + 69, + 66, + 0, + 2, + 75, + 66, + 72, + 0, + 2, + 74, + 75, + 72, + 0, + 2, + 74, + 72, + 73, + 0, + 2, + 68, + 74, + 67, + 0, + 2, + 74, + 73, + 67, + 0, + 2, + 73, + 72, + 64, + 0, + 2, + 72, + 65, + 64, + 0, + 2, + 62, + 70, + 71, + 0, + 2, + 62, + 71, + 63, + 0, + 2, + 62, + 63, + 64, + 0, + 2, + 62, + 64, + 65, + 0, + 2, + 1, + 2, + 3, + 1, + 2, + 40, + 1, + 3, + 1, + 2, + 40, + 3, + 4, + 1, + 2, + 0, + 40, + 4, + 1, + 2, + 0, + 4, + 5, + 1, + 2, + 0, + 5, + 6, + 1, + 2, + 9, + 11, + 10, + 1, + 2, + 9, + 12, + 11, + 1, + 2, + 8, + 12, + 9, + 1, + 2, + 7, + 12, + 8, + 1, + 2, + 7, + 13, + 12, + 1, + 2, + 14, + 13, + 7, + 1, + 2, + 28, + 27, + 26, + 1, + 2, + 42, + 28, + 26, + 1, + 2, + 42, + 26, + 25, + 1, + 2, + 29, + 42, + 25, + 1, + 2, + 29, + 25, + 24, + 1, + 2, + 29, + 24, + 23, + 1, + 2, + 20, + 18, + 19, + 1, + 2, + 20, + 17, + 18, + 1, + 2, + 21, + 17, + 20, + 1, + 2, + 22, + 17, + 21, + 1, + 2, + 22, + 16, + 17, + 1, + 2, + 15, + 16, + 22, + 1, + 2, + 53, + 52, + 46, + 1, + 2, + 46, + 52, + 51, + 1, + 2, + 46, + 51, + 47, + 1, + 2, + 47, + 51, + 48, + 1, + 2, + 48, + 51, + 50, + 1, + 2, + 48, + 50, + 49, + 1, + 2, + 55, + 54, + 61, + 1, + 2, + 55, + 61, + 56, + 1, + 2, + 56, + 61, + 60, + 1, + 2, + 56, + 60, + 59, + 1, + 2, + 56, + 59, + 57, + 1, + 2, + 57, + 59, + 58, + 1, + 2, + 47, + 61, + 46, + 1, + 2, + 47, + 60, + 61, + 1, + 2, + 48, + 60, + 47, + 1, + 2, + 48, + 59, + 60, + 1, + 2, + 49, + 59, + 48, + 1, + 2, + 49, + 58, + 59, + 1, + 2, + 50, + 58, + 49, + 1, + 2, + 50, + 57, + 58, + 1, + 2, + 51, + 57, + 50, + 1, + 2, + 51, + 56, + 57, + 1, + 2, + 52, + 56, + 51, + 1, + 2, + 52, + 55, + 56, + 1, + 2, + 53, + 55, + 52, + 1, + 2, + 53, + 54, + 55, + 1, + 2, + 46, + 54, + 53, + 1, + 2, + 46, + 61, + 54, + 1, + 2, + 38, + 34, + 37, + 1, + 2, + 38, + 41, + 34, + 1, + 2, + 36, + 40, + 39, + 1, + 2, + 36, + 35, + 40, + 1, + 2, + 42, + 38, + 45, + 1, + 2, + 42, + 41, + 38, + 1, + 2, + 44, + 40, + 43, + 1, + 2, + 44, + 39, + 40, + 1, + 2, + 33, + 45, + 31, + 1, + 2, + 33, + 42, + 45, + 1, + 2, + 30, + 43, + 32, + 1, + 2, + 30, + 44, + 43, + 1, + 2, + 34, + 42, + 33, + 1, + 2, + 34, + 41, + 42, + 1, + 2, + 32, + 43, + 35, + 1, + 2, + 35, + 43, + 40, + 1, + 2, + 36, + 44, + 30, + 1, + 2, + 36, + 39, + 44, + 1, + 2, + 31, + 45, + 37, + 1, + 2, + 37, + 45, + 38, + 1, + 2, + 29, + 22, + 21, + 1, + 2, + 29, + 21, + 42, + 1, + 2, + 42, + 21, + 20, + 1, + 2, + 42, + 20, + 28, + 1, + 2, + 28, + 20, + 19, + 1, + 2, + 28, + 19, + 27, + 1, + 2, + 27, + 19, + 18, + 1, + 2, + 27, + 18, + 26, + 1, + 2, + 26, + 18, + 17, + 1, + 2, + 26, + 17, + 25, + 1, + 2, + 25, + 17, + 16, + 1, + 2, + 25, + 16, + 24, + 1, + 2, + 24, + 16, + 15, + 1, + 2, + 24, + 15, + 23, + 1, + 2, + 23, + 15, + 22, + 1, + 2, + 23, + 22, + 29, + 1, + 2, + 7, + 0, + 6, + 1, + 2, + 7, + 6, + 14, + 1, + 2, + 5, + 13, + 14, + 1, + 2, + 5, + 14, + 6, + 1, + 2, + 4, + 12, + 13, + 1, + 2, + 4, + 13, + 5, + 1, + 2, + 3, + 11, + 12, + 1, + 2, + 3, + 12, + 4, + 1, + 2, + 2, + 10, + 11, + 1, + 2, + 2, + 11, + 3, + 1, + 2, + 1, + 9, + 10, + 1, + 2, + 1, + 10, + 2, + 1, + 2, + 40, + 8, + 9, + 1, + 2, + 40, + 9, + 1, + 1, + 2, + 0, + 7, + 8, + 1, + 2, + 0, + 8, + 40, + 1 + ] } diff --git a/src/client/components/localisation/darwin_robot/left_leg/config/left_lower_leg.json b/src/client/components/localisation/darwin_robot/left_leg/config/left_lower_leg.json index c56b548c..63fbe394 100644 --- a/src/client/components/localisation/darwin_robot/left_leg/config/left_lower_leg.json +++ b/src/client/components/localisation/darwin_robot/left_leg/config/left_lower_leg.json @@ -1,1024 +1,1024 @@ { - "metadata": { - "formatVersion": 3 - }, - "materials": [ - { - "DbgColor": 15658734, - "DbgIndex": 0, - "DbgName": "Plastic", - "colorDiffuse": [ - 0.301961, - 0.301961, - 0.301961 - ], - "colorSpecular": [ - 0.401201, - 0.401201, - 0.401201 - ], - "shading": "Lambert", - "specularCoef": 50, - "opacity": 1.0, - "vertexColors": false - } - ], - "normals": [], - "colors": [], - "uvs": [], - "vertices": [ - 0.0321921, - -0.0784286, - -0.0367578, - -0.0321921, - -0.0784286, - -0.0367578, - 0.0311006, - -0.0392151, - -0.0368254, - -0.0311006, - -0.0392151, - -0.0368254, - 0.030769, - -0.0273114, - -0.0213674, - -0.030769, - -0.0273114, - -0.0213674, - 0.0303636, - -0.0127552, - -0.0089633, - -0.0303636, - -0.0127552, - -0.0089633, - 0.0299594, - 0.0017595, - -0.0015376, - -0.0299594, - 0.0017595, - -0.0015376, - 0.0295499, - 0.0164651, - 0.0041354, - -0.0295499, - 0.0164651, - 0.0041354, - 0.0295497, - 0.0164712, - 0.0132623, - -0.0295497, - 0.0164712, - 0.0132623, - 0.030808, - -0.0287311, - 0.0093219, - -0.030808, - -0.0287311, - 0.0093219, - 0.0317893, - -0.0639808, - 0.0020625, - -0.0317893, - -0.0639808, - 0.0020625, - 0.0321876, - -0.0782881, - -0.0018784, - -0.0321876, - -0.0782881, - -0.0018784, - 0.0245216, - -0.104273, - 0.0042722, - -0.0245216, - -0.104273, - 0.0042722, - 0.0275907, - -0.0999268, - 0.0088045, - -0.0275907, - -0.0999268, - 0.0088045, - 0.0313282, - -0.0910063, - 0.0009325, - -0.0313282, - -0.0910063, - 0.0009325, - 0.0320606, - -0.0852879, - -0.0019302, - -0.0320606, - -0.0852879, - -0.0019302, - 0.0245218, - -0.104273, - -0.0063471, - -0.0245218, - -0.104273, - -0.0063471, - 0.027591, - -0.0999272, - -0.0114838, - -0.027591, - -0.0999272, - -0.0114838, - 0.0313286, - -0.0910067, - -0.0217641, - -0.0313286, - -0.0910067, - -0.0217641, - 0.0320611, - -0.0852883, - -0.028391, - -0.0320611, - -0.0852883, - -0.028391, - 0, - -0.0583238, - 0.0271951, - 0, - -0.0147893, - 0.0307726, - 0, - 0.0164661, - 0.0312491, - 0.0199838, - -0.0583242, - 0.0271955, - -0.0199838, - -0.0583242, - 0.0271955, - 0.0199845, - -0.0147896, - 0.0307729, - -0.0199845, - -0.0147896, - 0.0307729, - 0.019985, - 0.0164657, - 0.0312495, - -0.019985, - 0.0164657, - 0.0312495, - 0.0218872, - -0.0583242, - 0.0245715, - -0.0218872, - -0.0583242, - 0.0245715, - 0.0218868, - -0.0862341, - 0.0205168, - -0.0218868, - -0.0862341, - 0.0205168, - 0.0266765, - 0.0164685, - 0.0225968, - -0.0266765, - 0.0164685, - 0.0225968, - 0.0263508, - -0.0217604, - 0.0218203, - -0.0263508, - -0.0217604, - 0.0218203, - 0.0265654, - -0.0611524, - 0.0190446, - -0.0265654, - -0.0611524, - 0.0190446, - 0.0265862, - -0.082261, - 0.0142788, - -0.0265862, - -0.082261, - 0.0142788, - 0.0288814, - -0.0784285, - -0.0367579, - -0.0288814, - -0.0784285, - -0.0367579, - 0.0277899, - -0.039215, - -0.0368255, - -0.0277899, - -0.039215, - -0.0368255, - 0.0274583, - -0.0273113, - -0.0213675, - -0.0274583, - -0.0273113, - -0.0213675, - 0.0270529, - -0.0127551, - -0.0089634, - -0.0270529, - -0.0127551, - -0.0089634, - 0.0266488, - 0.0017595, - -0.0015377, - -0.0266488, - 0.0017595, - -0.0015377, - 0.0262392, - 0.0164652, - 0.0041353, - -0.0262392, - 0.0164652, - 0.0041353, - 0.026239, - 0.0164713, - 0.0132622, - -0.026239, - 0.0164713, - 0.0132622, - 0.021211, - -0.104273, - 0.0042722, - -0.021211, - -0.104273, - 0.0042722, - 0.02428, - -0.0999268, - 0.0088045, - -0.02428, - -0.0999268, - 0.0088045, - 0.0212111, - -0.104273, - -0.0063472, - -0.0212111, - -0.104273, - -0.0063472, - 0.0242804, - -0.0999271, - -0.0114838, - -0.0242804, - -0.0999271, - -0.0114838, - 0.0280179, - -0.0910066, - -0.0217641, - -0.0280179, - -0.0910066, - -0.0217641, - 0.0287504, - -0.0852883, - -0.0283911, - -0.0287504, - -0.0852883, - -0.0283911, - 0.0175987, - -0.0583242, - 0.0248103, - -0.0175987, - -0.0583242, - 0.0248103, - 0.0175999, - 0.0164657, - 0.0288643, - -0.0175999, - 0.0164657, - 0.0288643, - 0.0195021, - -0.0583242, - 0.0221864, - -0.0195021, - -0.0583242, - 0.0221864, - 0.0195017, - -0.0862341, - 0.0181316, - -0.0195017, - -0.0862341, - 0.0181316, - 0.0242914, - 0.0164685, - 0.0202117, - -0.0242914, - 0.0164685, - 0.0202117, - 0, - -0.0583239, - 0.0243141, - 0, - 0.016466, - 0.0283681 - ], - "faces": [ - 2, - 10, - 12, - 14, - 0, - 2, - 15, - 13, - 11, - 0, - 2, - 10, - 14, - 16, - 0, - 2, - 17, - 15, - 11, - 0, - 2, - 8, - 10, - 16, - 0, - 2, - 17, - 11, - 9, - 0, - 2, - 8, - 16, - 18, - 0, - 2, - 19, - 17, - 9, - 0, - 2, - 6, - 8, - 18, - 0, - 2, - 19, - 9, - 7, - 0, - 2, - 18, - 0, - 6, - 0, - 2, - 7, - 1, - 19, - 0, - 2, - 6, - 0, - 4, - 0, - 2, - 5, - 1, - 7, - 0, - 2, - 4, - 0, - 2, - 0, - 2, - 3, - 1, - 5, - 0, - 2, - 30, - 22, - 20, - 0, - 2, - 21, - 23, - 31, - 0, - 2, - 24, - 22, - 30, - 0, - 2, - 31, - 23, - 25, - 0, - 2, - 30, - 20, - 28, - 0, - 2, - 29, - 21, - 31, - 0, - 2, - 32, - 24, - 30, - 0, - 2, - 31, - 25, - 33, - 0, - 2, - 26, - 24, - 32, - 0, - 2, - 33, - 25, - 27, - 0, - 2, - 0, - 18, - 26, - 0, - 2, - 27, - 19, - 1, - 0, - 2, - 34, - 26, - 32, - 0, - 2, - 33, - 27, - 35, - 0, - 2, - 0, - 26, - 34, - 0, - 2, - 35, - 27, - 1, - 0, - 2, - 55, - 22, - 24, - 0, - 2, - 25, - 23, - 56, - 0, - 2, - 26, - 18, - 55, - 0, - 2, - 56, - 19, - 27, - 0, - 2, - 26, - 55, - 24, - 0, - 2, - 25, - 56, - 27, - 0, - 2, - 22, - 55, - 47, - 0, - 2, - 48, - 56, - 23, - 0, - 3, - 45, - 47, - 55, - 53, - 0, - 3, - 56, - 48, - 46, - 54, - 0, - 3, - 16, - 53, - 55, - 18, - 0, - 3, - 56, - 54, - 17, - 19, - 0, - 2, - 45, - 53, - 51, - 0, - 2, - 52, - 54, - 46, - 0, - 3, - 14, - 51, - 53, - 16, - 0, - 3, - 54, - 52, - 15, - 17, - 0, - 3, - 12, - 49, - 51, - 14, - 0, - 3, - 52, - 50, - 13, - 15, - 0, - 2, - 39, - 45, - 41, - 0, - 2, - 42, - 46, - 40, - 0, - 2, - 41, - 45, - 51, - 0, - 2, - 52, - 46, - 42, - 0, - 3, - 41, - 51, - 49, - 43, - 0, - 3, - 50, - 52, - 42, - 44, - 0, - 3, - 36, - 39, - 41, - 37, - 0, - 3, - 42, - 40, - 36, - 37, - 0, - 3, - 37, - 41, - 43, - 38, - 0, - 3, - 44, - 42, - 37, - 38, - 0, - 3, - 12, - 69, - 91, - 49, - 0, - 3, - 92, - 70, - 13, - 50, - 0, - 3, - 10, - 67, - 69, - 12, - 0, - 3, - 70, - 68, - 11, - 13, - 0, - 3, - 8, - 65, - 67, - 10, - 0, - 3, - 68, - 66, - 9, - 11, - 0, - 3, - 6, - 63, - 65, - 8, - 0, - 3, - 66, - 64, - 7, - 9, - 0, - 3, - 4, - 61, - 63, - 6, - 0, - 3, - 64, - 62, - 5, - 7, - 0, - 3, - 43, - 49, - 91, - 85, - 0, - 3, - 92, - 50, - 44, - 86, - 0, - 3, - 2, - 59, - 61, - 4, - 0, - 3, - 62, - 60, - 3, - 5, - 0, - 3, - 0, - 57, - 59, - 2, - 0, - 3, - 60, - 58, - 1, - 3, - 0, - 3, - 0, - 34, - 81, - 57, - 0, - 3, - 82, - 35, - 1, - 58, - 0, - 3, - 32, - 79, - 81, - 34, - 0, - 3, - 82, - 80, - 33, - 35, - 0, - 3, - 30, - 77, - 79, - 32, - 0, - 3, - 80, - 78, - 31, - 33, - 0, - 3, - 28, - 75, - 77, - 30, - 0, - 3, - 78, - 76, - 29, - 31, - 0, - 3, - 20, - 71, - 75, - 28, - 0, - 3, - 76, - 72, - 21, - 29, - 0, - 3, - 20, - 22, - 73, - 71, - 0, - 3, - 74, - 23, - 21, - 72, - 0, - 3, - 22, - 47, - 89, - 73, - 0, - 3, - 90, - 48, - 23, - 74, - 0, - 3, - 45, - 87, - 89, - 47, - 0, - 3, - 90, - 88, - 46, - 48, - 0, - 3, - 39, - 83, - 87, - 45, - 0, - 3, - 88, - 84, - 40, - 46, - 0, - 3, - 38, - 43, - 85, - 94, - 0, - 3, - 86, - 44, - 38, - 94, - 0, - 3, - 36, - 93, - 83, - 39, - 0, - 3, - 84, - 93, - 36, - 40, - 0, - 3, - 83, - 93, - 94, - 85, - 0, - 3, - 94, - 93, - 84, - 86, - 0, - 3, - 83, - 85, - 91, - 87, - 0, - 3, - 92, - 86, - 84, - 88, - 0, - 2, - 87, - 91, - 89, - 0, - 2, - 90, - 92, - 88, - 0, - 2, - 73, - 89, - 91, - 0, - 2, - 92, - 90, - 74, - 0, - 2, - 69, - 73, - 91, - 0, - 2, - 92, - 74, - 70, - 0, - 2, - 69, - 71, - 73, - 0, - 2, - 74, - 72, - 70, - 0, - 2, - 69, - 75, - 71, - 0, - 2, - 72, - 76, - 70, - 0, - 2, - 79, - 75, - 69, - 0, - 2, - 70, - 76, - 80, - 0, - 2, - 81, - 79, - 69, - 0, - 2, - 70, - 80, - 82, - 0, - 2, - 57, - 81, - 69, - 0, - 2, - 70, - 82, - 58, - 0, - 2, - 79, - 77, - 75, - 0, - 2, - 76, - 78, - 80, - 0, - 2, - 63, - 57, - 65, - 0, - 2, - 66, - 58, - 64, - 0, - 2, - 61, - 57, - 63, - 0, - 2, - 64, - 58, - 62, - 0, - 2, - 59, - 57, - 61, - 0, - 2, - 62, - 58, - 60, - 0, - 2, - 57, - 69, - 65, - 0, - 2, - 66, - 70, - 58, - 0, - 2, - 65, - 69, - 67, - 0, - 2, - 68, - 70, - 66, - 0 - ] + "metadata": { + "formatVersion": 3 + }, + "materials": [ + { + "DbgColor": 15658734, + "DbgIndex": 0, + "DbgName": "Plastic", + "colorDiffuse": [ + 0.301961, + 0.301961, + 0.301961 + ], + "colorSpecular": [ + 0.401201, + 0.401201, + 0.401201 + ], + "shading": "Lambert", + "specularCoef": 50, + "opacity": 1.0, + "vertexColors": false + } + ], + "normals": [], + "colors": [], + "uvs": [], + "vertices": [ + 0.0321921, + -0.0784286, + -0.0367578, + -0.0321921, + -0.0784286, + -0.0367578, + 0.0311006, + -0.0392151, + -0.0368254, + -0.0311006, + -0.0392151, + -0.0368254, + 0.030769, + -0.0273114, + -0.0213674, + -0.030769, + -0.0273114, + -0.0213674, + 0.0303636, + -0.0127552, + -0.0089633, + -0.0303636, + -0.0127552, + -0.0089633, + 0.0299594, + 0.0017595, + -0.0015376, + -0.0299594, + 0.0017595, + -0.0015376, + 0.0295499, + 0.0164651, + 0.0041354, + -0.0295499, + 0.0164651, + 0.0041354, + 0.0295497, + 0.0164712, + 0.0132623, + -0.0295497, + 0.0164712, + 0.0132623, + 0.030808, + -0.0287311, + 0.0093219, + -0.030808, + -0.0287311, + 0.0093219, + 0.0317893, + -0.0639808, + 0.0020625, + -0.0317893, + -0.0639808, + 0.0020625, + 0.0321876, + -0.0782881, + -0.0018784, + -0.0321876, + -0.0782881, + -0.0018784, + 0.0245216, + -0.104273, + 0.0042722, + -0.0245216, + -0.104273, + 0.0042722, + 0.0275907, + -0.0999268, + 0.0088045, + -0.0275907, + -0.0999268, + 0.0088045, + 0.0313282, + -0.0910063, + 0.0009325, + -0.0313282, + -0.0910063, + 0.0009325, + 0.0320606, + -0.0852879, + -0.0019302, + -0.0320606, + -0.0852879, + -0.0019302, + 0.0245218, + -0.104273, + -0.0063471, + -0.0245218, + -0.104273, + -0.0063471, + 0.027591, + -0.0999272, + -0.0114838, + -0.027591, + -0.0999272, + -0.0114838, + 0.0313286, + -0.0910067, + -0.0217641, + -0.0313286, + -0.0910067, + -0.0217641, + 0.0320611, + -0.0852883, + -0.028391, + -0.0320611, + -0.0852883, + -0.028391, + 0, + -0.0583238, + 0.0271951, + 0, + -0.0147893, + 0.0307726, + 0, + 0.0164661, + 0.0312491, + 0.0199838, + -0.0583242, + 0.0271955, + -0.0199838, + -0.0583242, + 0.0271955, + 0.0199845, + -0.0147896, + 0.0307729, + -0.0199845, + -0.0147896, + 0.0307729, + 0.019985, + 0.0164657, + 0.0312495, + -0.019985, + 0.0164657, + 0.0312495, + 0.0218872, + -0.0583242, + 0.0245715, + -0.0218872, + -0.0583242, + 0.0245715, + 0.0218868, + -0.0862341, + 0.0205168, + -0.0218868, + -0.0862341, + 0.0205168, + 0.0266765, + 0.0164685, + 0.0225968, + -0.0266765, + 0.0164685, + 0.0225968, + 0.0263508, + -0.0217604, + 0.0218203, + -0.0263508, + -0.0217604, + 0.0218203, + 0.0265654, + -0.0611524, + 0.0190446, + -0.0265654, + -0.0611524, + 0.0190446, + 0.0265862, + -0.082261, + 0.0142788, + -0.0265862, + -0.082261, + 0.0142788, + 0.0288814, + -0.0784285, + -0.0367579, + -0.0288814, + -0.0784285, + -0.0367579, + 0.0277899, + -0.039215, + -0.0368255, + -0.0277899, + -0.039215, + -0.0368255, + 0.0274583, + -0.0273113, + -0.0213675, + -0.0274583, + -0.0273113, + -0.0213675, + 0.0270529, + -0.0127551, + -0.0089634, + -0.0270529, + -0.0127551, + -0.0089634, + 0.0266488, + 0.0017595, + -0.0015377, + -0.0266488, + 0.0017595, + -0.0015377, + 0.0262392, + 0.0164652, + 0.0041353, + -0.0262392, + 0.0164652, + 0.0041353, + 0.026239, + 0.0164713, + 0.0132622, + -0.026239, + 0.0164713, + 0.0132622, + 0.021211, + -0.104273, + 0.0042722, + -0.021211, + -0.104273, + 0.0042722, + 0.02428, + -0.0999268, + 0.0088045, + -0.02428, + -0.0999268, + 0.0088045, + 0.0212111, + -0.104273, + -0.0063472, + -0.0212111, + -0.104273, + -0.0063472, + 0.0242804, + -0.0999271, + -0.0114838, + -0.0242804, + -0.0999271, + -0.0114838, + 0.0280179, + -0.0910066, + -0.0217641, + -0.0280179, + -0.0910066, + -0.0217641, + 0.0287504, + -0.0852883, + -0.0283911, + -0.0287504, + -0.0852883, + -0.0283911, + 0.0175987, + -0.0583242, + 0.0248103, + -0.0175987, + -0.0583242, + 0.0248103, + 0.0175999, + 0.0164657, + 0.0288643, + -0.0175999, + 0.0164657, + 0.0288643, + 0.0195021, + -0.0583242, + 0.0221864, + -0.0195021, + -0.0583242, + 0.0221864, + 0.0195017, + -0.0862341, + 0.0181316, + -0.0195017, + -0.0862341, + 0.0181316, + 0.0242914, + 0.0164685, + 0.0202117, + -0.0242914, + 0.0164685, + 0.0202117, + 0, + -0.0583239, + 0.0243141, + 0, + 0.016466, + 0.0283681 + ], + "faces": [ + 2, + 10, + 12, + 14, + 0, + 2, + 15, + 13, + 11, + 0, + 2, + 10, + 14, + 16, + 0, + 2, + 17, + 15, + 11, + 0, + 2, + 8, + 10, + 16, + 0, + 2, + 17, + 11, + 9, + 0, + 2, + 8, + 16, + 18, + 0, + 2, + 19, + 17, + 9, + 0, + 2, + 6, + 8, + 18, + 0, + 2, + 19, + 9, + 7, + 0, + 2, + 18, + 0, + 6, + 0, + 2, + 7, + 1, + 19, + 0, + 2, + 6, + 0, + 4, + 0, + 2, + 5, + 1, + 7, + 0, + 2, + 4, + 0, + 2, + 0, + 2, + 3, + 1, + 5, + 0, + 2, + 30, + 22, + 20, + 0, + 2, + 21, + 23, + 31, + 0, + 2, + 24, + 22, + 30, + 0, + 2, + 31, + 23, + 25, + 0, + 2, + 30, + 20, + 28, + 0, + 2, + 29, + 21, + 31, + 0, + 2, + 32, + 24, + 30, + 0, + 2, + 31, + 25, + 33, + 0, + 2, + 26, + 24, + 32, + 0, + 2, + 33, + 25, + 27, + 0, + 2, + 0, + 18, + 26, + 0, + 2, + 27, + 19, + 1, + 0, + 2, + 34, + 26, + 32, + 0, + 2, + 33, + 27, + 35, + 0, + 2, + 0, + 26, + 34, + 0, + 2, + 35, + 27, + 1, + 0, + 2, + 55, + 22, + 24, + 0, + 2, + 25, + 23, + 56, + 0, + 2, + 26, + 18, + 55, + 0, + 2, + 56, + 19, + 27, + 0, + 2, + 26, + 55, + 24, + 0, + 2, + 25, + 56, + 27, + 0, + 2, + 22, + 55, + 47, + 0, + 2, + 48, + 56, + 23, + 0, + 3, + 45, + 47, + 55, + 53, + 0, + 3, + 56, + 48, + 46, + 54, + 0, + 3, + 16, + 53, + 55, + 18, + 0, + 3, + 56, + 54, + 17, + 19, + 0, + 2, + 45, + 53, + 51, + 0, + 2, + 52, + 54, + 46, + 0, + 3, + 14, + 51, + 53, + 16, + 0, + 3, + 54, + 52, + 15, + 17, + 0, + 3, + 12, + 49, + 51, + 14, + 0, + 3, + 52, + 50, + 13, + 15, + 0, + 2, + 39, + 45, + 41, + 0, + 2, + 42, + 46, + 40, + 0, + 2, + 41, + 45, + 51, + 0, + 2, + 52, + 46, + 42, + 0, + 3, + 41, + 51, + 49, + 43, + 0, + 3, + 50, + 52, + 42, + 44, + 0, + 3, + 36, + 39, + 41, + 37, + 0, + 3, + 42, + 40, + 36, + 37, + 0, + 3, + 37, + 41, + 43, + 38, + 0, + 3, + 44, + 42, + 37, + 38, + 0, + 3, + 12, + 69, + 91, + 49, + 0, + 3, + 92, + 70, + 13, + 50, + 0, + 3, + 10, + 67, + 69, + 12, + 0, + 3, + 70, + 68, + 11, + 13, + 0, + 3, + 8, + 65, + 67, + 10, + 0, + 3, + 68, + 66, + 9, + 11, + 0, + 3, + 6, + 63, + 65, + 8, + 0, + 3, + 66, + 64, + 7, + 9, + 0, + 3, + 4, + 61, + 63, + 6, + 0, + 3, + 64, + 62, + 5, + 7, + 0, + 3, + 43, + 49, + 91, + 85, + 0, + 3, + 92, + 50, + 44, + 86, + 0, + 3, + 2, + 59, + 61, + 4, + 0, + 3, + 62, + 60, + 3, + 5, + 0, + 3, + 0, + 57, + 59, + 2, + 0, + 3, + 60, + 58, + 1, + 3, + 0, + 3, + 0, + 34, + 81, + 57, + 0, + 3, + 82, + 35, + 1, + 58, + 0, + 3, + 32, + 79, + 81, + 34, + 0, + 3, + 82, + 80, + 33, + 35, + 0, + 3, + 30, + 77, + 79, + 32, + 0, + 3, + 80, + 78, + 31, + 33, + 0, + 3, + 28, + 75, + 77, + 30, + 0, + 3, + 78, + 76, + 29, + 31, + 0, + 3, + 20, + 71, + 75, + 28, + 0, + 3, + 76, + 72, + 21, + 29, + 0, + 3, + 20, + 22, + 73, + 71, + 0, + 3, + 74, + 23, + 21, + 72, + 0, + 3, + 22, + 47, + 89, + 73, + 0, + 3, + 90, + 48, + 23, + 74, + 0, + 3, + 45, + 87, + 89, + 47, + 0, + 3, + 90, + 88, + 46, + 48, + 0, + 3, + 39, + 83, + 87, + 45, + 0, + 3, + 88, + 84, + 40, + 46, + 0, + 3, + 38, + 43, + 85, + 94, + 0, + 3, + 86, + 44, + 38, + 94, + 0, + 3, + 36, + 93, + 83, + 39, + 0, + 3, + 84, + 93, + 36, + 40, + 0, + 3, + 83, + 93, + 94, + 85, + 0, + 3, + 94, + 93, + 84, + 86, + 0, + 3, + 83, + 85, + 91, + 87, + 0, + 3, + 92, + 86, + 84, + 88, + 0, + 2, + 87, + 91, + 89, + 0, + 2, + 90, + 92, + 88, + 0, + 2, + 73, + 89, + 91, + 0, + 2, + 92, + 90, + 74, + 0, + 2, + 69, + 73, + 91, + 0, + 2, + 92, + 74, + 70, + 0, + 2, + 69, + 71, + 73, + 0, + 2, + 74, + 72, + 70, + 0, + 2, + 69, + 75, + 71, + 0, + 2, + 72, + 76, + 70, + 0, + 2, + 79, + 75, + 69, + 0, + 2, + 70, + 76, + 80, + 0, + 2, + 81, + 79, + 69, + 0, + 2, + 70, + 80, + 82, + 0, + 2, + 57, + 81, + 69, + 0, + 2, + 70, + 82, + 58, + 0, + 2, + 79, + 77, + 75, + 0, + 2, + 76, + 78, + 80, + 0, + 2, + 63, + 57, + 65, + 0, + 2, + 66, + 58, + 64, + 0, + 2, + 61, + 57, + 63, + 0, + 2, + 64, + 58, + 62, + 0, + 2, + 59, + 57, + 61, + 0, + 2, + 62, + 58, + 60, + 0, + 2, + 57, + 69, + 65, + 0, + 2, + 66, + 70, + 58, + 0, + 2, + 65, + 69, + 67, + 0, + 2, + 68, + 70, + 66, + 0 + ] } diff --git a/src/client/components/localisation/darwin_robot/left_leg/config/left_pelvis.json b/src/client/components/localisation/darwin_robot/left_leg/config/left_pelvis.json index 41e54ac5..4ed61e4f 100644 --- a/src/client/components/localisation/darwin_robot/left_leg/config/left_pelvis.json +++ b/src/client/components/localisation/darwin_robot/left_leg/config/left_pelvis.json @@ -1,923 +1,923 @@ { - "metadata": { - "formatVersion": 3 - }, - "materials": [ - { - "DbgColor": 15658734, - "DbgIndex": 0, - "DbgName": "ServoMaterial", - "colorDiffuse": [ - 0.14, - 0.14, - 0.14 - ], - "colorSpecular": [ - 0.168737, - 0.168737, - 0.168737 - ], - "shading": "Lambert", - "specularCoef": 50, - "opacity": 1.0, - "vertexColors": false - } - ], - "normals": [], - "colors": [], - "uvs": [], - "vertices": [ - 0.0180439, - 0.0115761, - 0.0214732, - 0.0180446, - 0.0115761, - -0.0191624, - -0.0175731, - 0.0115761, - -0.0191624, - -0.0175738, - 0.0115761, - 0.0214732, - 0.0180445, - -0.0390897, - -0.0141305, - -0.0175731, - -0.0390897, - -0.0141305, - -0.0175729, - -0.0274952, - -0.0268336, - -0.0175723, - -0.0274952, - -0.0618489, - 0.0180453, - -0.0274952, - -0.0618482, - 0.0180447, - -0.0274952, - -0.026833, - -0.0175729, - 0.0057494, - -0.0268336, - -0.0175723, - 0.0057494, - -0.0618489, - 0.0180453, - 0.0057494, - -0.0618482, - 0.0180447, - 0.0057494, - -0.026833, - 0.0180439, - -0.012828, - 0.0214732, - -0.0175738, - -0.012828, - 0.0214732, - -0.0175737, - -0.012828, - 0.0173256, - 0.0180439, - -0.012828, - 0.0173256, - 0.0155869, - -0.0390897, - -0.0141304, - -0.0151086, - -0.0390897, - -0.0141307, - -0.0151077, - -0.012828, - 0.0173255, - 0.0155877, - -0.012828, - 0.0173258, - -0.0151076, - -0.012828, - 0.0113907, - 0.0155878, - -0.012828, - 0.0113913, - 0.0155878, - -0.0330725, - 0.0113913, - -0.0151076, - -0.0330725, - 0.0113907, - -0.0151071, - -0.0330725, - -0.0190517, - 0.0155884, - -0.0330725, - -0.0190514, - 0.0180446, - -0.0330725, - -0.0190513, - -0.0175731, - -0.0330725, - -0.0190518, - 0.0155877, - -0.0330725, - 0.0173258, - 0.0180439, - -0.0330725, - 0.0173256, - -0.0175737, - -0.0330725, - 0.0173256, - -0.0151077, - -0.0330725, - 0.0173255, - 0.018044, - -0.0390897, - 0.0113913, - 0.0155876, - -0.0390897, - 0.0113913, - -0.0151079, - -0.0390897, - 0.0113907, - -0.0175736, - -0.0390897, - 0.0113907, - -0.0175729, - -0.0274952, - -0.0296594, - -0.0175724, - -0.0274952, - -0.0590223, - 0.0180453, - -0.0274952, - -0.0590216, - 0.0180448, - -0.0274952, - -0.0296588, - -0.0175729, - 0.0057494, - -0.0296594, - -0.0175724, - 0.0057494, - -0.0590223, - 0.0180453, - 0.0057494, - -0.0590216, - 0.0180448, - 0.0057494, - -0.0296588, - -0.0125429, - -0.033322, - -0.0590222, - -0.0125435, - -0.033322, - -0.0296593, - 0.0128508, - -0.033322, - -0.0296589, - 0.0128513, - -0.033322, - -0.0590217, - -0.0125429, - 0.0115761, - -0.0590222, - -0.0125435, - 0.0115761, - -0.0296593, - 0.0128508, - 0.0115761, - -0.0296589, - 0.0128513, - 0.0115761, - -0.0590217, - 0.0128514, - 0.0115761, - -0.0618483, - 0.0128508, - 0.0115761, - -0.0268331, - 0.0128514, - -0.033322, - -0.0618483, - 0.0128508, - -0.033322, - -0.0268331, - -0.0125429, - 0.0115761, - -0.0618488, - -0.0125429, - -0.033322, - -0.0618488, - -0.0125435, - -0.033322, - -0.0268335, - -0.0125435, - 0.0115761, - -0.0268335, - -0.0097554, - -0.0094035, - -0.0157652, - -0.0097552, - -0.0094035, - -0.0307516, - -0.0097552, - -0.0153643, - -0.0307516, - -0.0097555, - -0.0153643, - -0.0157652, - 0.0100624, - -0.0094034, - -0.0157649, - 0.0100627, - -0.0094034, - -0.0307513, - 0.0100626, - -0.0153642, - -0.0307513, - 0.0100624, - -0.0153642, - -0.0157649, - 0.0100623, - -0.0324485, - -0.0157649, - 0.0100626, - -0.0324485, - -0.0307513, - 0.0100626, - -0.0264878, - -0.0307513, - 0.0100624, - -0.0264878, - -0.0157649, - -0.0097555, - -0.0324486, - -0.0157652, - -0.0097552, - -0.0324486, - -0.0307516, - -0.0097552, - -0.0264878, - -0.0307516, - -0.0097555, - -0.0264878, - -0.0157652 - ], - "faces": [ - 2, - 0, - 14, - 1, - 0, - 2, - 15, - 3, - 2, - 0, - 2, - 1, - 14, - 17, - 0, - 2, - 2, - 16, - 15, - 0, - 2, - 16, - 20, - 15, - 0, - 2, - 21, - 17, - 14, - 0, - 2, - 22, - 33, - 25, - 0, - 2, - 27, - 35, - 24, - 0, - 2, - 5, - 26, - 19, - 0, - 2, - 4, - 18, - 27, - 0, - 2, - 4, - 27, - 28, - 0, - 2, - 1, - 28, - 27, - 0, - 2, - 1, - 17, - 28, - 0, - 2, - 5, - 29, - 26, - 0, - 2, - 2, - 26, - 29, - 0, - 2, - 2, - 29, - 16, - 0, - 2, - 33, - 36, - 25, - 0, - 2, - 35, - 30, - 24, - 0, - 2, - 33, - 22, - 20, - 0, - 2, - 35, - 27, - 18, - 0, - 2, - 31, - 28, - 17, - 0, - 2, - 37, - 29, - 5, - 0, - 2, - 75, - 74, - 77, - 0, - 2, - 75, - 77, - 76, - 0, - 2, - 73, - 70, - 71, - 0, - 2, - 73, - 71, - 72, - 0, - 2, - 77, - 73, - 72, - 0, - 2, - 77, - 72, - 76, - 0, - 2, - 75, - 71, - 70, - 0, - 2, - 75, - 70, - 74, - 0, - 2, - 64, - 68, - 69, - 0, - 2, - 64, - 69, - 65, - 0, - 2, - 62, - 66, - 67, - 0, - 2, - 62, - 67, - 63, - 0, - 2, - 66, - 69, - 68, - 0, - 2, - 66, - 68, - 67, - 0, - 2, - 64, - 65, - 62, - 0, - 2, - 64, - 62, - 63, - 0, - 2, - 46, - 47, - 51, - 0, - 2, - 46, - 51, - 50, - 0, - 2, - 56, - 46, - 59, - 0, - 2, - 56, - 49, - 46, - 0, - 2, - 46, - 48, - 47, - 0, - 2, - 46, - 49, - 48, - 0, - 2, - 47, - 48, - 57, - 0, - 2, - 47, - 57, - 60, - 0, - 2, - 55, - 51, - 61, - 0, - 2, - 55, - 52, - 51, - 0, - 2, - 54, - 58, - 50, - 0, - 2, - 54, - 50, - 53, - 0, - 2, - 50, - 52, - 53, - 0, - 2, - 50, - 51, - 52, - 0, - 2, - 38, - 42, - 51, - 0, - 2, - 38, - 51, - 47, - 0, - 2, - 6, - 38, - 47, - 0, - 2, - 6, - 47, - 60, - 0, - 2, - 6, - 60, - 61, - 0, - 2, - 6, - 61, - 10, - 0, - 2, - 10, - 61, - 51, - 0, - 2, - 10, - 51, - 42, - 0, - 2, - 11, - 43, - 50, - 0, - 2, - 11, - 50, - 58, - 0, - 2, - 39, - 46, - 50, - 0, - 2, - 39, - 50, - 43, - 0, - 2, - 7, - 11, - 58, - 0, - 2, - 7, - 58, - 59, - 0, - 2, - 7, - 59, - 46, - 0, - 2, - 7, - 46, - 39, - 0, - 2, - 9, - 57, - 48, - 0, - 2, - 9, - 48, - 41, - 0, - 2, - 9, - 13, - 55, - 0, - 2, - 9, - 55, - 57, - 0, - 2, - 13, - 45, - 52, - 0, - 2, - 13, - 52, - 55, - 0, - 2, - 8, - 40, - 49, - 0, - 2, - 8, - 49, - 56, - 0, - 2, - 12, - 54, - 53, - 0, - 2, - 12, - 53, - 44, - 0, - 2, - 8, - 54, - 12, - 0, - 2, - 8, - 56, - 54, - 0, - 2, - 40, - 44, - 53, - 0, - 2, - 40, - 53, - 49, - 0, - 2, - 55, - 60, - 57, - 0, - 2, - 55, - 61, - 60, - 0, - 2, - 56, - 58, - 54, - 0, - 2, - 56, - 59, - 58, - 0, - 2, - 48, - 53, - 52, - 0, - 2, - 48, - 49, - 53, - 0, - 2, - 40, - 8, - 12, - 0, - 2, - 40, - 12, - 44, - 0, - 2, - 9, - 41, - 45, - 0, - 2, - 9, - 45, - 13, - 0, - 2, - 38, - 6, - 10, - 0, - 2, - 38, - 10, - 42, - 0, - 2, - 7, - 39, - 43, - 0, - 2, - 7, - 43, - 11, - 0, - 2, - 36, - 33, - 32, - 0, - 2, - 36, - 32, - 37, - 0, - 2, - 30, - 35, - 34, - 0, - 2, - 30, - 34, - 31, - 0, - 2, - 29, - 37, - 16, - 0, - 2, - 37, - 32, - 16, - 0, - 2, - 28, - 31, - 34, - 0, - 2, - 28, - 34, - 4, - 0, - 2, - 1, - 27, - 26, - 0, - 2, - 1, - 26, - 2, - 0, - 2, - 26, - 25, - 19, - 0, - 2, - 25, - 36, - 19, - 0, - 2, - 24, - 25, - 26, - 0, - 2, - 24, - 26, - 27, - 0, - 2, - 23, - 24, - 30, - 0, - 2, - 23, - 30, - 21, - 0, - 2, - 23, - 22, - 25, - 0, - 2, - 23, - 25, - 24, - 0, - 2, - 14, - 15, - 20, - 0, - 2, - 14, - 20, - 21, - 0, - 2, - 20, - 22, - 23, - 0, - 2, - 20, - 23, - 21, - 0, - 2, - 36, - 37, - 5, - 0, - 2, - 36, - 5, - 19, - 0, - 2, - 34, - 35, - 18, - 0, - 2, - 34, - 18, - 4, - 0, - 2, - 32, - 33, - 20, - 0, - 2, - 32, - 20, - 16, - 0, - 2, - 30, - 31, - 17, - 0, - 2, - 30, - 17, - 21, - 0, - 2, - 14, - 0, - 3, - 0, - 2, - 14, - 3, - 15, - 0, - 2, - 0, - 1, - 2, - 0, - 2, - 0, - 2, - 3, - 0, - 3, - 41, - 48, - 52, - 45, - 0 - ] + "metadata": { + "formatVersion": 3 + }, + "materials": [ + { + "DbgColor": 15658734, + "DbgIndex": 0, + "DbgName": "ServoMaterial", + "colorDiffuse": [ + 0.14, + 0.14, + 0.14 + ], + "colorSpecular": [ + 0.168737, + 0.168737, + 0.168737 + ], + "shading": "Lambert", + "specularCoef": 50, + "opacity": 1.0, + "vertexColors": false + } + ], + "normals": [], + "colors": [], + "uvs": [], + "vertices": [ + 0.0180439, + 0.0115761, + 0.0214732, + 0.0180446, + 0.0115761, + -0.0191624, + -0.0175731, + 0.0115761, + -0.0191624, + -0.0175738, + 0.0115761, + 0.0214732, + 0.0180445, + -0.0390897, + -0.0141305, + -0.0175731, + -0.0390897, + -0.0141305, + -0.0175729, + -0.0274952, + -0.0268336, + -0.0175723, + -0.0274952, + -0.0618489, + 0.0180453, + -0.0274952, + -0.0618482, + 0.0180447, + -0.0274952, + -0.026833, + -0.0175729, + 0.0057494, + -0.0268336, + -0.0175723, + 0.0057494, + -0.0618489, + 0.0180453, + 0.0057494, + -0.0618482, + 0.0180447, + 0.0057494, + -0.026833, + 0.0180439, + -0.012828, + 0.0214732, + -0.0175738, + -0.012828, + 0.0214732, + -0.0175737, + -0.012828, + 0.0173256, + 0.0180439, + -0.012828, + 0.0173256, + 0.0155869, + -0.0390897, + -0.0141304, + -0.0151086, + -0.0390897, + -0.0141307, + -0.0151077, + -0.012828, + 0.0173255, + 0.0155877, + -0.012828, + 0.0173258, + -0.0151076, + -0.012828, + 0.0113907, + 0.0155878, + -0.012828, + 0.0113913, + 0.0155878, + -0.0330725, + 0.0113913, + -0.0151076, + -0.0330725, + 0.0113907, + -0.0151071, + -0.0330725, + -0.0190517, + 0.0155884, + -0.0330725, + -0.0190514, + 0.0180446, + -0.0330725, + -0.0190513, + -0.0175731, + -0.0330725, + -0.0190518, + 0.0155877, + -0.0330725, + 0.0173258, + 0.0180439, + -0.0330725, + 0.0173256, + -0.0175737, + -0.0330725, + 0.0173256, + -0.0151077, + -0.0330725, + 0.0173255, + 0.018044, + -0.0390897, + 0.0113913, + 0.0155876, + -0.0390897, + 0.0113913, + -0.0151079, + -0.0390897, + 0.0113907, + -0.0175736, + -0.0390897, + 0.0113907, + -0.0175729, + -0.0274952, + -0.0296594, + -0.0175724, + -0.0274952, + -0.0590223, + 0.0180453, + -0.0274952, + -0.0590216, + 0.0180448, + -0.0274952, + -0.0296588, + -0.0175729, + 0.0057494, + -0.0296594, + -0.0175724, + 0.0057494, + -0.0590223, + 0.0180453, + 0.0057494, + -0.0590216, + 0.0180448, + 0.0057494, + -0.0296588, + -0.0125429, + -0.033322, + -0.0590222, + -0.0125435, + -0.033322, + -0.0296593, + 0.0128508, + -0.033322, + -0.0296589, + 0.0128513, + -0.033322, + -0.0590217, + -0.0125429, + 0.0115761, + -0.0590222, + -0.0125435, + 0.0115761, + -0.0296593, + 0.0128508, + 0.0115761, + -0.0296589, + 0.0128513, + 0.0115761, + -0.0590217, + 0.0128514, + 0.0115761, + -0.0618483, + 0.0128508, + 0.0115761, + -0.0268331, + 0.0128514, + -0.033322, + -0.0618483, + 0.0128508, + -0.033322, + -0.0268331, + -0.0125429, + 0.0115761, + -0.0618488, + -0.0125429, + -0.033322, + -0.0618488, + -0.0125435, + -0.033322, + -0.0268335, + -0.0125435, + 0.0115761, + -0.0268335, + -0.0097554, + -0.0094035, + -0.0157652, + -0.0097552, + -0.0094035, + -0.0307516, + -0.0097552, + -0.0153643, + -0.0307516, + -0.0097555, + -0.0153643, + -0.0157652, + 0.0100624, + -0.0094034, + -0.0157649, + 0.0100627, + -0.0094034, + -0.0307513, + 0.0100626, + -0.0153642, + -0.0307513, + 0.0100624, + -0.0153642, + -0.0157649, + 0.0100623, + -0.0324485, + -0.0157649, + 0.0100626, + -0.0324485, + -0.0307513, + 0.0100626, + -0.0264878, + -0.0307513, + 0.0100624, + -0.0264878, + -0.0157649, + -0.0097555, + -0.0324486, + -0.0157652, + -0.0097552, + -0.0324486, + -0.0307516, + -0.0097552, + -0.0264878, + -0.0307516, + -0.0097555, + -0.0264878, + -0.0157652 + ], + "faces": [ + 2, + 0, + 14, + 1, + 0, + 2, + 15, + 3, + 2, + 0, + 2, + 1, + 14, + 17, + 0, + 2, + 2, + 16, + 15, + 0, + 2, + 16, + 20, + 15, + 0, + 2, + 21, + 17, + 14, + 0, + 2, + 22, + 33, + 25, + 0, + 2, + 27, + 35, + 24, + 0, + 2, + 5, + 26, + 19, + 0, + 2, + 4, + 18, + 27, + 0, + 2, + 4, + 27, + 28, + 0, + 2, + 1, + 28, + 27, + 0, + 2, + 1, + 17, + 28, + 0, + 2, + 5, + 29, + 26, + 0, + 2, + 2, + 26, + 29, + 0, + 2, + 2, + 29, + 16, + 0, + 2, + 33, + 36, + 25, + 0, + 2, + 35, + 30, + 24, + 0, + 2, + 33, + 22, + 20, + 0, + 2, + 35, + 27, + 18, + 0, + 2, + 31, + 28, + 17, + 0, + 2, + 37, + 29, + 5, + 0, + 2, + 75, + 74, + 77, + 0, + 2, + 75, + 77, + 76, + 0, + 2, + 73, + 70, + 71, + 0, + 2, + 73, + 71, + 72, + 0, + 2, + 77, + 73, + 72, + 0, + 2, + 77, + 72, + 76, + 0, + 2, + 75, + 71, + 70, + 0, + 2, + 75, + 70, + 74, + 0, + 2, + 64, + 68, + 69, + 0, + 2, + 64, + 69, + 65, + 0, + 2, + 62, + 66, + 67, + 0, + 2, + 62, + 67, + 63, + 0, + 2, + 66, + 69, + 68, + 0, + 2, + 66, + 68, + 67, + 0, + 2, + 64, + 65, + 62, + 0, + 2, + 64, + 62, + 63, + 0, + 2, + 46, + 47, + 51, + 0, + 2, + 46, + 51, + 50, + 0, + 2, + 56, + 46, + 59, + 0, + 2, + 56, + 49, + 46, + 0, + 2, + 46, + 48, + 47, + 0, + 2, + 46, + 49, + 48, + 0, + 2, + 47, + 48, + 57, + 0, + 2, + 47, + 57, + 60, + 0, + 2, + 55, + 51, + 61, + 0, + 2, + 55, + 52, + 51, + 0, + 2, + 54, + 58, + 50, + 0, + 2, + 54, + 50, + 53, + 0, + 2, + 50, + 52, + 53, + 0, + 2, + 50, + 51, + 52, + 0, + 2, + 38, + 42, + 51, + 0, + 2, + 38, + 51, + 47, + 0, + 2, + 6, + 38, + 47, + 0, + 2, + 6, + 47, + 60, + 0, + 2, + 6, + 60, + 61, + 0, + 2, + 6, + 61, + 10, + 0, + 2, + 10, + 61, + 51, + 0, + 2, + 10, + 51, + 42, + 0, + 2, + 11, + 43, + 50, + 0, + 2, + 11, + 50, + 58, + 0, + 2, + 39, + 46, + 50, + 0, + 2, + 39, + 50, + 43, + 0, + 2, + 7, + 11, + 58, + 0, + 2, + 7, + 58, + 59, + 0, + 2, + 7, + 59, + 46, + 0, + 2, + 7, + 46, + 39, + 0, + 2, + 9, + 57, + 48, + 0, + 2, + 9, + 48, + 41, + 0, + 2, + 9, + 13, + 55, + 0, + 2, + 9, + 55, + 57, + 0, + 2, + 13, + 45, + 52, + 0, + 2, + 13, + 52, + 55, + 0, + 2, + 8, + 40, + 49, + 0, + 2, + 8, + 49, + 56, + 0, + 2, + 12, + 54, + 53, + 0, + 2, + 12, + 53, + 44, + 0, + 2, + 8, + 54, + 12, + 0, + 2, + 8, + 56, + 54, + 0, + 2, + 40, + 44, + 53, + 0, + 2, + 40, + 53, + 49, + 0, + 2, + 55, + 60, + 57, + 0, + 2, + 55, + 61, + 60, + 0, + 2, + 56, + 58, + 54, + 0, + 2, + 56, + 59, + 58, + 0, + 2, + 48, + 53, + 52, + 0, + 2, + 48, + 49, + 53, + 0, + 2, + 40, + 8, + 12, + 0, + 2, + 40, + 12, + 44, + 0, + 2, + 9, + 41, + 45, + 0, + 2, + 9, + 45, + 13, + 0, + 2, + 38, + 6, + 10, + 0, + 2, + 38, + 10, + 42, + 0, + 2, + 7, + 39, + 43, + 0, + 2, + 7, + 43, + 11, + 0, + 2, + 36, + 33, + 32, + 0, + 2, + 36, + 32, + 37, + 0, + 2, + 30, + 35, + 34, + 0, + 2, + 30, + 34, + 31, + 0, + 2, + 29, + 37, + 16, + 0, + 2, + 37, + 32, + 16, + 0, + 2, + 28, + 31, + 34, + 0, + 2, + 28, + 34, + 4, + 0, + 2, + 1, + 27, + 26, + 0, + 2, + 1, + 26, + 2, + 0, + 2, + 26, + 25, + 19, + 0, + 2, + 25, + 36, + 19, + 0, + 2, + 24, + 25, + 26, + 0, + 2, + 24, + 26, + 27, + 0, + 2, + 23, + 24, + 30, + 0, + 2, + 23, + 30, + 21, + 0, + 2, + 23, + 22, + 25, + 0, + 2, + 23, + 25, + 24, + 0, + 2, + 14, + 15, + 20, + 0, + 2, + 14, + 20, + 21, + 0, + 2, + 20, + 22, + 23, + 0, + 2, + 20, + 23, + 21, + 0, + 2, + 36, + 37, + 5, + 0, + 2, + 36, + 5, + 19, + 0, + 2, + 34, + 35, + 18, + 0, + 2, + 34, + 18, + 4, + 0, + 2, + 32, + 33, + 20, + 0, + 2, + 32, + 20, + 16, + 0, + 2, + 30, + 31, + 17, + 0, + 2, + 30, + 17, + 21, + 0, + 2, + 14, + 0, + 3, + 0, + 2, + 14, + 3, + 15, + 0, + 2, + 0, + 1, + 2, + 0, + 2, + 0, + 2, + 3, + 0, + 3, + 41, + 48, + 52, + 45, + 0 + ] } diff --git a/src/client/components/localisation/darwin_robot/left_leg/config/left_pelvis_y.json b/src/client/components/localisation/darwin_robot/left_leg/config/left_pelvis_y.json index 144c4ad2..d6376a35 100644 --- a/src/client/components/localisation/darwin_robot/left_leg/config/left_pelvis_y.json +++ b/src/client/components/localisation/darwin_robot/left_leg/config/left_pelvis_y.json @@ -1,937 +1,937 @@ { - "metadata": { - "formatVersion": 3 - }, - "materials": [ - { - "DbgColor": 15658734, - "DbgIndex": 0, - "DbgName": "Metal", - "colorDiffuse": [ - 0.7, - 0.7, - 0.7 - ], - "colorSpecular": [ - 0.168737, - 0.168737, - 0.168737 - ], - "shading": "Lambert", - "specularCoef": 50, - "opacity": 1.0, - "vertexColors": false - } - ], - "normals": [], - "colors": [], - "uvs": [], - "vertices": [ - 0.0084461, - -0.0084461, - 0.0247278, - 0.0084461, - 0.0084461, - 0.0247278, - -0, - 0.0119446, - 0.0247278, - -0.0084461, - 0.0084461, - 0.0247278, - -0.0119446, - -3.45e-05, - 0.0247278, - -0.0084461, - -0.0084461, - 0.0247278, - -0, - -0.0119446, - 0.0247278, - 0.0084461, - -0.0084461, - 0.022564, - 0.0119446, - -3.45e-05, - 0.022564, - 0.0084461, - 0.0084461, - 0.022564, - -0, - 0.0119446, - 0.022564, - -0.0084461, - 0.0084461, - 0.022564, - -0.0119446, - -3.45e-05, - 0.022564, - -0.0084461, - -0.0084461, - 0.022564, - 0, - -0.0119446, - 0.022564, - 0, - -0.0119446, - -0.0258612, - -0.0084461, - -0.0084461, - -0.0258612, - -0.0119446, - -3.45e-05, - -0.0258612, - -0.0084461, - 0.0084461, - -0.0258612, - -0, - 0.0119446, - -0.0258612, - 0.0084461, - 0.0084461, - -0.0258612, - 0.0119446, - -3.45e-05, - -0.0258612, - 0.0084461, - -0.0084461, - -0.0258612, - -0, - -0.0119446, - -0.0238143, - -0.0084461, - -0.0084461, - -0.0238143, - -0.0119446, - -3.45e-05, - -0.0238143, - -0.0084461, - 0.0084461, - -0.0238143, - -0, - 0.0119446, - -0.0238143, - 0.0084461, - 0.0084461, - -0.0238143, - 0.0084461, - -0.0084461, - -0.0238143, - -0.0108345, - 0.0313981, - 0.026288, - -0.0108345, - 0.0313981, - -0.0238143, - 0.0109716, - 0.0313981, - 0.026288, - 0.0109716, - 0.0313981, - -0.0238143, - 0.0109716, - 0.0300063, - -0.022288, - 0.0109716, - 0.0300063, - 0.0247278, - -0.0108345, - 0.0300063, - 0.0247278, - -0.0108345, - 0.0300063, - -0.022288, - -0.0108345, - -3.45e-05, - -0.022288, - -0.0108345, - -3.45e-05, - 0.0247278, - 0.0109716, - -3.45e-05, - 0.0247278, - 0.0109716, - -3.45e-05, - -0.022288, - 0.0109716, - -3.45e-05, - -0.0238143, - 0.0109716, - -3.45e-05, - 0.026288, - -0.0108345, - -3.45e-05, - 0.026288, - -0.0108345, - -3.45e-05, - -0.0238143, - 0, - 0.0332829, - -0.010382, - -0.0073412, - 0.0332829, - -0.0073412, - -0.010382, - 0.0332829, - -0, - -0.0073412, - 0.0332829, - 0.0073412, - -0, - 0.0332829, - 0.010382, - 0.0073412, - 0.0332829, - 0.0073412, - 0.010382, - 0.0332829, - -0, - 0.0073412, - 0.0332829, - -0.0073412, - -0, - 0.0313981, - -0.010382, - -0.0073412, - 0.0313981, - -0.0073412, - -0.010382, - 0.0313981, - -0, - -0.0073412, - 0.0313981, - 0.0073412, - -0, - 0.0313981, - 0.010382, - 0.0073412, - 0.0313981, - 0.0073412, - 0.010382, - 0.0313981, - -0, - 0.0073412, - 0.0313981, - -0.0073412, - 0.0029764, - -0.0029802, - -0.0263812, - 0.0042093, - -2.31e-05, - -0.0263812, - 0.0029764, - 0.0029726, - -0.0263812, - 0, - 0.0042054, - -0.0263812, - -0.0029764, - 0.0029726, - -0.0263812, - -0.0042093, - -2.31e-05, - -0.0263812, - -0.0029764, - -0.0029802, - -0.0263812, - 0, - -0.0042131, - -0.0263812, - 0, - -0.0042131, - 0.0267308, - -0.0029764, - -0.0029802, - 0.0267308, - -0.0042093, - -2.31e-05, - 0.0267308, - -0.0029764, - 0.0029726, - 0.0267308, - 0, - 0.0042054, - 0.0267308, - 0.0029764, - 0.0029726, - 0.0267308, - 0.0042093, - -2.31e-05, - 0.0267308, - 0.0029764, - -0.0029802, - 0.0267308 - ], - "faces": [ - 2, - 1, - 2, - 3, - 0, - 2, - 40, - 1, - 3, - 0, - 2, - 40, - 3, - 4, - 0, - 2, - 0, - 40, - 4, - 0, - 2, - 0, - 4, - 5, - 0, - 2, - 0, - 5, - 6, - 0, - 2, - 9, - 11, - 10, - 0, - 2, - 9, - 12, - 11, - 0, - 2, - 8, - 12, - 9, - 0, - 2, - 7, - 12, - 8, - 0, - 2, - 7, - 13, - 12, - 0, - 2, - 14, - 13, - 7, - 0, - 2, - 46, - 47, - 53, - 0, - 2, - 53, - 47, - 48, - 0, - 2, - 53, - 48, - 52, - 0, - 2, - 52, - 48, - 51, - 0, - 2, - 51, - 48, - 49, - 0, - 2, - 51, - 49, - 50, - 0, - 2, - 28, - 27, - 26, - 0, - 2, - 42, - 28, - 26, - 0, - 2, - 42, - 26, - 25, - 0, - 2, - 29, - 42, - 25, - 0, - 2, - 29, - 25, - 24, - 0, - 2, - 29, - 24, - 23, - 0, - 2, - 20, - 18, - 19, - 0, - 2, - 20, - 17, - 18, - 0, - 2, - 21, - 17, - 20, - 0, - 2, - 22, - 17, - 21, - 0, - 2, - 22, - 16, - 17, - 0, - 2, - 15, - 16, - 22, - 0, - 2, - 69, - 68, - 62, - 0, - 2, - 62, - 68, - 67, - 0, - 2, - 62, - 67, - 63, - 0, - 2, - 63, - 67, - 64, - 0, - 2, - 64, - 67, - 66, - 0, - 2, - 64, - 66, - 65, - 0, - 2, - 71, - 70, - 77, - 0, - 2, - 71, - 77, - 72, - 0, - 2, - 72, - 77, - 76, - 0, - 2, - 72, - 76, - 75, - 0, - 2, - 72, - 75, - 73, - 0, - 2, - 73, - 75, - 74, - 0, - 2, - 63, - 77, - 62, - 0, - 2, - 63, - 76, - 77, - 0, - 2, - 64, - 76, - 63, - 0, - 2, - 64, - 75, - 76, - 0, - 2, - 65, - 75, - 64, - 0, - 2, - 65, - 74, - 75, - 0, - 2, - 66, - 74, - 65, - 0, - 2, - 66, - 73, - 74, - 0, - 2, - 67, - 73, - 66, - 0, - 2, - 67, - 72, - 73, - 0, - 2, - 68, - 72, - 67, - 0, - 2, - 68, - 71, - 72, - 0, - 2, - 69, - 71, - 68, - 0, - 2, - 69, - 70, - 71, - 0, - 2, - 62, - 70, - 69, - 0, - 2, - 62, - 77, - 70, - 0, - 2, - 61, - 53, - 52, - 0, - 2, - 61, - 52, - 60, - 0, - 2, - 60, - 52, - 51, - 0, - 2, - 60, - 51, - 59, - 0, - 2, - 59, - 51, - 50, - 0, - 2, - 59, - 50, - 58, - 0, - 2, - 58, - 50, - 49, - 0, - 2, - 58, - 49, - 57, - 0, - 2, - 57, - 49, - 48, - 0, - 2, - 57, - 48, - 56, - 0, - 2, - 56, - 48, - 47, - 0, - 2, - 56, - 47, - 55, - 0, - 2, - 55, - 47, - 46, - 0, - 2, - 55, - 46, - 54, - 0, - 2, - 53, - 61, - 54, - 0, - 2, - 53, - 54, - 46, - 0, - 2, - 38, - 34, - 37, - 0, - 2, - 38, - 41, - 34, - 0, - 2, - 36, - 40, - 39, - 0, - 2, - 36, - 35, - 40, - 0, - 2, - 34, - 36, - 37, - 0, - 2, - 34, - 35, - 36, - 0, - 2, - 42, - 38, - 45, - 0, - 2, - 42, - 41, - 38, - 0, - 2, - 44, - 40, - 43, - 0, - 2, - 44, - 39, - 40, - 0, - 2, - 33, - 45, - 31, - 0, - 2, - 33, - 42, - 45, - 0, - 2, - 30, - 43, - 32, - 0, - 2, - 30, - 44, - 43, - 0, - 2, - 34, - 42, - 33, - 0, - 2, - 34, - 41, - 42, - 0, - 2, - 32, - 43, - 35, - 0, - 2, - 35, - 43, - 40, - 0, - 2, - 36, - 44, - 30, - 0, - 2, - 36, - 39, - 44, - 0, - 2, - 31, - 45, - 37, - 0, - 2, - 37, - 45, - 38, - 0, - 2, - 30, - 31, - 36, - 0, - 2, - 36, - 31, - 37, - 0, - 2, - 33, - 35, - 34, - 0, - 2, - 33, - 32, - 35, - 0, - 2, - 30, - 33, - 31, - 0, - 2, - 30, - 32, - 33, - 0, - 2, - 29, - 22, - 21, - 0, - 2, - 29, - 21, - 42, - 0, - 2, - 42, - 21, - 20, - 0, - 2, - 42, - 20, - 28, - 0, - 2, - 28, - 20, - 19, - 0, - 2, - 28, - 19, - 27, - 0, - 2, - 27, - 19, - 18, - 0, - 2, - 27, - 18, - 26, - 0, - 2, - 26, - 18, - 17, - 0, - 2, - 26, - 17, - 25, - 0, - 2, - 25, - 17, - 16, - 0, - 2, - 25, - 16, - 24, - 0, - 2, - 24, - 16, - 15, - 0, - 2, - 24, - 15, - 23, - 0, - 2, - 23, - 15, - 22, - 0, - 2, - 23, - 22, - 29, - 0, - 2, - 7, - 0, - 6, - 0, - 2, - 7, - 6, - 14, - 0, - 2, - 5, - 13, - 14, - 0, - 2, - 5, - 14, - 6, - 0, - 2, - 4, - 12, - 13, - 0, - 2, - 4, - 13, - 5, - 0, - 2, - 3, - 11, - 12, - 0, - 2, - 3, - 12, - 4, - 0, - 2, - 2, - 10, - 11, - 0, - 2, - 2, - 11, - 3, - 0, - 2, - 1, - 9, - 10, - 0, - 2, - 1, - 10, - 2, - 0, - 2, - 40, - 8, - 9, - 0, - 2, - 40, - 9, - 1, - 0, - 2, - 0, - 7, - 8, - 0, - 2, - 0, - 8, - 40, - 0 - ] + "metadata": { + "formatVersion": 3 + }, + "materials": [ + { + "DbgColor": 15658734, + "DbgIndex": 0, + "DbgName": "Metal", + "colorDiffuse": [ + 0.7, + 0.7, + 0.7 + ], + "colorSpecular": [ + 0.168737, + 0.168737, + 0.168737 + ], + "shading": "Lambert", + "specularCoef": 50, + "opacity": 1.0, + "vertexColors": false + } + ], + "normals": [], + "colors": [], + "uvs": [], + "vertices": [ + 0.0084461, + -0.0084461, + 0.0247278, + 0.0084461, + 0.0084461, + 0.0247278, + -0, + 0.0119446, + 0.0247278, + -0.0084461, + 0.0084461, + 0.0247278, + -0.0119446, + -3.45e-05, + 0.0247278, + -0.0084461, + -0.0084461, + 0.0247278, + -0, + -0.0119446, + 0.0247278, + 0.0084461, + -0.0084461, + 0.022564, + 0.0119446, + -3.45e-05, + 0.022564, + 0.0084461, + 0.0084461, + 0.022564, + -0, + 0.0119446, + 0.022564, + -0.0084461, + 0.0084461, + 0.022564, + -0.0119446, + -3.45e-05, + 0.022564, + -0.0084461, + -0.0084461, + 0.022564, + 0, + -0.0119446, + 0.022564, + 0, + -0.0119446, + -0.0258612, + -0.0084461, + -0.0084461, + -0.0258612, + -0.0119446, + -3.45e-05, + -0.0258612, + -0.0084461, + 0.0084461, + -0.0258612, + -0, + 0.0119446, + -0.0258612, + 0.0084461, + 0.0084461, + -0.0258612, + 0.0119446, + -3.45e-05, + -0.0258612, + 0.0084461, + -0.0084461, + -0.0258612, + -0, + -0.0119446, + -0.0238143, + -0.0084461, + -0.0084461, + -0.0238143, + -0.0119446, + -3.45e-05, + -0.0238143, + -0.0084461, + 0.0084461, + -0.0238143, + -0, + 0.0119446, + -0.0238143, + 0.0084461, + 0.0084461, + -0.0238143, + 0.0084461, + -0.0084461, + -0.0238143, + -0.0108345, + 0.0313981, + 0.026288, + -0.0108345, + 0.0313981, + -0.0238143, + 0.0109716, + 0.0313981, + 0.026288, + 0.0109716, + 0.0313981, + -0.0238143, + 0.0109716, + 0.0300063, + -0.022288, + 0.0109716, + 0.0300063, + 0.0247278, + -0.0108345, + 0.0300063, + 0.0247278, + -0.0108345, + 0.0300063, + -0.022288, + -0.0108345, + -3.45e-05, + -0.022288, + -0.0108345, + -3.45e-05, + 0.0247278, + 0.0109716, + -3.45e-05, + 0.0247278, + 0.0109716, + -3.45e-05, + -0.022288, + 0.0109716, + -3.45e-05, + -0.0238143, + 0.0109716, + -3.45e-05, + 0.026288, + -0.0108345, + -3.45e-05, + 0.026288, + -0.0108345, + -3.45e-05, + -0.0238143, + 0, + 0.0332829, + -0.010382, + -0.0073412, + 0.0332829, + -0.0073412, + -0.010382, + 0.0332829, + -0, + -0.0073412, + 0.0332829, + 0.0073412, + -0, + 0.0332829, + 0.010382, + 0.0073412, + 0.0332829, + 0.0073412, + 0.010382, + 0.0332829, + -0, + 0.0073412, + 0.0332829, + -0.0073412, + -0, + 0.0313981, + -0.010382, + -0.0073412, + 0.0313981, + -0.0073412, + -0.010382, + 0.0313981, + -0, + -0.0073412, + 0.0313981, + 0.0073412, + -0, + 0.0313981, + 0.010382, + 0.0073412, + 0.0313981, + 0.0073412, + 0.010382, + 0.0313981, + -0, + 0.0073412, + 0.0313981, + -0.0073412, + 0.0029764, + -0.0029802, + -0.0263812, + 0.0042093, + -2.31e-05, + -0.0263812, + 0.0029764, + 0.0029726, + -0.0263812, + 0, + 0.0042054, + -0.0263812, + -0.0029764, + 0.0029726, + -0.0263812, + -0.0042093, + -2.31e-05, + -0.0263812, + -0.0029764, + -0.0029802, + -0.0263812, + 0, + -0.0042131, + -0.0263812, + 0, + -0.0042131, + 0.0267308, + -0.0029764, + -0.0029802, + 0.0267308, + -0.0042093, + -2.31e-05, + 0.0267308, + -0.0029764, + 0.0029726, + 0.0267308, + 0, + 0.0042054, + 0.0267308, + 0.0029764, + 0.0029726, + 0.0267308, + 0.0042093, + -2.31e-05, + 0.0267308, + 0.0029764, + -0.0029802, + 0.0267308 + ], + "faces": [ + 2, + 1, + 2, + 3, + 0, + 2, + 40, + 1, + 3, + 0, + 2, + 40, + 3, + 4, + 0, + 2, + 0, + 40, + 4, + 0, + 2, + 0, + 4, + 5, + 0, + 2, + 0, + 5, + 6, + 0, + 2, + 9, + 11, + 10, + 0, + 2, + 9, + 12, + 11, + 0, + 2, + 8, + 12, + 9, + 0, + 2, + 7, + 12, + 8, + 0, + 2, + 7, + 13, + 12, + 0, + 2, + 14, + 13, + 7, + 0, + 2, + 46, + 47, + 53, + 0, + 2, + 53, + 47, + 48, + 0, + 2, + 53, + 48, + 52, + 0, + 2, + 52, + 48, + 51, + 0, + 2, + 51, + 48, + 49, + 0, + 2, + 51, + 49, + 50, + 0, + 2, + 28, + 27, + 26, + 0, + 2, + 42, + 28, + 26, + 0, + 2, + 42, + 26, + 25, + 0, + 2, + 29, + 42, + 25, + 0, + 2, + 29, + 25, + 24, + 0, + 2, + 29, + 24, + 23, + 0, + 2, + 20, + 18, + 19, + 0, + 2, + 20, + 17, + 18, + 0, + 2, + 21, + 17, + 20, + 0, + 2, + 22, + 17, + 21, + 0, + 2, + 22, + 16, + 17, + 0, + 2, + 15, + 16, + 22, + 0, + 2, + 69, + 68, + 62, + 0, + 2, + 62, + 68, + 67, + 0, + 2, + 62, + 67, + 63, + 0, + 2, + 63, + 67, + 64, + 0, + 2, + 64, + 67, + 66, + 0, + 2, + 64, + 66, + 65, + 0, + 2, + 71, + 70, + 77, + 0, + 2, + 71, + 77, + 72, + 0, + 2, + 72, + 77, + 76, + 0, + 2, + 72, + 76, + 75, + 0, + 2, + 72, + 75, + 73, + 0, + 2, + 73, + 75, + 74, + 0, + 2, + 63, + 77, + 62, + 0, + 2, + 63, + 76, + 77, + 0, + 2, + 64, + 76, + 63, + 0, + 2, + 64, + 75, + 76, + 0, + 2, + 65, + 75, + 64, + 0, + 2, + 65, + 74, + 75, + 0, + 2, + 66, + 74, + 65, + 0, + 2, + 66, + 73, + 74, + 0, + 2, + 67, + 73, + 66, + 0, + 2, + 67, + 72, + 73, + 0, + 2, + 68, + 72, + 67, + 0, + 2, + 68, + 71, + 72, + 0, + 2, + 69, + 71, + 68, + 0, + 2, + 69, + 70, + 71, + 0, + 2, + 62, + 70, + 69, + 0, + 2, + 62, + 77, + 70, + 0, + 2, + 61, + 53, + 52, + 0, + 2, + 61, + 52, + 60, + 0, + 2, + 60, + 52, + 51, + 0, + 2, + 60, + 51, + 59, + 0, + 2, + 59, + 51, + 50, + 0, + 2, + 59, + 50, + 58, + 0, + 2, + 58, + 50, + 49, + 0, + 2, + 58, + 49, + 57, + 0, + 2, + 57, + 49, + 48, + 0, + 2, + 57, + 48, + 56, + 0, + 2, + 56, + 48, + 47, + 0, + 2, + 56, + 47, + 55, + 0, + 2, + 55, + 47, + 46, + 0, + 2, + 55, + 46, + 54, + 0, + 2, + 53, + 61, + 54, + 0, + 2, + 53, + 54, + 46, + 0, + 2, + 38, + 34, + 37, + 0, + 2, + 38, + 41, + 34, + 0, + 2, + 36, + 40, + 39, + 0, + 2, + 36, + 35, + 40, + 0, + 2, + 34, + 36, + 37, + 0, + 2, + 34, + 35, + 36, + 0, + 2, + 42, + 38, + 45, + 0, + 2, + 42, + 41, + 38, + 0, + 2, + 44, + 40, + 43, + 0, + 2, + 44, + 39, + 40, + 0, + 2, + 33, + 45, + 31, + 0, + 2, + 33, + 42, + 45, + 0, + 2, + 30, + 43, + 32, + 0, + 2, + 30, + 44, + 43, + 0, + 2, + 34, + 42, + 33, + 0, + 2, + 34, + 41, + 42, + 0, + 2, + 32, + 43, + 35, + 0, + 2, + 35, + 43, + 40, + 0, + 2, + 36, + 44, + 30, + 0, + 2, + 36, + 39, + 44, + 0, + 2, + 31, + 45, + 37, + 0, + 2, + 37, + 45, + 38, + 0, + 2, + 30, + 31, + 36, + 0, + 2, + 36, + 31, + 37, + 0, + 2, + 33, + 35, + 34, + 0, + 2, + 33, + 32, + 35, + 0, + 2, + 30, + 33, + 31, + 0, + 2, + 30, + 32, + 33, + 0, + 2, + 29, + 22, + 21, + 0, + 2, + 29, + 21, + 42, + 0, + 2, + 42, + 21, + 20, + 0, + 2, + 42, + 20, + 28, + 0, + 2, + 28, + 20, + 19, + 0, + 2, + 28, + 19, + 27, + 0, + 2, + 27, + 19, + 18, + 0, + 2, + 27, + 18, + 26, + 0, + 2, + 26, + 18, + 17, + 0, + 2, + 26, + 17, + 25, + 0, + 2, + 25, + 17, + 16, + 0, + 2, + 25, + 16, + 24, + 0, + 2, + 24, + 16, + 15, + 0, + 2, + 24, + 15, + 23, + 0, + 2, + 23, + 15, + 22, + 0, + 2, + 23, + 22, + 29, + 0, + 2, + 7, + 0, + 6, + 0, + 2, + 7, + 6, + 14, + 0, + 2, + 5, + 13, + 14, + 0, + 2, + 5, + 14, + 6, + 0, + 2, + 4, + 12, + 13, + 0, + 2, + 4, + 13, + 5, + 0, + 2, + 3, + 11, + 12, + 0, + 2, + 3, + 12, + 4, + 0, + 2, + 2, + 10, + 11, + 0, + 2, + 2, + 11, + 3, + 0, + 2, + 1, + 9, + 10, + 0, + 2, + 1, + 10, + 2, + 0, + 2, + 40, + 8, + 9, + 0, + 2, + 40, + 9, + 1, + 0, + 2, + 0, + 7, + 8, + 0, + 2, + 0, + 8, + 40, + 0 + ] } diff --git a/src/client/components/localisation/darwin_robot/left_leg/config/left_upper_leg.json b/src/client/components/localisation/darwin_robot/left_leg/config/left_upper_leg.json index 890b3b5c..97665155 100644 --- a/src/client/components/localisation/darwin_robot/left_leg/config/left_upper_leg.json +++ b/src/client/components/localisation/darwin_robot/left_leg/config/left_upper_leg.json @@ -1,1540 +1,1540 @@ { - "metadata": { - "formatVersion": 3 - }, - "materials": [ - { - "DbgColor": 15658734, - "DbgIndex": 0, - "DbgName": "Plastic", - "colorDiffuse": [ - 0.301961, - 0.301961, - 0.301961 - ], - "colorSpecular": [ - 0.401201, - 0.401201, - 0.401201 - ], - "shading": "Lambert", - "specularCoef": 50, - "opacity": 1.0, - "vertexColors": false - }, - { - "DbgColor": 15658734, - "DbgIndex": 1, - "DbgName": "ServoMaterial", - "colorDiffuse": [ - 0.14, - 0.14, - 0.14 - ], - "colorSpecular": [ - 0.168737, - 0.168737, - 0.168737 - ], - "shading": "Lambert", - "specularCoef": 50, - "opacity": 1.0, - "vertexColors": false - } - ], - "normals": [], - "colors": [], - "uvs": [], - "vertices": [ - 0.0148675, - -0.0550762, - 0.0116404, - 0.0148666, - -0.105434, - 0.0116412, - 0.014868, - -0.0550767, - -0.0137539, - 0.014867, - -0.105435, - -0.0137531, - 0.0104632, - -0.105435, - -0.0137532, - 0.0104628, - -0.105434, - 0.0116411, - 0.0104642, - -0.0550766, - -0.013754, - 0.0104638, - -0.0550761, - 0.0116403, - 0.0104634, - -0.0995206, - -0.0189472, - 0.0104628, - -0.0995199, - 0.0166704, - 0.0104642, - -0.0609908, - -0.0189478, - 0.0104636, - -0.0609902, - 0.0166698, - 0.0148672, - -0.0995207, - -0.0189471, - 0.0148666, - -0.0995201, - 0.0166705, - 0.014868, - -0.0609909, - -0.0189477, - 0.0148673, - -0.0609903, - 0.0166699, - -0.0103675, - -0.0609894, - 0.016669, - -0.0103668, - -0.0609901, - -0.0189486, - -0.0103682, - -0.0995192, - 0.0166696, - -0.0103676, - -0.0995198, - -0.018948, - -0.0147712, - -0.0609893, - 0.0166689, - -0.0147706, - -0.0609899, - -0.0189487, - -0.014772, - -0.0995191, - 0.0166695, - -0.0147714, - -0.0995197, - -0.0189481, - -0.014771, - -0.0550753, - 0.0116394, - -0.0147706, - -0.0550757, - -0.0137548, - -0.014772, - -0.105433, - 0.0116402, - -0.0147716, - -0.105434, - -0.0137541, - -0.0103678, - -0.105434, - -0.013754, - -0.0103668, - -0.0550758, - -0.0137548, - -0.0103682, - -0.105433, - 0.0116403, - -0.0103673, - -0.0550754, - 0.0116395, - 0.0182062, - -0.105435, - -0.013753, - 0.0182072, - -0.0550767, - -0.0137538, - 0.0182058, - -0.105434, - 0.0116413, - 0.0182068, - -0.0550763, - 0.0116405, - -0.0177682, - -0.105434, - -0.0137541, - -0.0177687, - -0.105433, - 0.0116402, - -0.0177672, - -0.0550756, - -0.0137549, - -0.0177677, - -0.0550752, - 0.0116394, - 0.0268712, - -0.104905, - -0.0082253, - -0.0268712, - -0.104905, - -0.0082253, - 0.026871, - -0.10766, - -0.0007456, - -0.026871, - -0.10766, - -0.0007456, - 0.0268709, - -0.105566, - 0.0070039, - -0.0268709, - -0.105566, - 0.0070039, - 0.0247075, - -0.100249, - 0.0112405, - -0.0247075, - -0.100249, - 0.0112405, - 0.0207275, - -0.079843, - 0.0190445, - -0.0207275, - -0.079843, - 0.0190445, - 0.020718, - -0.0748146, - 0.0190445, - -0.020718, - -0.0748146, - 0.0190445, - 0.0151308, - -0.0748146, - 0.025602, - -0.0151308, - -0.0748146, - 0.025602, - 0.0151422, - -0.0393893, - 0.025602, - -0.0151422, - -0.0393893, - 0.025602, - 0.0191712, - -0.0383065, - 0.0220794, - -0.0191712, - -0.0383065, - 0.0220794, - 0.020085, - -0.0355735, - 0.0202946, - -0.020085, - -0.0355735, - 0.0202946, - 0.0202365, - -0.0210323, - 0.0199852, - -0.0202365, - -0.0210323, - 0.0199852, - 0.0247061, - 0.0037188, - 0.0112418, - -0.0247061, - 0.0037188, - 0.0112418, - 0.0268709, - 0.0088188, - 0.0070039, - -0.0268709, - 0.0088188, - 0.0070039, - 0.026871, - 0.011922, - 0.0021987, - -0.026871, - 0.011922, - 0.0021987, - 0.0268711, - 0.0117651, - -0.0047315, - -0.0268711, - 0.0117651, - -0.0047315, - 0.0268712, - 0.0086289, - -0.0101251, - -0.0268712, - 0.0086289, - -0.0101251, - 0.0268712, - 0.0032575, - -0.0132311, - -0.0268712, - 0.0032575, - -0.0132311, - 0.0268712, - -0.0529296, - -0.012096, - -0.0268712, - -0.0529296, - -0.012096, - 0.0268713, - -0.0686317, - -0.0189066, - -0.0268713, - -0.0686317, - -0.0189066, - 0.0268712, - -0.0998468, - -0.0124744, - -0.0268712, - -0.0998468, - -0.0124744, - 0, - -0.0748146, - 0.0256017, - 0, - -0.0393893, - 0.0256017, - 0.0191712, - -0.0748146, - 0.0220794, - -0.0191712, - -0.0748146, - 0.0220794, - 0.0182379, - -0.0748146, - 0.0210424, - -0.0182379, - -0.0748146, - 0.0210424, - 0, - -0.0393893, - 0.0245647, - 0, - -0.0748146, - 0.0245647, - 0.0216682, - -0.0998468, - -0.0125575, - -0.0216682, - -0.0998468, - -0.0125575, - 0.0216683, - -0.0686317, - -0.0189896, - -0.0216683, - -0.0686317, - -0.0189896, - 0.0216682, - -0.0529296, - -0.0121791, - -0.0216682, - -0.0529296, - -0.0121791, - 0.0216682, - 0.0032575, - -0.0133142, - -0.0216682, - 0.0032575, - -0.0133142, - 0.0216682, - 0.0086289, - -0.0102081, - -0.0216682, - 0.0086289, - -0.0102081, - 0.0216681, - 0.0117651, - -0.0048146, - -0.0216681, - 0.0117651, - -0.0048146, - 0.021668, - 0.011922, - 0.0021157, - -0.021668, - 0.011922, - 0.0021157, - 0.0182379, - -0.0383065, - 0.0210424, - -0.0182379, - -0.0383065, - 0.0210424, - 0.0142089, - -0.0393893, - 0.0245649, - -0.0142089, - -0.0393893, - 0.0245649, - 0.0141975, - -0.0748146, - 0.0245649, - -0.0141975, - -0.0748146, - 0.0245649, - 0.021668, - -0.10766, - -0.0008287, - -0.021668, - -0.10766, - -0.0008287, - 0.0216682, - -0.104905, - -0.0083083, - -0.0216682, - -0.104905, - -0.0083083, - 0.0216679, - -0.105566, - 0.0070038, - -0.0216679, - -0.105566, - 0.0070038, - 0.0216679, - 0.0088188, - 0.0070038, - -0.0216679, - 0.0088188, - 0.0070038, - 0.0206395, - -0.100249, - 0.0112405, - -0.0206395, - -0.100249, - 0.0112405, - 0.0187179, - -0.0748146, - 0.0190444, - -0.0187179, - -0.0748146, - 0.0190444, - 0.0187613, - -0.079843, - 0.0190444, - -0.0187613, - -0.079843, - 0.0190444, - 0.0184737, - -0.0210323, - 0.0199852, - -0.0184737, - -0.0210323, - 0.0199852, - 0.0184239, - -0.0355735, - 0.0202946, - -0.0184239, - -0.0355735, - 0.0202946, - 0.0206127, - 0.0037188, - 0.0112418, - -0.0206127, - 0.0037188, - 0.0112418 - ], - "faces": [ - 2, - 50, - 48, - 46, - 0, - 2, - 47, - 49, - 51, - 0, - 2, - 64, - 58, - 46, - 0, - 2, - 47, - 59, - 65, - 0, - 2, - 64, - 46, - 44, - 0, - 2, - 45, - 47, - 65, - 0, - 2, - 52, - 56, - 54, - 0, - 2, - 55, - 57, - 53, - 0, - 2, - 58, - 56, - 50, - 0, - 2, - 51, - 57, - 59, - 0, - 2, - 58, - 50, - 46, - 0, - 2, - 47, - 51, - 59, - 0, - 2, - 58, - 64, - 62, - 0, - 2, - 63, - 65, - 59, - 0, - 2, - 58, - 62, - 60, - 0, - 2, - 61, - 63, - 59, - 0, - 2, - 76, - 74, - 78, - 0, - 2, - 79, - 75, - 77, - 0, - 2, - 42, - 64, - 44, - 0, - 2, - 45, - 65, - 43, - 0, - 2, - 72, - 66, - 74, - 0, - 2, - 75, - 67, - 73, - 0, - 2, - 74, - 66, - 64, - 0, - 2, - 65, - 67, - 75, - 0, - 2, - 74, - 64, - 78, - 0, - 2, - 79, - 65, - 75, - 0, - 2, - 70, - 68, - 66, - 0, - 2, - 67, - 69, - 71, - 0, - 2, - 70, - 66, - 72, - 0, - 2, - 73, - 67, - 71, - 0, - 2, - 78, - 64, - 42, - 0, - 2, - 43, - 65, - 79, - 0, - 2, - 42, - 40, - 78, - 0, - 2, - 79, - 41, - 43, - 0, - 2, - 52, - 82, - 56, - 0, - 2, - 57, - 83, - 53, - 0, - 2, - 82, - 50, - 56, - 0, - 2, - 57, - 51, - 83, - 0, - 2, - 104, - 102, - 106, - 0, - 2, - 107, - 103, - 105, - 0, - 2, - 88, - 92, - 90, - 0, - 2, - 91, - 93, - 89, - 0, - 2, - 92, - 100, - 94, - 0, - 2, - 95, - 101, - 93, - 0, - 2, - 100, - 98, - 96, - 0, - 2, - 97, - 99, - 101, - 0, - 2, - 94, - 100, - 96, - 0, - 2, - 97, - 101, - 95, - 0, - 2, - 88, - 110, - 108, - 0, - 2, - 109, - 111, - 89, - 0, - 2, - 102, - 84, - 106, - 0, - 2, - 107, - 85, - 103, - 0, - 2, - 114, - 108, - 112, - 0, - 2, - 109, - 115, - 113, - 0, - 2, - 100, - 108, - 114, - 0, - 2, - 109, - 101, - 115, - 0, - 2, - 92, - 108, - 100, - 0, - 2, - 109, - 93, - 101, - 0, - 2, - 92, - 88, - 108, - 0, - 2, - 89, - 93, - 109, - 0, - 2, - 122, - 118, - 124, - 0, - 2, - 119, - 123, - 125, - 0, - 2, - 126, - 118, - 122, - 0, - 2, - 119, - 127, - 123, - 0, - 2, - 118, - 116, - 120, - 0, - 2, - 117, - 119, - 121, - 0, - 2, - 126, - 116, - 118, - 0, - 2, - 117, - 127, - 119, - 0, - 2, - 114, - 116, - 126, - 0, - 2, - 117, - 115, - 127, - 0, - 2, - 114, - 112, - 116, - 0, - 2, - 113, - 115, - 117, - 0, - 2, - 44, - 46, - 112, - 0, - 2, - 113, - 47, - 45, - 0, - 2, - 46, - 116, - 112, - 0, - 2, - 113, - 117, - 47, - 0, - 2, - 46, - 48, - 116, - 0, - 2, - 117, - 49, - 47, - 0, - 2, - 48, - 120, - 116, - 0, - 2, - 117, - 121, - 49, - 0, - 2, - 48, - 50, - 120, - 0, - 2, - 121, - 51, - 49, - 0, - 2, - 50, - 118, - 120, - 0, - 2, - 121, - 119, - 51, - 0, - 2, - 84, - 102, - 118, - 0, - 2, - 119, - 103, - 85, - 0, - 2, - 102, - 124, - 118, - 0, - 2, - 119, - 125, - 103, - 0, - 2, - 62, - 64, - 114, - 0, - 2, - 115, - 65, - 63, - 0, - 2, - 62, - 114, - 126, - 0, - 2, - 127, - 115, - 63, - 0, - 2, - 60, - 62, - 126, - 0, - 2, - 127, - 63, - 61, - 0, - 2, - 60, - 126, - 122, - 0, - 2, - 123, - 127, - 61, - 0, - 2, - 58, - 60, - 122, - 0, - 2, - 123, - 61, - 59, - 0, - 2, - 58, - 122, - 124, - 0, - 2, - 125, - 123, - 59, - 0, - 2, - 56, - 58, - 124, - 0, - 2, - 125, - 59, - 57, - 0, - 2, - 56, - 124, - 102, - 0, - 2, - 103, - 125, - 57, - 0, - 2, - 64, - 66, - 114, - 0, - 2, - 115, - 67, - 65, - 0, - 2, - 66, - 100, - 114, - 0, - 2, - 115, - 101, - 67, - 0, - 2, - 86, - 104, - 106, - 0, - 2, - 107, - 105, - 86, - 0, - 2, - 86, - 106, - 87, - 0, - 2, - 87, - 107, - 86, - 0, - 2, - 78, - 40, - 110, - 0, - 2, - 111, - 41, - 79, - 0, - 2, - 78, - 110, - 88, - 0, - 2, - 89, - 111, - 79, - 0, - 2, - 40, - 42, - 108, - 0, - 2, - 109, - 43, - 41, - 0, - 2, - 40, - 108, - 110, - 0, - 2, - 111, - 109, - 41, - 0, - 2, - 54, - 56, - 102, - 0, - 2, - 103, - 57, - 55, - 0, - 2, - 54, - 102, - 104, - 0, - 2, - 105, - 103, - 55, - 0, - 2, - 66, - 68, - 100, - 0, - 2, - 101, - 69, - 67, - 0, - 2, - 68, - 98, - 100, - 0, - 2, - 101, - 99, - 69, - 0, - 2, - 68, - 70, - 98, - 0, - 2, - 99, - 71, - 69, - 0, - 2, - 70, - 96, - 98, - 0, - 2, - 99, - 97, - 71, - 0, - 2, - 72, - 74, - 92, - 0, - 2, - 93, - 75, - 73, - 0, - 2, - 72, - 92, - 94, - 0, - 2, - 95, - 93, - 73, - 0, - 2, - 74, - 76, - 92, - 0, - 2, - 93, - 77, - 75, - 0, - 2, - 76, - 90, - 92, - 0, - 2, - 93, - 91, - 77, - 0, - 2, - 76, - 78, - 88, - 0, - 2, - 89, - 79, - 77, - 0, - 2, - 76, - 88, - 90, - 0, - 2, - 91, - 89, - 77, - 0, - 2, - 70, - 72, - 96, - 0, - 2, - 97, - 73, - 71, - 0, - 2, - 72, - 94, - 96, - 0, - 2, - 97, - 95, - 73, - 0, - 2, - 81, - 54, - 104, - 0, - 2, - 105, - 55, - 81, - 0, - 2, - 81, - 104, - 86, - 0, - 2, - 86, - 105, - 81, - 0, - 2, - 52, - 80, - 106, - 0, - 2, - 107, - 80, - 53, - 0, - 2, - 80, - 87, - 106, - 0, - 2, - 107, - 87, - 80, - 0, - 2, - 82, - 52, - 84, - 0, - 2, - 85, - 53, - 83, - 0, - 2, - 52, - 106, - 84, - 0, - 2, - 85, - 107, - 53, - 0, - 2, - 52, - 54, - 81, - 0, - 2, - 81, - 55, - 53, - 0, - 2, - 52, - 81, - 80, - 0, - 2, - 80, - 81, - 53, - 0, - 3, - 43, - 109, - 113, - 45, - 0, - 3, - 42, - 44, - 112, - 108, - 0, - 3, - 51, - 119, - 85, - 83, - 0, - 3, - 50, - 82, - 84, - 118, - 0, - 2, - 32, - 36, - 33, - 1, - 2, - 33, - 36, - 38, - 1, - 2, - 35, - 37, - 34, - 1, - 2, - 35, - 39, - 37, - 1, - 2, - 33, - 38, - 39, - 1, - 2, - 33, - 39, - 35, - 1, - 2, - 32, - 37, - 36, - 1, - 2, - 32, - 34, - 37, - 1, - 2, - 38, - 36, - 37, - 1, - 2, - 38, - 37, - 39, - 1, - 2, - 32, - 35, - 34, - 1, - 2, - 32, - 33, - 35, - 1, - 2, - 20, - 22, - 18, - 1, - 2, - 20, - 18, - 16, - 1, - 2, - 17, - 19, - 23, - 1, - 2, - 17, - 23, - 21, - 1, - 2, - 23, - 27, - 25, - 1, - 2, - 23, - 25, - 21, - 1, - 2, - 19, - 29, - 28, - 1, - 2, - 19, - 17, - 29, - 1, - 2, - 28, - 27, - 23, - 1, - 2, - 28, - 23, - 19, - 1, - 2, - 21, - 25, - 29, - 1, - 2, - 21, - 29, - 17, - 1, - 2, - 31, - 24, - 20, - 1, - 2, - 31, - 20, - 16, - 1, - 2, - 18, - 30, - 31, - 1, - 2, - 18, - 31, - 16, - 1, - 2, - 24, - 26, - 22, - 1, - 2, - 24, - 22, - 20, - 1, - 2, - 22, - 26, - 30, - 1, - 2, - 22, - 30, - 18, - 1, - 2, - 9, - 5, - 1, - 1, - 2, - 9, - 1, - 13, - 1, - 2, - 7, - 5, - 9, - 1, - 2, - 7, - 9, - 11, - 1, - 2, - 0, - 15, - 13, - 1, - 2, - 0, - 13, - 1, - 1, - 2, - 0, - 7, - 11, - 1, - 2, - 0, - 11, - 15, - 1, - 2, - 10, - 6, - 2, - 1, - 2, - 10, - 2, - 14, - 1, - 2, - 3, - 4, - 8, - 1, - 2, - 3, - 8, - 12, - 1, - 2, - 12, - 2, - 3, - 1, - 2, - 12, - 14, - 2, - 1, - 2, - 8, - 4, - 6, - 1, - 2, - 8, - 6, - 10, - 1, - 2, - 14, - 12, - 8, - 1, - 2, - 14, - 8, - 10, - 1, - 2, - 11, - 9, - 13, - 1, - 2, - 11, - 13, - 15, - 1 - ] + "metadata": { + "formatVersion": 3 + }, + "materials": [ + { + "DbgColor": 15658734, + "DbgIndex": 0, + "DbgName": "Plastic", + "colorDiffuse": [ + 0.301961, + 0.301961, + 0.301961 + ], + "colorSpecular": [ + 0.401201, + 0.401201, + 0.401201 + ], + "shading": "Lambert", + "specularCoef": 50, + "opacity": 1.0, + "vertexColors": false + }, + { + "DbgColor": 15658734, + "DbgIndex": 1, + "DbgName": "ServoMaterial", + "colorDiffuse": [ + 0.14, + 0.14, + 0.14 + ], + "colorSpecular": [ + 0.168737, + 0.168737, + 0.168737 + ], + "shading": "Lambert", + "specularCoef": 50, + "opacity": 1.0, + "vertexColors": false + } + ], + "normals": [], + "colors": [], + "uvs": [], + "vertices": [ + 0.0148675, + -0.0550762, + 0.0116404, + 0.0148666, + -0.105434, + 0.0116412, + 0.014868, + -0.0550767, + -0.0137539, + 0.014867, + -0.105435, + -0.0137531, + 0.0104632, + -0.105435, + -0.0137532, + 0.0104628, + -0.105434, + 0.0116411, + 0.0104642, + -0.0550766, + -0.013754, + 0.0104638, + -0.0550761, + 0.0116403, + 0.0104634, + -0.0995206, + -0.0189472, + 0.0104628, + -0.0995199, + 0.0166704, + 0.0104642, + -0.0609908, + -0.0189478, + 0.0104636, + -0.0609902, + 0.0166698, + 0.0148672, + -0.0995207, + -0.0189471, + 0.0148666, + -0.0995201, + 0.0166705, + 0.014868, + -0.0609909, + -0.0189477, + 0.0148673, + -0.0609903, + 0.0166699, + -0.0103675, + -0.0609894, + 0.016669, + -0.0103668, + -0.0609901, + -0.0189486, + -0.0103682, + -0.0995192, + 0.0166696, + -0.0103676, + -0.0995198, + -0.018948, + -0.0147712, + -0.0609893, + 0.0166689, + -0.0147706, + -0.0609899, + -0.0189487, + -0.014772, + -0.0995191, + 0.0166695, + -0.0147714, + -0.0995197, + -0.0189481, + -0.014771, + -0.0550753, + 0.0116394, + -0.0147706, + -0.0550757, + -0.0137548, + -0.014772, + -0.105433, + 0.0116402, + -0.0147716, + -0.105434, + -0.0137541, + -0.0103678, + -0.105434, + -0.013754, + -0.0103668, + -0.0550758, + -0.0137548, + -0.0103682, + -0.105433, + 0.0116403, + -0.0103673, + -0.0550754, + 0.0116395, + 0.0182062, + -0.105435, + -0.013753, + 0.0182072, + -0.0550767, + -0.0137538, + 0.0182058, + -0.105434, + 0.0116413, + 0.0182068, + -0.0550763, + 0.0116405, + -0.0177682, + -0.105434, + -0.0137541, + -0.0177687, + -0.105433, + 0.0116402, + -0.0177672, + -0.0550756, + -0.0137549, + -0.0177677, + -0.0550752, + 0.0116394, + 0.0268712, + -0.104905, + -0.0082253, + -0.0268712, + -0.104905, + -0.0082253, + 0.026871, + -0.10766, + -0.0007456, + -0.026871, + -0.10766, + -0.0007456, + 0.0268709, + -0.105566, + 0.0070039, + -0.0268709, + -0.105566, + 0.0070039, + 0.0247075, + -0.100249, + 0.0112405, + -0.0247075, + -0.100249, + 0.0112405, + 0.0207275, + -0.079843, + 0.0190445, + -0.0207275, + -0.079843, + 0.0190445, + 0.020718, + -0.0748146, + 0.0190445, + -0.020718, + -0.0748146, + 0.0190445, + 0.0151308, + -0.0748146, + 0.025602, + -0.0151308, + -0.0748146, + 0.025602, + 0.0151422, + -0.0393893, + 0.025602, + -0.0151422, + -0.0393893, + 0.025602, + 0.0191712, + -0.0383065, + 0.0220794, + -0.0191712, + -0.0383065, + 0.0220794, + 0.020085, + -0.0355735, + 0.0202946, + -0.020085, + -0.0355735, + 0.0202946, + 0.0202365, + -0.0210323, + 0.0199852, + -0.0202365, + -0.0210323, + 0.0199852, + 0.0247061, + 0.0037188, + 0.0112418, + -0.0247061, + 0.0037188, + 0.0112418, + 0.0268709, + 0.0088188, + 0.0070039, + -0.0268709, + 0.0088188, + 0.0070039, + 0.026871, + 0.011922, + 0.0021987, + -0.026871, + 0.011922, + 0.0021987, + 0.0268711, + 0.0117651, + -0.0047315, + -0.0268711, + 0.0117651, + -0.0047315, + 0.0268712, + 0.0086289, + -0.0101251, + -0.0268712, + 0.0086289, + -0.0101251, + 0.0268712, + 0.0032575, + -0.0132311, + -0.0268712, + 0.0032575, + -0.0132311, + 0.0268712, + -0.0529296, + -0.012096, + -0.0268712, + -0.0529296, + -0.012096, + 0.0268713, + -0.0686317, + -0.0189066, + -0.0268713, + -0.0686317, + -0.0189066, + 0.0268712, + -0.0998468, + -0.0124744, + -0.0268712, + -0.0998468, + -0.0124744, + 0, + -0.0748146, + 0.0256017, + 0, + -0.0393893, + 0.0256017, + 0.0191712, + -0.0748146, + 0.0220794, + -0.0191712, + -0.0748146, + 0.0220794, + 0.0182379, + -0.0748146, + 0.0210424, + -0.0182379, + -0.0748146, + 0.0210424, + 0, + -0.0393893, + 0.0245647, + 0, + -0.0748146, + 0.0245647, + 0.0216682, + -0.0998468, + -0.0125575, + -0.0216682, + -0.0998468, + -0.0125575, + 0.0216683, + -0.0686317, + -0.0189896, + -0.0216683, + -0.0686317, + -0.0189896, + 0.0216682, + -0.0529296, + -0.0121791, + -0.0216682, + -0.0529296, + -0.0121791, + 0.0216682, + 0.0032575, + -0.0133142, + -0.0216682, + 0.0032575, + -0.0133142, + 0.0216682, + 0.0086289, + -0.0102081, + -0.0216682, + 0.0086289, + -0.0102081, + 0.0216681, + 0.0117651, + -0.0048146, + -0.0216681, + 0.0117651, + -0.0048146, + 0.021668, + 0.011922, + 0.0021157, + -0.021668, + 0.011922, + 0.0021157, + 0.0182379, + -0.0383065, + 0.0210424, + -0.0182379, + -0.0383065, + 0.0210424, + 0.0142089, + -0.0393893, + 0.0245649, + -0.0142089, + -0.0393893, + 0.0245649, + 0.0141975, + -0.0748146, + 0.0245649, + -0.0141975, + -0.0748146, + 0.0245649, + 0.021668, + -0.10766, + -0.0008287, + -0.021668, + -0.10766, + -0.0008287, + 0.0216682, + -0.104905, + -0.0083083, + -0.0216682, + -0.104905, + -0.0083083, + 0.0216679, + -0.105566, + 0.0070038, + -0.0216679, + -0.105566, + 0.0070038, + 0.0216679, + 0.0088188, + 0.0070038, + -0.0216679, + 0.0088188, + 0.0070038, + 0.0206395, + -0.100249, + 0.0112405, + -0.0206395, + -0.100249, + 0.0112405, + 0.0187179, + -0.0748146, + 0.0190444, + -0.0187179, + -0.0748146, + 0.0190444, + 0.0187613, + -0.079843, + 0.0190444, + -0.0187613, + -0.079843, + 0.0190444, + 0.0184737, + -0.0210323, + 0.0199852, + -0.0184737, + -0.0210323, + 0.0199852, + 0.0184239, + -0.0355735, + 0.0202946, + -0.0184239, + -0.0355735, + 0.0202946, + 0.0206127, + 0.0037188, + 0.0112418, + -0.0206127, + 0.0037188, + 0.0112418 + ], + "faces": [ + 2, + 50, + 48, + 46, + 0, + 2, + 47, + 49, + 51, + 0, + 2, + 64, + 58, + 46, + 0, + 2, + 47, + 59, + 65, + 0, + 2, + 64, + 46, + 44, + 0, + 2, + 45, + 47, + 65, + 0, + 2, + 52, + 56, + 54, + 0, + 2, + 55, + 57, + 53, + 0, + 2, + 58, + 56, + 50, + 0, + 2, + 51, + 57, + 59, + 0, + 2, + 58, + 50, + 46, + 0, + 2, + 47, + 51, + 59, + 0, + 2, + 58, + 64, + 62, + 0, + 2, + 63, + 65, + 59, + 0, + 2, + 58, + 62, + 60, + 0, + 2, + 61, + 63, + 59, + 0, + 2, + 76, + 74, + 78, + 0, + 2, + 79, + 75, + 77, + 0, + 2, + 42, + 64, + 44, + 0, + 2, + 45, + 65, + 43, + 0, + 2, + 72, + 66, + 74, + 0, + 2, + 75, + 67, + 73, + 0, + 2, + 74, + 66, + 64, + 0, + 2, + 65, + 67, + 75, + 0, + 2, + 74, + 64, + 78, + 0, + 2, + 79, + 65, + 75, + 0, + 2, + 70, + 68, + 66, + 0, + 2, + 67, + 69, + 71, + 0, + 2, + 70, + 66, + 72, + 0, + 2, + 73, + 67, + 71, + 0, + 2, + 78, + 64, + 42, + 0, + 2, + 43, + 65, + 79, + 0, + 2, + 42, + 40, + 78, + 0, + 2, + 79, + 41, + 43, + 0, + 2, + 52, + 82, + 56, + 0, + 2, + 57, + 83, + 53, + 0, + 2, + 82, + 50, + 56, + 0, + 2, + 57, + 51, + 83, + 0, + 2, + 104, + 102, + 106, + 0, + 2, + 107, + 103, + 105, + 0, + 2, + 88, + 92, + 90, + 0, + 2, + 91, + 93, + 89, + 0, + 2, + 92, + 100, + 94, + 0, + 2, + 95, + 101, + 93, + 0, + 2, + 100, + 98, + 96, + 0, + 2, + 97, + 99, + 101, + 0, + 2, + 94, + 100, + 96, + 0, + 2, + 97, + 101, + 95, + 0, + 2, + 88, + 110, + 108, + 0, + 2, + 109, + 111, + 89, + 0, + 2, + 102, + 84, + 106, + 0, + 2, + 107, + 85, + 103, + 0, + 2, + 114, + 108, + 112, + 0, + 2, + 109, + 115, + 113, + 0, + 2, + 100, + 108, + 114, + 0, + 2, + 109, + 101, + 115, + 0, + 2, + 92, + 108, + 100, + 0, + 2, + 109, + 93, + 101, + 0, + 2, + 92, + 88, + 108, + 0, + 2, + 89, + 93, + 109, + 0, + 2, + 122, + 118, + 124, + 0, + 2, + 119, + 123, + 125, + 0, + 2, + 126, + 118, + 122, + 0, + 2, + 119, + 127, + 123, + 0, + 2, + 118, + 116, + 120, + 0, + 2, + 117, + 119, + 121, + 0, + 2, + 126, + 116, + 118, + 0, + 2, + 117, + 127, + 119, + 0, + 2, + 114, + 116, + 126, + 0, + 2, + 117, + 115, + 127, + 0, + 2, + 114, + 112, + 116, + 0, + 2, + 113, + 115, + 117, + 0, + 2, + 44, + 46, + 112, + 0, + 2, + 113, + 47, + 45, + 0, + 2, + 46, + 116, + 112, + 0, + 2, + 113, + 117, + 47, + 0, + 2, + 46, + 48, + 116, + 0, + 2, + 117, + 49, + 47, + 0, + 2, + 48, + 120, + 116, + 0, + 2, + 117, + 121, + 49, + 0, + 2, + 48, + 50, + 120, + 0, + 2, + 121, + 51, + 49, + 0, + 2, + 50, + 118, + 120, + 0, + 2, + 121, + 119, + 51, + 0, + 2, + 84, + 102, + 118, + 0, + 2, + 119, + 103, + 85, + 0, + 2, + 102, + 124, + 118, + 0, + 2, + 119, + 125, + 103, + 0, + 2, + 62, + 64, + 114, + 0, + 2, + 115, + 65, + 63, + 0, + 2, + 62, + 114, + 126, + 0, + 2, + 127, + 115, + 63, + 0, + 2, + 60, + 62, + 126, + 0, + 2, + 127, + 63, + 61, + 0, + 2, + 60, + 126, + 122, + 0, + 2, + 123, + 127, + 61, + 0, + 2, + 58, + 60, + 122, + 0, + 2, + 123, + 61, + 59, + 0, + 2, + 58, + 122, + 124, + 0, + 2, + 125, + 123, + 59, + 0, + 2, + 56, + 58, + 124, + 0, + 2, + 125, + 59, + 57, + 0, + 2, + 56, + 124, + 102, + 0, + 2, + 103, + 125, + 57, + 0, + 2, + 64, + 66, + 114, + 0, + 2, + 115, + 67, + 65, + 0, + 2, + 66, + 100, + 114, + 0, + 2, + 115, + 101, + 67, + 0, + 2, + 86, + 104, + 106, + 0, + 2, + 107, + 105, + 86, + 0, + 2, + 86, + 106, + 87, + 0, + 2, + 87, + 107, + 86, + 0, + 2, + 78, + 40, + 110, + 0, + 2, + 111, + 41, + 79, + 0, + 2, + 78, + 110, + 88, + 0, + 2, + 89, + 111, + 79, + 0, + 2, + 40, + 42, + 108, + 0, + 2, + 109, + 43, + 41, + 0, + 2, + 40, + 108, + 110, + 0, + 2, + 111, + 109, + 41, + 0, + 2, + 54, + 56, + 102, + 0, + 2, + 103, + 57, + 55, + 0, + 2, + 54, + 102, + 104, + 0, + 2, + 105, + 103, + 55, + 0, + 2, + 66, + 68, + 100, + 0, + 2, + 101, + 69, + 67, + 0, + 2, + 68, + 98, + 100, + 0, + 2, + 101, + 99, + 69, + 0, + 2, + 68, + 70, + 98, + 0, + 2, + 99, + 71, + 69, + 0, + 2, + 70, + 96, + 98, + 0, + 2, + 99, + 97, + 71, + 0, + 2, + 72, + 74, + 92, + 0, + 2, + 93, + 75, + 73, + 0, + 2, + 72, + 92, + 94, + 0, + 2, + 95, + 93, + 73, + 0, + 2, + 74, + 76, + 92, + 0, + 2, + 93, + 77, + 75, + 0, + 2, + 76, + 90, + 92, + 0, + 2, + 93, + 91, + 77, + 0, + 2, + 76, + 78, + 88, + 0, + 2, + 89, + 79, + 77, + 0, + 2, + 76, + 88, + 90, + 0, + 2, + 91, + 89, + 77, + 0, + 2, + 70, + 72, + 96, + 0, + 2, + 97, + 73, + 71, + 0, + 2, + 72, + 94, + 96, + 0, + 2, + 97, + 95, + 73, + 0, + 2, + 81, + 54, + 104, + 0, + 2, + 105, + 55, + 81, + 0, + 2, + 81, + 104, + 86, + 0, + 2, + 86, + 105, + 81, + 0, + 2, + 52, + 80, + 106, + 0, + 2, + 107, + 80, + 53, + 0, + 2, + 80, + 87, + 106, + 0, + 2, + 107, + 87, + 80, + 0, + 2, + 82, + 52, + 84, + 0, + 2, + 85, + 53, + 83, + 0, + 2, + 52, + 106, + 84, + 0, + 2, + 85, + 107, + 53, + 0, + 2, + 52, + 54, + 81, + 0, + 2, + 81, + 55, + 53, + 0, + 2, + 52, + 81, + 80, + 0, + 2, + 80, + 81, + 53, + 0, + 3, + 43, + 109, + 113, + 45, + 0, + 3, + 42, + 44, + 112, + 108, + 0, + 3, + 51, + 119, + 85, + 83, + 0, + 3, + 50, + 82, + 84, + 118, + 0, + 2, + 32, + 36, + 33, + 1, + 2, + 33, + 36, + 38, + 1, + 2, + 35, + 37, + 34, + 1, + 2, + 35, + 39, + 37, + 1, + 2, + 33, + 38, + 39, + 1, + 2, + 33, + 39, + 35, + 1, + 2, + 32, + 37, + 36, + 1, + 2, + 32, + 34, + 37, + 1, + 2, + 38, + 36, + 37, + 1, + 2, + 38, + 37, + 39, + 1, + 2, + 32, + 35, + 34, + 1, + 2, + 32, + 33, + 35, + 1, + 2, + 20, + 22, + 18, + 1, + 2, + 20, + 18, + 16, + 1, + 2, + 17, + 19, + 23, + 1, + 2, + 17, + 23, + 21, + 1, + 2, + 23, + 27, + 25, + 1, + 2, + 23, + 25, + 21, + 1, + 2, + 19, + 29, + 28, + 1, + 2, + 19, + 17, + 29, + 1, + 2, + 28, + 27, + 23, + 1, + 2, + 28, + 23, + 19, + 1, + 2, + 21, + 25, + 29, + 1, + 2, + 21, + 29, + 17, + 1, + 2, + 31, + 24, + 20, + 1, + 2, + 31, + 20, + 16, + 1, + 2, + 18, + 30, + 31, + 1, + 2, + 18, + 31, + 16, + 1, + 2, + 24, + 26, + 22, + 1, + 2, + 24, + 22, + 20, + 1, + 2, + 22, + 26, + 30, + 1, + 2, + 22, + 30, + 18, + 1, + 2, + 9, + 5, + 1, + 1, + 2, + 9, + 1, + 13, + 1, + 2, + 7, + 5, + 9, + 1, + 2, + 7, + 9, + 11, + 1, + 2, + 0, + 15, + 13, + 1, + 2, + 0, + 13, + 1, + 1, + 2, + 0, + 7, + 11, + 1, + 2, + 0, + 11, + 15, + 1, + 2, + 10, + 6, + 2, + 1, + 2, + 10, + 2, + 14, + 1, + 2, + 3, + 4, + 8, + 1, + 2, + 3, + 8, + 12, + 1, + 2, + 12, + 2, + 3, + 1, + 2, + 12, + 14, + 2, + 1, + 2, + 8, + 4, + 6, + 1, + 2, + 8, + 6, + 10, + 1, + 2, + 14, + 12, + 8, + 1, + 2, + 14, + 8, + 10, + 1, + 2, + 11, + 9, + 13, + 1, + 2, + 11, + 13, + 15, + 1 + ] } diff --git a/src/client/components/localisation/darwin_robot/model.ts b/src/client/components/localisation/darwin_robot/model.ts index ae1b61d0..ba26ba41 100644 --- a/src/client/components/localisation/darwin_robot/model.ts +++ b/src/client/components/localisation/darwin_robot/model.ts @@ -13,7 +13,7 @@ export class RobotModel { Object.assign(this, opts) } - public static of(opts: { id: number, name: string, color?: string, heading: number}) { + public static of(opts: { id: number, name: string, color?: string, heading: number }) { return new RobotModel({ ...opts, position: Vector3.of(), diff --git a/src/client/components/localisation/darwin_robot/right_arm/config/right_lower_arm.json b/src/client/components/localisation/darwin_robot/right_arm/config/right_lower_arm.json index b318af26..d92a6923 100644 --- a/src/client/components/localisation/darwin_robot/right_arm/config/right_lower_arm.json +++ b/src/client/components/localisation/darwin_robot/right_arm/config/right_lower_arm.json @@ -1,2770 +1,2770 @@ { - "metadata": { - "formatVersion": 3 - }, - "materials": [ - { - "DbgColor": 15658734, - "DbgIndex": 0, - "DbgName": "Plastic", - "colorDiffuse": [ - 0.301961, - 0.301961, - 0.301961 - ], - "colorSpecular": [ - 0.401201, - 0.401201, - 0.401201 - ], - "shading": "Lambert", - "specularCoef": 50, - "opacity": 1.0, - "vertexColors": false - }, - { - "DbgColor": 15658734, - "DbgIndex": 1, - "DbgName": "Metal", - "colorDiffuse": [ - 0.7, - 0.7, - 0.7 - ], - "colorSpecular": [ - 0.168737, - 0.168737, - 0.168737 - ], - "shading": "Lambert", - "specularCoef": 50, - "opacity": 1.0, - "vertexColors": false - } - ], - "normals": [], - "colors": [], - "uvs": [], - "vertices": [ - -0.0213191, - -0.0889727, - -0.0159976, - -0.0211907, - -0.0894324, - -0.0247745, - -0.0211913, - -0.0894318, - -0.0072208, - -0.0201442, - -0.0931769, - -0.031888, - -0.0201453, - -0.0931758, - -0.0001069, - -0.0178828, - -0.101269, - -0.0354476, - -0.0178842, - -0.101267, - 0.0034534, - -0.0133858, - -0.11736, - -0.0357452, - -0.0133871, - -0.117359, - 0.0037524, - -0.01128, - -0.124895, - -0.0340932, - -0.0112813, - -0.124893, - 0.0021011, - -0.0102127, - -0.128713, - -0.0294718, - -0.0102137, - -0.128712, - -0.0025199, - -0.0101165, - -0.129057, - -0.0159958, - -0.0247639, - -0.0160598, - -0.0160003, - -0.0246355, - -0.0165196, - -0.0288777, - -0.0246364, - -0.0165187, - -0.0031229, - -0.0235891, - -0.0222592, - -0.0318905, - -0.0235902, - -0.0222581, - -0.0001096, - -0.0213276, - -0.0232773, - -0.0354503, - -0.021329, - -0.0232759, - 0.0034504, - -0.0084512, - -0.095859, - -0.0414497, - -0.008453, - -0.0958572, - 0.0094558, - -0.018995, - -0.0243814, - -0.0379737, - -0.0189965, - -0.0243799, - 0.0059741, - -0.0084516, - -0.114722, - -0.0386015, - -0.0084531, - -0.114721, - 0.0066089, - -0.0033967, - -0.0243817, - -0.0379737, - -0.0033982, - -0.0243802, - 0.0059752, - -0.003397, - -0.0444906, - -0.0389514, - -0.0033986, - -0.044489, - 0.0069543, - 0.0014999, - -0.0548169, - -0.0394535, - 0.0014983, - -0.0548152, - 0.0074574, - 0.0060342, - -0.0578967, - -0.0396032, - 0.0060326, - -0.057895, - 0.0076077, - 0.0058524, - -0.0828969, - -0.0408187, - 0.0058507, - -0.0828952, - 0.0088249, - 0.0004111, - -0.084165, - -0.0408804, - 0.0004094, - -0.0841632, - 0.0088863, - -0.0035792, - -0.0870635, - -0.0410213, - -0.0035809, - -0.0870617, - 0.0090271, - -0.0052413, - -0.0958591, - -0.0414497, - -0.0052431, - -0.0958573, - 0.009456, - -0.0052416, - -0.114722, - -0.0386015, - -0.0052432, - -0.114721, - 0.0066091, - -0.0052418, - -0.124895, - -0.0340932, - -0.005243, - -0.124893, - 0.0021015, - -0.0052418, - -0.128713, - -0.0294718, - -0.0052428, - -0.128713, - -0.0025195, - -0.0052419, - -0.129057, - -0.0159957, - -0.0052416, - -0.114722, - -0.0159962, - -0.0052413, - -0.0958582, - -0.0159968, - -0.003397, - -0.0444898, - -0.0159986, - -0.0033967, - -0.0243809, - -0.0159993, - 0.0116687, - -0.0256611, - -0.0293486, - 0.0116677, - -0.0256601, - -0.0026488, - 0.0117097, - -0.0319492, - -0.0293484, - 0.0117088, - -0.0319483, - -0.0026486, - -2.7e-06, - -0.0384566, - -0.0293482, - -3.6e-06, - -0.0384556, - -0.0026492, - -0.0001606, - -0.051074, - -0.0293477, - -0.0001615, - -0.051073, - -0.0026487, - 0.0052634, - -0.0576914, - -0.0293475, - 0.0052625, - -0.0576904, - -0.0026481, - 0.0052423, - -0.0878154, - -0.0293464, - 0.0052414, - -0.0878145, - -0.0026471, - -0.0001615, - -0.104225, - -0.0293459, - -0.0001625, - -0.104224, - -0.0026469, - -0.0066074, - -0.104286, - -0.0159966, - -0.0025892, - -0.114613, - -0.0159961, - 0.0086911, - -0.114558, - -0.0159957, - 0.0086705, - -0.116568, - -0.0159956, - -0.003803, - -0.116663, - -0.0159961, - -0.0073549, - -0.108613, - -0.0159965, - -0.00644, - -0.0256608, - -0.0293486, - -0.0064409, - -0.0256598, - -0.0026501, - -0.0025892, - -0.114614, - -0.0293455, - -0.0025901, - -0.114613, - -0.0026467, - 0.0086911, - -0.114559, - -0.0293455, - 0.0086901, - -0.114558, - -0.0026459, - 0.0086705, - -0.116568, - -0.0293454, - 0.0086695, - -0.116567, - -0.0026458, - -0.003803, - -0.116664, - -0.0293454, - -0.0038039, - -0.116663, - -0.0026467, - -0.0073549, - -0.108613, - -0.0293457, - -0.0073558, - -0.108612, - -0.0026472, - 0.0116687, - -0.0256611, - -0.0315554, - 0.0116676, - -0.0256601, - -0.000442, - 0.0117097, - -0.0319493, - -0.0315552, - 0.0117086, - -0.0319482, - -0.0004418, - -2.7e-06, - -0.0384566, - -0.0315549, - -3.7e-06, - -0.0384556, - -0.0004424, - -0.0001606, - -0.0510741, - -0.0315545, - -0.0001617, - -0.051073, - -0.0004419, - 0.0052634, - -0.0576914, - -0.0315543, - 0.0052623, - -0.0576904, - -0.0004413, - 0.0052423, - -0.0878155, - -0.0315532, - 0.0052412, - -0.0878144, - -0.0004403, - -0.0001615, - -0.104225, - -0.0315527, - -0.0001626, - -0.104224, - -0.0004401, - -0.0064414, - -0.104225, - -0.0293459, - -0.0064423, - -0.104224, - -0.0026473, - -0.0064414, - -0.104225, - -0.0315526, - -0.0064425, - -0.104224, - -0.0004405, - -0.0064411, - -0.0878153, - -0.0315532, - -0.0064422, - -0.0878142, - -0.0004411, - -0.0064406, - -0.0576912, - -0.0315543, - -0.0064417, - -0.0576902, - -0.0004421, - -0.0064405, - -0.0510739, - -0.0315545, - -0.0064415, - -0.0510729, - -0.0004424, - -0.0064402, - -0.0384565, - -0.0315549, - -0.0064413, - -0.0384554, - -0.0004428, - -0.0064401, - -0.031949, - -0.0315552, - -0.0064412, - -0.0319479, - -0.000443, - -0.00644, - -0.0256608, - -0.0315554, - -0.0064411, - -0.0256597, - -0.0004433, - -0.0064411, - -0.0878152, - -0.0293464, - -0.006442, - -0.0878143, - -0.0026479, - -0.0064406, - -0.0576912, - -0.0293475, - -0.0064415, - -0.0576902, - -0.0026489, - -0.0064405, - -0.0510739, - -0.0293477, - -0.0064414, - -0.0510729, - -0.0026492, - -0.0064402, - -0.0384565, - -0.0293482, - -0.0064412, - -0.0384555, - -0.0026496, - -0.0064401, - -0.0319489, - -0.0293484, - -0.006441, - -0.031948, - -0.0026498, - -0.0052413, - -0.0959551, - -0.0394757, - -0.0052429, - -0.0959534, - 0.007482, - -0.0035792, - -0.0871594, - -0.0390472, - -0.0035808, - -0.0871578, - 0.0070531, - 0.0004111, - -0.0842609, - -0.0389063, - 0.0004095, - -0.0842594, - 0.0069122, - 0.0058524, - -0.0829929, - -0.0388446, - 0.0058508, - -0.0829913, - 0.0068509, - 0.0060342, - -0.0579927, - -0.0376292, - 0.0060327, - -0.0579912, - 0.0056336, - 0.0014999, - -0.0549128, - -0.0374794, - 0.0014984, - -0.0549114, - 0.0054834, - -0.003397, - -0.0445866, - -0.0369774, - -0.0033985, - -0.0445851, - 0.0049802, - -0.0203416, - 0.0027032, - 0.0114162, - -0.0203419, - -0.0062084, - 0.0095242, - -0.0203424, - -0.0112066, - 0.0018315, - -0.0203428, - -0.009295, - -0.0071084, - -0.0203429, - -0.0016218, - -0.0120782, - -0.0203426, - 0.0073465, - -0.0101471, - -0.0203421, - 0.0122879, - -0.0024935, - -0.0203417, - 0.0103763, - 0.0064464, - -0.0181778, - 0.0027031, - 0.0114161, - -0.0181781, - -0.0062084, - 0.0095241, - -0.0181786, - -0.0112066, - 0.0018314, - -0.018179, - -0.009295, - -0.0071085, - -0.0181791, - -0.0016219, - -0.0120783, - -0.0181787, - 0.0073464, - -0.0101472, - -0.0181782, - 0.0122878, - -0.0024936, - -0.0181779, - 0.0103763, - 0.0064464, - -0.0219044, - -0.0234642, - -0.0267139, - -0.0219032, - -0.0234341, - -0.0049078, - -0.020343, - -0.0219677, - -0.0049079, - -0.0203442, - -0.0220726, - -0.0267141, - -0.0203424, - 0.0086404, - -0.0076672, - -0.0203421, - -0.0073519, - 0.0075928, - -0.0219022, - -0.0073519, - 0.0075929, - -0.0219026, - 0.0086404, - -0.0076671, - 0.0111911, - -0.0254366, - -0.0158811, - 0.0078692, - -0.0254369, - -0.0238998, - -0.0001498, - -0.0254368, - -0.0272209, - -0.0081685, - -0.0254364, - -0.0238989, - -0.0114896, - -0.0254358, - -0.0158799, - -0.0081676, - -0.0254355, - -0.0078613, - -0.0001486, - -0.0254356, - -0.0045402, - 0.00787, - -0.0254361, - -0.0078621, - 0.0111912, - -0.0233778, - -0.0158812, - 0.0078692, - -0.0233781, - -0.0238999, - -0.0001498, - -0.023378, - -0.027221, - -0.0081684, - -0.0233776, - -0.023899, - -0.0114895, - -0.023377, - -0.01588, - -0.0081676, - -0.0233767, - -0.0078614, - -0.0001486, - -0.0234348, - -0.0045403, - 0.0078701, - -0.0233773, - -0.0078622, - -0.022345, - 0.0040099, - 0.0020596, - -0.0223451, - 0.0046835, - -0.0010908, - -0.0223453, - 0.0029481, - -0.0037839, - -0.0223454, - -0.0002182, - -0.0044684, - -0.0223454, - -0.0029222, - -0.0027171, - -0.0223453, - -0.0035958, - 0.0004333, - -0.0223451, - -0.0018286, - 0.0031483, - -0.022345, - 0.0013059, - 0.003811, - 0.0219963, - 0.0013044, - 0.0038094, - 0.0219961, - -0.0018302, - 0.0031467, - 0.021996, - -0.0035974, - 0.0004318, - 0.021996, - -0.0029238, - -0.0027186, - 0.021996, - -0.0002197, - -0.00447, - 0.0219962, - 0.0029465, - -0.0037854, - 0.0219963, - 0.004682, - -0.0010923, - 0.0219964, - 0.0040084, - 0.0020581, - 0.0215536, - 0.0086389, - -0.0076686, - 0.0215532, - -0.0073534, - 0.0075913, - 0.019993, - -0.0073533, - 0.0075914, - 0.0199934, - 0.008639, - -0.0076686, - 0.0199917, - -0.022074, - -0.0267155, - 0.0199921, - -0.0219691, - -0.0049093, - 0.0215522, - -0.0234356, - -0.0049093, - 0.0215518, - -0.0234657, - -0.0267154, - 0.01783, - 0.010375, - 0.0064451, - 0.0178299, - 0.0122866, - -0.0024948, - 0.0178295, - 0.0073452, - -0.0101484, - 0.0178291, - -0.0016231, - -0.0120796, - 0.0178288, - -0.0092963, - -0.0071098, - 0.0178289, - -0.0112079, - 0.0018301, - 0.0178293, - -0.0062097, - 0.0095229, - 0.0178297, - 0.0027019, - 0.0114149, - 0.0199938, - 0.0103749, - 0.006445, - 0.0199937, - 0.0122865, - -0.0024949, - 0.0199933, - 0.0073451, - -0.0101485, - 0.0199929, - -0.0016232, - -0.0120796, - 0.0199926, - -0.0092964, - -0.0071098, - 0.0199927, - -0.011208, - 0.0018301, - 0.0199931, - -0.0062098, - 0.0095228, - 0.0199936, - 0.0027017, - 0.0114148, - -0.0203429, - -0.0200312, - -0.004908, - -0.0219031, - -0.0200311, - -0.004908, - 0.0215523, - -0.0200326, - -0.0049095, - 0.0199922, - -0.0200326, - -0.0049094, - -0.0203438, - -0.0110511, - -0.0267146, - -0.0219039, - -0.011051, - -0.0267146, - 0.0215523, - -0.0110525, - -0.0267161, - 0.0199921, - -0.0110525, - -0.026716, - -0.0064423, - -0.104224, - -0.0026473, - -0.0064414, - -0.104225, - -0.0293459, - -0.0064409, - -0.0256598, - -0.0026501, - -0.00644, - -0.0256608, - -0.0293486, - -0.0022148, - -0.0256608, - -0.0293485, - -0.0022157, - -0.0256599, - -0.00265, - -0.0022162, - -0.104225, - -0.0293458, - -0.0022171, - -0.104224, - -0.0026472 - ], - "faces": [ - 2, - 13, - 0, - 1, - 0, - 2, - 2, - 0, - 13, - 0, - 2, - 11, - 13, - 1, - 0, - 2, - 2, - 13, - 12, - 0, - 2, - 11, - 1, - 3, - 0, - 2, - 4, - 2, - 12, - 0, - 2, - 9, - 11, - 3, - 0, - 2, - 4, - 12, - 10, - 0, - 2, - 9, - 3, - 5, - 0, - 2, - 6, - 4, - 10, - 0, - 2, - 7, - 9, - 5, - 0, - 2, - 6, - 10, - 8, - 0, - 2, - 5, - 21, - 7, - 0, - 2, - 8, - 22, - 6, - 0, - 2, - 7, - 21, - 25, - 0, - 2, - 26, - 22, - 8, - 0, - 2, - 7, - 25, - 9, - 0, - 2, - 10, - 26, - 8, - 0, - 2, - 21, - 23, - 27, - 0, - 2, - 28, - 24, - 22, - 0, - 2, - 41, - 21, - 27, - 0, - 2, - 28, - 22, - 42, - 0, - 2, - 14, - 53, - 15, - 0, - 2, - 16, - 53, - 14, - 0, - 2, - 15, - 53, - 17, - 0, - 2, - 18, - 53, - 16, - 0, - 2, - 17, - 53, - 19, - 0, - 2, - 20, - 53, - 18, - 0, - 2, - 19, - 53, - 23, - 0, - 2, - 24, - 53, - 20, - 0, - 2, - 23, - 53, - 27, - 0, - 2, - 28, - 53, - 24, - 0, - 2, - 27, - 138, - 29, - 0, - 2, - 139, - 28, - 30, - 0, - 2, - 41, - 126, - 43, - 0, - 2, - 127, - 42, - 44, - 0, - 2, - 51, - 126, - 128, - 0, - 2, - 127, - 51, - 129, - 0, - 2, - 51, - 44, - 50, - 0, - 2, - 51, - 127, - 44, - 0, - 2, - 43, - 51, - 50, - 0, - 2, - 43, - 126, - 51, - 0, - 2, - 139, - 129, - 52, - 0, - 2, - 129, - 51, - 52, - 0, - 2, - 51, - 128, - 52, - 0, - 2, - 128, - 138, - 52, - 0, - 2, - 52, - 53, - 139, - 0, - 2, - 139, - 53, - 28, - 0, - 2, - 27, - 53, - 138, - 0, - 2, - 138, - 53, - 52, - 0, - 2, - 131, - 129, - 137, - 0, - 2, - 129, - 139, - 137, - 0, - 2, - 138, - 128, - 136, - 0, - 2, - 128, - 130, - 136, - 0, - 2, - 133, - 131, - 135, - 0, - 2, - 131, - 137, - 135, - 0, - 2, - 136, - 130, - 134, - 0, - 2, - 134, - 130, - 132, - 0, - 2, - 139, - 32, - 137, - 0, - 2, - 139, - 30, - 32, - 0, - 2, - 31, - 29, - 138, - 0, - 2, - 31, - 138, - 136, - 0, - 2, - 137, - 34, - 135, - 0, - 2, - 137, - 32, - 34, - 0, - 2, - 33, - 136, - 134, - 0, - 2, - 33, - 31, - 136, - 0, - 2, - 135, - 36, - 133, - 0, - 2, - 135, - 34, - 36, - 0, - 2, - 35, - 134, - 132, - 0, - 2, - 35, - 33, - 134, - 0, - 2, - 133, - 38, - 131, - 0, - 2, - 133, - 36, - 38, - 0, - 2, - 37, - 132, - 130, - 0, - 2, - 37, - 35, - 132, - 0, - 2, - 131, - 40, - 129, - 0, - 2, - 131, - 38, - 40, - 0, - 2, - 39, - 130, - 128, - 0, - 2, - 39, - 37, - 130, - 0, - 2, - 127, - 40, - 42, - 0, - 2, - 127, - 129, - 40, - 0, - 2, - 39, - 126, - 41, - 0, - 2, - 39, - 128, - 126, - 0, - 2, - 40, - 30, - 42, - 0, - 2, - 42, - 30, - 28, - 0, - 2, - 27, - 29, - 41, - 0, - 2, - 41, - 29, - 39, - 0, - 2, - 49, - 50, - 46, - 0, - 2, - 46, - 50, - 44, - 0, - 2, - 43, - 50, - 45, - 0, - 2, - 45, - 50, - 49, - 0, - 2, - 44, - 22, - 26, - 0, - 2, - 44, - 42, - 22, - 0, - 2, - 21, - 43, - 25, - 0, - 2, - 21, - 41, - 43, - 0, - 2, - 44, - 26, - 46, - 0, - 2, - 46, - 26, - 10, - 0, - 2, - 9, - 25, - 45, - 0, - 2, - 45, - 25, - 43, - 0, - 2, - 49, - 48, - 13, - 0, - 2, - 13, - 48, - 12, - 0, - 2, - 11, - 47, - 13, - 0, - 2, - 13, - 47, - 49, - 0, - 2, - 48, - 46, - 12, - 0, - 2, - 12, - 46, - 10, - 0, - 2, - 9, - 45, - 11, - 0, - 2, - 11, - 45, - 47, - 0, - 2, - 24, - 20, - 22, - 0, - 2, - 22, - 20, - 6, - 0, - 2, - 5, - 19, - 21, - 0, - 2, - 21, - 19, - 23, - 0, - 2, - 20, - 4, - 6, - 0, - 2, - 20, - 18, - 4, - 0, - 2, - 3, - 19, - 5, - 0, - 2, - 3, - 17, - 19, - 0, - 2, - 18, - 2, - 4, - 0, - 2, - 18, - 16, - 2, - 0, - 2, - 1, - 17, - 3, - 0, - 2, - 1, - 15, - 17, - 0, - 2, - 0, - 16, - 14, - 0, - 2, - 0, - 2, - 16, - 0, - 2, - 0, - 15, - 1, - 0, - 2, - 0, - 14, - 15, - 0, - 2, - 45, - 49, - 47, - 0, - 2, - 46, - 48, - 49, - 0, - 2, - 37, - 39, - 29, - 0, - 2, - 37, - 29, - 31, - 0, - 2, - 35, - 37, - 31, - 0, - 2, - 35, - 31, - 33, - 0, - 2, - 38, - 30, - 40, - 0, - 2, - 38, - 32, - 30, - 0, - 2, - 36, - 32, - 38, - 0, - 2, - 36, - 34, - 32, - 0, - 2, - 150, - 151, - 152, - 1, - 2, - 155, - 148, - 154, - 1, - 2, - 164, - 171, - 165, - 1, - 2, - 169, - 168, - 167, - 1, - 2, - 181, - 187, - 180, - 1, - 2, - 183, - 184, - 185, - 1, - 2, - 192, - 190, - 191, - 1, - 2, - 194, - 195, - 188, - 1, - 2, - 204, - 205, - 211, - 1, - 2, - 209, - 207, - 208, - 1, - 2, - 161, - 220, - 159, - 1, - 2, - 220, - 158, - 159, - 1, - 2, - 157, - 221, - 156, - 1, - 2, - 221, - 162, - 156, - 1, - 2, - 202, - 203, - 222, - 1, - 2, - 222, - 203, - 197, - 1, - 2, - 198, - 200, - 223, - 1, - 2, - 223, - 200, - 201, - 1, - 2, - 159, - 224, - 161, - 1, - 2, - 224, - 160, - 161, - 1, - 2, - 163, - 225, - 162, - 1, - 2, - 225, - 156, - 162, - 1, - 2, - 196, - 197, - 226, - 1, - 2, - 226, - 197, - 203, - 1, - 2, - 200, - 198, - 227, - 1, - 2, - 227, - 198, - 199, - 1, - 2, - 227, - 226, - 200, - 1, - 2, - 200, - 226, - 203, - 1, - 2, - 199, - 226, - 227, - 1, - 2, - 199, - 196, - 226, - 1, - 2, - 225, - 163, - 160, - 1, - 2, - 225, - 160, - 224, - 1, - 2, - 156, - 225, - 159, - 1, - 2, - 225, - 224, - 159, - 1, - 2, - 222, - 201, - 202, - 1, - 2, - 222, - 223, - 201, - 1, - 2, - 197, - 223, - 222, - 1, - 2, - 197, - 198, - 223, - 1, - 2, - 220, - 161, - 162, - 1, - 2, - 220, - 162, - 221, - 1, - 2, - 158, - 220, - 221, - 1, - 2, - 158, - 221, - 157, - 1, - 2, - 218, - 217, - 215, - 1, - 2, - 217, - 216, - 215, - 1, - 2, - 219, - 218, - 215, - 1, - 2, - 219, - 215, - 214, - 1, - 2, - 212, - 219, - 214, - 1, - 2, - 212, - 214, - 213, - 1, - 2, - 210, - 207, - 209, - 1, - 2, - 210, - 206, - 207, - 1, - 2, - 205, - 210, - 211, - 1, - 2, - 205, - 206, - 210, - 1, - 2, - 189, - 194, - 188, - 1, - 2, - 189, - 193, - 194, - 1, - 2, - 192, - 189, - 190, - 1, - 2, - 192, - 193, - 189, - 1, - 2, - 199, - 197, - 196, - 1, - 2, - 199, - 198, - 197, - 1, - 2, - 204, - 211, - 219, - 1, - 2, - 204, - 219, - 212, - 1, - 2, - 212, - 213, - 205, - 1, - 2, - 212, - 205, - 204, - 1, - 2, - 213, - 214, - 206, - 1, - 2, - 213, - 206, - 205, - 1, - 2, - 214, - 215, - 207, - 1, - 2, - 214, - 207, - 206, - 1, - 2, - 215, - 216, - 208, - 1, - 2, - 215, - 208, - 207, - 1, - 2, - 216, - 217, - 209, - 1, - 2, - 216, - 209, - 208, - 1, - 2, - 217, - 218, - 210, - 1, - 2, - 217, - 210, - 209, - 1, - 2, - 218, - 219, - 211, - 1, - 2, - 218, - 211, - 210, - 1, - 2, - 141, - 148, - 140, - 1, - 2, - 141, - 149, - 148, - 1, - 2, - 149, - 142, - 150, - 1, - 2, - 149, - 141, - 142, - 1, - 2, - 150, - 143, - 151, - 1, - 2, - 150, - 142, - 143, - 1, - 2, - 151, - 144, - 152, - 1, - 2, - 151, - 143, - 144, - 1, - 2, - 152, - 145, - 153, - 1, - 2, - 152, - 144, - 145, - 1, - 2, - 153, - 146, - 154, - 1, - 2, - 153, - 145, - 146, - 1, - 2, - 154, - 147, - 155, - 1, - 2, - 154, - 146, - 147, - 1, - 2, - 140, - 155, - 147, - 1, - 2, - 140, - 148, - 155, - 1, - 2, - 162, - 161, - 160, - 1, - 2, - 162, - 160, - 163, - 1, - 2, - 179, - 164, - 172, - 1, - 2, - 179, - 171, - 164, - 1, - 2, - 165, - 172, - 164, - 1, - 2, - 165, - 173, - 172, - 1, - 2, - 166, - 173, - 165, - 1, - 2, - 166, - 174, - 173, - 1, - 2, - 167, - 174, - 166, - 1, - 2, - 167, - 175, - 174, - 1, - 2, - 168, - 175, - 167, - 1, - 2, - 168, - 176, - 175, - 1, - 2, - 169, - 176, - 168, - 1, - 2, - 169, - 177, - 176, - 1, - 2, - 170, - 178, - 169, - 1, - 2, - 169, - 178, - 177, - 1, - 2, - 171, - 178, - 170, - 1, - 2, - 171, - 179, - 178, - 1, - 2, - 186, - 182, - 183, - 1, - 2, - 186, - 183, - 185, - 1, - 2, - 181, - 182, - 186, - 1, - 2, - 181, - 186, - 187, - 1, - 2, - 170, - 169, - 167, - 1, - 2, - 170, - 167, - 166, - 1, - 2, - 165, - 171, - 170, - 1, - 2, - 165, - 170, - 166, - 1, - 2, - 149, - 153, - 154, - 1, - 2, - 149, - 154, - 148, - 1, - 2, - 152, - 153, - 149, - 1, - 2, - 152, - 149, - 150, - 1, - 2, - 147, - 145, - 140, - 1, - 2, - 147, - 146, - 145, - 1, - 2, - 140, - 144, - 141, - 1, - 2, - 140, - 145, - 144, - 1, - 2, - 143, - 142, - 144, - 1, - 2, - 144, - 142, - 141, - 1, - 2, - 182, - 192, - 183, - 1, - 2, - 182, - 193, - 192, - 1, - 2, - 183, - 191, - 184, - 1, - 2, - 183, - 192, - 191, - 1, - 2, - 184, - 190, - 185, - 1, - 2, - 184, - 191, - 190, - 1, - 2, - 185, - 189, - 186, - 1, - 2, - 185, - 190, - 189, - 1, - 2, - 186, - 188, - 187, - 1, - 2, - 186, - 189, - 188, - 1, - 2, - 180, - 188, - 195, - 1, - 2, - 180, - 187, - 188, - 1, - 2, - 180, - 194, - 181, - 1, - 2, - 180, - 195, - 194, - 1, - 2, - 181, - 193, - 182, - 1, - 2, - 181, - 194, - 193, - 1, - 2, - 157, - 201, - 158, - 1, - 2, - 157, - 202, - 201, - 1, - 2, - 156, - 200, - 203, - 1, - 2, - 156, - 159, - 200, - 1, - 2, - 158, - 200, - 159, - 1, - 2, - 158, - 201, - 200, - 1, - 2, - 156, - 202, - 157, - 1, - 2, - 156, - 203, - 202, - 1, - 2, - 125, - 55, - 57, - 1, - 2, - 125, - 75, - 55, - 1, - 2, - 54, - 124, - 56, - 1, - 2, - 54, - 74, - 124, - 1, - 2, - 123, - 125, - 59, - 1, - 2, - 59, - 125, - 57, - 1, - 2, - 56, - 124, - 58, - 1, - 2, - 58, - 124, - 122, - 1, - 2, - 121, - 123, - 61, - 1, - 2, - 61, - 123, - 59, - 1, - 2, - 58, - 122, - 60, - 1, - 2, - 60, - 122, - 120, - 1, - 2, - 119, - 61, - 63, - 1, - 2, - 119, - 121, - 61, - 1, - 2, - 60, - 118, - 62, - 1, - 2, - 60, - 120, - 118, - 1, - 2, - 117, - 119, - 65, - 1, - 2, - 65, - 119, - 63, - 1, - 2, - 62, - 118, - 64, - 1, - 2, - 64, - 118, - 116, - 1, - 2, - 101, - 117, - 67, - 1, - 2, - 67, - 117, - 65, - 1, - 2, - 64, - 116, - 66, - 1, - 2, - 66, - 116, - 100, - 1, - 2, - 75, - 87, - 55, - 1, - 2, - 75, - 115, - 87, - 1, - 2, - 86, - 74, - 54, - 1, - 2, - 86, - 114, - 74, - 1, - 2, - 115, - 113, - 87, - 1, - 2, - 87, - 113, - 89, - 1, - 2, - 88, - 112, - 86, - 1, - 2, - 86, - 112, - 114, - 1, - 2, - 113, - 91, - 89, - 1, - 2, - 113, - 111, - 91, - 1, - 2, - 90, - 112, - 88, - 1, - 2, - 90, - 110, - 112, - 1, - 2, - 111, - 93, - 91, - 1, - 2, - 111, - 109, - 93, - 1, - 2, - 92, - 110, - 90, - 1, - 2, - 92, - 108, - 110, - 1, - 2, - 109, - 107, - 93, - 1, - 2, - 93, - 107, - 95, - 1, - 2, - 94, - 106, - 92, - 1, - 2, - 92, - 106, - 108, - 1, - 2, - 107, - 97, - 95, - 1, - 2, - 107, - 105, - 97, - 1, - 2, - 96, - 106, - 94, - 1, - 2, - 96, - 104, - 106, - 1, - 2, - 105, - 99, - 97, - 1, - 2, - 105, - 103, - 99, - 1, - 2, - 98, - 104, - 96, - 1, - 2, - 98, - 102, - 104, - 1, - 2, - 103, - 67, - 99, - 1, - 2, - 103, - 101, - 67, - 1, - 2, - 66, - 102, - 98, - 1, - 2, - 66, - 100, - 102, - 1, - 2, - 85, - 83, - 77, - 1, - 2, - 85, - 77, - 101, - 1, - 2, - 76, - 82, - 84, - 1, - 2, - 76, - 84, - 100, - 1, - 2, - 83, - 81, - 77, - 1, - 2, - 81, - 79, - 77, - 1, - 2, - 78, - 80, - 76, - 1, - 2, - 80, - 82, - 76, - 1, - 2, - 97, - 67, - 65, - 1, - 2, - 97, - 99, - 67, - 1, - 2, - 66, - 96, - 64, - 1, - 2, - 66, - 98, - 96, - 1, - 2, - 95, - 65, - 63, - 1, - 2, - 95, - 97, - 65, - 1, - 2, - 64, - 94, - 62, - 1, - 2, - 64, - 96, - 94, - 1, - 2, - 93, - 63, - 61, - 1, - 2, - 93, - 95, - 63, - 1, - 2, - 62, - 92, - 60, - 1, - 2, - 62, - 94, - 92, - 1, - 2, - 91, - 61, - 59, - 1, - 2, - 91, - 93, - 61, - 1, - 2, - 60, - 90, - 58, - 1, - 2, - 60, - 92, - 90, - 1, - 2, - 89, - 59, - 57, - 1, - 2, - 89, - 91, - 59, - 1, - 2, - 58, - 88, - 56, - 1, - 2, - 58, - 90, - 88, - 1, - 2, - 87, - 57, - 55, - 1, - 2, - 87, - 89, - 57, - 1, - 2, - 56, - 86, - 54, - 1, - 2, - 56, - 88, - 86, - 1, - 2, - 83, - 73, - 72, - 1, - 2, - 83, - 85, - 73, - 1, - 2, - 73, - 82, - 72, - 1, - 2, - 73, - 84, - 82, - 1, - 2, - 81, - 72, - 71, - 1, - 2, - 81, - 83, - 72, - 1, - 2, - 72, - 80, - 71, - 1, - 2, - 72, - 82, - 80, - 1, - 2, - 79, - 71, - 70, - 1, - 2, - 79, - 81, - 71, - 1, - 2, - 71, - 78, - 70, - 1, - 2, - 71, - 80, - 78, - 1, - 2, - 77, - 79, - 69, - 1, - 2, - 69, - 79, - 70, - 1, - 2, - 70, - 78, - 69, - 1, - 2, - 69, - 78, - 76, - 1, - 2, - 101, - 69, - 68, - 1, - 2, - 101, - 77, - 69, - 1, - 2, - 69, - 100, - 68, - 1, - 2, - 69, - 76, - 100, - 1, - 2, - 232, - 233, - 235, - 1, - 2, - 232, - 235, - 234, - 1, - 2, - 230, - 228, - 235, - 1, - 2, - 230, - 235, - 233, - 1, - 2, - 231, - 230, - 233, - 1, - 2, - 231, - 233, - 232, - 1, - 2, - 229, - 231, - 232, - 1, - 2, - 229, - 232, - 234, - 1, - 2, - 228, - 229, - 235, - 1, - 2, - 229, - 234, - 235, - 1, - 2, - 228, - 230, - 231, - 1, - 2, - 228, - 231, - 229, - 1 - ] + "metadata": { + "formatVersion": 3 + }, + "materials": [ + { + "DbgColor": 15658734, + "DbgIndex": 0, + "DbgName": "Plastic", + "colorDiffuse": [ + 0.301961, + 0.301961, + 0.301961 + ], + "colorSpecular": [ + 0.401201, + 0.401201, + 0.401201 + ], + "shading": "Lambert", + "specularCoef": 50, + "opacity": 1.0, + "vertexColors": false + }, + { + "DbgColor": 15658734, + "DbgIndex": 1, + "DbgName": "Metal", + "colorDiffuse": [ + 0.7, + 0.7, + 0.7 + ], + "colorSpecular": [ + 0.168737, + 0.168737, + 0.168737 + ], + "shading": "Lambert", + "specularCoef": 50, + "opacity": 1.0, + "vertexColors": false + } + ], + "normals": [], + "colors": [], + "uvs": [], + "vertices": [ + -0.0213191, + -0.0889727, + -0.0159976, + -0.0211907, + -0.0894324, + -0.0247745, + -0.0211913, + -0.0894318, + -0.0072208, + -0.0201442, + -0.0931769, + -0.031888, + -0.0201453, + -0.0931758, + -0.0001069, + -0.0178828, + -0.101269, + -0.0354476, + -0.0178842, + -0.101267, + 0.0034534, + -0.0133858, + -0.11736, + -0.0357452, + -0.0133871, + -0.117359, + 0.0037524, + -0.01128, + -0.124895, + -0.0340932, + -0.0112813, + -0.124893, + 0.0021011, + -0.0102127, + -0.128713, + -0.0294718, + -0.0102137, + -0.128712, + -0.0025199, + -0.0101165, + -0.129057, + -0.0159958, + -0.0247639, + -0.0160598, + -0.0160003, + -0.0246355, + -0.0165196, + -0.0288777, + -0.0246364, + -0.0165187, + -0.0031229, + -0.0235891, + -0.0222592, + -0.0318905, + -0.0235902, + -0.0222581, + -0.0001096, + -0.0213276, + -0.0232773, + -0.0354503, + -0.021329, + -0.0232759, + 0.0034504, + -0.0084512, + -0.095859, + -0.0414497, + -0.008453, + -0.0958572, + 0.0094558, + -0.018995, + -0.0243814, + -0.0379737, + -0.0189965, + -0.0243799, + 0.0059741, + -0.0084516, + -0.114722, + -0.0386015, + -0.0084531, + -0.114721, + 0.0066089, + -0.0033967, + -0.0243817, + -0.0379737, + -0.0033982, + -0.0243802, + 0.0059752, + -0.003397, + -0.0444906, + -0.0389514, + -0.0033986, + -0.044489, + 0.0069543, + 0.0014999, + -0.0548169, + -0.0394535, + 0.0014983, + -0.0548152, + 0.0074574, + 0.0060342, + -0.0578967, + -0.0396032, + 0.0060326, + -0.057895, + 0.0076077, + 0.0058524, + -0.0828969, + -0.0408187, + 0.0058507, + -0.0828952, + 0.0088249, + 0.0004111, + -0.084165, + -0.0408804, + 0.0004094, + -0.0841632, + 0.0088863, + -0.0035792, + -0.0870635, + -0.0410213, + -0.0035809, + -0.0870617, + 0.0090271, + -0.0052413, + -0.0958591, + -0.0414497, + -0.0052431, + -0.0958573, + 0.009456, + -0.0052416, + -0.114722, + -0.0386015, + -0.0052432, + -0.114721, + 0.0066091, + -0.0052418, + -0.124895, + -0.0340932, + -0.005243, + -0.124893, + 0.0021015, + -0.0052418, + -0.128713, + -0.0294718, + -0.0052428, + -0.128713, + -0.0025195, + -0.0052419, + -0.129057, + -0.0159957, + -0.0052416, + -0.114722, + -0.0159962, + -0.0052413, + -0.0958582, + -0.0159968, + -0.003397, + -0.0444898, + -0.0159986, + -0.0033967, + -0.0243809, + -0.0159993, + 0.0116687, + -0.0256611, + -0.0293486, + 0.0116677, + -0.0256601, + -0.0026488, + 0.0117097, + -0.0319492, + -0.0293484, + 0.0117088, + -0.0319483, + -0.0026486, + -2.7e-06, + -0.0384566, + -0.0293482, + -3.6e-06, + -0.0384556, + -0.0026492, + -0.0001606, + -0.051074, + -0.0293477, + -0.0001615, + -0.051073, + -0.0026487, + 0.0052634, + -0.0576914, + -0.0293475, + 0.0052625, + -0.0576904, + -0.0026481, + 0.0052423, + -0.0878154, + -0.0293464, + 0.0052414, + -0.0878145, + -0.0026471, + -0.0001615, + -0.104225, + -0.0293459, + -0.0001625, + -0.104224, + -0.0026469, + -0.0066074, + -0.104286, + -0.0159966, + -0.0025892, + -0.114613, + -0.0159961, + 0.0086911, + -0.114558, + -0.0159957, + 0.0086705, + -0.116568, + -0.0159956, + -0.003803, + -0.116663, + -0.0159961, + -0.0073549, + -0.108613, + -0.0159965, + -0.00644, + -0.0256608, + -0.0293486, + -0.0064409, + -0.0256598, + -0.0026501, + -0.0025892, + -0.114614, + -0.0293455, + -0.0025901, + -0.114613, + -0.0026467, + 0.0086911, + -0.114559, + -0.0293455, + 0.0086901, + -0.114558, + -0.0026459, + 0.0086705, + -0.116568, + -0.0293454, + 0.0086695, + -0.116567, + -0.0026458, + -0.003803, + -0.116664, + -0.0293454, + -0.0038039, + -0.116663, + -0.0026467, + -0.0073549, + -0.108613, + -0.0293457, + -0.0073558, + -0.108612, + -0.0026472, + 0.0116687, + -0.0256611, + -0.0315554, + 0.0116676, + -0.0256601, + -0.000442, + 0.0117097, + -0.0319493, + -0.0315552, + 0.0117086, + -0.0319482, + -0.0004418, + -2.7e-06, + -0.0384566, + -0.0315549, + -3.7e-06, + -0.0384556, + -0.0004424, + -0.0001606, + -0.0510741, + -0.0315545, + -0.0001617, + -0.051073, + -0.0004419, + 0.0052634, + -0.0576914, + -0.0315543, + 0.0052623, + -0.0576904, + -0.0004413, + 0.0052423, + -0.0878155, + -0.0315532, + 0.0052412, + -0.0878144, + -0.0004403, + -0.0001615, + -0.104225, + -0.0315527, + -0.0001626, + -0.104224, + -0.0004401, + -0.0064414, + -0.104225, + -0.0293459, + -0.0064423, + -0.104224, + -0.0026473, + -0.0064414, + -0.104225, + -0.0315526, + -0.0064425, + -0.104224, + -0.0004405, + -0.0064411, + -0.0878153, + -0.0315532, + -0.0064422, + -0.0878142, + -0.0004411, + -0.0064406, + -0.0576912, + -0.0315543, + -0.0064417, + -0.0576902, + -0.0004421, + -0.0064405, + -0.0510739, + -0.0315545, + -0.0064415, + -0.0510729, + -0.0004424, + -0.0064402, + -0.0384565, + -0.0315549, + -0.0064413, + -0.0384554, + -0.0004428, + -0.0064401, + -0.031949, + -0.0315552, + -0.0064412, + -0.0319479, + -0.000443, + -0.00644, + -0.0256608, + -0.0315554, + -0.0064411, + -0.0256597, + -0.0004433, + -0.0064411, + -0.0878152, + -0.0293464, + -0.006442, + -0.0878143, + -0.0026479, + -0.0064406, + -0.0576912, + -0.0293475, + -0.0064415, + -0.0576902, + -0.0026489, + -0.0064405, + -0.0510739, + -0.0293477, + -0.0064414, + -0.0510729, + -0.0026492, + -0.0064402, + -0.0384565, + -0.0293482, + -0.0064412, + -0.0384555, + -0.0026496, + -0.0064401, + -0.0319489, + -0.0293484, + -0.006441, + -0.031948, + -0.0026498, + -0.0052413, + -0.0959551, + -0.0394757, + -0.0052429, + -0.0959534, + 0.007482, + -0.0035792, + -0.0871594, + -0.0390472, + -0.0035808, + -0.0871578, + 0.0070531, + 0.0004111, + -0.0842609, + -0.0389063, + 0.0004095, + -0.0842594, + 0.0069122, + 0.0058524, + -0.0829929, + -0.0388446, + 0.0058508, + -0.0829913, + 0.0068509, + 0.0060342, + -0.0579927, + -0.0376292, + 0.0060327, + -0.0579912, + 0.0056336, + 0.0014999, + -0.0549128, + -0.0374794, + 0.0014984, + -0.0549114, + 0.0054834, + -0.003397, + -0.0445866, + -0.0369774, + -0.0033985, + -0.0445851, + 0.0049802, + -0.0203416, + 0.0027032, + 0.0114162, + -0.0203419, + -0.0062084, + 0.0095242, + -0.0203424, + -0.0112066, + 0.0018315, + -0.0203428, + -0.009295, + -0.0071084, + -0.0203429, + -0.0016218, + -0.0120782, + -0.0203426, + 0.0073465, + -0.0101471, + -0.0203421, + 0.0122879, + -0.0024935, + -0.0203417, + 0.0103763, + 0.0064464, + -0.0181778, + 0.0027031, + 0.0114161, + -0.0181781, + -0.0062084, + 0.0095241, + -0.0181786, + -0.0112066, + 0.0018314, + -0.018179, + -0.009295, + -0.0071085, + -0.0181791, + -0.0016219, + -0.0120783, + -0.0181787, + 0.0073464, + -0.0101472, + -0.0181782, + 0.0122878, + -0.0024936, + -0.0181779, + 0.0103763, + 0.0064464, + -0.0219044, + -0.0234642, + -0.0267139, + -0.0219032, + -0.0234341, + -0.0049078, + -0.020343, + -0.0219677, + -0.0049079, + -0.0203442, + -0.0220726, + -0.0267141, + -0.0203424, + 0.0086404, + -0.0076672, + -0.0203421, + -0.0073519, + 0.0075928, + -0.0219022, + -0.0073519, + 0.0075929, + -0.0219026, + 0.0086404, + -0.0076671, + 0.0111911, + -0.0254366, + -0.0158811, + 0.0078692, + -0.0254369, + -0.0238998, + -0.0001498, + -0.0254368, + -0.0272209, + -0.0081685, + -0.0254364, + -0.0238989, + -0.0114896, + -0.0254358, + -0.0158799, + -0.0081676, + -0.0254355, + -0.0078613, + -0.0001486, + -0.0254356, + -0.0045402, + 0.00787, + -0.0254361, + -0.0078621, + 0.0111912, + -0.0233778, + -0.0158812, + 0.0078692, + -0.0233781, + -0.0238999, + -0.0001498, + -0.023378, + -0.027221, + -0.0081684, + -0.0233776, + -0.023899, + -0.0114895, + -0.023377, + -0.01588, + -0.0081676, + -0.0233767, + -0.0078614, + -0.0001486, + -0.0234348, + -0.0045403, + 0.0078701, + -0.0233773, + -0.0078622, + -0.022345, + 0.0040099, + 0.0020596, + -0.0223451, + 0.0046835, + -0.0010908, + -0.0223453, + 0.0029481, + -0.0037839, + -0.0223454, + -0.0002182, + -0.0044684, + -0.0223454, + -0.0029222, + -0.0027171, + -0.0223453, + -0.0035958, + 0.0004333, + -0.0223451, + -0.0018286, + 0.0031483, + -0.022345, + 0.0013059, + 0.003811, + 0.0219963, + 0.0013044, + 0.0038094, + 0.0219961, + -0.0018302, + 0.0031467, + 0.021996, + -0.0035974, + 0.0004318, + 0.021996, + -0.0029238, + -0.0027186, + 0.021996, + -0.0002197, + -0.00447, + 0.0219962, + 0.0029465, + -0.0037854, + 0.0219963, + 0.004682, + -0.0010923, + 0.0219964, + 0.0040084, + 0.0020581, + 0.0215536, + 0.0086389, + -0.0076686, + 0.0215532, + -0.0073534, + 0.0075913, + 0.019993, + -0.0073533, + 0.0075914, + 0.0199934, + 0.008639, + -0.0076686, + 0.0199917, + -0.022074, + -0.0267155, + 0.0199921, + -0.0219691, + -0.0049093, + 0.0215522, + -0.0234356, + -0.0049093, + 0.0215518, + -0.0234657, + -0.0267154, + 0.01783, + 0.010375, + 0.0064451, + 0.0178299, + 0.0122866, + -0.0024948, + 0.0178295, + 0.0073452, + -0.0101484, + 0.0178291, + -0.0016231, + -0.0120796, + 0.0178288, + -0.0092963, + -0.0071098, + 0.0178289, + -0.0112079, + 0.0018301, + 0.0178293, + -0.0062097, + 0.0095229, + 0.0178297, + 0.0027019, + 0.0114149, + 0.0199938, + 0.0103749, + 0.006445, + 0.0199937, + 0.0122865, + -0.0024949, + 0.0199933, + 0.0073451, + -0.0101485, + 0.0199929, + -0.0016232, + -0.0120796, + 0.0199926, + -0.0092964, + -0.0071098, + 0.0199927, + -0.011208, + 0.0018301, + 0.0199931, + -0.0062098, + 0.0095228, + 0.0199936, + 0.0027017, + 0.0114148, + -0.0203429, + -0.0200312, + -0.004908, + -0.0219031, + -0.0200311, + -0.004908, + 0.0215523, + -0.0200326, + -0.0049095, + 0.0199922, + -0.0200326, + -0.0049094, + -0.0203438, + -0.0110511, + -0.0267146, + -0.0219039, + -0.011051, + -0.0267146, + 0.0215523, + -0.0110525, + -0.0267161, + 0.0199921, + -0.0110525, + -0.026716, + -0.0064423, + -0.104224, + -0.0026473, + -0.0064414, + -0.104225, + -0.0293459, + -0.0064409, + -0.0256598, + -0.0026501, + -0.00644, + -0.0256608, + -0.0293486, + -0.0022148, + -0.0256608, + -0.0293485, + -0.0022157, + -0.0256599, + -0.00265, + -0.0022162, + -0.104225, + -0.0293458, + -0.0022171, + -0.104224, + -0.0026472 + ], + "faces": [ + 2, + 13, + 0, + 1, + 0, + 2, + 2, + 0, + 13, + 0, + 2, + 11, + 13, + 1, + 0, + 2, + 2, + 13, + 12, + 0, + 2, + 11, + 1, + 3, + 0, + 2, + 4, + 2, + 12, + 0, + 2, + 9, + 11, + 3, + 0, + 2, + 4, + 12, + 10, + 0, + 2, + 9, + 3, + 5, + 0, + 2, + 6, + 4, + 10, + 0, + 2, + 7, + 9, + 5, + 0, + 2, + 6, + 10, + 8, + 0, + 2, + 5, + 21, + 7, + 0, + 2, + 8, + 22, + 6, + 0, + 2, + 7, + 21, + 25, + 0, + 2, + 26, + 22, + 8, + 0, + 2, + 7, + 25, + 9, + 0, + 2, + 10, + 26, + 8, + 0, + 2, + 21, + 23, + 27, + 0, + 2, + 28, + 24, + 22, + 0, + 2, + 41, + 21, + 27, + 0, + 2, + 28, + 22, + 42, + 0, + 2, + 14, + 53, + 15, + 0, + 2, + 16, + 53, + 14, + 0, + 2, + 15, + 53, + 17, + 0, + 2, + 18, + 53, + 16, + 0, + 2, + 17, + 53, + 19, + 0, + 2, + 20, + 53, + 18, + 0, + 2, + 19, + 53, + 23, + 0, + 2, + 24, + 53, + 20, + 0, + 2, + 23, + 53, + 27, + 0, + 2, + 28, + 53, + 24, + 0, + 2, + 27, + 138, + 29, + 0, + 2, + 139, + 28, + 30, + 0, + 2, + 41, + 126, + 43, + 0, + 2, + 127, + 42, + 44, + 0, + 2, + 51, + 126, + 128, + 0, + 2, + 127, + 51, + 129, + 0, + 2, + 51, + 44, + 50, + 0, + 2, + 51, + 127, + 44, + 0, + 2, + 43, + 51, + 50, + 0, + 2, + 43, + 126, + 51, + 0, + 2, + 139, + 129, + 52, + 0, + 2, + 129, + 51, + 52, + 0, + 2, + 51, + 128, + 52, + 0, + 2, + 128, + 138, + 52, + 0, + 2, + 52, + 53, + 139, + 0, + 2, + 139, + 53, + 28, + 0, + 2, + 27, + 53, + 138, + 0, + 2, + 138, + 53, + 52, + 0, + 2, + 131, + 129, + 137, + 0, + 2, + 129, + 139, + 137, + 0, + 2, + 138, + 128, + 136, + 0, + 2, + 128, + 130, + 136, + 0, + 2, + 133, + 131, + 135, + 0, + 2, + 131, + 137, + 135, + 0, + 2, + 136, + 130, + 134, + 0, + 2, + 134, + 130, + 132, + 0, + 2, + 139, + 32, + 137, + 0, + 2, + 139, + 30, + 32, + 0, + 2, + 31, + 29, + 138, + 0, + 2, + 31, + 138, + 136, + 0, + 2, + 137, + 34, + 135, + 0, + 2, + 137, + 32, + 34, + 0, + 2, + 33, + 136, + 134, + 0, + 2, + 33, + 31, + 136, + 0, + 2, + 135, + 36, + 133, + 0, + 2, + 135, + 34, + 36, + 0, + 2, + 35, + 134, + 132, + 0, + 2, + 35, + 33, + 134, + 0, + 2, + 133, + 38, + 131, + 0, + 2, + 133, + 36, + 38, + 0, + 2, + 37, + 132, + 130, + 0, + 2, + 37, + 35, + 132, + 0, + 2, + 131, + 40, + 129, + 0, + 2, + 131, + 38, + 40, + 0, + 2, + 39, + 130, + 128, + 0, + 2, + 39, + 37, + 130, + 0, + 2, + 127, + 40, + 42, + 0, + 2, + 127, + 129, + 40, + 0, + 2, + 39, + 126, + 41, + 0, + 2, + 39, + 128, + 126, + 0, + 2, + 40, + 30, + 42, + 0, + 2, + 42, + 30, + 28, + 0, + 2, + 27, + 29, + 41, + 0, + 2, + 41, + 29, + 39, + 0, + 2, + 49, + 50, + 46, + 0, + 2, + 46, + 50, + 44, + 0, + 2, + 43, + 50, + 45, + 0, + 2, + 45, + 50, + 49, + 0, + 2, + 44, + 22, + 26, + 0, + 2, + 44, + 42, + 22, + 0, + 2, + 21, + 43, + 25, + 0, + 2, + 21, + 41, + 43, + 0, + 2, + 44, + 26, + 46, + 0, + 2, + 46, + 26, + 10, + 0, + 2, + 9, + 25, + 45, + 0, + 2, + 45, + 25, + 43, + 0, + 2, + 49, + 48, + 13, + 0, + 2, + 13, + 48, + 12, + 0, + 2, + 11, + 47, + 13, + 0, + 2, + 13, + 47, + 49, + 0, + 2, + 48, + 46, + 12, + 0, + 2, + 12, + 46, + 10, + 0, + 2, + 9, + 45, + 11, + 0, + 2, + 11, + 45, + 47, + 0, + 2, + 24, + 20, + 22, + 0, + 2, + 22, + 20, + 6, + 0, + 2, + 5, + 19, + 21, + 0, + 2, + 21, + 19, + 23, + 0, + 2, + 20, + 4, + 6, + 0, + 2, + 20, + 18, + 4, + 0, + 2, + 3, + 19, + 5, + 0, + 2, + 3, + 17, + 19, + 0, + 2, + 18, + 2, + 4, + 0, + 2, + 18, + 16, + 2, + 0, + 2, + 1, + 17, + 3, + 0, + 2, + 1, + 15, + 17, + 0, + 2, + 0, + 16, + 14, + 0, + 2, + 0, + 2, + 16, + 0, + 2, + 0, + 15, + 1, + 0, + 2, + 0, + 14, + 15, + 0, + 2, + 45, + 49, + 47, + 0, + 2, + 46, + 48, + 49, + 0, + 2, + 37, + 39, + 29, + 0, + 2, + 37, + 29, + 31, + 0, + 2, + 35, + 37, + 31, + 0, + 2, + 35, + 31, + 33, + 0, + 2, + 38, + 30, + 40, + 0, + 2, + 38, + 32, + 30, + 0, + 2, + 36, + 32, + 38, + 0, + 2, + 36, + 34, + 32, + 0, + 2, + 150, + 151, + 152, + 1, + 2, + 155, + 148, + 154, + 1, + 2, + 164, + 171, + 165, + 1, + 2, + 169, + 168, + 167, + 1, + 2, + 181, + 187, + 180, + 1, + 2, + 183, + 184, + 185, + 1, + 2, + 192, + 190, + 191, + 1, + 2, + 194, + 195, + 188, + 1, + 2, + 204, + 205, + 211, + 1, + 2, + 209, + 207, + 208, + 1, + 2, + 161, + 220, + 159, + 1, + 2, + 220, + 158, + 159, + 1, + 2, + 157, + 221, + 156, + 1, + 2, + 221, + 162, + 156, + 1, + 2, + 202, + 203, + 222, + 1, + 2, + 222, + 203, + 197, + 1, + 2, + 198, + 200, + 223, + 1, + 2, + 223, + 200, + 201, + 1, + 2, + 159, + 224, + 161, + 1, + 2, + 224, + 160, + 161, + 1, + 2, + 163, + 225, + 162, + 1, + 2, + 225, + 156, + 162, + 1, + 2, + 196, + 197, + 226, + 1, + 2, + 226, + 197, + 203, + 1, + 2, + 200, + 198, + 227, + 1, + 2, + 227, + 198, + 199, + 1, + 2, + 227, + 226, + 200, + 1, + 2, + 200, + 226, + 203, + 1, + 2, + 199, + 226, + 227, + 1, + 2, + 199, + 196, + 226, + 1, + 2, + 225, + 163, + 160, + 1, + 2, + 225, + 160, + 224, + 1, + 2, + 156, + 225, + 159, + 1, + 2, + 225, + 224, + 159, + 1, + 2, + 222, + 201, + 202, + 1, + 2, + 222, + 223, + 201, + 1, + 2, + 197, + 223, + 222, + 1, + 2, + 197, + 198, + 223, + 1, + 2, + 220, + 161, + 162, + 1, + 2, + 220, + 162, + 221, + 1, + 2, + 158, + 220, + 221, + 1, + 2, + 158, + 221, + 157, + 1, + 2, + 218, + 217, + 215, + 1, + 2, + 217, + 216, + 215, + 1, + 2, + 219, + 218, + 215, + 1, + 2, + 219, + 215, + 214, + 1, + 2, + 212, + 219, + 214, + 1, + 2, + 212, + 214, + 213, + 1, + 2, + 210, + 207, + 209, + 1, + 2, + 210, + 206, + 207, + 1, + 2, + 205, + 210, + 211, + 1, + 2, + 205, + 206, + 210, + 1, + 2, + 189, + 194, + 188, + 1, + 2, + 189, + 193, + 194, + 1, + 2, + 192, + 189, + 190, + 1, + 2, + 192, + 193, + 189, + 1, + 2, + 199, + 197, + 196, + 1, + 2, + 199, + 198, + 197, + 1, + 2, + 204, + 211, + 219, + 1, + 2, + 204, + 219, + 212, + 1, + 2, + 212, + 213, + 205, + 1, + 2, + 212, + 205, + 204, + 1, + 2, + 213, + 214, + 206, + 1, + 2, + 213, + 206, + 205, + 1, + 2, + 214, + 215, + 207, + 1, + 2, + 214, + 207, + 206, + 1, + 2, + 215, + 216, + 208, + 1, + 2, + 215, + 208, + 207, + 1, + 2, + 216, + 217, + 209, + 1, + 2, + 216, + 209, + 208, + 1, + 2, + 217, + 218, + 210, + 1, + 2, + 217, + 210, + 209, + 1, + 2, + 218, + 219, + 211, + 1, + 2, + 218, + 211, + 210, + 1, + 2, + 141, + 148, + 140, + 1, + 2, + 141, + 149, + 148, + 1, + 2, + 149, + 142, + 150, + 1, + 2, + 149, + 141, + 142, + 1, + 2, + 150, + 143, + 151, + 1, + 2, + 150, + 142, + 143, + 1, + 2, + 151, + 144, + 152, + 1, + 2, + 151, + 143, + 144, + 1, + 2, + 152, + 145, + 153, + 1, + 2, + 152, + 144, + 145, + 1, + 2, + 153, + 146, + 154, + 1, + 2, + 153, + 145, + 146, + 1, + 2, + 154, + 147, + 155, + 1, + 2, + 154, + 146, + 147, + 1, + 2, + 140, + 155, + 147, + 1, + 2, + 140, + 148, + 155, + 1, + 2, + 162, + 161, + 160, + 1, + 2, + 162, + 160, + 163, + 1, + 2, + 179, + 164, + 172, + 1, + 2, + 179, + 171, + 164, + 1, + 2, + 165, + 172, + 164, + 1, + 2, + 165, + 173, + 172, + 1, + 2, + 166, + 173, + 165, + 1, + 2, + 166, + 174, + 173, + 1, + 2, + 167, + 174, + 166, + 1, + 2, + 167, + 175, + 174, + 1, + 2, + 168, + 175, + 167, + 1, + 2, + 168, + 176, + 175, + 1, + 2, + 169, + 176, + 168, + 1, + 2, + 169, + 177, + 176, + 1, + 2, + 170, + 178, + 169, + 1, + 2, + 169, + 178, + 177, + 1, + 2, + 171, + 178, + 170, + 1, + 2, + 171, + 179, + 178, + 1, + 2, + 186, + 182, + 183, + 1, + 2, + 186, + 183, + 185, + 1, + 2, + 181, + 182, + 186, + 1, + 2, + 181, + 186, + 187, + 1, + 2, + 170, + 169, + 167, + 1, + 2, + 170, + 167, + 166, + 1, + 2, + 165, + 171, + 170, + 1, + 2, + 165, + 170, + 166, + 1, + 2, + 149, + 153, + 154, + 1, + 2, + 149, + 154, + 148, + 1, + 2, + 152, + 153, + 149, + 1, + 2, + 152, + 149, + 150, + 1, + 2, + 147, + 145, + 140, + 1, + 2, + 147, + 146, + 145, + 1, + 2, + 140, + 144, + 141, + 1, + 2, + 140, + 145, + 144, + 1, + 2, + 143, + 142, + 144, + 1, + 2, + 144, + 142, + 141, + 1, + 2, + 182, + 192, + 183, + 1, + 2, + 182, + 193, + 192, + 1, + 2, + 183, + 191, + 184, + 1, + 2, + 183, + 192, + 191, + 1, + 2, + 184, + 190, + 185, + 1, + 2, + 184, + 191, + 190, + 1, + 2, + 185, + 189, + 186, + 1, + 2, + 185, + 190, + 189, + 1, + 2, + 186, + 188, + 187, + 1, + 2, + 186, + 189, + 188, + 1, + 2, + 180, + 188, + 195, + 1, + 2, + 180, + 187, + 188, + 1, + 2, + 180, + 194, + 181, + 1, + 2, + 180, + 195, + 194, + 1, + 2, + 181, + 193, + 182, + 1, + 2, + 181, + 194, + 193, + 1, + 2, + 157, + 201, + 158, + 1, + 2, + 157, + 202, + 201, + 1, + 2, + 156, + 200, + 203, + 1, + 2, + 156, + 159, + 200, + 1, + 2, + 158, + 200, + 159, + 1, + 2, + 158, + 201, + 200, + 1, + 2, + 156, + 202, + 157, + 1, + 2, + 156, + 203, + 202, + 1, + 2, + 125, + 55, + 57, + 1, + 2, + 125, + 75, + 55, + 1, + 2, + 54, + 124, + 56, + 1, + 2, + 54, + 74, + 124, + 1, + 2, + 123, + 125, + 59, + 1, + 2, + 59, + 125, + 57, + 1, + 2, + 56, + 124, + 58, + 1, + 2, + 58, + 124, + 122, + 1, + 2, + 121, + 123, + 61, + 1, + 2, + 61, + 123, + 59, + 1, + 2, + 58, + 122, + 60, + 1, + 2, + 60, + 122, + 120, + 1, + 2, + 119, + 61, + 63, + 1, + 2, + 119, + 121, + 61, + 1, + 2, + 60, + 118, + 62, + 1, + 2, + 60, + 120, + 118, + 1, + 2, + 117, + 119, + 65, + 1, + 2, + 65, + 119, + 63, + 1, + 2, + 62, + 118, + 64, + 1, + 2, + 64, + 118, + 116, + 1, + 2, + 101, + 117, + 67, + 1, + 2, + 67, + 117, + 65, + 1, + 2, + 64, + 116, + 66, + 1, + 2, + 66, + 116, + 100, + 1, + 2, + 75, + 87, + 55, + 1, + 2, + 75, + 115, + 87, + 1, + 2, + 86, + 74, + 54, + 1, + 2, + 86, + 114, + 74, + 1, + 2, + 115, + 113, + 87, + 1, + 2, + 87, + 113, + 89, + 1, + 2, + 88, + 112, + 86, + 1, + 2, + 86, + 112, + 114, + 1, + 2, + 113, + 91, + 89, + 1, + 2, + 113, + 111, + 91, + 1, + 2, + 90, + 112, + 88, + 1, + 2, + 90, + 110, + 112, + 1, + 2, + 111, + 93, + 91, + 1, + 2, + 111, + 109, + 93, + 1, + 2, + 92, + 110, + 90, + 1, + 2, + 92, + 108, + 110, + 1, + 2, + 109, + 107, + 93, + 1, + 2, + 93, + 107, + 95, + 1, + 2, + 94, + 106, + 92, + 1, + 2, + 92, + 106, + 108, + 1, + 2, + 107, + 97, + 95, + 1, + 2, + 107, + 105, + 97, + 1, + 2, + 96, + 106, + 94, + 1, + 2, + 96, + 104, + 106, + 1, + 2, + 105, + 99, + 97, + 1, + 2, + 105, + 103, + 99, + 1, + 2, + 98, + 104, + 96, + 1, + 2, + 98, + 102, + 104, + 1, + 2, + 103, + 67, + 99, + 1, + 2, + 103, + 101, + 67, + 1, + 2, + 66, + 102, + 98, + 1, + 2, + 66, + 100, + 102, + 1, + 2, + 85, + 83, + 77, + 1, + 2, + 85, + 77, + 101, + 1, + 2, + 76, + 82, + 84, + 1, + 2, + 76, + 84, + 100, + 1, + 2, + 83, + 81, + 77, + 1, + 2, + 81, + 79, + 77, + 1, + 2, + 78, + 80, + 76, + 1, + 2, + 80, + 82, + 76, + 1, + 2, + 97, + 67, + 65, + 1, + 2, + 97, + 99, + 67, + 1, + 2, + 66, + 96, + 64, + 1, + 2, + 66, + 98, + 96, + 1, + 2, + 95, + 65, + 63, + 1, + 2, + 95, + 97, + 65, + 1, + 2, + 64, + 94, + 62, + 1, + 2, + 64, + 96, + 94, + 1, + 2, + 93, + 63, + 61, + 1, + 2, + 93, + 95, + 63, + 1, + 2, + 62, + 92, + 60, + 1, + 2, + 62, + 94, + 92, + 1, + 2, + 91, + 61, + 59, + 1, + 2, + 91, + 93, + 61, + 1, + 2, + 60, + 90, + 58, + 1, + 2, + 60, + 92, + 90, + 1, + 2, + 89, + 59, + 57, + 1, + 2, + 89, + 91, + 59, + 1, + 2, + 58, + 88, + 56, + 1, + 2, + 58, + 90, + 88, + 1, + 2, + 87, + 57, + 55, + 1, + 2, + 87, + 89, + 57, + 1, + 2, + 56, + 86, + 54, + 1, + 2, + 56, + 88, + 86, + 1, + 2, + 83, + 73, + 72, + 1, + 2, + 83, + 85, + 73, + 1, + 2, + 73, + 82, + 72, + 1, + 2, + 73, + 84, + 82, + 1, + 2, + 81, + 72, + 71, + 1, + 2, + 81, + 83, + 72, + 1, + 2, + 72, + 80, + 71, + 1, + 2, + 72, + 82, + 80, + 1, + 2, + 79, + 71, + 70, + 1, + 2, + 79, + 81, + 71, + 1, + 2, + 71, + 78, + 70, + 1, + 2, + 71, + 80, + 78, + 1, + 2, + 77, + 79, + 69, + 1, + 2, + 69, + 79, + 70, + 1, + 2, + 70, + 78, + 69, + 1, + 2, + 69, + 78, + 76, + 1, + 2, + 101, + 69, + 68, + 1, + 2, + 101, + 77, + 69, + 1, + 2, + 69, + 100, + 68, + 1, + 2, + 69, + 76, + 100, + 1, + 2, + 232, + 233, + 235, + 1, + 2, + 232, + 235, + 234, + 1, + 2, + 230, + 228, + 235, + 1, + 2, + 230, + 235, + 233, + 1, + 2, + 231, + 230, + 233, + 1, + 2, + 231, + 233, + 232, + 1, + 2, + 229, + 231, + 232, + 1, + 2, + 229, + 232, + 234, + 1, + 2, + 228, + 229, + 235, + 1, + 2, + 229, + 234, + 235, + 1, + 2, + 228, + 230, + 231, + 1, + 2, + 228, + 231, + 229, + 1 + ] } diff --git a/src/client/components/localisation/darwin_robot/right_arm/config/right_shoulder.json b/src/client/components/localisation/darwin_robot/right_arm/config/right_shoulder.json index fe7a6a50..a5495659 100644 --- a/src/client/components/localisation/darwin_robot/right_arm/config/right_shoulder.json +++ b/src/client/components/localisation/darwin_robot/right_arm/config/right_shoulder.json @@ -1,1047 +1,1047 @@ { - "metadata": { - "formatVersion": 3 - }, - "materials": [ - { - "DbgColor": 15658734, - "DbgIndex": 0, - "DbgName": "Metal", - "colorDiffuse": [ - 0.7, - 0.7, - 0.7 - ], - "colorSpecular": [ - 0.168737, - 0.168737, - 0.168737 - ], - "shading": "Lambert", - "specularCoef": 50, - "opacity": 1.0, - "vertexColors": false - } - ], - "normals": [], - "colors": [], - "uvs": [], - "vertices": [ - -0.0025152, - -0.0272838, - -0.0201519, - 0.0063963, - -0.0253913, - -0.020152, - 0.011394, - -0.0176984, - -0.0201521, - 0.009482, - -0.0087585, - -0.0201522, - 0.0018086, - -0.0037891, - -0.0201522, - -0.0071596, - -0.0057208, - -0.0201521, - -0.0121006, - -0.0133746, - -0.020152, - -0.0101886, - -0.0223144, - -0.0201519, - -0.0025152, - -0.0272838, - -0.017988, - 0.0063963, - -0.0253913, - -0.0179881, - 0.011394, - -0.0176983, - -0.0179883, - 0.009482, - -0.0087585, - -0.0179884, - 0.0018086, - -0.0037891, - -0.0179884, - -0.0071596, - -0.0057207, - -0.0179883, - -0.0121006, - -0.0133746, - -0.0179882, - -0.0101886, - -0.0223144, - -0.0179881, - 0.0236502, - 0.0108478, - -0.0217128, - 0.0236213, - -0.0109584, - -0.0217124, - 0.0221549, - -0.0109583, - -0.0201523, - 0.0222586, - 0.0108478, - -0.0201526, - -0.0084534, - -0.0082007, - -0.0201521, - 0.0075397, - -0.0234598, - -0.020152, - 0.0075397, - -0.0234599, - -0.0217122, - -0.0084534, - -0.0082007, - -0.0217123, - 0.0256226, - 1.39e-05, - 0.0113823, - 0.0256226, - 0.0080327, - 0.0080607, - 0.0256224, - 0.011354, - 4.18e-05, - 0.0256223, - 0.0080324, - -0.007977, - 0.0256222, - 1.35e-05, - -0.0112984, - 0.0256223, - -0.0080052, - -0.0079767, - 0.0256224, - -0.0113266, - 4.22e-05, - 0.0256226, - -0.008005, - 0.0080609, - 0.0235638, - 1.39e-05, - 0.0113823, - 0.0235638, - 0.0080327, - 0.0080607, - 0.0235636, - 0.011354, - 4.18e-05, - 0.0235635, - 0.0080324, - -0.007977, - 0.0235634, - 1.35e-05, - -0.0112983, - 0.0235635, - -0.0080052, - -0.0079767, - 0.0236216, - -0.0113266, - 4.22e-05, - 0.0235638, - -0.008005, - 0.008061, - -0.0038224, - -0.0179272, - -0.0221549, - -0.0044962, - -0.0147768, - -0.022155, - -0.0027608, - -0.0120837, - -0.022155, - 0.0004054, - -0.0113989, - -0.0221551, - 0.0031095, - -0.0131501, - -0.0221551, - 0.0037833, - -0.0163005, - -0.022155, - 0.0020162, - -0.0190155, - -0.022155, - -0.0011183, - -0.0196784, - -0.0221549, - -0.0011175, - -0.0196784, - 0.0221863, - 0.002017, - -0.0190155, - 0.0221863, - 0.0037841, - -0.0163005, - 0.0221862, - 0.0031103, - -0.0131501, - 0.0221863, - 0.0004062, - -0.0113989, - 0.0221864, - -0.0027601, - -0.0120837, - 0.0221865, - -0.0044954, - -0.0147768, - 0.0221865, - -0.0038216, - -0.0179272, - 0.0221864, - -0.0084526, - -0.0082007, - 0.0217439, - 0.0075404, - -0.0234599, - 0.0217433, - 0.0075404, - -0.0234598, - 0.0201831, - -0.0084527, - -0.0082007, - 0.0201838, - 0.0222593, - 0.0108478, - 0.0201832, - 0.0221556, - -0.0109583, - 0.0201828, - 0.023622, - -0.0109584, - 0.021743, - 0.023651, - 0.0108478, - 0.0217434, - -0.0101879, - -0.0223144, - 0.0180198, - -0.0121, - -0.0133746, - 0.01802, - -0.007159, - -0.0057207, - 0.0180199, - 0.0018092, - -0.0037891, - 0.0180197, - 0.0094826, - -0.0087585, - 0.0180194, - 0.0113947, - -0.0176983, - 0.0180193, - 0.0063969, - -0.0253913, - 0.0180193, - -0.0025145, - -0.0272838, - 0.0180195, - -0.0101879, - -0.0223144, - 0.0201836, - -0.0120999, - -0.0133746, - 0.0201838, - -0.0071589, - -0.0057208, - 0.0201838, - 0.0018093, - -0.0037891, - 0.0201835, - 0.0094827, - -0.0087585, - 0.0201833, - 0.0113947, - -0.0176984, - 0.0201831, - 0.006397, - -0.0253913, - 0.0201831, - -0.0025145, - -0.0272838, - 0.0201833, - 0.0202183, - -0.0109583, - -0.0201522, - 0.0202183, - -0.0109584, - -0.0217124, - 0.020219, - -0.0109584, - 0.021743, - 0.020219, - -0.0109583, - 0.0201829, - 0.0112371, - 0.0108478, - -0.0201524, - 0.011237, - 0.0108478, - -0.0217126, - 0.0112378, - 0.0108478, - 0.0217436, - 0.0112378, - 0.0108478, - 0.0201834 - ], - "faces": [ - 2, - 10, - 11, - 12, - 0, - 2, - 15, - 8, - 14, - 0, - 2, - 24, - 31, - 25, - 0, - 2, - 29, - 28, - 27, - 0, - 2, - 41, - 47, - 40, - 0, - 2, - 43, - 44, - 45, - 0, - 2, - 52, - 50, - 51, - 0, - 2, - 54, - 55, - 48, - 0, - 2, - 64, - 65, - 71, - 0, - 2, - 69, - 67, - 68, - 0, - 2, - 21, - 80, - 19, - 0, - 2, - 80, - 18, - 19, - 0, - 2, - 17, - 81, - 16, - 0, - 2, - 81, - 22, - 16, - 0, - 2, - 62, - 63, - 82, - 0, - 2, - 82, - 63, - 57, - 0, - 2, - 58, - 60, - 83, - 0, - 2, - 83, - 60, - 61, - 0, - 2, - 19, - 84, - 21, - 0, - 2, - 84, - 20, - 21, - 0, - 2, - 23, - 85, - 22, - 0, - 2, - 85, - 16, - 22, - 0, - 2, - 56, - 57, - 86, - 0, - 2, - 86, - 57, - 63, - 0, - 2, - 60, - 58, - 87, - 0, - 2, - 87, - 58, - 59, - 0, - 2, - 87, - 86, - 60, - 0, - 2, - 60, - 86, - 63, - 0, - 2, - 59, - 86, - 87, - 0, - 2, - 59, - 56, - 86, - 0, - 2, - 85, - 23, - 20, - 0, - 2, - 85, - 20, - 84, - 0, - 2, - 16, - 85, - 19, - 0, - 2, - 85, - 84, - 19, - 0, - 2, - 82, - 61, - 62, - 0, - 2, - 82, - 83, - 61, - 0, - 2, - 57, - 83, - 82, - 0, - 2, - 57, - 58, - 83, - 0, - 2, - 80, - 21, - 22, - 0, - 2, - 80, - 22, - 81, - 0, - 2, - 18, - 80, - 81, - 0, - 2, - 18, - 81, - 17, - 0, - 2, - 78, - 77, - 75, - 0, - 2, - 77, - 76, - 75, - 0, - 2, - 79, - 78, - 75, - 0, - 2, - 79, - 75, - 74, - 0, - 2, - 72, - 79, - 74, - 0, - 2, - 72, - 74, - 73, - 0, - 2, - 70, - 67, - 69, - 0, - 2, - 70, - 66, - 67, - 0, - 2, - 65, - 70, - 71, - 0, - 2, - 65, - 66, - 70, - 0, - 2, - 49, - 54, - 48, - 0, - 2, - 49, - 53, - 54, - 0, - 2, - 52, - 49, - 50, - 0, - 2, - 52, - 53, - 49, - 0, - 2, - 59, - 57, - 56, - 0, - 2, - 59, - 58, - 57, - 0, - 2, - 64, - 71, - 79, - 0, - 2, - 64, - 79, - 72, - 0, - 2, - 72, - 73, - 65, - 0, - 2, - 72, - 65, - 64, - 0, - 2, - 73, - 74, - 66, - 0, - 2, - 73, - 66, - 65, - 0, - 2, - 74, - 75, - 67, - 0, - 2, - 74, - 67, - 66, - 0, - 2, - 75, - 76, - 68, - 0, - 2, - 75, - 68, - 67, - 0, - 2, - 76, - 77, - 69, - 0, - 2, - 76, - 69, - 68, - 0, - 2, - 77, - 78, - 70, - 0, - 2, - 77, - 70, - 69, - 0, - 2, - 78, - 79, - 71, - 0, - 2, - 78, - 71, - 70, - 0, - 2, - 8, - 0, - 1, - 0, - 2, - 1, - 9, - 8, - 0, - 2, - 9, - 2, - 10, - 0, - 2, - 9, - 1, - 2, - 0, - 2, - 10, - 3, - 11, - 0, - 2, - 10, - 2, - 3, - 0, - 2, - 11, - 4, - 12, - 0, - 2, - 11, - 3, - 4, - 0, - 2, - 12, - 5, - 13, - 0, - 2, - 12, - 4, - 5, - 0, - 2, - 13, - 6, - 14, - 0, - 2, - 13, - 5, - 6, - 0, - 2, - 14, - 7, - 15, - 0, - 2, - 14, - 6, - 7, - 0, - 2, - 0, - 15, - 7, - 0, - 2, - 0, - 8, - 15, - 0, - 2, - 22, - 21, - 20, - 0, - 2, - 22, - 20, - 23, - 0, - 2, - 39, - 24, - 32, - 0, - 2, - 39, - 31, - 24, - 0, - 2, - 25, - 32, - 24, - 0, - 2, - 25, - 33, - 32, - 0, - 2, - 26, - 33, - 25, - 0, - 2, - 26, - 34, - 33, - 0, - 2, - 27, - 34, - 26, - 0, - 2, - 27, - 35, - 34, - 0, - 2, - 28, - 35, - 27, - 0, - 2, - 28, - 36, - 35, - 0, - 2, - 29, - 36, - 28, - 0, - 2, - 29, - 37, - 36, - 0, - 2, - 30, - 38, - 29, - 0, - 2, - 29, - 38, - 37, - 0, - 2, - 31, - 38, - 30, - 0, - 2, - 31, - 39, - 38, - 0, - 2, - 46, - 42, - 43, - 0, - 2, - 46, - 43, - 45, - 0, - 2, - 41, - 42, - 46, - 0, - 2, - 41, - 46, - 47, - 0, - 2, - 30, - 29, - 27, - 0, - 2, - 30, - 27, - 26, - 0, - 2, - 25, - 31, - 30, - 0, - 2, - 25, - 30, - 26, - 0, - 2, - 9, - 13, - 14, - 0, - 2, - 9, - 14, - 8, - 0, - 2, - 12, - 13, - 9, - 0, - 2, - 12, - 9, - 10, - 0, - 2, - 5, - 0, - 7, - 0, - 2, - 7, - 6, - 5, - 0, - 2, - 0, - 4, - 1, - 0, - 2, - 0, - 5, - 4, - 0, - 2, - 3, - 2, - 4, - 0, - 2, - 4, - 2, - 1, - 0, - 2, - 42, - 52, - 43, - 0, - 2, - 42, - 53, - 52, - 0, - 2, - 43, - 51, - 44, - 0, - 2, - 43, - 52, - 51, - 0, - 2, - 44, - 50, - 45, - 0, - 2, - 44, - 51, - 50, - 0, - 2, - 45, - 49, - 46, - 0, - 2, - 45, - 50, - 49, - 0, - 2, - 46, - 48, - 47, - 0, - 2, - 46, - 49, - 48, - 0, - 2, - 40, - 48, - 55, - 0, - 2, - 40, - 47, - 48, - 0, - 2, - 40, - 54, - 41, - 0, - 2, - 40, - 55, - 54, - 0, - 2, - 41, - 53, - 42, - 0, - 2, - 41, - 54, - 53, - 0, - 2, - 17, - 61, - 18, - 0, - 2, - 17, - 62, - 61, - 0, - 2, - 16, - 60, - 63, - 0, - 2, - 16, - 19, - 60, - 0, - 2, - 18, - 60, - 19, - 0, - 2, - 18, - 61, - 60, - 0, - 2, - 16, - 62, - 17, - 0, - 2, - 16, - 63, - 62, - 0 - ] + "metadata": { + "formatVersion": 3 + }, + "materials": [ + { + "DbgColor": 15658734, + "DbgIndex": 0, + "DbgName": "Metal", + "colorDiffuse": [ + 0.7, + 0.7, + 0.7 + ], + "colorSpecular": [ + 0.168737, + 0.168737, + 0.168737 + ], + "shading": "Lambert", + "specularCoef": 50, + "opacity": 1.0, + "vertexColors": false + } + ], + "normals": [], + "colors": [], + "uvs": [], + "vertices": [ + -0.0025152, + -0.0272838, + -0.0201519, + 0.0063963, + -0.0253913, + -0.020152, + 0.011394, + -0.0176984, + -0.0201521, + 0.009482, + -0.0087585, + -0.0201522, + 0.0018086, + -0.0037891, + -0.0201522, + -0.0071596, + -0.0057208, + -0.0201521, + -0.0121006, + -0.0133746, + -0.020152, + -0.0101886, + -0.0223144, + -0.0201519, + -0.0025152, + -0.0272838, + -0.017988, + 0.0063963, + -0.0253913, + -0.0179881, + 0.011394, + -0.0176983, + -0.0179883, + 0.009482, + -0.0087585, + -0.0179884, + 0.0018086, + -0.0037891, + -0.0179884, + -0.0071596, + -0.0057207, + -0.0179883, + -0.0121006, + -0.0133746, + -0.0179882, + -0.0101886, + -0.0223144, + -0.0179881, + 0.0236502, + 0.0108478, + -0.0217128, + 0.0236213, + -0.0109584, + -0.0217124, + 0.0221549, + -0.0109583, + -0.0201523, + 0.0222586, + 0.0108478, + -0.0201526, + -0.0084534, + -0.0082007, + -0.0201521, + 0.0075397, + -0.0234598, + -0.020152, + 0.0075397, + -0.0234599, + -0.0217122, + -0.0084534, + -0.0082007, + -0.0217123, + 0.0256226, + 1.39e-05, + 0.0113823, + 0.0256226, + 0.0080327, + 0.0080607, + 0.0256224, + 0.011354, + 4.18e-05, + 0.0256223, + 0.0080324, + -0.007977, + 0.0256222, + 1.35e-05, + -0.0112984, + 0.0256223, + -0.0080052, + -0.0079767, + 0.0256224, + -0.0113266, + 4.22e-05, + 0.0256226, + -0.008005, + 0.0080609, + 0.0235638, + 1.39e-05, + 0.0113823, + 0.0235638, + 0.0080327, + 0.0080607, + 0.0235636, + 0.011354, + 4.18e-05, + 0.0235635, + 0.0080324, + -0.007977, + 0.0235634, + 1.35e-05, + -0.0112983, + 0.0235635, + -0.0080052, + -0.0079767, + 0.0236216, + -0.0113266, + 4.22e-05, + 0.0235638, + -0.008005, + 0.008061, + -0.0038224, + -0.0179272, + -0.0221549, + -0.0044962, + -0.0147768, + -0.022155, + -0.0027608, + -0.0120837, + -0.022155, + 0.0004054, + -0.0113989, + -0.0221551, + 0.0031095, + -0.0131501, + -0.0221551, + 0.0037833, + -0.0163005, + -0.022155, + 0.0020162, + -0.0190155, + -0.022155, + -0.0011183, + -0.0196784, + -0.0221549, + -0.0011175, + -0.0196784, + 0.0221863, + 0.002017, + -0.0190155, + 0.0221863, + 0.0037841, + -0.0163005, + 0.0221862, + 0.0031103, + -0.0131501, + 0.0221863, + 0.0004062, + -0.0113989, + 0.0221864, + -0.0027601, + -0.0120837, + 0.0221865, + -0.0044954, + -0.0147768, + 0.0221865, + -0.0038216, + -0.0179272, + 0.0221864, + -0.0084526, + -0.0082007, + 0.0217439, + 0.0075404, + -0.0234599, + 0.0217433, + 0.0075404, + -0.0234598, + 0.0201831, + -0.0084527, + -0.0082007, + 0.0201838, + 0.0222593, + 0.0108478, + 0.0201832, + 0.0221556, + -0.0109583, + 0.0201828, + 0.023622, + -0.0109584, + 0.021743, + 0.023651, + 0.0108478, + 0.0217434, + -0.0101879, + -0.0223144, + 0.0180198, + -0.0121, + -0.0133746, + 0.01802, + -0.007159, + -0.0057207, + 0.0180199, + 0.0018092, + -0.0037891, + 0.0180197, + 0.0094826, + -0.0087585, + 0.0180194, + 0.0113947, + -0.0176983, + 0.0180193, + 0.0063969, + -0.0253913, + 0.0180193, + -0.0025145, + -0.0272838, + 0.0180195, + -0.0101879, + -0.0223144, + 0.0201836, + -0.0120999, + -0.0133746, + 0.0201838, + -0.0071589, + -0.0057208, + 0.0201838, + 0.0018093, + -0.0037891, + 0.0201835, + 0.0094827, + -0.0087585, + 0.0201833, + 0.0113947, + -0.0176984, + 0.0201831, + 0.006397, + -0.0253913, + 0.0201831, + -0.0025145, + -0.0272838, + 0.0201833, + 0.0202183, + -0.0109583, + -0.0201522, + 0.0202183, + -0.0109584, + -0.0217124, + 0.020219, + -0.0109584, + 0.021743, + 0.020219, + -0.0109583, + 0.0201829, + 0.0112371, + 0.0108478, + -0.0201524, + 0.011237, + 0.0108478, + -0.0217126, + 0.0112378, + 0.0108478, + 0.0217436, + 0.0112378, + 0.0108478, + 0.0201834 + ], + "faces": [ + 2, + 10, + 11, + 12, + 0, + 2, + 15, + 8, + 14, + 0, + 2, + 24, + 31, + 25, + 0, + 2, + 29, + 28, + 27, + 0, + 2, + 41, + 47, + 40, + 0, + 2, + 43, + 44, + 45, + 0, + 2, + 52, + 50, + 51, + 0, + 2, + 54, + 55, + 48, + 0, + 2, + 64, + 65, + 71, + 0, + 2, + 69, + 67, + 68, + 0, + 2, + 21, + 80, + 19, + 0, + 2, + 80, + 18, + 19, + 0, + 2, + 17, + 81, + 16, + 0, + 2, + 81, + 22, + 16, + 0, + 2, + 62, + 63, + 82, + 0, + 2, + 82, + 63, + 57, + 0, + 2, + 58, + 60, + 83, + 0, + 2, + 83, + 60, + 61, + 0, + 2, + 19, + 84, + 21, + 0, + 2, + 84, + 20, + 21, + 0, + 2, + 23, + 85, + 22, + 0, + 2, + 85, + 16, + 22, + 0, + 2, + 56, + 57, + 86, + 0, + 2, + 86, + 57, + 63, + 0, + 2, + 60, + 58, + 87, + 0, + 2, + 87, + 58, + 59, + 0, + 2, + 87, + 86, + 60, + 0, + 2, + 60, + 86, + 63, + 0, + 2, + 59, + 86, + 87, + 0, + 2, + 59, + 56, + 86, + 0, + 2, + 85, + 23, + 20, + 0, + 2, + 85, + 20, + 84, + 0, + 2, + 16, + 85, + 19, + 0, + 2, + 85, + 84, + 19, + 0, + 2, + 82, + 61, + 62, + 0, + 2, + 82, + 83, + 61, + 0, + 2, + 57, + 83, + 82, + 0, + 2, + 57, + 58, + 83, + 0, + 2, + 80, + 21, + 22, + 0, + 2, + 80, + 22, + 81, + 0, + 2, + 18, + 80, + 81, + 0, + 2, + 18, + 81, + 17, + 0, + 2, + 78, + 77, + 75, + 0, + 2, + 77, + 76, + 75, + 0, + 2, + 79, + 78, + 75, + 0, + 2, + 79, + 75, + 74, + 0, + 2, + 72, + 79, + 74, + 0, + 2, + 72, + 74, + 73, + 0, + 2, + 70, + 67, + 69, + 0, + 2, + 70, + 66, + 67, + 0, + 2, + 65, + 70, + 71, + 0, + 2, + 65, + 66, + 70, + 0, + 2, + 49, + 54, + 48, + 0, + 2, + 49, + 53, + 54, + 0, + 2, + 52, + 49, + 50, + 0, + 2, + 52, + 53, + 49, + 0, + 2, + 59, + 57, + 56, + 0, + 2, + 59, + 58, + 57, + 0, + 2, + 64, + 71, + 79, + 0, + 2, + 64, + 79, + 72, + 0, + 2, + 72, + 73, + 65, + 0, + 2, + 72, + 65, + 64, + 0, + 2, + 73, + 74, + 66, + 0, + 2, + 73, + 66, + 65, + 0, + 2, + 74, + 75, + 67, + 0, + 2, + 74, + 67, + 66, + 0, + 2, + 75, + 76, + 68, + 0, + 2, + 75, + 68, + 67, + 0, + 2, + 76, + 77, + 69, + 0, + 2, + 76, + 69, + 68, + 0, + 2, + 77, + 78, + 70, + 0, + 2, + 77, + 70, + 69, + 0, + 2, + 78, + 79, + 71, + 0, + 2, + 78, + 71, + 70, + 0, + 2, + 8, + 0, + 1, + 0, + 2, + 1, + 9, + 8, + 0, + 2, + 9, + 2, + 10, + 0, + 2, + 9, + 1, + 2, + 0, + 2, + 10, + 3, + 11, + 0, + 2, + 10, + 2, + 3, + 0, + 2, + 11, + 4, + 12, + 0, + 2, + 11, + 3, + 4, + 0, + 2, + 12, + 5, + 13, + 0, + 2, + 12, + 4, + 5, + 0, + 2, + 13, + 6, + 14, + 0, + 2, + 13, + 5, + 6, + 0, + 2, + 14, + 7, + 15, + 0, + 2, + 14, + 6, + 7, + 0, + 2, + 0, + 15, + 7, + 0, + 2, + 0, + 8, + 15, + 0, + 2, + 22, + 21, + 20, + 0, + 2, + 22, + 20, + 23, + 0, + 2, + 39, + 24, + 32, + 0, + 2, + 39, + 31, + 24, + 0, + 2, + 25, + 32, + 24, + 0, + 2, + 25, + 33, + 32, + 0, + 2, + 26, + 33, + 25, + 0, + 2, + 26, + 34, + 33, + 0, + 2, + 27, + 34, + 26, + 0, + 2, + 27, + 35, + 34, + 0, + 2, + 28, + 35, + 27, + 0, + 2, + 28, + 36, + 35, + 0, + 2, + 29, + 36, + 28, + 0, + 2, + 29, + 37, + 36, + 0, + 2, + 30, + 38, + 29, + 0, + 2, + 29, + 38, + 37, + 0, + 2, + 31, + 38, + 30, + 0, + 2, + 31, + 39, + 38, + 0, + 2, + 46, + 42, + 43, + 0, + 2, + 46, + 43, + 45, + 0, + 2, + 41, + 42, + 46, + 0, + 2, + 41, + 46, + 47, + 0, + 2, + 30, + 29, + 27, + 0, + 2, + 30, + 27, + 26, + 0, + 2, + 25, + 31, + 30, + 0, + 2, + 25, + 30, + 26, + 0, + 2, + 9, + 13, + 14, + 0, + 2, + 9, + 14, + 8, + 0, + 2, + 12, + 13, + 9, + 0, + 2, + 12, + 9, + 10, + 0, + 2, + 5, + 0, + 7, + 0, + 2, + 7, + 6, + 5, + 0, + 2, + 0, + 4, + 1, + 0, + 2, + 0, + 5, + 4, + 0, + 2, + 3, + 2, + 4, + 0, + 2, + 4, + 2, + 1, + 0, + 2, + 42, + 52, + 43, + 0, + 2, + 42, + 53, + 52, + 0, + 2, + 43, + 51, + 44, + 0, + 2, + 43, + 52, + 51, + 0, + 2, + 44, + 50, + 45, + 0, + 2, + 44, + 51, + 50, + 0, + 2, + 45, + 49, + 46, + 0, + 2, + 45, + 50, + 49, + 0, + 2, + 46, + 48, + 47, + 0, + 2, + 46, + 49, + 48, + 0, + 2, + 40, + 48, + 55, + 0, + 2, + 40, + 47, + 48, + 0, + 2, + 40, + 54, + 41, + 0, + 2, + 40, + 55, + 54, + 0, + 2, + 41, + 53, + 42, + 0, + 2, + 41, + 54, + 53, + 0, + 2, + 17, + 61, + 18, + 0, + 2, + 17, + 62, + 61, + 0, + 2, + 16, + 60, + 63, + 0, + 2, + 16, + 19, + 60, + 0, + 2, + 18, + 60, + 19, + 0, + 2, + 18, + 61, + 60, + 0, + 2, + 16, + 62, + 17, + 0, + 2, + 16, + 63, + 62, + 0 + ] } diff --git a/src/client/components/localisation/darwin_robot/right_arm/config/right_upper_arm.json b/src/client/components/localisation/darwin_robot/right_arm/config/right_upper_arm.json index 51e8b3da..cd31d410 100644 --- a/src/client/components/localisation/darwin_robot/right_arm/config/right_upper_arm.json +++ b/src/client/components/localisation/darwin_robot/right_arm/config/right_upper_arm.json @@ -1,1247 +1,1247 @@ { - "metadata": { - "formatVersion": 3 - }, - "materials": [ - { - "DbgColor": 15658734, - "DbgIndex": 0, - "DbgName": "Plastic", - "colorDiffuse": [ - 0.301961, - 0.301961, - 0.301961 - ], - "colorSpecular": [ - 0.401201, - 0.401201, - 0.401201 - ], - "shading": "Lambert", - "specularCoef": 50, - "opacity": 1.0, - "vertexColors": false - }, - { - "DbgColor": 15658734, - "DbgIndex": 1, - "DbgName": "ServoMaterial", - "colorDiffuse": [ - 0.14, - 0.14, - 0.14 - ], - "colorSpecular": [ - 0.168737, - 0.168737, - 0.168737 - ], - "shading": "Lambert", - "specularCoef": 50, - "opacity": 1.0, - "vertexColors": false - } - ], - "normals": [], - "colors": [], - "uvs": [], - "vertices": [ - 0.0156138, - -0.011514, - 0.0201599, - 0.0156134, - -0.0373797, - 0.0201595, - 0.0116704, - -0.0403762, - 0.0201594, - -0.0161016, - -0.0403757, - 0.0201594, - -0.0041009, - -0.0116714, - 0.0201599, - -0.00899, - -0.0072552, - 0.02016, - -0.0091475, - 0.0045736, - 0.0201602, - -0.0064663, - 0.0080434, - 0.0201603, - 0.0058357, - 0.0080432, - 0.0201603, - 0.0059935, - 0.0146673, - 0.0201604, - -0.0102514, - 0.0130904, - 0.0201604, - -0.014839, - 0.0107247, - 0.0201603, - -0.0161008, - 0.0073235, - 0.0201603, - 0.0156138, - -0.0115133, - -0.0198866, - 0.0156134, - -0.037379, - -0.019887, - 0.0116704, - -0.0403755, - -0.0198871, - -0.0161016, - -0.040375, - -0.0198871, - -0.0041009, - -0.0116707, - -0.0198866, - -0.00899, - -0.0072545, - -0.0198865, - -0.0091475, - 0.0045743, - -0.0198863, - -0.0064663, - 0.0080441, - -0.0198863, - 0.0058357, - 0.0080439, - -0.0198863, - 0.0059935, - 0.014668, - -0.0198861, - -0.0102514, - 0.0130911, - -0.0198862, - -0.014839, - 0.0107254, - -0.0198862, - -0.0161008, - 0.0073242, - -0.0198863, - -0.0161016, - -0.0403754, - 0.0001362, - -0.02011, - -0.0119166, - 0.0121506, - -0.0210102, - -0.0162362, - 0.0041412, - -0.0210102, - -0.016236, - -0.0038681, - -0.02011, - -0.0119162, - -0.0118773, - -0.0201106, - -0.0454278, - 0.01215, - -0.0210107, - -0.0480778, - 0.0041407, - -0.0210107, - -0.0480777, - -0.0038686, - -0.0201106, - -0.0454274, - -0.0118779, - -0.0150266, - -0.0472415, - 0.0225037, - -0.0150274, - -0.0472399, - -0.0278544, - -0.0150266, - -0.0726358, - 0.0225028, - -0.0150274, - -0.0726342, - -0.0278553, - -0.0106236, - -0.0726342, - -0.0278553, - -0.0106236, - -0.0472399, - -0.0278545, - -0.0106228, - -0.0726359, - 0.0225027, - -0.0106229, - -0.0472416, - 0.0225036, - -0.0106235, - -0.0778283, - -0.0219414, - -0.0106235, - -0.0422107, - -0.0219401, - -0.0106229, - -0.0778296, - 0.0165884, - -0.0106229, - -0.0422119, - 0.0165896, - -0.0150273, - -0.0778283, - -0.0219413, - -0.0150273, - -0.0422107, - -0.0219401, - -0.0150267, - -0.0778296, - 0.0165884, - -0.0150267, - -0.0422119, - 0.0165897, - 0.0102081, - -0.0422124, - 0.0165897, - 0.0102081, - -0.07783, - 0.0165884, - 0.0102075, - -0.0422111, - -0.0219401, - 0.0102075, - -0.0778288, - -0.0219413, - 0.0146119, - -0.0422124, - 0.0165896, - 0.0146119, - -0.07783, - 0.0165884, - 0.0146113, - -0.0422111, - -0.0219401, - 0.0146113, - -0.0778288, - -0.0219414, - 0.014612, - -0.047242, - 0.0225036, - 0.014612, - -0.0726363, - 0.0225027, - 0.0146112, - -0.0472403, - -0.0278545, - 0.0146112, - -0.0726346, - -0.0278553, - 0.0102074, - -0.0726346, - -0.0278553, - 0.0102082, - -0.0726363, - 0.0225028, - 0.0102074, - -0.0472403, - -0.0278544, - 0.0102082, - -0.047242, - 0.0225037, - -0.0183666, - -0.0726342, - -0.0278553, - -0.0183658, - -0.0726358, - 0.0225028, - -0.0183666, - -0.0472399, - -0.0278544, - -0.0183658, - -0.0472415, - 0.0225037, - 0.0176078, - -0.0726346, - -0.0278554, - 0.0176078, - -0.0472403, - -0.0278545, - 0.0176086, - -0.0726363, - 0.0225027, - 0.0176086, - -0.047242, - 0.0225035, - 0.012489, - 0.0116448, - 0.0180959, - -0.0129053, - 0.0116448, - 0.0180963, - 0.0124889, - -0.0387132, - 0.0180942, - -0.0129054, - -0.0387132, - 0.0180947, - 0.0124888, - 0.0116456, - -0.0178785, - 0.0124888, - -0.0387125, - -0.0178802, - -0.0129054, - 0.0116456, - -0.0178781, - -0.0129055, - -0.0387125, - -0.0178798, - 0.0124889, - 0.0116451, - 0.0106955, - 0.0124888, - -0.038713, - 0.0106938, - -0.0129054, - 0.011645, - 0.0106959, - -0.0129055, - -0.038713, - 0.0106943, - -0.0129054, - -0.0387131, - 0.015098, - 0.0124889, - -0.0387131, - 0.0150976, - -0.0129053, - 0.0116449, - 0.0150997, - 0.012489, - 0.0116449, - 0.0150992, - -0.0180994, - -0.032799, - 0.0150983, - 0.0175183, - -0.032799, - 0.0150977, - -0.0180993, - 0.0057308, - 0.0150996, - 0.0175184, - 0.0057308, - 0.015099, - -0.0180994, - -0.0327989, - 0.0106946, - 0.0175182, - -0.0327988, - 0.0106939, - -0.0180993, - 0.0057309, - 0.0106958, - 0.0175183, - 0.0057309, - 0.0106952, - 0.0175183, - 0.0057313, - -0.0145396, - -0.0180993, - 0.0057313, - -0.014539, - 0.0175182, - -0.0327984, - -0.0145409, - -0.0180994, - -0.0327984, - -0.0145402, - 0.0175184, - 0.0057312, - -0.0101359, - -0.0180993, - 0.0057312, - -0.0101352, - 0.0175183, - -0.0327985, - -0.0101371, - -0.0180994, - -0.0327985, - -0.0101365, - 0.012489, - 0.0116454, - -0.0101356, - -0.0129053, - 0.0116454, - -0.0101351, - 0.0124889, - -0.0387127, - -0.0101372, - -0.0129054, - -0.0387127, - -0.0101368, - -0.0129055, - -0.0387126, - -0.0145406, - -0.0129054, - 0.0116455, - -0.0145389, - 0.0124888, - -0.0387126, - -0.014541, - 0.0124889, - 0.0116455, - -0.0145393 - ], - "faces": [ - 2, - 3, - 11, - 12, - 0, - 2, - 5, - 11, - 3, - 0, - 2, - 2, - 5, - 3, - 0, - 2, - 5, - 10, - 11, - 0, - 2, - 7, - 9, - 10, - 0, - 2, - 6, - 7, - 10, - 0, - 2, - 5, - 6, - 10, - 0, - 2, - 2, - 4, - 5, - 0, - 2, - 8, - 9, - 7, - 0, - 2, - 2, - 0, - 4, - 0, - 2, - 1, - 0, - 2, - 0, - 2, - 16, - 25, - 24, - 0, - 2, - 18, - 16, - 24, - 0, - 2, - 15, - 16, - 18, - 0, - 2, - 18, - 24, - 23, - 0, - 2, - 20, - 23, - 22, - 0, - 2, - 19, - 23, - 20, - 0, - 2, - 18, - 23, - 19, - 0, - 2, - 15, - 18, - 17, - 0, - 2, - 21, - 20, - 22, - 0, - 2, - 15, - 17, - 13, - 0, - 2, - 14, - 15, - 13, - 0, - 2, - 2, - 26, - 15, - 0, - 2, - 15, - 26, - 16, - 0, - 2, - 2, - 3, - 26, - 0, - 2, - 26, - 32, - 33, - 0, - 2, - 26, - 31, - 32, - 0, - 2, - 3, - 31, - 26, - 0, - 2, - 26, - 33, - 34, - 0, - 2, - 16, - 26, - 34, - 0, - 2, - 28, - 30, - 29, - 0, - 2, - 28, - 27, - 30, - 0, - 2, - 12, - 30, - 27, - 0, - 2, - 12, - 25, - 30, - 0, - 2, - 3, - 27, - 31, - 0, - 2, - 3, - 12, - 27, - 0, - 2, - 27, - 28, - 31, - 0, - 2, - 28, - 32, - 31, - 0, - 2, - 28, - 29, - 33, - 0, - 2, - 28, - 33, - 32, - 0, - 2, - 29, - 30, - 34, - 0, - 2, - 29, - 34, - 33, - 0, - 2, - 16, - 34, - 30, - 0, - 2, - 16, - 30, - 25, - 0, - 2, - 10, - 24, - 11, - 0, - 2, - 10, - 23, - 24, - 0, - 2, - 11, - 24, - 25, - 0, - 2, - 11, - 25, - 12, - 0, - 2, - 1, - 15, - 14, - 0, - 2, - 1, - 2, - 15, - 0, - 2, - 0, - 14, - 13, - 0, - 2, - 0, - 1, - 14, - 0, - 2, - 0, - 17, - 4, - 0, - 2, - 0, - 13, - 17, - 0, - 2, - 4, - 18, - 5, - 0, - 2, - 4, - 17, - 18, - 0, - 2, - 8, - 22, - 9, - 0, - 2, - 8, - 21, - 22, - 0, - 2, - 5, - 19, - 6, - 0, - 2, - 5, - 18, - 19, - 0, - 2, - 6, - 20, - 7, - 0, - 2, - 6, - 19, - 20, - 0, - 2, - 7, - 21, - 8, - 0, - 2, - 7, - 20, - 21, - 0, - 2, - 9, - 23, - 10, - 0, - 2, - 9, - 22, - 23, - 0, - 2, - 103, - 105, - 101, - 1, - 2, - 103, - 101, - 99, - 1, - 2, - 100, - 102, - 106, - 1, - 2, - 100, - 106, - 104, - 1, - 2, - 106, - 110, - 108, - 1, - 2, - 106, - 108, - 104, - 1, - 2, - 102, - 112, - 111, - 1, - 2, - 102, - 100, - 112, - 1, - 2, - 111, - 110, - 106, - 1, - 2, - 111, - 106, - 102, - 1, - 2, - 104, - 108, - 112, - 1, - 2, - 104, - 112, - 100, - 1, - 2, - 114, - 107, - 103, - 1, - 2, - 114, - 103, - 99, - 1, - 2, - 101, - 113, - 114, - 1, - 2, - 101, - 114, - 99, - 1, - 2, - 107, - 109, - 105, - 1, - 2, - 107, - 105, - 103, - 1, - 2, - 105, - 109, - 113, - 1, - 2, - 105, - 113, - 101, - 1, - 2, - 92, - 88, - 84, - 1, - 2, - 92, - 84, - 96, - 1, - 2, - 90, - 88, - 92, - 1, - 2, - 90, - 92, - 94, - 1, - 2, - 96, - 84, - 83, - 1, - 2, - 96, - 83, - 98, - 1, - 2, - 83, - 90, - 94, - 1, - 2, - 83, - 94, - 98, - 1, - 2, - 93, - 89, - 85, - 1, - 2, - 93, - 85, - 97, - 1, - 2, - 86, - 87, - 91, - 1, - 2, - 86, - 91, - 95, - 1, - 2, - 95, - 85, - 86, - 1, - 2, - 95, - 97, - 85, - 1, - 2, - 91, - 87, - 89, - 1, - 2, - 91, - 89, - 93, - 1, - 2, - 97, - 95, - 91, - 1, - 2, - 97, - 91, - 93, - 1, - 2, - 94, - 92, - 96, - 1, - 2, - 94, - 96, - 98, - 1, - 2, - 82, - 79, - 80, - 1, - 2, - 82, - 81, - 79, - 1, - 2, - 76, - 78, - 77, - 1, - 2, - 76, - 77, - 75, - 1, - 2, - 82, - 77, - 78, - 1, - 2, - 82, - 80, - 77, - 1, - 2, - 81, - 76, - 75, - 1, - 2, - 81, - 75, - 79, - 1, - 2, - 79, - 77, - 80, - 1, - 2, - 79, - 75, - 77, - 1, - 2, - 82, - 78, - 81, - 1, - 2, - 81, - 78, - 76, - 1, - 2, - 67, - 71, - 68, - 1, - 2, - 68, - 71, - 73, - 1, - 2, - 70, - 72, - 69, - 1, - 2, - 70, - 74, - 72, - 1, - 2, - 68, - 73, - 74, - 1, - 2, - 68, - 74, - 70, - 1, - 2, - 67, - 72, - 71, - 1, - 2, - 67, - 69, - 72, - 1, - 2, - 73, - 71, - 72, - 1, - 2, - 73, - 72, - 74, - 1, - 2, - 67, - 70, - 69, - 1, - 2, - 67, - 68, - 70, - 1, - 2, - 55, - 53, - 57, - 1, - 2, - 55, - 51, - 53, - 1, - 2, - 52, - 54, - 58, - 1, - 2, - 52, - 58, - 56, - 1, - 2, - 58, - 62, - 60, - 1, - 2, - 58, - 60, - 56, - 1, - 2, - 54, - 64, - 63, - 1, - 2, - 54, - 52, - 64, - 1, - 2, - 63, - 62, - 58, - 1, - 2, - 63, - 58, - 54, - 1, - 2, - 56, - 60, - 64, - 1, - 2, - 56, - 64, - 52, - 1, - 2, - 66, - 55, - 59, - 1, - 2, - 66, - 51, - 55, - 1, - 2, - 53, - 66, - 65, - 1, - 2, - 53, - 51, - 66, - 1, - 2, - 59, - 57, - 61, - 1, - 2, - 59, - 55, - 57, - 1, - 2, - 57, - 65, - 61, - 1, - 2, - 57, - 53, - 65, - 1, - 2, - 44, - 36, - 40, - 1, - 2, - 44, - 48, - 36, - 1, - 2, - 42, - 44, - 40, - 1, - 2, - 42, - 46, - 44, - 1, - 2, - 35, - 48, - 50, - 1, - 2, - 35, - 36, - 48, - 1, - 2, - 35, - 46, - 42, - 1, - 2, - 35, - 50, - 46, - 1, - 2, - 45, - 41, - 37, - 1, - 2, - 45, - 37, - 49, - 1, - 2, - 38, - 39, - 43, - 1, - 2, - 38, - 43, - 47, - 1, - 2, - 47, - 37, - 38, - 1, - 2, - 47, - 49, - 37, - 1, - 2, - 43, - 39, - 41, - 1, - 2, - 43, - 41, - 45, - 1, - 2, - 49, - 47, - 43, - 1, - 2, - 49, - 43, - 45, - 1, - 2, - 46, - 48, - 44, - 1, - 2, - 46, - 50, - 48, - 1 - ] + "metadata": { + "formatVersion": 3 + }, + "materials": [ + { + "DbgColor": 15658734, + "DbgIndex": 0, + "DbgName": "Plastic", + "colorDiffuse": [ + 0.301961, + 0.301961, + 0.301961 + ], + "colorSpecular": [ + 0.401201, + 0.401201, + 0.401201 + ], + "shading": "Lambert", + "specularCoef": 50, + "opacity": 1.0, + "vertexColors": false + }, + { + "DbgColor": 15658734, + "DbgIndex": 1, + "DbgName": "ServoMaterial", + "colorDiffuse": [ + 0.14, + 0.14, + 0.14 + ], + "colorSpecular": [ + 0.168737, + 0.168737, + 0.168737 + ], + "shading": "Lambert", + "specularCoef": 50, + "opacity": 1.0, + "vertexColors": false + } + ], + "normals": [], + "colors": [], + "uvs": [], + "vertices": [ + 0.0156138, + -0.011514, + 0.0201599, + 0.0156134, + -0.0373797, + 0.0201595, + 0.0116704, + -0.0403762, + 0.0201594, + -0.0161016, + -0.0403757, + 0.0201594, + -0.0041009, + -0.0116714, + 0.0201599, + -0.00899, + -0.0072552, + 0.02016, + -0.0091475, + 0.0045736, + 0.0201602, + -0.0064663, + 0.0080434, + 0.0201603, + 0.0058357, + 0.0080432, + 0.0201603, + 0.0059935, + 0.0146673, + 0.0201604, + -0.0102514, + 0.0130904, + 0.0201604, + -0.014839, + 0.0107247, + 0.0201603, + -0.0161008, + 0.0073235, + 0.0201603, + 0.0156138, + -0.0115133, + -0.0198866, + 0.0156134, + -0.037379, + -0.019887, + 0.0116704, + -0.0403755, + -0.0198871, + -0.0161016, + -0.040375, + -0.0198871, + -0.0041009, + -0.0116707, + -0.0198866, + -0.00899, + -0.0072545, + -0.0198865, + -0.0091475, + 0.0045743, + -0.0198863, + -0.0064663, + 0.0080441, + -0.0198863, + 0.0058357, + 0.0080439, + -0.0198863, + 0.0059935, + 0.014668, + -0.0198861, + -0.0102514, + 0.0130911, + -0.0198862, + -0.014839, + 0.0107254, + -0.0198862, + -0.0161008, + 0.0073242, + -0.0198863, + -0.0161016, + -0.0403754, + 0.0001362, + -0.02011, + -0.0119166, + 0.0121506, + -0.0210102, + -0.0162362, + 0.0041412, + -0.0210102, + -0.016236, + -0.0038681, + -0.02011, + -0.0119162, + -0.0118773, + -0.0201106, + -0.0454278, + 0.01215, + -0.0210107, + -0.0480778, + 0.0041407, + -0.0210107, + -0.0480777, + -0.0038686, + -0.0201106, + -0.0454274, + -0.0118779, + -0.0150266, + -0.0472415, + 0.0225037, + -0.0150274, + -0.0472399, + -0.0278544, + -0.0150266, + -0.0726358, + 0.0225028, + -0.0150274, + -0.0726342, + -0.0278553, + -0.0106236, + -0.0726342, + -0.0278553, + -0.0106236, + -0.0472399, + -0.0278545, + -0.0106228, + -0.0726359, + 0.0225027, + -0.0106229, + -0.0472416, + 0.0225036, + -0.0106235, + -0.0778283, + -0.0219414, + -0.0106235, + -0.0422107, + -0.0219401, + -0.0106229, + -0.0778296, + 0.0165884, + -0.0106229, + -0.0422119, + 0.0165896, + -0.0150273, + -0.0778283, + -0.0219413, + -0.0150273, + -0.0422107, + -0.0219401, + -0.0150267, + -0.0778296, + 0.0165884, + -0.0150267, + -0.0422119, + 0.0165897, + 0.0102081, + -0.0422124, + 0.0165897, + 0.0102081, + -0.07783, + 0.0165884, + 0.0102075, + -0.0422111, + -0.0219401, + 0.0102075, + -0.0778288, + -0.0219413, + 0.0146119, + -0.0422124, + 0.0165896, + 0.0146119, + -0.07783, + 0.0165884, + 0.0146113, + -0.0422111, + -0.0219401, + 0.0146113, + -0.0778288, + -0.0219414, + 0.014612, + -0.047242, + 0.0225036, + 0.014612, + -0.0726363, + 0.0225027, + 0.0146112, + -0.0472403, + -0.0278545, + 0.0146112, + -0.0726346, + -0.0278553, + 0.0102074, + -0.0726346, + -0.0278553, + 0.0102082, + -0.0726363, + 0.0225028, + 0.0102074, + -0.0472403, + -0.0278544, + 0.0102082, + -0.047242, + 0.0225037, + -0.0183666, + -0.0726342, + -0.0278553, + -0.0183658, + -0.0726358, + 0.0225028, + -0.0183666, + -0.0472399, + -0.0278544, + -0.0183658, + -0.0472415, + 0.0225037, + 0.0176078, + -0.0726346, + -0.0278554, + 0.0176078, + -0.0472403, + -0.0278545, + 0.0176086, + -0.0726363, + 0.0225027, + 0.0176086, + -0.047242, + 0.0225035, + 0.012489, + 0.0116448, + 0.0180959, + -0.0129053, + 0.0116448, + 0.0180963, + 0.0124889, + -0.0387132, + 0.0180942, + -0.0129054, + -0.0387132, + 0.0180947, + 0.0124888, + 0.0116456, + -0.0178785, + 0.0124888, + -0.0387125, + -0.0178802, + -0.0129054, + 0.0116456, + -0.0178781, + -0.0129055, + -0.0387125, + -0.0178798, + 0.0124889, + 0.0116451, + 0.0106955, + 0.0124888, + -0.038713, + 0.0106938, + -0.0129054, + 0.011645, + 0.0106959, + -0.0129055, + -0.038713, + 0.0106943, + -0.0129054, + -0.0387131, + 0.015098, + 0.0124889, + -0.0387131, + 0.0150976, + -0.0129053, + 0.0116449, + 0.0150997, + 0.012489, + 0.0116449, + 0.0150992, + -0.0180994, + -0.032799, + 0.0150983, + 0.0175183, + -0.032799, + 0.0150977, + -0.0180993, + 0.0057308, + 0.0150996, + 0.0175184, + 0.0057308, + 0.015099, + -0.0180994, + -0.0327989, + 0.0106946, + 0.0175182, + -0.0327988, + 0.0106939, + -0.0180993, + 0.0057309, + 0.0106958, + 0.0175183, + 0.0057309, + 0.0106952, + 0.0175183, + 0.0057313, + -0.0145396, + -0.0180993, + 0.0057313, + -0.014539, + 0.0175182, + -0.0327984, + -0.0145409, + -0.0180994, + -0.0327984, + -0.0145402, + 0.0175184, + 0.0057312, + -0.0101359, + -0.0180993, + 0.0057312, + -0.0101352, + 0.0175183, + -0.0327985, + -0.0101371, + -0.0180994, + -0.0327985, + -0.0101365, + 0.012489, + 0.0116454, + -0.0101356, + -0.0129053, + 0.0116454, + -0.0101351, + 0.0124889, + -0.0387127, + -0.0101372, + -0.0129054, + -0.0387127, + -0.0101368, + -0.0129055, + -0.0387126, + -0.0145406, + -0.0129054, + 0.0116455, + -0.0145389, + 0.0124888, + -0.0387126, + -0.014541, + 0.0124889, + 0.0116455, + -0.0145393 + ], + "faces": [ + 2, + 3, + 11, + 12, + 0, + 2, + 5, + 11, + 3, + 0, + 2, + 2, + 5, + 3, + 0, + 2, + 5, + 10, + 11, + 0, + 2, + 7, + 9, + 10, + 0, + 2, + 6, + 7, + 10, + 0, + 2, + 5, + 6, + 10, + 0, + 2, + 2, + 4, + 5, + 0, + 2, + 8, + 9, + 7, + 0, + 2, + 2, + 0, + 4, + 0, + 2, + 1, + 0, + 2, + 0, + 2, + 16, + 25, + 24, + 0, + 2, + 18, + 16, + 24, + 0, + 2, + 15, + 16, + 18, + 0, + 2, + 18, + 24, + 23, + 0, + 2, + 20, + 23, + 22, + 0, + 2, + 19, + 23, + 20, + 0, + 2, + 18, + 23, + 19, + 0, + 2, + 15, + 18, + 17, + 0, + 2, + 21, + 20, + 22, + 0, + 2, + 15, + 17, + 13, + 0, + 2, + 14, + 15, + 13, + 0, + 2, + 2, + 26, + 15, + 0, + 2, + 15, + 26, + 16, + 0, + 2, + 2, + 3, + 26, + 0, + 2, + 26, + 32, + 33, + 0, + 2, + 26, + 31, + 32, + 0, + 2, + 3, + 31, + 26, + 0, + 2, + 26, + 33, + 34, + 0, + 2, + 16, + 26, + 34, + 0, + 2, + 28, + 30, + 29, + 0, + 2, + 28, + 27, + 30, + 0, + 2, + 12, + 30, + 27, + 0, + 2, + 12, + 25, + 30, + 0, + 2, + 3, + 27, + 31, + 0, + 2, + 3, + 12, + 27, + 0, + 2, + 27, + 28, + 31, + 0, + 2, + 28, + 32, + 31, + 0, + 2, + 28, + 29, + 33, + 0, + 2, + 28, + 33, + 32, + 0, + 2, + 29, + 30, + 34, + 0, + 2, + 29, + 34, + 33, + 0, + 2, + 16, + 34, + 30, + 0, + 2, + 16, + 30, + 25, + 0, + 2, + 10, + 24, + 11, + 0, + 2, + 10, + 23, + 24, + 0, + 2, + 11, + 24, + 25, + 0, + 2, + 11, + 25, + 12, + 0, + 2, + 1, + 15, + 14, + 0, + 2, + 1, + 2, + 15, + 0, + 2, + 0, + 14, + 13, + 0, + 2, + 0, + 1, + 14, + 0, + 2, + 0, + 17, + 4, + 0, + 2, + 0, + 13, + 17, + 0, + 2, + 4, + 18, + 5, + 0, + 2, + 4, + 17, + 18, + 0, + 2, + 8, + 22, + 9, + 0, + 2, + 8, + 21, + 22, + 0, + 2, + 5, + 19, + 6, + 0, + 2, + 5, + 18, + 19, + 0, + 2, + 6, + 20, + 7, + 0, + 2, + 6, + 19, + 20, + 0, + 2, + 7, + 21, + 8, + 0, + 2, + 7, + 20, + 21, + 0, + 2, + 9, + 23, + 10, + 0, + 2, + 9, + 22, + 23, + 0, + 2, + 103, + 105, + 101, + 1, + 2, + 103, + 101, + 99, + 1, + 2, + 100, + 102, + 106, + 1, + 2, + 100, + 106, + 104, + 1, + 2, + 106, + 110, + 108, + 1, + 2, + 106, + 108, + 104, + 1, + 2, + 102, + 112, + 111, + 1, + 2, + 102, + 100, + 112, + 1, + 2, + 111, + 110, + 106, + 1, + 2, + 111, + 106, + 102, + 1, + 2, + 104, + 108, + 112, + 1, + 2, + 104, + 112, + 100, + 1, + 2, + 114, + 107, + 103, + 1, + 2, + 114, + 103, + 99, + 1, + 2, + 101, + 113, + 114, + 1, + 2, + 101, + 114, + 99, + 1, + 2, + 107, + 109, + 105, + 1, + 2, + 107, + 105, + 103, + 1, + 2, + 105, + 109, + 113, + 1, + 2, + 105, + 113, + 101, + 1, + 2, + 92, + 88, + 84, + 1, + 2, + 92, + 84, + 96, + 1, + 2, + 90, + 88, + 92, + 1, + 2, + 90, + 92, + 94, + 1, + 2, + 96, + 84, + 83, + 1, + 2, + 96, + 83, + 98, + 1, + 2, + 83, + 90, + 94, + 1, + 2, + 83, + 94, + 98, + 1, + 2, + 93, + 89, + 85, + 1, + 2, + 93, + 85, + 97, + 1, + 2, + 86, + 87, + 91, + 1, + 2, + 86, + 91, + 95, + 1, + 2, + 95, + 85, + 86, + 1, + 2, + 95, + 97, + 85, + 1, + 2, + 91, + 87, + 89, + 1, + 2, + 91, + 89, + 93, + 1, + 2, + 97, + 95, + 91, + 1, + 2, + 97, + 91, + 93, + 1, + 2, + 94, + 92, + 96, + 1, + 2, + 94, + 96, + 98, + 1, + 2, + 82, + 79, + 80, + 1, + 2, + 82, + 81, + 79, + 1, + 2, + 76, + 78, + 77, + 1, + 2, + 76, + 77, + 75, + 1, + 2, + 82, + 77, + 78, + 1, + 2, + 82, + 80, + 77, + 1, + 2, + 81, + 76, + 75, + 1, + 2, + 81, + 75, + 79, + 1, + 2, + 79, + 77, + 80, + 1, + 2, + 79, + 75, + 77, + 1, + 2, + 82, + 78, + 81, + 1, + 2, + 81, + 78, + 76, + 1, + 2, + 67, + 71, + 68, + 1, + 2, + 68, + 71, + 73, + 1, + 2, + 70, + 72, + 69, + 1, + 2, + 70, + 74, + 72, + 1, + 2, + 68, + 73, + 74, + 1, + 2, + 68, + 74, + 70, + 1, + 2, + 67, + 72, + 71, + 1, + 2, + 67, + 69, + 72, + 1, + 2, + 73, + 71, + 72, + 1, + 2, + 73, + 72, + 74, + 1, + 2, + 67, + 70, + 69, + 1, + 2, + 67, + 68, + 70, + 1, + 2, + 55, + 53, + 57, + 1, + 2, + 55, + 51, + 53, + 1, + 2, + 52, + 54, + 58, + 1, + 2, + 52, + 58, + 56, + 1, + 2, + 58, + 62, + 60, + 1, + 2, + 58, + 60, + 56, + 1, + 2, + 54, + 64, + 63, + 1, + 2, + 54, + 52, + 64, + 1, + 2, + 63, + 62, + 58, + 1, + 2, + 63, + 58, + 54, + 1, + 2, + 56, + 60, + 64, + 1, + 2, + 56, + 64, + 52, + 1, + 2, + 66, + 55, + 59, + 1, + 2, + 66, + 51, + 55, + 1, + 2, + 53, + 66, + 65, + 1, + 2, + 53, + 51, + 66, + 1, + 2, + 59, + 57, + 61, + 1, + 2, + 59, + 55, + 57, + 1, + 2, + 57, + 65, + 61, + 1, + 2, + 57, + 53, + 65, + 1, + 2, + 44, + 36, + 40, + 1, + 2, + 44, + 48, + 36, + 1, + 2, + 42, + 44, + 40, + 1, + 2, + 42, + 46, + 44, + 1, + 2, + 35, + 48, + 50, + 1, + 2, + 35, + 36, + 48, + 1, + 2, + 35, + 46, + 42, + 1, + 2, + 35, + 50, + 46, + 1, + 2, + 45, + 41, + 37, + 1, + 2, + 45, + 37, + 49, + 1, + 2, + 38, + 39, + 43, + 1, + 2, + 38, + 43, + 47, + 1, + 2, + 47, + 37, + 38, + 1, + 2, + 47, + 49, + 37, + 1, + 2, + 43, + 39, + 41, + 1, + 2, + 43, + 41, + 45, + 1, + 2, + 49, + 47, + 43, + 1, + 2, + 49, + 43, + 45, + 1, + 2, + 46, + 48, + 44, + 1, + 2, + 46, + 50, + 48, + 1 + ] } diff --git a/src/client/components/localisation/darwin_robot/right_arm/view_model.ts b/src/client/components/localisation/darwin_robot/right_arm/view_model.ts index 5a1ab461..4b96ac53 100644 --- a/src/client/components/localisation/darwin_robot/right_arm/view_model.ts +++ b/src/client/components/localisation/darwin_robot/right_arm/view_model.ts @@ -29,7 +29,7 @@ export class RightArmViewModel { const { geometry, materials } = this.rightShoulderGeometryAndMaterial const mesh = new Mesh(geometry, new MultiMaterial(materials)) mesh.position.set(-0.082, 0, 0) - mesh.rotation.set(-this.model.motors.rightShoulderPitch.angle, 0, 0) + mesh.rotation.set(this.model.motors.rightShoulderPitch.angle - Math.PI / 2, 0, 0) mesh.add(this.rightUpperArm) return mesh } @@ -39,7 +39,7 @@ export class RightArmViewModel { const { geometry, materials } = this.rightUpperArmGeometryAndMaterial const mesh = new Mesh(geometry, new MultiMaterial(materials)) mesh.position.set(0, -0.016, 0) - mesh.rotation.set(0, 0, -this.model.motors.rightShoulderRoll.angle) + mesh.rotation.set(0, 0, this.model.motors.rightShoulderRoll.angle) mesh.add(this.rightLowerArm) return mesh } @@ -49,7 +49,7 @@ export class RightArmViewModel { const { geometry, materials } = this.rightLowerArmGeometryAndMaterial const mesh = new Mesh(geometry, new MultiMaterial(materials)) mesh.position.set(0, -0.06, 0.016) - mesh.rotation.set(-this.model.motors.rightElbow.angle, 0, 0) + mesh.rotation.set(this.model.motors.rightElbow.angle, 0, 0) return mesh } diff --git a/src/client/components/localisation/darwin_robot/right_leg/config/right_ankle.json b/src/client/components/localisation/darwin_robot/right_leg/config/right_ankle.json index a198f914..3c910cea 100644 --- a/src/client/components/localisation/darwin_robot/right_leg/config/right_ankle.json +++ b/src/client/components/localisation/darwin_robot/right_leg/config/right_ankle.json @@ -1,923 +1,923 @@ { - "metadata": { - "formatVersion": 3 - }, - "materials": [ - { - "DbgColor": 15658734, - "DbgIndex": 0, - "DbgName": "ServoMaterial", - "colorDiffuse": [ - 0.14, - 0.14, - 0.14 - ], - "colorSpecular": [ - 0.168737, - 0.168737, - 0.168737 - ], - "shading": "Lambert", - "specularCoef": 50, - "opacity": 1.0, - "vertexColors": false - } - ], - "normals": [], - "colors": [], - "uvs": [], - "vertices": [ - -0.0180496, - -0.0121957, - 0.0214751, - -0.0180517, - -0.0122, - -0.0191605, - 0.0175659, - -0.0122, - -0.0191618, - 0.017568, - -0.0121957, - 0.0214738, - -0.0180515, - 0.0384664, - -0.014134, - 0.0175662, - 0.0384664, - -0.0141352, - 0.0175655, - 0.0268706, - -0.026837, - 0.0175637, - 0.0268669, - -0.0618523, - -0.018054, - 0.0268669, - -0.0618505, - -0.0180521, - 0.0268706, - -0.0268352, - 0.0175655, - -0.006374, - -0.0268336, - 0.0175637, - -0.0063777, - -0.0618488, - -0.018054, - -0.0063777, - -0.061847, - -0.0180521, - -0.006374, - -0.0268317, - -0.0180496, - 0.0122084, - 0.0214725, - 0.017568, - 0.0122084, - 0.0214713, - 0.0175678, - 0.012208, - 0.0173237, - -0.0180498, - 0.0122079, - 0.017325, - -0.0155939, - 0.0384664, - -0.0141339, - 0.0151016, - 0.0384664, - -0.0141353, - 0.0151018, - 0.012208, - 0.0173236, - -0.0155936, - 0.0122079, - 0.017325, - 0.0151015, - 0.0122073, - 0.0113889, - -0.0155939, - 0.0122073, - 0.0113905, - -0.0155939, - 0.0324518, - 0.0113884, - 0.0151015, - 0.0324518, - 0.0113868, - 0.0150999, - 0.0324486, - -0.0190557, - -0.0155955, - 0.0324487, - -0.0190543, - -0.0180517, - 0.0324486, - -0.0190541, - 0.0175659, - 0.0324486, - -0.0190558, - -0.0155936, - 0.0324524, - 0.0173229, - -0.0180498, - 0.0324524, - 0.0173228, - 0.0175678, - 0.0324525, - 0.0173216, - 0.0151018, - 0.0324525, - 0.0173215, - -0.0180501, - 0.0384691, - 0.0113879, - -0.0155937, - 0.0384691, - 0.0113878, - 0.0151018, - 0.0384691, - 0.0113862, - 0.0175675, - 0.0384691, - 0.011386, - 0.0175653, - 0.0268703, - -0.0296628, - 0.0175638, - 0.0268672, - -0.0590257, - -0.0180538, - 0.0268672, - -0.0590239, - -0.0180523, - 0.0268703, - -0.029661, - 0.0175653, - -0.0063743, - -0.0296594, - 0.0175638, - -0.0063774, - -0.0590223, - -0.0180538, - -0.0063774, - -0.0590204, - -0.0180523, - -0.0063743, - -0.0296575, - 0.0125344, - 0.032694, - -0.0590261, - 0.0125359, - 0.032697, - -0.0296632, - -0.0128584, - 0.032697, - -0.0296619, - -0.0128599, - 0.0326939, - -0.0590248, - 0.0125344, - -0.0122042, - -0.0590214, - 0.0125359, - -0.0122011, - -0.0296585, - -0.0128584, - -0.0122011, - -0.0296572, - -0.0128599, - -0.0122042, - -0.05902, - -0.01286, - -0.0122045, - -0.0618466, - -0.0128582, - -0.0122008, - -0.0268314, - -0.01286, - 0.0326937, - -0.0618513, - -0.0128582, - 0.0326973, - -0.0268361, - 0.0125342, - -0.0122044, - -0.061848, - 0.0125342, - 0.0326937, - -0.0618527, - 0.0125361, - 0.0326973, - -0.0268374, - 0.0125361, - -0.0122008, - -0.0268327, - 0.0097484, - 0.00878, - -0.0157665, - 0.0097476, - 0.0087784, - -0.0307529, - 0.0097476, - 0.0147392, - -0.0307535, - 0.0097484, - 0.0147408, - -0.0157672, - -0.0100694, - 0.0087799, - -0.0157655, - -0.0100702, - 0.0087784, - -0.0307519, - -0.0100702, - 0.0147392, - -0.0307525, - -0.0100694, - 0.0147407, - -0.0157661, - -0.0100694, - 0.0318251, - -0.0157679, - -0.0100702, - 0.0318235, - -0.0307543, - -0.0100702, - 0.0258627, - -0.0307536, - -0.0100694, - 0.0258643, - -0.0157673, - 0.0097485, - 0.0318251, - -0.0157689, - 0.0097477, - 0.0318236, - -0.0307553, - 0.0097477, - 0.0258628, - -0.0307547, - 0.0097484, - 0.0258644, - -0.0157683 - ], - "faces": [ - 2, - 0, - 14, - 1, - 0, - 2, - 15, - 3, - 2, - 0, - 2, - 1, - 14, - 17, - 0, - 2, - 2, - 16, - 15, - 0, - 2, - 16, - 20, - 15, - 0, - 2, - 21, - 17, - 14, - 0, - 2, - 22, - 33, - 25, - 0, - 2, - 27, - 35, - 24, - 0, - 2, - 5, - 26, - 19, - 0, - 2, - 4, - 18, - 27, - 0, - 2, - 4, - 27, - 28, - 0, - 2, - 1, - 28, - 27, - 0, - 2, - 1, - 17, - 28, - 0, - 2, - 5, - 29, - 26, - 0, - 2, - 2, - 26, - 29, - 0, - 2, - 2, - 29, - 16, - 0, - 2, - 33, - 36, - 25, - 0, - 2, - 35, - 30, - 24, - 0, - 2, - 33, - 22, - 20, - 0, - 2, - 35, - 27, - 18, - 0, - 2, - 31, - 28, - 17, - 0, - 2, - 37, - 29, - 5, - 0, - 2, - 75, - 74, - 77, - 0, - 2, - 75, - 77, - 76, - 0, - 2, - 73, - 70, - 71, - 0, - 2, - 73, - 71, - 72, - 0, - 2, - 77, - 73, - 72, - 0, - 2, - 77, - 72, - 76, - 0, - 2, - 75, - 71, - 70, - 0, - 2, - 75, - 70, - 74, - 0, - 2, - 64, - 68, - 69, - 0, - 2, - 64, - 69, - 65, - 0, - 2, - 62, - 66, - 67, - 0, - 2, - 62, - 67, - 63, - 0, - 2, - 66, - 69, - 68, - 0, - 2, - 66, - 68, - 67, - 0, - 2, - 64, - 65, - 62, - 0, - 2, - 64, - 62, - 63, - 0, - 2, - 46, - 47, - 51, - 0, - 2, - 46, - 51, - 50, - 0, - 2, - 56, - 46, - 59, - 0, - 2, - 56, - 49, - 46, - 0, - 2, - 46, - 48, - 47, - 0, - 2, - 46, - 49, - 48, - 0, - 2, - 47, - 48, - 57, - 0, - 2, - 47, - 57, - 60, - 0, - 2, - 55, - 51, - 61, - 0, - 2, - 55, - 52, - 51, - 0, - 2, - 54, - 58, - 50, - 0, - 2, - 54, - 50, - 53, - 0, - 2, - 50, - 52, - 53, - 0, - 2, - 50, - 51, - 52, - 0, - 2, - 38, - 42, - 51, - 0, - 2, - 38, - 51, - 47, - 0, - 2, - 6, - 38, - 47, - 0, - 2, - 6, - 47, - 60, - 0, - 2, - 6, - 60, - 61, - 0, - 2, - 6, - 61, - 10, - 0, - 2, - 10, - 61, - 51, - 0, - 2, - 10, - 51, - 42, - 0, - 2, - 11, - 43, - 50, - 0, - 2, - 11, - 50, - 58, - 0, - 2, - 39, - 46, - 50, - 0, - 2, - 39, - 50, - 43, - 0, - 2, - 7, - 11, - 58, - 0, - 2, - 7, - 58, - 59, - 0, - 2, - 7, - 59, - 46, - 0, - 2, - 7, - 46, - 39, - 0, - 2, - 9, - 57, - 48, - 0, - 2, - 9, - 48, - 41, - 0, - 2, - 9, - 13, - 55, - 0, - 2, - 9, - 55, - 57, - 0, - 2, - 13, - 45, - 52, - 0, - 2, - 13, - 52, - 55, - 0, - 2, - 8, - 40, - 49, - 0, - 2, - 8, - 49, - 56, - 0, - 2, - 12, - 54, - 53, - 0, - 2, - 12, - 53, - 44, - 0, - 2, - 8, - 54, - 12, - 0, - 2, - 8, - 56, - 54, - 0, - 2, - 40, - 44, - 53, - 0, - 2, - 40, - 53, - 49, - 0, - 2, - 55, - 60, - 57, - 0, - 2, - 55, - 61, - 60, - 0, - 2, - 56, - 58, - 54, - 0, - 2, - 56, - 59, - 58, - 0, - 2, - 48, - 53, - 52, - 0, - 2, - 48, - 49, - 53, - 0, - 2, - 40, - 8, - 12, - 0, - 2, - 40, - 12, - 44, - 0, - 2, - 9, - 41, - 45, - 0, - 2, - 9, - 45, - 13, - 0, - 2, - 38, - 6, - 10, - 0, - 2, - 38, - 10, - 42, - 0, - 2, - 7, - 39, - 43, - 0, - 2, - 7, - 43, - 11, - 0, - 2, - 36, - 33, - 32, - 0, - 2, - 36, - 32, - 37, - 0, - 2, - 30, - 35, - 34, - 0, - 2, - 30, - 34, - 31, - 0, - 2, - 29, - 37, - 16, - 0, - 2, - 37, - 32, - 16, - 0, - 2, - 28, - 31, - 34, - 0, - 2, - 28, - 34, - 4, - 0, - 2, - 1, - 27, - 26, - 0, - 2, - 1, - 26, - 2, - 0, - 2, - 26, - 25, - 19, - 0, - 2, - 25, - 36, - 19, - 0, - 2, - 24, - 25, - 26, - 0, - 2, - 24, - 26, - 27, - 0, - 2, - 23, - 24, - 30, - 0, - 2, - 23, - 30, - 21, - 0, - 2, - 23, - 22, - 25, - 0, - 2, - 23, - 25, - 24, - 0, - 2, - 14, - 15, - 20, - 0, - 2, - 14, - 20, - 21, - 0, - 2, - 20, - 22, - 23, - 0, - 2, - 20, - 23, - 21, - 0, - 2, - 36, - 37, - 5, - 0, - 2, - 36, - 5, - 19, - 0, - 2, - 34, - 35, - 18, - 0, - 2, - 34, - 18, - 4, - 0, - 2, - 32, - 33, - 20, - 0, - 2, - 32, - 20, - 16, - 0, - 2, - 30, - 31, - 17, - 0, - 2, - 30, - 17, - 21, - 0, - 2, - 14, - 0, - 3, - 0, - 2, - 14, - 3, - 15, - 0, - 2, - 0, - 1, - 2, - 0, - 2, - 0, - 2, - 3, - 0, - 3, - 41, - 48, - 52, - 45, - 0 - ] + "metadata": { + "formatVersion": 3 + }, + "materials": [ + { + "DbgColor": 15658734, + "DbgIndex": 0, + "DbgName": "ServoMaterial", + "colorDiffuse": [ + 0.14, + 0.14, + 0.14 + ], + "colorSpecular": [ + 0.168737, + 0.168737, + 0.168737 + ], + "shading": "Lambert", + "specularCoef": 50, + "opacity": 1.0, + "vertexColors": false + } + ], + "normals": [], + "colors": [], + "uvs": [], + "vertices": [ + -0.0180496, + -0.0121957, + 0.0214751, + -0.0180517, + -0.0122, + -0.0191605, + 0.0175659, + -0.0122, + -0.0191618, + 0.017568, + -0.0121957, + 0.0214738, + -0.0180515, + 0.0384664, + -0.014134, + 0.0175662, + 0.0384664, + -0.0141352, + 0.0175655, + 0.0268706, + -0.026837, + 0.0175637, + 0.0268669, + -0.0618523, + -0.018054, + 0.0268669, + -0.0618505, + -0.0180521, + 0.0268706, + -0.0268352, + 0.0175655, + -0.006374, + -0.0268336, + 0.0175637, + -0.0063777, + -0.0618488, + -0.018054, + -0.0063777, + -0.061847, + -0.0180521, + -0.006374, + -0.0268317, + -0.0180496, + 0.0122084, + 0.0214725, + 0.017568, + 0.0122084, + 0.0214713, + 0.0175678, + 0.012208, + 0.0173237, + -0.0180498, + 0.0122079, + 0.017325, + -0.0155939, + 0.0384664, + -0.0141339, + 0.0151016, + 0.0384664, + -0.0141353, + 0.0151018, + 0.012208, + 0.0173236, + -0.0155936, + 0.0122079, + 0.017325, + 0.0151015, + 0.0122073, + 0.0113889, + -0.0155939, + 0.0122073, + 0.0113905, + -0.0155939, + 0.0324518, + 0.0113884, + 0.0151015, + 0.0324518, + 0.0113868, + 0.0150999, + 0.0324486, + -0.0190557, + -0.0155955, + 0.0324487, + -0.0190543, + -0.0180517, + 0.0324486, + -0.0190541, + 0.0175659, + 0.0324486, + -0.0190558, + -0.0155936, + 0.0324524, + 0.0173229, + -0.0180498, + 0.0324524, + 0.0173228, + 0.0175678, + 0.0324525, + 0.0173216, + 0.0151018, + 0.0324525, + 0.0173215, + -0.0180501, + 0.0384691, + 0.0113879, + -0.0155937, + 0.0384691, + 0.0113878, + 0.0151018, + 0.0384691, + 0.0113862, + 0.0175675, + 0.0384691, + 0.011386, + 0.0175653, + 0.0268703, + -0.0296628, + 0.0175638, + 0.0268672, + -0.0590257, + -0.0180538, + 0.0268672, + -0.0590239, + -0.0180523, + 0.0268703, + -0.029661, + 0.0175653, + -0.0063743, + -0.0296594, + 0.0175638, + -0.0063774, + -0.0590223, + -0.0180538, + -0.0063774, + -0.0590204, + -0.0180523, + -0.0063743, + -0.0296575, + 0.0125344, + 0.032694, + -0.0590261, + 0.0125359, + 0.032697, + -0.0296632, + -0.0128584, + 0.032697, + -0.0296619, + -0.0128599, + 0.0326939, + -0.0590248, + 0.0125344, + -0.0122042, + -0.0590214, + 0.0125359, + -0.0122011, + -0.0296585, + -0.0128584, + -0.0122011, + -0.0296572, + -0.0128599, + -0.0122042, + -0.05902, + -0.01286, + -0.0122045, + -0.0618466, + -0.0128582, + -0.0122008, + -0.0268314, + -0.01286, + 0.0326937, + -0.0618513, + -0.0128582, + 0.0326973, + -0.0268361, + 0.0125342, + -0.0122044, + -0.061848, + 0.0125342, + 0.0326937, + -0.0618527, + 0.0125361, + 0.0326973, + -0.0268374, + 0.0125361, + -0.0122008, + -0.0268327, + 0.0097484, + 0.00878, + -0.0157665, + 0.0097476, + 0.0087784, + -0.0307529, + 0.0097476, + 0.0147392, + -0.0307535, + 0.0097484, + 0.0147408, + -0.0157672, + -0.0100694, + 0.0087799, + -0.0157655, + -0.0100702, + 0.0087784, + -0.0307519, + -0.0100702, + 0.0147392, + -0.0307525, + -0.0100694, + 0.0147407, + -0.0157661, + -0.0100694, + 0.0318251, + -0.0157679, + -0.0100702, + 0.0318235, + -0.0307543, + -0.0100702, + 0.0258627, + -0.0307536, + -0.0100694, + 0.0258643, + -0.0157673, + 0.0097485, + 0.0318251, + -0.0157689, + 0.0097477, + 0.0318236, + -0.0307553, + 0.0097477, + 0.0258628, + -0.0307547, + 0.0097484, + 0.0258644, + -0.0157683 + ], + "faces": [ + 2, + 0, + 14, + 1, + 0, + 2, + 15, + 3, + 2, + 0, + 2, + 1, + 14, + 17, + 0, + 2, + 2, + 16, + 15, + 0, + 2, + 16, + 20, + 15, + 0, + 2, + 21, + 17, + 14, + 0, + 2, + 22, + 33, + 25, + 0, + 2, + 27, + 35, + 24, + 0, + 2, + 5, + 26, + 19, + 0, + 2, + 4, + 18, + 27, + 0, + 2, + 4, + 27, + 28, + 0, + 2, + 1, + 28, + 27, + 0, + 2, + 1, + 17, + 28, + 0, + 2, + 5, + 29, + 26, + 0, + 2, + 2, + 26, + 29, + 0, + 2, + 2, + 29, + 16, + 0, + 2, + 33, + 36, + 25, + 0, + 2, + 35, + 30, + 24, + 0, + 2, + 33, + 22, + 20, + 0, + 2, + 35, + 27, + 18, + 0, + 2, + 31, + 28, + 17, + 0, + 2, + 37, + 29, + 5, + 0, + 2, + 75, + 74, + 77, + 0, + 2, + 75, + 77, + 76, + 0, + 2, + 73, + 70, + 71, + 0, + 2, + 73, + 71, + 72, + 0, + 2, + 77, + 73, + 72, + 0, + 2, + 77, + 72, + 76, + 0, + 2, + 75, + 71, + 70, + 0, + 2, + 75, + 70, + 74, + 0, + 2, + 64, + 68, + 69, + 0, + 2, + 64, + 69, + 65, + 0, + 2, + 62, + 66, + 67, + 0, + 2, + 62, + 67, + 63, + 0, + 2, + 66, + 69, + 68, + 0, + 2, + 66, + 68, + 67, + 0, + 2, + 64, + 65, + 62, + 0, + 2, + 64, + 62, + 63, + 0, + 2, + 46, + 47, + 51, + 0, + 2, + 46, + 51, + 50, + 0, + 2, + 56, + 46, + 59, + 0, + 2, + 56, + 49, + 46, + 0, + 2, + 46, + 48, + 47, + 0, + 2, + 46, + 49, + 48, + 0, + 2, + 47, + 48, + 57, + 0, + 2, + 47, + 57, + 60, + 0, + 2, + 55, + 51, + 61, + 0, + 2, + 55, + 52, + 51, + 0, + 2, + 54, + 58, + 50, + 0, + 2, + 54, + 50, + 53, + 0, + 2, + 50, + 52, + 53, + 0, + 2, + 50, + 51, + 52, + 0, + 2, + 38, + 42, + 51, + 0, + 2, + 38, + 51, + 47, + 0, + 2, + 6, + 38, + 47, + 0, + 2, + 6, + 47, + 60, + 0, + 2, + 6, + 60, + 61, + 0, + 2, + 6, + 61, + 10, + 0, + 2, + 10, + 61, + 51, + 0, + 2, + 10, + 51, + 42, + 0, + 2, + 11, + 43, + 50, + 0, + 2, + 11, + 50, + 58, + 0, + 2, + 39, + 46, + 50, + 0, + 2, + 39, + 50, + 43, + 0, + 2, + 7, + 11, + 58, + 0, + 2, + 7, + 58, + 59, + 0, + 2, + 7, + 59, + 46, + 0, + 2, + 7, + 46, + 39, + 0, + 2, + 9, + 57, + 48, + 0, + 2, + 9, + 48, + 41, + 0, + 2, + 9, + 13, + 55, + 0, + 2, + 9, + 55, + 57, + 0, + 2, + 13, + 45, + 52, + 0, + 2, + 13, + 52, + 55, + 0, + 2, + 8, + 40, + 49, + 0, + 2, + 8, + 49, + 56, + 0, + 2, + 12, + 54, + 53, + 0, + 2, + 12, + 53, + 44, + 0, + 2, + 8, + 54, + 12, + 0, + 2, + 8, + 56, + 54, + 0, + 2, + 40, + 44, + 53, + 0, + 2, + 40, + 53, + 49, + 0, + 2, + 55, + 60, + 57, + 0, + 2, + 55, + 61, + 60, + 0, + 2, + 56, + 58, + 54, + 0, + 2, + 56, + 59, + 58, + 0, + 2, + 48, + 53, + 52, + 0, + 2, + 48, + 49, + 53, + 0, + 2, + 40, + 8, + 12, + 0, + 2, + 40, + 12, + 44, + 0, + 2, + 9, + 41, + 45, + 0, + 2, + 9, + 45, + 13, + 0, + 2, + 38, + 6, + 10, + 0, + 2, + 38, + 10, + 42, + 0, + 2, + 7, + 39, + 43, + 0, + 2, + 7, + 43, + 11, + 0, + 2, + 36, + 33, + 32, + 0, + 2, + 36, + 32, + 37, + 0, + 2, + 30, + 35, + 34, + 0, + 2, + 30, + 34, + 31, + 0, + 2, + 29, + 37, + 16, + 0, + 2, + 37, + 32, + 16, + 0, + 2, + 28, + 31, + 34, + 0, + 2, + 28, + 34, + 4, + 0, + 2, + 1, + 27, + 26, + 0, + 2, + 1, + 26, + 2, + 0, + 2, + 26, + 25, + 19, + 0, + 2, + 25, + 36, + 19, + 0, + 2, + 24, + 25, + 26, + 0, + 2, + 24, + 26, + 27, + 0, + 2, + 23, + 24, + 30, + 0, + 2, + 23, + 30, + 21, + 0, + 2, + 23, + 22, + 25, + 0, + 2, + 23, + 25, + 24, + 0, + 2, + 14, + 15, + 20, + 0, + 2, + 14, + 20, + 21, + 0, + 2, + 20, + 22, + 23, + 0, + 2, + 20, + 23, + 21, + 0, + 2, + 36, + 37, + 5, + 0, + 2, + 36, + 5, + 19, + 0, + 2, + 34, + 35, + 18, + 0, + 2, + 34, + 18, + 4, + 0, + 2, + 32, + 33, + 20, + 0, + 2, + 32, + 20, + 16, + 0, + 2, + 30, + 31, + 17, + 0, + 2, + 30, + 17, + 21, + 0, + 2, + 14, + 0, + 3, + 0, + 2, + 14, + 3, + 15, + 0, + 2, + 0, + 1, + 2, + 0, + 2, + 0, + 2, + 3, + 0, + 3, + 41, + 48, + 52, + 45, + 0 + ] } diff --git a/src/client/components/localisation/darwin_robot/right_leg/config/right_foot.json b/src/client/components/localisation/darwin_robot/right_leg/config/right_foot.json index 0fa60dc0..2bacbeae 100644 --- a/src/client/components/localisation/darwin_robot/right_leg/config/right_foot.json +++ b/src/client/components/localisation/darwin_robot/right_leg/config/right_foot.json @@ -1,982 +1,982 @@ { - "metadata": { - "formatVersion": 3 - }, - "materials": [ - { - "DbgColor": 15658731, - "DbgIndex": 0, - "DbgName": "Plastic", - "colorDiffuse": [ - 0.301961, - 0.301961, - 0.301961 - ], - "colorSpecular": [ - 0.401201, - 0.401201, - 0.401201 - ], - "shading": "Lambert", - "specularCoef": 50, - "opacity": 1.0, - "vertexColors": false - }, - { - "DbgColor": 15658734, - "DbgIndex": 1, - "DbgName": "Metal", - "colorDiffuse": [ - 0.7, - 0.7, - 0.7 - ], - "colorSpecular": [ - 0.168737, - 0.168737, - 0.168737 - ], - "shading": "Lambert", - "specularCoef": 50, - "opacity": 1.0, - "vertexColors": false - } - ], - "normals": [], - "colors": [], - "uvs": [], - "vertices": [ - 0.0087351, - 0.0067732, - 0.024691, - 0.0087339, - -0.0101191, - 0.0246951, - 0.0002876, - -0.013617, - 0.024691, - -0.0081583, - -0.0101179, - 0.0246971, - -0.0116562, - -0.0016371, - 0.024691, - -0.0081571, - 0.0067743, - 0.0246951, - 0.0002892, - 0.0102722, - 0.0246941, - 0.0087349, - 0.0067729, - 0.0225301, - 0.0122328, - -0.0016389, - 0.0225301, - 0.0087337, - -0.0101193, - 0.0225311, - 0.0002873, - -0.0136172, - 0.0225331, - -0.0081585, - -0.0101181, - 0.0225331, - -0.0116564, - -0.0016373, - 0.0225331, - -0.0081573, - 0.0067741, - 0.0225311, - 0.000289, - 0.010272, - 0.0225301, - 0.0002839, - 0.0102669, - -0.0258941, - -0.0081624, - 0.006769, - -0.0258931, - -0.0116615, - -0.0016423, - -0.0258921, - -0.0081636, - -0.0101232, - -0.0258911, - 0.0002823, - -0.0136223, - -0.0258921, - 0.0087286, - -0.0101244, - -0.0258931, - 0.0122277, - -0.001644, - -0.0258941, - 0.0087298, - 0.0067679, - -0.0258951, - 0.0002841, - 0.0102672, - -0.0238471, - -0.0081622, - 0.0067692, - -0.0238461, - -0.0116613, - -0.0016421, - -0.0238451, - -0.0081634, - -0.010123, - -0.0238441, - 0.0002825, - -0.013622, - -0.0238451, - 0.0087288, - -0.0101241, - -0.0238461, - 0.00873, - 0.0067681, - -0.0238481, - -0.010548, - -0.0309107, - 0.0262601, - -0.0105533, - -0.0309159, - -0.0238421, - 0.0112581, - -0.0309122, - 0.0262571, - 0.0112529, - -0.0309175, - -0.0238441, - 0.0112531, - -0.0295256, - -0.0223181, - 0.011258, - -0.0295206, - 0.0246971, - -0.0105481, - -0.0295191, - 0.0246991, - -0.010553, - -0.029524, - -0.0223151, - -0.010551, - -0.0016421, - -0.022311, - -0.0105461, - -0.0016371, - 0.0246961, - 0.01126, - -0.0016387, - 0.0246941, - 0.0112551, - -0.0016436, - -0.0223211, - 0.011255, - -0.0016437, - -0.0238471, - 0.0112602, - -0.0016385, - 0.0262541, - -0.0105459, - -0.001637, - 0.026251, - -0.0105512, - -0.0016422, - -0.0238451, - 0.0032596, - 0.0013023, - -0.0264131, - 0.0044923, - -0.001655, - -0.0264131, - 0.0032592, - -0.0046505, - -0.0264131, - 0.0002828, - -0.0058832, - -0.0264121, - -0.0026936, - -0.0046501, - -0.0264121, - -0.0039262, - -0.0016544, - -0.0264121, - -0.0026931, - 0.0013027, - -0.0264131, - 0.0002833, - 0.0025353, - -0.0264131, - 0.0002889, - 0.0025409, - 0.0266981, - -0.0026876, - 0.0013083, - 0.0266981, - -0.0039207, - -0.0016488, - 0.0266991, - -0.002688, - -0.0046445, - 0.0266991, - 0.0002883, - -0.0058776, - 0.0266991, - 0.0032648, - -0.0046449, - 0.0266981, - 0.0044979, - -0.0016494, - 0.0266981, - 0.0032652, - 0.0013078, - 0.0266981, - 0.0221498, - -0.018297, - -0.0532331, - -0.0440127, - -0.0182935, - -0.053221, - -0.0440135, - -0.0335076, - -0.0532281, - 0.022149, - -0.033551, - -0.0532321, - 0.0145385, - -0.0335451, - 0.0507261, - -0.0376582, - -0.0335025, - 0.0503671, - -0.0376577, - -0.0238965, - 0.050361, - 0.014539, - -0.0238992, - 0.0507261, - 0.022155, - -0.0182931, - 0.0211801, - -0.0440075, - -0.0182896, - 0.0211851, - 0.0075687, - -0.0335447, - 0.0521781, - -0.0298333, - -0.0335427, - 0.0521801, - -0.0298328, - -0.0238968, - 0.0521801, - 0.0075692, - -0.0238988, - 0.0521771, - 0.0221564, - -0.0226617, - 0.0447671, - -0.0440061, - -0.0226583, - 0.0447721, - 0.0221558, - -0.0335059, - 0.0447681, - -0.0440067, - -0.0335025, - 0.044773 - ], - "faces": [ - 2, - 76, - 70, - 66, - 0, - 2, - 71, - 77, - 67, - 0, - 2, - 70, - 75, - 76, - 0, - 2, - 76, - 75, - 69, - 0, - 2, - 68, - 74, - 77, - 0, - 2, - 77, - 74, - 71, - 0, - 2, - 67, - 79, - 73, - 0, - 2, - 64, - 73, - 79, - 0, - 2, - 64, - 79, - 77, - 0, - 2, - 63, - 64, - 77, - 0, - 2, - 63, - 77, - 71, - 0, - 2, - 62, - 70, - 76, - 0, - 2, - 65, - 78, - 72, - 0, - 2, - 66, - 72, - 78, - 0, - 2, - 62, - 76, - 65, - 0, - 2, - 76, - 78, - 65, - 0, - 2, - 66, - 78, - 69, - 0, - 2, - 78, - 76, - 69, - 0, - 2, - 67, - 68, - 79, - 0, - 2, - 68, - 77, - 79, - 0, - 2, - 75, - 70, - 71, - 0, - 2, - 75, - 71, - 74, - 0, - 2, - 75, - 72, - 66, - 0, - 2, - 75, - 66, - 69, - 0, - 2, - 74, - 73, - 72, - 0, - 2, - 74, - 72, - 75, - 0, - 2, - 68, - 67, - 74, - 0, - 2, - 67, - 73, - 74, - 0, - 2, - 73, - 64, - 72, - 0, - 2, - 64, - 65, - 72, - 0, - 2, - 62, - 63, - 71, - 0, - 2, - 62, - 71, - 70, - 0, - 2, - 62, - 65, - 64, - 0, - 2, - 62, - 64, - 63, - 0, - 2, - 1, - 3, - 2, - 1, - 2, - 40, - 3, - 1, - 1, - 2, - 40, - 4, - 3, - 1, - 2, - 0, - 4, - 40, - 1, - 2, - 0, - 5, - 4, - 1, - 2, - 0, - 6, - 5, - 1, - 2, - 9, - 10, - 11, - 1, - 2, - 9, - 11, - 12, - 1, - 2, - 8, - 9, - 12, - 1, - 2, - 7, - 8, - 12, - 1, - 2, - 7, - 12, - 13, - 1, - 2, - 14, - 7, - 13, - 1, - 2, - 28, - 26, - 27, - 1, - 2, - 42, - 26, - 28, - 1, - 2, - 42, - 25, - 26, - 1, - 2, - 29, - 25, - 42, - 1, - 2, - 29, - 24, - 25, - 1, - 2, - 29, - 23, - 24, - 1, - 2, - 20, - 19, - 18, - 1, - 2, - 20, - 18, - 17, - 1, - 2, - 21, - 20, - 17, - 1, - 2, - 22, - 21, - 17, - 1, - 2, - 22, - 17, - 16, - 1, - 2, - 15, - 22, - 16, - 1, - 2, - 53, - 46, - 52, - 1, - 2, - 46, - 51, - 52, - 1, - 2, - 46, - 47, - 51, - 1, - 2, - 47, - 48, - 51, - 1, - 2, - 48, - 50, - 51, - 1, - 2, - 48, - 49, - 50, - 1, - 2, - 55, - 61, - 54, - 1, - 2, - 55, - 56, - 61, - 1, - 2, - 56, - 60, - 61, - 1, - 2, - 56, - 59, - 60, - 1, - 2, - 56, - 57, - 59, - 1, - 2, - 57, - 58, - 59, - 1, - 2, - 47, - 46, - 61, - 1, - 2, - 47, - 61, - 60, - 1, - 2, - 48, - 47, - 60, - 1, - 2, - 48, - 60, - 59, - 1, - 2, - 49, - 48, - 59, - 1, - 2, - 49, - 59, - 58, - 1, - 2, - 50, - 49, - 58, - 1, - 2, - 50, - 58, - 57, - 1, - 2, - 51, - 50, - 57, - 1, - 2, - 51, - 57, - 56, - 1, - 2, - 52, - 51, - 56, - 1, - 2, - 52, - 56, - 55, - 1, - 2, - 53, - 52, - 55, - 1, - 2, - 53, - 55, - 54, - 1, - 2, - 46, - 53, - 54, - 1, - 2, - 46, - 54, - 61, - 1, - 2, - 38, - 37, - 34, - 1, - 2, - 38, - 34, - 41, - 1, - 2, - 36, - 39, - 40, - 1, - 2, - 36, - 40, - 35, - 1, - 2, - 42, - 45, - 38, - 1, - 2, - 42, - 38, - 41, - 1, - 2, - 44, - 43, - 40, - 1, - 2, - 44, - 40, - 39, - 1, - 2, - 33, - 31, - 45, - 1, - 2, - 33, - 45, - 42, - 1, - 2, - 30, - 32, - 43, - 1, - 2, - 30, - 43, - 44, - 1, - 2, - 34, - 33, - 42, - 1, - 2, - 34, - 42, - 41, - 1, - 2, - 32, - 35, - 43, - 1, - 2, - 35, - 40, - 43, - 1, - 2, - 36, - 30, - 44, - 1, - 2, - 36, - 44, - 39, - 1, - 2, - 31, - 37, - 45, - 1, - 2, - 37, - 38, - 45, - 1, - 2, - 29, - 21, - 22, - 1, - 2, - 29, - 42, - 21, - 1, - 2, - 42, - 20, - 21, - 1, - 2, - 42, - 28, - 20, - 1, - 2, - 28, - 19, - 20, - 1, - 2, - 28, - 27, - 19, - 1, - 2, - 27, - 18, - 19, - 1, - 2, - 27, - 26, - 18, - 1, - 2, - 26, - 17, - 18, - 1, - 2, - 26, - 25, - 17, - 1, - 2, - 25, - 16, - 17, - 1, - 2, - 25, - 24, - 16, - 1, - 2, - 24, - 15, - 16, - 1, - 2, - 24, - 23, - 15, - 1, - 2, - 23, - 22, - 15, - 1, - 2, - 23, - 29, - 22, - 1, - 2, - 6, - 0, - 7, - 1, - 2, - 7, - 14, - 6, - 1, - 2, - 5, - 14, - 13, - 1, - 2, - 5, - 6, - 14, - 1, - 2, - 4, - 13, - 12, - 1, - 2, - 4, - 5, - 13, - 1, - 2, - 3, - 12, - 11, - 1, - 2, - 3, - 4, - 12, - 1, - 2, - 2, - 11, - 10, - 1, - 2, - 2, - 3, - 11, - 1, - 2, - 1, - 10, - 9, - 1, - 2, - 1, - 2, - 10, - 1, - 2, - 40, - 9, - 8, - 1, - 2, - 40, - 1, - 9, - 1, - 2, - 0, - 8, - 7, - 1, - 2, - 0, - 40, - 8, - 1 - ] + "metadata": { + "formatVersion": 3 + }, + "materials": [ + { + "DbgColor": 15658731, + "DbgIndex": 0, + "DbgName": "Plastic", + "colorDiffuse": [ + 0.301961, + 0.301961, + 0.301961 + ], + "colorSpecular": [ + 0.401201, + 0.401201, + 0.401201 + ], + "shading": "Lambert", + "specularCoef": 50, + "opacity": 1.0, + "vertexColors": false + }, + { + "DbgColor": 15658734, + "DbgIndex": 1, + "DbgName": "Metal", + "colorDiffuse": [ + 0.7, + 0.7, + 0.7 + ], + "colorSpecular": [ + 0.168737, + 0.168737, + 0.168737 + ], + "shading": "Lambert", + "specularCoef": 50, + "opacity": 1.0, + "vertexColors": false + } + ], + "normals": [], + "colors": [], + "uvs": [], + "vertices": [ + 0.0087351, + 0.0067732, + 0.024691, + 0.0087339, + -0.0101191, + 0.0246951, + 0.0002876, + -0.013617, + 0.024691, + -0.0081583, + -0.0101179, + 0.0246971, + -0.0116562, + -0.0016371, + 0.024691, + -0.0081571, + 0.0067743, + 0.0246951, + 0.0002892, + 0.0102722, + 0.0246941, + 0.0087349, + 0.0067729, + 0.0225301, + 0.0122328, + -0.0016389, + 0.0225301, + 0.0087337, + -0.0101193, + 0.0225311, + 0.0002873, + -0.0136172, + 0.0225331, + -0.0081585, + -0.0101181, + 0.0225331, + -0.0116564, + -0.0016373, + 0.0225331, + -0.0081573, + 0.0067741, + 0.0225311, + 0.000289, + 0.010272, + 0.0225301, + 0.0002839, + 0.0102669, + -0.0258941, + -0.0081624, + 0.006769, + -0.0258931, + -0.0116615, + -0.0016423, + -0.0258921, + -0.0081636, + -0.0101232, + -0.0258911, + 0.0002823, + -0.0136223, + -0.0258921, + 0.0087286, + -0.0101244, + -0.0258931, + 0.0122277, + -0.001644, + -0.0258941, + 0.0087298, + 0.0067679, + -0.0258951, + 0.0002841, + 0.0102672, + -0.0238471, + -0.0081622, + 0.0067692, + -0.0238461, + -0.0116613, + -0.0016421, + -0.0238451, + -0.0081634, + -0.010123, + -0.0238441, + 0.0002825, + -0.013622, + -0.0238451, + 0.0087288, + -0.0101241, + -0.0238461, + 0.00873, + 0.0067681, + -0.0238481, + -0.010548, + -0.0309107, + 0.0262601, + -0.0105533, + -0.0309159, + -0.0238421, + 0.0112581, + -0.0309122, + 0.0262571, + 0.0112529, + -0.0309175, + -0.0238441, + 0.0112531, + -0.0295256, + -0.0223181, + 0.011258, + -0.0295206, + 0.0246971, + -0.0105481, + -0.0295191, + 0.0246991, + -0.010553, + -0.029524, + -0.0223151, + -0.010551, + -0.0016421, + -0.022311, + -0.0105461, + -0.0016371, + 0.0246961, + 0.01126, + -0.0016387, + 0.0246941, + 0.0112551, + -0.0016436, + -0.0223211, + 0.011255, + -0.0016437, + -0.0238471, + 0.0112602, + -0.0016385, + 0.0262541, + -0.0105459, + -0.001637, + 0.026251, + -0.0105512, + -0.0016422, + -0.0238451, + 0.0032596, + 0.0013023, + -0.0264131, + 0.0044923, + -0.001655, + -0.0264131, + 0.0032592, + -0.0046505, + -0.0264131, + 0.0002828, + -0.0058832, + -0.0264121, + -0.0026936, + -0.0046501, + -0.0264121, + -0.0039262, + -0.0016544, + -0.0264121, + -0.0026931, + 0.0013027, + -0.0264131, + 0.0002833, + 0.0025353, + -0.0264131, + 0.0002889, + 0.0025409, + 0.0266981, + -0.0026876, + 0.0013083, + 0.0266981, + -0.0039207, + -0.0016488, + 0.0266991, + -0.002688, + -0.0046445, + 0.0266991, + 0.0002883, + -0.0058776, + 0.0266991, + 0.0032648, + -0.0046449, + 0.0266981, + 0.0044979, + -0.0016494, + 0.0266981, + 0.0032652, + 0.0013078, + 0.0266981, + 0.0221498, + -0.018297, + -0.0532331, + -0.0440127, + -0.0182935, + -0.053221, + -0.0440135, + -0.0335076, + -0.0532281, + 0.022149, + -0.033551, + -0.0532321, + 0.0145385, + -0.0335451, + 0.0507261, + -0.0376582, + -0.0335025, + 0.0503671, + -0.0376577, + -0.0238965, + 0.050361, + 0.014539, + -0.0238992, + 0.0507261, + 0.022155, + -0.0182931, + 0.0211801, + -0.0440075, + -0.0182896, + 0.0211851, + 0.0075687, + -0.0335447, + 0.0521781, + -0.0298333, + -0.0335427, + 0.0521801, + -0.0298328, + -0.0238968, + 0.0521801, + 0.0075692, + -0.0238988, + 0.0521771, + 0.0221564, + -0.0226617, + 0.0447671, + -0.0440061, + -0.0226583, + 0.0447721, + 0.0221558, + -0.0335059, + 0.0447681, + -0.0440067, + -0.0335025, + 0.044773 + ], + "faces": [ + 2, + 76, + 70, + 66, + 0, + 2, + 71, + 77, + 67, + 0, + 2, + 70, + 75, + 76, + 0, + 2, + 76, + 75, + 69, + 0, + 2, + 68, + 74, + 77, + 0, + 2, + 77, + 74, + 71, + 0, + 2, + 67, + 79, + 73, + 0, + 2, + 64, + 73, + 79, + 0, + 2, + 64, + 79, + 77, + 0, + 2, + 63, + 64, + 77, + 0, + 2, + 63, + 77, + 71, + 0, + 2, + 62, + 70, + 76, + 0, + 2, + 65, + 78, + 72, + 0, + 2, + 66, + 72, + 78, + 0, + 2, + 62, + 76, + 65, + 0, + 2, + 76, + 78, + 65, + 0, + 2, + 66, + 78, + 69, + 0, + 2, + 78, + 76, + 69, + 0, + 2, + 67, + 68, + 79, + 0, + 2, + 68, + 77, + 79, + 0, + 2, + 75, + 70, + 71, + 0, + 2, + 75, + 71, + 74, + 0, + 2, + 75, + 72, + 66, + 0, + 2, + 75, + 66, + 69, + 0, + 2, + 74, + 73, + 72, + 0, + 2, + 74, + 72, + 75, + 0, + 2, + 68, + 67, + 74, + 0, + 2, + 67, + 73, + 74, + 0, + 2, + 73, + 64, + 72, + 0, + 2, + 64, + 65, + 72, + 0, + 2, + 62, + 63, + 71, + 0, + 2, + 62, + 71, + 70, + 0, + 2, + 62, + 65, + 64, + 0, + 2, + 62, + 64, + 63, + 0, + 2, + 1, + 3, + 2, + 1, + 2, + 40, + 3, + 1, + 1, + 2, + 40, + 4, + 3, + 1, + 2, + 0, + 4, + 40, + 1, + 2, + 0, + 5, + 4, + 1, + 2, + 0, + 6, + 5, + 1, + 2, + 9, + 10, + 11, + 1, + 2, + 9, + 11, + 12, + 1, + 2, + 8, + 9, + 12, + 1, + 2, + 7, + 8, + 12, + 1, + 2, + 7, + 12, + 13, + 1, + 2, + 14, + 7, + 13, + 1, + 2, + 28, + 26, + 27, + 1, + 2, + 42, + 26, + 28, + 1, + 2, + 42, + 25, + 26, + 1, + 2, + 29, + 25, + 42, + 1, + 2, + 29, + 24, + 25, + 1, + 2, + 29, + 23, + 24, + 1, + 2, + 20, + 19, + 18, + 1, + 2, + 20, + 18, + 17, + 1, + 2, + 21, + 20, + 17, + 1, + 2, + 22, + 21, + 17, + 1, + 2, + 22, + 17, + 16, + 1, + 2, + 15, + 22, + 16, + 1, + 2, + 53, + 46, + 52, + 1, + 2, + 46, + 51, + 52, + 1, + 2, + 46, + 47, + 51, + 1, + 2, + 47, + 48, + 51, + 1, + 2, + 48, + 50, + 51, + 1, + 2, + 48, + 49, + 50, + 1, + 2, + 55, + 61, + 54, + 1, + 2, + 55, + 56, + 61, + 1, + 2, + 56, + 60, + 61, + 1, + 2, + 56, + 59, + 60, + 1, + 2, + 56, + 57, + 59, + 1, + 2, + 57, + 58, + 59, + 1, + 2, + 47, + 46, + 61, + 1, + 2, + 47, + 61, + 60, + 1, + 2, + 48, + 47, + 60, + 1, + 2, + 48, + 60, + 59, + 1, + 2, + 49, + 48, + 59, + 1, + 2, + 49, + 59, + 58, + 1, + 2, + 50, + 49, + 58, + 1, + 2, + 50, + 58, + 57, + 1, + 2, + 51, + 50, + 57, + 1, + 2, + 51, + 57, + 56, + 1, + 2, + 52, + 51, + 56, + 1, + 2, + 52, + 56, + 55, + 1, + 2, + 53, + 52, + 55, + 1, + 2, + 53, + 55, + 54, + 1, + 2, + 46, + 53, + 54, + 1, + 2, + 46, + 54, + 61, + 1, + 2, + 38, + 37, + 34, + 1, + 2, + 38, + 34, + 41, + 1, + 2, + 36, + 39, + 40, + 1, + 2, + 36, + 40, + 35, + 1, + 2, + 42, + 45, + 38, + 1, + 2, + 42, + 38, + 41, + 1, + 2, + 44, + 43, + 40, + 1, + 2, + 44, + 40, + 39, + 1, + 2, + 33, + 31, + 45, + 1, + 2, + 33, + 45, + 42, + 1, + 2, + 30, + 32, + 43, + 1, + 2, + 30, + 43, + 44, + 1, + 2, + 34, + 33, + 42, + 1, + 2, + 34, + 42, + 41, + 1, + 2, + 32, + 35, + 43, + 1, + 2, + 35, + 40, + 43, + 1, + 2, + 36, + 30, + 44, + 1, + 2, + 36, + 44, + 39, + 1, + 2, + 31, + 37, + 45, + 1, + 2, + 37, + 38, + 45, + 1, + 2, + 29, + 21, + 22, + 1, + 2, + 29, + 42, + 21, + 1, + 2, + 42, + 20, + 21, + 1, + 2, + 42, + 28, + 20, + 1, + 2, + 28, + 19, + 20, + 1, + 2, + 28, + 27, + 19, + 1, + 2, + 27, + 18, + 19, + 1, + 2, + 27, + 26, + 18, + 1, + 2, + 26, + 17, + 18, + 1, + 2, + 26, + 25, + 17, + 1, + 2, + 25, + 16, + 17, + 1, + 2, + 25, + 24, + 16, + 1, + 2, + 24, + 15, + 16, + 1, + 2, + 24, + 23, + 15, + 1, + 2, + 23, + 22, + 15, + 1, + 2, + 23, + 29, + 22, + 1, + 2, + 6, + 0, + 7, + 1, + 2, + 7, + 14, + 6, + 1, + 2, + 5, + 14, + 13, + 1, + 2, + 5, + 6, + 14, + 1, + 2, + 4, + 13, + 12, + 1, + 2, + 4, + 5, + 13, + 1, + 2, + 3, + 12, + 11, + 1, + 2, + 3, + 4, + 12, + 1, + 2, + 2, + 11, + 10, + 1, + 2, + 2, + 3, + 11, + 1, + 2, + 1, + 10, + 9, + 1, + 2, + 1, + 2, + 10, + 1, + 2, + 40, + 9, + 8, + 1, + 2, + 40, + 1, + 9, + 1, + 2, + 0, + 8, + 7, + 1, + 2, + 0, + 40, + 8, + 1 + ] } diff --git a/src/client/components/localisation/darwin_robot/right_leg/config/right_lower_leg.json b/src/client/components/localisation/darwin_robot/right_leg/config/right_lower_leg.json index 2e2fb74e..138941b0 100644 --- a/src/client/components/localisation/darwin_robot/right_leg/config/right_lower_leg.json +++ b/src/client/components/localisation/darwin_robot/right_leg/config/right_lower_leg.json @@ -1,1024 +1,1024 @@ { - "metadata": { - "formatVersion": 3 - }, - "materials": [ - { - "DbgColor": 15658734, - "DbgIndex": 0, - "DbgName": "Plastic", - "colorDiffuse": [ - 0.301961, - 0.301961, - 0.301961 - ], - "colorSpecular": [ - 0.401201, - 0.401201, - 0.401201 - ], - "shading": "Lambert", - "specularCoef": 50, - "opacity": 1.0, - "vertexColors": false - } - ], - "normals": [], - "colors": [], - "uvs": [], - "vertices": [ - -0.0321993, - -0.0784274, - -0.0367567, - 0.0321848, - -0.0784297, - -0.036759, - -0.0311065, - -0.039214, - -0.0368244, - 0.0310947, - -0.0392162, - -0.0368265, - -0.0307739, - -0.0273103, - -0.0213664, - 0.030764, - -0.0273124, - -0.0213685, - -0.0303676, - -0.0127541, - -0.0089623, - 0.0303596, - -0.0127562, - -0.0089644, - -0.0299627, - 0.0017605, - -0.0015366, - 0.0299562, - 0.0017584, - -0.0015386, - -0.0295524, - 0.0164661, - 0.0041364, - 0.0295473, - 0.0164641, - 0.0041343, - -0.0295519, - 0.0164723, - 0.0132633, - 0.0295475, - 0.0164702, - 0.0132613, - -0.0308119, - -0.0287301, - 0.009323, - 0.030804, - -0.0287322, - 0.0093209, - -0.0317947, - -0.0639797, - 0.0020636, - 0.0317838, - -0.0639819, - 0.0020614, - -0.0321936, - -0.0782869, - -0.0018773, - 0.0321815, - -0.0782892, - -0.0018795, - -0.0245284, - -0.104272, - 0.0042731, - 0.0245149, - -0.104274, - 0.0042714, - -0.0275971, - -0.0999259, - 0.0088055, - 0.0275843, - -0.0999278, - 0.0088036, - -0.0313345, - -0.0910052, - 0.0009336, - 0.0313218, - -0.0910074, - 0.0009314, - -0.0320669, - -0.0852867, - -0.001929, - 0.0320543, - -0.085289, - -0.0019313, - -0.0245289, - -0.104272, - -0.0063462, - 0.0245147, - -0.104274, - -0.0063479, - -0.0275982, - -0.0999262, - -0.0114828, - 0.0275839, - -0.0999282, - -0.0114847, - -0.0313357, - -0.0910056, - -0.021763, - 0.0313214, - -0.0910077, - -0.0217652, - -0.0320683, - -0.0852872, - -0.0283899, - 0.0320539, - -0.0852894, - -0.0283921, - -4.3e-06, - -0.0583238, - 0.0271951, - -2.7e-06, - -0.0147893, - 0.0307726, - -1.6e-06, - 0.0164661, - 0.0312491, - -0.0199881, - -0.0583235, - 0.0271962, - 0.0199794, - -0.0583249, - 0.0271948, - -0.0199871, - -0.0147889, - 0.0307736, - 0.0199818, - -0.0147903, - 0.0307722, - -0.0199866, - 0.0164664, - 0.0312502, - 0.0199834, - 0.016465, - 0.0312488, - -0.0218916, - -0.0583235, - 0.0245723, - 0.0218828, - -0.058325, - 0.0245708, - -0.0218923, - -0.0862333, - 0.0205175, - 0.0218812, - -0.0862348, - 0.020516, - -0.0266784, - 0.0164694, - 0.0225978, - 0.0266747, - 0.0164675, - 0.0225959, - -0.026354, - -0.0217595, - 0.0218212, - 0.0263475, - -0.0217613, - 0.0218193, - -0.0265701, - -0.0611515, - 0.0190455, - 0.0265607, - -0.0611533, - 0.0190437, - -0.0265918, - -0.0822601, - 0.0142797, - 0.0265806, - -0.0822619, - 0.0142779, - -0.0288887, - -0.0784275, - -0.0367569, - 0.0288741, - -0.0784295, - -0.0367589, - -0.0277958, - -0.039214, - -0.0368245, - 0.027784, - -0.039216, - -0.0368265, - -0.0274632, - -0.0273103, - -0.0213665, - 0.0274534, - -0.0273123, - -0.0213684, - -0.0270569, - -0.0127542, - -0.0089625, - 0.0270489, - -0.012756, - -0.0089644, - -0.026652, - 0.0017605, - -0.0015367, - 0.0266455, - 0.0017586, - -0.0015386, - -0.0262417, - 0.0164661, - 0.0041362, - 0.0262367, - 0.0164642, - 0.0041344, - -0.0262412, - 0.0164722, - 0.0132632, - 0.0262368, - 0.0164704, - 0.0132613, - -0.0212177, - -0.104272, - 0.0042729, - 0.0212042, - -0.104274, - 0.0042714, - -0.0242864, - -0.0999259, - 0.0088053, - 0.0242736, - -0.0999276, - 0.0088036, - -0.0212182, - -0.104272, - -0.0063464, - 0.021204, - -0.104274, - -0.0063479, - -0.0242875, - -0.0999263, - -0.011483, - 0.0242732, - -0.099928, - -0.0114847, - -0.0280251, - -0.0910056, - -0.0217631, - 0.0280107, - -0.0910076, - -0.0217651, - -0.0287576, - -0.0852873, - -0.0283901, - 0.0287432, - -0.0852893, - -0.0283921, - -0.0176031, - -0.0583235, - 0.0248109, - 0.0175943, - -0.0583248, - 0.0248097, - -0.0176016, - 0.0164664, - 0.0288649, - 0.0175982, - 0.0164651, - 0.0288637, - -0.0195066, - -0.0583235, - 0.022187, - 0.0194976, - -0.0583249, - 0.0221857, - -0.0195073, - -0.0862334, - 0.0181323, - 0.019496, - -0.0862347, - 0.0181309, - -0.0242934, - 0.0164693, - 0.0202125, - 0.0242895, - 0.0164676, - 0.0202108, - -4.4e-06, - -0.0583238, - 0.0243141, - -1.7e-06, - 0.016466, - 0.0283681 - ], - "faces": [ - 2, - 10, - 14, - 12, - 0, - 2, - 15, - 11, - 13, - 0, - 2, - 10, - 16, - 14, - 0, - 2, - 17, - 11, - 15, - 0, - 2, - 8, - 16, - 10, - 0, - 2, - 17, - 9, - 11, - 0, - 2, - 8, - 18, - 16, - 0, - 2, - 19, - 9, - 17, - 0, - 2, - 6, - 18, - 8, - 0, - 2, - 19, - 7, - 9, - 0, - 2, - 6, - 0, - 18, - 0, - 2, - 7, - 19, - 1, - 0, - 2, - 4, - 0, - 6, - 0, - 2, - 5, - 7, - 1, - 0, - 2, - 2, - 0, - 4, - 0, - 2, - 3, - 5, - 1, - 0, - 2, - 30, - 20, - 22, - 0, - 2, - 21, - 31, - 23, - 0, - 2, - 24, - 30, - 22, - 0, - 2, - 31, - 25, - 23, - 0, - 2, - 30, - 28, - 20, - 0, - 2, - 29, - 31, - 21, - 0, - 2, - 32, - 30, - 24, - 0, - 2, - 31, - 33, - 25, - 0, - 2, - 26, - 32, - 24, - 0, - 2, - 33, - 27, - 25, - 0, - 2, - 0, - 26, - 18, - 0, - 2, - 27, - 1, - 19, - 0, - 2, - 34, - 32, - 26, - 0, - 2, - 33, - 35, - 27, - 0, - 2, - 0, - 34, - 26, - 0, - 2, - 35, - 1, - 27, - 0, - 2, - 55, - 24, - 22, - 0, - 2, - 25, - 56, - 23, - 0, - 2, - 26, - 55, - 18, - 0, - 2, - 56, - 27, - 19, - 0, - 2, - 26, - 24, - 55, - 0, - 2, - 25, - 27, - 56, - 0, - 2, - 22, - 47, - 55, - 0, - 2, - 48, - 23, - 56, - 0, - 3, - 45, - 53, - 55, - 47, - 0, - 3, - 56, - 54, - 46, - 48, - 0, - 3, - 16, - 18, - 55, - 53, - 0, - 3, - 56, - 19, - 17, - 54, - 0, - 2, - 45, - 51, - 53, - 0, - 2, - 52, - 46, - 54, - 0, - 3, - 14, - 16, - 53, - 51, - 0, - 3, - 54, - 17, - 15, - 52, - 0, - 3, - 12, - 14, - 51, - 49, - 0, - 3, - 52, - 15, - 13, - 50, - 0, - 2, - 39, - 41, - 45, - 0, - 2, - 42, - 40, - 46, - 0, - 2, - 41, - 51, - 45, - 0, - 2, - 52, - 42, - 46, - 0, - 3, - 41, - 43, - 49, - 51, - 0, - 3, - 50, - 44, - 42, - 52, - 0, - 3, - 36, - 37, - 41, - 39, - 0, - 3, - 42, - 37, - 36, - 40, - 0, - 3, - 37, - 38, - 43, - 41, - 0, - 3, - 44, - 38, - 37, - 42, - 0, - 3, - 12, - 49, - 91, - 69, - 0, - 3, - 92, - 50, - 13, - 70, - 0, - 3, - 10, - 12, - 69, - 67, - 0, - 3, - 70, - 13, - 11, - 68, - 0, - 3, - 8, - 10, - 67, - 65, - 0, - 3, - 68, - 11, - 9, - 66, - 0, - 3, - 6, - 8, - 65, - 63, - 0, - 3, - 66, - 9, - 7, - 64, - 0, - 3, - 4, - 6, - 63, - 61, - 0, - 3, - 64, - 7, - 5, - 62, - 0, - 3, - 43, - 85, - 91, - 49, - 0, - 3, - 92, - 86, - 44, - 50, - 0, - 3, - 2, - 4, - 61, - 59, - 0, - 3, - 62, - 5, - 3, - 60, - 0, - 3, - 0, - 2, - 59, - 57, - 0, - 3, - 60, - 3, - 1, - 58, - 0, - 3, - 0, - 57, - 81, - 34, - 0, - 3, - 82, - 58, - 1, - 35, - 0, - 3, - 32, - 34, - 81, - 79, - 0, - 3, - 82, - 35, - 33, - 80, - 0, - 3, - 30, - 32, - 79, - 77, - 0, - 3, - 80, - 33, - 31, - 78, - 0, - 3, - 28, - 30, - 77, - 75, - 0, - 3, - 78, - 31, - 29, - 76, - 0, - 3, - 20, - 28, - 75, - 71, - 0, - 3, - 76, - 29, - 21, - 72, - 0, - 3, - 20, - 71, - 73, - 22, - 0, - 3, - 74, - 72, - 21, - 23, - 0, - 3, - 22, - 73, - 89, - 47, - 0, - 3, - 90, - 74, - 23, - 48, - 0, - 3, - 45, - 47, - 89, - 87, - 0, - 3, - 90, - 48, - 46, - 88, - 0, - 3, - 39, - 45, - 87, - 83, - 0, - 3, - 88, - 46, - 40, - 84, - 0, - 3, - 38, - 94, - 85, - 43, - 0, - 3, - 86, - 94, - 38, - 44, - 0, - 3, - 36, - 39, - 83, - 93, - 0, - 3, - 84, - 40, - 36, - 93, - 0, - 3, - 83, - 85, - 94, - 93, - 0, - 3, - 94, - 86, - 84, - 93, - 0, - 3, - 83, - 87, - 91, - 85, - 0, - 3, - 92, - 88, - 84, - 86, - 0, - 2, - 87, - 89, - 91, - 0, - 2, - 90, - 88, - 92, - 0, - 2, - 73, - 91, - 89, - 0, - 2, - 92, - 74, - 90, - 0, - 2, - 69, - 91, - 73, - 0, - 2, - 92, - 70, - 74, - 0, - 2, - 69, - 73, - 71, - 0, - 2, - 74, - 70, - 72, - 0, - 2, - 69, - 71, - 75, - 0, - 2, - 72, - 70, - 76, - 0, - 2, - 79, - 69, - 75, - 0, - 2, - 70, - 80, - 76, - 0, - 2, - 81, - 69, - 79, - 0, - 2, - 70, - 82, - 80, - 0, - 2, - 57, - 69, - 81, - 0, - 2, - 70, - 58, - 82, - 0, - 2, - 79, - 75, - 77, - 0, - 2, - 76, - 80, - 78, - 0, - 2, - 63, - 65, - 57, - 0, - 2, - 66, - 64, - 58, - 0, - 2, - 61, - 63, - 57, - 0, - 2, - 64, - 62, - 58, - 0, - 2, - 59, - 61, - 57, - 0, - 2, - 62, - 60, - 58, - 0, - 2, - 57, - 65, - 69, - 0, - 2, - 66, - 58, - 70, - 0, - 2, - 65, - 67, - 69, - 0, - 2, - 68, - 66, - 70, - 0 - ] + "metadata": { + "formatVersion": 3 + }, + "materials": [ + { + "DbgColor": 15658734, + "DbgIndex": 0, + "DbgName": "Plastic", + "colorDiffuse": [ + 0.301961, + 0.301961, + 0.301961 + ], + "colorSpecular": [ + 0.401201, + 0.401201, + 0.401201 + ], + "shading": "Lambert", + "specularCoef": 50, + "opacity": 1.0, + "vertexColors": false + } + ], + "normals": [], + "colors": [], + "uvs": [], + "vertices": [ + -0.0321993, + -0.0784274, + -0.0367567, + 0.0321848, + -0.0784297, + -0.036759, + -0.0311065, + -0.039214, + -0.0368244, + 0.0310947, + -0.0392162, + -0.0368265, + -0.0307739, + -0.0273103, + -0.0213664, + 0.030764, + -0.0273124, + -0.0213685, + -0.0303676, + -0.0127541, + -0.0089623, + 0.0303596, + -0.0127562, + -0.0089644, + -0.0299627, + 0.0017605, + -0.0015366, + 0.0299562, + 0.0017584, + -0.0015386, + -0.0295524, + 0.0164661, + 0.0041364, + 0.0295473, + 0.0164641, + 0.0041343, + -0.0295519, + 0.0164723, + 0.0132633, + 0.0295475, + 0.0164702, + 0.0132613, + -0.0308119, + -0.0287301, + 0.009323, + 0.030804, + -0.0287322, + 0.0093209, + -0.0317947, + -0.0639797, + 0.0020636, + 0.0317838, + -0.0639819, + 0.0020614, + -0.0321936, + -0.0782869, + -0.0018773, + 0.0321815, + -0.0782892, + -0.0018795, + -0.0245284, + -0.104272, + 0.0042731, + 0.0245149, + -0.104274, + 0.0042714, + -0.0275971, + -0.0999259, + 0.0088055, + 0.0275843, + -0.0999278, + 0.0088036, + -0.0313345, + -0.0910052, + 0.0009336, + 0.0313218, + -0.0910074, + 0.0009314, + -0.0320669, + -0.0852867, + -0.001929, + 0.0320543, + -0.085289, + -0.0019313, + -0.0245289, + -0.104272, + -0.0063462, + 0.0245147, + -0.104274, + -0.0063479, + -0.0275982, + -0.0999262, + -0.0114828, + 0.0275839, + -0.0999282, + -0.0114847, + -0.0313357, + -0.0910056, + -0.021763, + 0.0313214, + -0.0910077, + -0.0217652, + -0.0320683, + -0.0852872, + -0.0283899, + 0.0320539, + -0.0852894, + -0.0283921, + -4.3e-06, + -0.0583238, + 0.0271951, + -2.7e-06, + -0.0147893, + 0.0307726, + -1.6e-06, + 0.0164661, + 0.0312491, + -0.0199881, + -0.0583235, + 0.0271962, + 0.0199794, + -0.0583249, + 0.0271948, + -0.0199871, + -0.0147889, + 0.0307736, + 0.0199818, + -0.0147903, + 0.0307722, + -0.0199866, + 0.0164664, + 0.0312502, + 0.0199834, + 0.016465, + 0.0312488, + -0.0218916, + -0.0583235, + 0.0245723, + 0.0218828, + -0.058325, + 0.0245708, + -0.0218923, + -0.0862333, + 0.0205175, + 0.0218812, + -0.0862348, + 0.020516, + -0.0266784, + 0.0164694, + 0.0225978, + 0.0266747, + 0.0164675, + 0.0225959, + -0.026354, + -0.0217595, + 0.0218212, + 0.0263475, + -0.0217613, + 0.0218193, + -0.0265701, + -0.0611515, + 0.0190455, + 0.0265607, + -0.0611533, + 0.0190437, + -0.0265918, + -0.0822601, + 0.0142797, + 0.0265806, + -0.0822619, + 0.0142779, + -0.0288887, + -0.0784275, + -0.0367569, + 0.0288741, + -0.0784295, + -0.0367589, + -0.0277958, + -0.039214, + -0.0368245, + 0.027784, + -0.039216, + -0.0368265, + -0.0274632, + -0.0273103, + -0.0213665, + 0.0274534, + -0.0273123, + -0.0213684, + -0.0270569, + -0.0127542, + -0.0089625, + 0.0270489, + -0.012756, + -0.0089644, + -0.026652, + 0.0017605, + -0.0015367, + 0.0266455, + 0.0017586, + -0.0015386, + -0.0262417, + 0.0164661, + 0.0041362, + 0.0262367, + 0.0164642, + 0.0041344, + -0.0262412, + 0.0164722, + 0.0132632, + 0.0262368, + 0.0164704, + 0.0132613, + -0.0212177, + -0.104272, + 0.0042729, + 0.0212042, + -0.104274, + 0.0042714, + -0.0242864, + -0.0999259, + 0.0088053, + 0.0242736, + -0.0999276, + 0.0088036, + -0.0212182, + -0.104272, + -0.0063464, + 0.021204, + -0.104274, + -0.0063479, + -0.0242875, + -0.0999263, + -0.011483, + 0.0242732, + -0.099928, + -0.0114847, + -0.0280251, + -0.0910056, + -0.0217631, + 0.0280107, + -0.0910076, + -0.0217651, + -0.0287576, + -0.0852873, + -0.0283901, + 0.0287432, + -0.0852893, + -0.0283921, + -0.0176031, + -0.0583235, + 0.0248109, + 0.0175943, + -0.0583248, + 0.0248097, + -0.0176016, + 0.0164664, + 0.0288649, + 0.0175982, + 0.0164651, + 0.0288637, + -0.0195066, + -0.0583235, + 0.022187, + 0.0194976, + -0.0583249, + 0.0221857, + -0.0195073, + -0.0862334, + 0.0181323, + 0.019496, + -0.0862347, + 0.0181309, + -0.0242934, + 0.0164693, + 0.0202125, + 0.0242895, + 0.0164676, + 0.0202108, + -4.4e-06, + -0.0583238, + 0.0243141, + -1.7e-06, + 0.016466, + 0.0283681 + ], + "faces": [ + 2, + 10, + 14, + 12, + 0, + 2, + 15, + 11, + 13, + 0, + 2, + 10, + 16, + 14, + 0, + 2, + 17, + 11, + 15, + 0, + 2, + 8, + 16, + 10, + 0, + 2, + 17, + 9, + 11, + 0, + 2, + 8, + 18, + 16, + 0, + 2, + 19, + 9, + 17, + 0, + 2, + 6, + 18, + 8, + 0, + 2, + 19, + 7, + 9, + 0, + 2, + 6, + 0, + 18, + 0, + 2, + 7, + 19, + 1, + 0, + 2, + 4, + 0, + 6, + 0, + 2, + 5, + 7, + 1, + 0, + 2, + 2, + 0, + 4, + 0, + 2, + 3, + 5, + 1, + 0, + 2, + 30, + 20, + 22, + 0, + 2, + 21, + 31, + 23, + 0, + 2, + 24, + 30, + 22, + 0, + 2, + 31, + 25, + 23, + 0, + 2, + 30, + 28, + 20, + 0, + 2, + 29, + 31, + 21, + 0, + 2, + 32, + 30, + 24, + 0, + 2, + 31, + 33, + 25, + 0, + 2, + 26, + 32, + 24, + 0, + 2, + 33, + 27, + 25, + 0, + 2, + 0, + 26, + 18, + 0, + 2, + 27, + 1, + 19, + 0, + 2, + 34, + 32, + 26, + 0, + 2, + 33, + 35, + 27, + 0, + 2, + 0, + 34, + 26, + 0, + 2, + 35, + 1, + 27, + 0, + 2, + 55, + 24, + 22, + 0, + 2, + 25, + 56, + 23, + 0, + 2, + 26, + 55, + 18, + 0, + 2, + 56, + 27, + 19, + 0, + 2, + 26, + 24, + 55, + 0, + 2, + 25, + 27, + 56, + 0, + 2, + 22, + 47, + 55, + 0, + 2, + 48, + 23, + 56, + 0, + 3, + 45, + 53, + 55, + 47, + 0, + 3, + 56, + 54, + 46, + 48, + 0, + 3, + 16, + 18, + 55, + 53, + 0, + 3, + 56, + 19, + 17, + 54, + 0, + 2, + 45, + 51, + 53, + 0, + 2, + 52, + 46, + 54, + 0, + 3, + 14, + 16, + 53, + 51, + 0, + 3, + 54, + 17, + 15, + 52, + 0, + 3, + 12, + 14, + 51, + 49, + 0, + 3, + 52, + 15, + 13, + 50, + 0, + 2, + 39, + 41, + 45, + 0, + 2, + 42, + 40, + 46, + 0, + 2, + 41, + 51, + 45, + 0, + 2, + 52, + 42, + 46, + 0, + 3, + 41, + 43, + 49, + 51, + 0, + 3, + 50, + 44, + 42, + 52, + 0, + 3, + 36, + 37, + 41, + 39, + 0, + 3, + 42, + 37, + 36, + 40, + 0, + 3, + 37, + 38, + 43, + 41, + 0, + 3, + 44, + 38, + 37, + 42, + 0, + 3, + 12, + 49, + 91, + 69, + 0, + 3, + 92, + 50, + 13, + 70, + 0, + 3, + 10, + 12, + 69, + 67, + 0, + 3, + 70, + 13, + 11, + 68, + 0, + 3, + 8, + 10, + 67, + 65, + 0, + 3, + 68, + 11, + 9, + 66, + 0, + 3, + 6, + 8, + 65, + 63, + 0, + 3, + 66, + 9, + 7, + 64, + 0, + 3, + 4, + 6, + 63, + 61, + 0, + 3, + 64, + 7, + 5, + 62, + 0, + 3, + 43, + 85, + 91, + 49, + 0, + 3, + 92, + 86, + 44, + 50, + 0, + 3, + 2, + 4, + 61, + 59, + 0, + 3, + 62, + 5, + 3, + 60, + 0, + 3, + 0, + 2, + 59, + 57, + 0, + 3, + 60, + 3, + 1, + 58, + 0, + 3, + 0, + 57, + 81, + 34, + 0, + 3, + 82, + 58, + 1, + 35, + 0, + 3, + 32, + 34, + 81, + 79, + 0, + 3, + 82, + 35, + 33, + 80, + 0, + 3, + 30, + 32, + 79, + 77, + 0, + 3, + 80, + 33, + 31, + 78, + 0, + 3, + 28, + 30, + 77, + 75, + 0, + 3, + 78, + 31, + 29, + 76, + 0, + 3, + 20, + 28, + 75, + 71, + 0, + 3, + 76, + 29, + 21, + 72, + 0, + 3, + 20, + 71, + 73, + 22, + 0, + 3, + 74, + 72, + 21, + 23, + 0, + 3, + 22, + 73, + 89, + 47, + 0, + 3, + 90, + 74, + 23, + 48, + 0, + 3, + 45, + 47, + 89, + 87, + 0, + 3, + 90, + 48, + 46, + 88, + 0, + 3, + 39, + 45, + 87, + 83, + 0, + 3, + 88, + 46, + 40, + 84, + 0, + 3, + 38, + 94, + 85, + 43, + 0, + 3, + 86, + 94, + 38, + 44, + 0, + 3, + 36, + 39, + 83, + 93, + 0, + 3, + 84, + 40, + 36, + 93, + 0, + 3, + 83, + 85, + 94, + 93, + 0, + 3, + 94, + 86, + 84, + 93, + 0, + 3, + 83, + 87, + 91, + 85, + 0, + 3, + 92, + 88, + 84, + 86, + 0, + 2, + 87, + 89, + 91, + 0, + 2, + 90, + 88, + 92, + 0, + 2, + 73, + 91, + 89, + 0, + 2, + 92, + 74, + 90, + 0, + 2, + 69, + 91, + 73, + 0, + 2, + 92, + 70, + 74, + 0, + 2, + 69, + 73, + 71, + 0, + 2, + 74, + 70, + 72, + 0, + 2, + 69, + 71, + 75, + 0, + 2, + 72, + 70, + 76, + 0, + 2, + 79, + 69, + 75, + 0, + 2, + 70, + 80, + 76, + 0, + 2, + 81, + 69, + 79, + 0, + 2, + 70, + 82, + 80, + 0, + 2, + 57, + 69, + 81, + 0, + 2, + 70, + 58, + 82, + 0, + 2, + 79, + 75, + 77, + 0, + 2, + 76, + 80, + 78, + 0, + 2, + 63, + 65, + 57, + 0, + 2, + 66, + 64, + 58, + 0, + 2, + 61, + 63, + 57, + 0, + 2, + 64, + 62, + 58, + 0, + 2, + 59, + 61, + 57, + 0, + 2, + 62, + 60, + 58, + 0, + 2, + 57, + 65, + 69, + 0, + 2, + 66, + 58, + 70, + 0, + 2, + 65, + 67, + 69, + 0, + 2, + 68, + 66, + 70, + 0 + ] } diff --git a/src/client/components/localisation/darwin_robot/right_leg/config/right_pelvis.json b/src/client/components/localisation/darwin_robot/right_leg/config/right_pelvis.json index 7815fc74..584cdf48 100644 --- a/src/client/components/localisation/darwin_robot/right_leg/config/right_pelvis.json +++ b/src/client/components/localisation/darwin_robot/right_leg/config/right_pelvis.json @@ -1,923 +1,923 @@ { - "metadata": { - "formatVersion": 3 - }, - "materials": [ - { - "DbgColor": 15658734, - "DbgIndex": 0, - "DbgName": "ServoMaterial", - "colorDiffuse": [ - 0.14, - 0.14, - 0.14 - ], - "colorSpecular": [ - 0.168737, - 0.168737, - 0.168737 - ], - "shading": "Lambert", - "specularCoef": 50, - "opacity": 1.0, - "vertexColors": false - } - ], - "normals": [], - "colors": [], - "uvs": [], - "vertices": [ - -0.0180427, - 0.0115768, - 0.0214738, - -0.0180448, - 0.0115768, - -0.0191618, - 0.0175728, - 0.0115755, - -0.019163, - 0.0175749, - 0.0115755, - 0.0214726, - -0.0180464, - -0.0390891, - -0.0141299, - 0.0175713, - -0.0390904, - -0.0141311, - 0.017571, - -0.0274958, - -0.0268342, - 0.0175692, - -0.0274958, - -0.0618495, - -0.0180484, - -0.0274946, - -0.0618476, - -0.0180466, - -0.0274946, - -0.0268323, - 0.0175722, - 0.0057488, - -0.0268342, - 0.0175704, - 0.0057488, - -0.0618495, - -0.0180473, - 0.00575, - -0.0618476, - -0.0180455, - 0.00575, - -0.0268323, - -0.0180436, - -0.0128273, - 0.0214738, - 0.0175741, - -0.0128286, - 0.0214726, - 0.0175739, - -0.0128286, - 0.017325, - -0.0180438, - -0.0128273, - 0.0173263, - -0.0155888, - -0.0390892, - -0.0141298, - 0.0151067, - -0.0390903, - -0.0141312, - 0.0151079, - -0.0128285, - 0.0173249, - -0.0155876, - -0.0128274, - 0.0173263, - 0.0151076, - -0.0128285, - 0.0113902, - -0.0155879, - -0.0128274, - 0.0113918, - -0.0155886, - -0.0330719, - 0.0113918, - 0.0151069, - -0.033073, - 0.0113902, - 0.0151053, - -0.033073, - -0.0190522, - -0.0155902, - -0.0330719, - -0.0190508, - -0.0180464, - -0.0330718, - -0.0190507, - 0.0175712, - -0.0330731, - -0.0190524, - -0.0155883, - -0.0330719, - 0.0173263, - -0.0180445, - -0.0330718, - 0.0173263, - 0.0175731, - -0.0330731, - 0.017325, - 0.0151072, - -0.033073, - 0.0173249, - -0.018045, - -0.0390891, - 0.011392, - -0.0155886, - -0.0390892, - 0.0113918, - 0.0151069, - -0.0390903, - 0.0113902, - 0.0175726, - -0.0390904, - 0.0113901, - 0.0175709, - -0.0274958, - -0.02966, - 0.0175693, - -0.0274958, - -0.0590229, - -0.0180483, - -0.0274946, - -0.059021, - -0.0180468, - -0.0274946, - -0.0296581, - 0.017572, - 0.0057488, - -0.02966, - 0.0175705, - 0.0057488, - -0.0590229, - -0.0180471, - 0.00575, - -0.059021, - -0.0180456, - 0.00575, - -0.0296581, - 0.0125397, - -0.0333224, - -0.0590226, - 0.0125413, - -0.0333224, - -0.0296597, - -0.012853, - -0.0333215, - -0.0296584, - -0.0128546, - -0.0333215, - -0.0590213, - 0.0125413, - 0.0115757, - -0.0590226, - 0.0125428, - 0.0115757, - -0.0296597, - -0.0128515, - 0.0115766, - -0.0296584, - -0.012853, - 0.0115766, - -0.0590213, - -0.0128531, - 0.0115766, - -0.0618479, - -0.0128513, - 0.0115766, - -0.0268326, - -0.0128547, - -0.0333215, - -0.0618479, - -0.0128529, - -0.0333215, - -0.0268326, - 0.0125411, - 0.0115757, - -0.0618492, - 0.0125396, - -0.0333224, - -0.0618492, - 0.0125414, - -0.0333224, - -0.0268339, - 0.012543, - 0.0115757, - -0.0268339, - 0.0097546, - -0.0094038, - -0.0157656, - 0.0097538, - -0.0094038, - -0.0307519, - 0.0097536, - -0.0153646, - -0.0307519, - 0.0097544, - -0.0153646, - -0.0157656, - -0.0100633, - -0.0094031, - -0.0157646, - -0.0100641, - -0.0094031, - -0.0307509, - -0.0100643, - -0.0153638, - -0.0307509, - -0.0100635, - -0.0153638, - -0.0157645, - -0.010064, - -0.0324482, - -0.0157645, - -0.0100648, - -0.0324482, - -0.0307509, - -0.0100646, - -0.0264874, - -0.0307509, - -0.0100638, - -0.0264874, - -0.0157646, - 0.0097538, - -0.032449, - -0.0157656, - 0.009753, - -0.032449, - -0.0307519, - 0.0097532, - -0.0264882, - -0.0307519, - 0.009754, - -0.0264882, - -0.0157656 - ], - "faces": [ - 2, - 0, - 1, - 14, - 0, - 2, - 15, - 2, - 3, - 0, - 2, - 1, - 17, - 14, - 0, - 2, - 2, - 15, - 16, - 0, - 2, - 16, - 15, - 20, - 0, - 2, - 21, - 14, - 17, - 0, - 2, - 22, - 25, - 33, - 0, - 2, - 27, - 24, - 35, - 0, - 2, - 5, - 19, - 26, - 0, - 2, - 4, - 27, - 18, - 0, - 2, - 4, - 28, - 27, - 0, - 2, - 1, - 27, - 28, - 0, - 2, - 1, - 28, - 17, - 0, - 2, - 5, - 26, - 29, - 0, - 2, - 2, - 29, - 26, - 0, - 2, - 2, - 16, - 29, - 0, - 2, - 33, - 25, - 36, - 0, - 2, - 35, - 24, - 30, - 0, - 2, - 33, - 20, - 22, - 0, - 2, - 35, - 18, - 27, - 0, - 2, - 31, - 17, - 28, - 0, - 2, - 37, - 5, - 29, - 0, - 2, - 75, - 77, - 74, - 0, - 2, - 75, - 76, - 77, - 0, - 2, - 73, - 71, - 70, - 0, - 2, - 73, - 72, - 71, - 0, - 2, - 77, - 72, - 73, - 0, - 2, - 77, - 76, - 72, - 0, - 2, - 75, - 70, - 71, - 0, - 2, - 75, - 74, - 70, - 0, - 2, - 64, - 69, - 68, - 0, - 2, - 64, - 65, - 69, - 0, - 2, - 62, - 67, - 66, - 0, - 2, - 62, - 63, - 67, - 0, - 2, - 66, - 68, - 69, - 0, - 2, - 66, - 67, - 68, - 0, - 2, - 64, - 62, - 65, - 0, - 2, - 64, - 63, - 62, - 0, - 2, - 46, - 51, - 47, - 0, - 2, - 46, - 50, - 51, - 0, - 2, - 56, - 59, - 46, - 0, - 2, - 56, - 46, - 49, - 0, - 2, - 46, - 47, - 48, - 0, - 2, - 46, - 48, - 49, - 0, - 2, - 47, - 57, - 48, - 0, - 2, - 47, - 60, - 57, - 0, - 2, - 55, - 61, - 51, - 0, - 2, - 55, - 51, - 52, - 0, - 2, - 54, - 50, - 58, - 0, - 2, - 54, - 53, - 50, - 0, - 2, - 50, - 53, - 52, - 0, - 2, - 50, - 52, - 51, - 0, - 2, - 38, - 51, - 42, - 0, - 2, - 38, - 47, - 51, - 0, - 2, - 6, - 47, - 38, - 0, - 2, - 6, - 60, - 47, - 0, - 2, - 6, - 61, - 60, - 0, - 2, - 6, - 10, - 61, - 0, - 2, - 10, - 51, - 61, - 0, - 2, - 10, - 42, - 51, - 0, - 2, - 11, - 50, - 43, - 0, - 2, - 11, - 58, - 50, - 0, - 2, - 39, - 50, - 46, - 0, - 2, - 39, - 43, - 50, - 0, - 2, - 7, - 58, - 11, - 0, - 2, - 7, - 59, - 58, - 0, - 2, - 7, - 46, - 59, - 0, - 2, - 7, - 39, - 46, - 0, - 2, - 9, - 48, - 57, - 0, - 2, - 9, - 41, - 48, - 0, - 2, - 9, - 55, - 13, - 0, - 2, - 9, - 57, - 55, - 0, - 2, - 13, - 52, - 45, - 0, - 2, - 13, - 55, - 52, - 0, - 2, - 8, - 49, - 40, - 0, - 2, - 8, - 56, - 49, - 0, - 2, - 12, - 53, - 54, - 0, - 2, - 12, - 44, - 53, - 0, - 2, - 8, - 12, - 54, - 0, - 2, - 8, - 54, - 56, - 0, - 2, - 40, - 53, - 44, - 0, - 2, - 40, - 49, - 53, - 0, - 2, - 55, - 57, - 60, - 0, - 2, - 55, - 60, - 61, - 0, - 2, - 56, - 54, - 58, - 0, - 2, - 56, - 58, - 59, - 0, - 2, - 48, - 52, - 53, - 0, - 2, - 48, - 53, - 49, - 0, - 2, - 40, - 12, - 8, - 0, - 2, - 40, - 44, - 12, - 0, - 2, - 9, - 45, - 41, - 0, - 2, - 9, - 13, - 45, - 0, - 2, - 38, - 10, - 6, - 0, - 2, - 38, - 42, - 10, - 0, - 2, - 7, - 43, - 39, - 0, - 2, - 7, - 11, - 43, - 0, - 2, - 36, - 32, - 33, - 0, - 2, - 36, - 37, - 32, - 0, - 2, - 30, - 34, - 35, - 0, - 2, - 30, - 31, - 34, - 0, - 2, - 29, - 16, - 37, - 0, - 2, - 37, - 16, - 32, - 0, - 2, - 28, - 34, - 31, - 0, - 2, - 28, - 4, - 34, - 0, - 2, - 1, - 26, - 27, - 0, - 2, - 1, - 2, - 26, - 0, - 2, - 26, - 19, - 25, - 0, - 2, - 25, - 19, - 36, - 0, - 2, - 24, - 26, - 25, - 0, - 2, - 24, - 27, - 26, - 0, - 2, - 23, - 30, - 24, - 0, - 2, - 23, - 21, - 30, - 0, - 2, - 23, - 25, - 22, - 0, - 2, - 23, - 24, - 25, - 0, - 2, - 14, - 20, - 15, - 0, - 2, - 14, - 21, - 20, - 0, - 2, - 20, - 23, - 22, - 0, - 2, - 20, - 21, - 23, - 0, - 2, - 36, - 5, - 37, - 0, - 2, - 36, - 19, - 5, - 0, - 2, - 34, - 18, - 35, - 0, - 2, - 34, - 4, - 18, - 0, - 2, - 32, - 20, - 33, - 0, - 2, - 32, - 16, - 20, - 0, - 2, - 30, - 17, - 31, - 0, - 2, - 30, - 21, - 17, - 0, - 2, - 3, - 0, - 14, - 0, - 2, - 14, - 15, - 3, - 0, - 2, - 0, - 2, - 1, - 0, - 2, - 0, - 3, - 2, - 0, - 3, - 41, - 45, - 52, - 48, - 0 - ] + "metadata": { + "formatVersion": 3 + }, + "materials": [ + { + "DbgColor": 15658734, + "DbgIndex": 0, + "DbgName": "ServoMaterial", + "colorDiffuse": [ + 0.14, + 0.14, + 0.14 + ], + "colorSpecular": [ + 0.168737, + 0.168737, + 0.168737 + ], + "shading": "Lambert", + "specularCoef": 50, + "opacity": 1.0, + "vertexColors": false + } + ], + "normals": [], + "colors": [], + "uvs": [], + "vertices": [ + -0.0180427, + 0.0115768, + 0.0214738, + -0.0180448, + 0.0115768, + -0.0191618, + 0.0175728, + 0.0115755, + -0.019163, + 0.0175749, + 0.0115755, + 0.0214726, + -0.0180464, + -0.0390891, + -0.0141299, + 0.0175713, + -0.0390904, + -0.0141311, + 0.017571, + -0.0274958, + -0.0268342, + 0.0175692, + -0.0274958, + -0.0618495, + -0.0180484, + -0.0274946, + -0.0618476, + -0.0180466, + -0.0274946, + -0.0268323, + 0.0175722, + 0.0057488, + -0.0268342, + 0.0175704, + 0.0057488, + -0.0618495, + -0.0180473, + 0.00575, + -0.0618476, + -0.0180455, + 0.00575, + -0.0268323, + -0.0180436, + -0.0128273, + 0.0214738, + 0.0175741, + -0.0128286, + 0.0214726, + 0.0175739, + -0.0128286, + 0.017325, + -0.0180438, + -0.0128273, + 0.0173263, + -0.0155888, + -0.0390892, + -0.0141298, + 0.0151067, + -0.0390903, + -0.0141312, + 0.0151079, + -0.0128285, + 0.0173249, + -0.0155876, + -0.0128274, + 0.0173263, + 0.0151076, + -0.0128285, + 0.0113902, + -0.0155879, + -0.0128274, + 0.0113918, + -0.0155886, + -0.0330719, + 0.0113918, + 0.0151069, + -0.033073, + 0.0113902, + 0.0151053, + -0.033073, + -0.0190522, + -0.0155902, + -0.0330719, + -0.0190508, + -0.0180464, + -0.0330718, + -0.0190507, + 0.0175712, + -0.0330731, + -0.0190524, + -0.0155883, + -0.0330719, + 0.0173263, + -0.0180445, + -0.0330718, + 0.0173263, + 0.0175731, + -0.0330731, + 0.017325, + 0.0151072, + -0.033073, + 0.0173249, + -0.018045, + -0.0390891, + 0.011392, + -0.0155886, + -0.0390892, + 0.0113918, + 0.0151069, + -0.0390903, + 0.0113902, + 0.0175726, + -0.0390904, + 0.0113901, + 0.0175709, + -0.0274958, + -0.02966, + 0.0175693, + -0.0274958, + -0.0590229, + -0.0180483, + -0.0274946, + -0.059021, + -0.0180468, + -0.0274946, + -0.0296581, + 0.017572, + 0.0057488, + -0.02966, + 0.0175705, + 0.0057488, + -0.0590229, + -0.0180471, + 0.00575, + -0.059021, + -0.0180456, + 0.00575, + -0.0296581, + 0.0125397, + -0.0333224, + -0.0590226, + 0.0125413, + -0.0333224, + -0.0296597, + -0.012853, + -0.0333215, + -0.0296584, + -0.0128546, + -0.0333215, + -0.0590213, + 0.0125413, + 0.0115757, + -0.0590226, + 0.0125428, + 0.0115757, + -0.0296597, + -0.0128515, + 0.0115766, + -0.0296584, + -0.012853, + 0.0115766, + -0.0590213, + -0.0128531, + 0.0115766, + -0.0618479, + -0.0128513, + 0.0115766, + -0.0268326, + -0.0128547, + -0.0333215, + -0.0618479, + -0.0128529, + -0.0333215, + -0.0268326, + 0.0125411, + 0.0115757, + -0.0618492, + 0.0125396, + -0.0333224, + -0.0618492, + 0.0125414, + -0.0333224, + -0.0268339, + 0.012543, + 0.0115757, + -0.0268339, + 0.0097546, + -0.0094038, + -0.0157656, + 0.0097538, + -0.0094038, + -0.0307519, + 0.0097536, + -0.0153646, + -0.0307519, + 0.0097544, + -0.0153646, + -0.0157656, + -0.0100633, + -0.0094031, + -0.0157646, + -0.0100641, + -0.0094031, + -0.0307509, + -0.0100643, + -0.0153638, + -0.0307509, + -0.0100635, + -0.0153638, + -0.0157645, + -0.010064, + -0.0324482, + -0.0157645, + -0.0100648, + -0.0324482, + -0.0307509, + -0.0100646, + -0.0264874, + -0.0307509, + -0.0100638, + -0.0264874, + -0.0157646, + 0.0097538, + -0.032449, + -0.0157656, + 0.009753, + -0.032449, + -0.0307519, + 0.0097532, + -0.0264882, + -0.0307519, + 0.009754, + -0.0264882, + -0.0157656 + ], + "faces": [ + 2, + 0, + 1, + 14, + 0, + 2, + 15, + 2, + 3, + 0, + 2, + 1, + 17, + 14, + 0, + 2, + 2, + 15, + 16, + 0, + 2, + 16, + 15, + 20, + 0, + 2, + 21, + 14, + 17, + 0, + 2, + 22, + 25, + 33, + 0, + 2, + 27, + 24, + 35, + 0, + 2, + 5, + 19, + 26, + 0, + 2, + 4, + 27, + 18, + 0, + 2, + 4, + 28, + 27, + 0, + 2, + 1, + 27, + 28, + 0, + 2, + 1, + 28, + 17, + 0, + 2, + 5, + 26, + 29, + 0, + 2, + 2, + 29, + 26, + 0, + 2, + 2, + 16, + 29, + 0, + 2, + 33, + 25, + 36, + 0, + 2, + 35, + 24, + 30, + 0, + 2, + 33, + 20, + 22, + 0, + 2, + 35, + 18, + 27, + 0, + 2, + 31, + 17, + 28, + 0, + 2, + 37, + 5, + 29, + 0, + 2, + 75, + 77, + 74, + 0, + 2, + 75, + 76, + 77, + 0, + 2, + 73, + 71, + 70, + 0, + 2, + 73, + 72, + 71, + 0, + 2, + 77, + 72, + 73, + 0, + 2, + 77, + 76, + 72, + 0, + 2, + 75, + 70, + 71, + 0, + 2, + 75, + 74, + 70, + 0, + 2, + 64, + 69, + 68, + 0, + 2, + 64, + 65, + 69, + 0, + 2, + 62, + 67, + 66, + 0, + 2, + 62, + 63, + 67, + 0, + 2, + 66, + 68, + 69, + 0, + 2, + 66, + 67, + 68, + 0, + 2, + 64, + 62, + 65, + 0, + 2, + 64, + 63, + 62, + 0, + 2, + 46, + 51, + 47, + 0, + 2, + 46, + 50, + 51, + 0, + 2, + 56, + 59, + 46, + 0, + 2, + 56, + 46, + 49, + 0, + 2, + 46, + 47, + 48, + 0, + 2, + 46, + 48, + 49, + 0, + 2, + 47, + 57, + 48, + 0, + 2, + 47, + 60, + 57, + 0, + 2, + 55, + 61, + 51, + 0, + 2, + 55, + 51, + 52, + 0, + 2, + 54, + 50, + 58, + 0, + 2, + 54, + 53, + 50, + 0, + 2, + 50, + 53, + 52, + 0, + 2, + 50, + 52, + 51, + 0, + 2, + 38, + 51, + 42, + 0, + 2, + 38, + 47, + 51, + 0, + 2, + 6, + 47, + 38, + 0, + 2, + 6, + 60, + 47, + 0, + 2, + 6, + 61, + 60, + 0, + 2, + 6, + 10, + 61, + 0, + 2, + 10, + 51, + 61, + 0, + 2, + 10, + 42, + 51, + 0, + 2, + 11, + 50, + 43, + 0, + 2, + 11, + 58, + 50, + 0, + 2, + 39, + 50, + 46, + 0, + 2, + 39, + 43, + 50, + 0, + 2, + 7, + 58, + 11, + 0, + 2, + 7, + 59, + 58, + 0, + 2, + 7, + 46, + 59, + 0, + 2, + 7, + 39, + 46, + 0, + 2, + 9, + 48, + 57, + 0, + 2, + 9, + 41, + 48, + 0, + 2, + 9, + 55, + 13, + 0, + 2, + 9, + 57, + 55, + 0, + 2, + 13, + 52, + 45, + 0, + 2, + 13, + 55, + 52, + 0, + 2, + 8, + 49, + 40, + 0, + 2, + 8, + 56, + 49, + 0, + 2, + 12, + 53, + 54, + 0, + 2, + 12, + 44, + 53, + 0, + 2, + 8, + 12, + 54, + 0, + 2, + 8, + 54, + 56, + 0, + 2, + 40, + 53, + 44, + 0, + 2, + 40, + 49, + 53, + 0, + 2, + 55, + 57, + 60, + 0, + 2, + 55, + 60, + 61, + 0, + 2, + 56, + 54, + 58, + 0, + 2, + 56, + 58, + 59, + 0, + 2, + 48, + 52, + 53, + 0, + 2, + 48, + 53, + 49, + 0, + 2, + 40, + 12, + 8, + 0, + 2, + 40, + 44, + 12, + 0, + 2, + 9, + 45, + 41, + 0, + 2, + 9, + 13, + 45, + 0, + 2, + 38, + 10, + 6, + 0, + 2, + 38, + 42, + 10, + 0, + 2, + 7, + 43, + 39, + 0, + 2, + 7, + 11, + 43, + 0, + 2, + 36, + 32, + 33, + 0, + 2, + 36, + 37, + 32, + 0, + 2, + 30, + 34, + 35, + 0, + 2, + 30, + 31, + 34, + 0, + 2, + 29, + 16, + 37, + 0, + 2, + 37, + 16, + 32, + 0, + 2, + 28, + 34, + 31, + 0, + 2, + 28, + 4, + 34, + 0, + 2, + 1, + 26, + 27, + 0, + 2, + 1, + 2, + 26, + 0, + 2, + 26, + 19, + 25, + 0, + 2, + 25, + 19, + 36, + 0, + 2, + 24, + 26, + 25, + 0, + 2, + 24, + 27, + 26, + 0, + 2, + 23, + 30, + 24, + 0, + 2, + 23, + 21, + 30, + 0, + 2, + 23, + 25, + 22, + 0, + 2, + 23, + 24, + 25, + 0, + 2, + 14, + 20, + 15, + 0, + 2, + 14, + 21, + 20, + 0, + 2, + 20, + 23, + 22, + 0, + 2, + 20, + 21, + 23, + 0, + 2, + 36, + 5, + 37, + 0, + 2, + 36, + 19, + 5, + 0, + 2, + 34, + 18, + 35, + 0, + 2, + 34, + 4, + 18, + 0, + 2, + 32, + 20, + 33, + 0, + 2, + 32, + 16, + 20, + 0, + 2, + 30, + 17, + 31, + 0, + 2, + 30, + 21, + 17, + 0, + 2, + 3, + 0, + 14, + 0, + 2, + 14, + 15, + 3, + 0, + 2, + 0, + 2, + 1, + 0, + 2, + 0, + 3, + 2, + 0, + 3, + 41, + 45, + 52, + 48, + 0 + ] } diff --git a/src/client/components/localisation/darwin_robot/right_leg/config/right_pelvis_y.json b/src/client/components/localisation/darwin_robot/right_leg/config/right_pelvis_y.json index 738d741b..cc7a41dc 100644 --- a/src/client/components/localisation/darwin_robot/right_leg/config/right_pelvis_y.json +++ b/src/client/components/localisation/darwin_robot/right_leg/config/right_pelvis_y.json @@ -1,937 +1,937 @@ { - "metadata": { - "formatVersion": 3 - }, - "materials": [ - { - "DbgColor": 15658734, - "DbgIndex": 0, - "DbgName": "Metal", - "colorDiffuse": [ - 0.7, - 0.7, - 0.7 - ], - "colorSpecular": [ - 0.168737, - 0.168737, - 0.168737 - ], - "shading": "Lambert", - "specularCoef": 50, - "opacity": 1.0, - "vertexColors": false - } - ], - "normals": [], - "colors": [], - "uvs": [], - "vertices": [ - -0.008447, - -0.0084461, - 0.0247275, - -0.008447, - 0.0084461, - 0.0247275, - -9e-07, - 0.0119446, - 0.0247278, - 0.0084452, - 0.0084461, - 0.0247281, - 0.0119437, - -3.45e-05, - 0.0247282, - 0.0084452, - -0.0084461, - 0.0247281, - -9e-07, - -0.0119446, - 0.0247278, - -0.0084469, - -0.0084461, - 0.0225637, - -0.0119454, - -3.45e-05, - 0.0225636, - -0.0084469, - 0.0084461, - 0.0225637, - -8e-07, - 0.0119446, - 0.022564, - 0.0084453, - 0.0084461, - 0.0225643, - 0.0119438, - -3.45e-05, - 0.0225644, - 0.0084453, - -0.0084461, - 0.0225643, - -8e-07, - -0.0119446, - 0.022564, - 9e-07, - -0.0119446, - -0.0258612, - 0.008447, - -0.0084461, - -0.0258609, - 0.0119455, - -3.45e-05, - -0.0258608, - 0.008447, - 0.0084461, - -0.0258609, - 9e-07, - 0.0119446, - -0.0258612, - -0.0084452, - 0.0084461, - -0.0258615, - -0.0119437, - -3.45e-05, - -0.0258616, - -0.0084452, - -0.0084461, - -0.0258615, - 8e-07, - -0.0119446, - -0.0238143, - 0.0084469, - -0.0084461, - -0.0238141, - 0.0119454, - -3.45e-05, - -0.0238139, - 0.0084469, - 0.0084461, - -0.0238141, - 8e-07, - 0.0119446, - -0.0238143, - -0.0084453, - 0.0084461, - -0.0238146, - -0.0084453, - -0.0084461, - -0.0238146, - 0.0108336, - 0.0313981, - 0.0262884, - 0.0108353, - 0.0313981, - -0.023814, - -0.0109726, - 0.0313981, - 0.0262876, - -0.0109708, - 0.0313981, - -0.0238147, - -0.0109709, - 0.0300063, - -0.0222884, - -0.0109725, - 0.0300063, - 0.0247274, - 0.0108336, - 0.0300063, - 0.0247282, - 0.0108353, - 0.0300063, - -0.0222877, - 0.0108353, - -3.45e-05, - -0.0222877, - 0.0108336, - -3.45e-05, - 0.0247282, - -0.0109725, - -3.45e-05, - 0.0247274, - -0.0109709, - -3.45e-05, - -0.0222884, - -0.0109708, - -3.45e-05, - -0.0238147, - -0.0109726, - -3.45e-05, - 0.0262876, - 0.0108336, - -3.45e-05, - 0.0262884, - 0.0108353, - -3.45e-05, - -0.023814, - 3e-07, - 0.0332829, - -0.010382, - 0.0073414, - 0.0332829, - -0.0073409, - 0.010382, - 0.0332829, - 4e-07, - 0.0073409, - 0.0332829, - 0.0073414, - -4e-07, - 0.0332829, - 0.010382, - -0.0073414, - 0.0332829, - 0.0073409, - -0.010382, - 0.0332829, - -4e-07, - -0.0073409, - 0.0332829, - -0.0073414, - 4e-07, - 0.0313981, - -0.010382, - 0.0073414, - 0.0313981, - -0.0073409, - 0.010382, - 0.0313981, - 4e-07, - 0.0073409, - 0.0313981, - 0.0073414, - -4e-07, - 0.0313981, - 0.010382, - -0.0073414, - 0.0313981, - 0.0073409, - -0.010382, - 0.0313981, - -4e-07, - -0.0073409, - 0.0313981, - -0.0073414, - -0.0029755, - -0.0029802, - -0.0263813, - -0.0042083, - -2.31e-05, - -0.0263814, - -0.0029755, - 0.0029726, - -0.0263813, - 9e-07, - 0.0042054, - -0.0263812, - 0.0029773, - 0.0029726, - -0.0263811, - 0.0042102, - -2.31e-05, - -0.0263811, - 0.0029773, - -0.0029802, - -0.0263811, - 9e-07, - -0.0042131, - -0.0263812, - -9e-07, - -0.0042131, - 0.0267308, - 0.0029755, - -0.0029802, - 0.0267309, - 0.0042083, - -2.31e-05, - 0.0267309, - 0.0029755, - 0.0029726, - 0.0267309, - -9e-07, - 0.0042054, - 0.0267308, - -0.0029773, - 0.0029726, - 0.0267307, - -0.0042102, - -2.31e-05, - 0.0267306, - -0.0029773, - -0.0029802, - 0.0267307 - ], - "faces": [ - 2, - 1, - 3, - 2, - 0, - 2, - 40, - 3, - 1, - 0, - 2, - 40, - 4, - 3, - 0, - 2, - 0, - 4, - 40, - 0, - 2, - 0, - 5, - 4, - 0, - 2, - 0, - 6, - 5, - 0, - 2, - 9, - 10, - 11, - 0, - 2, - 9, - 11, - 12, - 0, - 2, - 8, - 9, - 12, - 0, - 2, - 7, - 8, - 12, - 0, - 2, - 7, - 12, - 13, - 0, - 2, - 14, - 7, - 13, - 0, - 2, - 46, - 53, - 47, - 0, - 2, - 53, - 48, - 47, - 0, - 2, - 53, - 52, - 48, - 0, - 2, - 52, - 51, - 48, - 0, - 2, - 51, - 49, - 48, - 0, - 2, - 51, - 50, - 49, - 0, - 2, - 28, - 26, - 27, - 0, - 2, - 42, - 26, - 28, - 0, - 2, - 42, - 25, - 26, - 0, - 2, - 29, - 25, - 42, - 0, - 2, - 29, - 24, - 25, - 0, - 2, - 29, - 23, - 24, - 0, - 2, - 20, - 19, - 18, - 0, - 2, - 20, - 18, - 17, - 0, - 2, - 21, - 20, - 17, - 0, - 2, - 22, - 21, - 17, - 0, - 2, - 22, - 17, - 16, - 0, - 2, - 15, - 22, - 16, - 0, - 2, - 69, - 62, - 68, - 0, - 2, - 62, - 67, - 68, - 0, - 2, - 62, - 63, - 67, - 0, - 2, - 63, - 64, - 67, - 0, - 2, - 64, - 66, - 67, - 0, - 2, - 64, - 65, - 66, - 0, - 2, - 71, - 77, - 70, - 0, - 2, - 71, - 72, - 77, - 0, - 2, - 72, - 76, - 77, - 0, - 2, - 72, - 75, - 76, - 0, - 2, - 72, - 73, - 75, - 0, - 2, - 73, - 74, - 75, - 0, - 2, - 63, - 62, - 77, - 0, - 2, - 63, - 77, - 76, - 0, - 2, - 64, - 63, - 76, - 0, - 2, - 64, - 76, - 75, - 0, - 2, - 65, - 64, - 75, - 0, - 2, - 65, - 75, - 74, - 0, - 2, - 66, - 65, - 74, - 0, - 2, - 66, - 74, - 73, - 0, - 2, - 67, - 66, - 73, - 0, - 2, - 67, - 73, - 72, - 0, - 2, - 68, - 67, - 72, - 0, - 2, - 68, - 72, - 71, - 0, - 2, - 69, - 68, - 71, - 0, - 2, - 69, - 71, - 70, - 0, - 2, - 62, - 69, - 70, - 0, - 2, - 62, - 70, - 77, - 0, - 2, - 61, - 52, - 53, - 0, - 2, - 61, - 60, - 52, - 0, - 2, - 60, - 51, - 52, - 0, - 2, - 60, - 59, - 51, - 0, - 2, - 59, - 50, - 51, - 0, - 2, - 59, - 58, - 50, - 0, - 2, - 58, - 49, - 50, - 0, - 2, - 58, - 57, - 49, - 0, - 2, - 57, - 48, - 49, - 0, - 2, - 57, - 56, - 48, - 0, - 2, - 56, - 47, - 48, - 0, - 2, - 56, - 55, - 47, - 0, - 2, - 55, - 46, - 47, - 0, - 2, - 55, - 54, - 46, - 0, - 2, - 53, - 54, - 61, - 0, - 2, - 53, - 46, - 54, - 0, - 2, - 38, - 37, - 34, - 0, - 2, - 38, - 34, - 41, - 0, - 2, - 36, - 39, - 40, - 0, - 2, - 36, - 40, - 35, - 0, - 2, - 34, - 37, - 36, - 0, - 2, - 34, - 36, - 35, - 0, - 2, - 42, - 45, - 38, - 0, - 2, - 42, - 38, - 41, - 0, - 2, - 44, - 43, - 40, - 0, - 2, - 44, - 40, - 39, - 0, - 2, - 33, - 31, - 45, - 0, - 2, - 33, - 45, - 42, - 0, - 2, - 30, - 32, - 43, - 0, - 2, - 30, - 43, - 44, - 0, - 2, - 34, - 33, - 42, - 0, - 2, - 34, - 42, - 41, - 0, - 2, - 32, - 35, - 43, - 0, - 2, - 35, - 40, - 43, - 0, - 2, - 36, - 30, - 44, - 0, - 2, - 36, - 44, - 39, - 0, - 2, - 31, - 37, - 45, - 0, - 2, - 37, - 38, - 45, - 0, - 2, - 30, - 36, - 31, - 0, - 2, - 36, - 37, - 31, - 0, - 2, - 33, - 34, - 35, - 0, - 2, - 33, - 35, - 32, - 0, - 2, - 30, - 31, - 33, - 0, - 2, - 30, - 33, - 32, - 0, - 2, - 29, - 21, - 22, - 0, - 2, - 29, - 42, - 21, - 0, - 2, - 42, - 20, - 21, - 0, - 2, - 42, - 28, - 20, - 0, - 2, - 28, - 19, - 20, - 0, - 2, - 28, - 27, - 19, - 0, - 2, - 27, - 18, - 19, - 0, - 2, - 27, - 26, - 18, - 0, - 2, - 26, - 17, - 18, - 0, - 2, - 26, - 25, - 17, - 0, - 2, - 25, - 16, - 17, - 0, - 2, - 25, - 24, - 16, - 0, - 2, - 24, - 15, - 16, - 0, - 2, - 24, - 23, - 15, - 0, - 2, - 23, - 22, - 15, - 0, - 2, - 23, - 29, - 22, - 0, - 2, - 6, - 0, - 7, - 0, - 2, - 7, - 14, - 6, - 0, - 2, - 5, - 14, - 13, - 0, - 2, - 5, - 6, - 14, - 0, - 2, - 4, - 13, - 12, - 0, - 2, - 4, - 5, - 13, - 0, - 2, - 3, - 12, - 11, - 0, - 2, - 3, - 4, - 12, - 0, - 2, - 2, - 11, - 10, - 0, - 2, - 2, - 3, - 11, - 0, - 2, - 1, - 10, - 9, - 0, - 2, - 1, - 2, - 10, - 0, - 2, - 40, - 9, - 8, - 0, - 2, - 40, - 1, - 9, - 0, - 2, - 0, - 8, - 7, - 0, - 2, - 0, - 40, - 8, - 0 - ] + "metadata": { + "formatVersion": 3 + }, + "materials": [ + { + "DbgColor": 15658734, + "DbgIndex": 0, + "DbgName": "Metal", + "colorDiffuse": [ + 0.7, + 0.7, + 0.7 + ], + "colorSpecular": [ + 0.168737, + 0.168737, + 0.168737 + ], + "shading": "Lambert", + "specularCoef": 50, + "opacity": 1.0, + "vertexColors": false + } + ], + "normals": [], + "colors": [], + "uvs": [], + "vertices": [ + -0.008447, + -0.0084461, + 0.0247275, + -0.008447, + 0.0084461, + 0.0247275, + -9e-07, + 0.0119446, + 0.0247278, + 0.0084452, + 0.0084461, + 0.0247281, + 0.0119437, + -3.45e-05, + 0.0247282, + 0.0084452, + -0.0084461, + 0.0247281, + -9e-07, + -0.0119446, + 0.0247278, + -0.0084469, + -0.0084461, + 0.0225637, + -0.0119454, + -3.45e-05, + 0.0225636, + -0.0084469, + 0.0084461, + 0.0225637, + -8e-07, + 0.0119446, + 0.022564, + 0.0084453, + 0.0084461, + 0.0225643, + 0.0119438, + -3.45e-05, + 0.0225644, + 0.0084453, + -0.0084461, + 0.0225643, + -8e-07, + -0.0119446, + 0.022564, + 9e-07, + -0.0119446, + -0.0258612, + 0.008447, + -0.0084461, + -0.0258609, + 0.0119455, + -3.45e-05, + -0.0258608, + 0.008447, + 0.0084461, + -0.0258609, + 9e-07, + 0.0119446, + -0.0258612, + -0.0084452, + 0.0084461, + -0.0258615, + -0.0119437, + -3.45e-05, + -0.0258616, + -0.0084452, + -0.0084461, + -0.0258615, + 8e-07, + -0.0119446, + -0.0238143, + 0.0084469, + -0.0084461, + -0.0238141, + 0.0119454, + -3.45e-05, + -0.0238139, + 0.0084469, + 0.0084461, + -0.0238141, + 8e-07, + 0.0119446, + -0.0238143, + -0.0084453, + 0.0084461, + -0.0238146, + -0.0084453, + -0.0084461, + -0.0238146, + 0.0108336, + 0.0313981, + 0.0262884, + 0.0108353, + 0.0313981, + -0.023814, + -0.0109726, + 0.0313981, + 0.0262876, + -0.0109708, + 0.0313981, + -0.0238147, + -0.0109709, + 0.0300063, + -0.0222884, + -0.0109725, + 0.0300063, + 0.0247274, + 0.0108336, + 0.0300063, + 0.0247282, + 0.0108353, + 0.0300063, + -0.0222877, + 0.0108353, + -3.45e-05, + -0.0222877, + 0.0108336, + -3.45e-05, + 0.0247282, + -0.0109725, + -3.45e-05, + 0.0247274, + -0.0109709, + -3.45e-05, + -0.0222884, + -0.0109708, + -3.45e-05, + -0.0238147, + -0.0109726, + -3.45e-05, + 0.0262876, + 0.0108336, + -3.45e-05, + 0.0262884, + 0.0108353, + -3.45e-05, + -0.023814, + 3e-07, + 0.0332829, + -0.010382, + 0.0073414, + 0.0332829, + -0.0073409, + 0.010382, + 0.0332829, + 4e-07, + 0.0073409, + 0.0332829, + 0.0073414, + -4e-07, + 0.0332829, + 0.010382, + -0.0073414, + 0.0332829, + 0.0073409, + -0.010382, + 0.0332829, + -4e-07, + -0.0073409, + 0.0332829, + -0.0073414, + 4e-07, + 0.0313981, + -0.010382, + 0.0073414, + 0.0313981, + -0.0073409, + 0.010382, + 0.0313981, + 4e-07, + 0.0073409, + 0.0313981, + 0.0073414, + -4e-07, + 0.0313981, + 0.010382, + -0.0073414, + 0.0313981, + 0.0073409, + -0.010382, + 0.0313981, + -4e-07, + -0.0073409, + 0.0313981, + -0.0073414, + -0.0029755, + -0.0029802, + -0.0263813, + -0.0042083, + -2.31e-05, + -0.0263814, + -0.0029755, + 0.0029726, + -0.0263813, + 9e-07, + 0.0042054, + -0.0263812, + 0.0029773, + 0.0029726, + -0.0263811, + 0.0042102, + -2.31e-05, + -0.0263811, + 0.0029773, + -0.0029802, + -0.0263811, + 9e-07, + -0.0042131, + -0.0263812, + -9e-07, + -0.0042131, + 0.0267308, + 0.0029755, + -0.0029802, + 0.0267309, + 0.0042083, + -2.31e-05, + 0.0267309, + 0.0029755, + 0.0029726, + 0.0267309, + -9e-07, + 0.0042054, + 0.0267308, + -0.0029773, + 0.0029726, + 0.0267307, + -0.0042102, + -2.31e-05, + 0.0267306, + -0.0029773, + -0.0029802, + 0.0267307 + ], + "faces": [ + 2, + 1, + 3, + 2, + 0, + 2, + 40, + 3, + 1, + 0, + 2, + 40, + 4, + 3, + 0, + 2, + 0, + 4, + 40, + 0, + 2, + 0, + 5, + 4, + 0, + 2, + 0, + 6, + 5, + 0, + 2, + 9, + 10, + 11, + 0, + 2, + 9, + 11, + 12, + 0, + 2, + 8, + 9, + 12, + 0, + 2, + 7, + 8, + 12, + 0, + 2, + 7, + 12, + 13, + 0, + 2, + 14, + 7, + 13, + 0, + 2, + 46, + 53, + 47, + 0, + 2, + 53, + 48, + 47, + 0, + 2, + 53, + 52, + 48, + 0, + 2, + 52, + 51, + 48, + 0, + 2, + 51, + 49, + 48, + 0, + 2, + 51, + 50, + 49, + 0, + 2, + 28, + 26, + 27, + 0, + 2, + 42, + 26, + 28, + 0, + 2, + 42, + 25, + 26, + 0, + 2, + 29, + 25, + 42, + 0, + 2, + 29, + 24, + 25, + 0, + 2, + 29, + 23, + 24, + 0, + 2, + 20, + 19, + 18, + 0, + 2, + 20, + 18, + 17, + 0, + 2, + 21, + 20, + 17, + 0, + 2, + 22, + 21, + 17, + 0, + 2, + 22, + 17, + 16, + 0, + 2, + 15, + 22, + 16, + 0, + 2, + 69, + 62, + 68, + 0, + 2, + 62, + 67, + 68, + 0, + 2, + 62, + 63, + 67, + 0, + 2, + 63, + 64, + 67, + 0, + 2, + 64, + 66, + 67, + 0, + 2, + 64, + 65, + 66, + 0, + 2, + 71, + 77, + 70, + 0, + 2, + 71, + 72, + 77, + 0, + 2, + 72, + 76, + 77, + 0, + 2, + 72, + 75, + 76, + 0, + 2, + 72, + 73, + 75, + 0, + 2, + 73, + 74, + 75, + 0, + 2, + 63, + 62, + 77, + 0, + 2, + 63, + 77, + 76, + 0, + 2, + 64, + 63, + 76, + 0, + 2, + 64, + 76, + 75, + 0, + 2, + 65, + 64, + 75, + 0, + 2, + 65, + 75, + 74, + 0, + 2, + 66, + 65, + 74, + 0, + 2, + 66, + 74, + 73, + 0, + 2, + 67, + 66, + 73, + 0, + 2, + 67, + 73, + 72, + 0, + 2, + 68, + 67, + 72, + 0, + 2, + 68, + 72, + 71, + 0, + 2, + 69, + 68, + 71, + 0, + 2, + 69, + 71, + 70, + 0, + 2, + 62, + 69, + 70, + 0, + 2, + 62, + 70, + 77, + 0, + 2, + 61, + 52, + 53, + 0, + 2, + 61, + 60, + 52, + 0, + 2, + 60, + 51, + 52, + 0, + 2, + 60, + 59, + 51, + 0, + 2, + 59, + 50, + 51, + 0, + 2, + 59, + 58, + 50, + 0, + 2, + 58, + 49, + 50, + 0, + 2, + 58, + 57, + 49, + 0, + 2, + 57, + 48, + 49, + 0, + 2, + 57, + 56, + 48, + 0, + 2, + 56, + 47, + 48, + 0, + 2, + 56, + 55, + 47, + 0, + 2, + 55, + 46, + 47, + 0, + 2, + 55, + 54, + 46, + 0, + 2, + 53, + 54, + 61, + 0, + 2, + 53, + 46, + 54, + 0, + 2, + 38, + 37, + 34, + 0, + 2, + 38, + 34, + 41, + 0, + 2, + 36, + 39, + 40, + 0, + 2, + 36, + 40, + 35, + 0, + 2, + 34, + 37, + 36, + 0, + 2, + 34, + 36, + 35, + 0, + 2, + 42, + 45, + 38, + 0, + 2, + 42, + 38, + 41, + 0, + 2, + 44, + 43, + 40, + 0, + 2, + 44, + 40, + 39, + 0, + 2, + 33, + 31, + 45, + 0, + 2, + 33, + 45, + 42, + 0, + 2, + 30, + 32, + 43, + 0, + 2, + 30, + 43, + 44, + 0, + 2, + 34, + 33, + 42, + 0, + 2, + 34, + 42, + 41, + 0, + 2, + 32, + 35, + 43, + 0, + 2, + 35, + 40, + 43, + 0, + 2, + 36, + 30, + 44, + 0, + 2, + 36, + 44, + 39, + 0, + 2, + 31, + 37, + 45, + 0, + 2, + 37, + 38, + 45, + 0, + 2, + 30, + 36, + 31, + 0, + 2, + 36, + 37, + 31, + 0, + 2, + 33, + 34, + 35, + 0, + 2, + 33, + 35, + 32, + 0, + 2, + 30, + 31, + 33, + 0, + 2, + 30, + 33, + 32, + 0, + 2, + 29, + 21, + 22, + 0, + 2, + 29, + 42, + 21, + 0, + 2, + 42, + 20, + 21, + 0, + 2, + 42, + 28, + 20, + 0, + 2, + 28, + 19, + 20, + 0, + 2, + 28, + 27, + 19, + 0, + 2, + 27, + 18, + 19, + 0, + 2, + 27, + 26, + 18, + 0, + 2, + 26, + 17, + 18, + 0, + 2, + 26, + 25, + 17, + 0, + 2, + 25, + 16, + 17, + 0, + 2, + 25, + 24, + 16, + 0, + 2, + 24, + 15, + 16, + 0, + 2, + 24, + 23, + 15, + 0, + 2, + 23, + 22, + 15, + 0, + 2, + 23, + 29, + 22, + 0, + 2, + 6, + 0, + 7, + 0, + 2, + 7, + 14, + 6, + 0, + 2, + 5, + 14, + 13, + 0, + 2, + 5, + 6, + 14, + 0, + 2, + 4, + 13, + 12, + 0, + 2, + 4, + 5, + 13, + 0, + 2, + 3, + 12, + 11, + 0, + 2, + 3, + 4, + 12, + 0, + 2, + 2, + 11, + 10, + 0, + 2, + 2, + 3, + 11, + 0, + 2, + 1, + 10, + 9, + 0, + 2, + 1, + 2, + 10, + 0, + 2, + 40, + 9, + 8, + 0, + 2, + 40, + 1, + 9, + 0, + 2, + 0, + 8, + 7, + 0, + 2, + 0, + 40, + 8, + 0 + ] } diff --git a/src/client/components/localisation/darwin_robot/right_leg/config/right_upper_leg.json b/src/client/components/localisation/darwin_robot/right_leg/config/right_upper_leg.json index f892ff0f..2aabfef7 100644 --- a/src/client/components/localisation/darwin_robot/right_leg/config/right_upper_leg.json +++ b/src/client/components/localisation/darwin_robot/right_leg/config/right_upper_leg.json @@ -1,1540 +1,1540 @@ { - "metadata": { - "formatVersion": 3 - }, - "materials": [ - { - "DbgColor": 15658734, - "DbgIndex": 0, - "DbgName": "Plastic", - "colorDiffuse": [ - 0.301961, - 0.301961, - 0.301961 - ], - "colorSpecular": [ - 0.401201, - 0.401201, - 0.401201 - ], - "shading": "Lambert", - "specularCoef": 50, - "opacity": 1.0, - "vertexColors": false - }, - { - "DbgColor": 15658734, - "DbgIndex": 1, - "DbgName": "ServoMaterial", - "colorDiffuse": [ - 0.14, - 0.14, - 0.14 - ], - "colorSpecular": [ - 0.168737, - 0.168737, - 0.168737 - ], - "shading": "Lambert", - "specularCoef": 50, - "opacity": 1.0, - "vertexColors": false - } - ], - "normals": [], - "colors": [], - "uvs": [], - "vertices": [ - -0.0148691, - -0.0550757, - 0.0116409, - -0.0148698, - -0.105434, - 0.0116417, - -0.0148704, - -0.0550762, - -0.0137534, - -0.0148712, - -0.105434, - -0.0137526, - -0.0104674, - -0.105434, - -0.0137528, - -0.0104661, - -0.105434, - 0.0116415, - -0.0104666, - -0.0550762, - -0.0137536, - -0.0104653, - -0.0550758, - 0.0116407, - -0.0104676, - -0.0995202, - -0.0189469, - -0.0104657, - -0.0995196, - 0.0166708, - -0.010467, - -0.0609905, - -0.0189474, - -0.0104651, - -0.0609898, - 0.0166702, - -0.0148713, - -0.0995202, - -0.0189466, - -0.0148695, - -0.0995195, - 0.016671, - -0.0148708, - -0.0609904, - -0.0189472, - -0.0148689, - -0.0609898, - 0.0166705, - 0.0103659, - -0.0609898, - 0.0166687, - 0.010364, - -0.0609904, - -0.0189489, - 0.0103653, - -0.0995195, - 0.0166693, - 0.0103635, - -0.0995202, - -0.0189484, - 0.0147697, - -0.0609898, - 0.0166684, - 0.0147678, - -0.0609905, - -0.0189492, - 0.0147691, - -0.0995196, - 0.016669, - 0.0147672, - -0.0995202, - -0.0189486, - 0.0147695, - -0.0550758, - 0.0116389, - 0.0147682, - -0.0550762, - -0.0137554, - 0.0147687, - -0.105434, - 0.0116397, - 0.0147674, - -0.105434, - -0.0137546, - 0.0103636, - -0.105434, - -0.0137543, - 0.0103644, - -0.0550762, - -0.0137551, - 0.010365, - -0.105434, - 0.01164, - 0.0103657, - -0.0550757, - 0.0116392, - -0.0182104, - -0.105434, - -0.0137524, - -0.0182096, - -0.0550761, - -0.0137532, - -0.018209, - -0.105434, - 0.0116419, - -0.0182083, - -0.0550757, - 0.0116411, - 0.0177641, - -0.105434, - -0.0137547, - 0.0177654, - -0.105434, - 0.0116395, - 0.0177648, - -0.0550763, - -0.0137555, - 0.0177662, - -0.0550758, - 0.0116388, - -0.0268751, - -0.104904, - -0.0082243, - 0.0268672, - -0.104906, - -0.0082262, - -0.0268748, - -0.107659, - -0.0007447, - 0.0268673, - -0.107661, - -0.0007465, - -0.0268743, - -0.105565, - 0.0070048, - 0.0268675, - -0.105567, - 0.0070029, - -0.0247106, - -0.100248, - 0.0112414, - 0.0247044, - -0.10025, - 0.0112397, - -0.0207297, - -0.0798423, - 0.0190452, - 0.0207254, - -0.0798438, - 0.0190437, - -0.02072, - -0.0748139, - 0.0190452, - 0.0207161, - -0.0748153, - 0.0190437, - -0.0151325, - -0.0748141, - 0.0256025, - 0.0151291, - -0.0748151, - 0.0256014, - -0.0151427, - -0.0393888, - 0.0256025, - 0.0151418, - -0.0393899, - 0.0256014, - -0.0191718, - -0.0383058, - 0.0220801, - 0.0191707, - -0.0383071, - 0.0220788, - -0.0200855, - -0.0355728, - 0.0202953, - 0.0200845, - -0.0355742, - 0.0202939, - -0.0202365, - -0.0210316, - 0.0199859, - 0.0202365, - -0.021033, - 0.0199845, - -0.0247056, - 0.0037197, - 0.0112427, - 0.0247067, - 0.0037179, - 0.011241, - -0.0268703, - 0.0088198, - 0.0070048, - 0.0268714, - 0.0088179, - 0.0070029, - -0.0268705, - 0.0119229, - 0.0021997, - 0.0268715, - 0.011921, - 0.0021978, - -0.0268708, - 0.0117661, - -0.0047306, - 0.0268713, - 0.0117642, - -0.0047325, - -0.0268712, - 0.0086299, - -0.0101241, - 0.0268711, - 0.008628, - -0.010126, - -0.0268716, - 0.0032585, - -0.0132302, - 0.0268709, - 0.0032566, - -0.0132321, - -0.0268735, - -0.0529287, - -0.0120951, - 0.0268689, - -0.0529305, - -0.012097, - -0.0268744, - -0.0686308, - -0.0189057, - 0.0268683, - -0.0686326, - -0.0189075, - -0.0268751, - -0.0998458, - -0.0124735, - 0.0268673, - -0.0998477, - -0.0124753, - -1.7e-06, - -0.0748146, - 0.0256017, - -5e-07, - -0.0393893, - 0.0256017, - -0.0191731, - -0.0748139, - 0.0220801, - 0.0191694, - -0.0748153, - 0.0220788, - -0.0182398, - -0.074814, - 0.021043, - 0.0182361, - -0.0748153, - 0.0210418, - -5e-07, - -0.0393893, - 0.0245647, - -1.8e-06, - -0.0748146, - 0.0245647, - -0.0216722, - -0.099846, - -0.0125567, - 0.0216643, - -0.0998475, - -0.0125582, - -0.0216714, - -0.068631, - -0.0189889, - 0.0216653, - -0.0686325, - -0.0189904, - -0.0216705, - -0.0529288, - -0.0121783, - 0.021666, - -0.0529304, - -0.0121798, - -0.0216686, - 0.0032583, - -0.0133134, - 0.0216679, - 0.0032568, - -0.0133149, - -0.0216682, - 0.0086297, - -0.0102073, - 0.0216681, - 0.0086282, - -0.0102089, - -0.0216679, - 0.0117659, - -0.0048138, - 0.0216683, - 0.0117644, - -0.0048153, - -0.0216675, - 0.0119227, - 0.0021164, - 0.0216685, - 0.0119212, - 0.0021149, - -0.0182386, - -0.0383058, - 0.021043, - 0.0182373, - -0.0383071, - 0.0210418, - -0.0142095, - -0.0393888, - 0.0245654, - 0.0142084, - -0.0393898, - 0.0245644, - -0.0141993, - -0.0748141, - 0.0245654, - 0.0141958, - -0.0748151, - 0.0245644, - -0.0216718, - -0.107659, - -0.0008279, - 0.0216642, - -0.107661, - -0.0008294, - -0.0216721, - -0.104904, - -0.0083076, - 0.0216642, - -0.104906, - -0.0083091, - -0.0216713, - -0.105565, - 0.0070045, - 0.0216645, - -0.105567, - 0.007003, - -0.0216673, - 0.0088196, - 0.0070045, - 0.0216684, - 0.0088181, - 0.007003, - -0.0206426, - -0.100248, - 0.0112412, - 0.0206364, - -0.10025, - 0.0112397, - -0.0187198, - -0.074814, - 0.0190451, - 0.018716, - -0.0748153, - 0.0190438, - -0.0187634, - -0.0798424, - 0.0190451, - 0.0187592, - -0.0798437, - 0.0190438, - -0.0184737, - -0.0210316, - 0.0199858, - 0.0184737, - -0.0210329, - 0.0199845, - -0.0184244, - -0.0355729, - 0.0202952, - 0.0184234, - -0.0355742, - 0.0202939, - -0.0206122, - 0.0037195, - 0.0112425, - 0.0206132, - 0.0037181, - 0.011241 - ], - "faces": [ - 2, - 50, - 46, - 48, - 0, - 2, - 47, - 51, - 49, - 0, - 2, - 64, - 46, - 58, - 0, - 2, - 47, - 65, - 59, - 0, - 2, - 64, - 44, - 46, - 0, - 2, - 45, - 65, - 47, - 0, - 2, - 52, - 54, - 56, - 0, - 2, - 55, - 53, - 57, - 0, - 2, - 58, - 50, - 56, - 0, - 2, - 51, - 59, - 57, - 0, - 2, - 58, - 46, - 50, - 0, - 2, - 47, - 59, - 51, - 0, - 2, - 58, - 62, - 64, - 0, - 2, - 63, - 59, - 65, - 0, - 2, - 58, - 60, - 62, - 0, - 2, - 61, - 59, - 63, - 0, - 2, - 76, - 78, - 74, - 0, - 2, - 79, - 77, - 75, - 0, - 2, - 42, - 44, - 64, - 0, - 2, - 45, - 43, - 65, - 0, - 2, - 72, - 74, - 66, - 0, - 2, - 75, - 73, - 67, - 0, - 2, - 74, - 64, - 66, - 0, - 2, - 65, - 75, - 67, - 0, - 2, - 74, - 78, - 64, - 0, - 2, - 79, - 75, - 65, - 0, - 2, - 70, - 66, - 68, - 0, - 2, - 67, - 71, - 69, - 0, - 2, - 70, - 72, - 66, - 0, - 2, - 73, - 71, - 67, - 0, - 2, - 78, - 42, - 64, - 0, - 2, - 43, - 79, - 65, - 0, - 2, - 42, - 78, - 40, - 0, - 2, - 79, - 43, - 41, - 0, - 2, - 52, - 56, - 82, - 0, - 2, - 57, - 53, - 83, - 0, - 2, - 82, - 56, - 50, - 0, - 2, - 57, - 83, - 51, - 0, - 2, - 104, - 106, - 102, - 0, - 2, - 107, - 105, - 103, - 0, - 2, - 88, - 90, - 92, - 0, - 2, - 91, - 89, - 93, - 0, - 2, - 92, - 94, - 100, - 0, - 2, - 95, - 93, - 101, - 0, - 2, - 100, - 96, - 98, - 0, - 2, - 97, - 101, - 99, - 0, - 2, - 94, - 96, - 100, - 0, - 2, - 97, - 95, - 101, - 0, - 2, - 88, - 108, - 110, - 0, - 2, - 109, - 89, - 111, - 0, - 2, - 102, - 106, - 84, - 0, - 2, - 107, - 103, - 85, - 0, - 2, - 114, - 112, - 108, - 0, - 2, - 109, - 113, - 115, - 0, - 2, - 100, - 114, - 108, - 0, - 2, - 109, - 115, - 101, - 0, - 2, - 92, - 100, - 108, - 0, - 2, - 109, - 101, - 93, - 0, - 2, - 92, - 108, - 88, - 0, - 2, - 89, - 109, - 93, - 0, - 2, - 122, - 124, - 118, - 0, - 2, - 119, - 125, - 123, - 0, - 2, - 126, - 122, - 118, - 0, - 2, - 119, - 123, - 127, - 0, - 2, - 118, - 120, - 116, - 0, - 2, - 117, - 121, - 119, - 0, - 2, - 126, - 118, - 116, - 0, - 2, - 117, - 119, - 127, - 0, - 2, - 114, - 126, - 116, - 0, - 2, - 117, - 127, - 115, - 0, - 2, - 114, - 116, - 112, - 0, - 2, - 113, - 117, - 115, - 0, - 2, - 44, - 112, - 46, - 0, - 2, - 113, - 45, - 47, - 0, - 2, - 46, - 112, - 116, - 0, - 2, - 113, - 47, - 117, - 0, - 2, - 46, - 116, - 48, - 0, - 2, - 117, - 47, - 49, - 0, - 2, - 48, - 116, - 120, - 0, - 2, - 117, - 49, - 121, - 0, - 2, - 48, - 120, - 50, - 0, - 2, - 121, - 49, - 51, - 0, - 2, - 50, - 120, - 118, - 0, - 2, - 121, - 51, - 119, - 0, - 2, - 84, - 118, - 102, - 0, - 2, - 119, - 85, - 103, - 0, - 2, - 102, - 118, - 124, - 0, - 2, - 119, - 103, - 125, - 0, - 2, - 62, - 114, - 64, - 0, - 2, - 115, - 63, - 65, - 0, - 2, - 62, - 126, - 114, - 0, - 2, - 127, - 63, - 115, - 0, - 2, - 60, - 126, - 62, - 0, - 2, - 127, - 61, - 63, - 0, - 2, - 60, - 122, - 126, - 0, - 2, - 123, - 61, - 127, - 0, - 2, - 58, - 122, - 60, - 0, - 2, - 123, - 59, - 61, - 0, - 2, - 58, - 124, - 122, - 0, - 2, - 125, - 59, - 123, - 0, - 2, - 56, - 124, - 58, - 0, - 2, - 125, - 57, - 59, - 0, - 2, - 56, - 102, - 124, - 0, - 2, - 103, - 57, - 125, - 0, - 2, - 64, - 114, - 66, - 0, - 2, - 115, - 65, - 67, - 0, - 2, - 66, - 114, - 100, - 0, - 2, - 115, - 67, - 101, - 0, - 2, - 86, - 106, - 104, - 0, - 2, - 107, - 86, - 105, - 0, - 2, - 86, - 87, - 106, - 0, - 2, - 87, - 86, - 107, - 0, - 2, - 78, - 110, - 40, - 0, - 2, - 111, - 79, - 41, - 0, - 2, - 78, - 88, - 110, - 0, - 2, - 89, - 79, - 111, - 0, - 2, - 40, - 108, - 42, - 0, - 2, - 109, - 41, - 43, - 0, - 2, - 40, - 110, - 108, - 0, - 2, - 111, - 41, - 109, - 0, - 2, - 54, - 102, - 56, - 0, - 2, - 103, - 55, - 57, - 0, - 2, - 54, - 104, - 102, - 0, - 2, - 105, - 55, - 103, - 0, - 2, - 66, - 100, - 68, - 0, - 2, - 101, - 67, - 69, - 0, - 2, - 68, - 100, - 98, - 0, - 2, - 101, - 69, - 99, - 0, - 2, - 68, - 98, - 70, - 0, - 2, - 99, - 69, - 71, - 0, - 2, - 70, - 98, - 96, - 0, - 2, - 99, - 71, - 97, - 0, - 2, - 72, - 92, - 74, - 0, - 2, - 93, - 73, - 75, - 0, - 2, - 72, - 94, - 92, - 0, - 2, - 95, - 73, - 93, - 0, - 2, - 74, - 92, - 76, - 0, - 2, - 93, - 75, - 77, - 0, - 2, - 76, - 92, - 90, - 0, - 2, - 93, - 77, - 91, - 0, - 2, - 76, - 88, - 78, - 0, - 2, - 89, - 77, - 79, - 0, - 2, - 76, - 90, - 88, - 0, - 2, - 91, - 77, - 89, - 0, - 2, - 70, - 96, - 72, - 0, - 2, - 97, - 71, - 73, - 0, - 2, - 72, - 96, - 94, - 0, - 2, - 97, - 73, - 95, - 0, - 2, - 81, - 104, - 54, - 0, - 2, - 105, - 81, - 55, - 0, - 2, - 81, - 86, - 104, - 0, - 2, - 86, - 81, - 105, - 0, - 2, - 52, - 106, - 80, - 0, - 2, - 107, - 53, - 80, - 0, - 2, - 80, - 106, - 87, - 0, - 2, - 107, - 80, - 87, - 0, - 2, - 82, - 84, - 52, - 0, - 2, - 85, - 83, - 53, - 0, - 2, - 52, - 84, - 106, - 0, - 2, - 85, - 53, - 107, - 0, - 2, - 52, - 81, - 54, - 0, - 2, - 81, - 53, - 55, - 0, - 2, - 52, - 80, - 81, - 0, - 2, - 80, - 53, - 81, - 0, - 3, - 43, - 45, - 113, - 109, - 0, - 3, - 42, - 108, - 112, - 44, - 0, - 3, - 51, - 83, - 85, - 119, - 0, - 3, - 50, - 118, - 84, - 82, - 0, - 2, - 32, - 33, - 36, - 1, - 2, - 33, - 38, - 36, - 1, - 2, - 35, - 34, - 37, - 1, - 2, - 35, - 37, - 39, - 1, - 2, - 33, - 39, - 38, - 1, - 2, - 33, - 35, - 39, - 1, - 2, - 32, - 36, - 37, - 1, - 2, - 32, - 37, - 34, - 1, - 2, - 38, - 37, - 36, - 1, - 2, - 38, - 39, - 37, - 1, - 2, - 32, - 34, - 35, - 1, - 2, - 32, - 35, - 33, - 1, - 2, - 20, - 18, - 22, - 1, - 2, - 20, - 16, - 18, - 1, - 2, - 17, - 23, - 19, - 1, - 2, - 17, - 21, - 23, - 1, - 2, - 23, - 25, - 27, - 1, - 2, - 23, - 21, - 25, - 1, - 2, - 19, - 28, - 29, - 1, - 2, - 19, - 29, - 17, - 1, - 2, - 28, - 23, - 27, - 1, - 2, - 28, - 19, - 23, - 1, - 2, - 21, - 29, - 25, - 1, - 2, - 21, - 17, - 29, - 1, - 2, - 31, - 20, - 24, - 1, - 2, - 31, - 16, - 20, - 1, - 2, - 18, - 31, - 30, - 1, - 2, - 18, - 16, - 31, - 1, - 2, - 24, - 22, - 26, - 1, - 2, - 24, - 20, - 22, - 1, - 2, - 22, - 30, - 26, - 1, - 2, - 22, - 18, - 30, - 1, - 2, - 9, - 1, - 5, - 1, - 2, - 9, - 13, - 1, - 1, - 2, - 7, - 9, - 5, - 1, - 2, - 7, - 11, - 9, - 1, - 2, - 0, - 13, - 15, - 1, - 2, - 0, - 1, - 13, - 1, - 2, - 0, - 11, - 7, - 1, - 2, - 0, - 15, - 11, - 1, - 2, - 10, - 2, - 6, - 1, - 2, - 10, - 14, - 2, - 1, - 2, - 3, - 8, - 4, - 1, - 2, - 3, - 12, - 8, - 1, - 2, - 12, - 3, - 2, - 1, - 2, - 12, - 2, - 14, - 1, - 2, - 8, - 6, - 4, - 1, - 2, - 8, - 10, - 6, - 1, - 2, - 14, - 8, - 12, - 1, - 2, - 14, - 10, - 8, - 1, - 2, - 11, - 13, - 9, - 1, - 2, - 11, - 15, - 13, - 1 - ] + "metadata": { + "formatVersion": 3 + }, + "materials": [ + { + "DbgColor": 15658734, + "DbgIndex": 0, + "DbgName": "Plastic", + "colorDiffuse": [ + 0.301961, + 0.301961, + 0.301961 + ], + "colorSpecular": [ + 0.401201, + 0.401201, + 0.401201 + ], + "shading": "Lambert", + "specularCoef": 50, + "opacity": 1.0, + "vertexColors": false + }, + { + "DbgColor": 15658734, + "DbgIndex": 1, + "DbgName": "ServoMaterial", + "colorDiffuse": [ + 0.14, + 0.14, + 0.14 + ], + "colorSpecular": [ + 0.168737, + 0.168737, + 0.168737 + ], + "shading": "Lambert", + "specularCoef": 50, + "opacity": 1.0, + "vertexColors": false + } + ], + "normals": [], + "colors": [], + "uvs": [], + "vertices": [ + -0.0148691, + -0.0550757, + 0.0116409, + -0.0148698, + -0.105434, + 0.0116417, + -0.0148704, + -0.0550762, + -0.0137534, + -0.0148712, + -0.105434, + -0.0137526, + -0.0104674, + -0.105434, + -0.0137528, + -0.0104661, + -0.105434, + 0.0116415, + -0.0104666, + -0.0550762, + -0.0137536, + -0.0104653, + -0.0550758, + 0.0116407, + -0.0104676, + -0.0995202, + -0.0189469, + -0.0104657, + -0.0995196, + 0.0166708, + -0.010467, + -0.0609905, + -0.0189474, + -0.0104651, + -0.0609898, + 0.0166702, + -0.0148713, + -0.0995202, + -0.0189466, + -0.0148695, + -0.0995195, + 0.016671, + -0.0148708, + -0.0609904, + -0.0189472, + -0.0148689, + -0.0609898, + 0.0166705, + 0.0103659, + -0.0609898, + 0.0166687, + 0.010364, + -0.0609904, + -0.0189489, + 0.0103653, + -0.0995195, + 0.0166693, + 0.0103635, + -0.0995202, + -0.0189484, + 0.0147697, + -0.0609898, + 0.0166684, + 0.0147678, + -0.0609905, + -0.0189492, + 0.0147691, + -0.0995196, + 0.016669, + 0.0147672, + -0.0995202, + -0.0189486, + 0.0147695, + -0.0550758, + 0.0116389, + 0.0147682, + -0.0550762, + -0.0137554, + 0.0147687, + -0.105434, + 0.0116397, + 0.0147674, + -0.105434, + -0.0137546, + 0.0103636, + -0.105434, + -0.0137543, + 0.0103644, + -0.0550762, + -0.0137551, + 0.010365, + -0.105434, + 0.01164, + 0.0103657, + -0.0550757, + 0.0116392, + -0.0182104, + -0.105434, + -0.0137524, + -0.0182096, + -0.0550761, + -0.0137532, + -0.018209, + -0.105434, + 0.0116419, + -0.0182083, + -0.0550757, + 0.0116411, + 0.0177641, + -0.105434, + -0.0137547, + 0.0177654, + -0.105434, + 0.0116395, + 0.0177648, + -0.0550763, + -0.0137555, + 0.0177662, + -0.0550758, + 0.0116388, + -0.0268751, + -0.104904, + -0.0082243, + 0.0268672, + -0.104906, + -0.0082262, + -0.0268748, + -0.107659, + -0.0007447, + 0.0268673, + -0.107661, + -0.0007465, + -0.0268743, + -0.105565, + 0.0070048, + 0.0268675, + -0.105567, + 0.0070029, + -0.0247106, + -0.100248, + 0.0112414, + 0.0247044, + -0.10025, + 0.0112397, + -0.0207297, + -0.0798423, + 0.0190452, + 0.0207254, + -0.0798438, + 0.0190437, + -0.02072, + -0.0748139, + 0.0190452, + 0.0207161, + -0.0748153, + 0.0190437, + -0.0151325, + -0.0748141, + 0.0256025, + 0.0151291, + -0.0748151, + 0.0256014, + -0.0151427, + -0.0393888, + 0.0256025, + 0.0151418, + -0.0393899, + 0.0256014, + -0.0191718, + -0.0383058, + 0.0220801, + 0.0191707, + -0.0383071, + 0.0220788, + -0.0200855, + -0.0355728, + 0.0202953, + 0.0200845, + -0.0355742, + 0.0202939, + -0.0202365, + -0.0210316, + 0.0199859, + 0.0202365, + -0.021033, + 0.0199845, + -0.0247056, + 0.0037197, + 0.0112427, + 0.0247067, + 0.0037179, + 0.011241, + -0.0268703, + 0.0088198, + 0.0070048, + 0.0268714, + 0.0088179, + 0.0070029, + -0.0268705, + 0.0119229, + 0.0021997, + 0.0268715, + 0.011921, + 0.0021978, + -0.0268708, + 0.0117661, + -0.0047306, + 0.0268713, + 0.0117642, + -0.0047325, + -0.0268712, + 0.0086299, + -0.0101241, + 0.0268711, + 0.008628, + -0.010126, + -0.0268716, + 0.0032585, + -0.0132302, + 0.0268709, + 0.0032566, + -0.0132321, + -0.0268735, + -0.0529287, + -0.0120951, + 0.0268689, + -0.0529305, + -0.012097, + -0.0268744, + -0.0686308, + -0.0189057, + 0.0268683, + -0.0686326, + -0.0189075, + -0.0268751, + -0.0998458, + -0.0124735, + 0.0268673, + -0.0998477, + -0.0124753, + -1.7e-06, + -0.0748146, + 0.0256017, + -5e-07, + -0.0393893, + 0.0256017, + -0.0191731, + -0.0748139, + 0.0220801, + 0.0191694, + -0.0748153, + 0.0220788, + -0.0182398, + -0.074814, + 0.021043, + 0.0182361, + -0.0748153, + 0.0210418, + -5e-07, + -0.0393893, + 0.0245647, + -1.8e-06, + -0.0748146, + 0.0245647, + -0.0216722, + -0.099846, + -0.0125567, + 0.0216643, + -0.0998475, + -0.0125582, + -0.0216714, + -0.068631, + -0.0189889, + 0.0216653, + -0.0686325, + -0.0189904, + -0.0216705, + -0.0529288, + -0.0121783, + 0.021666, + -0.0529304, + -0.0121798, + -0.0216686, + 0.0032583, + -0.0133134, + 0.0216679, + 0.0032568, + -0.0133149, + -0.0216682, + 0.0086297, + -0.0102073, + 0.0216681, + 0.0086282, + -0.0102089, + -0.0216679, + 0.0117659, + -0.0048138, + 0.0216683, + 0.0117644, + -0.0048153, + -0.0216675, + 0.0119227, + 0.0021164, + 0.0216685, + 0.0119212, + 0.0021149, + -0.0182386, + -0.0383058, + 0.021043, + 0.0182373, + -0.0383071, + 0.0210418, + -0.0142095, + -0.0393888, + 0.0245654, + 0.0142084, + -0.0393898, + 0.0245644, + -0.0141993, + -0.0748141, + 0.0245654, + 0.0141958, + -0.0748151, + 0.0245644, + -0.0216718, + -0.107659, + -0.0008279, + 0.0216642, + -0.107661, + -0.0008294, + -0.0216721, + -0.104904, + -0.0083076, + 0.0216642, + -0.104906, + -0.0083091, + -0.0216713, + -0.105565, + 0.0070045, + 0.0216645, + -0.105567, + 0.007003, + -0.0216673, + 0.0088196, + 0.0070045, + 0.0216684, + 0.0088181, + 0.007003, + -0.0206426, + -0.100248, + 0.0112412, + 0.0206364, + -0.10025, + 0.0112397, + -0.0187198, + -0.074814, + 0.0190451, + 0.018716, + -0.0748153, + 0.0190438, + -0.0187634, + -0.0798424, + 0.0190451, + 0.0187592, + -0.0798437, + 0.0190438, + -0.0184737, + -0.0210316, + 0.0199858, + 0.0184737, + -0.0210329, + 0.0199845, + -0.0184244, + -0.0355729, + 0.0202952, + 0.0184234, + -0.0355742, + 0.0202939, + -0.0206122, + 0.0037195, + 0.0112425, + 0.0206132, + 0.0037181, + 0.011241 + ], + "faces": [ + 2, + 50, + 46, + 48, + 0, + 2, + 47, + 51, + 49, + 0, + 2, + 64, + 46, + 58, + 0, + 2, + 47, + 65, + 59, + 0, + 2, + 64, + 44, + 46, + 0, + 2, + 45, + 65, + 47, + 0, + 2, + 52, + 54, + 56, + 0, + 2, + 55, + 53, + 57, + 0, + 2, + 58, + 50, + 56, + 0, + 2, + 51, + 59, + 57, + 0, + 2, + 58, + 46, + 50, + 0, + 2, + 47, + 59, + 51, + 0, + 2, + 58, + 62, + 64, + 0, + 2, + 63, + 59, + 65, + 0, + 2, + 58, + 60, + 62, + 0, + 2, + 61, + 59, + 63, + 0, + 2, + 76, + 78, + 74, + 0, + 2, + 79, + 77, + 75, + 0, + 2, + 42, + 44, + 64, + 0, + 2, + 45, + 43, + 65, + 0, + 2, + 72, + 74, + 66, + 0, + 2, + 75, + 73, + 67, + 0, + 2, + 74, + 64, + 66, + 0, + 2, + 65, + 75, + 67, + 0, + 2, + 74, + 78, + 64, + 0, + 2, + 79, + 75, + 65, + 0, + 2, + 70, + 66, + 68, + 0, + 2, + 67, + 71, + 69, + 0, + 2, + 70, + 72, + 66, + 0, + 2, + 73, + 71, + 67, + 0, + 2, + 78, + 42, + 64, + 0, + 2, + 43, + 79, + 65, + 0, + 2, + 42, + 78, + 40, + 0, + 2, + 79, + 43, + 41, + 0, + 2, + 52, + 56, + 82, + 0, + 2, + 57, + 53, + 83, + 0, + 2, + 82, + 56, + 50, + 0, + 2, + 57, + 83, + 51, + 0, + 2, + 104, + 106, + 102, + 0, + 2, + 107, + 105, + 103, + 0, + 2, + 88, + 90, + 92, + 0, + 2, + 91, + 89, + 93, + 0, + 2, + 92, + 94, + 100, + 0, + 2, + 95, + 93, + 101, + 0, + 2, + 100, + 96, + 98, + 0, + 2, + 97, + 101, + 99, + 0, + 2, + 94, + 96, + 100, + 0, + 2, + 97, + 95, + 101, + 0, + 2, + 88, + 108, + 110, + 0, + 2, + 109, + 89, + 111, + 0, + 2, + 102, + 106, + 84, + 0, + 2, + 107, + 103, + 85, + 0, + 2, + 114, + 112, + 108, + 0, + 2, + 109, + 113, + 115, + 0, + 2, + 100, + 114, + 108, + 0, + 2, + 109, + 115, + 101, + 0, + 2, + 92, + 100, + 108, + 0, + 2, + 109, + 101, + 93, + 0, + 2, + 92, + 108, + 88, + 0, + 2, + 89, + 109, + 93, + 0, + 2, + 122, + 124, + 118, + 0, + 2, + 119, + 125, + 123, + 0, + 2, + 126, + 122, + 118, + 0, + 2, + 119, + 123, + 127, + 0, + 2, + 118, + 120, + 116, + 0, + 2, + 117, + 121, + 119, + 0, + 2, + 126, + 118, + 116, + 0, + 2, + 117, + 119, + 127, + 0, + 2, + 114, + 126, + 116, + 0, + 2, + 117, + 127, + 115, + 0, + 2, + 114, + 116, + 112, + 0, + 2, + 113, + 117, + 115, + 0, + 2, + 44, + 112, + 46, + 0, + 2, + 113, + 45, + 47, + 0, + 2, + 46, + 112, + 116, + 0, + 2, + 113, + 47, + 117, + 0, + 2, + 46, + 116, + 48, + 0, + 2, + 117, + 47, + 49, + 0, + 2, + 48, + 116, + 120, + 0, + 2, + 117, + 49, + 121, + 0, + 2, + 48, + 120, + 50, + 0, + 2, + 121, + 49, + 51, + 0, + 2, + 50, + 120, + 118, + 0, + 2, + 121, + 51, + 119, + 0, + 2, + 84, + 118, + 102, + 0, + 2, + 119, + 85, + 103, + 0, + 2, + 102, + 118, + 124, + 0, + 2, + 119, + 103, + 125, + 0, + 2, + 62, + 114, + 64, + 0, + 2, + 115, + 63, + 65, + 0, + 2, + 62, + 126, + 114, + 0, + 2, + 127, + 63, + 115, + 0, + 2, + 60, + 126, + 62, + 0, + 2, + 127, + 61, + 63, + 0, + 2, + 60, + 122, + 126, + 0, + 2, + 123, + 61, + 127, + 0, + 2, + 58, + 122, + 60, + 0, + 2, + 123, + 59, + 61, + 0, + 2, + 58, + 124, + 122, + 0, + 2, + 125, + 59, + 123, + 0, + 2, + 56, + 124, + 58, + 0, + 2, + 125, + 57, + 59, + 0, + 2, + 56, + 102, + 124, + 0, + 2, + 103, + 57, + 125, + 0, + 2, + 64, + 114, + 66, + 0, + 2, + 115, + 65, + 67, + 0, + 2, + 66, + 114, + 100, + 0, + 2, + 115, + 67, + 101, + 0, + 2, + 86, + 106, + 104, + 0, + 2, + 107, + 86, + 105, + 0, + 2, + 86, + 87, + 106, + 0, + 2, + 87, + 86, + 107, + 0, + 2, + 78, + 110, + 40, + 0, + 2, + 111, + 79, + 41, + 0, + 2, + 78, + 88, + 110, + 0, + 2, + 89, + 79, + 111, + 0, + 2, + 40, + 108, + 42, + 0, + 2, + 109, + 41, + 43, + 0, + 2, + 40, + 110, + 108, + 0, + 2, + 111, + 41, + 109, + 0, + 2, + 54, + 102, + 56, + 0, + 2, + 103, + 55, + 57, + 0, + 2, + 54, + 104, + 102, + 0, + 2, + 105, + 55, + 103, + 0, + 2, + 66, + 100, + 68, + 0, + 2, + 101, + 67, + 69, + 0, + 2, + 68, + 100, + 98, + 0, + 2, + 101, + 69, + 99, + 0, + 2, + 68, + 98, + 70, + 0, + 2, + 99, + 69, + 71, + 0, + 2, + 70, + 98, + 96, + 0, + 2, + 99, + 71, + 97, + 0, + 2, + 72, + 92, + 74, + 0, + 2, + 93, + 73, + 75, + 0, + 2, + 72, + 94, + 92, + 0, + 2, + 95, + 73, + 93, + 0, + 2, + 74, + 92, + 76, + 0, + 2, + 93, + 75, + 77, + 0, + 2, + 76, + 92, + 90, + 0, + 2, + 93, + 77, + 91, + 0, + 2, + 76, + 88, + 78, + 0, + 2, + 89, + 77, + 79, + 0, + 2, + 76, + 90, + 88, + 0, + 2, + 91, + 77, + 89, + 0, + 2, + 70, + 96, + 72, + 0, + 2, + 97, + 71, + 73, + 0, + 2, + 72, + 96, + 94, + 0, + 2, + 97, + 73, + 95, + 0, + 2, + 81, + 104, + 54, + 0, + 2, + 105, + 81, + 55, + 0, + 2, + 81, + 86, + 104, + 0, + 2, + 86, + 81, + 105, + 0, + 2, + 52, + 106, + 80, + 0, + 2, + 107, + 53, + 80, + 0, + 2, + 80, + 106, + 87, + 0, + 2, + 107, + 80, + 87, + 0, + 2, + 82, + 84, + 52, + 0, + 2, + 85, + 83, + 53, + 0, + 2, + 52, + 84, + 106, + 0, + 2, + 85, + 53, + 107, + 0, + 2, + 52, + 81, + 54, + 0, + 2, + 81, + 53, + 55, + 0, + 2, + 52, + 80, + 81, + 0, + 2, + 80, + 53, + 81, + 0, + 3, + 43, + 45, + 113, + 109, + 0, + 3, + 42, + 108, + 112, + 44, + 0, + 3, + 51, + 83, + 85, + 119, + 0, + 3, + 50, + 118, + 84, + 82, + 0, + 2, + 32, + 33, + 36, + 1, + 2, + 33, + 38, + 36, + 1, + 2, + 35, + 34, + 37, + 1, + 2, + 35, + 37, + 39, + 1, + 2, + 33, + 39, + 38, + 1, + 2, + 33, + 35, + 39, + 1, + 2, + 32, + 36, + 37, + 1, + 2, + 32, + 37, + 34, + 1, + 2, + 38, + 37, + 36, + 1, + 2, + 38, + 39, + 37, + 1, + 2, + 32, + 34, + 35, + 1, + 2, + 32, + 35, + 33, + 1, + 2, + 20, + 18, + 22, + 1, + 2, + 20, + 16, + 18, + 1, + 2, + 17, + 23, + 19, + 1, + 2, + 17, + 21, + 23, + 1, + 2, + 23, + 25, + 27, + 1, + 2, + 23, + 21, + 25, + 1, + 2, + 19, + 28, + 29, + 1, + 2, + 19, + 29, + 17, + 1, + 2, + 28, + 23, + 27, + 1, + 2, + 28, + 19, + 23, + 1, + 2, + 21, + 29, + 25, + 1, + 2, + 21, + 17, + 29, + 1, + 2, + 31, + 20, + 24, + 1, + 2, + 31, + 16, + 20, + 1, + 2, + 18, + 31, + 30, + 1, + 2, + 18, + 16, + 31, + 1, + 2, + 24, + 22, + 26, + 1, + 2, + 24, + 20, + 22, + 1, + 2, + 22, + 30, + 26, + 1, + 2, + 22, + 18, + 30, + 1, + 2, + 9, + 1, + 5, + 1, + 2, + 9, + 13, + 1, + 1, + 2, + 7, + 9, + 5, + 1, + 2, + 7, + 11, + 9, + 1, + 2, + 0, + 13, + 15, + 1, + 2, + 0, + 1, + 13, + 1, + 2, + 0, + 11, + 7, + 1, + 2, + 0, + 15, + 11, + 1, + 2, + 10, + 2, + 6, + 1, + 2, + 10, + 14, + 2, + 1, + 2, + 3, + 8, + 4, + 1, + 2, + 3, + 12, + 8, + 1, + 2, + 12, + 3, + 2, + 1, + 2, + 12, + 2, + 14, + 1, + 2, + 8, + 6, + 4, + 1, + 2, + 8, + 10, + 6, + 1, + 2, + 14, + 8, + 12, + 1, + 2, + 14, + 10, + 8, + 1, + 2, + 11, + 13, + 9, + 1, + 2, + 11, + 15, + 13, + 1 + ] } diff --git a/src/client/components/localisation/field/view_model.ts b/src/client/components/localisation/field/view_model.ts index 8cd48bb2..32debc91 100644 --- a/src/client/components/localisation/field/view_model.ts +++ b/src/client/components/localisation/field/view_model.ts @@ -33,8 +33,8 @@ export class FieldViewModel { @computed private get groundGeometry() { const geometry = new PlaneGeometry( - this.model.dimensions.fieldLength + this.model.dimensions.borderStripMinWidth * 2, - this.model.dimensions.fieldWidth + this.model.dimensions.borderStripMinWidth * 2, + this.model.dimensions.fieldLength + this.model.dimensions.borderStripMinWidth * 2, + this.model.dimensions.fieldWidth + this.model.dimensions.borderStripMinWidth * 2, ) geometry.applyMatrix(new Matrix4().makeRotationX(-Math.PI / 2)) return geometry @@ -80,9 +80,9 @@ export class FieldViewModel { @computed private get centerCircle() { return new RingGeometry( - (this.model.dimensions.centerCircleDiameter - this.model.dimensions.lineWidth) * 0.5, - (this.model.dimensions.centerCircleDiameter + this.model.dimensions.lineWidth) * 0.5, - 128, + (this.model.dimensions.centerCircleDiameter - this.model.dimensions.lineWidth) * 0.5, + (this.model.dimensions.centerCircleDiameter + this.model.dimensions.lineWidth) * 0.5, + 128, ) } diff --git a/src/client/components/localisation/model.ts b/src/client/components/localisation/model.ts index 83c9ddfd..3d9133af 100644 --- a/src/client/components/localisation/model.ts +++ b/src/client/components/localisation/model.ts @@ -1,7 +1,9 @@ +import { injectable } from 'inversify' import { action, observable } from 'mobx' import { computed } from 'mobx' import { RobotModel } from './darwin_robot/model' import { FieldModel } from './field/model' +import { SkyboxModel } from './skybox/model' export class TimeModel { @observable public time: number // seconds @@ -24,15 +26,17 @@ export class TimeModel { } export enum ViewMode { - NO_CLIP, - FIRST_PERSON, - THIRD_PERSON, + FreeCamera, + FirstPerson, + ThirdPerson, } +@injectable() export class LocalisationModel { @observable public aspect: number @observable public robots: RobotModel[] @observable public field: FieldModel + @observable public skybox: SkyboxModel @observable public camera: CameraModel @observable public locked: boolean @observable public controls: ControlsModel @@ -49,10 +53,11 @@ export class LocalisationModel { aspect: 300 / 150, robots: [], field: FieldModel.of(), + skybox: SkyboxModel.of(), camera: CameraModel.of(), locked: false, controls: ControlsModel.of(), - viewMode: ViewMode.NO_CLIP, + viewMode: ViewMode.FreeCamera, time: TimeModel.of(), }) } diff --git a/src/client/components/localisation/network.ts b/src/client/components/localisation/network.ts new file mode 100644 index 00000000..0a80e5aa --- /dev/null +++ b/src/client/components/localisation/network.ts @@ -0,0 +1,45 @@ +import { inject } from 'inversify' +import { injectable } from 'inversify' +import { action } from 'mobx' +import { message } from '../../../shared/proto/messages' +import { Network } from '../../network/network' +import { LocalisationModel } from './model' +import Sensors = message.input.Sensors + +@injectable() +export class LocalisationNetwork { + public constructor(@inject(Network) private network: Network, + @inject(LocalisationModel) private model: LocalisationModel) { + this.network.on(Sensors, this.onSensors) + } + + public destroy() { + this.network.off() + } + + @action + private onSensors = (sensors: Sensors) => { + // TODO (Annable): Remove hardcoded values. + const robot = this.model.robots[0] + robot.motors.rightShoulderPitch.angle = Number(sensors.servo[0].presentPosition) + robot.motors.leftShoulderPitch.angle = Number(sensors.servo[1].presentPosition) + robot.motors.rightShoulderRoll.angle = Number(sensors.servo[2].presentPosition) + robot.motors.leftShoulderRoll.angle = Number(sensors.servo[3].presentPosition) + robot.motors.rightElbow.angle = Number(sensors.servo[4].presentPosition) + robot.motors.leftElbow.angle = Number(sensors.servo[5].presentPosition) + robot.motors.rightHipYaw.angle = Number(sensors.servo[6].presentPosition) + robot.motors.leftHipYaw.angle = Number(sensors.servo[7].presentPosition) + robot.motors.rightHipRoll.angle = Number(sensors.servo[8].presentPosition) + robot.motors.leftHipRoll.angle = Number(sensors.servo[9].presentPosition) + robot.motors.rightHipPitch.angle = Number(sensors.servo[10].presentPosition) + robot.motors.leftHipPitch.angle = Number(sensors.servo[11].presentPosition) + robot.motors.rightKnee.angle = Number(sensors.servo[12].presentPosition) + robot.motors.leftKnee.angle = Number(sensors.servo[13].presentPosition) + robot.motors.rightAnklePitch.angle = Number(sensors.servo[14].presentPosition) + robot.motors.leftAnklePitch.angle = Number(sensors.servo[15].presentPosition) + robot.motors.rightAnkleRoll.angle = Number(sensors.servo[16].presentPosition) + robot.motors.leftAnkleRoll.angle = Number(sensors.servo[17].presentPosition) + robot.motors.headPan.angle = Number(sensors.servo[18].presentPosition) + robot.motors.headTilt.angle = Number(sensors.servo[19].presentPosition) + } +} diff --git a/src/client/components/localisation/skybox/model.ts b/src/client/components/localisation/skybox/model.ts new file mode 100644 index 00000000..057a117a --- /dev/null +++ b/src/client/components/localisation/skybox/model.ts @@ -0,0 +1,30 @@ +import { observable } from 'mobx' + +export class SkyboxModel { + + @observable public turbidity: number + @observable public rayleigh: number + @observable public mieCoefficient: number + @observable public mieDirectionalG: number // default 0.8 + @observable public luminance: number + @observable public inclination: number // elevation / inclination + @observable public azimuth: number // Facing front, + @observable public showSun: boolean + + public constructor(opts: SkyboxModel) { + Object.assign(this, opts) + } + + public static of() { + return new SkyboxModel({ + turbidity: 10, + rayleigh: 2, + mieCoefficient: 0.005, + mieDirectionalG: 0.53, // default 0.8 + luminance: 0.5, + inclination: 0.49, // elevation / inclination + azimuth: 0.25, // Facing front, + showSun: false, + }) + } +} diff --git a/src/client/components/localisation/skybox/skybox.frag b/src/client/components/localisation/skybox/skybox.frag new file mode 100644 index 00000000..72d2a4b8 --- /dev/null +++ b/src/client/components/localisation/skybox/skybox.frag @@ -0,0 +1,100 @@ +// https://github.com/mrdoob/three.js/blob/dev/examples/js/SkyShader.js +varying vec3 vWorldPosition; +varying vec3 vSunDirection; +varying float vSunfade; +varying vec3 vBetaR; +varying vec3 vBetaM; +varying float vSunE; + +uniform float luminance; +uniform float mieDirectionalG; + +const vec3 cameraPos = vec3( 0.0, 0.0, 0.0 ); + +// constants for atmospheric scattering +const float pi = 3.141592653589793238462643383279502884197169; + +const float n = 1.0003; // refractive index of air +const float N = 2.545E25; // number of molecules per unit volume for air at +// 288.15K and 1013mb (sea level -45 celsius) + +// optical length at zenith for molecules +const float rayleighZenithLength = 8.4E3; +const float mieZenithLength = 1.25E3; +const vec3 up = vec3( 0.0, 1.0, 0.0 ); +// 66 arc seconds -> degrees, and the cosine of that +const float sunAngularDiameterCos = 0.999956676946448443553574619906976478926848692873900859324; + +// 3.0 / ( 16.0 * pi ) +const float THREE_OVER_SIXTEENPI = 0.05968310365946075; +// 1.0 / ( 4.0 * pi ) +const float ONE_OVER_FOURPI = 0.07957747154594767; + +float rayleighPhase( float cosTheta ) { + return THREE_OVER_SIXTEENPI * ( 1.0 + pow( cosTheta, 2.0 ) ); +} + +float hgPhase( float cosTheta, float g ) { + float g2 = pow( g, 2.0 ); + float inverse = 1.0 / pow( 1.0 - 2.0 * g * cosTheta + g2, 1.5 ); + return ONE_OVER_FOURPI * ( ( 1.0 - g2 ) * inverse ); +} + +// Filmic ToneMapping http://filmicgames.com/archives/75 +const float A = 0.15; +const float B = 0.50; +const float C = 0.10; +const float D = 0.20; +const float E = 0.02; +const float F = 0.30; + +const float whiteScale = 1.0748724675633854; // 1.0 / Uncharted2Tonemap(1000.0) + +vec3 Uncharted2Tonemap( vec3 x ) { + return ( ( x * ( A * x + C * B ) + D * E ) / ( x * ( A * x + B ) + D * F ) ) - E / F; +} + +void main() { + // optical length + // cutoff angle at 90 to avoid singularity in next formula. + float zenithAngle = acos( max( 0.0, dot( up, normalize( vWorldPosition - cameraPos ) ) ) ); + float inverse = 1.0 / ( cos( zenithAngle ) + 0.15 * pow( 93.885 - (( zenithAngle * 180.0 ) / pi ), -1.253 )); + float sR = rayleighZenithLength * inverse; + float sM = mieZenithLength * inverse; + + // combined extinction factor + vec3 Fex = exp( -( vBetaR * sR + vBetaM * sM ) ); + + // in scattering + float cosTheta = dot( normalize( vWorldPosition - cameraPos ), vSunDirection ); + + float rPhase = rayleighPhase( cosTheta * 0.5 + 0.5 ); + vec3 betaRTheta = vBetaR * rPhase; + + float mPhase = hgPhase( cosTheta, mieDirectionalG ); + vec3 betaMTheta = vBetaM * mPhase; + + vec3 Lin = pow( vSunE * ( ( betaRTheta + betaMTheta ) / ( vBetaR + vBetaM ) ) * ( 1.0 - Fex ), vec3( 1.5 ) ); + Lin *= mix( vec3( 1.0 ), pow( vSunE * ( ( betaRTheta + betaMTheta ) / ( vBetaR + vBetaM ) ) * Fex, vec3( 1.0 / 2.0 ) ), clamp( pow( 1.0 - dot( up, vSunDirection ), 5.0 ), 0.0, 1.0 ) ); + + // nightsky + vec3 direction = normalize( vWorldPosition - cameraPos ); + float theta = acos( direction.y ); // elevation --> y-axis, [-pi/2, pi/2] + float phi = atan( direction.z, direction.x ); // azimuth --> x-axis [-pi/2, pi/2] + vec2 uv = vec2( phi, theta ) / vec2( 2.0 * pi, pi ) + vec2( 0.5, 0.0 ); + vec3 L0 = vec3( 0.1 ) * Fex; + + // composition + solar disc + float sundisk = smoothstep( sunAngularDiameterCos, sunAngularDiameterCos + 0.00002, cosTheta ); + L0 += ( vSunE * 19000.0 * Fex ) * sundisk; + + vec3 texColor = ( Lin + L0 ) * 0.04 + vec3( 0.0, 0.0003, 0.00075 ); + + vec3 curr = Uncharted2Tonemap( ( log2( 2.0 / pow( luminance, 4.0 ) ) ) * texColor ); + vec3 color = curr * whiteScale; + + vec3 retColor = pow( color, vec3( 1.0 / ( 1.2 + ( 1.2 * vSunfade ) ) ) ); + + gl_FragColor = vec4( retColor, 1.0 ); + +} diff --git a/src/client/components/localisation/skybox/skybox.vert b/src/client/components/localisation/skybox/skybox.vert new file mode 100644 index 00000000..13eec38b --- /dev/null +++ b/src/client/components/localisation/skybox/skybox.vert @@ -0,0 +1,69 @@ +// https://github.com/mrdoob/three.js/blob/dev/examples/js/SkyShader.js +uniform vec3 sunPosition; +uniform float rayleigh; +uniform float turbidity; +uniform float mieCoefficient; + +varying vec3 vWorldPosition; +varying vec3 vSunDirection; +varying float vSunfade; +varying vec3 vBetaR; +varying vec3 vBetaM; +varying float vSunE; + +const vec3 up = vec3( 0.0, 1.0, 0.0 ); + +// constants for atmospheric scattering +const float e = 2.71828182845904523536028747135266249775724709369995957; +const float pi = 3.141592653589793238462643383279502884197169; + +// wavelength of used primaries, according to preetham +const vec3 lambda = vec3( 680E-9, 550E-9, 450E-9 ); +// this pre-calcuation replaces older TotalRayleigh(vec3 lambda) function: +// (8.0 * pow(pi, 3.0) * pow(pow(n, 2.0) - 1.0, 2.0) * (6.0 + 3.0 * pn)) / +// (3.0 * N * pow(lambda, vec3(4.0)) * (6.0 - 7.0 * pn)) +const vec3 totalRayleigh = vec3( 5.804542996261093E-6, 1.3562911419845635E-5, 3.0265902468824876E-5 ); + +// mie stuff +// K coefficient for the primaries +const float v = 4.0; +const vec3 K = vec3( 0.686, 0.678, 0.666 ); +// MieConst = pi * pow( ( 2.0 * pi ) / lambda, vec3( v - 2.0 ) ) * K +const vec3 MieConst = vec3( 1.8399918514433978E14, 2.7798023919660528E14, 4.0790479543861094E14 ); + +// earth shadow hack +// cutoffAngle = pi / 1.95; +const float cutoffAngle = 1.6110731556870734; +const float steepness = 1.5; +const float EE = 1000.0; + +float sunIntensity( float zenithAngleCos ) { + zenithAngleCos = clamp( zenithAngleCos, -1.0, 1.0 ); + return EE * max( 0.0, 1.0 - pow( e, -( ( cutoffAngle - acos( zenithAngleCos ) ) / steepness ) ) ); +} + +vec3 totalMie( float T ) { + float c = ( 0.2 * T ) * 10E-18; + return 0.434 * c * MieConst; +} +void main() { + vec4 worldPosition = modelMatrix * vec4( position, 1.0 ); + vWorldPosition = worldPosition.xyz; + + gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 ); + + vSunDirection = normalize( sunPosition ); + + vSunE = sunIntensity( dot( vSunDirection, up ) ); + + vSunfade = 1.0 - clamp( 1.0 - exp( ( sunPosition.y / 450000.0 ) ), 0.0, 1.0 ); + + float rayleighCoefficient = rayleigh - ( 1.0 * ( 1.0 - vSunfade ) ); + + // extinction (absorbtion + out scattering) + // rayleigh coefficients + vBetaR = totalRayleigh * rayleighCoefficient; + + // mie coefficients + vBetaM = totalMie( turbidity ) * mieCoefficient; +} diff --git a/src/client/components/localisation/skybox/view_model.ts b/src/client/components/localisation/skybox/view_model.ts new file mode 100644 index 00000000..6fa2ce91 --- /dev/null +++ b/src/client/components/localisation/skybox/view_model.ts @@ -0,0 +1,100 @@ +import { createTransformer } from 'mobx' +import { computed } from 'mobx' +import { BackSide } from 'three' +import { Mesh } from 'three' +import { SphereBufferGeometry } from 'three' +import { MeshBasicMaterial } from 'three' +import { Object3D } from 'three' +import { PlaneBufferGeometry } from 'three' +import { ShaderMaterial } from 'three' +import { Vector3 } from 'three' +import { SkyboxModel } from './model' +import * as SkyboxFrag from './skybox.frag' +import * as SkyboxVert from './skybox.vert' + +export class SkyboxViewModel { + + public constructor(private model: SkyboxModel) { + } + + public static of = createTransformer((model: SkyboxModel): SkyboxViewModel => { + return new SkyboxViewModel(model) + }) + + @computed + public get skybox() { + // reference: http://threejs.org/examples/#webgl_shaders_sky + const skybox = new Object3D() + + skybox.add(this.sky) + skybox.add(this.ground) + + if (this.model.showSun) { + skybox.add(this.sun) + } + + return skybox + } + + @computed + private get sky() { + const geo = new SphereBufferGeometry(40, 32, 15) + const mat = new ShaderMaterial({ + fragmentShader: String(SkyboxFrag), + vertexShader: String(SkyboxVert), + uniforms: { + luminance: { value: this.model.luminance }, + turbidity: { value: this.model.turbidity }, + rayleigh: { value: this.model.rayleigh }, + mieCoefficient: { value: this.model.mieCoefficient }, + mieDirectionalG: { value: this.model.mieDirectionalG }, + sunPosition: { value: this.sunPosition }, + }, + side: BackSide, + }) + + const mesh = new Mesh(geo, mat) + mesh.name = 'skyboxSky' + + return mesh + } + + @computed + private get ground() { + const groundGeo = new PlaneBufferGeometry(40, 40) + const groundMat = new MeshBasicMaterial({ color: 0x613610 }) + const ground = new Mesh(groundGeo, groundMat) + ground.name = 'skyboxGround' + ground.position.y = -0.01 + ground.rotation.x = -Math.PI / 2 + + return ground + } + + @computed + private get sun() { + const sunSphere = new Mesh( + new SphereBufferGeometry(40, 16, 8), + new MeshBasicMaterial({ color: 0xffffff }), + ) + + sunSphere.name = 'skyboxSun' + sunSphere.position.copy(this.sunPosition) + + return sunSphere + } + + @computed + private get sunPosition(): Vector3 { + const position = new Vector3() + const distance = 40 + const theta = Math.PI * (this.model.inclination - 0.5) + const phi = 2 * Math.PI * (this.model.azimuth - 0.5) + + position.x = distance * Math.cos(phi) + position.y = distance * Math.sin(phi) * Math.sin(theta) + position.z = distance * Math.sin(phi) * Math.cos(theta) + + return position + } +} diff --git a/src/client/components/localisation/style.css b/src/client/components/localisation/style.css index e6c324ff..7c9888b3 100644 --- a/src/client/components/localisation/style.css +++ b/src/client/components/localisation/style.css @@ -1,45 +1,45 @@ .localisation { - flex-grow: 1; - flex-shrink: 1; - display: flex; - flex-direction: column; - position: relative; + flex-grow: 1; + flex-shrink: 1; + display: flex; + flex-direction: column; + position: relative; } .localisation__menu { - list-style-type: none; - margin: 0; - padding: 0; - height: 60px; - display: flex; - align-items: stretch; + list-style-type: none; + margin: 0; + padding: 0; + height: inherit; + display: flex; + align-items: stretch; } .localisation__menuItem { - display: flex; - margin: 0; - padding: 0; + display: flex; + margin: 0; + padding: 0; } .localisation__menuButton { - background-color: transparent; - color: #000; - padding: 16px; - font-size: 0.8rem; - border: 1px solid transparent; - cursor: pointer; - transition: background-color 0.3s, border 0.3s; + background-color: transparent; + color: #000; + padding: 16px; + font-size: 0.8rem; + border: 1px solid transparent; + cursor: pointer; + transition: background-color 0.3s, border 0.3s; } .localisation__menuButton:hover { - background-color: #f9f9f9; - border: 1px solid rgba(0, 0, 0, 0.2); + background-color: #f9f9f9; + border: 1px solid rgba(0, 0, 0, 0.2); } .localisation__menuButton:focus, .localisation__menuButton:active { - outline: none; - border: 1px solid rgba(0, 0, 0, 0.4); + outline: none; + border: 1px solid rgba(0, 0, 0, 0.4); } .localisation__canvasContainer { @@ -54,32 +54,32 @@ } .localisation__status { - background-color: rgba(0, 0, 0, 0.3); - border-radius: 6px; - color: white; - padding: 16px; - text-align: center; - position: absolute; - bottom: 8px; - left: 8px; - right: 8px; - font-size: 1.1rem; - font-weight: bold; - display: flex; - justify-content: space-between; - flex-basis: 0; + background-color: rgba(0, 0, 0, 0.3); + border-radius: 6px; + color: white; + padding: 16px; + text-align: center; + position: absolute; + bottom: 8px; + left: 8px; + right: 8px; + font-size: 1.1rem; + font-weight: bold; + display: flex; + justify-content: space-between; + flex-basis: 0; } .localisation__info { - text-align: left; - width: 33%; + text-align: left; + width: 33%; } .localisation__target { - width: 33%; + width: 33%; } .localisation__viewMode { - text-align: right; - width: 33%; + text-align: right; + width: 33%; } diff --git a/src/client/components/localisation/tests/controller.tests.ts b/src/client/components/localisation/tests/controller.tests.ts new file mode 100644 index 00000000..d0b3971c --- /dev/null +++ b/src/client/components/localisation/tests/controller.tests.ts @@ -0,0 +1,36 @@ +import 'reflect-metadata' +import { LocalisationController } from '../controller' +import { LocalisationModel } from '../model' +import { ViewMode } from '../model' + +describe('LocalisationController', () => { + let controller: LocalisationController + let model: LocalisationModel + + beforeEach(() => { + model = LocalisationModel.of() + controller = new LocalisationController() + }) + + describe('clicking the hawk eye button', () => { + beforeEach(() => { + controller.onHawkEyeClick(model) + }) + + it('resets yaw to 0', () => { + expect(model.camera.yaw).toEqual(0) + }) + + it('resets pitch to looking vertically down', () => { + expect(model.camera.pitch).toEqual(-Math.PI / 2) + }) + + it('moves camera above the field', () => { + expect(model.camera.position).toEqual({ x: 0, y: 5, z: 0 }) + }) + + it('resets viewing mode to no clip', () => { + expect(model.viewMode).toEqual(ViewMode.FreeCamera) + }) + }) +}) diff --git a/src/client/components/localisation/view.tsx b/src/client/components/localisation/view.tsx index 83d4a628..e65bd526 100644 --- a/src/client/components/localisation/view.tsx +++ b/src/client/components/localisation/view.tsx @@ -1,25 +1,31 @@ -import { autorun, IReactionDisposer } from 'mobx' +import { autorun } from 'mobx' import { runInAction } from 'mobx' -import { inject, observer } from 'mobx-react' +import { IReactionDisposer } from 'mobx' +import { observer } from 'mobx-react' import * as React from 'react' +import { HTMLProps } from 'react' import { WebGLRenderer } from 'three' +import { MenuBar } from '../menu_bar/view' +import { LocalisationController } from './controller' import { LocalisationModel } from './model' import { ViewMode } from './model' +import { LocalisationNetwork } from './network' import * as style from './style.css' import { LocalisationViewModel } from './view_model' -@inject('localisationStore') +interface LocalisationViewProps extends HTMLProps { + controller: LocalisationController + model: LocalisationModel + network: LocalisationNetwork +} + @observer -export class LocalisationView extends React.Component { +export class LocalisationView extends React.Component { private canvas: HTMLCanvasElement private renderer: WebGLRenderer private stopAutorun: IReactionDisposer private rafId: number - constructor(props: any, context: any) { - super(props, context) - } - public componentDidMount(): void { this.renderer = new WebGLRenderer({ canvas: this.canvas, @@ -44,20 +50,20 @@ export class LocalisationView extends React.Component { document.removeEventListener('keyup', this.onKeyUp, false) document.removeEventListener('wheel', this.onWheel, false) cancelAnimationFrame(this.rafId) + this.props.network.destroy() } public render(): JSX.Element { - const model = this.props.localisationStore as LocalisationModel return ( -
- -
- { - this.canvas = canvas - }}/> -
- +
+ +
+ { + this.canvas = canvas + }}/>
+ +
) } @@ -67,73 +73,74 @@ export class LocalisationView extends React.Component { private onAnimationFrame = (time: number) => { this.rafId = requestAnimationFrame(this.onAnimationFrame) - this.props.presenter.onAnimationFrame(time) + this.props.controller.onAnimationFrame(this.props.model, time) } private renderScene(): void { const canvas = this.canvas - const model = this.props.localisationStore if (canvas.width !== canvas.clientWidth || canvas.height !== canvas.clientHeight) { this.renderer.setSize(canvas.clientWidth, canvas.clientHeight, false) - runInAction(() => model.aspect = canvas.clientWidth / canvas.clientHeight) + runInAction(() => this.props.model.aspect = canvas.clientWidth / canvas.clientHeight) } - const viewModel = LocalisationViewModel.of(model) + const viewModel = LocalisationViewModel.of(this.props.model) this.renderer.render(viewModel.scene, viewModel.camera) - runInAction(() => model.time.lastRenderTime = model.time.time) + runInAction(() => this.props.model.time.lastRenderTime = this.props.model.time.time) } private onClick = (e: MouseEvent) => { if (e.button === 0) { - this.props.presenter.onLeftClick(this) + this.props.controller.onLeftClick(this.props.model, () => this.requestPointerLock()) } else if (e.button === 2) { - this.props.presenter.onRightClick(this) + this.props.controller.onRightClick(this.props.model) } } private onPointerLockChange = () => { - this.props.presenter.onPointerLockChange(document.pointerLockElement === this.canvas) + this.props.controller.onPointerLockChange(this.props.model, document.pointerLockElement === this.canvas) } private onMouseMove = (e: MouseEvent) => { - this.props.presenter.onMouseMove(e.movementX, e.movementY) + this.props.controller.onMouseMove(this.props.model, e.movementX, e.movementY) } private onKeyDown = (e: KeyboardEvent) => { - this.props.presenter.onKeyDown(e.keyCode, { + this.props.controller.onKeyDown(this.props.model, e.keyCode, { shiftKey: e.shiftKey, ctrlKey: e.ctrlKey, }) } private onKeyUp = (e: KeyboardEvent) => { - this.props.presenter.onKeyUp(e.keyCode) + this.props.controller.onKeyUp(this.props.model, e.keyCode) } private onHawkEyeClick = () => { - this.props.presenter.onHawkEyeClick() + this.props.controller.onHawkEyeClick(this.props.model) } private onWheel = (e: WheelEvent) => { e.preventDefault() - this.props.presenter.onWheel(e.deltaY) + this.props.controller.onWheel(this.props.model, e.deltaY) } } -interface MenuBarProps { +interface LocalisationMenuBarProps { onHawkEyeClick(): void } -const MenuBar = observer((props: MenuBarProps) => { +const LocalisationMenuBar = observer((props: LocalisationMenuBarProps) => { return ( +
+
) }) @@ -142,24 +149,26 @@ interface StatusBarProps { } const StatusBar = observer((props: StatusBarProps) => { - const target = props.model.viewMode !== ViewMode.NO_CLIP && props.model.target ? props.model.target.name : 'No Target' + const target = props.model.viewMode !== ViewMode.FreeCamera && props.model.target + ? props.model.target.name + : 'No Target' return ( -
-   - {target} - {viewModeString(props.model.viewMode)} -
+
+   + {target} + {viewModeString(props.model.viewMode)} +
) }) function viewModeString(viewMode: ViewMode) { switch (viewMode) { - case ViewMode.NO_CLIP: + case ViewMode.FreeCamera: return 'Free Camera' - case ViewMode.FIRST_PERSON: + case ViewMode.FirstPerson: return 'First Person' - case ViewMode.THIRD_PERSON: + case ViewMode.ThirdPerson: return 'Third Person' default: throw new Error(`No string defined for view mode ${viewMode}`) diff --git a/src/client/components/localisation/view_model.ts b/src/client/components/localisation/view_model.ts index df04eaee..37ca216a 100644 --- a/src/client/components/localisation/view_model.ts +++ b/src/client/components/localisation/view_model.ts @@ -8,6 +8,7 @@ import { Object3D } from 'three' import { RobotViewModel } from './darwin_robot/view_model' import { FieldViewModel } from './field/view_model' import { LocalisationModel } from './model' +import { SkyboxViewModel } from './skybox/view_model' export class LocalisationViewModel { public constructor(private model: LocalisationModel) { @@ -21,7 +22,9 @@ export class LocalisationViewModel { public get scene(): Scene { const scene = new Scene() this.robots.forEach(robot => scene.add(robot)) + scene.add(this.field) + scene.add(this.skybox) scene.add(this.hemisphereLight) scene.add(this.pointLight) return scene @@ -50,6 +53,11 @@ export class LocalisationViewModel { return new HemisphereLight('#fff', '#fff', 0.6) } + @computed + private get skybox() { + return SkyboxViewModel.of(this.model.skybox).skybox + } + @computed private get pointLight() { const light = new PointLight('#fff') diff --git a/src/client/components/menu_bar/style.css b/src/client/components/menu_bar/style.css new file mode 100644 index 00000000..da79edec --- /dev/null +++ b/src/client/components/menu_bar/style.css @@ -0,0 +1,4 @@ +.menuBar { + display: flex; + height: 60px; +} diff --git a/src/client/components/menu_bar/view.tsx b/src/client/components/menu_bar/view.tsx new file mode 100644 index 00000000..059fcfe3 --- /dev/null +++ b/src/client/components/menu_bar/view.tsx @@ -0,0 +1,13 @@ +import * as React from 'react' +import { HTMLProps } from 'react' +import * as style from './style.css' + +export type MenuBarProps = HTMLProps + +export const MenuBar = (props: MenuBarProps) => { + return ( +
+ {props.children} +
+ ) +} diff --git a/src/client/components/navigation/icons/chart.svg b/src/client/components/navigation/icons/chart.svg index 10840fa4..071d9a22 100644 --- a/src/client/components/navigation/icons/chart.svg +++ b/src/client/components/navigation/icons/chart.svg @@ -1,3 +1,4 @@ - + diff --git a/src/client/components/navigation/icons/controller.svg b/src/client/components/navigation/icons/controller.svg index 5e73adab..37403cfd 100644 --- a/src/client/components/navigation/icons/controller.svg +++ b/src/client/components/navigation/icons/controller.svg @@ -1,3 +1,4 @@ - + diff --git a/src/client/components/navigation/icons/cube.svg b/src/client/components/navigation/icons/cube.svg index a00f1752..cba13dd8 100644 --- a/src/client/components/navigation/icons/cube.svg +++ b/src/client/components/navigation/icons/cube.svg @@ -1,5 +1,5 @@ - - + + diff --git a/src/client/components/navigation/icons/eye.svg b/src/client/components/navigation/icons/eye.svg index 2f3cd1cf..f9898165 100644 --- a/src/client/components/navigation/icons/eye.svg +++ b/src/client/components/navigation/icons/eye.svg @@ -1,4 +1,5 @@ - + diff --git a/src/client/components/navigation/icons/map.svg b/src/client/components/navigation/icons/map.svg index 9c97a76e..cb6e15c8 100644 --- a/src/client/components/navigation/icons/map.svg +++ b/src/client/components/navigation/icons/map.svg @@ -1,7 +1,7 @@ - - - - + + + + diff --git a/src/client/components/navigation/icons/nuclear.svg b/src/client/components/navigation/icons/nuclear.svg index 0c679b57..138bc3b1 100644 --- a/src/client/components/navigation/icons/nuclear.svg +++ b/src/client/components/navigation/icons/nuclear.svg @@ -1,4 +1,4 @@ - + diff --git a/src/client/components/navigation/icons/ordering.svg b/src/client/components/navigation/icons/ordering.svg index 914b8635..d1f38dce 100644 --- a/src/client/components/navigation/icons/ordering.svg +++ b/src/client/components/navigation/icons/ordering.svg @@ -1,3 +1,4 @@ - + diff --git a/src/client/components/navigation/icons/scatter.svg b/src/client/components/navigation/icons/scatter.svg index 06aade19..35533eb1 100644 --- a/src/client/components/navigation/icons/scatter.svg +++ b/src/client/components/navigation/icons/scatter.svg @@ -1,3 +1,4 @@ - + diff --git a/src/client/components/navigation/icons/speedometer.svg b/src/client/components/navigation/icons/speedometer.svg index c7920e11..c91fad05 100644 --- a/src/client/components/navigation/icons/speedometer.svg +++ b/src/client/components/navigation/icons/speedometer.svg @@ -1,4 +1,6 @@ - - + + diff --git a/src/client/components/navigation/style.css b/src/client/components/navigation/style.css index ae18c0f1..442542f7 100644 --- a/src/client/components/navigation/style.css +++ b/src/client/components/navigation/style.css @@ -1,62 +1,55 @@ .header { - background-color: #1197d3; - color: #fff; - text-align: center; + background-color: #1197d3; + color: #fff; + text-align: center; } .header--dark { - background-color: #0a2938; -} - -.header__logoContainer { - background-color: #fff; - display: flex; - align-items: center; - height: 60px; -} - -.header__logo { - width: 40px; - height: 40px; - margin: 8px; + background-color: #0a2938; } .header__title { - margin-right: 8px; - font-size: 1.2rem; - color: #000; - font-weight: 400; + display: flex; + justify-content: center; + align-items: center; + margin: 0; + background-color: #fff; + height: 60px; + font-size: 1.2rem; + color: #1197d3; + font-weight: 500; } .header__list { - list-style-type: none; - margin: 0; - padding: 0; + list-style-type: none; + margin: 0; + padding: 0; } -.header__item {} +.header__item { +} .header__link { - padding: 1rem; - color: #fff; - text-decoration: none; - display: flex; - flex-direction: column; - align-items: center; - font-size: 0.7rem; - transition: background-color 0.3s ease; + padding: 1rem; + color: #fff; + text-decoration: none; + display: flex; + flex-direction: column; + align-items: center; + font-size: 0.7rem; + transition: background-color 0.3s ease; } .header__link:hover { - background-color: #0d76a6; + background-color: #0d76a6; } .header__link--active, .header__link--active:hover { - background-color: #004363; + background-color: #004363; } .header__icon { - width: 24px; - height: 24px; + width: 24px; + height: 24px; } diff --git a/src/client/components/nuclear/view.tsx b/src/client/components/nuclear/view.tsx index 62b70a70..b7beb900 100644 --- a/src/client/components/nuclear/view.tsx +++ b/src/client/components/nuclear/view.tsx @@ -1,5 +1,5 @@ import * as React from 'react' export const NUClear = () => ( -

NUClear

+

NUClear

) diff --git a/src/client/components/scatter_plot/view.tsx b/src/client/components/scatter_plot/view.tsx index d8ac682c..83e3513c 100644 --- a/src/client/components/scatter_plot/view.tsx +++ b/src/client/components/scatter_plot/view.tsx @@ -1,5 +1,5 @@ import * as React from 'react' export const Scatter = () => ( -

Scatter

+

Scatter

) diff --git a/src/client/components/subsumption/view.tsx b/src/client/components/subsumption/view.tsx index 9a39718d..e6532094 100644 --- a/src/client/components/subsumption/view.tsx +++ b/src/client/components/subsumption/view.tsx @@ -1,5 +1,5 @@ import * as React from 'react' export const Subsumption = () => ( -

Subsumption

+

Subsumption

) diff --git a/src/client/components/vision/view.tsx b/src/client/components/vision/view.tsx index 8c72d7c9..04aba79a 100644 --- a/src/client/components/vision/view.tsx +++ b/src/client/components/vision/view.tsx @@ -1,5 +1,5 @@ import * as React from 'react' export const Vision = () => ( -

Vision

+

Vision

) diff --git a/src/client/inversify.config.ts b/src/client/inversify.config.ts new file mode 100644 index 00000000..172090f6 --- /dev/null +++ b/src/client/inversify.config.ts @@ -0,0 +1,18 @@ +import { Container } from 'inversify' +import { LocalisationController } from './components/localisation/controller' +import { LocalisationModel } from './components/localisation/model' +import { LocalisationNetwork } from './components/localisation/network' +import { GlobalNetwork } from './network/global_network' +import { MessageTypePath } from './network/message_type_names' +import { Network } from './network/network' +import { RawSocket } from './network/raw_socket' + +export const container = new Container() + +container.bind(RawSocket).to(RawSocket).inTransientScope() +container.bind(MessageTypePath).to(MessageTypePath).inSingletonScope() +container.bind(GlobalNetwork).to(GlobalNetwork).inSingletonScope() +container.bind(Network).to(Network).inTransientScope() +container.bind(LocalisationNetwork).to(LocalisationNetwork).inTransientScope() +container.bind(LocalisationController).to(LocalisationController).inSingletonScope() +container.bind(LocalisationModel).toConstantValue(LocalisationModel.of()) diff --git a/src/client/network/global_network.ts b/src/client/network/global_network.ts new file mode 100644 index 00000000..53d1aeaf --- /dev/null +++ b/src/client/network/global_network.ts @@ -0,0 +1,71 @@ +import { inject } from 'inversify' +import { injectable } from 'inversify' +import { message } from '../../shared/proto/messages' +import { MessageTypePath } from './message_type_names' +import { RawSocket } from './raw_socket' +import Sensors = message.input.Sensors + +@injectable() +export class GlobalNetwork { + private listeners: Map, Set>> + private packetListeners: Map, buffer: ArrayBuffer) => void> + + public constructor(@inject(RawSocket) private socket: RawSocket, + @inject(MessageTypePath) private messageTypePath: MessageTypePath) { + this.listeners = new Map() + this.packetListeners = new Map() + } + + public on(messageType: MessageType, cb: MessageCallback) { + if (!this.listeners.has(messageType)) { + this.listeners.set(messageType, new Set()) + } + const listeners = this.listeners.get(messageType) + if (listeners) { + const messageTypeName = this.messageTypePath.getPath(messageType) + listeners.add(cb) + if (listeners.size === 1) { + this.socket.listen(messageTypeName) + const listener = this.onPacket.bind(this, messageType) + this.socket.on(messageTypeName, listener) + this.packetListeners.set(messageTypeName, listener) + } + } + } + + public off(messageType: MessageType, cb: MessageCallback) { + const listeners = this.listeners.get(messageType) + if (listeners) { + const messageTypeName = this.messageTypePath.getPath(messageType) + listeners.delete(cb) + const packetListener = this.packetListeners.get(messageTypeName) + if (packetListener) { + this.socket.off(messageTypeName, packetListener) + if (listeners.size === 0) { + this.socket.unlisten(messageTypeName) + this.packetListeners.delete(messageTypeName) + } + } + } + } + + private onPacket(messageType: MessageType, buffer: ArrayBuffer) { + const message = messageType.decode(new Uint8Array(buffer).slice(9)) + const listeners = this.listeners.get(messageType) + if (listeners) { + for (const listener of listeners.values()) { + listener(message) + } + } + } +} + +export interface Message { +} + +export interface MessageType { + new(...args: any[]): T + decode(...args: any[]): T +} + +export type MessageCallback = (message: T) => void diff --git a/src/client/network/message_type_names.ts b/src/client/network/message_type_names.ts new file mode 100644 index 00000000..0a1490a4 --- /dev/null +++ b/src/client/network/message_type_names.ts @@ -0,0 +1,50 @@ +import { injectable } from 'inversify' +import { message } from '../../shared/proto/messages' +import { MessageType } from './global_network' +import { Message } from './global_network' + +@injectable() +export class MessageTypePath { + private cache: Map + private searchObject: any + + public constructor() { + this.searchObject = { message } + this.cache = new Map() + } + + public getPath(messageType: MessageType): string { + if (!this.cache.has(messageType)) { + const path = findPath(this.searchObject, value => value === messageType) + if (!path) { + throw new Error(`Unknown type given ${messageType}`) + } + this.cache.set(messageType, path) + } + return String(this.cache.get(messageType)) + } +} + +/** + * Recursively searches an object for a given value, if found it will return the object path to that value. + * + * e.g. findPath({ a: { b: { c: 'd' } } }, v => v === 'd') // 'a.b.c' + */ +function findPath(obj: any, isSubject: (value: any) => boolean, path: string[] = []): string|undefined { + if (isSubject(obj)) { + return path.join('.') + } + if (typeof obj !== 'object') { + return undefined + } + if (Array.isArray(obj)) { + throw new Error('Array support not implemented') + } + for (const key of Object.getOwnPropertyNames(obj)) { + const foundPath = findPath(obj[key], isSubject, [...path, key]) + if (foundPath) { + return foundPath + } + } + return undefined +} diff --git a/src/client/network/network.ts b/src/client/network/network.ts new file mode 100644 index 00000000..b0b6f838 --- /dev/null +++ b/src/client/network/network.ts @@ -0,0 +1,36 @@ +import { inject } from 'inversify' +import { injectable } from 'inversify' +import { GlobalNetwork } from './global_network' +import { MessageType } from './global_network' +import { Message } from './global_network' +import { MessageCallback } from './global_network' + +@injectable() +export class Network { + private listeners: Map, Set>> + + public constructor(@inject(GlobalNetwork) private globalNetwork: GlobalNetwork) { + this.listeners = new Map() + } + + public on(messageType: MessageType, cb: MessageCallback) { + this.globalNetwork.on(messageType, cb) + + if (!this.listeners.has(messageType)) { + this.listeners.set(messageType, new Set()) + } + const listeners = this.listeners.get(messageType) + if (listeners) { + listeners.add(cb) + } + } + + public off() { + for (const [messageType, callbacks] of this.listeners.entries()) { + for (const cb of callbacks) { + this.globalNetwork.off(messageType, cb) + } + } + this.listeners.clear() + } +} diff --git a/src/client/network/raw_socket.ts b/src/client/network/raw_socket.ts new file mode 100644 index 00000000..d1d9efea --- /dev/null +++ b/src/client/network/raw_socket.ts @@ -0,0 +1,41 @@ +import * as io from 'socket.io-client' +import Socket = SocketIOClient.Socket +import { injectable } from 'inversify' + +@injectable() +export class RawSocket { + private socket: Socket + + public static of() { + return new RawSocket() + } + + public on(event: string, fn: (...args: any[]) => void) { + this.connectIfNotConnected() + this.socket.on(event, fn) + } + + public off(event: string, fn?: (...args: any[]) => void) { + this.connectIfNotConnected() + this.socket.off(event, fn) + } + + public listen(eventName: string) { + this.emit('listen', eventName) + } + + public unlisten(eventName: string) { + this.emit('unlisten', eventName) + } + + public emit(event: string, ...args: any[]) { + this.connectIfNotConnected() + this.socket.emit(event, ...args) + } + + private connectIfNotConnected() { + if (!this.socket) { + this.socket = io.connect() + } + } +} diff --git a/src/client/network/tests/global_network.tests.ts b/src/client/network/tests/global_network.tests.ts new file mode 100644 index 00000000..50732c33 --- /dev/null +++ b/src/client/network/tests/global_network.tests.ts @@ -0,0 +1,56 @@ +import 'reflect-metadata' +import { createMockInstance } from '../../../shared/common/testing/create_mock_instance' +import { message } from '../../../shared/proto/messages' +import { GlobalNetwork } from '../global_network' +import { RawSocket } from '../raw_socket' +import Socket = SocketIOClient.Socket +import Sensors = message.input.Sensors +import { MessageTypePath } from '../message_type_names' +import Mocked = jest.Mocked + +describe('GlobalNetwork', () => { + let network: GlobalNetwork + let mockedRawSocket: Mocked + let mockedMessageTypePath: Mocked + + beforeEach(() => { + mockedRawSocket = createMockInstance(RawSocket) + mockedMessageTypePath = createMockInstance(MessageTypePath) + mockedMessageTypePath.getPath.mockReturnValue('message.input.Sensors') + network = new GlobalNetwork(mockedRawSocket, mockedMessageTypePath) + }) + + describe('event handling', () => { + it('starts listening event', () => { + network.on(Sensors, jest.fn()) + expect(mockedRawSocket.listen).toHaveBeenCalledWith('message.input.Sensors') + }) + + it('stops listening to event', () => { + const cb = jest.fn() + network.on(Sensors, cb) + + network.off(Sensors, cb) + expect(mockedRawSocket.unlisten).toHaveBeenCalledWith('message.input.Sensors') + }) + + it('only sends listening event once', () => { + network.on(Sensors, jest.fn()) + network.on(Sensors, jest.fn()) + expect(mockedRawSocket.listen).toHaveBeenCalledTimes(1) + }) + + it('stops listening to type after all listeners have unsubscribed', () => { + const cb1 = jest.fn() + const cb2 = jest.fn() + network.on(Sensors, cb1) + network.on(Sensors, cb2) + + network.off(Sensors, cb1) + expect(mockedRawSocket.unlisten).not.toHaveBeenCalled() + + network.off(Sensors, cb2) + expect(mockedRawSocket.unlisten).toHaveBeenLastCalledWith('message.input.Sensors') + }) + }) +}) diff --git a/src/client/network/tests/network.tests.ts b/src/client/network/tests/network.tests.ts new file mode 100644 index 00000000..0eae98d2 --- /dev/null +++ b/src/client/network/tests/network.tests.ts @@ -0,0 +1,29 @@ +import 'reflect-metadata' +import { message } from '../../../shared/proto/messages' +import { Network } from '../network' +import Sensors = message.input.Sensors +import { createMockInstance } from '../../../shared/common/testing/create_mock_instance' +import { GlobalNetwork } from '../global_network' + +describe('Network', () => { + let network: GlobalNetwork + let helper: Network + + beforeEach(() => { + network = createMockInstance(GlobalNetwork) + helper = new Network(network) + }) + + it('off() automatically unregisters all callbacks', () => { + const cb1 = jest.fn() + const cb2 = jest.fn() + helper.on(Sensors, cb1) + expect(network.on).toHaveBeenCalledWith(Sensors, cb1) + helper.on(Sensors, cb2) + expect(network.on).toHaveBeenCalledWith(Sensors, cb2) + + helper.off() + expect(network.off).toHaveBeenCalledWith(Sensors, cb1) + expect(network.off).toHaveBeenCalledWith(Sensors, cb2) + }) +}) diff --git a/src/server/app/client.ts b/src/server/app/client.ts new file mode 100644 index 00000000..0d564c1c --- /dev/null +++ b/src/server/app/client.ts @@ -0,0 +1,73 @@ +import Socket = SocketIO.Socket +import { NUClearNetPacket } from 'nuclearnet.js' +import { NUClearNet } from 'nuclearnet.js' + +interface ClientOpts { + nuclearNetwork: NUClearNet + sioSocket: Socket + onDisconnectCallback?: (client: Client) => void +} + +export class Client { + private nuclearNetwork: NUClearNet + private sioSocket: Socket + private listeners: Map void> + private onDisconnectCallback?: (client: Client) => void + + public constructor(opts: ClientOpts) { + Object.assign(this, opts) + this.listeners = new Map() + + this.sioSocket.on('disconnect', this.onDisconnect) + this.sioSocket.on('listen', this.onListen) + this.sioSocket.on('unlisten', this.onUnlisten) + } + + public static of(opts: ClientOpts) { + return new Client(opts) + } + + public send(event: string, ...args: any[]) { + this.sioSocket.emit(event, ...args) + } + + private onDisconnect = () => { + this.unlistenAll() + if (this.onDisconnectCallback) { + this.onDisconnectCallback(this) + } + } + + private onListen = (event: string) => { + const messageType = `NUsight<${event}>` + // tslint:disable-next-line no-console + console.log(`Listening for ${messageType}`) + const cb = this.onPacket.bind(this, event) + this.nuclearNetwork.on(messageType, cb) + this.listeners.set(messageType, cb) + } + + private unlistenAll() { + for (const [messageType, cb] of this.listeners.entries()) { + // tslint:disable-next-line no-console + console.log(`Unlistening for ${messageType}`) + this.nuclearNetwork.removeListener(messageType, cb) + } + this.listeners.clear() + } + + private onUnlisten = (event: string) => { + const messageType = `NUsight<${event}>` + const cb = this.listeners.get(messageType) + if (cb) { + // tslint:disable-next-line no-console + console.log(`Unlistening for ${messageType}`) + this.nuclearNetwork.removeListener(messageType, cb) + this.listeners.delete(messageType) + } + } + + private onPacket = (event: string, packet: NUClearNetPacket) => { + this.sioSocket.emit(event, packet.payload) + } +} diff --git a/src/server/app/robot.ts b/src/server/app/robot.ts new file mode 100644 index 00000000..36ea556e --- /dev/null +++ b/src/server/app/robot.ts @@ -0,0 +1,15 @@ +interface RobotOpts { + name: string +} + +export class Robot { + public name: string + + public constructor(opts: RobotOpts) { + this.name = opts.name + } + + public static of(opts: RobotOpts) { + return new Robot(opts) + } +} diff --git a/src/server/app/server.ts b/src/server/app/server.ts new file mode 100644 index 00000000..0a3e5711 --- /dev/null +++ b/src/server/app/server.ts @@ -0,0 +1,60 @@ +import Server = SocketIO.Server +import { inject } from 'inversify' +import { NUClearNet } from 'nuclearnet.js' +import { NUClearNetPeer } from 'nuclearnet.js' +import { Client } from './client' +import { Robot } from './robot' +import Socket = SocketIO.Socket + +export class NUSightServer { + private clients: Client[] + private robots: Robot[] + + public constructor(@inject(NUClearNet) private nuclearNetwork: NUClearNet, + private sioNetwork: Server) { + this.clients = [] + this.robots = [] + + this.nuclearNetwork.on('nuclear_join', this.onNUClearJoin) + this.nuclearNetwork.on('nuclear_leave', this.onNUClearLeave) + this.sioNetwork.on('connection', this.onClientConnection) + } + + public connect() { + this.nuclearNetwork.connect({ name: 'nusight' }) + } + + private onNUClearJoin = (peer: NUClearNetPeer) => { + // tslint:disable-next-line no-console + console.log(`Peer "${peer.name}" from ${peer.address} joined the NUClear network.`) + const robot = Robot.of({ + name: peer.name, + }) + this.robots.push(robot) + } + + private onNUClearLeave = (peer: NUClearNetPeer) => { + // tslint:disable-next-line no-console + console.log(`Peer "${peer.name}" from ${peer.address} left the NUClear network.`) + const index = this.robots.findIndex(robot => robot.name === peer.name) + if (index >= 0) { + this.robots.splice(index, 1) + } + } + + private onClientConnection = (sioSocket: Socket) => { + const address = sioSocket.client.conn.remoteAddress + // tslint:disable-next-line no-console + console.log(`Client "${sioSocket.id}" from ${address} connected (Total: ${this.clients.length + 1})`) + const client = Client.of({ + nuclearNetwork: this.nuclearNetwork, + sioSocket, + onDisconnectCallback: () => { + this.clients.splice(this.clients.indexOf(client), 1) + // tslint:disable-next-line no-console + console.log(`Client "${sioSocket.id}" from ${address} disconnected (Total: ${this.clients.length})`) + }, + }) + this.clients.push(client) + } +} diff --git a/src/server/dev.ts b/src/server/dev.ts index 4ea760ba..00b0ed82 100644 --- a/src/server/dev.ts +++ b/src/server/dev.ts @@ -2,17 +2,32 @@ import * as compression from 'compression' import * as history from 'connect-history-api-fallback' import * as express from 'express' import * as http from 'http' +import * as minimist from 'minimist' +import { NUClearNet } from 'nuclearnet.js' +import 'reflect-metadata' import * as favicon from 'serve-favicon' import * as sio from 'socket.io' import * as webpack from 'webpack' import * as webpackDevMiddleware from 'webpack-dev-middleware' import * as webpackHotMiddleware from 'webpack-hot-middleware' import webpackConfig from '../../webpack.config' +import { RobotSimulator } from '../simulators/robot_simulator' +import { SimulatorStatus } from '../simulators/robot_simulator' +import { SensorDataSimulator } from '../simulators/sensor_data_simulator' +import { NUSightServer } from './app/server' +import { getContainer } from './inversify.config' +import { Clock } from './time/clock' +import { ClockType } from './time/clock' +import CloseTo = Chai.CloseTo + const compiler = webpack(webpackConfig) +const args = minimist(process.argv.slice(2)) +const withSimulators = args['with-simulators'] || false + const app = express() const server = http.createServer(app) -sio(server) +const sioNetwork = sio(server) const devMiddleware = webpackDevMiddleware(compiler, { publicPath: '/', @@ -37,3 +52,22 @@ server.listen(port, () => { /* tslint:disable no-console */ console.log(`NUsight server started at http://localhost:${port}`) }) + +const container = getContainer({ fakeNetworking: withSimulators }) + +if (withSimulators) { + const robotSimulator = new RobotSimulator( + container.get(NUClearNet), + container.get(ClockType), + { + name: 'Sensors Simulator', + simulators: [ + SensorDataSimulator.of(), + ], + }, + ) + robotSimulator.simulateWithFrequency(60) + new SimulatorStatus(container.get(ClockType), robotSimulator).statusEvery(60) +} + +new NUSightServer(container.get(NUClearNet), sioNetwork).connect() diff --git a/src/server/inversify.config.ts b/src/server/inversify.config.ts new file mode 100644 index 00000000..72e34dd7 --- /dev/null +++ b/src/server/inversify.config.ts @@ -0,0 +1,27 @@ +import { EventEmitter } from 'events' +import { Container } from 'inversify' +import { decorate } from 'inversify' +import { injectable } from 'inversify' +import { NUClearNet } from 'nuclearnet.js' +import { FakeNUClearNet } from '../simulators/nuclearnet/fake_nuclearnet' +import { FakeNUClearNetServer } from '../simulators/nuclearnet/fake_nuclearnet_server' +import { Clock } from './time/clock' +import { ClockType } from './time/clock' +import { NodeSystemClock } from './time/node_clock' + +export const getContainer = ({ fakeNetworking = false }: { fakeNetworking: boolean }) => { + const container = new Container() + + decorate(injectable(), EventEmitter) + if (fakeNetworking) { + container.bind(FakeNUClearNetServer).to(FakeNUClearNetServer).inSingletonScope() + container.bind(NUClearNet).to(FakeNUClearNet).inTransientScope() + } else { + decorate(injectable(), NUClearNet) + container.bind(NUClearNet).to(NUClearNet).inTransientScope() + } + + container.bind(ClockType).toConstantValue(NodeSystemClock) + + return container +} diff --git a/src/server/prod.ts b/src/server/prod.ts index 6f772e76..7c19d698 100644 --- a/src/server/prod.ts +++ b/src/server/prod.ts @@ -2,12 +2,24 @@ import * as compression from 'compression' import * as history from 'connect-history-api-fallback' import * as express from 'express' import * as http from 'http' +import * as minimist from 'minimist' +import { NUClearNet } from 'nuclearnet.js' +import 'reflect-metadata' import * as favicon from 'serve-favicon' import * as sio from 'socket.io' +import { RobotSimulator } from '../simulators/robot_simulator' +import { SensorDataSimulator } from '../simulators/sensor_data_simulator' +import { NUSightServer } from './app/server' +import { getContainer } from './inversify.config' +import { ClockType } from './time/clock' +import { Clock } from './time/clock' + +const args = minimist(process.argv.slice(2)) +const withSimulators = args['with-simulators'] || false const app = express() const server = http.createServer(app) -sio(server) +const sioNetwork = sio(server) const root = `${__dirname}/../../build` app.use(history()) @@ -20,3 +32,21 @@ server.listen(port, () => { /* tslint:disable no-console */ console.log(`NUsight server started at http://localhost:${port}`) }) + +const container = getContainer({ fakeNetworking: withSimulators }) + +if (withSimulators) { + const robotSimulator = new RobotSimulator( + container.get(NUClearNet), + container.get(ClockType), + { + name: 'Sensors Simulator', + simulators: [ + SensorDataSimulator.of(), + ], + }, + ) + robotSimulator.simulateWithFrequency(60) +} + +new NUSightServer(container.get(NUClearNet), sioNetwork).connect() diff --git a/src/server/time/clock.ts b/src/server/time/clock.ts new file mode 100644 index 00000000..f410eed5 --- /dev/null +++ b/src/server/time/clock.ts @@ -0,0 +1,8 @@ +export const ClockType = Symbol('Clock') + +export interface Clock { + now(): number + setTimeout(cb: (...args: any[]) => void, ms: number): () => void + setInterval(cb: (...args: any[]) => void, ms: number): () => void + setImmediate(cb: (...args: any[]) => void): () => void +} diff --git a/src/server/time/node_clock.ts b/src/server/time/node_clock.ts new file mode 100644 index 00000000..64238432 --- /dev/null +++ b/src/server/time/node_clock.ts @@ -0,0 +1,25 @@ +import { Clock } from './clock' + +export type CancelTimer = () => void + +function setTimeout(cb: (...args: any[]) => void, ms: number): CancelTimer { + const handle = global.setTimeout(cb, ms) + return global.clearTimeout.bind(null, handle) +} + +function setInterval(cb: (...args: any[]) => void, ms: number): CancelTimer { + const handle = global.setInterval(cb, ms) + return global.clearInterval.bind(null, handle) +} + +function setImmediate(cb: (...args: any[]) => void): CancelTimer { + const handle = global.setImmediate(cb) + return global.clearImmediate.bind(null, handle) +} + +export const NodeSystemClock: Clock = { + now: () => Date.now(), + setTimeout, + setInterval, + setImmediate, +} diff --git a/src/shared/common/testing/create_mock_instance.ts b/src/shared/common/testing/create_mock_instance.ts new file mode 100644 index 00000000..80b5d9ec --- /dev/null +++ b/src/shared/common/testing/create_mock_instance.ts @@ -0,0 +1,25 @@ +import Mocked = jest.Mocked + +export function createMockInstance(ctor: { new (...args: any[]): T }): Mocked { + return stubMethods(Object.create(ctor.prototype)) +} + +function stubMethods(obj: Mocked, mock: Mocked = obj, stubbed: Set = new Set()): Mocked { + for (const prop of Object.getOwnPropertyNames(obj)) { + if (!stubbed.has(prop)) { + const descriptor = Object.getOwnPropertyDescriptor(obj, prop) + if (obj !== Object.prototype && prop !== 'constructor' && typeof descriptor.value === 'function') { + Object.defineProperty(mock, prop, { ... descriptor, value: jest.fn() }) + } + stubbed.add(prop) + } + } + + const proto = Object.getPrototypeOf(obj) + + if (proto) { + return stubMethods(proto, mock, stubbed) + } + + return mock +} diff --git a/src/shared/proto/Matrix.proto b/src/shared/proto/Matrix.proto new file mode 100644 index 00000000..a5fc054e --- /dev/null +++ b/src/shared/proto/Matrix.proto @@ -0,0 +1,105 @@ +syntax = "proto3"; + +import "Vector.proto"; + +message mat { + uint32 rows = 1; + uint32 cols = 2; + repeated double v = 3 [packed=true]; +} + +message fmat { + uint32 rows = 1; + uint32 cols = 2; + repeated float v = 3 [packed=true]; +} + +message imat { + uint32 rows = 1; + uint32 cols = 2; + repeated sint32 v = 3 [packed=true]; +} + +message umat { + uint32 rows = 1; + uint32 cols = 2; + repeated uint32 v = 3 [packed=true]; +} + +message cmat { + uint32 rows = 1; + uint32 cols = 2; + bytes v = 3; +} + +message mat22 { + vec2 x = 1; + vec2 y = 2; +} + +message fmat22 { + fvec2 x = 1; + fvec2 y = 2; +} + +message imat22 { + ivec2 x = 1; + ivec2 y = 2; +} + +message umat22 { + uvec2 x = 1; + uvec2 y = 2; +} + +message mat33 { + vec3 x = 1; + vec3 y = 2; + vec3 z = 3; +} + +message fmat33 { + fvec3 x = 1; + fvec3 y = 2; + fvec3 z = 3; +} + +message imat33 { + ivec3 x = 1; + ivec3 y = 2; + ivec3 z = 3; +} + +message umat33 { + uvec3 x = 1; + uvec3 y = 2; + uvec3 z = 3; +} + +message mat44 { + vec4 x = 1; + vec4 y = 2; + vec4 z = 3; + vec4 t = 4; +} + +message fmat44 { + fvec4 x = 1; + fvec4 y = 2; + fvec4 z = 3; + fvec4 t = 4; +} + +message imat44 { + ivec4 x = 1; + ivec4 y = 2; + ivec4 z = 3; + ivec4 t = 4; +} + +message umat44 { + uvec4 x = 1; + uvec4 y = 2; + uvec4 z = 3; + uvec4 t = 4; +} diff --git a/src/shared/proto/Neutron.proto b/src/shared/proto/Neutron.proto new file mode 100644 index 00000000..2d13b2a1 --- /dev/null +++ b/src/shared/proto/Neutron.proto @@ -0,0 +1,15 @@ +syntax = "proto3"; + +import "google/protobuf/descriptor.proto"; + +enum PointerType { + NONE = 0; + RAW = 1; + SHARED = 2; + UNIQUE = 3; +} + +extend google.protobuf.FieldOptions { + PointerType pointer = 50000; + uint32 array_size = 50001; +} diff --git a/src/shared/proto/Vector.proto b/src/shared/proto/Vector.proto new file mode 100644 index 00000000..df4d6c22 --- /dev/null +++ b/src/shared/proto/Vector.proto @@ -0,0 +1,93 @@ +syntax = "proto3"; + +message vec { + repeated double v = 1 [packed=true]; +} + +message fvec { + repeated float v = 1 [packed=true]; +} + +message ivec { + repeated sint32 v = 1 [packed=true]; +} + +message uvec { + repeated uint32 v = 1 [packed=true]; +} + +message cvec { + bytes v = 1; +} + +message vec2 { + double x = 1; + double y = 2; +} + +message fvec2 { + float x = 1; + float y = 2; +} + +message ivec2 { + sint32 x = 1; + sint32 y = 2; +} + +message uvec2 { + uint32 x = 1; + uint32 y = 2; +} + +message vec3 { + double x = 1; + double y = 2; + double z = 3; +} + +message fvec3 { + float x = 1; + float y = 2; + float z = 3; +} + +message ivec3 { + sint32 x = 1; + sint32 y = 2; + sint32 z = 3; +} + +message uvec3 { + uint32 x = 1; + uint32 y = 2; + uint32 z = 3; +} + +message vec4 { + double x = 1; + double y = 2; + double z = 3; + double t = 4; +} + +message fvec4 { + float x = 1; + float y = 2; + float z = 3; + float t = 4; +} + +message ivec4 { + sint32 x = 1; + sint32 y = 2; + sint32 z = 3; + sint32 t = 4; +} + +message uvec4 { + uint32 x = 1; + uint32 y = 2; + uint32 z = 3; + uint32 t = 4; +} diff --git a/src/shared/proto/google/protobuf/duration.proto b/src/shared/proto/google/protobuf/duration.proto new file mode 100644 index 00000000..975fce41 --- /dev/null +++ b/src/shared/proto/google/protobuf/duration.proto @@ -0,0 +1,117 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// https://developers.google.com/protocol-buffers/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +syntax = "proto3"; + +package google.protobuf; + +option csharp_namespace = "Google.Protobuf.WellKnownTypes"; +option cc_enable_arenas = true; +option go_package = "github.com/golang/protobuf/ptypes/duration"; +option java_package = "com.google.protobuf"; +option java_outer_classname = "DurationProto"; +option java_multiple_files = true; +option objc_class_prefix = "GPB"; + +// A Duration represents a signed, fixed-length span of time represented +// as a count of seconds and fractions of seconds at nanosecond +// resolution. It is independent of any calendar and concepts like "day" +// or "month". It is related to Timestamp in that the difference between +// two Timestamp values is a Duration and it can be added or subtracted +// from a Timestamp. Range is approximately +-10,000 years. +// +// # Examples +// +// Example 1: Compute Duration from two Timestamps in pseudo code. +// +// Timestamp start = ...; +// Timestamp end = ...; +// Duration duration = ...; +// +// duration.seconds = end.seconds - start.seconds; +// duration.nanos = end.nanos - start.nanos; +// +// if (duration.seconds < 0 && duration.nanos > 0) { +// duration.seconds += 1; +// duration.nanos -= 1000000000; +// } else if (durations.seconds > 0 && duration.nanos < 0) { +// duration.seconds -= 1; +// duration.nanos += 1000000000; +// } +// +// Example 2: Compute Timestamp from Timestamp + Duration in pseudo code. +// +// Timestamp start = ...; +// Duration duration = ...; +// Timestamp end = ...; +// +// end.seconds = start.seconds + duration.seconds; +// end.nanos = start.nanos + duration.nanos; +// +// if (end.nanos < 0) { +// end.seconds -= 1; +// end.nanos += 1000000000; +// } else if (end.nanos >= 1000000000) { +// end.seconds += 1; +// end.nanos -= 1000000000; +// } +// +// Example 3: Compute Duration from datetime.timedelta in Python. +// +// td = datetime.timedelta(days=3, minutes=10) +// duration = Duration() +// duration.FromTimedelta(td) +// +// # JSON Mapping +// +// In JSON format, the Duration type is encoded as a string rather than an +// object, where the string ends in the suffix "s" (indicating seconds) and +// is preceded by the number of seconds, with nanoseconds expressed as +// fractional seconds. For example, 3 seconds with 0 nanoseconds should be +// encoded in JSON format as "3s", while 3 seconds and 1 nanosecond should +// be expressed in JSON format as "3.000000001s", and 3 seconds and 1 +// microsecond should be expressed in JSON format as "3.000001s". +// +// +message Duration { + + // Signed seconds of the span of time. Must be from -315,576,000,000 + // to +315,576,000,000 inclusive. Note: these bounds are computed from: + // 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years + int64 seconds = 1; + + // Signed fractions of a second at nanosecond resolution of the span + // of time. Durations less than one second are represented with a 0 + // `seconds` field and a positive or negative `nanos` field. For durations + // of one second or more, a non-zero value for the `nanos` field must be + // of the same sign as the `seconds` field. Must be from -999,999,999 + // to +999,999,999 inclusive. + int32 nanos = 2; +} diff --git a/src/shared/proto/google/protobuf/timestamp.proto b/src/shared/proto/google/protobuf/timestamp.proto new file mode 100644 index 00000000..b7cbd175 --- /dev/null +++ b/src/shared/proto/google/protobuf/timestamp.proto @@ -0,0 +1,133 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// https://developers.google.com/protocol-buffers/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +syntax = "proto3"; + +package google.protobuf; + +option csharp_namespace = "Google.Protobuf.WellKnownTypes"; +option cc_enable_arenas = true; +option go_package = "github.com/golang/protobuf/ptypes/timestamp"; +option java_package = "com.google.protobuf"; +option java_outer_classname = "TimestampProto"; +option java_multiple_files = true; +option objc_class_prefix = "GPB"; + +// A Timestamp represents a point in time independent of any time zone +// or calendar, represented as seconds and fractions of seconds at +// nanosecond resolution in UTC Epoch time. It is encoded using the +// Proleptic Gregorian Calendar which extends the Gregorian calendar +// backwards to year one. It is encoded assuming all minutes are 60 +// seconds long, i.e. leap seconds are "smeared" so that no leap second +// table is needed for interpretation. Range is from +// 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. +// By restricting to that range, we ensure that we can convert to +// and from RFC 3339 date strings. +// See [https://www.ietf.org/rfc/rfc3339.txt](https://www.ietf.org/rfc/rfc3339.txt). +// +// # Examples +// +// Example 1: Compute Timestamp from POSIX `time()`. +// +// Timestamp timestamp; +// timestamp.set_seconds(time(NULL)); +// timestamp.set_nanos(0); +// +// Example 2: Compute Timestamp from POSIX `gettimeofday()`. +// +// struct timeval tv; +// gettimeofday(&tv, NULL); +// +// Timestamp timestamp; +// timestamp.set_seconds(tv.tv_sec); +// timestamp.set_nanos(tv.tv_usec * 1000); +// +// Example 3: Compute Timestamp from Win32 `GetSystemTimeAsFileTime()`. +// +// FILETIME ft; +// GetSystemTimeAsFileTime(&ft); +// UINT64 ticks = (((UINT64)ft.dwHighDateTime) << 32) | ft.dwLowDateTime; +// +// // A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z +// // is 11644473600 seconds before Unix epoch 1970-01-01T00:00:00Z. +// Timestamp timestamp; +// timestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL)); +// timestamp.set_nanos((INT32) ((ticks % 10000000) * 100)); +// +// Example 4: Compute Timestamp from Java `System.currentTimeMillis()`. +// +// long millis = System.currentTimeMillis(); +// +// Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000) +// .setNanos((int) ((millis % 1000) * 1000000)).build(); +// +// +// Example 5: Compute Timestamp from current time in Python. +// +// timestamp = Timestamp() +// timestamp.GetCurrentTime() +// +// # JSON Mapping +// +// In JSON format, the Timestamp type is encoded as a string in the +// [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) format. That is, the +// format is "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z" +// where {year} is always expressed using four digits while {month}, {day}, +// {hour}, {min}, and {sec} are zero-padded to two digits each. The fractional +// seconds, which can go up to 9 digits (i.e. up to 1 nanosecond resolution), +// are optional. The "Z" suffix indicates the timezone ("UTC"); the timezone +// is required, though only UTC (as indicated by "Z") is presently supported. +// +// For example, "2017-01-15T01:30:15.01Z" encodes 15.01 seconds past +// 01:30 UTC on January 15, 2017. +// +// In JavaScript, one can convert a Date object to this format using the +// standard [toISOString()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString] +// method. In Python, a standard `datetime.datetime` object can be converted +// to this format using [`strftime`](https://docs.python.org/2/library/time.html#time.strftime) +// with the time format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one +// can use the Joda Time's [`ISODateTimeFormat.dateTime()`]( +// http://joda-time.sourceforge.net/apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime()) +// to obtain a formatter capable of generating timestamps in this format. +// +// +message Timestamp { + + // Represents seconds of UTC time since Unix epoch + // 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to + // 9999-12-31T23:59:59Z inclusive. + int64 seconds = 1; + + // Non-negative fractions of a second at nanosecond resolution. Negative + // second values with fractions must still have non-negative nanos values + // that count forward in time. Must be from 0 to 999,999,999 + // inclusive. + int32 nanos = 2; +} diff --git a/src/shared/proto/message/Geometry.proto b/src/shared/proto/message/Geometry.proto new file mode 100644 index 00000000..9aa8741a --- /dev/null +++ b/src/shared/proto/message/Geometry.proto @@ -0,0 +1,51 @@ +/* + * This file is part of the NUbots Codebase. + * + * The NUbots Codebase is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * The NUbots Codebase is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the NUbots Codebase. If not, see . + * + * Copyright 2013 NUBots + */ + +syntax = "proto3"; + +package message; + +import "Vector.proto"; +import "Matrix.proto"; + +message Line { + vec2 normal = 1; + double distance = 2; +} + +message Circle { + double radius = 1; + vec2 centre = 2; +} + +message Ellipse { + // See http://en.wikipedia.org/wiki/Matrix_representation_of_conic_sections + mat33 ellipse = 1; +} + +message Quad { + vec2 tl = 1; + vec2 tr = 2; + vec2 bl = 3; + vec2 br = 4; +} + +message Polygon { + vec2 point = 1; +} \ No newline at end of file diff --git a/src/shared/proto/message/audio/Beat.proto b/src/shared/proto/message/audio/Beat.proto new file mode 100644 index 00000000..a3088995 --- /dev/null +++ b/src/shared/proto/message/audio/Beat.proto @@ -0,0 +1,29 @@ +/* + * This file is part of the NUbots Codebase. + * + * The NUbots Codebase is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * The NUbots Codebase is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the NUbots Codebase. If not, see . + * + * Copyright 2013 NUBots + */ +syntax = "proto3"; + +package message.audio; + +import "google/protobuf/timestamp.proto"; +import "google/protobuf/duration.proto"; + +message Beat { + google.protobuf.Timestamp timestamp = 1; + google.protobuf.Duration period = 2; +} diff --git a/src/shared/proto/message/behaviour/Behaviour.proto b/src/shared/proto/message/behaviour/Behaviour.proto new file mode 100644 index 00000000..a819f2de --- /dev/null +++ b/src/shared/proto/message/behaviour/Behaviour.proto @@ -0,0 +1,45 @@ +/* + * This file is part of the NUbots Codebase. + * + * The NUbots Codebase is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * The NUbots Codebase is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the NUbots Codebase. If not, see . + * + * Copyright 2015 NUBots + */ + +syntax = "proto3"; + +package message.behaviour; + +message Behaviour { + + enum State { + UNKNOWN = 0; + INIT = 1; + SEARCH_FOR_BALL = 2; + SEARCH_FOR_GOALS = 3; + WALK_TO_BALL = 4; + PICKED_UP = 5; + INITIAL = 6; + READY = 7; + SET = 8; + TIMEOUT = 9; + FINISHED = 10; + PENALISED = 11; + GOALIE_WALK = 12; + MOVE_TO_CENTRE = 13; + LOCALISING = 14; + } + + State state = 1; +} diff --git a/src/shared/proto/message/behaviour/FieldTarget.proto b/src/shared/proto/message/behaviour/FieldTarget.proto new file mode 100644 index 00000000..69ae5cac --- /dev/null +++ b/src/shared/proto/message/behaviour/FieldTarget.proto @@ -0,0 +1,33 @@ + +/* + * This file is part of the NUbots Codebase. + * + * The NUbots Codebase is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * The NUbots Codebase is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the NUbots Codebase. If not, see . + * + * Copyright 2013 NUBots + */ +syntax = "proto3"; + +package message.behaviour; + +message FieldTarget { + enum Target { + SELF = 0; + BALL = 1; + GOAL = 2; + } + + Target target = 1; +} + diff --git a/src/shared/proto/message/behaviour/FixedWalkCommand.proto b/src/shared/proto/message/behaviour/FixedWalkCommand.proto new file mode 100644 index 00000000..532a7271 --- /dev/null +++ b/src/shared/proto/message/behaviour/FixedWalkCommand.proto @@ -0,0 +1,44 @@ +/* + * This file is part of the NUbots Codebase. + * + * The NUbots Codebase is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * The NUbots Codebase is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the NUbots Codebase. If not, see . + * + * Copyright 2013 NUBots + */ +syntax = "proto3"; + +package message.behaviour; + +import "google/protobuf/duration.proto"; +import "Vector.proto"; + +message FixedWalkFinished { } +message WalkConfigSaved { } +message CancelFixedWalk { } + +message WalkOptimiserCommand { + string walkConfig = 1; +} + +message FixedWalkCommand { + message WalkSegment { + vec2 direction = 1; + double curvePeriod = 2; + double normalisedVelocity = 3; + double normalisedAngularVelocity = 4; + google.protobuf.Duration duration = 5; + }; + + repeated WalkSegment segments = 1; +} diff --git a/src/shared/proto/message/behaviour/KickPlan.proto b/src/shared/proto/message/behaviour/KickPlan.proto new file mode 100644 index 00000000..a76e2f92 --- /dev/null +++ b/src/shared/proto/message/behaviour/KickPlan.proto @@ -0,0 +1,37 @@ +/* + * This file is part of the NUbots Codebase. + * + * The NUbots Codebase is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * The NUbots Codebase is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the NUbots Codebase. If not, see . + * + * Copyright 2013 NUBots + */ +syntax = "proto3"; + +package message.behaviour; + +import "Vector.proto"; + +message KickPlan { + enum KickType { + SCRIPTED = 0; + IK_KICK = 1; + } + + vec2 target = 1; + KickType kickType = 2; +} + +message WantsToKick { + bool kick = 1; +} diff --git a/src/shared/proto/message/behaviour/Look.proto b/src/shared/proto/message/behaviour/Look.proto new file mode 100644 index 00000000..089c3971 --- /dev/null +++ b/src/shared/proto/message/behaviour/Look.proto @@ -0,0 +1,46 @@ +/* + * This file is part of the NUbots Codebase. + * + * The NUbots Codebase is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * The NUbots Codebase is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the NUbots Codebase. If not, see . + * + * Copyright 2013 NUBots + */ +syntax = "proto3"; + +package message.behaviour; + +import "google/protobuf/duration.proto"; +import "Vector.proto"; + +message Look { + message Fixation { + vec2 angle = 1; + vec2 arcSize = 2; + } + + message Saccade { + google.protobuf.Duration dwellTime = 1; + vec2 angle = 2; + vec2 arcSize = 3; + } + + message Pan { + vec2 angle = 1; + vec2 arcSize = 2; + } + + message PanSelection { + bool lookAtGoalInsteadOfBall = 1; + } +} diff --git a/src/shared/proto/message/behaviour/MotionCommand.proto b/src/shared/proto/message/behaviour/MotionCommand.proto new file mode 100644 index 00000000..b9870868 --- /dev/null +++ b/src/shared/proto/message/behaviour/MotionCommand.proto @@ -0,0 +1,45 @@ +/* + * This file is part of the NUbots Codebase. + * + * The NUbots Codebase is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * The NUbots Codebase is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the NUbots Codebase. If not, see . + * + * Copyright 2013 NUBots + */ +syntax = "proto3"; + +package message.behaviour; + +import "Vector.proto"; + +message MotionCommand { + // Defines the possible types of motion command: + enum Type { + StandStill = 0; // Stop moving and just stand still, (equivalent to a VelocityCommand of {0} m/s). + WalkToState = 1; // Walk to a given position and heading on the field, avoiding obstacles. + BallApproach = 2; // Approach the ball, ready to perform a forward kick toward the given kickTarget. Avoids obstacles. + DirectCommand = 3; // Stop all current motion and directly send the given WalkCommand to the WalkEngine. + } + + // The type of this motion command: + Type type = 1; + + // Required data for WalkToState command: + vec3 goalState = 2; + + // Required data for WalkToBall command: + vec2 kickTarget = 3; + + // Required data for DirectCommand command: + vec3 walkCommand = 4; +} diff --git a/src/shared/proto/message/behaviour/Nod.proto b/src/shared/proto/message/behaviour/Nod.proto new file mode 100644 index 00000000..897ccff3 --- /dev/null +++ b/src/shared/proto/message/behaviour/Nod.proto @@ -0,0 +1,25 @@ +/* + * This file is part of the NUbots Codebase. + * + * The NUbots Codebase is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * The NUbots Codebase is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the NUbots Codebase. If not, see . + * + * Copyright 2016 NUbots + */ +syntax = "proto3"; + +package message.behaviour; + +message Nod { + bool value = 1; +} diff --git a/src/shared/proto/message/behaviour/ServoCommand.proto b/src/shared/proto/message/behaviour/ServoCommand.proto new file mode 100644 index 00000000..ca5ee8bd --- /dev/null +++ b/src/shared/proto/message/behaviour/ServoCommand.proto @@ -0,0 +1,32 @@ +/* + * This file is part of the NUbots Codebase. + * + * The NUbots Codebase is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * The NUbots Codebase is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the NUbots Codebase. If not, see . + * + * Copyright 2013 NUBots + */ +syntax = "proto3"; + +package message.behaviour; + +import "google/protobuf/timestamp.proto"; + +message ServoCommand { + uint64 source = 1; + google.protobuf.Timestamp time = 2; + uint32 id = 3; + float position = 4; + float gain = 5; + float torque = 6; +} diff --git a/src/shared/proto/message/behaviour/SoccerObjectPriority.proto b/src/shared/proto/message/behaviour/SoccerObjectPriority.proto new file mode 100644 index 00000000..b6a6cb70 --- /dev/null +++ b/src/shared/proto/message/behaviour/SoccerObjectPriority.proto @@ -0,0 +1,39 @@ +/* + * This file is part of the NUbots Codebase. + * + * The NUbots Codebase is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * The NUbots Codebase is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the NUbots Codebase. If not, see . + * + * Copyright 2013 NUBots + */ +syntax = "proto3"; + +package message.behaviour; + +message SoccerObjectPriority { + enum SearchType { + LOST = 0; + FIND_ADDITIONAL_OBJECTS = 1; + GOAL_SEARCH = 2; + GOAL_LEFT = 3; + GOAL_RIGHT = 4; + GROUND_LEFT = 5; + GROUND_RIGHT = 6; + OTHE = 7; + } + + int32 ball = 1; + int32 goal = 2; + int32 line = 3; + SearchType searchType = 4; +} diff --git a/src/shared/proto/message/behaviour/Subsumption.proto b/src/shared/proto/message/behaviour/Subsumption.proto new file mode 100644 index 00000000..ece4108e --- /dev/null +++ b/src/shared/proto/message/behaviour/Subsumption.proto @@ -0,0 +1,57 @@ +/* + * This file is part of the NUbots Codebase. + * + * The NUbots Codebase is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * The NUbots Codebase is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the NUbots Codebase. If not, see . + * + * Copyright 2013 NUBots + */ + +syntax = "proto3"; + +package message.behaviour; + +message Subsumption { + + message LimbSet { + float priority = 1; + repeated uint32 limbs = 2; + } + + message ActionRegister { + uint32 id = 1; + string name = 2; + repeated LimbSet limb_set = 3; + } + + message ActionStateChange { + enum State { + UNKNOWN = 0; + START = 1; + KILL = 2; + } + + State state = 1; + string name = 2; + repeated uint32 limbs = 3; + } + + message ActionPriorites { + uint32 id = 1; + repeated float priorities = 2; + } + + repeated ActionRegister action_register = 1; + repeated ActionStateChange action_state_change = 2; + repeated ActionPriorites action_priority_change = 3; +} diff --git a/src/shared/proto/message/behaviour/WalkPath.proto b/src/shared/proto/message/behaviour/WalkPath.proto new file mode 100644 index 00000000..de0583e8 --- /dev/null +++ b/src/shared/proto/message/behaviour/WalkPath.proto @@ -0,0 +1,39 @@ +/* + * This file is part of the NUbots Codebase. + * + * The NUbots Codebase is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * The NUbots Codebase is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the NUbots Codebase. If not, see . + * + * Copyright 2015 NUBots + */ +syntax = "proto3"; + +package message.behaviour; + +import "message/behaviour/MotionCommand.proto"; +import "Vector.proto"; + +message WalkPath { + // Sequence of robot states that form a path: + repeated vec3 states = 1; + + // The ball position and target bearing at the time of planning: + vec3 ballSpace = 2; + + // The start and goal states used for planning: + vec3 start = 3; + vec3 goal = 4; + + // The motion command for which this plan was generated: + MotionCommand command = 5; // [default = MotionCommand.StandStill] +} diff --git a/src/shared/proto/message/input/CameraParameters.proto b/src/shared/proto/message/input/CameraParameters.proto new file mode 100644 index 00000000..8aff6b3b --- /dev/null +++ b/src/shared/proto/message/input/CameraParameters.proto @@ -0,0 +1,31 @@ +/* + * This file is part of the NUbots Codebase. + * + * The NUbots Codebase is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * The NUbots Codebase is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the NUbots Codebase. If not, see . + * + * Copyright 2013 NUBots + */ +syntax = "proto3"; + +package message.input; + +import "Vector.proto"; + +message CameraParameters { + uvec2 imageSizePixels = 1; + vec2 FOV = 2; + vec2 pixelsToTanThetaFactor = 3; + double focalLengthPixels = 4; + double distortionFactor = 5; +} diff --git a/src/shared/proto/message/input/GameEvents.proto b/src/shared/proto/message/input/GameEvents.proto new file mode 100644 index 00000000..08859c7d --- /dev/null +++ b/src/shared/proto/message/input/GameEvents.proto @@ -0,0 +1,106 @@ +/* + * This file is part of the NUbots Codebase. + * + * The NUbots Codebase is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * The NUbots Codebase is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the NUbots Codebase. If not, see . + * + * Copyright 2013 NUBots + */ +syntax = "proto3"; + +package message.input; + +import "google/protobuf/timestamp.proto"; +import "message/input/GameState.proto"; + +message GameEvents { + + enum Context { + UNKNOWN_CONTEXT = 0; + SELF = 1; + TEAM = 2; + OPPONENT = 3; + UNKNOWN = 4; + }; + + enum TeamColour { + UNKNOWN_TEAM_COLOUR = 0; + CYAN = 1; + MAGENTA = 2; + }; + + message Score { + uint32 ownScore = 1; + uint32 opponentScore = 2; + } + + message GoalScored { + Context context = 1; + uint32 totalScore = 2; + } + + message Penalisation { + Context context = 1; + uint32 robotId = 2; + google.protobuf.Timestamp ends = 3; + GameState.Data.PenaltyReason reason = 4; + } + + message Unpenalisation { + Context context = 1; + uint32 robotId = 2; + } + + message CoachMessage { + Context context = 1; + string message = 2; + } + + message HalfTime { + bool firstHalf = 1; + } + + message BallKickedOut { + Context context = 1; + google.protobuf.Timestamp time = 3; + } + + message KickOffTeam { + Context context = 1; + } + + message GamePhase { + GameState.Data.Phase phase = 1; + + // INITIAL + + // READY + google.protobuf.Timestamp readyTime = 2; + + // SET + + // PLAYING + google.protobuf.Timestamp endHalf = 3; + google.protobuf.Timestamp ballFree = 4; + + // TIMEOUT + google.protobuf.Timestamp ends = 5; + + // FINISHED + google.protobuf.Timestamp nextHalf = 6; + } + + message GameMode { + GameState.Data.Mode mode = 1; + } +} diff --git a/src/shared/proto/message/input/GameState.proto b/src/shared/proto/message/input/GameState.proto new file mode 100644 index 00000000..3f3de1d4 --- /dev/null +++ b/src/shared/proto/message/input/GameState.proto @@ -0,0 +1,86 @@ +/* + * This file is part of the NUbots Codebase. + * + * The NUbots Codebase is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * The NUbots Codebase is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the NUbots Codebase. If not, see . + * + * Copyright 2013 NUBots + */ +syntax = "proto3"; + +package message.input; + +import "google/protobuf/timestamp.proto"; + +message GameState { + message Data { + enum Mode { + UNKNOWN_MODE = 0; + NORMAL = 1; + PENALTY_SHOOTOUT = 2; + OVERTIME = 3; + } + + enum Phase { + UNKNOWN_PHASE = 0; + INITIAL = 1; + READY = 2; + SET = 3; + PLAYING = 4; + TIMEOUT = 5; + FINISHED = 6; + } + + enum PenaltyReason { + UNKNOWN_PENALTY_REASON = 0; + UNPENALISED = 1; + BALL_MANIPULATION = 2; + PHYSICAL_CONTACT = 3; + ILLEGAL_ATTACK = 4; + ILLEGAL_DEFENSE = 5; + REQUEST_FOR_PICKUP = 6; + REQUEST_FOR_SERVICE = 7; + REQUEST_FOR_PICKUP_TO_SERVICE = 8; + SUBSTITUTE = 9; + MANUAL = 10; + } + + message Robot { + uint32 id = 1; + PenaltyReason penalty_reason = 2; + google.protobuf.Timestamp unpenalised = 3; + } + + message Team { + uint32 team_id = 1; // unique team number + uint32 score = 2; // team's score + string coach_message = 3; // the coach's message to the team + repeated Robot players = 4; + } + + Phase phase = 1; + Mode mode = 2; + bool first_half = 3; + bool kicked_out_by_us = 4; + google.protobuf.Timestamp kicked_out_time = 5; + bool our_kick_off = 6; + google.protobuf.Timestamp primary_time = 7; + google.protobuf.Timestamp secondary_time = 8; + Team team = 9; + Team opponent = 10; + Robot self = 11; + } + + Data data = 1; + string event = 2; +} \ No newline at end of file diff --git a/src/shared/proto/message/input/Image.proto b/src/shared/proto/message/input/Image.proto new file mode 100644 index 00000000..c686c142 --- /dev/null +++ b/src/shared/proto/message/input/Image.proto @@ -0,0 +1,34 @@ +/* + * This file is part of the NUbots Codebase. + * + * The NUbots Codebase is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * The NUbots Codebase is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the NUbots Codebase. If not, see . + * + * Copyright 2013 NUBots + */ + +syntax = "proto3"; + +package message.input; + +import "google/protobuf/timestamp.proto"; +import "Vector.proto"; + +message Image { + uint32 format = 1; + uvec2 dimensions = 2; + bytes data = 3; + uint32 camera_id = 4; + string serialNumber = 5; + google.protobuf.Timestamp timestamp = 6; +} diff --git a/src/shared/proto/message/input/ImageFragment.proto b/src/shared/proto/message/input/ImageFragment.proto new file mode 100644 index 00000000..310db40d --- /dev/null +++ b/src/shared/proto/message/input/ImageFragment.proto @@ -0,0 +1,33 @@ +/* + * This file is part of the NUbots Codebase. + * + * The NUbots Codebase is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * The NUbots Codebase is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the NUbots Codebase. If not, see . + * + * Copyright 2013 NUBots + */ + +syntax = "proto3"; + +package message.input; + +import "Matrix.proto"; +import "message/input/Image.proto"; + +message ImageFragment { + + Image image = 1; + uint32 start = 5; + uint32 end = 6; + fmat44 cam_to_feet = 7; +} diff --git a/src/shared/proto/message/input/MotionCapture.proto b/src/shared/proto/message/input/MotionCapture.proto new file mode 100644 index 00000000..80d87e51 --- /dev/null +++ b/src/shared/proto/message/input/MotionCapture.proto @@ -0,0 +1,91 @@ +/* + * This file is part of the NUbots Codebase. + * + * The NUbots Codebase is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * The NUbots Codebase is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the NUbots Codebase. If not, see . + * + * Copyright 2013 NUBots + */ + +syntax = "proto3"; + +package message.input; + +import "Vector.proto"; + +message MotionCapture { + message Marker { + uint32 id = 1; + fvec3 position = 2; + float size = 3; + } + + message MarkerSet { + string name = 1; + repeated Marker markers = 2; + } + + message RigidBody { + uint32 id = 1; + fvec3 position = 2; + fvec4 rotation = 3; + repeated Marker markers = 4; + float error = 5; + bool trackingValid = 6; + + // Information added by the model + string name = 7; + fvec3 offset = 8; + uint32 parent = 9; + repeated uint32 children = 10; + } + + message Skeleton { + uint32 id = 1; + repeated RigidBody bones = 2; + + // Information added by the model + string name = 3; + } + + message LabeledMarker { + Marker marker = 1; + bool occluded = 2; + bool pointCloudSolved = 3; + bool modelSolved = 4; + } + + message Channel { + repeated float channel = 1; + } + + message ForcePlate { + uint32 id = 1; + repeated Channel channels = 2; + } + + uint32 frameNumber = 1; + float latency = 2; + uint32 timecode = 3; + uint32 timecodeSub = 4; + double timestamp = 5; + bool recording = 6; + bool trackedModelsChanged = 7; + + repeated MarkerSet markerSets = 8; + repeated Marker markers = 9; + repeated RigidBody rigidBodies = 10; + repeated Skeleton skeletons = 11; + repeated LabeledMarker labeledMarkers = 12; + repeated ForcePlate forcePlates = 13; +} diff --git a/src/shared/proto/message/input/PostureRecognition.proto b/src/shared/proto/message/input/PostureRecognition.proto new file mode 100644 index 00000000..d9bb1ac5 --- /dev/null +++ b/src/shared/proto/message/input/PostureRecognition.proto @@ -0,0 +1,33 @@ +/* + * This file is part of the NUbots Codebase. + * + * The NUbots Codebase is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * The NUbots Codebase is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the NUbots Codebase. If not, see . + * + * Copyright 2015 NUBots + */ +syntax = "proto3"; + +package message.input; + +message WalkingDetected {} +message BendingDetected {} +message KickingDetected {} +message SittingDetected {} +message StandingDetected {} + +message FallingDetected { + double x = 1; + double y = 2; + double z = 3; +} diff --git a/src/shared/proto/message/input/PresenceUserState.proto b/src/shared/proto/message/input/PresenceUserState.proto new file mode 100644 index 00000000..fd942205 --- /dev/null +++ b/src/shared/proto/message/input/PresenceUserState.proto @@ -0,0 +1,30 @@ +/* + * This file is part of the NUbots Codebase. + * + * The NUbots Codebase is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * The NUbots Codebase is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the NUbots Codebase. If not, see . + * + * Copyright 2013 NUBots + */ + +syntax = "proto3"; + +package message.input; + +import "Matrix.proto"; + +message PresenceUserState { + + fmat44 head_pose = 1; + +} \ No newline at end of file diff --git a/src/shared/proto/message/input/PushDetection.proto b/src/shared/proto/message/input/PushDetection.proto new file mode 100644 index 00000000..aaff06b4 --- /dev/null +++ b/src/shared/proto/message/input/PushDetection.proto @@ -0,0 +1,25 @@ +/* + * This file is part of the NUbots Codebase. + * + * The NUbots Codebase is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * The NUbots Codebase is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the NUbots Codebase. If not, see . + * + * Copyright 2015 NUBots + */ +syntax = "proto3"; + +package message.input; + +message PushDetection { + bool forward = 1; +} diff --git a/src/shared/proto/message/input/Sensors.proto b/src/shared/proto/message/input/Sensors.proto new file mode 100644 index 00000000..d2a9bcee --- /dev/null +++ b/src/shared/proto/message/input/Sensors.proto @@ -0,0 +1,86 @@ +/* + * This file is part of the NUbots Codebase. + * + * The NUbots Codebase is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * The NUbots Codebase is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the NUbots Codebase. If not, see . + * + * Copyright 2013 NUBots + */ + +syntax = "proto3"; + +package message.input; + +import "google/protobuf/timestamp.proto"; +import "Vector.proto"; +import "Matrix.proto"; + +message Sensors { + + message Servo { + uint32 errorFlags = 1; + uint32 id = 2; + bool enabled = 3; + float pGain = 4; + float iGain = 5; + float dGain = 6; + float goalPosition = 7; + float goalVelocity = 8; + float presentPosition = 9; + float presentVelocity = 10; + float load = 11; + float voltage = 12; + float temperature = 13; + } + + message Button { + uint32 id = 1; + bool value = 2; + } + + message LED { + uint32 id = 1; + uint32 colour = 2; + } + + message FSR { + repeated float value = 1 [packed=true]; + vec2 centre = 2; + } + + google.protobuf.Timestamp timestamp = 1; + vec3 accelerometer = 2; + vec3 gyroscope = 3; + + /// This is the transform from the odometry (world) space to robot space (=Htw). It measures the world in robot space. + mat44 world = 4; + repeated FSR fsr = 5; + repeated Servo servo = 6; + repeated Button button = 7; + repeated LED led = 8; + float voltage = 9; + float battery = 10; + vec3 centreOfPressure = 11; + mat22 robotToIMU = 12; + + /// Percentage of the left foot that's considered "down" i.e. if 3/4 FSR sensors have weight this is 0.75 + bool leftFootDown = 13; + bool rightFootDown = 14; + + // Because you can't have a enum type as the key in a map. + map forwardKinematics = 15; + float bodyCentreHeight = 16; + vec4 centreOfMass = 17; + mat44 bodyToGround = 18; + mat44 camToGround = 19; +} diff --git a/src/shared/proto/message/input/SoundChunk.proto b/src/shared/proto/message/input/SoundChunk.proto new file mode 100644 index 00000000..04b3daa9 --- /dev/null +++ b/src/shared/proto/message/input/SoundChunk.proto @@ -0,0 +1,52 @@ +/* + * This file is part of the NUbots Codebase. + * + * The NUbots Codebase is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * The NUbots Codebase is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the NUbots Codebase. If not, see . + * + * Copyright 2013 NUBots + */ +syntax = "proto3"; + +package message.input; + +import "google/protobuf/timestamp.proto"; + +/** + * TODO document + * + * @author Trent Houliston + */ +message SoundChunkSettings { + /// The number of samples that are taken each second for the sound chunks + uint64 sampleRate = 1; + /// The number of channels that the sound chunks will have + uint64 channels = 2; + /// The number of frames (a frame is a single sample for all channels) that each emitted chunk will have + uint64 chunkSize = 3; +} + +message SoundFileStart { + string fileName = 1; + google.protobuf.Timestamp time = 2; +} + +/** + * TODO document + * + * @author Jake Woods + */ + message SoundChunk { + google.protobuf.Timestamp endTime = 1; + repeated int32 data = 2; // Be sure to cast to int16! + } diff --git a/src/shared/proto/message/localisation/FieldObject.proto b/src/shared/proto/message/localisation/FieldObject.proto new file mode 100644 index 00000000..32a26e1d --- /dev/null +++ b/src/shared/proto/message/localisation/FieldObject.proto @@ -0,0 +1,52 @@ +/* + * This file is part of the NUbots Codebase. + * + * The NUbots Codebase is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * The NUbots Codebase is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the NUbots Codebase. If not, see . + * + * Copyright 2013 NUBots + */ +syntax = "proto3"; + +package message.localisation; + +import "google/protobuf/timestamp.proto"; +import "Matrix.proto"; +import "Vector.proto"; +import "message/localisation/Localisation.proto"; + +// Sent to NUbugger +message FieldObject { + string name = 1; + repeated Model models = 2; +} + +message LocalisationObject { + vec2 position = 1; + mat22 position_cov = 2; + google.protobuf.Timestamp last_measurement_time = 3; +} + +message Ball { + LocalisationObject locObject = 1; + vec2 velocity = 2; + bool world_space = 3; // Ball will always be in robot space except + // when sent from MockRobot. +} + +message Self { + LocalisationObject locObject = 1; + vec2 heading = 2; //robot face direction (vector 2) + vec2 velocity = 3; //robot velocity (vector 2) + mat22 robot_to_world_rotation = 4; //??might not be useful +} diff --git a/src/shared/proto/message/localisation/Localisation.proto b/src/shared/proto/message/localisation/Localisation.proto new file mode 100644 index 00000000..fa11eef1 --- /dev/null +++ b/src/shared/proto/message/localisation/Localisation.proto @@ -0,0 +1,50 @@ +/* + * This file is part of the NUbots Codebase. + * + * The NUbots Codebase is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * The NUbots Codebase is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the NUbots Codebase. If not, see . + * + * Copyright 2013 NUBots + */ +syntax = "proto3"; + +package message.localisation; + +message Model { + uint32 model_id = 1; + + float wm_x = 2; //world model x + float wm_y = 3; //world model y + + float sd_x = 4; + float sd_y = 5; + + float sr_xx = 6; //covariance + float sr_xy = 7; + float sr_yy = 8; + + float heading = 9; //direction + float sd_heading = 10; //stdev + + bool lost = 11; +} + +message LocalisationFieldObject { + string name = 1; + + repeated Model models = 2; +} + +message Localisation { + repeated LocalisationFieldObject field_object = 1; +} diff --git a/src/shared/proto/message/localisation/ResetRobotHypotheses.proto b/src/shared/proto/message/localisation/ResetRobotHypotheses.proto new file mode 100644 index 00000000..a0cb3187 --- /dev/null +++ b/src/shared/proto/message/localisation/ResetRobotHypotheses.proto @@ -0,0 +1,36 @@ +/* + * This file is part of the NUbots Codebase. + * + * The NUbots Codebase is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * The NUbots Codebase is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the NUbots Codebase. If not, see . + * + * Copyright 2013 NUBots + */ +syntax = "proto3"; + +package message.localisation; + +import "Matrix.proto"; +import "Vector.proto"; + +message ResetRobotHypotheses { + message Self { + vec2 position = 1; + mat22 position_cov = 2; + double heading = 3; + double heading_var = 4; + bool absoluteYaw = 5; + } + + repeated Self hypotheses = 1; +} diff --git a/src/shared/proto/message/localisation/SideChecker.proto b/src/shared/proto/message/localisation/SideChecker.proto new file mode 100644 index 00000000..8af84a4f --- /dev/null +++ b/src/shared/proto/message/localisation/SideChecker.proto @@ -0,0 +1,23 @@ +/* + * This file is part of the NUbots Codebase. + * + * The NUbots Codebase is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * The NUbots Codebase is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the NUbots Codebase. If not, see . + * + * Copyright 2015 NUBots + */ +syntax = "proto3"; + +package message.localisation; + +message SideCheckingComplete {} diff --git a/src/shared/proto/message/motion/BalanceCommand.proto b/src/shared/proto/message/motion/BalanceCommand.proto new file mode 100644 index 00000000..9d39cb05 --- /dev/null +++ b/src/shared/proto/message/motion/BalanceCommand.proto @@ -0,0 +1,36 @@ +/* + * This file is part of the NUbots Codebase. + * + * The NUbots Codebase is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * The NUbots Codebase is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the NUbots Codebase. If not, see . + * + * Copyright 2013 NUBots + */ +syntax = "proto3"; + +package message.motion; + +import "Matrix.proto"; +import "Vector.proto"; + +message BalanceBodyUpdate { + double phase = 1; + mat44 leftFoot = 2; + mat44 rightFoot = 3; + vec3 armLPosition = 4; + vec3 armRPosition = 5; + +} + +message EnableBalanceResponse {} +message DisableBalanceResponse {} diff --git a/src/shared/proto/message/motion/DiveCommand.proto b/src/shared/proto/message/motion/DiveCommand.proto new file mode 100644 index 00000000..9d93216a --- /dev/null +++ b/src/shared/proto/message/motion/DiveCommand.proto @@ -0,0 +1,29 @@ +/* + * This file is part of the NUbots Codebase. + * + * The NUbots Codebase is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * The NUbots Codebase is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the NUbots Codebase. If not, see . + * + * Copyright 2013 NUBots + */ +syntax = "proto3"; + +package message.motion; + +import "Vector.proto"; + +message DiveCommand { + vec2 direction = 1; +} + +message DiveFinished {} diff --git a/src/shared/proto/message/motion/FootMotionCommand.proto b/src/shared/proto/message/motion/FootMotionCommand.proto new file mode 100644 index 00000000..15ba6fa0 --- /dev/null +++ b/src/shared/proto/message/motion/FootMotionCommand.proto @@ -0,0 +1,54 @@ +/* + * This file is part of the NUbots Codebase. + * + * The NUbots Codebase is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * The NUbots Codebase is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the NUbots Codebase. If not, see . + * + * Copyright 2013 NUBots + */ +syntax = "proto3"; + +package message.motion; + +import "Matrix.proto"; +import "Vector.proto"; + +message FootMotionStopped {} + +message FootMotionUpdate { + double phase = 1; + uint32 activeForwardLimb = 2; + vec3 leftFoot2D = 3; + vec3 rightFoot2D = 4; + mat44 leftFoot3D = 5; + mat44 rightFoot3D = 6; +} + +message NextFootTargetInfo { + vec3 leftFootSource = 1; + vec3 rightFootSource = 2; + vec3 supportMass = 3; + vec3 leftFootDestination = 4; + vec3 rightFootDestination = 5; +} + +message FootStepRequested { + bool status = 1; +} + +message FootStepCompleted { + bool status = 1; +} + +message EnableFootMotion {} +message DisableFootMotion {} diff --git a/src/shared/proto/message/motion/FootPlacementCommand.proto b/src/shared/proto/message/motion/FootPlacementCommand.proto new file mode 100644 index 00000000..6f51b1bf --- /dev/null +++ b/src/shared/proto/message/motion/FootPlacementCommand.proto @@ -0,0 +1,42 @@ +/* + * This file is part of the NUbots Codebase. + * + * The NUbots Codebase is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * The NUbots Codebase is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the NUbots Codebase. If not, see . + * + * Copyright 2013 NUBots + */ +syntax = "proto3"; + +package message.motion; + +import "Vector.proto"; + +message FootPlacementStopped {} + +message NewStepTargetInfo { + double targetTime = 1; + vec3 velocityCurrent = 2; + uint32 activeForwardLimb = 3; +} + +message NewFootTargetInfo { + vec3 leftFootSource = 1; + vec3 rightFootSource = 2; + vec3 supportMass = 3; + vec3 leftFootDestination = 4; + vec3 rightFootDestination = 5; +} + +message EnableFootPlacement {} +message DisableFootPlacement {} diff --git a/src/shared/proto/message/motion/GetupCommand.proto b/src/shared/proto/message/motion/GetupCommand.proto new file mode 100644 index 00000000..e739767b --- /dev/null +++ b/src/shared/proto/message/motion/GetupCommand.proto @@ -0,0 +1,24 @@ +/* + * This file is part of the NUbots Codebase. + * + * The NUbots Codebase is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * The NUbots Codebase is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the NUbots Codebase. If not, see . + * + * Copyright 2013 NUBots + */ +syntax = "proto3"; + +package message.motion; + +message ExecuteGetup {} +message KillGetup {} diff --git a/src/shared/proto/message/motion/HeadCommand.proto b/src/shared/proto/message/motion/HeadCommand.proto new file mode 100644 index 00000000..5c0b1516 --- /dev/null +++ b/src/shared/proto/message/motion/HeadCommand.proto @@ -0,0 +1,37 @@ +/* + * This file is part of the NUbots Codebase. + * + * The NUbots Codebase is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * The NUbots Codebase is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the NUbots Codebase. If not, see . + * + * Copyright 2013 NUBots + */ +syntax = "proto3"; + +package message.motion; + +/** + * Tell the head where to look in world space. + * This command is interpreted such that the robot will use IMU data to fixate at these angles in the world even when rotating. + * + * @author Jake Fountain + */ +message HeadCommand { + float yaw = 1; + float pitch = 2; + bool robotSpace = 3; // if true, the yaw and pitch are interpreted in robot space, instead of IMU space +} + +message HeadMotionUpdate { + //TODO... +} diff --git a/src/shared/proto/message/motion/KickCommand.proto b/src/shared/proto/message/motion/KickCommand.proto new file mode 100644 index 00000000..69521b45 --- /dev/null +++ b/src/shared/proto/message/motion/KickCommand.proto @@ -0,0 +1,64 @@ +/* + * This file is part of the NUbots Codebase. + * + * The NUbots Codebase is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * The NUbots Codebase is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the NUbots Codebase. If not, see . + * + * Copyright 2013 NUBots + */ +syntax = "proto3"; + +package message.motion; + +import "Vector.proto"; + +/** + * TODO document + * + * @author Trent Houliston + * @author Brendan Annable + */ +enum KickCommandType { + NORMAL = 0; + POWER = 1; +} + +message KickCommand { + vec3 target = 1; // The point to kick + vec3 direction = 2; // force is the magnitude + KickCommandType kickCommandType = 3; +} + +/** + * TODO document + * + * @author Trent Houliston + * @author Brendan Annable + */ +message KickScriptCommand { + vec3 direction = 1; // Direction to kick with magnitude determining force + uint32 leg = 2; // Leg to kick with +} + +message KickPlannerConfig { + float max_ball_distance = 1; + float kick_corridor_width = 2; + float seconds_not_seen_limit = 3; + float kick_forward_angle_limit = 4; +} + +message KickFinished {} + +message IKKickParams { + float stand_height = 1; +} diff --git a/src/shared/proto/message/motion/KinematicsModels.proto b/src/shared/proto/message/motion/KinematicsModels.proto new file mode 100644 index 00000000..c7f02680 --- /dev/null +++ b/src/shared/proto/message/motion/KinematicsModels.proto @@ -0,0 +1,118 @@ +/* + * This file is part of the NUbots Codebase. + * + * The NUbots Codebase is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * The NUbots Codebase is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the NUbots Codebase. If not, see . + * + * Copyright 2013 NUBots + */ +syntax = "proto3"; + +package message.motion; + +import "Vector.proto"; + +enum BodySide { + LEFT = 0; + RIGHT = 1; +} + +message KinematicsModel { + //Convention: all values positive + message Leg { + float HIP_OFFSET_X = 1; + float HIP_OFFSET_Y = 2; + float HIP_OFFSET_Z = 3; + float UPPER_LEG_LENGTH = 4; + float LOWER_LEG_LENGTH = 5; + float FOOT_HEIGHT = 6; + float FOOT_LENGTH = 7; + float TOE_LENGTH = 8; + float HEEL_LENGTH = 9; + float FOOT_WIDTH = 10; + float FOOT_CENTRE_TO_ANKLE_CENTRE = 11; + float LENGTH_BETWEEN_LEGS = 12; + int32 LEFT_TO_RIGHT_HIP_YAW = 13; + int32 LEFT_TO_RIGHT_HIP_ROLL = 14; + int32 LEFT_TO_RIGHT_HIP_PITCH = 15; + int32 LEFT_TO_RIGHT_KNEE = 16; + int32 LEFT_TO_RIGHT_ANKLE_PITCH = 17; + int32 LEFT_TO_RIGHT_ANKLE_ROLL = 18; + } + + message Head { + float NECK_BASE_POS_FROM_ORIGIN_X = 1; + float NECK_BASE_POS_FROM_ORIGIN_Y = 2; + float NECK_BASE_POS_FROM_ORIGIN_Z = 3; + float NECK_LENGTH = 4; + float NECK_TO_CAMERA_X = 5; + float NECK_TO_CAMERA_Y = 6; + float NECK_TO_CAMERA_Z = 7; + float CAMERA_DECLINATION_ANGLE_OFFSET = 8; + + //Head movement limits + float MAX_YAW = 9; + float MIN_YAW = 10; + float MAX_PITCH = 11; + float MIN_PITCH = 12; + } + + message Arm { + float DISTANCE_BETWEEN_SHOULDERS = 1; + float SHOULDER_Z_OFFSET = 2; + float SHOULDER_X_OFFSET = 3; + float SHOULDER_LENGTH = 4; + float SHOULDER_WIDTH = 5; + float SHOULDER_HEIGHT = 6; + float UPPER_ARM_LENGTH = 7; + float UPPER_ARM_Y_OFFSET = 8; + float UPPER_ARM_X_OFFSET = 9; + float LOWER_ARM_LENGTH = 10; + float LOWER_ARM_Y_OFFSET = 11; + float LOWER_ARM_Z_OFFSET = 12; + } + + message MassModel { + repeated vec4 masses = 1; + + /* + vec4 R_SHOULDER_PITCH = masses[ 0]; + vec4 L_SHOULDER_PITCH = masses[ 1]; + vec4 R_SHOULDER_ROLL = masses[ 2]; + vec4 L_SHOULDER_ROLL = masses[ 3]; + vec4 R_ELBOW = masses[ 4]; + vec4 L_ELBOW = masses[ 5]; + vec4 R_HIP_YAW = masses[ 6]; + vec4 L_HIP_YAW = masses[ 7]; + vec4 R_HIP_ROLL = masses[ 8]; + vec4 L_HIP_ROLL = masses[ 9]; + vec4 R_HIP_PITCH = masses[10]; + vec4 L_HIP_PITCH = masses[11]; + vec4 R_KNEE = masses[12]; + vec4 L_KNEE = masses[13]; + vec4 R_ANKLE_PITCH = masses[14]; + vec4 L_ANKLE_PITCH = masses[15]; + vec4 R_ANKLE_ROLL = masses[16]; + vec4 L_ANKLE_ROLL = masses[17]; + vec4 HEAD_YAW = masses[18]; + vec4 HEAD_PITCH = masses[19]; + vec4 TORSO = masses[20]; + */ + } + + Leg leg = 1; + Head head = 2; + Arm arm = 3; + MassModel massModel = 4; + float TEAMDARWINCHEST_TO_ORIGIN = 5; +} diff --git a/src/shared/proto/message/motion/ServoTarget.proto b/src/shared/proto/message/motion/ServoTarget.proto new file mode 100644 index 00000000..78f1f8e6 --- /dev/null +++ b/src/shared/proto/message/motion/ServoTarget.proto @@ -0,0 +1,36 @@ +/* + * This file is part of the NUbots Codebase. + * + * The NUbots Codebase is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * The NUbots Codebase is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the NUbots Codebase. If not, see . + * + * Copyright 2013 NUBots + */ +syntax = "proto3"; + +package message.motion; + +import "google/protobuf/timestamp.proto"; + +/** + * TODO document + * + * @author Trent Houliston + */ +message ServoTarget { + google.protobuf.Timestamp time = 1; + uint32 id = 2; + float position = 3; + float gain = 4; + float torque = 5; +} diff --git a/src/shared/proto/message/motion/TorsoMotionCommand.proto b/src/shared/proto/message/motion/TorsoMotionCommand.proto new file mode 100644 index 00000000..ee233e09 --- /dev/null +++ b/src/shared/proto/message/motion/TorsoMotionCommand.proto @@ -0,0 +1,38 @@ +/* + * This file is part of the NUbots Codebase. + * + * The NUbots Codebase is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * The NUbots Codebase is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the NUbots Codebase. If not, see . + * + * Copyright 2013 NUBots + */ +syntax = "proto3"; + +package message.motion; + +import "Matrix.proto"; +import "Vector.proto"; + +message TorsoMotionUpdate { + vec3 frameArms = 1; + vec3 frameLegs = 2; + mat44 frame3D = 3; +} + +message TorsoPositionUpdate { + vec3 position = 1; + vec3 destination = 2; +} + +message EnableTorsoMotion {} +message DisableTorsoMotion {} diff --git a/src/shared/proto/message/motion/WalkCommand.proto b/src/shared/proto/message/motion/WalkCommand.proto new file mode 100644 index 00000000..71471e09 --- /dev/null +++ b/src/shared/proto/message/motion/WalkCommand.proto @@ -0,0 +1,47 @@ +/* + * This file is part of the NUbots Codebase. + * + * The NUbots Codebase is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * The NUbots Codebase is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the NUbots Codebase. If not, see . + * + * Copyright 2013 NUBots + */ +syntax = "proto3"; + +package message.motion; + +import "Vector.proto"; + +message WalkStarted {} +message WalkStopped {} + +message WalkCommand { + uint64 subsumptionId = 1; // reservation identifier for servo control + vec3 command = 2; // x and y are velocity in m/s and angle is in rads/s +} + +message StopCommand { + uint64 subsumptionId = 1; // reservation identifier for servo control +} + +message NewWalkCommand { + vec3 velocityTarget = 1; +} + +message EnableWalkEngineCommand { + uint64 subsumptionId = 1; // reservation identifier for servo control +} + +message DisableWalkEngineCommand { + uint64 subsumptionId = 1; // reservation identifier for servo control +} diff --git a/src/shared/proto/message/output/Say.proto b/src/shared/proto/message/output/Say.proto new file mode 100644 index 00000000..a71b32b6 --- /dev/null +++ b/src/shared/proto/message/output/Say.proto @@ -0,0 +1,30 @@ +/* + * This file is part of the NUbots Codebase. + * + * The NUbots Codebase is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * The NUbots Codebase is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the NUbots Codebase. If not, see . + * + * Copyright 2013 NUBots + */ +syntax = "proto3"; + +package message.output; + +/** + * TODO document + * + * @author Trent Houliston + */ +message Say { + string message = 1; +} diff --git a/src/shared/proto/message/platform/darwin/DarwinSensors.proto b/src/shared/proto/message/platform/darwin/DarwinSensors.proto new file mode 100644 index 00000000..469359b9 --- /dev/null +++ b/src/shared/proto/message/platform/darwin/DarwinSensors.proto @@ -0,0 +1,150 @@ +/* + * This file is part of the NUbots Codebase. + * + * The NUbots Codebase is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * The NUbots Codebase is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the NUbots Codebase. If not, see . + * + * Copyright 2013 NUBots + */ +syntax = "proto3"; + +package message.platform.darwin; + +import "google/protobuf/timestamp.proto"; + +/** + * TODO document + * + * @author Trent Houliston + */ +message DarwinSensors { + // bitmask values + enum Error { + OK = 0; // not really a flag but the lack of any other flag + INPUT_VOLTAGE = 1; + ANGLE_LIMIT = 2; + OVERHEATING = 4; + RANGE = 8; + CHECKSUM = 16; + OVERLOAD = 32; + INSTRUCTION = 64; + CORRUPT_DATA = 128; + TIMEOUT = 256; + TIMEOUT_VICTIM = 512; + } + + message LEDPanel { + bool led2 = 1; + bool led3 = 2; + bool led4 = 3; + } + + message HeadLED { + // Encode as 0x00 0xRR 0xGG 0xBB + uint32 RGB = 1; + } + + message EyeLED { + // Encode as 0x00 0xRR 0xGG 0xBB + uint32 RGB = 1; + } + + message Buttons { + bool left = 1; + bool middle = 2; + } + + message Accelerometer { + float x = 1; + float y = 2; + float z = 3; + } + + message Gyroscope { + float x = 1; + float y = 2; + float z = 3; + } + + message FSR { + float fsr1 = 1; + float fsr2 = 2; + float fsr3 = 3; + float fsr4 = 4; + float centreX = 5; + float centreY = 6; + uint32 errorFlags = 7; + } + + message FSRs { + FSR left = 1; + FSR right = 2; + } + + message Servo { + uint32 errorFlags = 1; + bool torqueEnabled = 2; + float pGain = 3; + float iGain = 4; + float dGain = 5; + float goalPosition = 6; + float movingSpeed = 7; + float torque = 8; + float presentPosition = 9; + float presentSpeed = 10; + float load = 11; + float voltage = 12; + uint32 temperature = 13; + }; + + message Servos { + Servo rShoulderPitch = 1; + Servo lShoulderPitch = 2; + Servo rShoulderRoll = 3; + Servo lShoulderRoll = 4; + Servo rElbow = 5; + Servo lElbow = 6; + Servo rHipYaw = 7; + Servo lHipYaw = 8; + Servo rHipRoll = 9; + Servo lHipRoll = 10; + Servo rHipPitch = 11; + Servo lHipPitch = 12; + Servo rKnee = 13; + Servo lKnee = 14; + Servo rAnklePitch = 15; + Servo lAnklePitch = 16; + Servo rAnkleRoll = 17; + Servo lAnkleRoll = 18; + Servo headPan = 19; + Servo headTilt = 20; + } + + google.protobuf.Timestamp timestamp = 1; + uint32 cm730ErrorFlags = 2; + LEDPanel ledPanel = 3; + HeadLED headLED = 4; + EyeLED eyeLED = 5; + Buttons buttons = 6; + float voltage = 7; + Accelerometer accelerometer = 8; + Gyroscope gyroscope = 9; + FSRs fsr = 10; + Servos servo = 11; +} + +// Button press events +message ButtonLeftDown {} +message ButtonLeftUp {} +message ButtonMiddleDown {} +message ButtonMiddleUp {} diff --git a/src/shared/proto/message/research/AutoClassifierPixels.proto b/src/shared/proto/message/research/AutoClassifierPixels.proto new file mode 100644 index 00000000..07874aeb --- /dev/null +++ b/src/shared/proto/message/research/AutoClassifierPixels.proto @@ -0,0 +1,26 @@ +/* + * This file is part of the NUbots Codebase. + * + * The NUbots Codebase is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * The NUbots Codebase is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the NUbots Codebase. If not, see . + * + * Copyright 2013 NUBots + */ +syntax = "proto3"; + +package message.research; + +message AutoClassifierPixels { + repeated uint32 pixels = 1; + uint32 classification = 2; +} diff --git a/src/shared/proto/message/research/scriptoptimizer/OptimizeScript.proto b/src/shared/proto/message/research/scriptoptimizer/OptimizeScript.proto new file mode 100644 index 00000000..9f0f5cc9 --- /dev/null +++ b/src/shared/proto/message/research/scriptoptimizer/OptimizeScript.proto @@ -0,0 +1,41 @@ +/* + * This file is part of the NUbots Codebase. + * + * The NUbots Codebase is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * The NUbots Codebase is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the NUbots Codebase. If not, see . + * + * Copyright 2013 NUBots + */ + +syntax = "proto3"; + +package message.research.scriptoptimizer; + +message OptimizeScript { + + message Target { + uint32 id = 1; + float position = 2; + float gain = 3; + } + + message Frame { + uint32 duration = 1; + repeated Target targets = 2; + } + + string target = 1; + uint32 iteration = 2; + string metadata = 3; + repeated Frame frames = 4; +} diff --git a/src/shared/proto/message/research/scriptoptimizer/OptimizeScriptResult.proto b/src/shared/proto/message/research/scriptoptimizer/OptimizeScriptResult.proto new file mode 100644 index 00000000..fc87afcd --- /dev/null +++ b/src/shared/proto/message/research/scriptoptimizer/OptimizeScriptResult.proto @@ -0,0 +1,31 @@ +/* + * This file is part of the NUbots Codebase. + * + * The NUbots Codebase is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * The NUbots Codebase is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the NUbots Codebase. If not, see . + * + * Copyright 2013 NUBots + */ + +syntax = "proto3"; + +package message.research.scriptoptimizer; + +import "message/input/Sensors.proto"; + +message OptimizeScriptResult { + + uint32 iteration = 1; + string metadata = 2; + repeated input.Sensors sensors = 3; +} diff --git a/src/shared/proto/message/support/FieldDescription.proto b/src/shared/proto/message/support/FieldDescription.proto new file mode 100644 index 00000000..be67b40d --- /dev/null +++ b/src/shared/proto/message/support/FieldDescription.proto @@ -0,0 +1,55 @@ +/* + * This file is part of the NUbots Codebase. + * + * The NUbots Codebase is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * The NUbots Codebase is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the NUbots Codebase. If not, see . + * + * Copyright 2013 NUBots + */ +syntax = "proto3"; + +package message.support; + +import "Vector.proto"; + +message FieldDescription { + message FieldDimensions { + double line_width = 1; + double mark_width = 2; + double field_length = 3; + double field_width = 4; + double goal_depth = 5; + double goal_width = 6; + double goal_area_length = 7; + double goal_area_width = 8; + double goal_crossbar_height = 9; + double goalpost_diameter = 10; + double goal_crossbar_diameter = 11; + double goal_net_height = 12; + double penalty_mark_distance = 13; + double center_circle_diameter = 14; + double border_strip_min_width = 15; + } + + double ball_radius = 1; + double goalpost_top_height = 2; + double penalty_robot_start = 3; + + // Coordinates of goalpost centers calculated from the FieldDimensions: + vec2 goalpost_own_l = 4; + vec2 goalpost_own_r = 5; + vec2 goalpost_opp_l = 6; + vec2 goalpost_opp_r = 7; + + FieldDimensions dimensions = 8; +} diff --git a/src/shared/proto/message/support/GlobalConfig.proto b/src/shared/proto/message/support/GlobalConfig.proto new file mode 100644 index 00000000..a3eab826 --- /dev/null +++ b/src/shared/proto/message/support/GlobalConfig.proto @@ -0,0 +1,27 @@ +/* + * This file is part of the NUbots Codebase. + * + * The NUbots Codebase is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * The NUbots Codebase is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the NUbots Codebase. If not, see . + * + * Copyright 2013 NUBots + */ +syntax = "proto3"; + +package message.support; + +// Field dimensions as defined in the Robocup rules: +message GlobalConfig { + uint32 playerId = 1; + uint32 teamId = 2; +} diff --git a/src/shared/proto/message/support/SaveConfiguration.proto b/src/shared/proto/message/support/SaveConfiguration.proto new file mode 100644 index 00000000..707b3ef6 --- /dev/null +++ b/src/shared/proto/message/support/SaveConfiguration.proto @@ -0,0 +1,26 @@ +/* + * This file is part of the NUbots Codebase. + * + * The NUbots Codebase is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * The NUbots Codebase is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the NUbots Codebase. If not, see . + * + * Copyright 2013 NUBots + */ +syntax = "proto3"; + +package message.support; + +message SaveConfiguration { + string path = 1; + string config = 2; +} diff --git a/src/shared/proto/message/support/ServoHealthTestData.proto b/src/shared/proto/message/support/ServoHealthTestData.proto new file mode 100644 index 00000000..fbc91892 --- /dev/null +++ b/src/shared/proto/message/support/ServoHealthTestData.proto @@ -0,0 +1,57 @@ +/* + * This file is part of the NUbots Codebase. + * + * The NUbots Codebase is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * The NUbots Codebase is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the NUbots Codebase. If not, see . + * + * Copyright 2017 NUbots + */ +syntax = "proto3"; + +package message.support; + +import "message/platform/darwin/DarwinSensors.proto"; + +message ServoHealthTestData { + + enum State { + INITIALISE = 0; + MOVE_1 = 1; + ELBOW = 2; + MOVE_2 = 3; + SHOULDER_PITCH = 4; + SHOULDER_MOVE_1 = 5; + SHOULDER_ROLL = 6; + MOVE_3 = 7; + HEAD_PITCH = 8; + MOVE_4 = 9; + HEAD_YAW = 10; + LAYDOWN = 11; + HIP_ROLL = 12; + HIP_MOVE_1 = 13; + HIP_YAW = 14; + HIP_MOVE_2 = 15; + ANKLE_PITCH = 16; + ANKLE_MOVE = 17; + ANKLE_ROLL = 18; + KNEE_MOVE = 19; + KNEE = 20; + KNEE_MOVE_2 = 21; + HIP_PITCH = 22; + LAYDOWN_2 = 23; + FINISHED = 24; + }; + + State state = 1; + platform.darwin.DarwinSensors sensors = 2; +} diff --git a/src/shared/proto/message/support/nubugger/Command.proto b/src/shared/proto/message/support/nubugger/Command.proto new file mode 100644 index 00000000..9806fa8e --- /dev/null +++ b/src/shared/proto/message/support/nubugger/Command.proto @@ -0,0 +1,26 @@ +/* + * This file is part of the NUbots Codebase. + * + * The NUbots Codebase is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * The NUbots Codebase is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the NUbots Codebase. If not, see . + * + * Copyright 2013 NUBots + */ + +syntax = "proto3"; + +package message.support.nubugger; + +message Command { + string command = 1; +} diff --git a/src/shared/proto/message/support/nubugger/DataPoint.proto b/src/shared/proto/message/support/nubugger/DataPoint.proto new file mode 100644 index 00000000..f0477146 --- /dev/null +++ b/src/shared/proto/message/support/nubugger/DataPoint.proto @@ -0,0 +1,44 @@ +/* + * This file is part of the NUbots Codebase. + * + * The NUbots Codebase is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * The NUbots Codebase is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the NUbots Codebase. If not, see . + * + * Copyright 2013 NUBots + */ + +syntax = "proto3"; + +package message.support.nubugger; + +message DataPoint { + /** + * The represents the type of data + * NOTE: This should not describe how to display the data, as that should be done client-side. + */ + enum Type { + FLOAT_LIST = 0; + + // TODO: support all of these + // ROTATION_2D = 1; + ROTATION_3D = 2; // A column-major float list representing a 3x3 rotation marix + // TRANSFORM_2D = 3; + // TRANSFORM_3D = 4; + // SCATTER_2D = 5; + // SCATTER_3D = 6; + } + + string label = 1; + repeated float value = 2 [packed=true]; + Type type = 3; +} \ No newline at end of file diff --git a/src/shared/proto/message/support/nubugger/DrawObjects.proto b/src/shared/proto/message/support/nubugger/DrawObjects.proto new file mode 100644 index 00000000..d7f928ab --- /dev/null +++ b/src/shared/proto/message/support/nubugger/DrawObjects.proto @@ -0,0 +1,71 @@ +/* + * This file is part of the NUbots Codebase. + * + * The NUbots Codebase is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * The NUbots Codebase is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the NUbots Codebase. If not, see . + * + * Copyright 2013 NUBots + */ + +syntax = "proto3"; + +package message.support.nubugger; + +import "Vector.proto"; + +message DrawObject { + + enum Shape { + UNKNOWN = 0; + ARROW = 1; + BOX = 2; + CIRCLE = 3; + CYLINDER = 4; + POLYLINE = 5; + PYRAMID = 6; + RECTANGLE = 7; + SPHERE = 8; + } + + message Path { + vec2 position = 1; + uint32 parent_index = 2; + } + + Shape shape = 1; + string name = 2; + + vec3 position = 3; + vec3 direction = 4; + vec3 target = 5; + float width = 6; + float height = 7; + vec3 rotation = 8; + vec3 colour = 9; // rgb + float radius = 10; + float top_radius = 11; + float bottom_radius = 12; + repeated vec3 vertices = 13; + repeated Path path = 14; + uint32 faces = 15; + float line_width = 16; + float length = 17; + float depth = 18; + bool fill = 19; + + float timeout = 20; +} + +message DrawObjects { + repeated DrawObject objects = 1; +} diff --git a/src/shared/proto/message/support/nubugger/Overview.proto b/src/shared/proto/message/support/nubugger/Overview.proto new file mode 100644 index 00000000..5d0916d8 --- /dev/null +++ b/src/shared/proto/message/support/nubugger/Overview.proto @@ -0,0 +1,67 @@ +/* + * This file is part of the NUbots Codebase. + * + * The NUbots Codebase is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * The NUbots Codebase is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the NUbots Codebase. If not, see . + * + * Copyright 2015 NUBots + */ + +syntax = "proto3"; + +package message.support.nubugger; + +import "google/protobuf/timestamp.proto"; +import "message/behaviour/Behaviour.proto"; +import "message/input/GameState.proto"; +import "Vector.proto"; +import "Matrix.proto"; + +message Overview { + + string role_name = 15; + + // Sensors + float voltage = 1; + float battery = 2; + + // Behaviour + behaviour.Behaviour.State behaviour_state = 3; + vec2 kick_target = 17; + + // Localisation + vec2 robot_position = 4; + mat22 robot_position_covariance = 6; + vec2 robot_heading = 5; + vec2 ball_position = 13; + vec2 ball_world_position = 14; + + // Game controller + input.GameState.Data.Mode game_mode = 7; + input.GameState.Data.Phase game_phase = 8; + input.GameState.Data.PenaltyReason penalty_reason = 9; + + // Hardware + google.protobuf.Timestamp last_camera_image = 10; + // TODO: motor overloads? + + // Vision + google.protobuf.Timestamp last_seen_ball = 11; + google.protobuf.Timestamp last_seen_goal = 12; + google.protobuf.Timestamp last_seen_obstacle = 19; + + // Walk engine + repeated vec2 path_plan = 16; + vec3 walk_command = 18; + +} diff --git a/src/shared/proto/message/support/nubugger/Ping.proto b/src/shared/proto/message/support/nubugger/Ping.proto new file mode 100644 index 00000000..e1f1df80 --- /dev/null +++ b/src/shared/proto/message/support/nubugger/Ping.proto @@ -0,0 +1,26 @@ +/* + * This file is part of the NUbots Codebase. + * + * The NUbots Codebase is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * The NUbots Codebase is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the NUbots Codebase. If not, see . + * + * Copyright 2013 NUBots + */ + +syntax = "proto3"; + +package message.support.nubugger; + +message Ping { + uint64 time = 1; +} diff --git a/src/shared/proto/message/support/nubugger/ReactionHandles.proto b/src/shared/proto/message/support/nubugger/ReactionHandles.proto new file mode 100644 index 00000000..8ca2ccbd --- /dev/null +++ b/src/shared/proto/message/support/nubugger/ReactionHandles.proto @@ -0,0 +1,31 @@ +/* + * This file is part of the NUbots Codebase. + * + * The NUbots Codebase is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * The NUbots Codebase is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the NUbots Codebase. If not, see . + * + * Copyright 2013 NUBots + */ + +syntax = "proto3"; + +package message.support.nubugger; + +message ReactionHandles { + message Handle { + string type = 1; + bool enabled = 2; + } + + repeated Handle handles = 1; +} diff --git a/src/shared/proto/message/support/nuclear/ReactionStatistics.proto b/src/shared/proto/message/support/nuclear/ReactionStatistics.proto new file mode 100644 index 00000000..ad8527f6 --- /dev/null +++ b/src/shared/proto/message/support/nuclear/ReactionStatistics.proto @@ -0,0 +1,35 @@ +/* + * This file is part of the NUbots Codebase. + * + * The NUbots Codebase is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * The NUbots Codebase is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the NUbots Codebase. If not, see . + * + * Copyright 2013 NUBots + */ + +syntax = "proto3"; + +package message.support.nuclear; + +message ReactionStatistics { + string name = 1; + string triggerName = 2; + string functionName = 3; + uint64 reactionId = 4; + uint64 taskId = 5; + uint64 causeReactionId = 6; + uint64 causeTaskId = 7; + uint64 emitted = 8; + uint64 started = 9; + uint64 finished = 10; +} \ No newline at end of file diff --git a/src/shared/proto/message/support/optimisation/DOpE.proto b/src/shared/proto/message/support/optimisation/DOpE.proto new file mode 100644 index 00000000..8be19b9a --- /dev/null +++ b/src/shared/proto/message/support/optimisation/DOpE.proto @@ -0,0 +1,42 @@ +/* + * This file is part of the NUbots Codebase. + * + * The NUbots Codebase is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * The NUbots Codebase is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the NUbots Codebase. If not, see . + * + * Copyright 2015 NUBots + */ +syntax = "proto3"; + +package message.support.optimisation; + +import "Matrix.proto"; +import "message/support/optimisation/OptimiserTypes.proto"; + +message RegisterOptimisation { + string group = 1; + bool network = 2; + OptimiserParameters parameters = 3; +} + +message RequestParameters { + string group = 1; + uint32 nSamples = 2; +} + +message Parameters { + string group = 1; + int32 generation = 2; + mat samples = 3; + mat covariance = 4; +} diff --git a/src/shared/proto/message/support/optimisation/Episode.proto b/src/shared/proto/message/support/optimisation/Episode.proto new file mode 100644 index 00000000..f8080657 --- /dev/null +++ b/src/shared/proto/message/support/optimisation/Episode.proto @@ -0,0 +1,38 @@ +/* + * This file is part of the NUbots Codebase. + * + * The NUbots Codebase is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * The NUbots Codebase is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the NUbots Codebase. If not, see . + * + * Copyright 2013 NUBots + */ + +syntax = "proto3"; + +package message.support.optimisation; + +import "Vector.proto"; +import "Matrix.proto"; + +message Episode { + message Fitness { + double fitness = 1; + double weight = 2; + } + + string group = 1; + int32 generation = 2; + vec values = 3; + mat covariance = 4; + repeated Fitness fitness = 5; +} diff --git a/src/shared/proto/message/support/optimisation/Estimate.proto b/src/shared/proto/message/support/optimisation/Estimate.proto new file mode 100644 index 00000000..cf0e27dc --- /dev/null +++ b/src/shared/proto/message/support/optimisation/Estimate.proto @@ -0,0 +1,36 @@ +/* + * This file is part of the NUbots Codebase. + * + * The NUbots Codebase is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * The NUbots Codebase is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the NUbots Codebase. If not, see . + * + * Copyright 2013 NUBots + */ + +syntax = "proto3"; + +package message.support.optimisation; + +import "Vector.proto"; +import "Matrix.proto"; +import "message/support/optimisation/Episode.proto"; + +message Estimate { + string group = 1; + int32 generation = 2; + vec values = 3; + mat covariance = 4; + + repeated Episode estimate_episode = 5; + repeated Episode episode = 6; +} diff --git a/src/shared/proto/message/support/optimisation/OptimiserTypes.proto b/src/shared/proto/message/support/optimisation/OptimiserTypes.proto new file mode 100644 index 00000000..f369752a --- /dev/null +++ b/src/shared/proto/message/support/optimisation/OptimiserTypes.proto @@ -0,0 +1,38 @@ +/* + * This file is part of the NUbots Codebase. + * + * The NUbots Codebase is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * The NUbots Codebase is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the NUbots Codebase. If not, see . + * + * Copyright 2015 NUBots + */ +syntax = "proto3"; + +package message.support.optimisation; + +import "Matrix.proto"; +import "Vector.proto"; + +message OptimiserEstimate { + int32 generation = 1; + vec estimate = 2; + mat covariance = 3; +} + +message OptimiserParameters { + OptimiserEstimate initial = 1; + vec upperBound = 2; + vec lowerBound = 3; + uint32 batchSize = 4; + //TODO: add extra params! +} diff --git a/src/shared/proto/message/vision/ClassifiedImage.proto b/src/shared/proto/message/vision/ClassifiedImage.proto new file mode 100644 index 00000000..5f54836a --- /dev/null +++ b/src/shared/proto/message/vision/ClassifiedImage.proto @@ -0,0 +1,83 @@ +/* + * This file is part of the NUbots Codebase. + * + * The NUbots Codebase is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * The NUbots Codebase is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the NUbots Codebase. If not, see . + * + * Copyright 2013 NUBots + */ +syntax = "proto3"; + +package message.vision; + +import "Neutron.proto"; +import "Vector.proto"; + +import "message/Geometry.proto"; +import "message/input/Sensors.proto"; +import "message/input/Image.proto"; + +message ClassifiedImage { + enum SegmentClass { + UNKNOWN_CLASS = 0; + FIELD = 1; + BALL = 2; + GOAL = 3; + LINE = 4; + CYAN_TEAM = 5; + MAGENTA_TEAM = 6; + } + + message Segment { + SegmentClass segmentClass = 1; + uint32 length = 2; + uint32 subsample = 3; + ivec2 start = 4; + ivec2 end = 5; + ivec2 midpoint = 6; + int32 previous = 7; + int32 next = 8; + } + + message SeedPoints { + repeated ivec2 points = 1; + } + + // The sensor frame that happened with this image + input.Sensors sensors = 1 [(pointer) = SHARED]; + + // The image that was used to create this classified image + input.Image image = 2 [(pointer) = SHARED]; + + // Our images dimensions + uvec2 dimensions = 3; + + // Points that are on the edge of the ball + repeated SeedPoints ballSeedPoints = 4 [(array_size) = 3]; + + // Points that could make up the ball + repeated ivec2 ballPoints = 5; + + // Our horizon + Line horizon = 6; + + // The points of the visual horizon + repeated ivec2 visualHorizon = 7; + + // Our segments, split into vertical and horizontal components + repeated Segment horizontalSegments = 8; + repeated Segment verticalSegments = 9; + //map horizontalSegments = 8; + //map verticalSegments = 9; +} + diff --git a/src/shared/proto/message/vision/LookUpTable.proto b/src/shared/proto/message/vision/LookUpTable.proto new file mode 100644 index 00000000..7d04b2fc --- /dev/null +++ b/src/shared/proto/message/vision/LookUpTable.proto @@ -0,0 +1,31 @@ +/* + * This file is part of the NUbots Codebase. + * + * The NUbots Codebase is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * The NUbots Codebase is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the NUbots Codebase. If not, see . + * + * Copyright 2013 NUBots + */ + +syntax = "proto3"; + +package message.vision; + +message LookUpTable { + bytes table = 1; + uint32 bits_y = 2; + uint32 bits_cb = 3; + uint32 bits_cr = 4; +} + +message SaveLookUpTable {} diff --git a/src/shared/proto/message/vision/LookUpTableDiff.proto b/src/shared/proto/message/vision/LookUpTableDiff.proto new file mode 100644 index 00000000..db9a0b38 --- /dev/null +++ b/src/shared/proto/message/vision/LookUpTableDiff.proto @@ -0,0 +1,32 @@ +/* + * This file is part of the NUbots Codebase. + * + * The NUbots Codebase is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * The NUbots Codebase is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the NUbots Codebase. If not, see . + * + * Copyright 2013 NUBots + */ + +syntax = "proto3"; + +package message.vision; + +message LookUpTableDiff { + message Diff { + uint32 lut_index = 1; + uint32 classification = 2; + } + + // format is a repeated 4 bytes of [y, cb, cr, classification] + repeated Diff diff = 1; +} diff --git a/src/shared/proto/message/vision/VisionObjects.proto b/src/shared/proto/message/vision/VisionObjects.proto new file mode 100644 index 00000000..9fdc8d6f --- /dev/null +++ b/src/shared/proto/message/vision/VisionObjects.proto @@ -0,0 +1,128 @@ + +/* + * This file is part of the NUbots Codebase. + * + * The NUbots Codebase is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * The NUbots Codebase is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the NUbots Codebase. If not, see . + * + * Copyright 2013 NUBots + */ +syntax = "proto3"; + +package message.vision; + +import "google/protobuf/timestamp.proto"; +import "Neutron.proto"; +import "Vector.proto"; +import "message/Geometry.proto"; +import "message/input/Sensors.proto"; +import "message/vision/ClassifiedImage.proto"; + +message VisionObject { + // Time the image was taken + google.protobuf.Timestamp timestamp = 1; + + // The angular position and size from the perspective of the camera + // Use these values to move the camera around to see this object + vec2 screenAngular = 2; + vec2 angularSize = 3; + + // The sensor frame that was used to detect this object + input.Sensors sensors = 4 [(pointer) = SHARED]; + + // The classified image that was used to detect this object + // TODO: Why is this here? + ClassifiedImage classifiedImage = 5 [(pointer) = SHARED]; + + // The camera which saw the object. + uint32 camera_id = 6; +} + +message Ball { + VisionObject visObject = 1; + + // The position of the ball in world coordinates + vec3 position = 2; + vec3 torsoSpacePosition = 3; + + repeated vec3 edgePoints = 4; + Circle circle = 5; +} + +message Goal { + enum Side { + UNKNOWN_SIDE = 0; + LEFT = 1; + RIGHT = 2; + } + + enum Team { + UNKNOWN_TEAM = 0; + OWN = 1; + OPPONENT = 2; + } + + enum MeasurementType { + UNKNOWN_MEASUREMENT = 0; + LEFT_NORMAL = 1; + RIGHT_NORMAL = 2; + TOP_NORMAL = 3; + BASE_NORMAL = 4; + } + + message Measurement { + MeasurementType type = 1; + vec3 position = 2; + } + + VisionObject visObject = 1; + Side side = 2; + Team team = 3; + Quad quad = 4; + repeated Measurement measurement = 5; +} + +message Obstacle { + enum Team { + UNKNOWN_TEAM = 0; + MAGENTA = 1; + CYAN = 2; + } + + VisionObject visObject = 1; + Polygon shape = 2; + Team team = 3; +} + +message Line { + VisionObject visObject = 1; + ivec2 start = 2; + ivec2 end = 3; + vec4 colour = 4; +} + +message NUsightBalls { + repeated Ball balls = 1; +} + +message NUsightGoals { + repeated Goal goals = 1; +} + +message NUsightObstacles { + repeated Obstacle obstacles = 1; +} + +message NUsightLines { + repeated Line lines = 1; +} diff --git a/src/shared/proto/messages.d.ts b/src/shared/proto/messages.d.ts new file mode 100644 index 00000000..6da7337d --- /dev/null +++ b/src/shared/proto/messages.d.ts @@ -0,0 +1,32813 @@ +/* tslint:disable */ + +import * as $protobuf from "protobufjs"; + +type mat$Properties = { + rows?: number; + cols?: number; + v?: number[]; +}; + +/** + * Constructs a new mat. + * @exports mat + * @constructor + * @param {mat$Properties=} [properties] Properties to set + */ +export class mat { + + /** + * Constructs a new mat. + * @exports mat + * @constructor + * @param {mat$Properties=} [properties] Properties to set + */ + constructor(properties?: mat$Properties); + + /** + * mat rows. + * @type {number} + */ + public rows: number; + + /** + * mat cols. + * @type {number} + */ + public cols: number; + + /** + * mat v. + * @type {Array.} + */ + public v: number[]; + + /** + * Creates a new mat instance using the specified properties. + * @param {mat$Properties=} [properties] Properties to set + * @returns {mat} mat instance + */ + public static create(properties?: mat$Properties): mat; + + /** + * Encodes the specified mat message. Does not implicitly {@link mat.verify|verify} messages. + * @param {mat$Properties} message mat message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: mat$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified mat message, length delimited. Does not implicitly {@link mat.verify|verify} messages. + * @param {mat$Properties} message mat message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: mat$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a mat message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {mat} mat + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): mat; + + /** + * Decodes a mat message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {mat} mat + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): mat; + + /** + * Verifies a mat message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a mat message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {mat} mat + */ + public static fromObject(object: { [k: string]: any }): mat; + + /** + * Creates a mat message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link mat.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {mat} mat + */ + public static from(object: { [k: string]: any }): mat; + + /** + * Creates a plain object from a mat message. Also converts values to other types if specified. + * @param {mat} message mat + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: mat, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this mat message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this mat to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; +} + +type fmat$Properties = { + rows?: number; + cols?: number; + v?: number[]; +}; + +/** + * Constructs a new fmat. + * @exports fmat + * @constructor + * @param {fmat$Properties=} [properties] Properties to set + */ +export class fmat { + + /** + * Constructs a new fmat. + * @exports fmat + * @constructor + * @param {fmat$Properties=} [properties] Properties to set + */ + constructor(properties?: fmat$Properties); + + /** + * fmat rows. + * @type {number} + */ + public rows: number; + + /** + * fmat cols. + * @type {number} + */ + public cols: number; + + /** + * fmat v. + * @type {Array.} + */ + public v: number[]; + + /** + * Creates a new fmat instance using the specified properties. + * @param {fmat$Properties=} [properties] Properties to set + * @returns {fmat} fmat instance + */ + public static create(properties?: fmat$Properties): fmat; + + /** + * Encodes the specified fmat message. Does not implicitly {@link fmat.verify|verify} messages. + * @param {fmat$Properties} message fmat message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: fmat$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified fmat message, length delimited. Does not implicitly {@link fmat.verify|verify} messages. + * @param {fmat$Properties} message fmat message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: fmat$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a fmat message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {fmat} fmat + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): fmat; + + /** + * Decodes a fmat message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {fmat} fmat + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): fmat; + + /** + * Verifies a fmat message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a fmat message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {fmat} fmat + */ + public static fromObject(object: { [k: string]: any }): fmat; + + /** + * Creates a fmat message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link fmat.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {fmat} fmat + */ + public static from(object: { [k: string]: any }): fmat; + + /** + * Creates a plain object from a fmat message. Also converts values to other types if specified. + * @param {fmat} message fmat + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: fmat, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this fmat message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this fmat to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; +} + +type imat$Properties = { + rows?: number; + cols?: number; + v?: number[]; +}; + +/** + * Constructs a new imat. + * @exports imat + * @constructor + * @param {imat$Properties=} [properties] Properties to set + */ +export class imat { + + /** + * Constructs a new imat. + * @exports imat + * @constructor + * @param {imat$Properties=} [properties] Properties to set + */ + constructor(properties?: imat$Properties); + + /** + * imat rows. + * @type {number} + */ + public rows: number; + + /** + * imat cols. + * @type {number} + */ + public cols: number; + + /** + * imat v. + * @type {Array.} + */ + public v: number[]; + + /** + * Creates a new imat instance using the specified properties. + * @param {imat$Properties=} [properties] Properties to set + * @returns {imat} imat instance + */ + public static create(properties?: imat$Properties): imat; + + /** + * Encodes the specified imat message. Does not implicitly {@link imat.verify|verify} messages. + * @param {imat$Properties} message imat message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: imat$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified imat message, length delimited. Does not implicitly {@link imat.verify|verify} messages. + * @param {imat$Properties} message imat message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: imat$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an imat message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {imat} imat + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): imat; + + /** + * Decodes an imat message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {imat} imat + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): imat; + + /** + * Verifies an imat message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates an imat message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {imat} imat + */ + public static fromObject(object: { [k: string]: any }): imat; + + /** + * Creates an imat message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link imat.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {imat} imat + */ + public static from(object: { [k: string]: any }): imat; + + /** + * Creates a plain object from an imat message. Also converts values to other types if specified. + * @param {imat} message imat + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: imat, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this imat message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this imat to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; +} + +type umat$Properties = { + rows?: number; + cols?: number; + v?: number[]; +}; + +/** + * Constructs a new umat. + * @exports umat + * @constructor + * @param {umat$Properties=} [properties] Properties to set + */ +export class umat { + + /** + * Constructs a new umat. + * @exports umat + * @constructor + * @param {umat$Properties=} [properties] Properties to set + */ + constructor(properties?: umat$Properties); + + /** + * umat rows. + * @type {number} + */ + public rows: number; + + /** + * umat cols. + * @type {number} + */ + public cols: number; + + /** + * umat v. + * @type {Array.} + */ + public v: number[]; + + /** + * Creates a new umat instance using the specified properties. + * @param {umat$Properties=} [properties] Properties to set + * @returns {umat} umat instance + */ + public static create(properties?: umat$Properties): umat; + + /** + * Encodes the specified umat message. Does not implicitly {@link umat.verify|verify} messages. + * @param {umat$Properties} message umat message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: umat$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified umat message, length delimited. Does not implicitly {@link umat.verify|verify} messages. + * @param {umat$Properties} message umat message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: umat$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an umat message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {umat} umat + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): umat; + + /** + * Decodes an umat message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {umat} umat + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): umat; + + /** + * Verifies an umat message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates an umat message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {umat} umat + */ + public static fromObject(object: { [k: string]: any }): umat; + + /** + * Creates an umat message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link umat.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {umat} umat + */ + public static from(object: { [k: string]: any }): umat; + + /** + * Creates a plain object from an umat message. Also converts values to other types if specified. + * @param {umat} message umat + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: umat, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this umat message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this umat to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; +} + +type cmat$Properties = { + rows?: number; + cols?: number; + v?: Uint8Array; +}; + +/** + * Constructs a new cmat. + * @exports cmat + * @constructor + * @param {cmat$Properties=} [properties] Properties to set + */ +export class cmat { + + /** + * Constructs a new cmat. + * @exports cmat + * @constructor + * @param {cmat$Properties=} [properties] Properties to set + */ + constructor(properties?: cmat$Properties); + + /** + * cmat rows. + * @type {number} + */ + public rows: number; + + /** + * cmat cols. + * @type {number} + */ + public cols: number; + + /** + * cmat v. + * @type {Uint8Array} + */ + public v: Uint8Array; + + /** + * Creates a new cmat instance using the specified properties. + * @param {cmat$Properties=} [properties] Properties to set + * @returns {cmat} cmat instance + */ + public static create(properties?: cmat$Properties): cmat; + + /** + * Encodes the specified cmat message. Does not implicitly {@link cmat.verify|verify} messages. + * @param {cmat$Properties} message cmat message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: cmat$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified cmat message, length delimited. Does not implicitly {@link cmat.verify|verify} messages. + * @param {cmat$Properties} message cmat message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: cmat$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a cmat message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {cmat} cmat + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): cmat; + + /** + * Decodes a cmat message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {cmat} cmat + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): cmat; + + /** + * Verifies a cmat message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a cmat message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {cmat} cmat + */ + public static fromObject(object: { [k: string]: any }): cmat; + + /** + * Creates a cmat message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link cmat.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {cmat} cmat + */ + public static from(object: { [k: string]: any }): cmat; + + /** + * Creates a plain object from a cmat message. Also converts values to other types if specified. + * @param {cmat} message cmat + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: cmat, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this cmat message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this cmat to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; +} + +type mat22$Properties = { + x?: vec2$Properties; + y?: vec2$Properties; +}; + +/** + * Constructs a new mat22. + * @exports mat22 + * @constructor + * @param {mat22$Properties=} [properties] Properties to set + */ +export class mat22 { + + /** + * Constructs a new mat22. + * @exports mat22 + * @constructor + * @param {mat22$Properties=} [properties] Properties to set + */ + constructor(properties?: mat22$Properties); + + /** + * mat22 x. + * @type {(vec2$Properties|null)} + */ + public x: (vec2$Properties|null); + + /** + * mat22 y. + * @type {(vec2$Properties|null)} + */ + public y: (vec2$Properties|null); + + /** + * Creates a new mat22 instance using the specified properties. + * @param {mat22$Properties=} [properties] Properties to set + * @returns {mat22} mat22 instance + */ + public static create(properties?: mat22$Properties): mat22; + + /** + * Encodes the specified mat22 message. Does not implicitly {@link mat22.verify|verify} messages. + * @param {mat22$Properties} message mat22 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: mat22$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified mat22 message, length delimited. Does not implicitly {@link mat22.verify|verify} messages. + * @param {mat22$Properties} message mat22 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: mat22$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a mat22 message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {mat22} mat22 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): mat22; + + /** + * Decodes a mat22 message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {mat22} mat22 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): mat22; + + /** + * Verifies a mat22 message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a mat22 message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {mat22} mat22 + */ + public static fromObject(object: { [k: string]: any }): mat22; + + /** + * Creates a mat22 message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link mat22.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {mat22} mat22 + */ + public static from(object: { [k: string]: any }): mat22; + + /** + * Creates a plain object from a mat22 message. Also converts values to other types if specified. + * @param {mat22} message mat22 + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: mat22, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this mat22 message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this mat22 to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; +} + +type fmat22$Properties = { + x?: fvec2$Properties; + y?: fvec2$Properties; +}; + +/** + * Constructs a new fmat22. + * @exports fmat22 + * @constructor + * @param {fmat22$Properties=} [properties] Properties to set + */ +export class fmat22 { + + /** + * Constructs a new fmat22. + * @exports fmat22 + * @constructor + * @param {fmat22$Properties=} [properties] Properties to set + */ + constructor(properties?: fmat22$Properties); + + /** + * fmat22 x. + * @type {(fvec2$Properties|null)} + */ + public x: (fvec2$Properties|null); + + /** + * fmat22 y. + * @type {(fvec2$Properties|null)} + */ + public y: (fvec2$Properties|null); + + /** + * Creates a new fmat22 instance using the specified properties. + * @param {fmat22$Properties=} [properties] Properties to set + * @returns {fmat22} fmat22 instance + */ + public static create(properties?: fmat22$Properties): fmat22; + + /** + * Encodes the specified fmat22 message. Does not implicitly {@link fmat22.verify|verify} messages. + * @param {fmat22$Properties} message fmat22 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: fmat22$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified fmat22 message, length delimited. Does not implicitly {@link fmat22.verify|verify} messages. + * @param {fmat22$Properties} message fmat22 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: fmat22$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a fmat22 message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {fmat22} fmat22 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): fmat22; + + /** + * Decodes a fmat22 message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {fmat22} fmat22 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): fmat22; + + /** + * Verifies a fmat22 message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a fmat22 message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {fmat22} fmat22 + */ + public static fromObject(object: { [k: string]: any }): fmat22; + + /** + * Creates a fmat22 message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link fmat22.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {fmat22} fmat22 + */ + public static from(object: { [k: string]: any }): fmat22; + + /** + * Creates a plain object from a fmat22 message. Also converts values to other types if specified. + * @param {fmat22} message fmat22 + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: fmat22, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this fmat22 message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this fmat22 to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; +} + +type imat22$Properties = { + x?: ivec2$Properties; + y?: ivec2$Properties; +}; + +/** + * Constructs a new imat22. + * @exports imat22 + * @constructor + * @param {imat22$Properties=} [properties] Properties to set + */ +export class imat22 { + + /** + * Constructs a new imat22. + * @exports imat22 + * @constructor + * @param {imat22$Properties=} [properties] Properties to set + */ + constructor(properties?: imat22$Properties); + + /** + * imat22 x. + * @type {(ivec2$Properties|null)} + */ + public x: (ivec2$Properties|null); + + /** + * imat22 y. + * @type {(ivec2$Properties|null)} + */ + public y: (ivec2$Properties|null); + + /** + * Creates a new imat22 instance using the specified properties. + * @param {imat22$Properties=} [properties] Properties to set + * @returns {imat22} imat22 instance + */ + public static create(properties?: imat22$Properties): imat22; + + /** + * Encodes the specified imat22 message. Does not implicitly {@link imat22.verify|verify} messages. + * @param {imat22$Properties} message imat22 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: imat22$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified imat22 message, length delimited. Does not implicitly {@link imat22.verify|verify} messages. + * @param {imat22$Properties} message imat22 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: imat22$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an imat22 message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {imat22} imat22 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): imat22; + + /** + * Decodes an imat22 message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {imat22} imat22 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): imat22; + + /** + * Verifies an imat22 message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates an imat22 message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {imat22} imat22 + */ + public static fromObject(object: { [k: string]: any }): imat22; + + /** + * Creates an imat22 message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link imat22.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {imat22} imat22 + */ + public static from(object: { [k: string]: any }): imat22; + + /** + * Creates a plain object from an imat22 message. Also converts values to other types if specified. + * @param {imat22} message imat22 + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: imat22, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this imat22 message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this imat22 to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; +} + +type umat22$Properties = { + x?: uvec2$Properties; + y?: uvec2$Properties; +}; + +/** + * Constructs a new umat22. + * @exports umat22 + * @constructor + * @param {umat22$Properties=} [properties] Properties to set + */ +export class umat22 { + + /** + * Constructs a new umat22. + * @exports umat22 + * @constructor + * @param {umat22$Properties=} [properties] Properties to set + */ + constructor(properties?: umat22$Properties); + + /** + * umat22 x. + * @type {(uvec2$Properties|null)} + */ + public x: (uvec2$Properties|null); + + /** + * umat22 y. + * @type {(uvec2$Properties|null)} + */ + public y: (uvec2$Properties|null); + + /** + * Creates a new umat22 instance using the specified properties. + * @param {umat22$Properties=} [properties] Properties to set + * @returns {umat22} umat22 instance + */ + public static create(properties?: umat22$Properties): umat22; + + /** + * Encodes the specified umat22 message. Does not implicitly {@link umat22.verify|verify} messages. + * @param {umat22$Properties} message umat22 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: umat22$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified umat22 message, length delimited. Does not implicitly {@link umat22.verify|verify} messages. + * @param {umat22$Properties} message umat22 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: umat22$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an umat22 message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {umat22} umat22 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): umat22; + + /** + * Decodes an umat22 message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {umat22} umat22 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): umat22; + + /** + * Verifies an umat22 message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates an umat22 message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {umat22} umat22 + */ + public static fromObject(object: { [k: string]: any }): umat22; + + /** + * Creates an umat22 message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link umat22.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {umat22} umat22 + */ + public static from(object: { [k: string]: any }): umat22; + + /** + * Creates a plain object from an umat22 message. Also converts values to other types if specified. + * @param {umat22} message umat22 + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: umat22, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this umat22 message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this umat22 to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; +} + +type mat33$Properties = { + x?: vec3$Properties; + y?: vec3$Properties; + z?: vec3$Properties; +}; + +/** + * Constructs a new mat33. + * @exports mat33 + * @constructor + * @param {mat33$Properties=} [properties] Properties to set + */ +export class mat33 { + + /** + * Constructs a new mat33. + * @exports mat33 + * @constructor + * @param {mat33$Properties=} [properties] Properties to set + */ + constructor(properties?: mat33$Properties); + + /** + * mat33 x. + * @type {(vec3$Properties|null)} + */ + public x: (vec3$Properties|null); + + /** + * mat33 y. + * @type {(vec3$Properties|null)} + */ + public y: (vec3$Properties|null); + + /** + * mat33 z. + * @type {(vec3$Properties|null)} + */ + public z: (vec3$Properties|null); + + /** + * Creates a new mat33 instance using the specified properties. + * @param {mat33$Properties=} [properties] Properties to set + * @returns {mat33} mat33 instance + */ + public static create(properties?: mat33$Properties): mat33; + + /** + * Encodes the specified mat33 message. Does not implicitly {@link mat33.verify|verify} messages. + * @param {mat33$Properties} message mat33 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: mat33$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified mat33 message, length delimited. Does not implicitly {@link mat33.verify|verify} messages. + * @param {mat33$Properties} message mat33 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: mat33$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a mat33 message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {mat33} mat33 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): mat33; + + /** + * Decodes a mat33 message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {mat33} mat33 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): mat33; + + /** + * Verifies a mat33 message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a mat33 message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {mat33} mat33 + */ + public static fromObject(object: { [k: string]: any }): mat33; + + /** + * Creates a mat33 message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link mat33.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {mat33} mat33 + */ + public static from(object: { [k: string]: any }): mat33; + + /** + * Creates a plain object from a mat33 message. Also converts values to other types if specified. + * @param {mat33} message mat33 + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: mat33, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this mat33 message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this mat33 to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; +} + +type fmat33$Properties = { + x?: fvec3$Properties; + y?: fvec3$Properties; + z?: fvec3$Properties; +}; + +/** + * Constructs a new fmat33. + * @exports fmat33 + * @constructor + * @param {fmat33$Properties=} [properties] Properties to set + */ +export class fmat33 { + + /** + * Constructs a new fmat33. + * @exports fmat33 + * @constructor + * @param {fmat33$Properties=} [properties] Properties to set + */ + constructor(properties?: fmat33$Properties); + + /** + * fmat33 x. + * @type {(fvec3$Properties|null)} + */ + public x: (fvec3$Properties|null); + + /** + * fmat33 y. + * @type {(fvec3$Properties|null)} + */ + public y: (fvec3$Properties|null); + + /** + * fmat33 z. + * @type {(fvec3$Properties|null)} + */ + public z: (fvec3$Properties|null); + + /** + * Creates a new fmat33 instance using the specified properties. + * @param {fmat33$Properties=} [properties] Properties to set + * @returns {fmat33} fmat33 instance + */ + public static create(properties?: fmat33$Properties): fmat33; + + /** + * Encodes the specified fmat33 message. Does not implicitly {@link fmat33.verify|verify} messages. + * @param {fmat33$Properties} message fmat33 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: fmat33$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified fmat33 message, length delimited. Does not implicitly {@link fmat33.verify|verify} messages. + * @param {fmat33$Properties} message fmat33 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: fmat33$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a fmat33 message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {fmat33} fmat33 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): fmat33; + + /** + * Decodes a fmat33 message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {fmat33} fmat33 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): fmat33; + + /** + * Verifies a fmat33 message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a fmat33 message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {fmat33} fmat33 + */ + public static fromObject(object: { [k: string]: any }): fmat33; + + /** + * Creates a fmat33 message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link fmat33.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {fmat33} fmat33 + */ + public static from(object: { [k: string]: any }): fmat33; + + /** + * Creates a plain object from a fmat33 message. Also converts values to other types if specified. + * @param {fmat33} message fmat33 + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: fmat33, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this fmat33 message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this fmat33 to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; +} + +type imat33$Properties = { + x?: ivec3$Properties; + y?: ivec3$Properties; + z?: ivec3$Properties; +}; + +/** + * Constructs a new imat33. + * @exports imat33 + * @constructor + * @param {imat33$Properties=} [properties] Properties to set + */ +export class imat33 { + + /** + * Constructs a new imat33. + * @exports imat33 + * @constructor + * @param {imat33$Properties=} [properties] Properties to set + */ + constructor(properties?: imat33$Properties); + + /** + * imat33 x. + * @type {(ivec3$Properties|null)} + */ + public x: (ivec3$Properties|null); + + /** + * imat33 y. + * @type {(ivec3$Properties|null)} + */ + public y: (ivec3$Properties|null); + + /** + * imat33 z. + * @type {(ivec3$Properties|null)} + */ + public z: (ivec3$Properties|null); + + /** + * Creates a new imat33 instance using the specified properties. + * @param {imat33$Properties=} [properties] Properties to set + * @returns {imat33} imat33 instance + */ + public static create(properties?: imat33$Properties): imat33; + + /** + * Encodes the specified imat33 message. Does not implicitly {@link imat33.verify|verify} messages. + * @param {imat33$Properties} message imat33 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: imat33$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified imat33 message, length delimited. Does not implicitly {@link imat33.verify|verify} messages. + * @param {imat33$Properties} message imat33 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: imat33$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an imat33 message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {imat33} imat33 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): imat33; + + /** + * Decodes an imat33 message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {imat33} imat33 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): imat33; + + /** + * Verifies an imat33 message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates an imat33 message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {imat33} imat33 + */ + public static fromObject(object: { [k: string]: any }): imat33; + + /** + * Creates an imat33 message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link imat33.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {imat33} imat33 + */ + public static from(object: { [k: string]: any }): imat33; + + /** + * Creates a plain object from an imat33 message. Also converts values to other types if specified. + * @param {imat33} message imat33 + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: imat33, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this imat33 message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this imat33 to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; +} + +type umat33$Properties = { + x?: uvec3$Properties; + y?: uvec3$Properties; + z?: uvec3$Properties; +}; + +/** + * Constructs a new umat33. + * @exports umat33 + * @constructor + * @param {umat33$Properties=} [properties] Properties to set + */ +export class umat33 { + + /** + * Constructs a new umat33. + * @exports umat33 + * @constructor + * @param {umat33$Properties=} [properties] Properties to set + */ + constructor(properties?: umat33$Properties); + + /** + * umat33 x. + * @type {(uvec3$Properties|null)} + */ + public x: (uvec3$Properties|null); + + /** + * umat33 y. + * @type {(uvec3$Properties|null)} + */ + public y: (uvec3$Properties|null); + + /** + * umat33 z. + * @type {(uvec3$Properties|null)} + */ + public z: (uvec3$Properties|null); + + /** + * Creates a new umat33 instance using the specified properties. + * @param {umat33$Properties=} [properties] Properties to set + * @returns {umat33} umat33 instance + */ + public static create(properties?: umat33$Properties): umat33; + + /** + * Encodes the specified umat33 message. Does not implicitly {@link umat33.verify|verify} messages. + * @param {umat33$Properties} message umat33 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: umat33$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified umat33 message, length delimited. Does not implicitly {@link umat33.verify|verify} messages. + * @param {umat33$Properties} message umat33 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: umat33$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an umat33 message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {umat33} umat33 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): umat33; + + /** + * Decodes an umat33 message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {umat33} umat33 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): umat33; + + /** + * Verifies an umat33 message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates an umat33 message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {umat33} umat33 + */ + public static fromObject(object: { [k: string]: any }): umat33; + + /** + * Creates an umat33 message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link umat33.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {umat33} umat33 + */ + public static from(object: { [k: string]: any }): umat33; + + /** + * Creates a plain object from an umat33 message. Also converts values to other types if specified. + * @param {umat33} message umat33 + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: umat33, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this umat33 message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this umat33 to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; +} + +type mat44$Properties = { + x?: vec4$Properties; + y?: vec4$Properties; + z?: vec4$Properties; + t?: vec4$Properties; +}; + +/** + * Constructs a new mat44. + * @exports mat44 + * @constructor + * @param {mat44$Properties=} [properties] Properties to set + */ +export class mat44 { + + /** + * Constructs a new mat44. + * @exports mat44 + * @constructor + * @param {mat44$Properties=} [properties] Properties to set + */ + constructor(properties?: mat44$Properties); + + /** + * mat44 x. + * @type {(vec4$Properties|null)} + */ + public x: (vec4$Properties|null); + + /** + * mat44 y. + * @type {(vec4$Properties|null)} + */ + public y: (vec4$Properties|null); + + /** + * mat44 z. + * @type {(vec4$Properties|null)} + */ + public z: (vec4$Properties|null); + + /** + * mat44 t. + * @type {(vec4$Properties|null)} + */ + public t: (vec4$Properties|null); + + /** + * Creates a new mat44 instance using the specified properties. + * @param {mat44$Properties=} [properties] Properties to set + * @returns {mat44} mat44 instance + */ + public static create(properties?: mat44$Properties): mat44; + + /** + * Encodes the specified mat44 message. Does not implicitly {@link mat44.verify|verify} messages. + * @param {mat44$Properties} message mat44 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: mat44$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified mat44 message, length delimited. Does not implicitly {@link mat44.verify|verify} messages. + * @param {mat44$Properties} message mat44 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: mat44$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a mat44 message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {mat44} mat44 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): mat44; + + /** + * Decodes a mat44 message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {mat44} mat44 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): mat44; + + /** + * Verifies a mat44 message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a mat44 message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {mat44} mat44 + */ + public static fromObject(object: { [k: string]: any }): mat44; + + /** + * Creates a mat44 message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link mat44.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {mat44} mat44 + */ + public static from(object: { [k: string]: any }): mat44; + + /** + * Creates a plain object from a mat44 message. Also converts values to other types if specified. + * @param {mat44} message mat44 + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: mat44, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this mat44 message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this mat44 to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; +} + +type fmat44$Properties = { + x?: fvec4$Properties; + y?: fvec4$Properties; + z?: fvec4$Properties; + t?: fvec4$Properties; +}; + +/** + * Constructs a new fmat44. + * @exports fmat44 + * @constructor + * @param {fmat44$Properties=} [properties] Properties to set + */ +export class fmat44 { + + /** + * Constructs a new fmat44. + * @exports fmat44 + * @constructor + * @param {fmat44$Properties=} [properties] Properties to set + */ + constructor(properties?: fmat44$Properties); + + /** + * fmat44 x. + * @type {(fvec4$Properties|null)} + */ + public x: (fvec4$Properties|null); + + /** + * fmat44 y. + * @type {(fvec4$Properties|null)} + */ + public y: (fvec4$Properties|null); + + /** + * fmat44 z. + * @type {(fvec4$Properties|null)} + */ + public z: (fvec4$Properties|null); + + /** + * fmat44 t. + * @type {(fvec4$Properties|null)} + */ + public t: (fvec4$Properties|null); + + /** + * Creates a new fmat44 instance using the specified properties. + * @param {fmat44$Properties=} [properties] Properties to set + * @returns {fmat44} fmat44 instance + */ + public static create(properties?: fmat44$Properties): fmat44; + + /** + * Encodes the specified fmat44 message. Does not implicitly {@link fmat44.verify|verify} messages. + * @param {fmat44$Properties} message fmat44 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: fmat44$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified fmat44 message, length delimited. Does not implicitly {@link fmat44.verify|verify} messages. + * @param {fmat44$Properties} message fmat44 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: fmat44$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a fmat44 message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {fmat44} fmat44 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): fmat44; + + /** + * Decodes a fmat44 message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {fmat44} fmat44 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): fmat44; + + /** + * Verifies a fmat44 message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a fmat44 message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {fmat44} fmat44 + */ + public static fromObject(object: { [k: string]: any }): fmat44; + + /** + * Creates a fmat44 message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link fmat44.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {fmat44} fmat44 + */ + public static from(object: { [k: string]: any }): fmat44; + + /** + * Creates a plain object from a fmat44 message. Also converts values to other types if specified. + * @param {fmat44} message fmat44 + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: fmat44, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this fmat44 message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this fmat44 to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; +} + +type imat44$Properties = { + x?: ivec4$Properties; + y?: ivec4$Properties; + z?: ivec4$Properties; + t?: ivec4$Properties; +}; + +/** + * Constructs a new imat44. + * @exports imat44 + * @constructor + * @param {imat44$Properties=} [properties] Properties to set + */ +export class imat44 { + + /** + * Constructs a new imat44. + * @exports imat44 + * @constructor + * @param {imat44$Properties=} [properties] Properties to set + */ + constructor(properties?: imat44$Properties); + + /** + * imat44 x. + * @type {(ivec4$Properties|null)} + */ + public x: (ivec4$Properties|null); + + /** + * imat44 y. + * @type {(ivec4$Properties|null)} + */ + public y: (ivec4$Properties|null); + + /** + * imat44 z. + * @type {(ivec4$Properties|null)} + */ + public z: (ivec4$Properties|null); + + /** + * imat44 t. + * @type {(ivec4$Properties|null)} + */ + public t: (ivec4$Properties|null); + + /** + * Creates a new imat44 instance using the specified properties. + * @param {imat44$Properties=} [properties] Properties to set + * @returns {imat44} imat44 instance + */ + public static create(properties?: imat44$Properties): imat44; + + /** + * Encodes the specified imat44 message. Does not implicitly {@link imat44.verify|verify} messages. + * @param {imat44$Properties} message imat44 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: imat44$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified imat44 message, length delimited. Does not implicitly {@link imat44.verify|verify} messages. + * @param {imat44$Properties} message imat44 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: imat44$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an imat44 message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {imat44} imat44 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): imat44; + + /** + * Decodes an imat44 message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {imat44} imat44 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): imat44; + + /** + * Verifies an imat44 message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates an imat44 message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {imat44} imat44 + */ + public static fromObject(object: { [k: string]: any }): imat44; + + /** + * Creates an imat44 message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link imat44.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {imat44} imat44 + */ + public static from(object: { [k: string]: any }): imat44; + + /** + * Creates a plain object from an imat44 message. Also converts values to other types if specified. + * @param {imat44} message imat44 + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: imat44, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this imat44 message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this imat44 to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; +} + +type umat44$Properties = { + x?: uvec4$Properties; + y?: uvec4$Properties; + z?: uvec4$Properties; + t?: uvec4$Properties; +}; + +/** + * Constructs a new umat44. + * @exports umat44 + * @constructor + * @param {umat44$Properties=} [properties] Properties to set + */ +export class umat44 { + + /** + * Constructs a new umat44. + * @exports umat44 + * @constructor + * @param {umat44$Properties=} [properties] Properties to set + */ + constructor(properties?: umat44$Properties); + + /** + * umat44 x. + * @type {(uvec4$Properties|null)} + */ + public x: (uvec4$Properties|null); + + /** + * umat44 y. + * @type {(uvec4$Properties|null)} + */ + public y: (uvec4$Properties|null); + + /** + * umat44 z. + * @type {(uvec4$Properties|null)} + */ + public z: (uvec4$Properties|null); + + /** + * umat44 t. + * @type {(uvec4$Properties|null)} + */ + public t: (uvec4$Properties|null); + + /** + * Creates a new umat44 instance using the specified properties. + * @param {umat44$Properties=} [properties] Properties to set + * @returns {umat44} umat44 instance + */ + public static create(properties?: umat44$Properties): umat44; + + /** + * Encodes the specified umat44 message. Does not implicitly {@link umat44.verify|verify} messages. + * @param {umat44$Properties} message umat44 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: umat44$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified umat44 message, length delimited. Does not implicitly {@link umat44.verify|verify} messages. + * @param {umat44$Properties} message umat44 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: umat44$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an umat44 message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {umat44} umat44 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): umat44; + + /** + * Decodes an umat44 message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {umat44} umat44 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): umat44; + + /** + * Verifies an umat44 message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates an umat44 message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {umat44} umat44 + */ + public static fromObject(object: { [k: string]: any }): umat44; + + /** + * Creates an umat44 message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link umat44.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {umat44} umat44 + */ + public static from(object: { [k: string]: any }): umat44; + + /** + * Creates a plain object from an umat44 message. Also converts values to other types if specified. + * @param {umat44} message umat44 + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: umat44, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this umat44 message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this umat44 to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; +} + +type vec$Properties = { + v?: number[]; +}; + +/** + * Constructs a new vec. + * @exports vec + * @constructor + * @param {vec$Properties=} [properties] Properties to set + */ +export class vec { + + /** + * Constructs a new vec. + * @exports vec + * @constructor + * @param {vec$Properties=} [properties] Properties to set + */ + constructor(properties?: vec$Properties); + + /** + * vec v. + * @type {Array.} + */ + public v: number[]; + + /** + * Creates a new vec instance using the specified properties. + * @param {vec$Properties=} [properties] Properties to set + * @returns {vec} vec instance + */ + public static create(properties?: vec$Properties): vec; + + /** + * Encodes the specified vec message. Does not implicitly {@link vec.verify|verify} messages. + * @param {vec$Properties} message vec message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: vec$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified vec message, length delimited. Does not implicitly {@link vec.verify|verify} messages. + * @param {vec$Properties} message vec message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: vec$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a vec message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {vec} vec + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): vec; + + /** + * Decodes a vec message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {vec} vec + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): vec; + + /** + * Verifies a vec message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a vec message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {vec} vec + */ + public static fromObject(object: { [k: string]: any }): vec; + + /** + * Creates a vec message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link vec.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {vec} vec + */ + public static from(object: { [k: string]: any }): vec; + + /** + * Creates a plain object from a vec message. Also converts values to other types if specified. + * @param {vec} message vec + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: vec, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this vec message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this vec to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; +} + +type fvec$Properties = { + v?: number[]; +}; + +/** + * Constructs a new fvec. + * @exports fvec + * @constructor + * @param {fvec$Properties=} [properties] Properties to set + */ +export class fvec { + + /** + * Constructs a new fvec. + * @exports fvec + * @constructor + * @param {fvec$Properties=} [properties] Properties to set + */ + constructor(properties?: fvec$Properties); + + /** + * fvec v. + * @type {Array.} + */ + public v: number[]; + + /** + * Creates a new fvec instance using the specified properties. + * @param {fvec$Properties=} [properties] Properties to set + * @returns {fvec} fvec instance + */ + public static create(properties?: fvec$Properties): fvec; + + /** + * Encodes the specified fvec message. Does not implicitly {@link fvec.verify|verify} messages. + * @param {fvec$Properties} message fvec message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: fvec$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified fvec message, length delimited. Does not implicitly {@link fvec.verify|verify} messages. + * @param {fvec$Properties} message fvec message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: fvec$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a fvec message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {fvec} fvec + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): fvec; + + /** + * Decodes a fvec message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {fvec} fvec + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): fvec; + + /** + * Verifies a fvec message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a fvec message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {fvec} fvec + */ + public static fromObject(object: { [k: string]: any }): fvec; + + /** + * Creates a fvec message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link fvec.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {fvec} fvec + */ + public static from(object: { [k: string]: any }): fvec; + + /** + * Creates a plain object from a fvec message. Also converts values to other types if specified. + * @param {fvec} message fvec + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: fvec, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this fvec message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this fvec to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; +} + +type ivec$Properties = { + v?: number[]; +}; + +/** + * Constructs a new ivec. + * @exports ivec + * @constructor + * @param {ivec$Properties=} [properties] Properties to set + */ +export class ivec { + + /** + * Constructs a new ivec. + * @exports ivec + * @constructor + * @param {ivec$Properties=} [properties] Properties to set + */ + constructor(properties?: ivec$Properties); + + /** + * ivec v. + * @type {Array.} + */ + public v: number[]; + + /** + * Creates a new ivec instance using the specified properties. + * @param {ivec$Properties=} [properties] Properties to set + * @returns {ivec} ivec instance + */ + public static create(properties?: ivec$Properties): ivec; + + /** + * Encodes the specified ivec message. Does not implicitly {@link ivec.verify|verify} messages. + * @param {ivec$Properties} message ivec message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: ivec$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified ivec message, length delimited. Does not implicitly {@link ivec.verify|verify} messages. + * @param {ivec$Properties} message ivec message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: ivec$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an ivec message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {ivec} ivec + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): ivec; + + /** + * Decodes an ivec message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {ivec} ivec + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): ivec; + + /** + * Verifies an ivec message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates an ivec message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {ivec} ivec + */ + public static fromObject(object: { [k: string]: any }): ivec; + + /** + * Creates an ivec message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link ivec.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {ivec} ivec + */ + public static from(object: { [k: string]: any }): ivec; + + /** + * Creates a plain object from an ivec message. Also converts values to other types if specified. + * @param {ivec} message ivec + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: ivec, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this ivec message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this ivec to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; +} + +type uvec$Properties = { + v?: number[]; +}; + +/** + * Constructs a new uvec. + * @exports uvec + * @constructor + * @param {uvec$Properties=} [properties] Properties to set + */ +export class uvec { + + /** + * Constructs a new uvec. + * @exports uvec + * @constructor + * @param {uvec$Properties=} [properties] Properties to set + */ + constructor(properties?: uvec$Properties); + + /** + * uvec v. + * @type {Array.} + */ + public v: number[]; + + /** + * Creates a new uvec instance using the specified properties. + * @param {uvec$Properties=} [properties] Properties to set + * @returns {uvec} uvec instance + */ + public static create(properties?: uvec$Properties): uvec; + + /** + * Encodes the specified uvec message. Does not implicitly {@link uvec.verify|verify} messages. + * @param {uvec$Properties} message uvec message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: uvec$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified uvec message, length delimited. Does not implicitly {@link uvec.verify|verify} messages. + * @param {uvec$Properties} message uvec message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: uvec$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an uvec message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {uvec} uvec + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): uvec; + + /** + * Decodes an uvec message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {uvec} uvec + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): uvec; + + /** + * Verifies an uvec message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates an uvec message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {uvec} uvec + */ + public static fromObject(object: { [k: string]: any }): uvec; + + /** + * Creates an uvec message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link uvec.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {uvec} uvec + */ + public static from(object: { [k: string]: any }): uvec; + + /** + * Creates a plain object from an uvec message. Also converts values to other types if specified. + * @param {uvec} message uvec + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: uvec, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this uvec message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this uvec to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; +} + +type cvec$Properties = { + v?: Uint8Array; +}; + +/** + * Constructs a new cvec. + * @exports cvec + * @constructor + * @param {cvec$Properties=} [properties] Properties to set + */ +export class cvec { + + /** + * Constructs a new cvec. + * @exports cvec + * @constructor + * @param {cvec$Properties=} [properties] Properties to set + */ + constructor(properties?: cvec$Properties); + + /** + * cvec v. + * @type {Uint8Array} + */ + public v: Uint8Array; + + /** + * Creates a new cvec instance using the specified properties. + * @param {cvec$Properties=} [properties] Properties to set + * @returns {cvec} cvec instance + */ + public static create(properties?: cvec$Properties): cvec; + + /** + * Encodes the specified cvec message. Does not implicitly {@link cvec.verify|verify} messages. + * @param {cvec$Properties} message cvec message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: cvec$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified cvec message, length delimited. Does not implicitly {@link cvec.verify|verify} messages. + * @param {cvec$Properties} message cvec message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: cvec$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a cvec message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {cvec} cvec + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): cvec; + + /** + * Decodes a cvec message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {cvec} cvec + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): cvec; + + /** + * Verifies a cvec message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a cvec message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {cvec} cvec + */ + public static fromObject(object: { [k: string]: any }): cvec; + + /** + * Creates a cvec message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link cvec.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {cvec} cvec + */ + public static from(object: { [k: string]: any }): cvec; + + /** + * Creates a plain object from a cvec message. Also converts values to other types if specified. + * @param {cvec} message cvec + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: cvec, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this cvec message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this cvec to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; +} + +type vec2$Properties = { + x?: number; + y?: number; +}; + +/** + * Constructs a new vec2. + * @exports vec2 + * @constructor + * @param {vec2$Properties=} [properties] Properties to set + */ +export class vec2 { + + /** + * Constructs a new vec2. + * @exports vec2 + * @constructor + * @param {vec2$Properties=} [properties] Properties to set + */ + constructor(properties?: vec2$Properties); + + /** + * vec2 x. + * @type {number} + */ + public x: number; + + /** + * vec2 y. + * @type {number} + */ + public y: number; + + /** + * Creates a new vec2 instance using the specified properties. + * @param {vec2$Properties=} [properties] Properties to set + * @returns {vec2} vec2 instance + */ + public static create(properties?: vec2$Properties): vec2; + + /** + * Encodes the specified vec2 message. Does not implicitly {@link vec2.verify|verify} messages. + * @param {vec2$Properties} message vec2 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: vec2$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified vec2 message, length delimited. Does not implicitly {@link vec2.verify|verify} messages. + * @param {vec2$Properties} message vec2 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: vec2$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a vec2 message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {vec2} vec2 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): vec2; + + /** + * Decodes a vec2 message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {vec2} vec2 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): vec2; + + /** + * Verifies a vec2 message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a vec2 message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {vec2} vec2 + */ + public static fromObject(object: { [k: string]: any }): vec2; + + /** + * Creates a vec2 message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link vec2.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {vec2} vec2 + */ + public static from(object: { [k: string]: any }): vec2; + + /** + * Creates a plain object from a vec2 message. Also converts values to other types if specified. + * @param {vec2} message vec2 + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: vec2, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this vec2 message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this vec2 to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; +} + +type fvec2$Properties = { + x?: number; + y?: number; +}; + +/** + * Constructs a new fvec2. + * @exports fvec2 + * @constructor + * @param {fvec2$Properties=} [properties] Properties to set + */ +export class fvec2 { + + /** + * Constructs a new fvec2. + * @exports fvec2 + * @constructor + * @param {fvec2$Properties=} [properties] Properties to set + */ + constructor(properties?: fvec2$Properties); + + /** + * fvec2 x. + * @type {number} + */ + public x: number; + + /** + * fvec2 y. + * @type {number} + */ + public y: number; + + /** + * Creates a new fvec2 instance using the specified properties. + * @param {fvec2$Properties=} [properties] Properties to set + * @returns {fvec2} fvec2 instance + */ + public static create(properties?: fvec2$Properties): fvec2; + + /** + * Encodes the specified fvec2 message. Does not implicitly {@link fvec2.verify|verify} messages. + * @param {fvec2$Properties} message fvec2 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: fvec2$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified fvec2 message, length delimited. Does not implicitly {@link fvec2.verify|verify} messages. + * @param {fvec2$Properties} message fvec2 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: fvec2$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a fvec2 message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {fvec2} fvec2 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): fvec2; + + /** + * Decodes a fvec2 message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {fvec2} fvec2 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): fvec2; + + /** + * Verifies a fvec2 message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a fvec2 message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {fvec2} fvec2 + */ + public static fromObject(object: { [k: string]: any }): fvec2; + + /** + * Creates a fvec2 message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link fvec2.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {fvec2} fvec2 + */ + public static from(object: { [k: string]: any }): fvec2; + + /** + * Creates a plain object from a fvec2 message. Also converts values to other types if specified. + * @param {fvec2} message fvec2 + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: fvec2, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this fvec2 message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this fvec2 to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; +} + +type ivec2$Properties = { + x?: number; + y?: number; +}; + +/** + * Constructs a new ivec2. + * @exports ivec2 + * @constructor + * @param {ivec2$Properties=} [properties] Properties to set + */ +export class ivec2 { + + /** + * Constructs a new ivec2. + * @exports ivec2 + * @constructor + * @param {ivec2$Properties=} [properties] Properties to set + */ + constructor(properties?: ivec2$Properties); + + /** + * ivec2 x. + * @type {number} + */ + public x: number; + + /** + * ivec2 y. + * @type {number} + */ + public y: number; + + /** + * Creates a new ivec2 instance using the specified properties. + * @param {ivec2$Properties=} [properties] Properties to set + * @returns {ivec2} ivec2 instance + */ + public static create(properties?: ivec2$Properties): ivec2; + + /** + * Encodes the specified ivec2 message. Does not implicitly {@link ivec2.verify|verify} messages. + * @param {ivec2$Properties} message ivec2 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: ivec2$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified ivec2 message, length delimited. Does not implicitly {@link ivec2.verify|verify} messages. + * @param {ivec2$Properties} message ivec2 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: ivec2$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an ivec2 message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {ivec2} ivec2 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): ivec2; + + /** + * Decodes an ivec2 message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {ivec2} ivec2 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): ivec2; + + /** + * Verifies an ivec2 message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates an ivec2 message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {ivec2} ivec2 + */ + public static fromObject(object: { [k: string]: any }): ivec2; + + /** + * Creates an ivec2 message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link ivec2.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {ivec2} ivec2 + */ + public static from(object: { [k: string]: any }): ivec2; + + /** + * Creates a plain object from an ivec2 message. Also converts values to other types if specified. + * @param {ivec2} message ivec2 + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: ivec2, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this ivec2 message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this ivec2 to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; +} + +type uvec2$Properties = { + x?: number; + y?: number; +}; + +/** + * Constructs a new uvec2. + * @exports uvec2 + * @constructor + * @param {uvec2$Properties=} [properties] Properties to set + */ +export class uvec2 { + + /** + * Constructs a new uvec2. + * @exports uvec2 + * @constructor + * @param {uvec2$Properties=} [properties] Properties to set + */ + constructor(properties?: uvec2$Properties); + + /** + * uvec2 x. + * @type {number} + */ + public x: number; + + /** + * uvec2 y. + * @type {number} + */ + public y: number; + + /** + * Creates a new uvec2 instance using the specified properties. + * @param {uvec2$Properties=} [properties] Properties to set + * @returns {uvec2} uvec2 instance + */ + public static create(properties?: uvec2$Properties): uvec2; + + /** + * Encodes the specified uvec2 message. Does not implicitly {@link uvec2.verify|verify} messages. + * @param {uvec2$Properties} message uvec2 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: uvec2$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified uvec2 message, length delimited. Does not implicitly {@link uvec2.verify|verify} messages. + * @param {uvec2$Properties} message uvec2 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: uvec2$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an uvec2 message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {uvec2} uvec2 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): uvec2; + + /** + * Decodes an uvec2 message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {uvec2} uvec2 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): uvec2; + + /** + * Verifies an uvec2 message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates an uvec2 message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {uvec2} uvec2 + */ + public static fromObject(object: { [k: string]: any }): uvec2; + + /** + * Creates an uvec2 message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link uvec2.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {uvec2} uvec2 + */ + public static from(object: { [k: string]: any }): uvec2; + + /** + * Creates a plain object from an uvec2 message. Also converts values to other types if specified. + * @param {uvec2} message uvec2 + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: uvec2, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this uvec2 message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this uvec2 to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; +} + +type vec3$Properties = { + x?: number; + y?: number; + z?: number; +}; + +/** + * Constructs a new vec3. + * @exports vec3 + * @constructor + * @param {vec3$Properties=} [properties] Properties to set + */ +export class vec3 { + + /** + * Constructs a new vec3. + * @exports vec3 + * @constructor + * @param {vec3$Properties=} [properties] Properties to set + */ + constructor(properties?: vec3$Properties); + + /** + * vec3 x. + * @type {number} + */ + public x: number; + + /** + * vec3 y. + * @type {number} + */ + public y: number; + + /** + * vec3 z. + * @type {number} + */ + public z: number; + + /** + * Creates a new vec3 instance using the specified properties. + * @param {vec3$Properties=} [properties] Properties to set + * @returns {vec3} vec3 instance + */ + public static create(properties?: vec3$Properties): vec3; + + /** + * Encodes the specified vec3 message. Does not implicitly {@link vec3.verify|verify} messages. + * @param {vec3$Properties} message vec3 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: vec3$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified vec3 message, length delimited. Does not implicitly {@link vec3.verify|verify} messages. + * @param {vec3$Properties} message vec3 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: vec3$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a vec3 message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {vec3} vec3 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): vec3; + + /** + * Decodes a vec3 message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {vec3} vec3 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): vec3; + + /** + * Verifies a vec3 message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a vec3 message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {vec3} vec3 + */ + public static fromObject(object: { [k: string]: any }): vec3; + + /** + * Creates a vec3 message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link vec3.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {vec3} vec3 + */ + public static from(object: { [k: string]: any }): vec3; + + /** + * Creates a plain object from a vec3 message. Also converts values to other types if specified. + * @param {vec3} message vec3 + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: vec3, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this vec3 message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this vec3 to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; +} + +type fvec3$Properties = { + x?: number; + y?: number; + z?: number; +}; + +/** + * Constructs a new fvec3. + * @exports fvec3 + * @constructor + * @param {fvec3$Properties=} [properties] Properties to set + */ +export class fvec3 { + + /** + * Constructs a new fvec3. + * @exports fvec3 + * @constructor + * @param {fvec3$Properties=} [properties] Properties to set + */ + constructor(properties?: fvec3$Properties); + + /** + * fvec3 x. + * @type {number} + */ + public x: number; + + /** + * fvec3 y. + * @type {number} + */ + public y: number; + + /** + * fvec3 z. + * @type {number} + */ + public z: number; + + /** + * Creates a new fvec3 instance using the specified properties. + * @param {fvec3$Properties=} [properties] Properties to set + * @returns {fvec3} fvec3 instance + */ + public static create(properties?: fvec3$Properties): fvec3; + + /** + * Encodes the specified fvec3 message. Does not implicitly {@link fvec3.verify|verify} messages. + * @param {fvec3$Properties} message fvec3 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: fvec3$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified fvec3 message, length delimited. Does not implicitly {@link fvec3.verify|verify} messages. + * @param {fvec3$Properties} message fvec3 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: fvec3$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a fvec3 message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {fvec3} fvec3 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): fvec3; + + /** + * Decodes a fvec3 message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {fvec3} fvec3 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): fvec3; + + /** + * Verifies a fvec3 message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a fvec3 message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {fvec3} fvec3 + */ + public static fromObject(object: { [k: string]: any }): fvec3; + + /** + * Creates a fvec3 message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link fvec3.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {fvec3} fvec3 + */ + public static from(object: { [k: string]: any }): fvec3; + + /** + * Creates a plain object from a fvec3 message. Also converts values to other types if specified. + * @param {fvec3} message fvec3 + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: fvec3, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this fvec3 message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this fvec3 to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; +} + +type ivec3$Properties = { + x?: number; + y?: number; + z?: number; +}; + +/** + * Constructs a new ivec3. + * @exports ivec3 + * @constructor + * @param {ivec3$Properties=} [properties] Properties to set + */ +export class ivec3 { + + /** + * Constructs a new ivec3. + * @exports ivec3 + * @constructor + * @param {ivec3$Properties=} [properties] Properties to set + */ + constructor(properties?: ivec3$Properties); + + /** + * ivec3 x. + * @type {number} + */ + public x: number; + + /** + * ivec3 y. + * @type {number} + */ + public y: number; + + /** + * ivec3 z. + * @type {number} + */ + public z: number; + + /** + * Creates a new ivec3 instance using the specified properties. + * @param {ivec3$Properties=} [properties] Properties to set + * @returns {ivec3} ivec3 instance + */ + public static create(properties?: ivec3$Properties): ivec3; + + /** + * Encodes the specified ivec3 message. Does not implicitly {@link ivec3.verify|verify} messages. + * @param {ivec3$Properties} message ivec3 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: ivec3$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified ivec3 message, length delimited. Does not implicitly {@link ivec3.verify|verify} messages. + * @param {ivec3$Properties} message ivec3 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: ivec3$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an ivec3 message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {ivec3} ivec3 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): ivec3; + + /** + * Decodes an ivec3 message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {ivec3} ivec3 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): ivec3; + + /** + * Verifies an ivec3 message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates an ivec3 message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {ivec3} ivec3 + */ + public static fromObject(object: { [k: string]: any }): ivec3; + + /** + * Creates an ivec3 message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link ivec3.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {ivec3} ivec3 + */ + public static from(object: { [k: string]: any }): ivec3; + + /** + * Creates a plain object from an ivec3 message. Also converts values to other types if specified. + * @param {ivec3} message ivec3 + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: ivec3, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this ivec3 message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this ivec3 to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; +} + +type uvec3$Properties = { + x?: number; + y?: number; + z?: number; +}; + +/** + * Constructs a new uvec3. + * @exports uvec3 + * @constructor + * @param {uvec3$Properties=} [properties] Properties to set + */ +export class uvec3 { + + /** + * Constructs a new uvec3. + * @exports uvec3 + * @constructor + * @param {uvec3$Properties=} [properties] Properties to set + */ + constructor(properties?: uvec3$Properties); + + /** + * uvec3 x. + * @type {number} + */ + public x: number; + + /** + * uvec3 y. + * @type {number} + */ + public y: number; + + /** + * uvec3 z. + * @type {number} + */ + public z: number; + + /** + * Creates a new uvec3 instance using the specified properties. + * @param {uvec3$Properties=} [properties] Properties to set + * @returns {uvec3} uvec3 instance + */ + public static create(properties?: uvec3$Properties): uvec3; + + /** + * Encodes the specified uvec3 message. Does not implicitly {@link uvec3.verify|verify} messages. + * @param {uvec3$Properties} message uvec3 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: uvec3$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified uvec3 message, length delimited. Does not implicitly {@link uvec3.verify|verify} messages. + * @param {uvec3$Properties} message uvec3 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: uvec3$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an uvec3 message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {uvec3} uvec3 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): uvec3; + + /** + * Decodes an uvec3 message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {uvec3} uvec3 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): uvec3; + + /** + * Verifies an uvec3 message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates an uvec3 message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {uvec3} uvec3 + */ + public static fromObject(object: { [k: string]: any }): uvec3; + + /** + * Creates an uvec3 message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link uvec3.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {uvec3} uvec3 + */ + public static from(object: { [k: string]: any }): uvec3; + + /** + * Creates a plain object from an uvec3 message. Also converts values to other types if specified. + * @param {uvec3} message uvec3 + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: uvec3, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this uvec3 message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this uvec3 to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; +} + +type vec4$Properties = { + x?: number; + y?: number; + z?: number; + t?: number; +}; + +/** + * Constructs a new vec4. + * @exports vec4 + * @constructor + * @param {vec4$Properties=} [properties] Properties to set + */ +export class vec4 { + + /** + * Constructs a new vec4. + * @exports vec4 + * @constructor + * @param {vec4$Properties=} [properties] Properties to set + */ + constructor(properties?: vec4$Properties); + + /** + * vec4 x. + * @type {number} + */ + public x: number; + + /** + * vec4 y. + * @type {number} + */ + public y: number; + + /** + * vec4 z. + * @type {number} + */ + public z: number; + + /** + * vec4 t. + * @type {number} + */ + public t: number; + + /** + * Creates a new vec4 instance using the specified properties. + * @param {vec4$Properties=} [properties] Properties to set + * @returns {vec4} vec4 instance + */ + public static create(properties?: vec4$Properties): vec4; + + /** + * Encodes the specified vec4 message. Does not implicitly {@link vec4.verify|verify} messages. + * @param {vec4$Properties} message vec4 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: vec4$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified vec4 message, length delimited. Does not implicitly {@link vec4.verify|verify} messages. + * @param {vec4$Properties} message vec4 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: vec4$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a vec4 message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {vec4} vec4 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): vec4; + + /** + * Decodes a vec4 message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {vec4} vec4 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): vec4; + + /** + * Verifies a vec4 message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a vec4 message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {vec4} vec4 + */ + public static fromObject(object: { [k: string]: any }): vec4; + + /** + * Creates a vec4 message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link vec4.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {vec4} vec4 + */ + public static from(object: { [k: string]: any }): vec4; + + /** + * Creates a plain object from a vec4 message. Also converts values to other types if specified. + * @param {vec4} message vec4 + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: vec4, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this vec4 message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this vec4 to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; +} + +type fvec4$Properties = { + x?: number; + y?: number; + z?: number; + t?: number; +}; + +/** + * Constructs a new fvec4. + * @exports fvec4 + * @constructor + * @param {fvec4$Properties=} [properties] Properties to set + */ +export class fvec4 { + + /** + * Constructs a new fvec4. + * @exports fvec4 + * @constructor + * @param {fvec4$Properties=} [properties] Properties to set + */ + constructor(properties?: fvec4$Properties); + + /** + * fvec4 x. + * @type {number} + */ + public x: number; + + /** + * fvec4 y. + * @type {number} + */ + public y: number; + + /** + * fvec4 z. + * @type {number} + */ + public z: number; + + /** + * fvec4 t. + * @type {number} + */ + public t: number; + + /** + * Creates a new fvec4 instance using the specified properties. + * @param {fvec4$Properties=} [properties] Properties to set + * @returns {fvec4} fvec4 instance + */ + public static create(properties?: fvec4$Properties): fvec4; + + /** + * Encodes the specified fvec4 message. Does not implicitly {@link fvec4.verify|verify} messages. + * @param {fvec4$Properties} message fvec4 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: fvec4$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified fvec4 message, length delimited. Does not implicitly {@link fvec4.verify|verify} messages. + * @param {fvec4$Properties} message fvec4 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: fvec4$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a fvec4 message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {fvec4} fvec4 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): fvec4; + + /** + * Decodes a fvec4 message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {fvec4} fvec4 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): fvec4; + + /** + * Verifies a fvec4 message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a fvec4 message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {fvec4} fvec4 + */ + public static fromObject(object: { [k: string]: any }): fvec4; + + /** + * Creates a fvec4 message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link fvec4.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {fvec4} fvec4 + */ + public static from(object: { [k: string]: any }): fvec4; + + /** + * Creates a plain object from a fvec4 message. Also converts values to other types if specified. + * @param {fvec4} message fvec4 + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: fvec4, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this fvec4 message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this fvec4 to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; +} + +type ivec4$Properties = { + x?: number; + y?: number; + z?: number; + t?: number; +}; + +/** + * Constructs a new ivec4. + * @exports ivec4 + * @constructor + * @param {ivec4$Properties=} [properties] Properties to set + */ +export class ivec4 { + + /** + * Constructs a new ivec4. + * @exports ivec4 + * @constructor + * @param {ivec4$Properties=} [properties] Properties to set + */ + constructor(properties?: ivec4$Properties); + + /** + * ivec4 x. + * @type {number} + */ + public x: number; + + /** + * ivec4 y. + * @type {number} + */ + public y: number; + + /** + * ivec4 z. + * @type {number} + */ + public z: number; + + /** + * ivec4 t. + * @type {number} + */ + public t: number; + + /** + * Creates a new ivec4 instance using the specified properties. + * @param {ivec4$Properties=} [properties] Properties to set + * @returns {ivec4} ivec4 instance + */ + public static create(properties?: ivec4$Properties): ivec4; + + /** + * Encodes the specified ivec4 message. Does not implicitly {@link ivec4.verify|verify} messages. + * @param {ivec4$Properties} message ivec4 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: ivec4$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified ivec4 message, length delimited. Does not implicitly {@link ivec4.verify|verify} messages. + * @param {ivec4$Properties} message ivec4 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: ivec4$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an ivec4 message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {ivec4} ivec4 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): ivec4; + + /** + * Decodes an ivec4 message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {ivec4} ivec4 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): ivec4; + + /** + * Verifies an ivec4 message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates an ivec4 message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {ivec4} ivec4 + */ + public static fromObject(object: { [k: string]: any }): ivec4; + + /** + * Creates an ivec4 message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link ivec4.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {ivec4} ivec4 + */ + public static from(object: { [k: string]: any }): ivec4; + + /** + * Creates a plain object from an ivec4 message. Also converts values to other types if specified. + * @param {ivec4} message ivec4 + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: ivec4, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this ivec4 message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this ivec4 to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; +} + +type uvec4$Properties = { + x?: number; + y?: number; + z?: number; + t?: number; +}; + +/** + * Constructs a new uvec4. + * @exports uvec4 + * @constructor + * @param {uvec4$Properties=} [properties] Properties to set + */ +export class uvec4 { + + /** + * Constructs a new uvec4. + * @exports uvec4 + * @constructor + * @param {uvec4$Properties=} [properties] Properties to set + */ + constructor(properties?: uvec4$Properties); + + /** + * uvec4 x. + * @type {number} + */ + public x: number; + + /** + * uvec4 y. + * @type {number} + */ + public y: number; + + /** + * uvec4 z. + * @type {number} + */ + public z: number; + + /** + * uvec4 t. + * @type {number} + */ + public t: number; + + /** + * Creates a new uvec4 instance using the specified properties. + * @param {uvec4$Properties=} [properties] Properties to set + * @returns {uvec4} uvec4 instance + */ + public static create(properties?: uvec4$Properties): uvec4; + + /** + * Encodes the specified uvec4 message. Does not implicitly {@link uvec4.verify|verify} messages. + * @param {uvec4$Properties} message uvec4 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: uvec4$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified uvec4 message, length delimited. Does not implicitly {@link uvec4.verify|verify} messages. + * @param {uvec4$Properties} message uvec4 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: uvec4$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an uvec4 message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {uvec4} uvec4 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): uvec4; + + /** + * Decodes an uvec4 message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {uvec4} uvec4 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): uvec4; + + /** + * Verifies an uvec4 message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates an uvec4 message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {uvec4} uvec4 + */ + public static fromObject(object: { [k: string]: any }): uvec4; + + /** + * Creates an uvec4 message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link uvec4.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {uvec4} uvec4 + */ + public static from(object: { [k: string]: any }): uvec4; + + /** + * Creates a plain object from an uvec4 message. Also converts values to other types if specified. + * @param {uvec4} message uvec4 + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: uvec4, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this uvec4 message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this uvec4 to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; +} + +/** + * PointerType enum. + * @exports PointerType + * @enum {number} + * @property {number} NONE=0 NONE value + * @property {number} RAW=1 RAW value + * @property {number} SHARED=2 SHARED value + * @property {number} UNIQUE=3 UNIQUE value + */ +export enum PointerType { + NONE = 0, + RAW = 1, + SHARED = 2, + UNIQUE = 3 +} + +/** + * Namespace google. + * @exports google + * @namespace + */ +export namespace google { + + /** + * Namespace protobuf. + * @exports google.protobuf + * @namespace + */ + namespace protobuf { + + type FileDescriptorSet$Properties = { + file?: google.protobuf.FileDescriptorProto$Properties[]; + }; + + /** + * Constructs a new FileDescriptorSet. + * @exports google.protobuf.FileDescriptorSet + * @constructor + * @param {google.protobuf.FileDescriptorSet$Properties=} [properties] Properties to set + */ + class FileDescriptorSet { + + /** + * Constructs a new FileDescriptorSet. + * @exports google.protobuf.FileDescriptorSet + * @constructor + * @param {google.protobuf.FileDescriptorSet$Properties=} [properties] Properties to set + */ + constructor(properties?: google.protobuf.FileDescriptorSet$Properties); + + /** + * FileDescriptorSet file. + * @type {Array.} + */ + public file: google.protobuf.FileDescriptorProto$Properties[]; + + /** + * Creates a new FileDescriptorSet instance using the specified properties. + * @param {google.protobuf.FileDescriptorSet$Properties=} [properties] Properties to set + * @returns {google.protobuf.FileDescriptorSet} FileDescriptorSet instance + */ + public static create(properties?: google.protobuf.FileDescriptorSet$Properties): google.protobuf.FileDescriptorSet; + + /** + * Encodes the specified FileDescriptorSet message. Does not implicitly {@link google.protobuf.FileDescriptorSet.verify|verify} messages. + * @param {google.protobuf.FileDescriptorSet$Properties} message FileDescriptorSet message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: google.protobuf.FileDescriptorSet$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified FileDescriptorSet message, length delimited. Does not implicitly {@link google.protobuf.FileDescriptorSet.verify|verify} messages. + * @param {google.protobuf.FileDescriptorSet$Properties} message FileDescriptorSet message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: google.protobuf.FileDescriptorSet$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a FileDescriptorSet message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.FileDescriptorSet} FileDescriptorSet + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.FileDescriptorSet; + + /** + * Decodes a FileDescriptorSet message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.FileDescriptorSet} FileDescriptorSet + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.FileDescriptorSet; + + /** + * Verifies a FileDescriptorSet message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a FileDescriptorSet message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {google.protobuf.FileDescriptorSet} FileDescriptorSet + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.FileDescriptorSet; + + /** + * Creates a FileDescriptorSet message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link google.protobuf.FileDescriptorSet.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {google.protobuf.FileDescriptorSet} FileDescriptorSet + */ + public static from(object: { [k: string]: any }): google.protobuf.FileDescriptorSet; + + /** + * Creates a plain object from a FileDescriptorSet message. Also converts values to other types if specified. + * @param {google.protobuf.FileDescriptorSet} message FileDescriptorSet + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: google.protobuf.FileDescriptorSet, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this FileDescriptorSet message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this FileDescriptorSet to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type FileDescriptorProto$Properties = { + name?: string; + "package"?: string; + dependency?: string[]; + publicDependency?: number[]; + weakDependency?: number[]; + messageType?: google.protobuf.DescriptorProto$Properties[]; + enumType?: google.protobuf.EnumDescriptorProto$Properties[]; + service?: google.protobuf.ServiceDescriptorProto$Properties[]; + extension?: google.protobuf.FieldDescriptorProto$Properties[]; + options?: google.protobuf.FileOptions$Properties; + sourceCodeInfo?: google.protobuf.SourceCodeInfo$Properties; + syntax?: string; + }; + + /** + * Constructs a new FileDescriptorProto. + * @exports google.protobuf.FileDescriptorProto + * @constructor + * @param {google.protobuf.FileDescriptorProto$Properties=} [properties] Properties to set + */ + class FileDescriptorProto { + + /** + * Constructs a new FileDescriptorProto. + * @exports google.protobuf.FileDescriptorProto + * @constructor + * @param {google.protobuf.FileDescriptorProto$Properties=} [properties] Properties to set + */ + constructor(properties?: google.protobuf.FileDescriptorProto$Properties); + + /** + * FileDescriptorProto name. + * @type {string} + */ + public name: string; + + /** + * FileDescriptorProto package. + * @type {string} + */ + public ["package"]: string; + + /** + * FileDescriptorProto dependency. + * @type {Array.} + */ + public dependency: string[]; + + /** + * FileDescriptorProto publicDependency. + * @type {Array.} + */ + public publicDependency: number[]; + + /** + * FileDescriptorProto weakDependency. + * @type {Array.} + */ + public weakDependency: number[]; + + /** + * FileDescriptorProto messageType. + * @type {Array.} + */ + public messageType: google.protobuf.DescriptorProto$Properties[]; + + /** + * FileDescriptorProto enumType. + * @type {Array.} + */ + public enumType: google.protobuf.EnumDescriptorProto$Properties[]; + + /** + * FileDescriptorProto service. + * @type {Array.} + */ + public service: google.protobuf.ServiceDescriptorProto$Properties[]; + + /** + * FileDescriptorProto extension. + * @type {Array.} + */ + public extension: google.protobuf.FieldDescriptorProto$Properties[]; + + /** + * FileDescriptorProto options. + * @type {(google.protobuf.FileOptions$Properties|null)} + */ + public options: (google.protobuf.FileOptions$Properties|null); + + /** + * FileDescriptorProto sourceCodeInfo. + * @type {(google.protobuf.SourceCodeInfo$Properties|null)} + */ + public sourceCodeInfo: (google.protobuf.SourceCodeInfo$Properties|null); + + /** + * FileDescriptorProto syntax. + * @type {string} + */ + public syntax: string; + + /** + * Creates a new FileDescriptorProto instance using the specified properties. + * @param {google.protobuf.FileDescriptorProto$Properties=} [properties] Properties to set + * @returns {google.protobuf.FileDescriptorProto} FileDescriptorProto instance + */ + public static create(properties?: google.protobuf.FileDescriptorProto$Properties): google.protobuf.FileDescriptorProto; + + /** + * Encodes the specified FileDescriptorProto message. Does not implicitly {@link google.protobuf.FileDescriptorProto.verify|verify} messages. + * @param {google.protobuf.FileDescriptorProto$Properties} message FileDescriptorProto message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: google.protobuf.FileDescriptorProto$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified FileDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.FileDescriptorProto.verify|verify} messages. + * @param {google.protobuf.FileDescriptorProto$Properties} message FileDescriptorProto message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: google.protobuf.FileDescriptorProto$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a FileDescriptorProto message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.FileDescriptorProto} FileDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.FileDescriptorProto; + + /** + * Decodes a FileDescriptorProto message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.FileDescriptorProto} FileDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.FileDescriptorProto; + + /** + * Verifies a FileDescriptorProto message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a FileDescriptorProto message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {google.protobuf.FileDescriptorProto} FileDescriptorProto + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.FileDescriptorProto; + + /** + * Creates a FileDescriptorProto message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link google.protobuf.FileDescriptorProto.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {google.protobuf.FileDescriptorProto} FileDescriptorProto + */ + public static from(object: { [k: string]: any }): google.protobuf.FileDescriptorProto; + + /** + * Creates a plain object from a FileDescriptorProto message. Also converts values to other types if specified. + * @param {google.protobuf.FileDescriptorProto} message FileDescriptorProto + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: google.protobuf.FileDescriptorProto, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this FileDescriptorProto message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this FileDescriptorProto to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type DescriptorProto$Properties = { + name?: string; + field?: google.protobuf.FieldDescriptorProto$Properties[]; + extension?: google.protobuf.FieldDescriptorProto$Properties[]; + nestedType?: google.protobuf.DescriptorProto$Properties[]; + enumType?: google.protobuf.EnumDescriptorProto$Properties[]; + extensionRange?: google.protobuf.DescriptorProto.ExtensionRange$Properties[]; + oneofDecl?: google.protobuf.OneofDescriptorProto$Properties[]; + options?: google.protobuf.MessageOptions$Properties; + reservedRange?: google.protobuf.DescriptorProto.ReservedRange$Properties[]; + reservedName?: string[]; + }; + + /** + * Constructs a new DescriptorProto. + * @exports google.protobuf.DescriptorProto + * @constructor + * @param {google.protobuf.DescriptorProto$Properties=} [properties] Properties to set + */ + class DescriptorProto { + + /** + * Constructs a new DescriptorProto. + * @exports google.protobuf.DescriptorProto + * @constructor + * @param {google.protobuf.DescriptorProto$Properties=} [properties] Properties to set + */ + constructor(properties?: google.protobuf.DescriptorProto$Properties); + + /** + * DescriptorProto name. + * @type {string} + */ + public name: string; + + /** + * DescriptorProto field. + * @type {Array.} + */ + public field: google.protobuf.FieldDescriptorProto$Properties[]; + + /** + * DescriptorProto extension. + * @type {Array.} + */ + public extension: google.protobuf.FieldDescriptorProto$Properties[]; + + /** + * DescriptorProto nestedType. + * @type {Array.} + */ + public nestedType: google.protobuf.DescriptorProto$Properties[]; + + /** + * DescriptorProto enumType. + * @type {Array.} + */ + public enumType: google.protobuf.EnumDescriptorProto$Properties[]; + + /** + * DescriptorProto extensionRange. + * @type {Array.} + */ + public extensionRange: google.protobuf.DescriptorProto.ExtensionRange$Properties[]; + + /** + * DescriptorProto oneofDecl. + * @type {Array.} + */ + public oneofDecl: google.protobuf.OneofDescriptorProto$Properties[]; + + /** + * DescriptorProto options. + * @type {(google.protobuf.MessageOptions$Properties|null)} + */ + public options: (google.protobuf.MessageOptions$Properties|null); + + /** + * DescriptorProto reservedRange. + * @type {Array.} + */ + public reservedRange: google.protobuf.DescriptorProto.ReservedRange$Properties[]; + + /** + * DescriptorProto reservedName. + * @type {Array.} + */ + public reservedName: string[]; + + /** + * Creates a new DescriptorProto instance using the specified properties. + * @param {google.protobuf.DescriptorProto$Properties=} [properties] Properties to set + * @returns {google.protobuf.DescriptorProto} DescriptorProto instance + */ + public static create(properties?: google.protobuf.DescriptorProto$Properties): google.protobuf.DescriptorProto; + + /** + * Encodes the specified DescriptorProto message. Does not implicitly {@link google.protobuf.DescriptorProto.verify|verify} messages. + * @param {google.protobuf.DescriptorProto$Properties} message DescriptorProto message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: google.protobuf.DescriptorProto$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified DescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.DescriptorProto.verify|verify} messages. + * @param {google.protobuf.DescriptorProto$Properties} message DescriptorProto message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: google.protobuf.DescriptorProto$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a DescriptorProto message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.DescriptorProto} DescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.DescriptorProto; + + /** + * Decodes a DescriptorProto message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.DescriptorProto} DescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.DescriptorProto; + + /** + * Verifies a DescriptorProto message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a DescriptorProto message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {google.protobuf.DescriptorProto} DescriptorProto + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.DescriptorProto; + + /** + * Creates a DescriptorProto message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link google.protobuf.DescriptorProto.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {google.protobuf.DescriptorProto} DescriptorProto + */ + public static from(object: { [k: string]: any }): google.protobuf.DescriptorProto; + + /** + * Creates a plain object from a DescriptorProto message. Also converts values to other types if specified. + * @param {google.protobuf.DescriptorProto} message DescriptorProto + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: google.protobuf.DescriptorProto, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this DescriptorProto message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this DescriptorProto to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + namespace DescriptorProto { + + type ExtensionRange$Properties = { + start?: number; + end?: number; + }; + + /** + * Constructs a new ExtensionRange. + * @exports google.protobuf.DescriptorProto.ExtensionRange + * @constructor + * @param {google.protobuf.DescriptorProto.ExtensionRange$Properties=} [properties] Properties to set + */ + class ExtensionRange { + + /** + * Constructs a new ExtensionRange. + * @exports google.protobuf.DescriptorProto.ExtensionRange + * @constructor + * @param {google.protobuf.DescriptorProto.ExtensionRange$Properties=} [properties] Properties to set + */ + constructor(properties?: google.protobuf.DescriptorProto.ExtensionRange$Properties); + + /** + * ExtensionRange start. + * @type {number} + */ + public start: number; + + /** + * ExtensionRange end. + * @type {number} + */ + public end: number; + + /** + * Creates a new ExtensionRange instance using the specified properties. + * @param {google.protobuf.DescriptorProto.ExtensionRange$Properties=} [properties] Properties to set + * @returns {google.protobuf.DescriptorProto.ExtensionRange} ExtensionRange instance + */ + public static create(properties?: google.protobuf.DescriptorProto.ExtensionRange$Properties): google.protobuf.DescriptorProto.ExtensionRange; + + /** + * Encodes the specified ExtensionRange message. Does not implicitly {@link google.protobuf.DescriptorProto.ExtensionRange.verify|verify} messages. + * @param {google.protobuf.DescriptorProto.ExtensionRange$Properties} message ExtensionRange message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: google.protobuf.DescriptorProto.ExtensionRange$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified ExtensionRange message, length delimited. Does not implicitly {@link google.protobuf.DescriptorProto.ExtensionRange.verify|verify} messages. + * @param {google.protobuf.DescriptorProto.ExtensionRange$Properties} message ExtensionRange message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: google.protobuf.DescriptorProto.ExtensionRange$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an ExtensionRange message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.DescriptorProto.ExtensionRange} ExtensionRange + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.DescriptorProto.ExtensionRange; + + /** + * Decodes an ExtensionRange message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.DescriptorProto.ExtensionRange} ExtensionRange + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.DescriptorProto.ExtensionRange; + + /** + * Verifies an ExtensionRange message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates an ExtensionRange message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {google.protobuf.DescriptorProto.ExtensionRange} ExtensionRange + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.DescriptorProto.ExtensionRange; + + /** + * Creates an ExtensionRange message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link google.protobuf.DescriptorProto.ExtensionRange.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {google.protobuf.DescriptorProto.ExtensionRange} ExtensionRange + */ + public static from(object: { [k: string]: any }): google.protobuf.DescriptorProto.ExtensionRange; + + /** + * Creates a plain object from an ExtensionRange message. Also converts values to other types if specified. + * @param {google.protobuf.DescriptorProto.ExtensionRange} message ExtensionRange + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: google.protobuf.DescriptorProto.ExtensionRange, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this ExtensionRange message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this ExtensionRange to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type ReservedRange$Properties = { + start?: number; + end?: number; + }; + + /** + * Constructs a new ReservedRange. + * @exports google.protobuf.DescriptorProto.ReservedRange + * @constructor + * @param {google.protobuf.DescriptorProto.ReservedRange$Properties=} [properties] Properties to set + */ + class ReservedRange { + + /** + * Constructs a new ReservedRange. + * @exports google.protobuf.DescriptorProto.ReservedRange + * @constructor + * @param {google.protobuf.DescriptorProto.ReservedRange$Properties=} [properties] Properties to set + */ + constructor(properties?: google.protobuf.DescriptorProto.ReservedRange$Properties); + + /** + * ReservedRange start. + * @type {number} + */ + public start: number; + + /** + * ReservedRange end. + * @type {number} + */ + public end: number; + + /** + * Creates a new ReservedRange instance using the specified properties. + * @param {google.protobuf.DescriptorProto.ReservedRange$Properties=} [properties] Properties to set + * @returns {google.protobuf.DescriptorProto.ReservedRange} ReservedRange instance + */ + public static create(properties?: google.protobuf.DescriptorProto.ReservedRange$Properties): google.protobuf.DescriptorProto.ReservedRange; + + /** + * Encodes the specified ReservedRange message. Does not implicitly {@link google.protobuf.DescriptorProto.ReservedRange.verify|verify} messages. + * @param {google.protobuf.DescriptorProto.ReservedRange$Properties} message ReservedRange message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: google.protobuf.DescriptorProto.ReservedRange$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified ReservedRange message, length delimited. Does not implicitly {@link google.protobuf.DescriptorProto.ReservedRange.verify|verify} messages. + * @param {google.protobuf.DescriptorProto.ReservedRange$Properties} message ReservedRange message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: google.protobuf.DescriptorProto.ReservedRange$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a ReservedRange message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.DescriptorProto.ReservedRange} ReservedRange + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.DescriptorProto.ReservedRange; + + /** + * Decodes a ReservedRange message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.DescriptorProto.ReservedRange} ReservedRange + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.DescriptorProto.ReservedRange; + + /** + * Verifies a ReservedRange message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a ReservedRange message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {google.protobuf.DescriptorProto.ReservedRange} ReservedRange + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.DescriptorProto.ReservedRange; + + /** + * Creates a ReservedRange message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link google.protobuf.DescriptorProto.ReservedRange.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {google.protobuf.DescriptorProto.ReservedRange} ReservedRange + */ + public static from(object: { [k: string]: any }): google.protobuf.DescriptorProto.ReservedRange; + + /** + * Creates a plain object from a ReservedRange message. Also converts values to other types if specified. + * @param {google.protobuf.DescriptorProto.ReservedRange} message ReservedRange + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: google.protobuf.DescriptorProto.ReservedRange, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this ReservedRange message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this ReservedRange to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + } + + type FieldDescriptorProto$Properties = { + name?: string; + number?: number; + label?: google.protobuf.FieldDescriptorProto.Label; + type?: google.protobuf.FieldDescriptorProto.Type; + typeName?: string; + extendee?: string; + defaultValue?: string; + oneofIndex?: number; + jsonName?: string; + options?: google.protobuf.FieldOptions$Properties; + }; + + /** + * Constructs a new FieldDescriptorProto. + * @exports google.protobuf.FieldDescriptorProto + * @constructor + * @param {google.protobuf.FieldDescriptorProto$Properties=} [properties] Properties to set + */ + class FieldDescriptorProto { + + /** + * Constructs a new FieldDescriptorProto. + * @exports google.protobuf.FieldDescriptorProto + * @constructor + * @param {google.protobuf.FieldDescriptorProto$Properties=} [properties] Properties to set + */ + constructor(properties?: google.protobuf.FieldDescriptorProto$Properties); + + /** + * FieldDescriptorProto name. + * @type {string} + */ + public name: string; + + /** + * FieldDescriptorProto number. + * @type {number} + */ + public number: number; + + /** + * FieldDescriptorProto label. + * @type {google.protobuf.FieldDescriptorProto.Label} + */ + public label: google.protobuf.FieldDescriptorProto.Label; + + /** + * FieldDescriptorProto type. + * @type {google.protobuf.FieldDescriptorProto.Type} + */ + public type: google.protobuf.FieldDescriptorProto.Type; + + /** + * FieldDescriptorProto typeName. + * @type {string} + */ + public typeName: string; + + /** + * FieldDescriptorProto extendee. + * @type {string} + */ + public extendee: string; + + /** + * FieldDescriptorProto defaultValue. + * @type {string} + */ + public defaultValue: string; + + /** + * FieldDescriptorProto oneofIndex. + * @type {number} + */ + public oneofIndex: number; + + /** + * FieldDescriptorProto jsonName. + * @type {string} + */ + public jsonName: string; + + /** + * FieldDescriptorProto options. + * @type {(google.protobuf.FieldOptions$Properties|null)} + */ + public options: (google.protobuf.FieldOptions$Properties|null); + + /** + * Creates a new FieldDescriptorProto instance using the specified properties. + * @param {google.protobuf.FieldDescriptorProto$Properties=} [properties] Properties to set + * @returns {google.protobuf.FieldDescriptorProto} FieldDescriptorProto instance + */ + public static create(properties?: google.protobuf.FieldDescriptorProto$Properties): google.protobuf.FieldDescriptorProto; + + /** + * Encodes the specified FieldDescriptorProto message. Does not implicitly {@link google.protobuf.FieldDescriptorProto.verify|verify} messages. + * @param {google.protobuf.FieldDescriptorProto$Properties} message FieldDescriptorProto message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: google.protobuf.FieldDescriptorProto$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified FieldDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.FieldDescriptorProto.verify|verify} messages. + * @param {google.protobuf.FieldDescriptorProto$Properties} message FieldDescriptorProto message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: google.protobuf.FieldDescriptorProto$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a FieldDescriptorProto message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.FieldDescriptorProto} FieldDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.FieldDescriptorProto; + + /** + * Decodes a FieldDescriptorProto message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.FieldDescriptorProto} FieldDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.FieldDescriptorProto; + + /** + * Verifies a FieldDescriptorProto message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a FieldDescriptorProto message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {google.protobuf.FieldDescriptorProto} FieldDescriptorProto + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.FieldDescriptorProto; + + /** + * Creates a FieldDescriptorProto message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link google.protobuf.FieldDescriptorProto.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {google.protobuf.FieldDescriptorProto} FieldDescriptorProto + */ + public static from(object: { [k: string]: any }): google.protobuf.FieldDescriptorProto; + + /** + * Creates a plain object from a FieldDescriptorProto message. Also converts values to other types if specified. + * @param {google.protobuf.FieldDescriptorProto} message FieldDescriptorProto + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: google.protobuf.FieldDescriptorProto, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this FieldDescriptorProto message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this FieldDescriptorProto to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + namespace FieldDescriptorProto { + + /** + * Type enum. + * @name Type + * @memberof google.protobuf.FieldDescriptorProto + * @enum {number} + * @property {number} TYPE_DOUBLE=1 TYPE_DOUBLE value + * @property {number} TYPE_FLOAT=2 TYPE_FLOAT value + * @property {number} TYPE_INT64=3 TYPE_INT64 value + * @property {number} TYPE_UINT64=4 TYPE_UINT64 value + * @property {number} TYPE_INT32=5 TYPE_INT32 value + * @property {number} TYPE_FIXED64=6 TYPE_FIXED64 value + * @property {number} TYPE_FIXED32=7 TYPE_FIXED32 value + * @property {number} TYPE_BOOL=8 TYPE_BOOL value + * @property {number} TYPE_STRING=9 TYPE_STRING value + * @property {number} TYPE_GROUP=10 TYPE_GROUP value + * @property {number} TYPE_MESSAGE=11 TYPE_MESSAGE value + * @property {number} TYPE_BYTES=12 TYPE_BYTES value + * @property {number} TYPE_UINT32=13 TYPE_UINT32 value + * @property {number} TYPE_ENUM=14 TYPE_ENUM value + * @property {number} TYPE_SFIXED32=15 TYPE_SFIXED32 value + * @property {number} TYPE_SFIXED64=16 TYPE_SFIXED64 value + * @property {number} TYPE_SINT32=17 TYPE_SINT32 value + * @property {number} TYPE_SINT64=18 TYPE_SINT64 value + */ + enum Type { + TYPE_DOUBLE = 1, + TYPE_FLOAT = 2, + TYPE_INT64 = 3, + TYPE_UINT64 = 4, + TYPE_INT32 = 5, + TYPE_FIXED64 = 6, + TYPE_FIXED32 = 7, + TYPE_BOOL = 8, + TYPE_STRING = 9, + TYPE_GROUP = 10, + TYPE_MESSAGE = 11, + TYPE_BYTES = 12, + TYPE_UINT32 = 13, + TYPE_ENUM = 14, + TYPE_SFIXED32 = 15, + TYPE_SFIXED64 = 16, + TYPE_SINT32 = 17, + TYPE_SINT64 = 18 + } + + /** + * Label enum. + * @name Label + * @memberof google.protobuf.FieldDescriptorProto + * @enum {number} + * @property {number} LABEL_OPTIONAL=1 LABEL_OPTIONAL value + * @property {number} LABEL_REQUIRED=2 LABEL_REQUIRED value + * @property {number} LABEL_REPEATED=3 LABEL_REPEATED value + */ + enum Label { + LABEL_OPTIONAL = 1, + LABEL_REQUIRED = 2, + LABEL_REPEATED = 3 + } + } + + type OneofDescriptorProto$Properties = { + name?: string; + options?: google.protobuf.OneofOptions$Properties; + }; + + /** + * Constructs a new OneofDescriptorProto. + * @exports google.protobuf.OneofDescriptorProto + * @constructor + * @param {google.protobuf.OneofDescriptorProto$Properties=} [properties] Properties to set + */ + class OneofDescriptorProto { + + /** + * Constructs a new OneofDescriptorProto. + * @exports google.protobuf.OneofDescriptorProto + * @constructor + * @param {google.protobuf.OneofDescriptorProto$Properties=} [properties] Properties to set + */ + constructor(properties?: google.protobuf.OneofDescriptorProto$Properties); + + /** + * OneofDescriptorProto name. + * @type {string} + */ + public name: string; + + /** + * OneofDescriptorProto options. + * @type {(google.protobuf.OneofOptions$Properties|null)} + */ + public options: (google.protobuf.OneofOptions$Properties|null); + + /** + * Creates a new OneofDescriptorProto instance using the specified properties. + * @param {google.protobuf.OneofDescriptorProto$Properties=} [properties] Properties to set + * @returns {google.protobuf.OneofDescriptorProto} OneofDescriptorProto instance + */ + public static create(properties?: google.protobuf.OneofDescriptorProto$Properties): google.protobuf.OneofDescriptorProto; + + /** + * Encodes the specified OneofDescriptorProto message. Does not implicitly {@link google.protobuf.OneofDescriptorProto.verify|verify} messages. + * @param {google.protobuf.OneofDescriptorProto$Properties} message OneofDescriptorProto message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: google.protobuf.OneofDescriptorProto$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified OneofDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.OneofDescriptorProto.verify|verify} messages. + * @param {google.protobuf.OneofDescriptorProto$Properties} message OneofDescriptorProto message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: google.protobuf.OneofDescriptorProto$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an OneofDescriptorProto message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.OneofDescriptorProto} OneofDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.OneofDescriptorProto; + + /** + * Decodes an OneofDescriptorProto message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.OneofDescriptorProto} OneofDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.OneofDescriptorProto; + + /** + * Verifies an OneofDescriptorProto message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates an OneofDescriptorProto message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {google.protobuf.OneofDescriptorProto} OneofDescriptorProto + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.OneofDescriptorProto; + + /** + * Creates an OneofDescriptorProto message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link google.protobuf.OneofDescriptorProto.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {google.protobuf.OneofDescriptorProto} OneofDescriptorProto + */ + public static from(object: { [k: string]: any }): google.protobuf.OneofDescriptorProto; + + /** + * Creates a plain object from an OneofDescriptorProto message. Also converts values to other types if specified. + * @param {google.protobuf.OneofDescriptorProto} message OneofDescriptorProto + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: google.protobuf.OneofDescriptorProto, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this OneofDescriptorProto message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this OneofDescriptorProto to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type EnumDescriptorProto$Properties = { + name?: string; + value?: google.protobuf.EnumValueDescriptorProto$Properties[]; + options?: google.protobuf.EnumOptions$Properties; + }; + + /** + * Constructs a new EnumDescriptorProto. + * @exports google.protobuf.EnumDescriptorProto + * @constructor + * @param {google.protobuf.EnumDescriptorProto$Properties=} [properties] Properties to set + */ + class EnumDescriptorProto { + + /** + * Constructs a new EnumDescriptorProto. + * @exports google.protobuf.EnumDescriptorProto + * @constructor + * @param {google.protobuf.EnumDescriptorProto$Properties=} [properties] Properties to set + */ + constructor(properties?: google.protobuf.EnumDescriptorProto$Properties); + + /** + * EnumDescriptorProto name. + * @type {string} + */ + public name: string; + + /** + * EnumDescriptorProto value. + * @type {Array.} + */ + public value: google.protobuf.EnumValueDescriptorProto$Properties[]; + + /** + * EnumDescriptorProto options. + * @type {(google.protobuf.EnumOptions$Properties|null)} + */ + public options: (google.protobuf.EnumOptions$Properties|null); + + /** + * Creates a new EnumDescriptorProto instance using the specified properties. + * @param {google.protobuf.EnumDescriptorProto$Properties=} [properties] Properties to set + * @returns {google.protobuf.EnumDescriptorProto} EnumDescriptorProto instance + */ + public static create(properties?: google.protobuf.EnumDescriptorProto$Properties): google.protobuf.EnumDescriptorProto; + + /** + * Encodes the specified EnumDescriptorProto message. Does not implicitly {@link google.protobuf.EnumDescriptorProto.verify|verify} messages. + * @param {google.protobuf.EnumDescriptorProto$Properties} message EnumDescriptorProto message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: google.protobuf.EnumDescriptorProto$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified EnumDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.EnumDescriptorProto.verify|verify} messages. + * @param {google.protobuf.EnumDescriptorProto$Properties} message EnumDescriptorProto message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: google.protobuf.EnumDescriptorProto$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an EnumDescriptorProto message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.EnumDescriptorProto} EnumDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.EnumDescriptorProto; + + /** + * Decodes an EnumDescriptorProto message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.EnumDescriptorProto} EnumDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.EnumDescriptorProto; + + /** + * Verifies an EnumDescriptorProto message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates an EnumDescriptorProto message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {google.protobuf.EnumDescriptorProto} EnumDescriptorProto + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.EnumDescriptorProto; + + /** + * Creates an EnumDescriptorProto message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link google.protobuf.EnumDescriptorProto.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {google.protobuf.EnumDescriptorProto} EnumDescriptorProto + */ + public static from(object: { [k: string]: any }): google.protobuf.EnumDescriptorProto; + + /** + * Creates a plain object from an EnumDescriptorProto message. Also converts values to other types if specified. + * @param {google.protobuf.EnumDescriptorProto} message EnumDescriptorProto + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: google.protobuf.EnumDescriptorProto, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this EnumDescriptorProto message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this EnumDescriptorProto to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type EnumValueDescriptorProto$Properties = { + name?: string; + number?: number; + options?: google.protobuf.EnumValueOptions$Properties; + }; + + /** + * Constructs a new EnumValueDescriptorProto. + * @exports google.protobuf.EnumValueDescriptorProto + * @constructor + * @param {google.protobuf.EnumValueDescriptorProto$Properties=} [properties] Properties to set + */ + class EnumValueDescriptorProto { + + /** + * Constructs a new EnumValueDescriptorProto. + * @exports google.protobuf.EnumValueDescriptorProto + * @constructor + * @param {google.protobuf.EnumValueDescriptorProto$Properties=} [properties] Properties to set + */ + constructor(properties?: google.protobuf.EnumValueDescriptorProto$Properties); + + /** + * EnumValueDescriptorProto name. + * @type {string} + */ + public name: string; + + /** + * EnumValueDescriptorProto number. + * @type {number} + */ + public number: number; + + /** + * EnumValueDescriptorProto options. + * @type {(google.protobuf.EnumValueOptions$Properties|null)} + */ + public options: (google.protobuf.EnumValueOptions$Properties|null); + + /** + * Creates a new EnumValueDescriptorProto instance using the specified properties. + * @param {google.protobuf.EnumValueDescriptorProto$Properties=} [properties] Properties to set + * @returns {google.protobuf.EnumValueDescriptorProto} EnumValueDescriptorProto instance + */ + public static create(properties?: google.protobuf.EnumValueDescriptorProto$Properties): google.protobuf.EnumValueDescriptorProto; + + /** + * Encodes the specified EnumValueDescriptorProto message. Does not implicitly {@link google.protobuf.EnumValueDescriptorProto.verify|verify} messages. + * @param {google.protobuf.EnumValueDescriptorProto$Properties} message EnumValueDescriptorProto message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: google.protobuf.EnumValueDescriptorProto$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified EnumValueDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.EnumValueDescriptorProto.verify|verify} messages. + * @param {google.protobuf.EnumValueDescriptorProto$Properties} message EnumValueDescriptorProto message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: google.protobuf.EnumValueDescriptorProto$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an EnumValueDescriptorProto message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.EnumValueDescriptorProto} EnumValueDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.EnumValueDescriptorProto; + + /** + * Decodes an EnumValueDescriptorProto message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.EnumValueDescriptorProto} EnumValueDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.EnumValueDescriptorProto; + + /** + * Verifies an EnumValueDescriptorProto message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates an EnumValueDescriptorProto message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {google.protobuf.EnumValueDescriptorProto} EnumValueDescriptorProto + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.EnumValueDescriptorProto; + + /** + * Creates an EnumValueDescriptorProto message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link google.protobuf.EnumValueDescriptorProto.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {google.protobuf.EnumValueDescriptorProto} EnumValueDescriptorProto + */ + public static from(object: { [k: string]: any }): google.protobuf.EnumValueDescriptorProto; + + /** + * Creates a plain object from an EnumValueDescriptorProto message. Also converts values to other types if specified. + * @param {google.protobuf.EnumValueDescriptorProto} message EnumValueDescriptorProto + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: google.protobuf.EnumValueDescriptorProto, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this EnumValueDescriptorProto message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this EnumValueDescriptorProto to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type ServiceDescriptorProto$Properties = { + name?: string; + method?: google.protobuf.MethodDescriptorProto$Properties[]; + options?: google.protobuf.ServiceOptions$Properties; + }; + + /** + * Constructs a new ServiceDescriptorProto. + * @exports google.protobuf.ServiceDescriptorProto + * @constructor + * @param {google.protobuf.ServiceDescriptorProto$Properties=} [properties] Properties to set + */ + class ServiceDescriptorProto { + + /** + * Constructs a new ServiceDescriptorProto. + * @exports google.protobuf.ServiceDescriptorProto + * @constructor + * @param {google.protobuf.ServiceDescriptorProto$Properties=} [properties] Properties to set + */ + constructor(properties?: google.protobuf.ServiceDescriptorProto$Properties); + + /** + * ServiceDescriptorProto name. + * @type {string} + */ + public name: string; + + /** + * ServiceDescriptorProto method. + * @type {Array.} + */ + public method: google.protobuf.MethodDescriptorProto$Properties[]; + + /** + * ServiceDescriptorProto options. + * @type {(google.protobuf.ServiceOptions$Properties|null)} + */ + public options: (google.protobuf.ServiceOptions$Properties|null); + + /** + * Creates a new ServiceDescriptorProto instance using the specified properties. + * @param {google.protobuf.ServiceDescriptorProto$Properties=} [properties] Properties to set + * @returns {google.protobuf.ServiceDescriptorProto} ServiceDescriptorProto instance + */ + public static create(properties?: google.protobuf.ServiceDescriptorProto$Properties): google.protobuf.ServiceDescriptorProto; + + /** + * Encodes the specified ServiceDescriptorProto message. Does not implicitly {@link google.protobuf.ServiceDescriptorProto.verify|verify} messages. + * @param {google.protobuf.ServiceDescriptorProto$Properties} message ServiceDescriptorProto message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: google.protobuf.ServiceDescriptorProto$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified ServiceDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.ServiceDescriptorProto.verify|verify} messages. + * @param {google.protobuf.ServiceDescriptorProto$Properties} message ServiceDescriptorProto message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: google.protobuf.ServiceDescriptorProto$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a ServiceDescriptorProto message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.ServiceDescriptorProto} ServiceDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.ServiceDescriptorProto; + + /** + * Decodes a ServiceDescriptorProto message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.ServiceDescriptorProto} ServiceDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.ServiceDescriptorProto; + + /** + * Verifies a ServiceDescriptorProto message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a ServiceDescriptorProto message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {google.protobuf.ServiceDescriptorProto} ServiceDescriptorProto + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.ServiceDescriptorProto; + + /** + * Creates a ServiceDescriptorProto message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link google.protobuf.ServiceDescriptorProto.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {google.protobuf.ServiceDescriptorProto} ServiceDescriptorProto + */ + public static from(object: { [k: string]: any }): google.protobuf.ServiceDescriptorProto; + + /** + * Creates a plain object from a ServiceDescriptorProto message. Also converts values to other types if specified. + * @param {google.protobuf.ServiceDescriptorProto} message ServiceDescriptorProto + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: google.protobuf.ServiceDescriptorProto, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this ServiceDescriptorProto message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this ServiceDescriptorProto to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type MethodDescriptorProto$Properties = { + name?: string; + inputType?: string; + outputType?: string; + options?: google.protobuf.MethodOptions$Properties; + clientStreaming?: boolean; + serverStreaming?: boolean; + }; + + /** + * Constructs a new MethodDescriptorProto. + * @exports google.protobuf.MethodDescriptorProto + * @constructor + * @param {google.protobuf.MethodDescriptorProto$Properties=} [properties] Properties to set + */ + class MethodDescriptorProto { + + /** + * Constructs a new MethodDescriptorProto. + * @exports google.protobuf.MethodDescriptorProto + * @constructor + * @param {google.protobuf.MethodDescriptorProto$Properties=} [properties] Properties to set + */ + constructor(properties?: google.protobuf.MethodDescriptorProto$Properties); + + /** + * MethodDescriptorProto name. + * @type {string} + */ + public name: string; + + /** + * MethodDescriptorProto inputType. + * @type {string} + */ + public inputType: string; + + /** + * MethodDescriptorProto outputType. + * @type {string} + */ + public outputType: string; + + /** + * MethodDescriptorProto options. + * @type {(google.protobuf.MethodOptions$Properties|null)} + */ + public options: (google.protobuf.MethodOptions$Properties|null); + + /** + * MethodDescriptorProto clientStreaming. + * @type {boolean} + */ + public clientStreaming: boolean; + + /** + * MethodDescriptorProto serverStreaming. + * @type {boolean} + */ + public serverStreaming: boolean; + + /** + * Creates a new MethodDescriptorProto instance using the specified properties. + * @param {google.protobuf.MethodDescriptorProto$Properties=} [properties] Properties to set + * @returns {google.protobuf.MethodDescriptorProto} MethodDescriptorProto instance + */ + public static create(properties?: google.protobuf.MethodDescriptorProto$Properties): google.protobuf.MethodDescriptorProto; + + /** + * Encodes the specified MethodDescriptorProto message. Does not implicitly {@link google.protobuf.MethodDescriptorProto.verify|verify} messages. + * @param {google.protobuf.MethodDescriptorProto$Properties} message MethodDescriptorProto message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: google.protobuf.MethodDescriptorProto$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified MethodDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.MethodDescriptorProto.verify|verify} messages. + * @param {google.protobuf.MethodDescriptorProto$Properties} message MethodDescriptorProto message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: google.protobuf.MethodDescriptorProto$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a MethodDescriptorProto message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.MethodDescriptorProto} MethodDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.MethodDescriptorProto; + + /** + * Decodes a MethodDescriptorProto message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.MethodDescriptorProto} MethodDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.MethodDescriptorProto; + + /** + * Verifies a MethodDescriptorProto message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a MethodDescriptorProto message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {google.protobuf.MethodDescriptorProto} MethodDescriptorProto + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.MethodDescriptorProto; + + /** + * Creates a MethodDescriptorProto message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link google.protobuf.MethodDescriptorProto.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {google.protobuf.MethodDescriptorProto} MethodDescriptorProto + */ + public static from(object: { [k: string]: any }): google.protobuf.MethodDescriptorProto; + + /** + * Creates a plain object from a MethodDescriptorProto message. Also converts values to other types if specified. + * @param {google.protobuf.MethodDescriptorProto} message MethodDescriptorProto + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: google.protobuf.MethodDescriptorProto, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this MethodDescriptorProto message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this MethodDescriptorProto to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type FileOptions$Properties = { + javaPackage?: string; + javaOuterClassname?: string; + javaMultipleFiles?: boolean; + javaGenerateEqualsAndHash?: boolean; + javaStringCheckUtf8?: boolean; + optimizeFor?: google.protobuf.FileOptions.OptimizeMode; + goPackage?: string; + ccGenericServices?: boolean; + javaGenericServices?: boolean; + pyGenericServices?: boolean; + deprecated?: boolean; + ccEnableArenas?: boolean; + objcClassPrefix?: string; + csharpNamespace?: string; + uninterpretedOption?: google.protobuf.UninterpretedOption$Properties[]; + }; + + /** + * Constructs a new FileOptions. + * @exports google.protobuf.FileOptions + * @constructor + * @param {google.protobuf.FileOptions$Properties=} [properties] Properties to set + */ + class FileOptions { + + /** + * Constructs a new FileOptions. + * @exports google.protobuf.FileOptions + * @constructor + * @param {google.protobuf.FileOptions$Properties=} [properties] Properties to set + */ + constructor(properties?: google.protobuf.FileOptions$Properties); + + /** + * FileOptions javaPackage. + * @type {string} + */ + public javaPackage: string; + + /** + * FileOptions javaOuterClassname. + * @type {string} + */ + public javaOuterClassname: string; + + /** + * FileOptions javaMultipleFiles. + * @type {boolean} + */ + public javaMultipleFiles: boolean; + + /** + * FileOptions javaGenerateEqualsAndHash. + * @type {boolean} + */ + public javaGenerateEqualsAndHash: boolean; + + /** + * FileOptions javaStringCheckUtf8. + * @type {boolean} + */ + public javaStringCheckUtf8: boolean; + + /** + * FileOptions optimizeFor. + * @type {google.protobuf.FileOptions.OptimizeMode} + */ + public optimizeFor: google.protobuf.FileOptions.OptimizeMode; + + /** + * FileOptions goPackage. + * @type {string} + */ + public goPackage: string; + + /** + * FileOptions ccGenericServices. + * @type {boolean} + */ + public ccGenericServices: boolean; + + /** + * FileOptions javaGenericServices. + * @type {boolean} + */ + public javaGenericServices: boolean; + + /** + * FileOptions pyGenericServices. + * @type {boolean} + */ + public pyGenericServices: boolean; + + /** + * FileOptions deprecated. + * @type {boolean} + */ + public deprecated: boolean; + + /** + * FileOptions ccEnableArenas. + * @type {boolean} + */ + public ccEnableArenas: boolean; + + /** + * FileOptions objcClassPrefix. + * @type {string} + */ + public objcClassPrefix: string; + + /** + * FileOptions csharpNamespace. + * @type {string} + */ + public csharpNamespace: string; + + /** + * FileOptions uninterpretedOption. + * @type {Array.} + */ + public uninterpretedOption: google.protobuf.UninterpretedOption$Properties[]; + + /** + * Creates a new FileOptions instance using the specified properties. + * @param {google.protobuf.FileOptions$Properties=} [properties] Properties to set + * @returns {google.protobuf.FileOptions} FileOptions instance + */ + public static create(properties?: google.protobuf.FileOptions$Properties): google.protobuf.FileOptions; + + /** + * Encodes the specified FileOptions message. Does not implicitly {@link google.protobuf.FileOptions.verify|verify} messages. + * @param {google.protobuf.FileOptions$Properties} message FileOptions message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: google.protobuf.FileOptions$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified FileOptions message, length delimited. Does not implicitly {@link google.protobuf.FileOptions.verify|verify} messages. + * @param {google.protobuf.FileOptions$Properties} message FileOptions message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: google.protobuf.FileOptions$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a FileOptions message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.FileOptions} FileOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.FileOptions; + + /** + * Decodes a FileOptions message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.FileOptions} FileOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.FileOptions; + + /** + * Verifies a FileOptions message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a FileOptions message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {google.protobuf.FileOptions} FileOptions + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.FileOptions; + + /** + * Creates a FileOptions message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link google.protobuf.FileOptions.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {google.protobuf.FileOptions} FileOptions + */ + public static from(object: { [k: string]: any }): google.protobuf.FileOptions; + + /** + * Creates a plain object from a FileOptions message. Also converts values to other types if specified. + * @param {google.protobuf.FileOptions} message FileOptions + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: google.protobuf.FileOptions, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this FileOptions message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this FileOptions to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + namespace FileOptions { + + /** + * OptimizeMode enum. + * @name OptimizeMode + * @memberof google.protobuf.FileOptions + * @enum {number} + * @property {number} SPEED=1 SPEED value + * @property {number} CODE_SIZE=2 CODE_SIZE value + * @property {number} LITE_RUNTIME=3 LITE_RUNTIME value + */ + enum OptimizeMode { + SPEED = 1, + CODE_SIZE = 2, + LITE_RUNTIME = 3 + } + } + + type MessageOptions$Properties = { + messageSetWireFormat?: boolean; + noStandardDescriptorAccessor?: boolean; + deprecated?: boolean; + mapEntry?: boolean; + uninterpretedOption?: google.protobuf.UninterpretedOption$Properties[]; + }; + + /** + * Constructs a new MessageOptions. + * @exports google.protobuf.MessageOptions + * @constructor + * @param {google.protobuf.MessageOptions$Properties=} [properties] Properties to set + */ + class MessageOptions { + + /** + * Constructs a new MessageOptions. + * @exports google.protobuf.MessageOptions + * @constructor + * @param {google.protobuf.MessageOptions$Properties=} [properties] Properties to set + */ + constructor(properties?: google.protobuf.MessageOptions$Properties); + + /** + * MessageOptions messageSetWireFormat. + * @type {boolean} + */ + public messageSetWireFormat: boolean; + + /** + * MessageOptions noStandardDescriptorAccessor. + * @type {boolean} + */ + public noStandardDescriptorAccessor: boolean; + + /** + * MessageOptions deprecated. + * @type {boolean} + */ + public deprecated: boolean; + + /** + * MessageOptions mapEntry. + * @type {boolean} + */ + public mapEntry: boolean; + + /** + * MessageOptions uninterpretedOption. + * @type {Array.} + */ + public uninterpretedOption: google.protobuf.UninterpretedOption$Properties[]; + + /** + * Creates a new MessageOptions instance using the specified properties. + * @param {google.protobuf.MessageOptions$Properties=} [properties] Properties to set + * @returns {google.protobuf.MessageOptions} MessageOptions instance + */ + public static create(properties?: google.protobuf.MessageOptions$Properties): google.protobuf.MessageOptions; + + /** + * Encodes the specified MessageOptions message. Does not implicitly {@link google.protobuf.MessageOptions.verify|verify} messages. + * @param {google.protobuf.MessageOptions$Properties} message MessageOptions message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: google.protobuf.MessageOptions$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified MessageOptions message, length delimited. Does not implicitly {@link google.protobuf.MessageOptions.verify|verify} messages. + * @param {google.protobuf.MessageOptions$Properties} message MessageOptions message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: google.protobuf.MessageOptions$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a MessageOptions message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.MessageOptions} MessageOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.MessageOptions; + + /** + * Decodes a MessageOptions message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.MessageOptions} MessageOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.MessageOptions; + + /** + * Verifies a MessageOptions message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a MessageOptions message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {google.protobuf.MessageOptions} MessageOptions + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.MessageOptions; + + /** + * Creates a MessageOptions message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link google.protobuf.MessageOptions.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {google.protobuf.MessageOptions} MessageOptions + */ + public static from(object: { [k: string]: any }): google.protobuf.MessageOptions; + + /** + * Creates a plain object from a MessageOptions message. Also converts values to other types if specified. + * @param {google.protobuf.MessageOptions} message MessageOptions + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: google.protobuf.MessageOptions, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this MessageOptions message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this MessageOptions to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type FieldOptions$Properties = { + ctype?: google.protobuf.FieldOptions.CType; + packed?: boolean; + jstype?: google.protobuf.FieldOptions.JSType; + lazy?: boolean; + deprecated?: boolean; + weak?: boolean; + uninterpretedOption?: google.protobuf.UninterpretedOption$Properties[]; + ".pointer"?: PointerType; + ".arraySize"?: number; + }; + + /** + * Constructs a new FieldOptions. + * @exports google.protobuf.FieldOptions + * @constructor + * @param {google.protobuf.FieldOptions$Properties=} [properties] Properties to set + */ + class FieldOptions { + + /** + * Constructs a new FieldOptions. + * @exports google.protobuf.FieldOptions + * @constructor + * @param {google.protobuf.FieldOptions$Properties=} [properties] Properties to set + */ + constructor(properties?: google.protobuf.FieldOptions$Properties); + + /** + * FieldOptions ctype. + * @type {google.protobuf.FieldOptions.CType} + */ + public ctype: google.protobuf.FieldOptions.CType; + + /** + * FieldOptions packed. + * @type {boolean} + */ + public packed: boolean; + + /** + * FieldOptions jstype. + * @type {google.protobuf.FieldOptions.JSType} + */ + public jstype: google.protobuf.FieldOptions.JSType; + + /** + * FieldOptions lazy. + * @type {boolean} + */ + public lazy: boolean; + + /** + * FieldOptions deprecated. + * @type {boolean} + */ + public deprecated: boolean; + + /** + * FieldOptions weak. + * @type {boolean} + */ + public weak: boolean; + + /** + * FieldOptions uninterpretedOption. + * @type {Array.} + */ + public uninterpretedOption: google.protobuf.UninterpretedOption$Properties[]; + + /** + * FieldOptions .pointer. + * @type {PointerType} + */ + public [".pointer"]: PointerType; + + /** + * FieldOptions .arraySize. + * @type {number} + */ + public [".arraySize"]: number; + + /** + * Creates a new FieldOptions instance using the specified properties. + * @param {google.protobuf.FieldOptions$Properties=} [properties] Properties to set + * @returns {google.protobuf.FieldOptions} FieldOptions instance + */ + public static create(properties?: google.protobuf.FieldOptions$Properties): google.protobuf.FieldOptions; + + /** + * Encodes the specified FieldOptions message. Does not implicitly {@link google.protobuf.FieldOptions.verify|verify} messages. + * @param {google.protobuf.FieldOptions$Properties} message FieldOptions message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: google.protobuf.FieldOptions$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified FieldOptions message, length delimited. Does not implicitly {@link google.protobuf.FieldOptions.verify|verify} messages. + * @param {google.protobuf.FieldOptions$Properties} message FieldOptions message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: google.protobuf.FieldOptions$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a FieldOptions message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.FieldOptions} FieldOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.FieldOptions; + + /** + * Decodes a FieldOptions message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.FieldOptions} FieldOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.FieldOptions; + + /** + * Verifies a FieldOptions message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a FieldOptions message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {google.protobuf.FieldOptions} FieldOptions + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.FieldOptions; + + /** + * Creates a FieldOptions message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link google.protobuf.FieldOptions.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {google.protobuf.FieldOptions} FieldOptions + */ + public static from(object: { [k: string]: any }): google.protobuf.FieldOptions; + + /** + * Creates a plain object from a FieldOptions message. Also converts values to other types if specified. + * @param {google.protobuf.FieldOptions} message FieldOptions + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: google.protobuf.FieldOptions, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this FieldOptions message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this FieldOptions to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + namespace FieldOptions { + + /** + * CType enum. + * @name CType + * @memberof google.protobuf.FieldOptions + * @enum {number} + * @property {number} STRING=0 STRING value + * @property {number} CORD=1 CORD value + * @property {number} STRING_PIECE=2 STRING_PIECE value + */ + enum CType { + STRING = 0, + CORD = 1, + STRING_PIECE = 2 + } + + /** + * JSType enum. + * @name JSType + * @memberof google.protobuf.FieldOptions + * @enum {number} + * @property {number} JS_NORMAL=0 JS_NORMAL value + * @property {number} JS_STRING=1 JS_STRING value + * @property {number} JS_NUMBER=2 JS_NUMBER value + */ + enum JSType { + JS_NORMAL = 0, + JS_STRING = 1, + JS_NUMBER = 2 + } + } + + type OneofOptions$Properties = { + uninterpretedOption?: google.protobuf.UninterpretedOption$Properties[]; + }; + + /** + * Constructs a new OneofOptions. + * @exports google.protobuf.OneofOptions + * @constructor + * @param {google.protobuf.OneofOptions$Properties=} [properties] Properties to set + */ + class OneofOptions { + + /** + * Constructs a new OneofOptions. + * @exports google.protobuf.OneofOptions + * @constructor + * @param {google.protobuf.OneofOptions$Properties=} [properties] Properties to set + */ + constructor(properties?: google.protobuf.OneofOptions$Properties); + + /** + * OneofOptions uninterpretedOption. + * @type {Array.} + */ + public uninterpretedOption: google.protobuf.UninterpretedOption$Properties[]; + + /** + * Creates a new OneofOptions instance using the specified properties. + * @param {google.protobuf.OneofOptions$Properties=} [properties] Properties to set + * @returns {google.protobuf.OneofOptions} OneofOptions instance + */ + public static create(properties?: google.protobuf.OneofOptions$Properties): google.protobuf.OneofOptions; + + /** + * Encodes the specified OneofOptions message. Does not implicitly {@link google.protobuf.OneofOptions.verify|verify} messages. + * @param {google.protobuf.OneofOptions$Properties} message OneofOptions message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: google.protobuf.OneofOptions$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified OneofOptions message, length delimited. Does not implicitly {@link google.protobuf.OneofOptions.verify|verify} messages. + * @param {google.protobuf.OneofOptions$Properties} message OneofOptions message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: google.protobuf.OneofOptions$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an OneofOptions message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.OneofOptions} OneofOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.OneofOptions; + + /** + * Decodes an OneofOptions message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.OneofOptions} OneofOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.OneofOptions; + + /** + * Verifies an OneofOptions message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates an OneofOptions message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {google.protobuf.OneofOptions} OneofOptions + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.OneofOptions; + + /** + * Creates an OneofOptions message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link google.protobuf.OneofOptions.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {google.protobuf.OneofOptions} OneofOptions + */ + public static from(object: { [k: string]: any }): google.protobuf.OneofOptions; + + /** + * Creates a plain object from an OneofOptions message. Also converts values to other types if specified. + * @param {google.protobuf.OneofOptions} message OneofOptions + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: google.protobuf.OneofOptions, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this OneofOptions message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this OneofOptions to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type EnumOptions$Properties = { + allowAlias?: boolean; + deprecated?: boolean; + uninterpretedOption?: google.protobuf.UninterpretedOption$Properties[]; + }; + + /** + * Constructs a new EnumOptions. + * @exports google.protobuf.EnumOptions + * @constructor + * @param {google.protobuf.EnumOptions$Properties=} [properties] Properties to set + */ + class EnumOptions { + + /** + * Constructs a new EnumOptions. + * @exports google.protobuf.EnumOptions + * @constructor + * @param {google.protobuf.EnumOptions$Properties=} [properties] Properties to set + */ + constructor(properties?: google.protobuf.EnumOptions$Properties); + + /** + * EnumOptions allowAlias. + * @type {boolean} + */ + public allowAlias: boolean; + + /** + * EnumOptions deprecated. + * @type {boolean} + */ + public deprecated: boolean; + + /** + * EnumOptions uninterpretedOption. + * @type {Array.} + */ + public uninterpretedOption: google.protobuf.UninterpretedOption$Properties[]; + + /** + * Creates a new EnumOptions instance using the specified properties. + * @param {google.protobuf.EnumOptions$Properties=} [properties] Properties to set + * @returns {google.protobuf.EnumOptions} EnumOptions instance + */ + public static create(properties?: google.protobuf.EnumOptions$Properties): google.protobuf.EnumOptions; + + /** + * Encodes the specified EnumOptions message. Does not implicitly {@link google.protobuf.EnumOptions.verify|verify} messages. + * @param {google.protobuf.EnumOptions$Properties} message EnumOptions message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: google.protobuf.EnumOptions$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified EnumOptions message, length delimited. Does not implicitly {@link google.protobuf.EnumOptions.verify|verify} messages. + * @param {google.protobuf.EnumOptions$Properties} message EnumOptions message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: google.protobuf.EnumOptions$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an EnumOptions message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.EnumOptions} EnumOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.EnumOptions; + + /** + * Decodes an EnumOptions message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.EnumOptions} EnumOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.EnumOptions; + + /** + * Verifies an EnumOptions message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates an EnumOptions message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {google.protobuf.EnumOptions} EnumOptions + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.EnumOptions; + + /** + * Creates an EnumOptions message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link google.protobuf.EnumOptions.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {google.protobuf.EnumOptions} EnumOptions + */ + public static from(object: { [k: string]: any }): google.protobuf.EnumOptions; + + /** + * Creates a plain object from an EnumOptions message. Also converts values to other types if specified. + * @param {google.protobuf.EnumOptions} message EnumOptions + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: google.protobuf.EnumOptions, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this EnumOptions message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this EnumOptions to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type EnumValueOptions$Properties = { + deprecated?: boolean; + uninterpretedOption?: google.protobuf.UninterpretedOption$Properties[]; + }; + + /** + * Constructs a new EnumValueOptions. + * @exports google.protobuf.EnumValueOptions + * @constructor + * @param {google.protobuf.EnumValueOptions$Properties=} [properties] Properties to set + */ + class EnumValueOptions { + + /** + * Constructs a new EnumValueOptions. + * @exports google.protobuf.EnumValueOptions + * @constructor + * @param {google.protobuf.EnumValueOptions$Properties=} [properties] Properties to set + */ + constructor(properties?: google.protobuf.EnumValueOptions$Properties); + + /** + * EnumValueOptions deprecated. + * @type {boolean} + */ + public deprecated: boolean; + + /** + * EnumValueOptions uninterpretedOption. + * @type {Array.} + */ + public uninterpretedOption: google.protobuf.UninterpretedOption$Properties[]; + + /** + * Creates a new EnumValueOptions instance using the specified properties. + * @param {google.protobuf.EnumValueOptions$Properties=} [properties] Properties to set + * @returns {google.protobuf.EnumValueOptions} EnumValueOptions instance + */ + public static create(properties?: google.protobuf.EnumValueOptions$Properties): google.protobuf.EnumValueOptions; + + /** + * Encodes the specified EnumValueOptions message. Does not implicitly {@link google.protobuf.EnumValueOptions.verify|verify} messages. + * @param {google.protobuf.EnumValueOptions$Properties} message EnumValueOptions message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: google.protobuf.EnumValueOptions$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified EnumValueOptions message, length delimited. Does not implicitly {@link google.protobuf.EnumValueOptions.verify|verify} messages. + * @param {google.protobuf.EnumValueOptions$Properties} message EnumValueOptions message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: google.protobuf.EnumValueOptions$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an EnumValueOptions message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.EnumValueOptions} EnumValueOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.EnumValueOptions; + + /** + * Decodes an EnumValueOptions message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.EnumValueOptions} EnumValueOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.EnumValueOptions; + + /** + * Verifies an EnumValueOptions message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates an EnumValueOptions message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {google.protobuf.EnumValueOptions} EnumValueOptions + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.EnumValueOptions; + + /** + * Creates an EnumValueOptions message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link google.protobuf.EnumValueOptions.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {google.protobuf.EnumValueOptions} EnumValueOptions + */ + public static from(object: { [k: string]: any }): google.protobuf.EnumValueOptions; + + /** + * Creates a plain object from an EnumValueOptions message. Also converts values to other types if specified. + * @param {google.protobuf.EnumValueOptions} message EnumValueOptions + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: google.protobuf.EnumValueOptions, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this EnumValueOptions message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this EnumValueOptions to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type ServiceOptions$Properties = { + deprecated?: boolean; + uninterpretedOption?: google.protobuf.UninterpretedOption$Properties[]; + }; + + /** + * Constructs a new ServiceOptions. + * @exports google.protobuf.ServiceOptions + * @constructor + * @param {google.protobuf.ServiceOptions$Properties=} [properties] Properties to set + */ + class ServiceOptions { + + /** + * Constructs a new ServiceOptions. + * @exports google.protobuf.ServiceOptions + * @constructor + * @param {google.protobuf.ServiceOptions$Properties=} [properties] Properties to set + */ + constructor(properties?: google.protobuf.ServiceOptions$Properties); + + /** + * ServiceOptions deprecated. + * @type {boolean} + */ + public deprecated: boolean; + + /** + * ServiceOptions uninterpretedOption. + * @type {Array.} + */ + public uninterpretedOption: google.protobuf.UninterpretedOption$Properties[]; + + /** + * Creates a new ServiceOptions instance using the specified properties. + * @param {google.protobuf.ServiceOptions$Properties=} [properties] Properties to set + * @returns {google.protobuf.ServiceOptions} ServiceOptions instance + */ + public static create(properties?: google.protobuf.ServiceOptions$Properties): google.protobuf.ServiceOptions; + + /** + * Encodes the specified ServiceOptions message. Does not implicitly {@link google.protobuf.ServiceOptions.verify|verify} messages. + * @param {google.protobuf.ServiceOptions$Properties} message ServiceOptions message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: google.protobuf.ServiceOptions$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified ServiceOptions message, length delimited. Does not implicitly {@link google.protobuf.ServiceOptions.verify|verify} messages. + * @param {google.protobuf.ServiceOptions$Properties} message ServiceOptions message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: google.protobuf.ServiceOptions$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a ServiceOptions message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.ServiceOptions} ServiceOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.ServiceOptions; + + /** + * Decodes a ServiceOptions message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.ServiceOptions} ServiceOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.ServiceOptions; + + /** + * Verifies a ServiceOptions message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a ServiceOptions message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {google.protobuf.ServiceOptions} ServiceOptions + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.ServiceOptions; + + /** + * Creates a ServiceOptions message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link google.protobuf.ServiceOptions.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {google.protobuf.ServiceOptions} ServiceOptions + */ + public static from(object: { [k: string]: any }): google.protobuf.ServiceOptions; + + /** + * Creates a plain object from a ServiceOptions message. Also converts values to other types if specified. + * @param {google.protobuf.ServiceOptions} message ServiceOptions + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: google.protobuf.ServiceOptions, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this ServiceOptions message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this ServiceOptions to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type MethodOptions$Properties = { + deprecated?: boolean; + uninterpretedOption?: google.protobuf.UninterpretedOption$Properties[]; + }; + + /** + * Constructs a new MethodOptions. + * @exports google.protobuf.MethodOptions + * @constructor + * @param {google.protobuf.MethodOptions$Properties=} [properties] Properties to set + */ + class MethodOptions { + + /** + * Constructs a new MethodOptions. + * @exports google.protobuf.MethodOptions + * @constructor + * @param {google.protobuf.MethodOptions$Properties=} [properties] Properties to set + */ + constructor(properties?: google.protobuf.MethodOptions$Properties); + + /** + * MethodOptions deprecated. + * @type {boolean} + */ + public deprecated: boolean; + + /** + * MethodOptions uninterpretedOption. + * @type {Array.} + */ + public uninterpretedOption: google.protobuf.UninterpretedOption$Properties[]; + + /** + * Creates a new MethodOptions instance using the specified properties. + * @param {google.protobuf.MethodOptions$Properties=} [properties] Properties to set + * @returns {google.protobuf.MethodOptions} MethodOptions instance + */ + public static create(properties?: google.protobuf.MethodOptions$Properties): google.protobuf.MethodOptions; + + /** + * Encodes the specified MethodOptions message. Does not implicitly {@link google.protobuf.MethodOptions.verify|verify} messages. + * @param {google.protobuf.MethodOptions$Properties} message MethodOptions message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: google.protobuf.MethodOptions$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified MethodOptions message, length delimited. Does not implicitly {@link google.protobuf.MethodOptions.verify|verify} messages. + * @param {google.protobuf.MethodOptions$Properties} message MethodOptions message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: google.protobuf.MethodOptions$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a MethodOptions message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.MethodOptions} MethodOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.MethodOptions; + + /** + * Decodes a MethodOptions message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.MethodOptions} MethodOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.MethodOptions; + + /** + * Verifies a MethodOptions message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a MethodOptions message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {google.protobuf.MethodOptions} MethodOptions + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.MethodOptions; + + /** + * Creates a MethodOptions message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link google.protobuf.MethodOptions.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {google.protobuf.MethodOptions} MethodOptions + */ + public static from(object: { [k: string]: any }): google.protobuf.MethodOptions; + + /** + * Creates a plain object from a MethodOptions message. Also converts values to other types if specified. + * @param {google.protobuf.MethodOptions} message MethodOptions + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: google.protobuf.MethodOptions, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this MethodOptions message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this MethodOptions to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type UninterpretedOption$Properties = { + name?: google.protobuf.UninterpretedOption.NamePart$Properties[]; + identifierValue?: string; + positiveIntValue?: (number|Long); + negativeIntValue?: (number|Long); + doubleValue?: number; + stringValue?: Uint8Array; + aggregateValue?: string; + }; + + /** + * Constructs a new UninterpretedOption. + * @exports google.protobuf.UninterpretedOption + * @constructor + * @param {google.protobuf.UninterpretedOption$Properties=} [properties] Properties to set + */ + class UninterpretedOption { + + /** + * Constructs a new UninterpretedOption. + * @exports google.protobuf.UninterpretedOption + * @constructor + * @param {google.protobuf.UninterpretedOption$Properties=} [properties] Properties to set + */ + constructor(properties?: google.protobuf.UninterpretedOption$Properties); + + /** + * UninterpretedOption name. + * @type {Array.} + */ + public name: google.protobuf.UninterpretedOption.NamePart$Properties[]; + + /** + * UninterpretedOption identifierValue. + * @type {string} + */ + public identifierValue: string; + + /** + * UninterpretedOption positiveIntValue. + * @type {number|Long} + */ + public positiveIntValue: (number|Long); + + /** + * UninterpretedOption negativeIntValue. + * @type {number|Long} + */ + public negativeIntValue: (number|Long); + + /** + * UninterpretedOption doubleValue. + * @type {number} + */ + public doubleValue: number; + + /** + * UninterpretedOption stringValue. + * @type {Uint8Array} + */ + public stringValue: Uint8Array; + + /** + * UninterpretedOption aggregateValue. + * @type {string} + */ + public aggregateValue: string; + + /** + * Creates a new UninterpretedOption instance using the specified properties. + * @param {google.protobuf.UninterpretedOption$Properties=} [properties] Properties to set + * @returns {google.protobuf.UninterpretedOption} UninterpretedOption instance + */ + public static create(properties?: google.protobuf.UninterpretedOption$Properties): google.protobuf.UninterpretedOption; + + /** + * Encodes the specified UninterpretedOption message. Does not implicitly {@link google.protobuf.UninterpretedOption.verify|verify} messages. + * @param {google.protobuf.UninterpretedOption$Properties} message UninterpretedOption message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: google.protobuf.UninterpretedOption$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified UninterpretedOption message, length delimited. Does not implicitly {@link google.protobuf.UninterpretedOption.verify|verify} messages. + * @param {google.protobuf.UninterpretedOption$Properties} message UninterpretedOption message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: google.protobuf.UninterpretedOption$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an UninterpretedOption message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.UninterpretedOption} UninterpretedOption + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.UninterpretedOption; + + /** + * Decodes an UninterpretedOption message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.UninterpretedOption} UninterpretedOption + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.UninterpretedOption; + + /** + * Verifies an UninterpretedOption message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates an UninterpretedOption message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {google.protobuf.UninterpretedOption} UninterpretedOption + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.UninterpretedOption; + + /** + * Creates an UninterpretedOption message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link google.protobuf.UninterpretedOption.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {google.protobuf.UninterpretedOption} UninterpretedOption + */ + public static from(object: { [k: string]: any }): google.protobuf.UninterpretedOption; + + /** + * Creates a plain object from an UninterpretedOption message. Also converts values to other types if specified. + * @param {google.protobuf.UninterpretedOption} message UninterpretedOption + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: google.protobuf.UninterpretedOption, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this UninterpretedOption message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this UninterpretedOption to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + namespace UninterpretedOption { + + type NamePart$Properties = { + namePart: string; + isExtension: boolean; + }; + + /** + * Constructs a new NamePart. + * @exports google.protobuf.UninterpretedOption.NamePart + * @constructor + * @param {google.protobuf.UninterpretedOption.NamePart$Properties=} [properties] Properties to set + */ + class NamePart { + + /** + * Constructs a new NamePart. + * @exports google.protobuf.UninterpretedOption.NamePart + * @constructor + * @param {google.protobuf.UninterpretedOption.NamePart$Properties=} [properties] Properties to set + */ + constructor(properties?: google.protobuf.UninterpretedOption.NamePart$Properties); + + /** + * NamePart namePart. + * @type {string} + */ + public namePart: string; + + /** + * NamePart isExtension. + * @type {boolean} + */ + public isExtension: boolean; + + /** + * Creates a new NamePart instance using the specified properties. + * @param {google.protobuf.UninterpretedOption.NamePart$Properties=} [properties] Properties to set + * @returns {google.protobuf.UninterpretedOption.NamePart} NamePart instance + */ + public static create(properties?: google.protobuf.UninterpretedOption.NamePart$Properties): google.protobuf.UninterpretedOption.NamePart; + + /** + * Encodes the specified NamePart message. Does not implicitly {@link google.protobuf.UninterpretedOption.NamePart.verify|verify} messages. + * @param {google.protobuf.UninterpretedOption.NamePart$Properties} message NamePart message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: google.protobuf.UninterpretedOption.NamePart$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified NamePart message, length delimited. Does not implicitly {@link google.protobuf.UninterpretedOption.NamePart.verify|verify} messages. + * @param {google.protobuf.UninterpretedOption.NamePart$Properties} message NamePart message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: google.protobuf.UninterpretedOption.NamePart$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a NamePart message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.UninterpretedOption.NamePart} NamePart + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.UninterpretedOption.NamePart; + + /** + * Decodes a NamePart message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.UninterpretedOption.NamePart} NamePart + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.UninterpretedOption.NamePart; + + /** + * Verifies a NamePart message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a NamePart message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {google.protobuf.UninterpretedOption.NamePart} NamePart + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.UninterpretedOption.NamePart; + + /** + * Creates a NamePart message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link google.protobuf.UninterpretedOption.NamePart.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {google.protobuf.UninterpretedOption.NamePart} NamePart + */ + public static from(object: { [k: string]: any }): google.protobuf.UninterpretedOption.NamePart; + + /** + * Creates a plain object from a NamePart message. Also converts values to other types if specified. + * @param {google.protobuf.UninterpretedOption.NamePart} message NamePart + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: google.protobuf.UninterpretedOption.NamePart, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this NamePart message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this NamePart to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + } + + type SourceCodeInfo$Properties = { + location?: google.protobuf.SourceCodeInfo.Location$Properties[]; + }; + + /** + * Constructs a new SourceCodeInfo. + * @exports google.protobuf.SourceCodeInfo + * @constructor + * @param {google.protobuf.SourceCodeInfo$Properties=} [properties] Properties to set + */ + class SourceCodeInfo { + + /** + * Constructs a new SourceCodeInfo. + * @exports google.protobuf.SourceCodeInfo + * @constructor + * @param {google.protobuf.SourceCodeInfo$Properties=} [properties] Properties to set + */ + constructor(properties?: google.protobuf.SourceCodeInfo$Properties); + + /** + * SourceCodeInfo location. + * @type {Array.} + */ + public location: google.protobuf.SourceCodeInfo.Location$Properties[]; + + /** + * Creates a new SourceCodeInfo instance using the specified properties. + * @param {google.protobuf.SourceCodeInfo$Properties=} [properties] Properties to set + * @returns {google.protobuf.SourceCodeInfo} SourceCodeInfo instance + */ + public static create(properties?: google.protobuf.SourceCodeInfo$Properties): google.protobuf.SourceCodeInfo; + + /** + * Encodes the specified SourceCodeInfo message. Does not implicitly {@link google.protobuf.SourceCodeInfo.verify|verify} messages. + * @param {google.protobuf.SourceCodeInfo$Properties} message SourceCodeInfo message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: google.protobuf.SourceCodeInfo$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified SourceCodeInfo message, length delimited. Does not implicitly {@link google.protobuf.SourceCodeInfo.verify|verify} messages. + * @param {google.protobuf.SourceCodeInfo$Properties} message SourceCodeInfo message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: google.protobuf.SourceCodeInfo$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a SourceCodeInfo message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.SourceCodeInfo} SourceCodeInfo + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.SourceCodeInfo; + + /** + * Decodes a SourceCodeInfo message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.SourceCodeInfo} SourceCodeInfo + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.SourceCodeInfo; + + /** + * Verifies a SourceCodeInfo message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a SourceCodeInfo message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {google.protobuf.SourceCodeInfo} SourceCodeInfo + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.SourceCodeInfo; + + /** + * Creates a SourceCodeInfo message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link google.protobuf.SourceCodeInfo.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {google.protobuf.SourceCodeInfo} SourceCodeInfo + */ + public static from(object: { [k: string]: any }): google.protobuf.SourceCodeInfo; + + /** + * Creates a plain object from a SourceCodeInfo message. Also converts values to other types if specified. + * @param {google.protobuf.SourceCodeInfo} message SourceCodeInfo + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: google.protobuf.SourceCodeInfo, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this SourceCodeInfo message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this SourceCodeInfo to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + namespace SourceCodeInfo { + + type Location$Properties = { + path?: number[]; + span?: number[]; + leadingComments?: string; + trailingComments?: string; + leadingDetachedComments?: string[]; + }; + + /** + * Constructs a new Location. + * @exports google.protobuf.SourceCodeInfo.Location + * @constructor + * @param {google.protobuf.SourceCodeInfo.Location$Properties=} [properties] Properties to set + */ + class Location { + + /** + * Constructs a new Location. + * @exports google.protobuf.SourceCodeInfo.Location + * @constructor + * @param {google.protobuf.SourceCodeInfo.Location$Properties=} [properties] Properties to set + */ + constructor(properties?: google.protobuf.SourceCodeInfo.Location$Properties); + + /** + * Location path. + * @type {Array.} + */ + public path: number[]; + + /** + * Location span. + * @type {Array.} + */ + public span: number[]; + + /** + * Location leadingComments. + * @type {string} + */ + public leadingComments: string; + + /** + * Location trailingComments. + * @type {string} + */ + public trailingComments: string; + + /** + * Location leadingDetachedComments. + * @type {Array.} + */ + public leadingDetachedComments: string[]; + + /** + * Creates a new Location instance using the specified properties. + * @param {google.protobuf.SourceCodeInfo.Location$Properties=} [properties] Properties to set + * @returns {google.protobuf.SourceCodeInfo.Location} Location instance + */ + public static create(properties?: google.protobuf.SourceCodeInfo.Location$Properties): google.protobuf.SourceCodeInfo.Location; + + /** + * Encodes the specified Location message. Does not implicitly {@link google.protobuf.SourceCodeInfo.Location.verify|verify} messages. + * @param {google.protobuf.SourceCodeInfo.Location$Properties} message Location message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: google.protobuf.SourceCodeInfo.Location$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Location message, length delimited. Does not implicitly {@link google.protobuf.SourceCodeInfo.Location.verify|verify} messages. + * @param {google.protobuf.SourceCodeInfo.Location$Properties} message Location message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: google.protobuf.SourceCodeInfo.Location$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a Location message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.SourceCodeInfo.Location} Location + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.SourceCodeInfo.Location; + + /** + * Decodes a Location message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.SourceCodeInfo.Location} Location + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.SourceCodeInfo.Location; + + /** + * Verifies a Location message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a Location message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {google.protobuf.SourceCodeInfo.Location} Location + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.SourceCodeInfo.Location; + + /** + * Creates a Location message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link google.protobuf.SourceCodeInfo.Location.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {google.protobuf.SourceCodeInfo.Location} Location + */ + public static from(object: { [k: string]: any }): google.protobuf.SourceCodeInfo.Location; + + /** + * Creates a plain object from a Location message. Also converts values to other types if specified. + * @param {google.protobuf.SourceCodeInfo.Location} message Location + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: google.protobuf.SourceCodeInfo.Location, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this Location message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this Location to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + } + + type GeneratedCodeInfo$Properties = { + annotation?: google.protobuf.GeneratedCodeInfo.Annotation$Properties[]; + }; + + /** + * Constructs a new GeneratedCodeInfo. + * @exports google.protobuf.GeneratedCodeInfo + * @constructor + * @param {google.protobuf.GeneratedCodeInfo$Properties=} [properties] Properties to set + */ + class GeneratedCodeInfo { + + /** + * Constructs a new GeneratedCodeInfo. + * @exports google.protobuf.GeneratedCodeInfo + * @constructor + * @param {google.protobuf.GeneratedCodeInfo$Properties=} [properties] Properties to set + */ + constructor(properties?: google.protobuf.GeneratedCodeInfo$Properties); + + /** + * GeneratedCodeInfo annotation. + * @type {Array.} + */ + public annotation: google.protobuf.GeneratedCodeInfo.Annotation$Properties[]; + + /** + * Creates a new GeneratedCodeInfo instance using the specified properties. + * @param {google.protobuf.GeneratedCodeInfo$Properties=} [properties] Properties to set + * @returns {google.protobuf.GeneratedCodeInfo} GeneratedCodeInfo instance + */ + public static create(properties?: google.protobuf.GeneratedCodeInfo$Properties): google.protobuf.GeneratedCodeInfo; + + /** + * Encodes the specified GeneratedCodeInfo message. Does not implicitly {@link google.protobuf.GeneratedCodeInfo.verify|verify} messages. + * @param {google.protobuf.GeneratedCodeInfo$Properties} message GeneratedCodeInfo message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: google.protobuf.GeneratedCodeInfo$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified GeneratedCodeInfo message, length delimited. Does not implicitly {@link google.protobuf.GeneratedCodeInfo.verify|verify} messages. + * @param {google.protobuf.GeneratedCodeInfo$Properties} message GeneratedCodeInfo message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: google.protobuf.GeneratedCodeInfo$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a GeneratedCodeInfo message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.GeneratedCodeInfo} GeneratedCodeInfo + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.GeneratedCodeInfo; + + /** + * Decodes a GeneratedCodeInfo message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.GeneratedCodeInfo} GeneratedCodeInfo + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.GeneratedCodeInfo; + + /** + * Verifies a GeneratedCodeInfo message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a GeneratedCodeInfo message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {google.protobuf.GeneratedCodeInfo} GeneratedCodeInfo + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.GeneratedCodeInfo; + + /** + * Creates a GeneratedCodeInfo message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link google.protobuf.GeneratedCodeInfo.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {google.protobuf.GeneratedCodeInfo} GeneratedCodeInfo + */ + public static from(object: { [k: string]: any }): google.protobuf.GeneratedCodeInfo; + + /** + * Creates a plain object from a GeneratedCodeInfo message. Also converts values to other types if specified. + * @param {google.protobuf.GeneratedCodeInfo} message GeneratedCodeInfo + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: google.protobuf.GeneratedCodeInfo, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this GeneratedCodeInfo message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this GeneratedCodeInfo to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + namespace GeneratedCodeInfo { + + type Annotation$Properties = { + path?: number[]; + sourceFile?: string; + begin?: number; + end?: number; + }; + + /** + * Constructs a new Annotation. + * @exports google.protobuf.GeneratedCodeInfo.Annotation + * @constructor + * @param {google.protobuf.GeneratedCodeInfo.Annotation$Properties=} [properties] Properties to set + */ + class Annotation { + + /** + * Constructs a new Annotation. + * @exports google.protobuf.GeneratedCodeInfo.Annotation + * @constructor + * @param {google.protobuf.GeneratedCodeInfo.Annotation$Properties=} [properties] Properties to set + */ + constructor(properties?: google.protobuf.GeneratedCodeInfo.Annotation$Properties); + + /** + * Annotation path. + * @type {Array.} + */ + public path: number[]; + + /** + * Annotation sourceFile. + * @type {string} + */ + public sourceFile: string; + + /** + * Annotation begin. + * @type {number} + */ + public begin: number; + + /** + * Annotation end. + * @type {number} + */ + public end: number; + + /** + * Creates a new Annotation instance using the specified properties. + * @param {google.protobuf.GeneratedCodeInfo.Annotation$Properties=} [properties] Properties to set + * @returns {google.protobuf.GeneratedCodeInfo.Annotation} Annotation instance + */ + public static create(properties?: google.protobuf.GeneratedCodeInfo.Annotation$Properties): google.protobuf.GeneratedCodeInfo.Annotation; + + /** + * Encodes the specified Annotation message. Does not implicitly {@link google.protobuf.GeneratedCodeInfo.Annotation.verify|verify} messages. + * @param {google.protobuf.GeneratedCodeInfo.Annotation$Properties} message Annotation message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: google.protobuf.GeneratedCodeInfo.Annotation$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Annotation message, length delimited. Does not implicitly {@link google.protobuf.GeneratedCodeInfo.Annotation.verify|verify} messages. + * @param {google.protobuf.GeneratedCodeInfo.Annotation$Properties} message Annotation message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: google.protobuf.GeneratedCodeInfo.Annotation$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an Annotation message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.GeneratedCodeInfo.Annotation} Annotation + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.GeneratedCodeInfo.Annotation; + + /** + * Decodes an Annotation message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.GeneratedCodeInfo.Annotation} Annotation + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.GeneratedCodeInfo.Annotation; + + /** + * Verifies an Annotation message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates an Annotation message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {google.protobuf.GeneratedCodeInfo.Annotation} Annotation + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.GeneratedCodeInfo.Annotation; + + /** + * Creates an Annotation message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link google.protobuf.GeneratedCodeInfo.Annotation.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {google.protobuf.GeneratedCodeInfo.Annotation} Annotation + */ + public static from(object: { [k: string]: any }): google.protobuf.GeneratedCodeInfo.Annotation; + + /** + * Creates a plain object from an Annotation message. Also converts values to other types if specified. + * @param {google.protobuf.GeneratedCodeInfo.Annotation} message Annotation + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: google.protobuf.GeneratedCodeInfo.Annotation, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this Annotation message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this Annotation to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + } + + type Duration$Properties = { + seconds?: (number|Long); + nanos?: number; + }; + + /** + * Constructs a new Duration. + * @exports google.protobuf.Duration + * @constructor + * @param {google.protobuf.Duration$Properties=} [properties] Properties to set + */ + class Duration { + + /** + * Constructs a new Duration. + * @exports google.protobuf.Duration + * @constructor + * @param {google.protobuf.Duration$Properties=} [properties] Properties to set + */ + constructor(properties?: google.protobuf.Duration$Properties); + + /** + * Duration seconds. + * @type {number|Long} + */ + public seconds: (number|Long); + + /** + * Duration nanos. + * @type {number} + */ + public nanos: number; + + /** + * Creates a new Duration instance using the specified properties. + * @param {google.protobuf.Duration$Properties=} [properties] Properties to set + * @returns {google.protobuf.Duration} Duration instance + */ + public static create(properties?: google.protobuf.Duration$Properties): google.protobuf.Duration; + + /** + * Encodes the specified Duration message. Does not implicitly {@link google.protobuf.Duration.verify|verify} messages. + * @param {google.protobuf.Duration$Properties} message Duration message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: google.protobuf.Duration$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Duration message, length delimited. Does not implicitly {@link google.protobuf.Duration.verify|verify} messages. + * @param {google.protobuf.Duration$Properties} message Duration message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: google.protobuf.Duration$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a Duration message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.Duration} Duration + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.Duration; + + /** + * Decodes a Duration message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.Duration} Duration + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.Duration; + + /** + * Verifies a Duration message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a Duration message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {google.protobuf.Duration} Duration + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.Duration; + + /** + * Creates a Duration message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link google.protobuf.Duration.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {google.protobuf.Duration} Duration + */ + public static from(object: { [k: string]: any }): google.protobuf.Duration; + + /** + * Creates a plain object from a Duration message. Also converts values to other types if specified. + * @param {google.protobuf.Duration} message Duration + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: google.protobuf.Duration, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this Duration message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this Duration to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type Timestamp$Properties = { + seconds?: (number|Long); + nanos?: number; + }; + + /** + * Constructs a new Timestamp. + * @exports google.protobuf.Timestamp + * @constructor + * @param {google.protobuf.Timestamp$Properties=} [properties] Properties to set + */ + class Timestamp { + + /** + * Constructs a new Timestamp. + * @exports google.protobuf.Timestamp + * @constructor + * @param {google.protobuf.Timestamp$Properties=} [properties] Properties to set + */ + constructor(properties?: google.protobuf.Timestamp$Properties); + + /** + * Timestamp seconds. + * @type {number|Long} + */ + public seconds: (number|Long); + + /** + * Timestamp nanos. + * @type {number} + */ + public nanos: number; + + /** + * Creates a new Timestamp instance using the specified properties. + * @param {google.protobuf.Timestamp$Properties=} [properties] Properties to set + * @returns {google.protobuf.Timestamp} Timestamp instance + */ + public static create(properties?: google.protobuf.Timestamp$Properties): google.protobuf.Timestamp; + + /** + * Encodes the specified Timestamp message. Does not implicitly {@link google.protobuf.Timestamp.verify|verify} messages. + * @param {google.protobuf.Timestamp$Properties} message Timestamp message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: google.protobuf.Timestamp$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Timestamp message, length delimited. Does not implicitly {@link google.protobuf.Timestamp.verify|verify} messages. + * @param {google.protobuf.Timestamp$Properties} message Timestamp message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: google.protobuf.Timestamp$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a Timestamp message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.Timestamp} Timestamp + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.Timestamp; + + /** + * Decodes a Timestamp message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.Timestamp} Timestamp + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.Timestamp; + + /** + * Verifies a Timestamp message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a Timestamp message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {google.protobuf.Timestamp} Timestamp + */ + public static fromObject(object: { [k: string]: any }): google.protobuf.Timestamp; + + /** + * Creates a Timestamp message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link google.protobuf.Timestamp.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {google.protobuf.Timestamp} Timestamp + */ + public static from(object: { [k: string]: any }): google.protobuf.Timestamp; + + /** + * Creates a plain object from a Timestamp message. Also converts values to other types if specified. + * @param {google.protobuf.Timestamp} message Timestamp + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: google.protobuf.Timestamp, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this Timestamp message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this Timestamp to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + } +} + +/** + * Namespace message. + * @exports message + * @namespace + */ +export namespace message { + + type Line$Properties = { + normal?: vec2$Properties; + distance?: number; + }; + + /** + * Constructs a new Line. + * @exports message.Line + * @constructor + * @param {message.Line$Properties=} [properties] Properties to set + */ + class Line { + + /** + * Constructs a new Line. + * @exports message.Line + * @constructor + * @param {message.Line$Properties=} [properties] Properties to set + */ + constructor(properties?: message.Line$Properties); + + /** + * Line normal. + * @type {(vec2$Properties|null)} + */ + public normal: (vec2$Properties|null); + + /** + * Line distance. + * @type {number} + */ + public distance: number; + + /** + * Creates a new Line instance using the specified properties. + * @param {message.Line$Properties=} [properties] Properties to set + * @returns {message.Line} Line instance + */ + public static create(properties?: message.Line$Properties): message.Line; + + /** + * Encodes the specified Line message. Does not implicitly {@link message.Line.verify|verify} messages. + * @param {message.Line$Properties} message Line message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.Line$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Line message, length delimited. Does not implicitly {@link message.Line.verify|verify} messages. + * @param {message.Line$Properties} message Line message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.Line$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a Line message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.Line} Line + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.Line; + + /** + * Decodes a Line message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.Line} Line + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.Line; + + /** + * Verifies a Line message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a Line message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.Line} Line + */ + public static fromObject(object: { [k: string]: any }): message.Line; + + /** + * Creates a Line message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.Line.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.Line} Line + */ + public static from(object: { [k: string]: any }): message.Line; + + /** + * Creates a plain object from a Line message. Also converts values to other types if specified. + * @param {message.Line} message Line + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.Line, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this Line message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this Line to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type Circle$Properties = { + radius?: number; + centre?: vec2$Properties; + }; + + /** + * Constructs a new Circle. + * @exports message.Circle + * @constructor + * @param {message.Circle$Properties=} [properties] Properties to set + */ + class Circle { + + /** + * Constructs a new Circle. + * @exports message.Circle + * @constructor + * @param {message.Circle$Properties=} [properties] Properties to set + */ + constructor(properties?: message.Circle$Properties); + + /** + * Circle radius. + * @type {number} + */ + public radius: number; + + /** + * Circle centre. + * @type {(vec2$Properties|null)} + */ + public centre: (vec2$Properties|null); + + /** + * Creates a new Circle instance using the specified properties. + * @param {message.Circle$Properties=} [properties] Properties to set + * @returns {message.Circle} Circle instance + */ + public static create(properties?: message.Circle$Properties): message.Circle; + + /** + * Encodes the specified Circle message. Does not implicitly {@link message.Circle.verify|verify} messages. + * @param {message.Circle$Properties} message Circle message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.Circle$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Circle message, length delimited. Does not implicitly {@link message.Circle.verify|verify} messages. + * @param {message.Circle$Properties} message Circle message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.Circle$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a Circle message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.Circle} Circle + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.Circle; + + /** + * Decodes a Circle message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.Circle} Circle + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.Circle; + + /** + * Verifies a Circle message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a Circle message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.Circle} Circle + */ + public static fromObject(object: { [k: string]: any }): message.Circle; + + /** + * Creates a Circle message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.Circle.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.Circle} Circle + */ + public static from(object: { [k: string]: any }): message.Circle; + + /** + * Creates a plain object from a Circle message. Also converts values to other types if specified. + * @param {message.Circle} message Circle + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.Circle, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this Circle message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this Circle to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type Ellipse$Properties = { + ellipse?: mat33$Properties; + }; + + /** + * Constructs a new Ellipse. + * @exports message.Ellipse + * @constructor + * @param {message.Ellipse$Properties=} [properties] Properties to set + */ + class Ellipse { + + /** + * Constructs a new Ellipse. + * @exports message.Ellipse + * @constructor + * @param {message.Ellipse$Properties=} [properties] Properties to set + */ + constructor(properties?: message.Ellipse$Properties); + + /** + * Ellipse ellipse. + * @type {(mat33$Properties|null)} + */ + public ellipse: (mat33$Properties|null); + + /** + * Creates a new Ellipse instance using the specified properties. + * @param {message.Ellipse$Properties=} [properties] Properties to set + * @returns {message.Ellipse} Ellipse instance + */ + public static create(properties?: message.Ellipse$Properties): message.Ellipse; + + /** + * Encodes the specified Ellipse message. Does not implicitly {@link message.Ellipse.verify|verify} messages. + * @param {message.Ellipse$Properties} message Ellipse message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.Ellipse$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Ellipse message, length delimited. Does not implicitly {@link message.Ellipse.verify|verify} messages. + * @param {message.Ellipse$Properties} message Ellipse message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.Ellipse$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an Ellipse message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.Ellipse} Ellipse + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.Ellipse; + + /** + * Decodes an Ellipse message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.Ellipse} Ellipse + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.Ellipse; + + /** + * Verifies an Ellipse message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates an Ellipse message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.Ellipse} Ellipse + */ + public static fromObject(object: { [k: string]: any }): message.Ellipse; + + /** + * Creates an Ellipse message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.Ellipse.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.Ellipse} Ellipse + */ + public static from(object: { [k: string]: any }): message.Ellipse; + + /** + * Creates a plain object from an Ellipse message. Also converts values to other types if specified. + * @param {message.Ellipse} message Ellipse + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.Ellipse, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this Ellipse message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this Ellipse to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type Quad$Properties = { + tl?: vec2$Properties; + tr?: vec2$Properties; + bl?: vec2$Properties; + br?: vec2$Properties; + }; + + /** + * Constructs a new Quad. + * @exports message.Quad + * @constructor + * @param {message.Quad$Properties=} [properties] Properties to set + */ + class Quad { + + /** + * Constructs a new Quad. + * @exports message.Quad + * @constructor + * @param {message.Quad$Properties=} [properties] Properties to set + */ + constructor(properties?: message.Quad$Properties); + + /** + * Quad tl. + * @type {(vec2$Properties|null)} + */ + public tl: (vec2$Properties|null); + + /** + * Quad tr. + * @type {(vec2$Properties|null)} + */ + public tr: (vec2$Properties|null); + + /** + * Quad bl. + * @type {(vec2$Properties|null)} + */ + public bl: (vec2$Properties|null); + + /** + * Quad br. + * @type {(vec2$Properties|null)} + */ + public br: (vec2$Properties|null); + + /** + * Creates a new Quad instance using the specified properties. + * @param {message.Quad$Properties=} [properties] Properties to set + * @returns {message.Quad} Quad instance + */ + public static create(properties?: message.Quad$Properties): message.Quad; + + /** + * Encodes the specified Quad message. Does not implicitly {@link message.Quad.verify|verify} messages. + * @param {message.Quad$Properties} message Quad message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.Quad$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Quad message, length delimited. Does not implicitly {@link message.Quad.verify|verify} messages. + * @param {message.Quad$Properties} message Quad message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.Quad$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a Quad message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.Quad} Quad + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.Quad; + + /** + * Decodes a Quad message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.Quad} Quad + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.Quad; + + /** + * Verifies a Quad message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a Quad message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.Quad} Quad + */ + public static fromObject(object: { [k: string]: any }): message.Quad; + + /** + * Creates a Quad message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.Quad.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.Quad} Quad + */ + public static from(object: { [k: string]: any }): message.Quad; + + /** + * Creates a plain object from a Quad message. Also converts values to other types if specified. + * @param {message.Quad} message Quad + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.Quad, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this Quad message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this Quad to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type Polygon$Properties = { + point?: vec2$Properties; + }; + + /** + * Constructs a new Polygon. + * @exports message.Polygon + * @constructor + * @param {message.Polygon$Properties=} [properties] Properties to set + */ + class Polygon { + + /** + * Constructs a new Polygon. + * @exports message.Polygon + * @constructor + * @param {message.Polygon$Properties=} [properties] Properties to set + */ + constructor(properties?: message.Polygon$Properties); + + /** + * Polygon point. + * @type {(vec2$Properties|null)} + */ + public point: (vec2$Properties|null); + + /** + * Creates a new Polygon instance using the specified properties. + * @param {message.Polygon$Properties=} [properties] Properties to set + * @returns {message.Polygon} Polygon instance + */ + public static create(properties?: message.Polygon$Properties): message.Polygon; + + /** + * Encodes the specified Polygon message. Does not implicitly {@link message.Polygon.verify|verify} messages. + * @param {message.Polygon$Properties} message Polygon message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.Polygon$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Polygon message, length delimited. Does not implicitly {@link message.Polygon.verify|verify} messages. + * @param {message.Polygon$Properties} message Polygon message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.Polygon$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a Polygon message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.Polygon} Polygon + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.Polygon; + + /** + * Decodes a Polygon message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.Polygon} Polygon + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.Polygon; + + /** + * Verifies a Polygon message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a Polygon message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.Polygon} Polygon + */ + public static fromObject(object: { [k: string]: any }): message.Polygon; + + /** + * Creates a Polygon message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.Polygon.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.Polygon} Polygon + */ + public static from(object: { [k: string]: any }): message.Polygon; + + /** + * Creates a plain object from a Polygon message. Also converts values to other types if specified. + * @param {message.Polygon} message Polygon + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.Polygon, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this Polygon message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this Polygon to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** + * Namespace audio. + * @exports message.audio + * @namespace + */ + namespace audio { + + type Beat$Properties = { + timestamp?: google.protobuf.Timestamp$Properties; + period?: google.protobuf.Duration$Properties; + }; + + /** + * Constructs a new Beat. + * @exports message.audio.Beat + * @constructor + * @param {message.audio.Beat$Properties=} [properties] Properties to set + */ + class Beat { + + /** + * Constructs a new Beat. + * @exports message.audio.Beat + * @constructor + * @param {message.audio.Beat$Properties=} [properties] Properties to set + */ + constructor(properties?: message.audio.Beat$Properties); + + /** + * Beat timestamp. + * @type {(google.protobuf.Timestamp$Properties|null)} + */ + public timestamp: (google.protobuf.Timestamp$Properties|null); + + /** + * Beat period. + * @type {(google.protobuf.Duration$Properties|null)} + */ + public period: (google.protobuf.Duration$Properties|null); + + /** + * Creates a new Beat instance using the specified properties. + * @param {message.audio.Beat$Properties=} [properties] Properties to set + * @returns {message.audio.Beat} Beat instance + */ + public static create(properties?: message.audio.Beat$Properties): message.audio.Beat; + + /** + * Encodes the specified Beat message. Does not implicitly {@link message.audio.Beat.verify|verify} messages. + * @param {message.audio.Beat$Properties} message Beat message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.audio.Beat$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Beat message, length delimited. Does not implicitly {@link message.audio.Beat.verify|verify} messages. + * @param {message.audio.Beat$Properties} message Beat message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.audio.Beat$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a Beat message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.audio.Beat} Beat + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.audio.Beat; + + /** + * Decodes a Beat message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.audio.Beat} Beat + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.audio.Beat; + + /** + * Verifies a Beat message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a Beat message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.audio.Beat} Beat + */ + public static fromObject(object: { [k: string]: any }): message.audio.Beat; + + /** + * Creates a Beat message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.audio.Beat.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.audio.Beat} Beat + */ + public static from(object: { [k: string]: any }): message.audio.Beat; + + /** + * Creates a plain object from a Beat message. Also converts values to other types if specified. + * @param {message.audio.Beat} message Beat + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.audio.Beat, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this Beat message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this Beat to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + } + + /** + * Namespace behaviour. + * @exports message.behaviour + * @namespace + */ + namespace behaviour { + + type Behaviour$Properties = { + state?: message.behaviour.Behaviour.State; + }; + + /** + * Constructs a new Behaviour. + * @exports message.behaviour.Behaviour + * @constructor + * @param {message.behaviour.Behaviour$Properties=} [properties] Properties to set + */ + class Behaviour { + + /** + * Constructs a new Behaviour. + * @exports message.behaviour.Behaviour + * @constructor + * @param {message.behaviour.Behaviour$Properties=} [properties] Properties to set + */ + constructor(properties?: message.behaviour.Behaviour$Properties); + + /** + * Behaviour state. + * @type {message.behaviour.Behaviour.State} + */ + public state: message.behaviour.Behaviour.State; + + /** + * Creates a new Behaviour instance using the specified properties. + * @param {message.behaviour.Behaviour$Properties=} [properties] Properties to set + * @returns {message.behaviour.Behaviour} Behaviour instance + */ + public static create(properties?: message.behaviour.Behaviour$Properties): message.behaviour.Behaviour; + + /** + * Encodes the specified Behaviour message. Does not implicitly {@link message.behaviour.Behaviour.verify|verify} messages. + * @param {message.behaviour.Behaviour$Properties} message Behaviour message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.behaviour.Behaviour$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Behaviour message, length delimited. Does not implicitly {@link message.behaviour.Behaviour.verify|verify} messages. + * @param {message.behaviour.Behaviour$Properties} message Behaviour message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.behaviour.Behaviour$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a Behaviour message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.behaviour.Behaviour} Behaviour + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.behaviour.Behaviour; + + /** + * Decodes a Behaviour message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.behaviour.Behaviour} Behaviour + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.behaviour.Behaviour; + + /** + * Verifies a Behaviour message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a Behaviour message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.behaviour.Behaviour} Behaviour + */ + public static fromObject(object: { [k: string]: any }): message.behaviour.Behaviour; + + /** + * Creates a Behaviour message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.behaviour.Behaviour.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.behaviour.Behaviour} Behaviour + */ + public static from(object: { [k: string]: any }): message.behaviour.Behaviour; + + /** + * Creates a plain object from a Behaviour message. Also converts values to other types if specified. + * @param {message.behaviour.Behaviour} message Behaviour + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.behaviour.Behaviour, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this Behaviour message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this Behaviour to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + namespace Behaviour { + + /** + * State enum. + * @name State + * @memberof message.behaviour.Behaviour + * @enum {number} + * @property {number} UNKNOWN=0 UNKNOWN value + * @property {number} INIT=1 INIT value + * @property {number} SEARCH_FOR_BALL=2 SEARCH_FOR_BALL value + * @property {number} SEARCH_FOR_GOALS=3 SEARCH_FOR_GOALS value + * @property {number} WALK_TO_BALL=4 WALK_TO_BALL value + * @property {number} PICKED_UP=5 PICKED_UP value + * @property {number} INITIAL=6 INITIAL value + * @property {number} READY=7 READY value + * @property {number} SET=8 SET value + * @property {number} TIMEOUT=9 TIMEOUT value + * @property {number} FINISHED=10 FINISHED value + * @property {number} PENALISED=11 PENALISED value + * @property {number} GOALIE_WALK=12 GOALIE_WALK value + * @property {number} MOVE_TO_CENTRE=13 MOVE_TO_CENTRE value + * @property {number} LOCALISING=14 LOCALISING value + */ + enum State { + UNKNOWN = 0, + INIT = 1, + SEARCH_FOR_BALL = 2, + SEARCH_FOR_GOALS = 3, + WALK_TO_BALL = 4, + PICKED_UP = 5, + INITIAL = 6, + READY = 7, + SET = 8, + TIMEOUT = 9, + FINISHED = 10, + PENALISED = 11, + GOALIE_WALK = 12, + MOVE_TO_CENTRE = 13, + LOCALISING = 14 + } + } + + type FieldTarget$Properties = { + target?: message.behaviour.FieldTarget.Target; + }; + + /** + * Constructs a new FieldTarget. + * @exports message.behaviour.FieldTarget + * @constructor + * @param {message.behaviour.FieldTarget$Properties=} [properties] Properties to set + */ + class FieldTarget { + + /** + * Constructs a new FieldTarget. + * @exports message.behaviour.FieldTarget + * @constructor + * @param {message.behaviour.FieldTarget$Properties=} [properties] Properties to set + */ + constructor(properties?: message.behaviour.FieldTarget$Properties); + + /** + * FieldTarget target. + * @type {message.behaviour.FieldTarget.Target} + */ + public target: message.behaviour.FieldTarget.Target; + + /** + * Creates a new FieldTarget instance using the specified properties. + * @param {message.behaviour.FieldTarget$Properties=} [properties] Properties to set + * @returns {message.behaviour.FieldTarget} FieldTarget instance + */ + public static create(properties?: message.behaviour.FieldTarget$Properties): message.behaviour.FieldTarget; + + /** + * Encodes the specified FieldTarget message. Does not implicitly {@link message.behaviour.FieldTarget.verify|verify} messages. + * @param {message.behaviour.FieldTarget$Properties} message FieldTarget message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.behaviour.FieldTarget$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified FieldTarget message, length delimited. Does not implicitly {@link message.behaviour.FieldTarget.verify|verify} messages. + * @param {message.behaviour.FieldTarget$Properties} message FieldTarget message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.behaviour.FieldTarget$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a FieldTarget message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.behaviour.FieldTarget} FieldTarget + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.behaviour.FieldTarget; + + /** + * Decodes a FieldTarget message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.behaviour.FieldTarget} FieldTarget + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.behaviour.FieldTarget; + + /** + * Verifies a FieldTarget message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a FieldTarget message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.behaviour.FieldTarget} FieldTarget + */ + public static fromObject(object: { [k: string]: any }): message.behaviour.FieldTarget; + + /** + * Creates a FieldTarget message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.behaviour.FieldTarget.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.behaviour.FieldTarget} FieldTarget + */ + public static from(object: { [k: string]: any }): message.behaviour.FieldTarget; + + /** + * Creates a plain object from a FieldTarget message. Also converts values to other types if specified. + * @param {message.behaviour.FieldTarget} message FieldTarget + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.behaviour.FieldTarget, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this FieldTarget message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this FieldTarget to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + namespace FieldTarget { + + /** + * Target enum. + * @name Target + * @memberof message.behaviour.FieldTarget + * @enum {number} + * @property {number} SELF=0 SELF value + * @property {number} BALL=1 BALL value + * @property {number} GOAL=2 GOAL value + */ + enum Target { + SELF = 0, + BALL = 1, + GOAL = 2 + } + } + + type FixedWalkFinished$Properties = {}; + + /** + * Constructs a new FixedWalkFinished. + * @exports message.behaviour.FixedWalkFinished + * @constructor + * @param {message.behaviour.FixedWalkFinished$Properties=} [properties] Properties to set + */ + class FixedWalkFinished { + + /** + * Constructs a new FixedWalkFinished. + * @exports message.behaviour.FixedWalkFinished + * @constructor + * @param {message.behaviour.FixedWalkFinished$Properties=} [properties] Properties to set + */ + constructor(properties?: message.behaviour.FixedWalkFinished$Properties); + + /** + * Creates a new FixedWalkFinished instance using the specified properties. + * @param {message.behaviour.FixedWalkFinished$Properties=} [properties] Properties to set + * @returns {message.behaviour.FixedWalkFinished} FixedWalkFinished instance + */ + public static create(properties?: message.behaviour.FixedWalkFinished$Properties): message.behaviour.FixedWalkFinished; + + /** + * Encodes the specified FixedWalkFinished message. Does not implicitly {@link message.behaviour.FixedWalkFinished.verify|verify} messages. + * @param {message.behaviour.FixedWalkFinished$Properties} message FixedWalkFinished message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.behaviour.FixedWalkFinished$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified FixedWalkFinished message, length delimited. Does not implicitly {@link message.behaviour.FixedWalkFinished.verify|verify} messages. + * @param {message.behaviour.FixedWalkFinished$Properties} message FixedWalkFinished message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.behaviour.FixedWalkFinished$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a FixedWalkFinished message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.behaviour.FixedWalkFinished} FixedWalkFinished + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.behaviour.FixedWalkFinished; + + /** + * Decodes a FixedWalkFinished message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.behaviour.FixedWalkFinished} FixedWalkFinished + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.behaviour.FixedWalkFinished; + + /** + * Verifies a FixedWalkFinished message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a FixedWalkFinished message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.behaviour.FixedWalkFinished} FixedWalkFinished + */ + public static fromObject(object: { [k: string]: any }): message.behaviour.FixedWalkFinished; + + /** + * Creates a FixedWalkFinished message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.behaviour.FixedWalkFinished.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.behaviour.FixedWalkFinished} FixedWalkFinished + */ + public static from(object: { [k: string]: any }): message.behaviour.FixedWalkFinished; + + /** + * Creates a plain object from a FixedWalkFinished message. Also converts values to other types if specified. + * @param {message.behaviour.FixedWalkFinished} message FixedWalkFinished + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.behaviour.FixedWalkFinished, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this FixedWalkFinished message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this FixedWalkFinished to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type WalkConfigSaved$Properties = {}; + + /** + * Constructs a new WalkConfigSaved. + * @exports message.behaviour.WalkConfigSaved + * @constructor + * @param {message.behaviour.WalkConfigSaved$Properties=} [properties] Properties to set + */ + class WalkConfigSaved { + + /** + * Constructs a new WalkConfigSaved. + * @exports message.behaviour.WalkConfigSaved + * @constructor + * @param {message.behaviour.WalkConfigSaved$Properties=} [properties] Properties to set + */ + constructor(properties?: message.behaviour.WalkConfigSaved$Properties); + + /** + * Creates a new WalkConfigSaved instance using the specified properties. + * @param {message.behaviour.WalkConfigSaved$Properties=} [properties] Properties to set + * @returns {message.behaviour.WalkConfigSaved} WalkConfigSaved instance + */ + public static create(properties?: message.behaviour.WalkConfigSaved$Properties): message.behaviour.WalkConfigSaved; + + /** + * Encodes the specified WalkConfigSaved message. Does not implicitly {@link message.behaviour.WalkConfigSaved.verify|verify} messages. + * @param {message.behaviour.WalkConfigSaved$Properties} message WalkConfigSaved message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.behaviour.WalkConfigSaved$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified WalkConfigSaved message, length delimited. Does not implicitly {@link message.behaviour.WalkConfigSaved.verify|verify} messages. + * @param {message.behaviour.WalkConfigSaved$Properties} message WalkConfigSaved message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.behaviour.WalkConfigSaved$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a WalkConfigSaved message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.behaviour.WalkConfigSaved} WalkConfigSaved + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.behaviour.WalkConfigSaved; + + /** + * Decodes a WalkConfigSaved message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.behaviour.WalkConfigSaved} WalkConfigSaved + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.behaviour.WalkConfigSaved; + + /** + * Verifies a WalkConfigSaved message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a WalkConfigSaved message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.behaviour.WalkConfigSaved} WalkConfigSaved + */ + public static fromObject(object: { [k: string]: any }): message.behaviour.WalkConfigSaved; + + /** + * Creates a WalkConfigSaved message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.behaviour.WalkConfigSaved.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.behaviour.WalkConfigSaved} WalkConfigSaved + */ + public static from(object: { [k: string]: any }): message.behaviour.WalkConfigSaved; + + /** + * Creates a plain object from a WalkConfigSaved message. Also converts values to other types if specified. + * @param {message.behaviour.WalkConfigSaved} message WalkConfigSaved + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.behaviour.WalkConfigSaved, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this WalkConfigSaved message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this WalkConfigSaved to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type CancelFixedWalk$Properties = {}; + + /** + * Constructs a new CancelFixedWalk. + * @exports message.behaviour.CancelFixedWalk + * @constructor + * @param {message.behaviour.CancelFixedWalk$Properties=} [properties] Properties to set + */ + class CancelFixedWalk { + + /** + * Constructs a new CancelFixedWalk. + * @exports message.behaviour.CancelFixedWalk + * @constructor + * @param {message.behaviour.CancelFixedWalk$Properties=} [properties] Properties to set + */ + constructor(properties?: message.behaviour.CancelFixedWalk$Properties); + + /** + * Creates a new CancelFixedWalk instance using the specified properties. + * @param {message.behaviour.CancelFixedWalk$Properties=} [properties] Properties to set + * @returns {message.behaviour.CancelFixedWalk} CancelFixedWalk instance + */ + public static create(properties?: message.behaviour.CancelFixedWalk$Properties): message.behaviour.CancelFixedWalk; + + /** + * Encodes the specified CancelFixedWalk message. Does not implicitly {@link message.behaviour.CancelFixedWalk.verify|verify} messages. + * @param {message.behaviour.CancelFixedWalk$Properties} message CancelFixedWalk message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.behaviour.CancelFixedWalk$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified CancelFixedWalk message, length delimited. Does not implicitly {@link message.behaviour.CancelFixedWalk.verify|verify} messages. + * @param {message.behaviour.CancelFixedWalk$Properties} message CancelFixedWalk message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.behaviour.CancelFixedWalk$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a CancelFixedWalk message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.behaviour.CancelFixedWalk} CancelFixedWalk + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.behaviour.CancelFixedWalk; + + /** + * Decodes a CancelFixedWalk message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.behaviour.CancelFixedWalk} CancelFixedWalk + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.behaviour.CancelFixedWalk; + + /** + * Verifies a CancelFixedWalk message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a CancelFixedWalk message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.behaviour.CancelFixedWalk} CancelFixedWalk + */ + public static fromObject(object: { [k: string]: any }): message.behaviour.CancelFixedWalk; + + /** + * Creates a CancelFixedWalk message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.behaviour.CancelFixedWalk.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.behaviour.CancelFixedWalk} CancelFixedWalk + */ + public static from(object: { [k: string]: any }): message.behaviour.CancelFixedWalk; + + /** + * Creates a plain object from a CancelFixedWalk message. Also converts values to other types if specified. + * @param {message.behaviour.CancelFixedWalk} message CancelFixedWalk + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.behaviour.CancelFixedWalk, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this CancelFixedWalk message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this CancelFixedWalk to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type WalkOptimiserCommand$Properties = { + walkConfig?: string; + }; + + /** + * Constructs a new WalkOptimiserCommand. + * @exports message.behaviour.WalkOptimiserCommand + * @constructor + * @param {message.behaviour.WalkOptimiserCommand$Properties=} [properties] Properties to set + */ + class WalkOptimiserCommand { + + /** + * Constructs a new WalkOptimiserCommand. + * @exports message.behaviour.WalkOptimiserCommand + * @constructor + * @param {message.behaviour.WalkOptimiserCommand$Properties=} [properties] Properties to set + */ + constructor(properties?: message.behaviour.WalkOptimiserCommand$Properties); + + /** + * WalkOptimiserCommand walkConfig. + * @type {string} + */ + public walkConfig: string; + + /** + * Creates a new WalkOptimiserCommand instance using the specified properties. + * @param {message.behaviour.WalkOptimiserCommand$Properties=} [properties] Properties to set + * @returns {message.behaviour.WalkOptimiserCommand} WalkOptimiserCommand instance + */ + public static create(properties?: message.behaviour.WalkOptimiserCommand$Properties): message.behaviour.WalkOptimiserCommand; + + /** + * Encodes the specified WalkOptimiserCommand message. Does not implicitly {@link message.behaviour.WalkOptimiserCommand.verify|verify} messages. + * @param {message.behaviour.WalkOptimiserCommand$Properties} message WalkOptimiserCommand message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.behaviour.WalkOptimiserCommand$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified WalkOptimiserCommand message, length delimited. Does not implicitly {@link message.behaviour.WalkOptimiserCommand.verify|verify} messages. + * @param {message.behaviour.WalkOptimiserCommand$Properties} message WalkOptimiserCommand message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.behaviour.WalkOptimiserCommand$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a WalkOptimiserCommand message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.behaviour.WalkOptimiserCommand} WalkOptimiserCommand + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.behaviour.WalkOptimiserCommand; + + /** + * Decodes a WalkOptimiserCommand message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.behaviour.WalkOptimiserCommand} WalkOptimiserCommand + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.behaviour.WalkOptimiserCommand; + + /** + * Verifies a WalkOptimiserCommand message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a WalkOptimiserCommand message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.behaviour.WalkOptimiserCommand} WalkOptimiserCommand + */ + public static fromObject(object: { [k: string]: any }): message.behaviour.WalkOptimiserCommand; + + /** + * Creates a WalkOptimiserCommand message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.behaviour.WalkOptimiserCommand.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.behaviour.WalkOptimiserCommand} WalkOptimiserCommand + */ + public static from(object: { [k: string]: any }): message.behaviour.WalkOptimiserCommand; + + /** + * Creates a plain object from a WalkOptimiserCommand message. Also converts values to other types if specified. + * @param {message.behaviour.WalkOptimiserCommand} message WalkOptimiserCommand + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.behaviour.WalkOptimiserCommand, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this WalkOptimiserCommand message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this WalkOptimiserCommand to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type FixedWalkCommand$Properties = { + segments?: message.behaviour.FixedWalkCommand.WalkSegment$Properties[]; + }; + + /** + * Constructs a new FixedWalkCommand. + * @exports message.behaviour.FixedWalkCommand + * @constructor + * @param {message.behaviour.FixedWalkCommand$Properties=} [properties] Properties to set + */ + class FixedWalkCommand { + + /** + * Constructs a new FixedWalkCommand. + * @exports message.behaviour.FixedWalkCommand + * @constructor + * @param {message.behaviour.FixedWalkCommand$Properties=} [properties] Properties to set + */ + constructor(properties?: message.behaviour.FixedWalkCommand$Properties); + + /** + * FixedWalkCommand segments. + * @type {Array.} + */ + public segments: message.behaviour.FixedWalkCommand.WalkSegment$Properties[]; + + /** + * Creates a new FixedWalkCommand instance using the specified properties. + * @param {message.behaviour.FixedWalkCommand$Properties=} [properties] Properties to set + * @returns {message.behaviour.FixedWalkCommand} FixedWalkCommand instance + */ + public static create(properties?: message.behaviour.FixedWalkCommand$Properties): message.behaviour.FixedWalkCommand; + + /** + * Encodes the specified FixedWalkCommand message. Does not implicitly {@link message.behaviour.FixedWalkCommand.verify|verify} messages. + * @param {message.behaviour.FixedWalkCommand$Properties} message FixedWalkCommand message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.behaviour.FixedWalkCommand$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified FixedWalkCommand message, length delimited. Does not implicitly {@link message.behaviour.FixedWalkCommand.verify|verify} messages. + * @param {message.behaviour.FixedWalkCommand$Properties} message FixedWalkCommand message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.behaviour.FixedWalkCommand$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a FixedWalkCommand message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.behaviour.FixedWalkCommand} FixedWalkCommand + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.behaviour.FixedWalkCommand; + + /** + * Decodes a FixedWalkCommand message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.behaviour.FixedWalkCommand} FixedWalkCommand + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.behaviour.FixedWalkCommand; + + /** + * Verifies a FixedWalkCommand message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a FixedWalkCommand message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.behaviour.FixedWalkCommand} FixedWalkCommand + */ + public static fromObject(object: { [k: string]: any }): message.behaviour.FixedWalkCommand; + + /** + * Creates a FixedWalkCommand message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.behaviour.FixedWalkCommand.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.behaviour.FixedWalkCommand} FixedWalkCommand + */ + public static from(object: { [k: string]: any }): message.behaviour.FixedWalkCommand; + + /** + * Creates a plain object from a FixedWalkCommand message. Also converts values to other types if specified. + * @param {message.behaviour.FixedWalkCommand} message FixedWalkCommand + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.behaviour.FixedWalkCommand, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this FixedWalkCommand message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this FixedWalkCommand to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + namespace FixedWalkCommand { + + type WalkSegment$Properties = { + direction?: vec2$Properties; + curvePeriod?: number; + normalisedVelocity?: number; + normalisedAngularVelocity?: number; + duration?: google.protobuf.Duration$Properties; + }; + + /** + * Constructs a new WalkSegment. + * @exports message.behaviour.FixedWalkCommand.WalkSegment + * @constructor + * @param {message.behaviour.FixedWalkCommand.WalkSegment$Properties=} [properties] Properties to set + */ + class WalkSegment { + + /** + * Constructs a new WalkSegment. + * @exports message.behaviour.FixedWalkCommand.WalkSegment + * @constructor + * @param {message.behaviour.FixedWalkCommand.WalkSegment$Properties=} [properties] Properties to set + */ + constructor(properties?: message.behaviour.FixedWalkCommand.WalkSegment$Properties); + + /** + * WalkSegment direction. + * @type {(vec2$Properties|null)} + */ + public direction: (vec2$Properties|null); + + /** + * WalkSegment curvePeriod. + * @type {number} + */ + public curvePeriod: number; + + /** + * WalkSegment normalisedVelocity. + * @type {number} + */ + public normalisedVelocity: number; + + /** + * WalkSegment normalisedAngularVelocity. + * @type {number} + */ + public normalisedAngularVelocity: number; + + /** + * WalkSegment duration. + * @type {(google.protobuf.Duration$Properties|null)} + */ + public duration: (google.protobuf.Duration$Properties|null); + + /** + * Creates a new WalkSegment instance using the specified properties. + * @param {message.behaviour.FixedWalkCommand.WalkSegment$Properties=} [properties] Properties to set + * @returns {message.behaviour.FixedWalkCommand.WalkSegment} WalkSegment instance + */ + public static create(properties?: message.behaviour.FixedWalkCommand.WalkSegment$Properties): message.behaviour.FixedWalkCommand.WalkSegment; + + /** + * Encodes the specified WalkSegment message. Does not implicitly {@link message.behaviour.FixedWalkCommand.WalkSegment.verify|verify} messages. + * @param {message.behaviour.FixedWalkCommand.WalkSegment$Properties} message WalkSegment message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.behaviour.FixedWalkCommand.WalkSegment$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified WalkSegment message, length delimited. Does not implicitly {@link message.behaviour.FixedWalkCommand.WalkSegment.verify|verify} messages. + * @param {message.behaviour.FixedWalkCommand.WalkSegment$Properties} message WalkSegment message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.behaviour.FixedWalkCommand.WalkSegment$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a WalkSegment message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.behaviour.FixedWalkCommand.WalkSegment} WalkSegment + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.behaviour.FixedWalkCommand.WalkSegment; + + /** + * Decodes a WalkSegment message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.behaviour.FixedWalkCommand.WalkSegment} WalkSegment + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.behaviour.FixedWalkCommand.WalkSegment; + + /** + * Verifies a WalkSegment message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a WalkSegment message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.behaviour.FixedWalkCommand.WalkSegment} WalkSegment + */ + public static fromObject(object: { [k: string]: any }): message.behaviour.FixedWalkCommand.WalkSegment; + + /** + * Creates a WalkSegment message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.behaviour.FixedWalkCommand.WalkSegment.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.behaviour.FixedWalkCommand.WalkSegment} WalkSegment + */ + public static from(object: { [k: string]: any }): message.behaviour.FixedWalkCommand.WalkSegment; + + /** + * Creates a plain object from a WalkSegment message. Also converts values to other types if specified. + * @param {message.behaviour.FixedWalkCommand.WalkSegment} message WalkSegment + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.behaviour.FixedWalkCommand.WalkSegment, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this WalkSegment message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this WalkSegment to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + } + + type KickPlan$Properties = { + target?: vec2$Properties; + kickType?: message.behaviour.KickPlan.KickType; + }; + + /** + * Constructs a new KickPlan. + * @exports message.behaviour.KickPlan + * @constructor + * @param {message.behaviour.KickPlan$Properties=} [properties] Properties to set + */ + class KickPlan { + + /** + * Constructs a new KickPlan. + * @exports message.behaviour.KickPlan + * @constructor + * @param {message.behaviour.KickPlan$Properties=} [properties] Properties to set + */ + constructor(properties?: message.behaviour.KickPlan$Properties); + + /** + * KickPlan target. + * @type {(vec2$Properties|null)} + */ + public target: (vec2$Properties|null); + + /** + * KickPlan kickType. + * @type {message.behaviour.KickPlan.KickType} + */ + public kickType: message.behaviour.KickPlan.KickType; + + /** + * Creates a new KickPlan instance using the specified properties. + * @param {message.behaviour.KickPlan$Properties=} [properties] Properties to set + * @returns {message.behaviour.KickPlan} KickPlan instance + */ + public static create(properties?: message.behaviour.KickPlan$Properties): message.behaviour.KickPlan; + + /** + * Encodes the specified KickPlan message. Does not implicitly {@link message.behaviour.KickPlan.verify|verify} messages. + * @param {message.behaviour.KickPlan$Properties} message KickPlan message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.behaviour.KickPlan$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified KickPlan message, length delimited. Does not implicitly {@link message.behaviour.KickPlan.verify|verify} messages. + * @param {message.behaviour.KickPlan$Properties} message KickPlan message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.behaviour.KickPlan$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a KickPlan message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.behaviour.KickPlan} KickPlan + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.behaviour.KickPlan; + + /** + * Decodes a KickPlan message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.behaviour.KickPlan} KickPlan + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.behaviour.KickPlan; + + /** + * Verifies a KickPlan message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a KickPlan message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.behaviour.KickPlan} KickPlan + */ + public static fromObject(object: { [k: string]: any }): message.behaviour.KickPlan; + + /** + * Creates a KickPlan message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.behaviour.KickPlan.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.behaviour.KickPlan} KickPlan + */ + public static from(object: { [k: string]: any }): message.behaviour.KickPlan; + + /** + * Creates a plain object from a KickPlan message. Also converts values to other types if specified. + * @param {message.behaviour.KickPlan} message KickPlan + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.behaviour.KickPlan, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this KickPlan message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this KickPlan to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + namespace KickPlan { + + /** + * KickType enum. + * @name KickType + * @memberof message.behaviour.KickPlan + * @enum {number} + * @property {number} SCRIPTED=0 SCRIPTED value + * @property {number} IK_KICK=1 IK_KICK value + */ + enum KickType { + SCRIPTED = 0, + IK_KICK = 1 + } + } + + type WantsToKick$Properties = { + kick?: boolean; + }; + + /** + * Constructs a new WantsToKick. + * @exports message.behaviour.WantsToKick + * @constructor + * @param {message.behaviour.WantsToKick$Properties=} [properties] Properties to set + */ + class WantsToKick { + + /** + * Constructs a new WantsToKick. + * @exports message.behaviour.WantsToKick + * @constructor + * @param {message.behaviour.WantsToKick$Properties=} [properties] Properties to set + */ + constructor(properties?: message.behaviour.WantsToKick$Properties); + + /** + * WantsToKick kick. + * @type {boolean} + */ + public kick: boolean; + + /** + * Creates a new WantsToKick instance using the specified properties. + * @param {message.behaviour.WantsToKick$Properties=} [properties] Properties to set + * @returns {message.behaviour.WantsToKick} WantsToKick instance + */ + public static create(properties?: message.behaviour.WantsToKick$Properties): message.behaviour.WantsToKick; + + /** + * Encodes the specified WantsToKick message. Does not implicitly {@link message.behaviour.WantsToKick.verify|verify} messages. + * @param {message.behaviour.WantsToKick$Properties} message WantsToKick message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.behaviour.WantsToKick$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified WantsToKick message, length delimited. Does not implicitly {@link message.behaviour.WantsToKick.verify|verify} messages. + * @param {message.behaviour.WantsToKick$Properties} message WantsToKick message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.behaviour.WantsToKick$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a WantsToKick message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.behaviour.WantsToKick} WantsToKick + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.behaviour.WantsToKick; + + /** + * Decodes a WantsToKick message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.behaviour.WantsToKick} WantsToKick + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.behaviour.WantsToKick; + + /** + * Verifies a WantsToKick message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a WantsToKick message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.behaviour.WantsToKick} WantsToKick + */ + public static fromObject(object: { [k: string]: any }): message.behaviour.WantsToKick; + + /** + * Creates a WantsToKick message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.behaviour.WantsToKick.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.behaviour.WantsToKick} WantsToKick + */ + public static from(object: { [k: string]: any }): message.behaviour.WantsToKick; + + /** + * Creates a plain object from a WantsToKick message. Also converts values to other types if specified. + * @param {message.behaviour.WantsToKick} message WantsToKick + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.behaviour.WantsToKick, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this WantsToKick message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this WantsToKick to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type Look$Properties = {}; + + /** + * Constructs a new Look. + * @exports message.behaviour.Look + * @constructor + * @param {message.behaviour.Look$Properties=} [properties] Properties to set + */ + class Look { + + /** + * Constructs a new Look. + * @exports message.behaviour.Look + * @constructor + * @param {message.behaviour.Look$Properties=} [properties] Properties to set + */ + constructor(properties?: message.behaviour.Look$Properties); + + /** + * Creates a new Look instance using the specified properties. + * @param {message.behaviour.Look$Properties=} [properties] Properties to set + * @returns {message.behaviour.Look} Look instance + */ + public static create(properties?: message.behaviour.Look$Properties): message.behaviour.Look; + + /** + * Encodes the specified Look message. Does not implicitly {@link message.behaviour.Look.verify|verify} messages. + * @param {message.behaviour.Look$Properties} message Look message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.behaviour.Look$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Look message, length delimited. Does not implicitly {@link message.behaviour.Look.verify|verify} messages. + * @param {message.behaviour.Look$Properties} message Look message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.behaviour.Look$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a Look message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.behaviour.Look} Look + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.behaviour.Look; + + /** + * Decodes a Look message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.behaviour.Look} Look + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.behaviour.Look; + + /** + * Verifies a Look message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a Look message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.behaviour.Look} Look + */ + public static fromObject(object: { [k: string]: any }): message.behaviour.Look; + + /** + * Creates a Look message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.behaviour.Look.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.behaviour.Look} Look + */ + public static from(object: { [k: string]: any }): message.behaviour.Look; + + /** + * Creates a plain object from a Look message. Also converts values to other types if specified. + * @param {message.behaviour.Look} message Look + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.behaviour.Look, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this Look message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this Look to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + namespace Look { + + type Fixation$Properties = { + angle?: vec2$Properties; + arcSize?: vec2$Properties; + }; + + /** + * Constructs a new Fixation. + * @exports message.behaviour.Look.Fixation + * @constructor + * @param {message.behaviour.Look.Fixation$Properties=} [properties] Properties to set + */ + class Fixation { + + /** + * Constructs a new Fixation. + * @exports message.behaviour.Look.Fixation + * @constructor + * @param {message.behaviour.Look.Fixation$Properties=} [properties] Properties to set + */ + constructor(properties?: message.behaviour.Look.Fixation$Properties); + + /** + * Fixation angle. + * @type {(vec2$Properties|null)} + */ + public angle: (vec2$Properties|null); + + /** + * Fixation arcSize. + * @type {(vec2$Properties|null)} + */ + public arcSize: (vec2$Properties|null); + + /** + * Creates a new Fixation instance using the specified properties. + * @param {message.behaviour.Look.Fixation$Properties=} [properties] Properties to set + * @returns {message.behaviour.Look.Fixation} Fixation instance + */ + public static create(properties?: message.behaviour.Look.Fixation$Properties): message.behaviour.Look.Fixation; + + /** + * Encodes the specified Fixation message. Does not implicitly {@link message.behaviour.Look.Fixation.verify|verify} messages. + * @param {message.behaviour.Look.Fixation$Properties} message Fixation message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.behaviour.Look.Fixation$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Fixation message, length delimited. Does not implicitly {@link message.behaviour.Look.Fixation.verify|verify} messages. + * @param {message.behaviour.Look.Fixation$Properties} message Fixation message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.behaviour.Look.Fixation$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a Fixation message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.behaviour.Look.Fixation} Fixation + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.behaviour.Look.Fixation; + + /** + * Decodes a Fixation message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.behaviour.Look.Fixation} Fixation + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.behaviour.Look.Fixation; + + /** + * Verifies a Fixation message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a Fixation message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.behaviour.Look.Fixation} Fixation + */ + public static fromObject(object: { [k: string]: any }): message.behaviour.Look.Fixation; + + /** + * Creates a Fixation message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.behaviour.Look.Fixation.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.behaviour.Look.Fixation} Fixation + */ + public static from(object: { [k: string]: any }): message.behaviour.Look.Fixation; + + /** + * Creates a plain object from a Fixation message. Also converts values to other types if specified. + * @param {message.behaviour.Look.Fixation} message Fixation + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.behaviour.Look.Fixation, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this Fixation message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this Fixation to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type Saccade$Properties = { + dwellTime?: google.protobuf.Duration$Properties; + angle?: vec2$Properties; + arcSize?: vec2$Properties; + }; + + /** + * Constructs a new Saccade. + * @exports message.behaviour.Look.Saccade + * @constructor + * @param {message.behaviour.Look.Saccade$Properties=} [properties] Properties to set + */ + class Saccade { + + /** + * Constructs a new Saccade. + * @exports message.behaviour.Look.Saccade + * @constructor + * @param {message.behaviour.Look.Saccade$Properties=} [properties] Properties to set + */ + constructor(properties?: message.behaviour.Look.Saccade$Properties); + + /** + * Saccade dwellTime. + * @type {(google.protobuf.Duration$Properties|null)} + */ + public dwellTime: (google.protobuf.Duration$Properties|null); + + /** + * Saccade angle. + * @type {(vec2$Properties|null)} + */ + public angle: (vec2$Properties|null); + + /** + * Saccade arcSize. + * @type {(vec2$Properties|null)} + */ + public arcSize: (vec2$Properties|null); + + /** + * Creates a new Saccade instance using the specified properties. + * @param {message.behaviour.Look.Saccade$Properties=} [properties] Properties to set + * @returns {message.behaviour.Look.Saccade} Saccade instance + */ + public static create(properties?: message.behaviour.Look.Saccade$Properties): message.behaviour.Look.Saccade; + + /** + * Encodes the specified Saccade message. Does not implicitly {@link message.behaviour.Look.Saccade.verify|verify} messages. + * @param {message.behaviour.Look.Saccade$Properties} message Saccade message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.behaviour.Look.Saccade$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Saccade message, length delimited. Does not implicitly {@link message.behaviour.Look.Saccade.verify|verify} messages. + * @param {message.behaviour.Look.Saccade$Properties} message Saccade message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.behaviour.Look.Saccade$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a Saccade message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.behaviour.Look.Saccade} Saccade + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.behaviour.Look.Saccade; + + /** + * Decodes a Saccade message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.behaviour.Look.Saccade} Saccade + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.behaviour.Look.Saccade; + + /** + * Verifies a Saccade message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a Saccade message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.behaviour.Look.Saccade} Saccade + */ + public static fromObject(object: { [k: string]: any }): message.behaviour.Look.Saccade; + + /** + * Creates a Saccade message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.behaviour.Look.Saccade.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.behaviour.Look.Saccade} Saccade + */ + public static from(object: { [k: string]: any }): message.behaviour.Look.Saccade; + + /** + * Creates a plain object from a Saccade message. Also converts values to other types if specified. + * @param {message.behaviour.Look.Saccade} message Saccade + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.behaviour.Look.Saccade, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this Saccade message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this Saccade to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type Pan$Properties = { + angle?: vec2$Properties; + arcSize?: vec2$Properties; + }; + + /** + * Constructs a new Pan. + * @exports message.behaviour.Look.Pan + * @constructor + * @param {message.behaviour.Look.Pan$Properties=} [properties] Properties to set + */ + class Pan { + + /** + * Constructs a new Pan. + * @exports message.behaviour.Look.Pan + * @constructor + * @param {message.behaviour.Look.Pan$Properties=} [properties] Properties to set + */ + constructor(properties?: message.behaviour.Look.Pan$Properties); + + /** + * Pan angle. + * @type {(vec2$Properties|null)} + */ + public angle: (vec2$Properties|null); + + /** + * Pan arcSize. + * @type {(vec2$Properties|null)} + */ + public arcSize: (vec2$Properties|null); + + /** + * Creates a new Pan instance using the specified properties. + * @param {message.behaviour.Look.Pan$Properties=} [properties] Properties to set + * @returns {message.behaviour.Look.Pan} Pan instance + */ + public static create(properties?: message.behaviour.Look.Pan$Properties): message.behaviour.Look.Pan; + + /** + * Encodes the specified Pan message. Does not implicitly {@link message.behaviour.Look.Pan.verify|verify} messages. + * @param {message.behaviour.Look.Pan$Properties} message Pan message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.behaviour.Look.Pan$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Pan message, length delimited. Does not implicitly {@link message.behaviour.Look.Pan.verify|verify} messages. + * @param {message.behaviour.Look.Pan$Properties} message Pan message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.behaviour.Look.Pan$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a Pan message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.behaviour.Look.Pan} Pan + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.behaviour.Look.Pan; + + /** + * Decodes a Pan message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.behaviour.Look.Pan} Pan + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.behaviour.Look.Pan; + + /** + * Verifies a Pan message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a Pan message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.behaviour.Look.Pan} Pan + */ + public static fromObject(object: { [k: string]: any }): message.behaviour.Look.Pan; + + /** + * Creates a Pan message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.behaviour.Look.Pan.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.behaviour.Look.Pan} Pan + */ + public static from(object: { [k: string]: any }): message.behaviour.Look.Pan; + + /** + * Creates a plain object from a Pan message. Also converts values to other types if specified. + * @param {message.behaviour.Look.Pan} message Pan + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.behaviour.Look.Pan, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this Pan message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this Pan to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type PanSelection$Properties = { + lookAtGoalInsteadOfBall?: boolean; + }; + + /** + * Constructs a new PanSelection. + * @exports message.behaviour.Look.PanSelection + * @constructor + * @param {message.behaviour.Look.PanSelection$Properties=} [properties] Properties to set + */ + class PanSelection { + + /** + * Constructs a new PanSelection. + * @exports message.behaviour.Look.PanSelection + * @constructor + * @param {message.behaviour.Look.PanSelection$Properties=} [properties] Properties to set + */ + constructor(properties?: message.behaviour.Look.PanSelection$Properties); + + /** + * PanSelection lookAtGoalInsteadOfBall. + * @type {boolean} + */ + public lookAtGoalInsteadOfBall: boolean; + + /** + * Creates a new PanSelection instance using the specified properties. + * @param {message.behaviour.Look.PanSelection$Properties=} [properties] Properties to set + * @returns {message.behaviour.Look.PanSelection} PanSelection instance + */ + public static create(properties?: message.behaviour.Look.PanSelection$Properties): message.behaviour.Look.PanSelection; + + /** + * Encodes the specified PanSelection message. Does not implicitly {@link message.behaviour.Look.PanSelection.verify|verify} messages. + * @param {message.behaviour.Look.PanSelection$Properties} message PanSelection message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.behaviour.Look.PanSelection$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified PanSelection message, length delimited. Does not implicitly {@link message.behaviour.Look.PanSelection.verify|verify} messages. + * @param {message.behaviour.Look.PanSelection$Properties} message PanSelection message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.behaviour.Look.PanSelection$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a PanSelection message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.behaviour.Look.PanSelection} PanSelection + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.behaviour.Look.PanSelection; + + /** + * Decodes a PanSelection message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.behaviour.Look.PanSelection} PanSelection + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.behaviour.Look.PanSelection; + + /** + * Verifies a PanSelection message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a PanSelection message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.behaviour.Look.PanSelection} PanSelection + */ + public static fromObject(object: { [k: string]: any }): message.behaviour.Look.PanSelection; + + /** + * Creates a PanSelection message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.behaviour.Look.PanSelection.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.behaviour.Look.PanSelection} PanSelection + */ + public static from(object: { [k: string]: any }): message.behaviour.Look.PanSelection; + + /** + * Creates a plain object from a PanSelection message. Also converts values to other types if specified. + * @param {message.behaviour.Look.PanSelection} message PanSelection + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.behaviour.Look.PanSelection, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this PanSelection message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this PanSelection to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + } + + type MotionCommand$Properties = { + type?: message.behaviour.MotionCommand.Type; + goalState?: vec3$Properties; + kickTarget?: vec2$Properties; + walkCommand?: vec3$Properties; + }; + + /** + * Constructs a new MotionCommand. + * @exports message.behaviour.MotionCommand + * @constructor + * @param {message.behaviour.MotionCommand$Properties=} [properties] Properties to set + */ + class MotionCommand { + + /** + * Constructs a new MotionCommand. + * @exports message.behaviour.MotionCommand + * @constructor + * @param {message.behaviour.MotionCommand$Properties=} [properties] Properties to set + */ + constructor(properties?: message.behaviour.MotionCommand$Properties); + + /** + * MotionCommand type. + * @type {message.behaviour.MotionCommand.Type} + */ + public type: message.behaviour.MotionCommand.Type; + + /** + * MotionCommand goalState. + * @type {(vec3$Properties|null)} + */ + public goalState: (vec3$Properties|null); + + /** + * MotionCommand kickTarget. + * @type {(vec2$Properties|null)} + */ + public kickTarget: (vec2$Properties|null); + + /** + * MotionCommand walkCommand. + * @type {(vec3$Properties|null)} + */ + public walkCommand: (vec3$Properties|null); + + /** + * Creates a new MotionCommand instance using the specified properties. + * @param {message.behaviour.MotionCommand$Properties=} [properties] Properties to set + * @returns {message.behaviour.MotionCommand} MotionCommand instance + */ + public static create(properties?: message.behaviour.MotionCommand$Properties): message.behaviour.MotionCommand; + + /** + * Encodes the specified MotionCommand message. Does not implicitly {@link message.behaviour.MotionCommand.verify|verify} messages. + * @param {message.behaviour.MotionCommand$Properties} message MotionCommand message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.behaviour.MotionCommand$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified MotionCommand message, length delimited. Does not implicitly {@link message.behaviour.MotionCommand.verify|verify} messages. + * @param {message.behaviour.MotionCommand$Properties} message MotionCommand message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.behaviour.MotionCommand$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a MotionCommand message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.behaviour.MotionCommand} MotionCommand + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.behaviour.MotionCommand; + + /** + * Decodes a MotionCommand message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.behaviour.MotionCommand} MotionCommand + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.behaviour.MotionCommand; + + /** + * Verifies a MotionCommand message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a MotionCommand message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.behaviour.MotionCommand} MotionCommand + */ + public static fromObject(object: { [k: string]: any }): message.behaviour.MotionCommand; + + /** + * Creates a MotionCommand message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.behaviour.MotionCommand.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.behaviour.MotionCommand} MotionCommand + */ + public static from(object: { [k: string]: any }): message.behaviour.MotionCommand; + + /** + * Creates a plain object from a MotionCommand message. Also converts values to other types if specified. + * @param {message.behaviour.MotionCommand} message MotionCommand + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.behaviour.MotionCommand, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this MotionCommand message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this MotionCommand to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + namespace MotionCommand { + + /** + * Type enum. + * @name Type + * @memberof message.behaviour.MotionCommand + * @enum {number} + * @property {number} StandStill=0 StandStill value + * @property {number} WalkToState=1 WalkToState value + * @property {number} BallApproach=2 BallApproach value + * @property {number} DirectCommand=3 DirectCommand value + */ + enum Type { + StandStill = 0, + WalkToState = 1, + BallApproach = 2, + DirectCommand = 3 + } + } + + type Nod$Properties = { + value?: boolean; + }; + + /** + * Constructs a new Nod. + * @exports message.behaviour.Nod + * @constructor + * @param {message.behaviour.Nod$Properties=} [properties] Properties to set + */ + class Nod { + + /** + * Constructs a new Nod. + * @exports message.behaviour.Nod + * @constructor + * @param {message.behaviour.Nod$Properties=} [properties] Properties to set + */ + constructor(properties?: message.behaviour.Nod$Properties); + + /** + * Nod value. + * @type {boolean} + */ + public value: boolean; + + /** + * Creates a new Nod instance using the specified properties. + * @param {message.behaviour.Nod$Properties=} [properties] Properties to set + * @returns {message.behaviour.Nod} Nod instance + */ + public static create(properties?: message.behaviour.Nod$Properties): message.behaviour.Nod; + + /** + * Encodes the specified Nod message. Does not implicitly {@link message.behaviour.Nod.verify|verify} messages. + * @param {message.behaviour.Nod$Properties} message Nod message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.behaviour.Nod$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Nod message, length delimited. Does not implicitly {@link message.behaviour.Nod.verify|verify} messages. + * @param {message.behaviour.Nod$Properties} message Nod message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.behaviour.Nod$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a Nod message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.behaviour.Nod} Nod + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.behaviour.Nod; + + /** + * Decodes a Nod message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.behaviour.Nod} Nod + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.behaviour.Nod; + + /** + * Verifies a Nod message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a Nod message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.behaviour.Nod} Nod + */ + public static fromObject(object: { [k: string]: any }): message.behaviour.Nod; + + /** + * Creates a Nod message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.behaviour.Nod.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.behaviour.Nod} Nod + */ + public static from(object: { [k: string]: any }): message.behaviour.Nod; + + /** + * Creates a plain object from a Nod message. Also converts values to other types if specified. + * @param {message.behaviour.Nod} message Nod + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.behaviour.Nod, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this Nod message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this Nod to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type ServoCommand$Properties = { + source?: (number|Long); + time?: google.protobuf.Timestamp$Properties; + id?: number; + position?: number; + gain?: number; + torque?: number; + }; + + /** + * Constructs a new ServoCommand. + * @exports message.behaviour.ServoCommand + * @constructor + * @param {message.behaviour.ServoCommand$Properties=} [properties] Properties to set + */ + class ServoCommand { + + /** + * Constructs a new ServoCommand. + * @exports message.behaviour.ServoCommand + * @constructor + * @param {message.behaviour.ServoCommand$Properties=} [properties] Properties to set + */ + constructor(properties?: message.behaviour.ServoCommand$Properties); + + /** + * ServoCommand source. + * @type {number|Long} + */ + public source: (number|Long); + + /** + * ServoCommand time. + * @type {(google.protobuf.Timestamp$Properties|null)} + */ + public time: (google.protobuf.Timestamp$Properties|null); + + /** + * ServoCommand id. + * @type {number} + */ + public id: number; + + /** + * ServoCommand position. + * @type {number} + */ + public position: number; + + /** + * ServoCommand gain. + * @type {number} + */ + public gain: number; + + /** + * ServoCommand torque. + * @type {number} + */ + public torque: number; + + /** + * Creates a new ServoCommand instance using the specified properties. + * @param {message.behaviour.ServoCommand$Properties=} [properties] Properties to set + * @returns {message.behaviour.ServoCommand} ServoCommand instance + */ + public static create(properties?: message.behaviour.ServoCommand$Properties): message.behaviour.ServoCommand; + + /** + * Encodes the specified ServoCommand message. Does not implicitly {@link message.behaviour.ServoCommand.verify|verify} messages. + * @param {message.behaviour.ServoCommand$Properties} message ServoCommand message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.behaviour.ServoCommand$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified ServoCommand message, length delimited. Does not implicitly {@link message.behaviour.ServoCommand.verify|verify} messages. + * @param {message.behaviour.ServoCommand$Properties} message ServoCommand message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.behaviour.ServoCommand$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a ServoCommand message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.behaviour.ServoCommand} ServoCommand + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.behaviour.ServoCommand; + + /** + * Decodes a ServoCommand message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.behaviour.ServoCommand} ServoCommand + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.behaviour.ServoCommand; + + /** + * Verifies a ServoCommand message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a ServoCommand message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.behaviour.ServoCommand} ServoCommand + */ + public static fromObject(object: { [k: string]: any }): message.behaviour.ServoCommand; + + /** + * Creates a ServoCommand message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.behaviour.ServoCommand.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.behaviour.ServoCommand} ServoCommand + */ + public static from(object: { [k: string]: any }): message.behaviour.ServoCommand; + + /** + * Creates a plain object from a ServoCommand message. Also converts values to other types if specified. + * @param {message.behaviour.ServoCommand} message ServoCommand + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.behaviour.ServoCommand, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this ServoCommand message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this ServoCommand to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type SoccerObjectPriority$Properties = { + ball?: number; + goal?: number; + line?: number; + searchType?: message.behaviour.SoccerObjectPriority.SearchType; + }; + + /** + * Constructs a new SoccerObjectPriority. + * @exports message.behaviour.SoccerObjectPriority + * @constructor + * @param {message.behaviour.SoccerObjectPriority$Properties=} [properties] Properties to set + */ + class SoccerObjectPriority { + + /** + * Constructs a new SoccerObjectPriority. + * @exports message.behaviour.SoccerObjectPriority + * @constructor + * @param {message.behaviour.SoccerObjectPriority$Properties=} [properties] Properties to set + */ + constructor(properties?: message.behaviour.SoccerObjectPriority$Properties); + + /** + * SoccerObjectPriority ball. + * @type {number} + */ + public ball: number; + + /** + * SoccerObjectPriority goal. + * @type {number} + */ + public goal: number; + + /** + * SoccerObjectPriority line. + * @type {number} + */ + public line: number; + + /** + * SoccerObjectPriority searchType. + * @type {message.behaviour.SoccerObjectPriority.SearchType} + */ + public searchType: message.behaviour.SoccerObjectPriority.SearchType; + + /** + * Creates a new SoccerObjectPriority instance using the specified properties. + * @param {message.behaviour.SoccerObjectPriority$Properties=} [properties] Properties to set + * @returns {message.behaviour.SoccerObjectPriority} SoccerObjectPriority instance + */ + public static create(properties?: message.behaviour.SoccerObjectPriority$Properties): message.behaviour.SoccerObjectPriority; + + /** + * Encodes the specified SoccerObjectPriority message. Does not implicitly {@link message.behaviour.SoccerObjectPriority.verify|verify} messages. + * @param {message.behaviour.SoccerObjectPriority$Properties} message SoccerObjectPriority message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.behaviour.SoccerObjectPriority$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified SoccerObjectPriority message, length delimited. Does not implicitly {@link message.behaviour.SoccerObjectPriority.verify|verify} messages. + * @param {message.behaviour.SoccerObjectPriority$Properties} message SoccerObjectPriority message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.behaviour.SoccerObjectPriority$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a SoccerObjectPriority message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.behaviour.SoccerObjectPriority} SoccerObjectPriority + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.behaviour.SoccerObjectPriority; + + /** + * Decodes a SoccerObjectPriority message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.behaviour.SoccerObjectPriority} SoccerObjectPriority + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.behaviour.SoccerObjectPriority; + + /** + * Verifies a SoccerObjectPriority message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a SoccerObjectPriority message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.behaviour.SoccerObjectPriority} SoccerObjectPriority + */ + public static fromObject(object: { [k: string]: any }): message.behaviour.SoccerObjectPriority; + + /** + * Creates a SoccerObjectPriority message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.behaviour.SoccerObjectPriority.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.behaviour.SoccerObjectPriority} SoccerObjectPriority + */ + public static from(object: { [k: string]: any }): message.behaviour.SoccerObjectPriority; + + /** + * Creates a plain object from a SoccerObjectPriority message. Also converts values to other types if specified. + * @param {message.behaviour.SoccerObjectPriority} message SoccerObjectPriority + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.behaviour.SoccerObjectPriority, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this SoccerObjectPriority message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this SoccerObjectPriority to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + namespace SoccerObjectPriority { + + /** + * SearchType enum. + * @name SearchType + * @memberof message.behaviour.SoccerObjectPriority + * @enum {number} + * @property {number} LOST=0 LOST value + * @property {number} FIND_ADDITIONAL_OBJECTS=1 FIND_ADDITIONAL_OBJECTS value + * @property {number} GOAL_SEARCH=2 GOAL_SEARCH value + * @property {number} GOAL_LEFT=3 GOAL_LEFT value + * @property {number} GOAL_RIGHT=4 GOAL_RIGHT value + * @property {number} GROUND_LEFT=5 GROUND_LEFT value + * @property {number} GROUND_RIGHT=6 GROUND_RIGHT value + * @property {number} OTHE=7 OTHE value + */ + enum SearchType { + LOST = 0, + FIND_ADDITIONAL_OBJECTS = 1, + GOAL_SEARCH = 2, + GOAL_LEFT = 3, + GOAL_RIGHT = 4, + GROUND_LEFT = 5, + GROUND_RIGHT = 6, + OTHE = 7 + } + } + + type Subsumption$Properties = { + actionRegister?: message.behaviour.Subsumption.ActionRegister$Properties[]; + actionStateChange?: message.behaviour.Subsumption.ActionStateChange$Properties[]; + actionPriorityChange?: message.behaviour.Subsumption.ActionPriorites$Properties[]; + }; + + /** + * Constructs a new Subsumption. + * @exports message.behaviour.Subsumption + * @constructor + * @param {message.behaviour.Subsumption$Properties=} [properties] Properties to set + */ + class Subsumption { + + /** + * Constructs a new Subsumption. + * @exports message.behaviour.Subsumption + * @constructor + * @param {message.behaviour.Subsumption$Properties=} [properties] Properties to set + */ + constructor(properties?: message.behaviour.Subsumption$Properties); + + /** + * Subsumption actionRegister. + * @type {Array.} + */ + public actionRegister: message.behaviour.Subsumption.ActionRegister$Properties[]; + + /** + * Subsumption actionStateChange. + * @type {Array.} + */ + public actionStateChange: message.behaviour.Subsumption.ActionStateChange$Properties[]; + + /** + * Subsumption actionPriorityChange. + * @type {Array.} + */ + public actionPriorityChange: message.behaviour.Subsumption.ActionPriorites$Properties[]; + + /** + * Creates a new Subsumption instance using the specified properties. + * @param {message.behaviour.Subsumption$Properties=} [properties] Properties to set + * @returns {message.behaviour.Subsumption} Subsumption instance + */ + public static create(properties?: message.behaviour.Subsumption$Properties): message.behaviour.Subsumption; + + /** + * Encodes the specified Subsumption message. Does not implicitly {@link message.behaviour.Subsumption.verify|verify} messages. + * @param {message.behaviour.Subsumption$Properties} message Subsumption message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.behaviour.Subsumption$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Subsumption message, length delimited. Does not implicitly {@link message.behaviour.Subsumption.verify|verify} messages. + * @param {message.behaviour.Subsumption$Properties} message Subsumption message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.behaviour.Subsumption$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a Subsumption message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.behaviour.Subsumption} Subsumption + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.behaviour.Subsumption; + + /** + * Decodes a Subsumption message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.behaviour.Subsumption} Subsumption + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.behaviour.Subsumption; + + /** + * Verifies a Subsumption message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a Subsumption message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.behaviour.Subsumption} Subsumption + */ + public static fromObject(object: { [k: string]: any }): message.behaviour.Subsumption; + + /** + * Creates a Subsumption message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.behaviour.Subsumption.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.behaviour.Subsumption} Subsumption + */ + public static from(object: { [k: string]: any }): message.behaviour.Subsumption; + + /** + * Creates a plain object from a Subsumption message. Also converts values to other types if specified. + * @param {message.behaviour.Subsumption} message Subsumption + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.behaviour.Subsumption, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this Subsumption message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this Subsumption to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + namespace Subsumption { + + type LimbSet$Properties = { + priority?: number; + limbs?: number[]; + }; + + /** + * Constructs a new LimbSet. + * @exports message.behaviour.Subsumption.LimbSet + * @constructor + * @param {message.behaviour.Subsumption.LimbSet$Properties=} [properties] Properties to set + */ + class LimbSet { + + /** + * Constructs a new LimbSet. + * @exports message.behaviour.Subsumption.LimbSet + * @constructor + * @param {message.behaviour.Subsumption.LimbSet$Properties=} [properties] Properties to set + */ + constructor(properties?: message.behaviour.Subsumption.LimbSet$Properties); + + /** + * LimbSet priority. + * @type {number} + */ + public priority: number; + + /** + * LimbSet limbs. + * @type {Array.} + */ + public limbs: number[]; + + /** + * Creates a new LimbSet instance using the specified properties. + * @param {message.behaviour.Subsumption.LimbSet$Properties=} [properties] Properties to set + * @returns {message.behaviour.Subsumption.LimbSet} LimbSet instance + */ + public static create(properties?: message.behaviour.Subsumption.LimbSet$Properties): message.behaviour.Subsumption.LimbSet; + + /** + * Encodes the specified LimbSet message. Does not implicitly {@link message.behaviour.Subsumption.LimbSet.verify|verify} messages. + * @param {message.behaviour.Subsumption.LimbSet$Properties} message LimbSet message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.behaviour.Subsumption.LimbSet$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified LimbSet message, length delimited. Does not implicitly {@link message.behaviour.Subsumption.LimbSet.verify|verify} messages. + * @param {message.behaviour.Subsumption.LimbSet$Properties} message LimbSet message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.behaviour.Subsumption.LimbSet$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a LimbSet message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.behaviour.Subsumption.LimbSet} LimbSet + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.behaviour.Subsumption.LimbSet; + + /** + * Decodes a LimbSet message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.behaviour.Subsumption.LimbSet} LimbSet + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.behaviour.Subsumption.LimbSet; + + /** + * Verifies a LimbSet message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a LimbSet message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.behaviour.Subsumption.LimbSet} LimbSet + */ + public static fromObject(object: { [k: string]: any }): message.behaviour.Subsumption.LimbSet; + + /** + * Creates a LimbSet message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.behaviour.Subsumption.LimbSet.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.behaviour.Subsumption.LimbSet} LimbSet + */ + public static from(object: { [k: string]: any }): message.behaviour.Subsumption.LimbSet; + + /** + * Creates a plain object from a LimbSet message. Also converts values to other types if specified. + * @param {message.behaviour.Subsumption.LimbSet} message LimbSet + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.behaviour.Subsumption.LimbSet, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this LimbSet message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this LimbSet to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type ActionRegister$Properties = { + id?: number; + name?: string; + limbSet?: message.behaviour.Subsumption.LimbSet$Properties[]; + }; + + /** + * Constructs a new ActionRegister. + * @exports message.behaviour.Subsumption.ActionRegister + * @constructor + * @param {message.behaviour.Subsumption.ActionRegister$Properties=} [properties] Properties to set + */ + class ActionRegister { + + /** + * Constructs a new ActionRegister. + * @exports message.behaviour.Subsumption.ActionRegister + * @constructor + * @param {message.behaviour.Subsumption.ActionRegister$Properties=} [properties] Properties to set + */ + constructor(properties?: message.behaviour.Subsumption.ActionRegister$Properties); + + /** + * ActionRegister id. + * @type {number} + */ + public id: number; + + /** + * ActionRegister name. + * @type {string} + */ + public name: string; + + /** + * ActionRegister limbSet. + * @type {Array.} + */ + public limbSet: message.behaviour.Subsumption.LimbSet$Properties[]; + + /** + * Creates a new ActionRegister instance using the specified properties. + * @param {message.behaviour.Subsumption.ActionRegister$Properties=} [properties] Properties to set + * @returns {message.behaviour.Subsumption.ActionRegister} ActionRegister instance + */ + public static create(properties?: message.behaviour.Subsumption.ActionRegister$Properties): message.behaviour.Subsumption.ActionRegister; + + /** + * Encodes the specified ActionRegister message. Does not implicitly {@link message.behaviour.Subsumption.ActionRegister.verify|verify} messages. + * @param {message.behaviour.Subsumption.ActionRegister$Properties} message ActionRegister message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.behaviour.Subsumption.ActionRegister$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified ActionRegister message, length delimited. Does not implicitly {@link message.behaviour.Subsumption.ActionRegister.verify|verify} messages. + * @param {message.behaviour.Subsumption.ActionRegister$Properties} message ActionRegister message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.behaviour.Subsumption.ActionRegister$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an ActionRegister message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.behaviour.Subsumption.ActionRegister} ActionRegister + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.behaviour.Subsumption.ActionRegister; + + /** + * Decodes an ActionRegister message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.behaviour.Subsumption.ActionRegister} ActionRegister + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.behaviour.Subsumption.ActionRegister; + + /** + * Verifies an ActionRegister message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates an ActionRegister message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.behaviour.Subsumption.ActionRegister} ActionRegister + */ + public static fromObject(object: { [k: string]: any }): message.behaviour.Subsumption.ActionRegister; + + /** + * Creates an ActionRegister message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.behaviour.Subsumption.ActionRegister.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.behaviour.Subsumption.ActionRegister} ActionRegister + */ + public static from(object: { [k: string]: any }): message.behaviour.Subsumption.ActionRegister; + + /** + * Creates a plain object from an ActionRegister message. Also converts values to other types if specified. + * @param {message.behaviour.Subsumption.ActionRegister} message ActionRegister + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.behaviour.Subsumption.ActionRegister, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this ActionRegister message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this ActionRegister to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type ActionStateChange$Properties = { + state?: message.behaviour.Subsumption.ActionStateChange.State; + name?: string; + limbs?: number[]; + }; + + /** + * Constructs a new ActionStateChange. + * @exports message.behaviour.Subsumption.ActionStateChange + * @constructor + * @param {message.behaviour.Subsumption.ActionStateChange$Properties=} [properties] Properties to set + */ + class ActionStateChange { + + /** + * Constructs a new ActionStateChange. + * @exports message.behaviour.Subsumption.ActionStateChange + * @constructor + * @param {message.behaviour.Subsumption.ActionStateChange$Properties=} [properties] Properties to set + */ + constructor(properties?: message.behaviour.Subsumption.ActionStateChange$Properties); + + /** + * ActionStateChange state. + * @type {message.behaviour.Subsumption.ActionStateChange.State} + */ + public state: message.behaviour.Subsumption.ActionStateChange.State; + + /** + * ActionStateChange name. + * @type {string} + */ + public name: string; + + /** + * ActionStateChange limbs. + * @type {Array.} + */ + public limbs: number[]; + + /** + * Creates a new ActionStateChange instance using the specified properties. + * @param {message.behaviour.Subsumption.ActionStateChange$Properties=} [properties] Properties to set + * @returns {message.behaviour.Subsumption.ActionStateChange} ActionStateChange instance + */ + public static create(properties?: message.behaviour.Subsumption.ActionStateChange$Properties): message.behaviour.Subsumption.ActionStateChange; + + /** + * Encodes the specified ActionStateChange message. Does not implicitly {@link message.behaviour.Subsumption.ActionStateChange.verify|verify} messages. + * @param {message.behaviour.Subsumption.ActionStateChange$Properties} message ActionStateChange message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.behaviour.Subsumption.ActionStateChange$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified ActionStateChange message, length delimited. Does not implicitly {@link message.behaviour.Subsumption.ActionStateChange.verify|verify} messages. + * @param {message.behaviour.Subsumption.ActionStateChange$Properties} message ActionStateChange message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.behaviour.Subsumption.ActionStateChange$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an ActionStateChange message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.behaviour.Subsumption.ActionStateChange} ActionStateChange + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.behaviour.Subsumption.ActionStateChange; + + /** + * Decodes an ActionStateChange message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.behaviour.Subsumption.ActionStateChange} ActionStateChange + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.behaviour.Subsumption.ActionStateChange; + + /** + * Verifies an ActionStateChange message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates an ActionStateChange message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.behaviour.Subsumption.ActionStateChange} ActionStateChange + */ + public static fromObject(object: { [k: string]: any }): message.behaviour.Subsumption.ActionStateChange; + + /** + * Creates an ActionStateChange message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.behaviour.Subsumption.ActionStateChange.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.behaviour.Subsumption.ActionStateChange} ActionStateChange + */ + public static from(object: { [k: string]: any }): message.behaviour.Subsumption.ActionStateChange; + + /** + * Creates a plain object from an ActionStateChange message. Also converts values to other types if specified. + * @param {message.behaviour.Subsumption.ActionStateChange} message ActionStateChange + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.behaviour.Subsumption.ActionStateChange, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this ActionStateChange message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this ActionStateChange to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + namespace ActionStateChange { + + /** + * State enum. + * @name State + * @memberof message.behaviour.Subsumption.ActionStateChange + * @enum {number} + * @property {number} UNKNOWN=0 UNKNOWN value + * @property {number} START=1 START value + * @property {number} KILL=2 KILL value + */ + enum State { + UNKNOWN = 0, + START = 1, + KILL = 2 + } + } + + type ActionPriorites$Properties = { + id?: number; + priorities?: number[]; + }; + + /** + * Constructs a new ActionPriorites. + * @exports message.behaviour.Subsumption.ActionPriorites + * @constructor + * @param {message.behaviour.Subsumption.ActionPriorites$Properties=} [properties] Properties to set + */ + class ActionPriorites { + + /** + * Constructs a new ActionPriorites. + * @exports message.behaviour.Subsumption.ActionPriorites + * @constructor + * @param {message.behaviour.Subsumption.ActionPriorites$Properties=} [properties] Properties to set + */ + constructor(properties?: message.behaviour.Subsumption.ActionPriorites$Properties); + + /** + * ActionPriorites id. + * @type {number} + */ + public id: number; + + /** + * ActionPriorites priorities. + * @type {Array.} + */ + public priorities: number[]; + + /** + * Creates a new ActionPriorites instance using the specified properties. + * @param {message.behaviour.Subsumption.ActionPriorites$Properties=} [properties] Properties to set + * @returns {message.behaviour.Subsumption.ActionPriorites} ActionPriorites instance + */ + public static create(properties?: message.behaviour.Subsumption.ActionPriorites$Properties): message.behaviour.Subsumption.ActionPriorites; + + /** + * Encodes the specified ActionPriorites message. Does not implicitly {@link message.behaviour.Subsumption.ActionPriorites.verify|verify} messages. + * @param {message.behaviour.Subsumption.ActionPriorites$Properties} message ActionPriorites message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.behaviour.Subsumption.ActionPriorites$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified ActionPriorites message, length delimited. Does not implicitly {@link message.behaviour.Subsumption.ActionPriorites.verify|verify} messages. + * @param {message.behaviour.Subsumption.ActionPriorites$Properties} message ActionPriorites message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.behaviour.Subsumption.ActionPriorites$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an ActionPriorites message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.behaviour.Subsumption.ActionPriorites} ActionPriorites + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.behaviour.Subsumption.ActionPriorites; + + /** + * Decodes an ActionPriorites message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.behaviour.Subsumption.ActionPriorites} ActionPriorites + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.behaviour.Subsumption.ActionPriorites; + + /** + * Verifies an ActionPriorites message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates an ActionPriorites message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.behaviour.Subsumption.ActionPriorites} ActionPriorites + */ + public static fromObject(object: { [k: string]: any }): message.behaviour.Subsumption.ActionPriorites; + + /** + * Creates an ActionPriorites message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.behaviour.Subsumption.ActionPriorites.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.behaviour.Subsumption.ActionPriorites} ActionPriorites + */ + public static from(object: { [k: string]: any }): message.behaviour.Subsumption.ActionPriorites; + + /** + * Creates a plain object from an ActionPriorites message. Also converts values to other types if specified. + * @param {message.behaviour.Subsumption.ActionPriorites} message ActionPriorites + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.behaviour.Subsumption.ActionPriorites, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this ActionPriorites message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this ActionPriorites to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + } + + type WalkPath$Properties = { + states?: vec3$Properties[]; + ballSpace?: vec3$Properties; + start?: vec3$Properties; + goal?: vec3$Properties; + command?: message.behaviour.MotionCommand$Properties; + }; + + /** + * Constructs a new WalkPath. + * @exports message.behaviour.WalkPath + * @constructor + * @param {message.behaviour.WalkPath$Properties=} [properties] Properties to set + */ + class WalkPath { + + /** + * Constructs a new WalkPath. + * @exports message.behaviour.WalkPath + * @constructor + * @param {message.behaviour.WalkPath$Properties=} [properties] Properties to set + */ + constructor(properties?: message.behaviour.WalkPath$Properties); + + /** + * WalkPath states. + * @type {Array.} + */ + public states: vec3$Properties[]; + + /** + * WalkPath ballSpace. + * @type {(vec3$Properties|null)} + */ + public ballSpace: (vec3$Properties|null); + + /** + * WalkPath start. + * @type {(vec3$Properties|null)} + */ + public start: (vec3$Properties|null); + + /** + * WalkPath goal. + * @type {(vec3$Properties|null)} + */ + public goal: (vec3$Properties|null); + + /** + * WalkPath command. + * @type {(message.behaviour.MotionCommand$Properties|null)} + */ + public command: (message.behaviour.MotionCommand$Properties|null); + + /** + * Creates a new WalkPath instance using the specified properties. + * @param {message.behaviour.WalkPath$Properties=} [properties] Properties to set + * @returns {message.behaviour.WalkPath} WalkPath instance + */ + public static create(properties?: message.behaviour.WalkPath$Properties): message.behaviour.WalkPath; + + /** + * Encodes the specified WalkPath message. Does not implicitly {@link message.behaviour.WalkPath.verify|verify} messages. + * @param {message.behaviour.WalkPath$Properties} message WalkPath message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.behaviour.WalkPath$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified WalkPath message, length delimited. Does not implicitly {@link message.behaviour.WalkPath.verify|verify} messages. + * @param {message.behaviour.WalkPath$Properties} message WalkPath message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.behaviour.WalkPath$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a WalkPath message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.behaviour.WalkPath} WalkPath + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.behaviour.WalkPath; + + /** + * Decodes a WalkPath message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.behaviour.WalkPath} WalkPath + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.behaviour.WalkPath; + + /** + * Verifies a WalkPath message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a WalkPath message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.behaviour.WalkPath} WalkPath + */ + public static fromObject(object: { [k: string]: any }): message.behaviour.WalkPath; + + /** + * Creates a WalkPath message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.behaviour.WalkPath.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.behaviour.WalkPath} WalkPath + */ + public static from(object: { [k: string]: any }): message.behaviour.WalkPath; + + /** + * Creates a plain object from a WalkPath message. Also converts values to other types if specified. + * @param {message.behaviour.WalkPath} message WalkPath + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.behaviour.WalkPath, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this WalkPath message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this WalkPath to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + } + + /** + * Namespace input. + * @exports message.input + * @namespace + */ + namespace input { + + type CameraParameters$Properties = { + imageSizePixels?: uvec2$Properties; + FOV?: vec2$Properties; + pixelsToTanThetaFactor?: vec2$Properties; + focalLengthPixels?: number; + distortionFactor?: number; + }; + + /** + * Constructs a new CameraParameters. + * @exports message.input.CameraParameters + * @constructor + * @param {message.input.CameraParameters$Properties=} [properties] Properties to set + */ + class CameraParameters { + + /** + * Constructs a new CameraParameters. + * @exports message.input.CameraParameters + * @constructor + * @param {message.input.CameraParameters$Properties=} [properties] Properties to set + */ + constructor(properties?: message.input.CameraParameters$Properties); + + /** + * CameraParameters imageSizePixels. + * @type {(uvec2$Properties|null)} + */ + public imageSizePixels: (uvec2$Properties|null); + + /** + * CameraParameters FOV. + * @type {(vec2$Properties|null)} + */ + public FOV: (vec2$Properties|null); + + /** + * CameraParameters pixelsToTanThetaFactor. + * @type {(vec2$Properties|null)} + */ + public pixelsToTanThetaFactor: (vec2$Properties|null); + + /** + * CameraParameters focalLengthPixels. + * @type {number} + */ + public focalLengthPixels: number; + + /** + * CameraParameters distortionFactor. + * @type {number} + */ + public distortionFactor: number; + + /** + * Creates a new CameraParameters instance using the specified properties. + * @param {message.input.CameraParameters$Properties=} [properties] Properties to set + * @returns {message.input.CameraParameters} CameraParameters instance + */ + public static create(properties?: message.input.CameraParameters$Properties): message.input.CameraParameters; + + /** + * Encodes the specified CameraParameters message. Does not implicitly {@link message.input.CameraParameters.verify|verify} messages. + * @param {message.input.CameraParameters$Properties} message CameraParameters message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.input.CameraParameters$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified CameraParameters message, length delimited. Does not implicitly {@link message.input.CameraParameters.verify|verify} messages. + * @param {message.input.CameraParameters$Properties} message CameraParameters message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.input.CameraParameters$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a CameraParameters message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.input.CameraParameters} CameraParameters + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.input.CameraParameters; + + /** + * Decodes a CameraParameters message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.input.CameraParameters} CameraParameters + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.input.CameraParameters; + + /** + * Verifies a CameraParameters message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a CameraParameters message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.input.CameraParameters} CameraParameters + */ + public static fromObject(object: { [k: string]: any }): message.input.CameraParameters; + + /** + * Creates a CameraParameters message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.input.CameraParameters.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.input.CameraParameters} CameraParameters + */ + public static from(object: { [k: string]: any }): message.input.CameraParameters; + + /** + * Creates a plain object from a CameraParameters message. Also converts values to other types if specified. + * @param {message.input.CameraParameters} message CameraParameters + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.input.CameraParameters, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this CameraParameters message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this CameraParameters to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type GameEvents$Properties = {}; + + /** + * Constructs a new GameEvents. + * @exports message.input.GameEvents + * @constructor + * @param {message.input.GameEvents$Properties=} [properties] Properties to set + */ + class GameEvents { + + /** + * Constructs a new GameEvents. + * @exports message.input.GameEvents + * @constructor + * @param {message.input.GameEvents$Properties=} [properties] Properties to set + */ + constructor(properties?: message.input.GameEvents$Properties); + + /** + * Creates a new GameEvents instance using the specified properties. + * @param {message.input.GameEvents$Properties=} [properties] Properties to set + * @returns {message.input.GameEvents} GameEvents instance + */ + public static create(properties?: message.input.GameEvents$Properties): message.input.GameEvents; + + /** + * Encodes the specified GameEvents message. Does not implicitly {@link message.input.GameEvents.verify|verify} messages. + * @param {message.input.GameEvents$Properties} message GameEvents message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.input.GameEvents$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified GameEvents message, length delimited. Does not implicitly {@link message.input.GameEvents.verify|verify} messages. + * @param {message.input.GameEvents$Properties} message GameEvents message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.input.GameEvents$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a GameEvents message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.input.GameEvents} GameEvents + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.input.GameEvents; + + /** + * Decodes a GameEvents message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.input.GameEvents} GameEvents + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.input.GameEvents; + + /** + * Verifies a GameEvents message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a GameEvents message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.input.GameEvents} GameEvents + */ + public static fromObject(object: { [k: string]: any }): message.input.GameEvents; + + /** + * Creates a GameEvents message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.input.GameEvents.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.input.GameEvents} GameEvents + */ + public static from(object: { [k: string]: any }): message.input.GameEvents; + + /** + * Creates a plain object from a GameEvents message. Also converts values to other types if specified. + * @param {message.input.GameEvents} message GameEvents + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.input.GameEvents, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this GameEvents message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this GameEvents to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + namespace GameEvents { + + /** + * Context enum. + * @name Context + * @memberof message.input.GameEvents + * @enum {number} + * @property {number} UNKNOWN_CONTEXT=0 UNKNOWN_CONTEXT value + * @property {number} SELF=1 SELF value + * @property {number} TEAM=2 TEAM value + * @property {number} OPPONENT=3 OPPONENT value + * @property {number} UNKNOWN=4 UNKNOWN value + */ + enum Context { + UNKNOWN_CONTEXT = 0, + SELF = 1, + TEAM = 2, + OPPONENT = 3, + UNKNOWN = 4 + } + + /** + * TeamColour enum. + * @name TeamColour + * @memberof message.input.GameEvents + * @enum {number} + * @property {number} UNKNOWN_TEAM_COLOUR=0 UNKNOWN_TEAM_COLOUR value + * @property {number} CYAN=1 CYAN value + * @property {number} MAGENTA=2 MAGENTA value + */ + enum TeamColour { + UNKNOWN_TEAM_COLOUR = 0, + CYAN = 1, + MAGENTA = 2 + } + + type Score$Properties = { + ownScore?: number; + opponentScore?: number; + }; + + /** + * Constructs a new Score. + * @exports message.input.GameEvents.Score + * @constructor + * @param {message.input.GameEvents.Score$Properties=} [properties] Properties to set + */ + class Score { + + /** + * Constructs a new Score. + * @exports message.input.GameEvents.Score + * @constructor + * @param {message.input.GameEvents.Score$Properties=} [properties] Properties to set + */ + constructor(properties?: message.input.GameEvents.Score$Properties); + + /** + * Score ownScore. + * @type {number} + */ + public ownScore: number; + + /** + * Score opponentScore. + * @type {number} + */ + public opponentScore: number; + + /** + * Creates a new Score instance using the specified properties. + * @param {message.input.GameEvents.Score$Properties=} [properties] Properties to set + * @returns {message.input.GameEvents.Score} Score instance + */ + public static create(properties?: message.input.GameEvents.Score$Properties): message.input.GameEvents.Score; + + /** + * Encodes the specified Score message. Does not implicitly {@link message.input.GameEvents.Score.verify|verify} messages. + * @param {message.input.GameEvents.Score$Properties} message Score message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.input.GameEvents.Score$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Score message, length delimited. Does not implicitly {@link message.input.GameEvents.Score.verify|verify} messages. + * @param {message.input.GameEvents.Score$Properties} message Score message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.input.GameEvents.Score$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a Score message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.input.GameEvents.Score} Score + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.input.GameEvents.Score; + + /** + * Decodes a Score message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.input.GameEvents.Score} Score + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.input.GameEvents.Score; + + /** + * Verifies a Score message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a Score message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.input.GameEvents.Score} Score + */ + public static fromObject(object: { [k: string]: any }): message.input.GameEvents.Score; + + /** + * Creates a Score message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.input.GameEvents.Score.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.input.GameEvents.Score} Score + */ + public static from(object: { [k: string]: any }): message.input.GameEvents.Score; + + /** + * Creates a plain object from a Score message. Also converts values to other types if specified. + * @param {message.input.GameEvents.Score} message Score + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.input.GameEvents.Score, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this Score message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this Score to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type GoalScored$Properties = { + context?: message.input.GameEvents.Context; + totalScore?: number; + }; + + /** + * Constructs a new GoalScored. + * @exports message.input.GameEvents.GoalScored + * @constructor + * @param {message.input.GameEvents.GoalScored$Properties=} [properties] Properties to set + */ + class GoalScored { + + /** + * Constructs a new GoalScored. + * @exports message.input.GameEvents.GoalScored + * @constructor + * @param {message.input.GameEvents.GoalScored$Properties=} [properties] Properties to set + */ + constructor(properties?: message.input.GameEvents.GoalScored$Properties); + + /** + * GoalScored context. + * @type {message.input.GameEvents.Context} + */ + public context: message.input.GameEvents.Context; + + /** + * GoalScored totalScore. + * @type {number} + */ + public totalScore: number; + + /** + * Creates a new GoalScored instance using the specified properties. + * @param {message.input.GameEvents.GoalScored$Properties=} [properties] Properties to set + * @returns {message.input.GameEvents.GoalScored} GoalScored instance + */ + public static create(properties?: message.input.GameEvents.GoalScored$Properties): message.input.GameEvents.GoalScored; + + /** + * Encodes the specified GoalScored message. Does not implicitly {@link message.input.GameEvents.GoalScored.verify|verify} messages. + * @param {message.input.GameEvents.GoalScored$Properties} message GoalScored message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.input.GameEvents.GoalScored$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified GoalScored message, length delimited. Does not implicitly {@link message.input.GameEvents.GoalScored.verify|verify} messages. + * @param {message.input.GameEvents.GoalScored$Properties} message GoalScored message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.input.GameEvents.GoalScored$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a GoalScored message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.input.GameEvents.GoalScored} GoalScored + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.input.GameEvents.GoalScored; + + /** + * Decodes a GoalScored message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.input.GameEvents.GoalScored} GoalScored + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.input.GameEvents.GoalScored; + + /** + * Verifies a GoalScored message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a GoalScored message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.input.GameEvents.GoalScored} GoalScored + */ + public static fromObject(object: { [k: string]: any }): message.input.GameEvents.GoalScored; + + /** + * Creates a GoalScored message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.input.GameEvents.GoalScored.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.input.GameEvents.GoalScored} GoalScored + */ + public static from(object: { [k: string]: any }): message.input.GameEvents.GoalScored; + + /** + * Creates a plain object from a GoalScored message. Also converts values to other types if specified. + * @param {message.input.GameEvents.GoalScored} message GoalScored + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.input.GameEvents.GoalScored, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this GoalScored message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this GoalScored to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type Penalisation$Properties = { + context?: message.input.GameEvents.Context; + robotId?: number; + ends?: google.protobuf.Timestamp$Properties; + reason?: message.input.GameState.Data.PenaltyReason; + }; + + /** + * Constructs a new Penalisation. + * @exports message.input.GameEvents.Penalisation + * @constructor + * @param {message.input.GameEvents.Penalisation$Properties=} [properties] Properties to set + */ + class Penalisation { + + /** + * Constructs a new Penalisation. + * @exports message.input.GameEvents.Penalisation + * @constructor + * @param {message.input.GameEvents.Penalisation$Properties=} [properties] Properties to set + */ + constructor(properties?: message.input.GameEvents.Penalisation$Properties); + + /** + * Penalisation context. + * @type {message.input.GameEvents.Context} + */ + public context: message.input.GameEvents.Context; + + /** + * Penalisation robotId. + * @type {number} + */ + public robotId: number; + + /** + * Penalisation ends. + * @type {(google.protobuf.Timestamp$Properties|null)} + */ + public ends: (google.protobuf.Timestamp$Properties|null); + + /** + * Penalisation reason. + * @type {message.input.GameState.Data.PenaltyReason} + */ + public reason: message.input.GameState.Data.PenaltyReason; + + /** + * Creates a new Penalisation instance using the specified properties. + * @param {message.input.GameEvents.Penalisation$Properties=} [properties] Properties to set + * @returns {message.input.GameEvents.Penalisation} Penalisation instance + */ + public static create(properties?: message.input.GameEvents.Penalisation$Properties): message.input.GameEvents.Penalisation; + + /** + * Encodes the specified Penalisation message. Does not implicitly {@link message.input.GameEvents.Penalisation.verify|verify} messages. + * @param {message.input.GameEvents.Penalisation$Properties} message Penalisation message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.input.GameEvents.Penalisation$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Penalisation message, length delimited. Does not implicitly {@link message.input.GameEvents.Penalisation.verify|verify} messages. + * @param {message.input.GameEvents.Penalisation$Properties} message Penalisation message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.input.GameEvents.Penalisation$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a Penalisation message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.input.GameEvents.Penalisation} Penalisation + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.input.GameEvents.Penalisation; + + /** + * Decodes a Penalisation message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.input.GameEvents.Penalisation} Penalisation + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.input.GameEvents.Penalisation; + + /** + * Verifies a Penalisation message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a Penalisation message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.input.GameEvents.Penalisation} Penalisation + */ + public static fromObject(object: { [k: string]: any }): message.input.GameEvents.Penalisation; + + /** + * Creates a Penalisation message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.input.GameEvents.Penalisation.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.input.GameEvents.Penalisation} Penalisation + */ + public static from(object: { [k: string]: any }): message.input.GameEvents.Penalisation; + + /** + * Creates a plain object from a Penalisation message. Also converts values to other types if specified. + * @param {message.input.GameEvents.Penalisation} message Penalisation + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.input.GameEvents.Penalisation, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this Penalisation message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this Penalisation to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type Unpenalisation$Properties = { + context?: message.input.GameEvents.Context; + robotId?: number; + }; + + /** + * Constructs a new Unpenalisation. + * @exports message.input.GameEvents.Unpenalisation + * @constructor + * @param {message.input.GameEvents.Unpenalisation$Properties=} [properties] Properties to set + */ + class Unpenalisation { + + /** + * Constructs a new Unpenalisation. + * @exports message.input.GameEvents.Unpenalisation + * @constructor + * @param {message.input.GameEvents.Unpenalisation$Properties=} [properties] Properties to set + */ + constructor(properties?: message.input.GameEvents.Unpenalisation$Properties); + + /** + * Unpenalisation context. + * @type {message.input.GameEvents.Context} + */ + public context: message.input.GameEvents.Context; + + /** + * Unpenalisation robotId. + * @type {number} + */ + public robotId: number; + + /** + * Creates a new Unpenalisation instance using the specified properties. + * @param {message.input.GameEvents.Unpenalisation$Properties=} [properties] Properties to set + * @returns {message.input.GameEvents.Unpenalisation} Unpenalisation instance + */ + public static create(properties?: message.input.GameEvents.Unpenalisation$Properties): message.input.GameEvents.Unpenalisation; + + /** + * Encodes the specified Unpenalisation message. Does not implicitly {@link message.input.GameEvents.Unpenalisation.verify|verify} messages. + * @param {message.input.GameEvents.Unpenalisation$Properties} message Unpenalisation message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.input.GameEvents.Unpenalisation$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Unpenalisation message, length delimited. Does not implicitly {@link message.input.GameEvents.Unpenalisation.verify|verify} messages. + * @param {message.input.GameEvents.Unpenalisation$Properties} message Unpenalisation message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.input.GameEvents.Unpenalisation$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an Unpenalisation message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.input.GameEvents.Unpenalisation} Unpenalisation + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.input.GameEvents.Unpenalisation; + + /** + * Decodes an Unpenalisation message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.input.GameEvents.Unpenalisation} Unpenalisation + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.input.GameEvents.Unpenalisation; + + /** + * Verifies an Unpenalisation message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates an Unpenalisation message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.input.GameEvents.Unpenalisation} Unpenalisation + */ + public static fromObject(object: { [k: string]: any }): message.input.GameEvents.Unpenalisation; + + /** + * Creates an Unpenalisation message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.input.GameEvents.Unpenalisation.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.input.GameEvents.Unpenalisation} Unpenalisation + */ + public static from(object: { [k: string]: any }): message.input.GameEvents.Unpenalisation; + + /** + * Creates a plain object from an Unpenalisation message. Also converts values to other types if specified. + * @param {message.input.GameEvents.Unpenalisation} message Unpenalisation + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.input.GameEvents.Unpenalisation, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this Unpenalisation message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this Unpenalisation to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type CoachMessage$Properties = { + context?: message.input.GameEvents.Context; + message?: string; + }; + + /** + * Constructs a new CoachMessage. + * @exports message.input.GameEvents.CoachMessage + * @constructor + * @param {message.input.GameEvents.CoachMessage$Properties=} [properties] Properties to set + */ + class CoachMessage { + + /** + * Constructs a new CoachMessage. + * @exports message.input.GameEvents.CoachMessage + * @constructor + * @param {message.input.GameEvents.CoachMessage$Properties=} [properties] Properties to set + */ + constructor(properties?: message.input.GameEvents.CoachMessage$Properties); + + /** + * CoachMessage context. + * @type {message.input.GameEvents.Context} + */ + public context: message.input.GameEvents.Context; + + /** + * CoachMessage message. + * @type {string} + */ + public message: string; + + /** + * Creates a new CoachMessage instance using the specified properties. + * @param {message.input.GameEvents.CoachMessage$Properties=} [properties] Properties to set + * @returns {message.input.GameEvents.CoachMessage} CoachMessage instance + */ + public static create(properties?: message.input.GameEvents.CoachMessage$Properties): message.input.GameEvents.CoachMessage; + + /** + * Encodes the specified CoachMessage message. Does not implicitly {@link message.input.GameEvents.CoachMessage.verify|verify} messages. + * @param {message.input.GameEvents.CoachMessage$Properties} message CoachMessage message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.input.GameEvents.CoachMessage$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified CoachMessage message, length delimited. Does not implicitly {@link message.input.GameEvents.CoachMessage.verify|verify} messages. + * @param {message.input.GameEvents.CoachMessage$Properties} message CoachMessage message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.input.GameEvents.CoachMessage$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a CoachMessage message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.input.GameEvents.CoachMessage} CoachMessage + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.input.GameEvents.CoachMessage; + + /** + * Decodes a CoachMessage message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.input.GameEvents.CoachMessage} CoachMessage + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.input.GameEvents.CoachMessage; + + /** + * Verifies a CoachMessage message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a CoachMessage message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.input.GameEvents.CoachMessage} CoachMessage + */ + public static fromObject(object: { [k: string]: any }): message.input.GameEvents.CoachMessage; + + /** + * Creates a CoachMessage message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.input.GameEvents.CoachMessage.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.input.GameEvents.CoachMessage} CoachMessage + */ + public static from(object: { [k: string]: any }): message.input.GameEvents.CoachMessage; + + /** + * Creates a plain object from a CoachMessage message. Also converts values to other types if specified. + * @param {message.input.GameEvents.CoachMessage} message CoachMessage + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.input.GameEvents.CoachMessage, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this CoachMessage message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this CoachMessage to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type HalfTime$Properties = { + firstHalf?: boolean; + }; + + /** + * Constructs a new HalfTime. + * @exports message.input.GameEvents.HalfTime + * @constructor + * @param {message.input.GameEvents.HalfTime$Properties=} [properties] Properties to set + */ + class HalfTime { + + /** + * Constructs a new HalfTime. + * @exports message.input.GameEvents.HalfTime + * @constructor + * @param {message.input.GameEvents.HalfTime$Properties=} [properties] Properties to set + */ + constructor(properties?: message.input.GameEvents.HalfTime$Properties); + + /** + * HalfTime firstHalf. + * @type {boolean} + */ + public firstHalf: boolean; + + /** + * Creates a new HalfTime instance using the specified properties. + * @param {message.input.GameEvents.HalfTime$Properties=} [properties] Properties to set + * @returns {message.input.GameEvents.HalfTime} HalfTime instance + */ + public static create(properties?: message.input.GameEvents.HalfTime$Properties): message.input.GameEvents.HalfTime; + + /** + * Encodes the specified HalfTime message. Does not implicitly {@link message.input.GameEvents.HalfTime.verify|verify} messages. + * @param {message.input.GameEvents.HalfTime$Properties} message HalfTime message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.input.GameEvents.HalfTime$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified HalfTime message, length delimited. Does not implicitly {@link message.input.GameEvents.HalfTime.verify|verify} messages. + * @param {message.input.GameEvents.HalfTime$Properties} message HalfTime message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.input.GameEvents.HalfTime$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a HalfTime message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.input.GameEvents.HalfTime} HalfTime + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.input.GameEvents.HalfTime; + + /** + * Decodes a HalfTime message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.input.GameEvents.HalfTime} HalfTime + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.input.GameEvents.HalfTime; + + /** + * Verifies a HalfTime message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a HalfTime message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.input.GameEvents.HalfTime} HalfTime + */ + public static fromObject(object: { [k: string]: any }): message.input.GameEvents.HalfTime; + + /** + * Creates a HalfTime message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.input.GameEvents.HalfTime.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.input.GameEvents.HalfTime} HalfTime + */ + public static from(object: { [k: string]: any }): message.input.GameEvents.HalfTime; + + /** + * Creates a plain object from a HalfTime message. Also converts values to other types if specified. + * @param {message.input.GameEvents.HalfTime} message HalfTime + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.input.GameEvents.HalfTime, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this HalfTime message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this HalfTime to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type BallKickedOut$Properties = { + context?: message.input.GameEvents.Context; + time?: google.protobuf.Timestamp$Properties; + }; + + /** + * Constructs a new BallKickedOut. + * @exports message.input.GameEvents.BallKickedOut + * @constructor + * @param {message.input.GameEvents.BallKickedOut$Properties=} [properties] Properties to set + */ + class BallKickedOut { + + /** + * Constructs a new BallKickedOut. + * @exports message.input.GameEvents.BallKickedOut + * @constructor + * @param {message.input.GameEvents.BallKickedOut$Properties=} [properties] Properties to set + */ + constructor(properties?: message.input.GameEvents.BallKickedOut$Properties); + + /** + * BallKickedOut context. + * @type {message.input.GameEvents.Context} + */ + public context: message.input.GameEvents.Context; + + /** + * BallKickedOut time. + * @type {(google.protobuf.Timestamp$Properties|null)} + */ + public time: (google.protobuf.Timestamp$Properties|null); + + /** + * Creates a new BallKickedOut instance using the specified properties. + * @param {message.input.GameEvents.BallKickedOut$Properties=} [properties] Properties to set + * @returns {message.input.GameEvents.BallKickedOut} BallKickedOut instance + */ + public static create(properties?: message.input.GameEvents.BallKickedOut$Properties): message.input.GameEvents.BallKickedOut; + + /** + * Encodes the specified BallKickedOut message. Does not implicitly {@link message.input.GameEvents.BallKickedOut.verify|verify} messages. + * @param {message.input.GameEvents.BallKickedOut$Properties} message BallKickedOut message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.input.GameEvents.BallKickedOut$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified BallKickedOut message, length delimited. Does not implicitly {@link message.input.GameEvents.BallKickedOut.verify|verify} messages. + * @param {message.input.GameEvents.BallKickedOut$Properties} message BallKickedOut message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.input.GameEvents.BallKickedOut$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a BallKickedOut message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.input.GameEvents.BallKickedOut} BallKickedOut + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.input.GameEvents.BallKickedOut; + + /** + * Decodes a BallKickedOut message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.input.GameEvents.BallKickedOut} BallKickedOut + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.input.GameEvents.BallKickedOut; + + /** + * Verifies a BallKickedOut message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a BallKickedOut message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.input.GameEvents.BallKickedOut} BallKickedOut + */ + public static fromObject(object: { [k: string]: any }): message.input.GameEvents.BallKickedOut; + + /** + * Creates a BallKickedOut message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.input.GameEvents.BallKickedOut.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.input.GameEvents.BallKickedOut} BallKickedOut + */ + public static from(object: { [k: string]: any }): message.input.GameEvents.BallKickedOut; + + /** + * Creates a plain object from a BallKickedOut message. Also converts values to other types if specified. + * @param {message.input.GameEvents.BallKickedOut} message BallKickedOut + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.input.GameEvents.BallKickedOut, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this BallKickedOut message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this BallKickedOut to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type KickOffTeam$Properties = { + context?: message.input.GameEvents.Context; + }; + + /** + * Constructs a new KickOffTeam. + * @exports message.input.GameEvents.KickOffTeam + * @constructor + * @param {message.input.GameEvents.KickOffTeam$Properties=} [properties] Properties to set + */ + class KickOffTeam { + + /** + * Constructs a new KickOffTeam. + * @exports message.input.GameEvents.KickOffTeam + * @constructor + * @param {message.input.GameEvents.KickOffTeam$Properties=} [properties] Properties to set + */ + constructor(properties?: message.input.GameEvents.KickOffTeam$Properties); + + /** + * KickOffTeam context. + * @type {message.input.GameEvents.Context} + */ + public context: message.input.GameEvents.Context; + + /** + * Creates a new KickOffTeam instance using the specified properties. + * @param {message.input.GameEvents.KickOffTeam$Properties=} [properties] Properties to set + * @returns {message.input.GameEvents.KickOffTeam} KickOffTeam instance + */ + public static create(properties?: message.input.GameEvents.KickOffTeam$Properties): message.input.GameEvents.KickOffTeam; + + /** + * Encodes the specified KickOffTeam message. Does not implicitly {@link message.input.GameEvents.KickOffTeam.verify|verify} messages. + * @param {message.input.GameEvents.KickOffTeam$Properties} message KickOffTeam message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.input.GameEvents.KickOffTeam$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified KickOffTeam message, length delimited. Does not implicitly {@link message.input.GameEvents.KickOffTeam.verify|verify} messages. + * @param {message.input.GameEvents.KickOffTeam$Properties} message KickOffTeam message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.input.GameEvents.KickOffTeam$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a KickOffTeam message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.input.GameEvents.KickOffTeam} KickOffTeam + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.input.GameEvents.KickOffTeam; + + /** + * Decodes a KickOffTeam message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.input.GameEvents.KickOffTeam} KickOffTeam + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.input.GameEvents.KickOffTeam; + + /** + * Verifies a KickOffTeam message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a KickOffTeam message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.input.GameEvents.KickOffTeam} KickOffTeam + */ + public static fromObject(object: { [k: string]: any }): message.input.GameEvents.KickOffTeam; + + /** + * Creates a KickOffTeam message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.input.GameEvents.KickOffTeam.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.input.GameEvents.KickOffTeam} KickOffTeam + */ + public static from(object: { [k: string]: any }): message.input.GameEvents.KickOffTeam; + + /** + * Creates a plain object from a KickOffTeam message. Also converts values to other types if specified. + * @param {message.input.GameEvents.KickOffTeam} message KickOffTeam + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.input.GameEvents.KickOffTeam, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this KickOffTeam message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this KickOffTeam to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type GamePhase$Properties = { + phase?: message.input.GameState.Data.Phase; + readyTime?: google.protobuf.Timestamp$Properties; + endHalf?: google.protobuf.Timestamp$Properties; + ballFree?: google.protobuf.Timestamp$Properties; + ends?: google.protobuf.Timestamp$Properties; + nextHalf?: google.protobuf.Timestamp$Properties; + }; + + /** + * Constructs a new GamePhase. + * @exports message.input.GameEvents.GamePhase + * @constructor + * @param {message.input.GameEvents.GamePhase$Properties=} [properties] Properties to set + */ + class GamePhase { + + /** + * Constructs a new GamePhase. + * @exports message.input.GameEvents.GamePhase + * @constructor + * @param {message.input.GameEvents.GamePhase$Properties=} [properties] Properties to set + */ + constructor(properties?: message.input.GameEvents.GamePhase$Properties); + + /** + * GamePhase phase. + * @type {message.input.GameState.Data.Phase} + */ + public phase: message.input.GameState.Data.Phase; + + /** + * GamePhase readyTime. + * @type {(google.protobuf.Timestamp$Properties|null)} + */ + public readyTime: (google.protobuf.Timestamp$Properties|null); + + /** + * GamePhase endHalf. + * @type {(google.protobuf.Timestamp$Properties|null)} + */ + public endHalf: (google.protobuf.Timestamp$Properties|null); + + /** + * GamePhase ballFree. + * @type {(google.protobuf.Timestamp$Properties|null)} + */ + public ballFree: (google.protobuf.Timestamp$Properties|null); + + /** + * GamePhase ends. + * @type {(google.protobuf.Timestamp$Properties|null)} + */ + public ends: (google.protobuf.Timestamp$Properties|null); + + /** + * GamePhase nextHalf. + * @type {(google.protobuf.Timestamp$Properties|null)} + */ + public nextHalf: (google.protobuf.Timestamp$Properties|null); + + /** + * Creates a new GamePhase instance using the specified properties. + * @param {message.input.GameEvents.GamePhase$Properties=} [properties] Properties to set + * @returns {message.input.GameEvents.GamePhase} GamePhase instance + */ + public static create(properties?: message.input.GameEvents.GamePhase$Properties): message.input.GameEvents.GamePhase; + + /** + * Encodes the specified GamePhase message. Does not implicitly {@link message.input.GameEvents.GamePhase.verify|verify} messages. + * @param {message.input.GameEvents.GamePhase$Properties} message GamePhase message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.input.GameEvents.GamePhase$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified GamePhase message, length delimited. Does not implicitly {@link message.input.GameEvents.GamePhase.verify|verify} messages. + * @param {message.input.GameEvents.GamePhase$Properties} message GamePhase message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.input.GameEvents.GamePhase$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a GamePhase message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.input.GameEvents.GamePhase} GamePhase + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.input.GameEvents.GamePhase; + + /** + * Decodes a GamePhase message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.input.GameEvents.GamePhase} GamePhase + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.input.GameEvents.GamePhase; + + /** + * Verifies a GamePhase message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a GamePhase message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.input.GameEvents.GamePhase} GamePhase + */ + public static fromObject(object: { [k: string]: any }): message.input.GameEvents.GamePhase; + + /** + * Creates a GamePhase message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.input.GameEvents.GamePhase.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.input.GameEvents.GamePhase} GamePhase + */ + public static from(object: { [k: string]: any }): message.input.GameEvents.GamePhase; + + /** + * Creates a plain object from a GamePhase message. Also converts values to other types if specified. + * @param {message.input.GameEvents.GamePhase} message GamePhase + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.input.GameEvents.GamePhase, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this GamePhase message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this GamePhase to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type GameMode$Properties = { + mode?: message.input.GameState.Data.Mode; + }; + + /** + * Constructs a new GameMode. + * @exports message.input.GameEvents.GameMode + * @constructor + * @param {message.input.GameEvents.GameMode$Properties=} [properties] Properties to set + */ + class GameMode { + + /** + * Constructs a new GameMode. + * @exports message.input.GameEvents.GameMode + * @constructor + * @param {message.input.GameEvents.GameMode$Properties=} [properties] Properties to set + */ + constructor(properties?: message.input.GameEvents.GameMode$Properties); + + /** + * GameMode mode. + * @type {message.input.GameState.Data.Mode} + */ + public mode: message.input.GameState.Data.Mode; + + /** + * Creates a new GameMode instance using the specified properties. + * @param {message.input.GameEvents.GameMode$Properties=} [properties] Properties to set + * @returns {message.input.GameEvents.GameMode} GameMode instance + */ + public static create(properties?: message.input.GameEvents.GameMode$Properties): message.input.GameEvents.GameMode; + + /** + * Encodes the specified GameMode message. Does not implicitly {@link message.input.GameEvents.GameMode.verify|verify} messages. + * @param {message.input.GameEvents.GameMode$Properties} message GameMode message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.input.GameEvents.GameMode$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified GameMode message, length delimited. Does not implicitly {@link message.input.GameEvents.GameMode.verify|verify} messages. + * @param {message.input.GameEvents.GameMode$Properties} message GameMode message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.input.GameEvents.GameMode$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a GameMode message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.input.GameEvents.GameMode} GameMode + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.input.GameEvents.GameMode; + + /** + * Decodes a GameMode message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.input.GameEvents.GameMode} GameMode + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.input.GameEvents.GameMode; + + /** + * Verifies a GameMode message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a GameMode message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.input.GameEvents.GameMode} GameMode + */ + public static fromObject(object: { [k: string]: any }): message.input.GameEvents.GameMode; + + /** + * Creates a GameMode message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.input.GameEvents.GameMode.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.input.GameEvents.GameMode} GameMode + */ + public static from(object: { [k: string]: any }): message.input.GameEvents.GameMode; + + /** + * Creates a plain object from a GameMode message. Also converts values to other types if specified. + * @param {message.input.GameEvents.GameMode} message GameMode + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.input.GameEvents.GameMode, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this GameMode message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this GameMode to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + } + + type GameState$Properties = { + data?: message.input.GameState.Data$Properties; + event?: string; + }; + + /** + * Constructs a new GameState. + * @exports message.input.GameState + * @constructor + * @param {message.input.GameState$Properties=} [properties] Properties to set + */ + class GameState { + + /** + * Constructs a new GameState. + * @exports message.input.GameState + * @constructor + * @param {message.input.GameState$Properties=} [properties] Properties to set + */ + constructor(properties?: message.input.GameState$Properties); + + /** + * GameState data. + * @type {(message.input.GameState.Data$Properties|null)} + */ + public data: (message.input.GameState.Data$Properties|null); + + /** + * GameState event. + * @type {string} + */ + public event: string; + + /** + * Creates a new GameState instance using the specified properties. + * @param {message.input.GameState$Properties=} [properties] Properties to set + * @returns {message.input.GameState} GameState instance + */ + public static create(properties?: message.input.GameState$Properties): message.input.GameState; + + /** + * Encodes the specified GameState message. Does not implicitly {@link message.input.GameState.verify|verify} messages. + * @param {message.input.GameState$Properties} message GameState message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.input.GameState$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified GameState message, length delimited. Does not implicitly {@link message.input.GameState.verify|verify} messages. + * @param {message.input.GameState$Properties} message GameState message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.input.GameState$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a GameState message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.input.GameState} GameState + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.input.GameState; + + /** + * Decodes a GameState message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.input.GameState} GameState + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.input.GameState; + + /** + * Verifies a GameState message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a GameState message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.input.GameState} GameState + */ + public static fromObject(object: { [k: string]: any }): message.input.GameState; + + /** + * Creates a GameState message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.input.GameState.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.input.GameState} GameState + */ + public static from(object: { [k: string]: any }): message.input.GameState; + + /** + * Creates a plain object from a GameState message. Also converts values to other types if specified. + * @param {message.input.GameState} message GameState + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.input.GameState, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this GameState message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this GameState to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + namespace GameState { + + type Data$Properties = { + phase?: message.input.GameState.Data.Phase; + mode?: message.input.GameState.Data.Mode; + firstHalf?: boolean; + kickedOutByUs?: boolean; + kickedOutTime?: google.protobuf.Timestamp$Properties; + ourKickOff?: boolean; + primaryTime?: google.protobuf.Timestamp$Properties; + secondaryTime?: google.protobuf.Timestamp$Properties; + team?: message.input.GameState.Data.Team$Properties; + opponent?: message.input.GameState.Data.Team$Properties; + self?: message.input.GameState.Data.Robot$Properties; + }; + + /** + * Constructs a new Data. + * @exports message.input.GameState.Data + * @constructor + * @param {message.input.GameState.Data$Properties=} [properties] Properties to set + */ + class Data { + + /** + * Constructs a new Data. + * @exports message.input.GameState.Data + * @constructor + * @param {message.input.GameState.Data$Properties=} [properties] Properties to set + */ + constructor(properties?: message.input.GameState.Data$Properties); + + /** + * Data phase. + * @type {message.input.GameState.Data.Phase} + */ + public phase: message.input.GameState.Data.Phase; + + /** + * Data mode. + * @type {message.input.GameState.Data.Mode} + */ + public mode: message.input.GameState.Data.Mode; + + /** + * Data firstHalf. + * @type {boolean} + */ + public firstHalf: boolean; + + /** + * Data kickedOutByUs. + * @type {boolean} + */ + public kickedOutByUs: boolean; + + /** + * Data kickedOutTime. + * @type {(google.protobuf.Timestamp$Properties|null)} + */ + public kickedOutTime: (google.protobuf.Timestamp$Properties|null); + + /** + * Data ourKickOff. + * @type {boolean} + */ + public ourKickOff: boolean; + + /** + * Data primaryTime. + * @type {(google.protobuf.Timestamp$Properties|null)} + */ + public primaryTime: (google.protobuf.Timestamp$Properties|null); + + /** + * Data secondaryTime. + * @type {(google.protobuf.Timestamp$Properties|null)} + */ + public secondaryTime: (google.protobuf.Timestamp$Properties|null); + + /** + * Data team. + * @type {(message.input.GameState.Data.Team$Properties|null)} + */ + public team: (message.input.GameState.Data.Team$Properties|null); + + /** + * Data opponent. + * @type {(message.input.GameState.Data.Team$Properties|null)} + */ + public opponent: (message.input.GameState.Data.Team$Properties|null); + + /** + * Data self. + * @type {(message.input.GameState.Data.Robot$Properties|null)} + */ + public self: (message.input.GameState.Data.Robot$Properties|null); + + /** + * Creates a new Data instance using the specified properties. + * @param {message.input.GameState.Data$Properties=} [properties] Properties to set + * @returns {message.input.GameState.Data} Data instance + */ + public static create(properties?: message.input.GameState.Data$Properties): message.input.GameState.Data; + + /** + * Encodes the specified Data message. Does not implicitly {@link message.input.GameState.Data.verify|verify} messages. + * @param {message.input.GameState.Data$Properties} message Data message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.input.GameState.Data$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Data message, length delimited. Does not implicitly {@link message.input.GameState.Data.verify|verify} messages. + * @param {message.input.GameState.Data$Properties} message Data message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.input.GameState.Data$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a Data message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.input.GameState.Data} Data + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.input.GameState.Data; + + /** + * Decodes a Data message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.input.GameState.Data} Data + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.input.GameState.Data; + + /** + * Verifies a Data message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a Data message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.input.GameState.Data} Data + */ + public static fromObject(object: { [k: string]: any }): message.input.GameState.Data; + + /** + * Creates a Data message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.input.GameState.Data.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.input.GameState.Data} Data + */ + public static from(object: { [k: string]: any }): message.input.GameState.Data; + + /** + * Creates a plain object from a Data message. Also converts values to other types if specified. + * @param {message.input.GameState.Data} message Data + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.input.GameState.Data, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this Data message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this Data to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + namespace Data { + + /** + * Mode enum. + * @name Mode + * @memberof message.input.GameState.Data + * @enum {number} + * @property {number} UNKNOWN_MODE=0 UNKNOWN_MODE value + * @property {number} NORMAL=1 NORMAL value + * @property {number} PENALTY_SHOOTOUT=2 PENALTY_SHOOTOUT value + * @property {number} OVERTIME=3 OVERTIME value + */ + enum Mode { + UNKNOWN_MODE = 0, + NORMAL = 1, + PENALTY_SHOOTOUT = 2, + OVERTIME = 3 + } + + /** + * Phase enum. + * @name Phase + * @memberof message.input.GameState.Data + * @enum {number} + * @property {number} UNKNOWN_PHASE=0 UNKNOWN_PHASE value + * @property {number} INITIAL=1 INITIAL value + * @property {number} READY=2 READY value + * @property {number} SET=3 SET value + * @property {number} PLAYING=4 PLAYING value + * @property {number} TIMEOUT=5 TIMEOUT value + * @property {number} FINISHED=6 FINISHED value + */ + enum Phase { + UNKNOWN_PHASE = 0, + INITIAL = 1, + READY = 2, + SET = 3, + PLAYING = 4, + TIMEOUT = 5, + FINISHED = 6 + } + + /** + * PenaltyReason enum. + * @name PenaltyReason + * @memberof message.input.GameState.Data + * @enum {number} + * @property {number} UNKNOWN_PENALTY_REASON=0 UNKNOWN_PENALTY_REASON value + * @property {number} UNPENALISED=1 UNPENALISED value + * @property {number} BALL_MANIPULATION=2 BALL_MANIPULATION value + * @property {number} PHYSICAL_CONTACT=3 PHYSICAL_CONTACT value + * @property {number} ILLEGAL_ATTACK=4 ILLEGAL_ATTACK value + * @property {number} ILLEGAL_DEFENSE=5 ILLEGAL_DEFENSE value + * @property {number} REQUEST_FOR_PICKUP=6 REQUEST_FOR_PICKUP value + * @property {number} REQUEST_FOR_SERVICE=7 REQUEST_FOR_SERVICE value + * @property {number} REQUEST_FOR_PICKUP_TO_SERVICE=8 REQUEST_FOR_PICKUP_TO_SERVICE value + * @property {number} SUBSTITUTE=9 SUBSTITUTE value + * @property {number} MANUAL=10 MANUAL value + */ + enum PenaltyReason { + UNKNOWN_PENALTY_REASON = 0, + UNPENALISED = 1, + BALL_MANIPULATION = 2, + PHYSICAL_CONTACT = 3, + ILLEGAL_ATTACK = 4, + ILLEGAL_DEFENSE = 5, + REQUEST_FOR_PICKUP = 6, + REQUEST_FOR_SERVICE = 7, + REQUEST_FOR_PICKUP_TO_SERVICE = 8, + SUBSTITUTE = 9, + MANUAL = 10 + } + + type Robot$Properties = { + id?: number; + penaltyReason?: message.input.GameState.Data.PenaltyReason; + unpenalised?: google.protobuf.Timestamp$Properties; + }; + + /** + * Constructs a new Robot. + * @exports message.input.GameState.Data.Robot + * @constructor + * @param {message.input.GameState.Data.Robot$Properties=} [properties] Properties to set + */ + class Robot { + + /** + * Constructs a new Robot. + * @exports message.input.GameState.Data.Robot + * @constructor + * @param {message.input.GameState.Data.Robot$Properties=} [properties] Properties to set + */ + constructor(properties?: message.input.GameState.Data.Robot$Properties); + + /** + * Robot id. + * @type {number} + */ + public id: number; + + /** + * Robot penaltyReason. + * @type {message.input.GameState.Data.PenaltyReason} + */ + public penaltyReason: message.input.GameState.Data.PenaltyReason; + + /** + * Robot unpenalised. + * @type {(google.protobuf.Timestamp$Properties|null)} + */ + public unpenalised: (google.protobuf.Timestamp$Properties|null); + + /** + * Creates a new Robot instance using the specified properties. + * @param {message.input.GameState.Data.Robot$Properties=} [properties] Properties to set + * @returns {message.input.GameState.Data.Robot} Robot instance + */ + public static create(properties?: message.input.GameState.Data.Robot$Properties): message.input.GameState.Data.Robot; + + /** + * Encodes the specified Robot message. Does not implicitly {@link message.input.GameState.Data.Robot.verify|verify} messages. + * @param {message.input.GameState.Data.Robot$Properties} message Robot message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.input.GameState.Data.Robot$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Robot message, length delimited. Does not implicitly {@link message.input.GameState.Data.Robot.verify|verify} messages. + * @param {message.input.GameState.Data.Robot$Properties} message Robot message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.input.GameState.Data.Robot$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a Robot message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.input.GameState.Data.Robot} Robot + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.input.GameState.Data.Robot; + + /** + * Decodes a Robot message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.input.GameState.Data.Robot} Robot + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.input.GameState.Data.Robot; + + /** + * Verifies a Robot message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a Robot message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.input.GameState.Data.Robot} Robot + */ + public static fromObject(object: { [k: string]: any }): message.input.GameState.Data.Robot; + + /** + * Creates a Robot message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.input.GameState.Data.Robot.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.input.GameState.Data.Robot} Robot + */ + public static from(object: { [k: string]: any }): message.input.GameState.Data.Robot; + + /** + * Creates a plain object from a Robot message. Also converts values to other types if specified. + * @param {message.input.GameState.Data.Robot} message Robot + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.input.GameState.Data.Robot, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this Robot message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this Robot to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type Team$Properties = { + teamId?: number; + score?: number; + coachMessage?: string; + players?: message.input.GameState.Data.Robot$Properties[]; + }; + + /** + * Constructs a new Team. + * @exports message.input.GameState.Data.Team + * @constructor + * @param {message.input.GameState.Data.Team$Properties=} [properties] Properties to set + */ + class Team { + + /** + * Constructs a new Team. + * @exports message.input.GameState.Data.Team + * @constructor + * @param {message.input.GameState.Data.Team$Properties=} [properties] Properties to set + */ + constructor(properties?: message.input.GameState.Data.Team$Properties); + + /** + * Team teamId. + * @type {number} + */ + public teamId: number; + + /** + * Team score. + * @type {number} + */ + public score: number; + + /** + * Team coachMessage. + * @type {string} + */ + public coachMessage: string; + + /** + * Team players. + * @type {Array.} + */ + public players: message.input.GameState.Data.Robot$Properties[]; + + /** + * Creates a new Team instance using the specified properties. + * @param {message.input.GameState.Data.Team$Properties=} [properties] Properties to set + * @returns {message.input.GameState.Data.Team} Team instance + */ + public static create(properties?: message.input.GameState.Data.Team$Properties): message.input.GameState.Data.Team; + + /** + * Encodes the specified Team message. Does not implicitly {@link message.input.GameState.Data.Team.verify|verify} messages. + * @param {message.input.GameState.Data.Team$Properties} message Team message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.input.GameState.Data.Team$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Team message, length delimited. Does not implicitly {@link message.input.GameState.Data.Team.verify|verify} messages. + * @param {message.input.GameState.Data.Team$Properties} message Team message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.input.GameState.Data.Team$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a Team message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.input.GameState.Data.Team} Team + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.input.GameState.Data.Team; + + /** + * Decodes a Team message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.input.GameState.Data.Team} Team + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.input.GameState.Data.Team; + + /** + * Verifies a Team message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a Team message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.input.GameState.Data.Team} Team + */ + public static fromObject(object: { [k: string]: any }): message.input.GameState.Data.Team; + + /** + * Creates a Team message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.input.GameState.Data.Team.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.input.GameState.Data.Team} Team + */ + public static from(object: { [k: string]: any }): message.input.GameState.Data.Team; + + /** + * Creates a plain object from a Team message. Also converts values to other types if specified. + * @param {message.input.GameState.Data.Team} message Team + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.input.GameState.Data.Team, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this Team message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this Team to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + } + } + + type Image$Properties = { + format?: number; + dimensions?: uvec2$Properties; + data?: Uint8Array; + cameraId?: number; + serialNumber?: string; + timestamp?: google.protobuf.Timestamp$Properties; + }; + + /** + * Constructs a new Image. + * @exports message.input.Image + * @constructor + * @param {message.input.Image$Properties=} [properties] Properties to set + */ + class Image { + + /** + * Constructs a new Image. + * @exports message.input.Image + * @constructor + * @param {message.input.Image$Properties=} [properties] Properties to set + */ + constructor(properties?: message.input.Image$Properties); + + /** + * Image format. + * @type {number} + */ + public format: number; + + /** + * Image dimensions. + * @type {(uvec2$Properties|null)} + */ + public dimensions: (uvec2$Properties|null); + + /** + * Image data. + * @type {Uint8Array} + */ + public data: Uint8Array; + + /** + * Image cameraId. + * @type {number} + */ + public cameraId: number; + + /** + * Image serialNumber. + * @type {string} + */ + public serialNumber: string; + + /** + * Image timestamp. + * @type {(google.protobuf.Timestamp$Properties|null)} + */ + public timestamp: (google.protobuf.Timestamp$Properties|null); + + /** + * Creates a new Image instance using the specified properties. + * @param {message.input.Image$Properties=} [properties] Properties to set + * @returns {message.input.Image} Image instance + */ + public static create(properties?: message.input.Image$Properties): message.input.Image; + + /** + * Encodes the specified Image message. Does not implicitly {@link message.input.Image.verify|verify} messages. + * @param {message.input.Image$Properties} message Image message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.input.Image$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Image message, length delimited. Does not implicitly {@link message.input.Image.verify|verify} messages. + * @param {message.input.Image$Properties} message Image message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.input.Image$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an Image message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.input.Image} Image + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.input.Image; + + /** + * Decodes an Image message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.input.Image} Image + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.input.Image; + + /** + * Verifies an Image message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates an Image message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.input.Image} Image + */ + public static fromObject(object: { [k: string]: any }): message.input.Image; + + /** + * Creates an Image message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.input.Image.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.input.Image} Image + */ + public static from(object: { [k: string]: any }): message.input.Image; + + /** + * Creates a plain object from an Image message. Also converts values to other types if specified. + * @param {message.input.Image} message Image + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.input.Image, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this Image message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this Image to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type ImageFragment$Properties = { + image?: message.input.Image$Properties; + start?: number; + end?: number; + camToFeet?: fmat44$Properties; + }; + + /** + * Constructs a new ImageFragment. + * @exports message.input.ImageFragment + * @constructor + * @param {message.input.ImageFragment$Properties=} [properties] Properties to set + */ + class ImageFragment { + + /** + * Constructs a new ImageFragment. + * @exports message.input.ImageFragment + * @constructor + * @param {message.input.ImageFragment$Properties=} [properties] Properties to set + */ + constructor(properties?: message.input.ImageFragment$Properties); + + /** + * ImageFragment image. + * @type {(message.input.Image$Properties|null)} + */ + public image: (message.input.Image$Properties|null); + + /** + * ImageFragment start. + * @type {number} + */ + public start: number; + + /** + * ImageFragment end. + * @type {number} + */ + public end: number; + + /** + * ImageFragment camToFeet. + * @type {(fmat44$Properties|null)} + */ + public camToFeet: (fmat44$Properties|null); + + /** + * Creates a new ImageFragment instance using the specified properties. + * @param {message.input.ImageFragment$Properties=} [properties] Properties to set + * @returns {message.input.ImageFragment} ImageFragment instance + */ + public static create(properties?: message.input.ImageFragment$Properties): message.input.ImageFragment; + + /** + * Encodes the specified ImageFragment message. Does not implicitly {@link message.input.ImageFragment.verify|verify} messages. + * @param {message.input.ImageFragment$Properties} message ImageFragment message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.input.ImageFragment$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified ImageFragment message, length delimited. Does not implicitly {@link message.input.ImageFragment.verify|verify} messages. + * @param {message.input.ImageFragment$Properties} message ImageFragment message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.input.ImageFragment$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an ImageFragment message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.input.ImageFragment} ImageFragment + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.input.ImageFragment; + + /** + * Decodes an ImageFragment message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.input.ImageFragment} ImageFragment + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.input.ImageFragment; + + /** + * Verifies an ImageFragment message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates an ImageFragment message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.input.ImageFragment} ImageFragment + */ + public static fromObject(object: { [k: string]: any }): message.input.ImageFragment; + + /** + * Creates an ImageFragment message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.input.ImageFragment.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.input.ImageFragment} ImageFragment + */ + public static from(object: { [k: string]: any }): message.input.ImageFragment; + + /** + * Creates a plain object from an ImageFragment message. Also converts values to other types if specified. + * @param {message.input.ImageFragment} message ImageFragment + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.input.ImageFragment, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this ImageFragment message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this ImageFragment to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type MotionCapture$Properties = { + frameNumber?: number; + latency?: number; + timecode?: number; + timecodeSub?: number; + timestamp?: number; + recording?: boolean; + trackedModelsChanged?: boolean; + markerSets?: message.input.MotionCapture.MarkerSet$Properties[]; + markers?: message.input.MotionCapture.Marker$Properties[]; + rigidBodies?: message.input.MotionCapture.RigidBody$Properties[]; + skeletons?: message.input.MotionCapture.Skeleton$Properties[]; + labeledMarkers?: message.input.MotionCapture.LabeledMarker$Properties[]; + forcePlates?: message.input.MotionCapture.ForcePlate$Properties[]; + }; + + /** + * Constructs a new MotionCapture. + * @exports message.input.MotionCapture + * @constructor + * @param {message.input.MotionCapture$Properties=} [properties] Properties to set + */ + class MotionCapture { + + /** + * Constructs a new MotionCapture. + * @exports message.input.MotionCapture + * @constructor + * @param {message.input.MotionCapture$Properties=} [properties] Properties to set + */ + constructor(properties?: message.input.MotionCapture$Properties); + + /** + * MotionCapture frameNumber. + * @type {number} + */ + public frameNumber: number; + + /** + * MotionCapture latency. + * @type {number} + */ + public latency: number; + + /** + * MotionCapture timecode. + * @type {number} + */ + public timecode: number; + + /** + * MotionCapture timecodeSub. + * @type {number} + */ + public timecodeSub: number; + + /** + * MotionCapture timestamp. + * @type {number} + */ + public timestamp: number; + + /** + * MotionCapture recording. + * @type {boolean} + */ + public recording: boolean; + + /** + * MotionCapture trackedModelsChanged. + * @type {boolean} + */ + public trackedModelsChanged: boolean; + + /** + * MotionCapture markerSets. + * @type {Array.} + */ + public markerSets: message.input.MotionCapture.MarkerSet$Properties[]; + + /** + * MotionCapture markers. + * @type {Array.} + */ + public markers: message.input.MotionCapture.Marker$Properties[]; + + /** + * MotionCapture rigidBodies. + * @type {Array.} + */ + public rigidBodies: message.input.MotionCapture.RigidBody$Properties[]; + + /** + * MotionCapture skeletons. + * @type {Array.} + */ + public skeletons: message.input.MotionCapture.Skeleton$Properties[]; + + /** + * MotionCapture labeledMarkers. + * @type {Array.} + */ + public labeledMarkers: message.input.MotionCapture.LabeledMarker$Properties[]; + + /** + * MotionCapture forcePlates. + * @type {Array.} + */ + public forcePlates: message.input.MotionCapture.ForcePlate$Properties[]; + + /** + * Creates a new MotionCapture instance using the specified properties. + * @param {message.input.MotionCapture$Properties=} [properties] Properties to set + * @returns {message.input.MotionCapture} MotionCapture instance + */ + public static create(properties?: message.input.MotionCapture$Properties): message.input.MotionCapture; + + /** + * Encodes the specified MotionCapture message. Does not implicitly {@link message.input.MotionCapture.verify|verify} messages. + * @param {message.input.MotionCapture$Properties} message MotionCapture message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.input.MotionCapture$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified MotionCapture message, length delimited. Does not implicitly {@link message.input.MotionCapture.verify|verify} messages. + * @param {message.input.MotionCapture$Properties} message MotionCapture message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.input.MotionCapture$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a MotionCapture message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.input.MotionCapture} MotionCapture + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.input.MotionCapture; + + /** + * Decodes a MotionCapture message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.input.MotionCapture} MotionCapture + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.input.MotionCapture; + + /** + * Verifies a MotionCapture message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a MotionCapture message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.input.MotionCapture} MotionCapture + */ + public static fromObject(object: { [k: string]: any }): message.input.MotionCapture; + + /** + * Creates a MotionCapture message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.input.MotionCapture.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.input.MotionCapture} MotionCapture + */ + public static from(object: { [k: string]: any }): message.input.MotionCapture; + + /** + * Creates a plain object from a MotionCapture message. Also converts values to other types if specified. + * @param {message.input.MotionCapture} message MotionCapture + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.input.MotionCapture, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this MotionCapture message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this MotionCapture to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + namespace MotionCapture { + + type Marker$Properties = { + id?: number; + position?: fvec3$Properties; + size?: number; + }; + + /** + * Constructs a new Marker. + * @exports message.input.MotionCapture.Marker + * @constructor + * @param {message.input.MotionCapture.Marker$Properties=} [properties] Properties to set + */ + class Marker { + + /** + * Constructs a new Marker. + * @exports message.input.MotionCapture.Marker + * @constructor + * @param {message.input.MotionCapture.Marker$Properties=} [properties] Properties to set + */ + constructor(properties?: message.input.MotionCapture.Marker$Properties); + + /** + * Marker id. + * @type {number} + */ + public id: number; + + /** + * Marker position. + * @type {(fvec3$Properties|null)} + */ + public position: (fvec3$Properties|null); + + /** + * Marker size. + * @type {number} + */ + public size: number; + + /** + * Creates a new Marker instance using the specified properties. + * @param {message.input.MotionCapture.Marker$Properties=} [properties] Properties to set + * @returns {message.input.MotionCapture.Marker} Marker instance + */ + public static create(properties?: message.input.MotionCapture.Marker$Properties): message.input.MotionCapture.Marker; + + /** + * Encodes the specified Marker message. Does not implicitly {@link message.input.MotionCapture.Marker.verify|verify} messages. + * @param {message.input.MotionCapture.Marker$Properties} message Marker message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.input.MotionCapture.Marker$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Marker message, length delimited. Does not implicitly {@link message.input.MotionCapture.Marker.verify|verify} messages. + * @param {message.input.MotionCapture.Marker$Properties} message Marker message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.input.MotionCapture.Marker$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a Marker message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.input.MotionCapture.Marker} Marker + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.input.MotionCapture.Marker; + + /** + * Decodes a Marker message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.input.MotionCapture.Marker} Marker + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.input.MotionCapture.Marker; + + /** + * Verifies a Marker message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a Marker message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.input.MotionCapture.Marker} Marker + */ + public static fromObject(object: { [k: string]: any }): message.input.MotionCapture.Marker; + + /** + * Creates a Marker message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.input.MotionCapture.Marker.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.input.MotionCapture.Marker} Marker + */ + public static from(object: { [k: string]: any }): message.input.MotionCapture.Marker; + + /** + * Creates a plain object from a Marker message. Also converts values to other types if specified. + * @param {message.input.MotionCapture.Marker} message Marker + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.input.MotionCapture.Marker, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this Marker message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this Marker to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type MarkerSet$Properties = { + name?: string; + markers?: message.input.MotionCapture.Marker$Properties[]; + }; + + /** + * Constructs a new MarkerSet. + * @exports message.input.MotionCapture.MarkerSet + * @constructor + * @param {message.input.MotionCapture.MarkerSet$Properties=} [properties] Properties to set + */ + class MarkerSet { + + /** + * Constructs a new MarkerSet. + * @exports message.input.MotionCapture.MarkerSet + * @constructor + * @param {message.input.MotionCapture.MarkerSet$Properties=} [properties] Properties to set + */ + constructor(properties?: message.input.MotionCapture.MarkerSet$Properties); + + /** + * MarkerSet name. + * @type {string} + */ + public name: string; + + /** + * MarkerSet markers. + * @type {Array.} + */ + public markers: message.input.MotionCapture.Marker$Properties[]; + + /** + * Creates a new MarkerSet instance using the specified properties. + * @param {message.input.MotionCapture.MarkerSet$Properties=} [properties] Properties to set + * @returns {message.input.MotionCapture.MarkerSet} MarkerSet instance + */ + public static create(properties?: message.input.MotionCapture.MarkerSet$Properties): message.input.MotionCapture.MarkerSet; + + /** + * Encodes the specified MarkerSet message. Does not implicitly {@link message.input.MotionCapture.MarkerSet.verify|verify} messages. + * @param {message.input.MotionCapture.MarkerSet$Properties} message MarkerSet message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.input.MotionCapture.MarkerSet$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified MarkerSet message, length delimited. Does not implicitly {@link message.input.MotionCapture.MarkerSet.verify|verify} messages. + * @param {message.input.MotionCapture.MarkerSet$Properties} message MarkerSet message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.input.MotionCapture.MarkerSet$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a MarkerSet message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.input.MotionCapture.MarkerSet} MarkerSet + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.input.MotionCapture.MarkerSet; + + /** + * Decodes a MarkerSet message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.input.MotionCapture.MarkerSet} MarkerSet + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.input.MotionCapture.MarkerSet; + + /** + * Verifies a MarkerSet message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a MarkerSet message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.input.MotionCapture.MarkerSet} MarkerSet + */ + public static fromObject(object: { [k: string]: any }): message.input.MotionCapture.MarkerSet; + + /** + * Creates a MarkerSet message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.input.MotionCapture.MarkerSet.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.input.MotionCapture.MarkerSet} MarkerSet + */ + public static from(object: { [k: string]: any }): message.input.MotionCapture.MarkerSet; + + /** + * Creates a plain object from a MarkerSet message. Also converts values to other types if specified. + * @param {message.input.MotionCapture.MarkerSet} message MarkerSet + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.input.MotionCapture.MarkerSet, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this MarkerSet message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this MarkerSet to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type RigidBody$Properties = { + id?: number; + position?: fvec3$Properties; + rotation?: fvec4$Properties; + markers?: message.input.MotionCapture.Marker$Properties[]; + error?: number; + trackingValid?: boolean; + name?: string; + offset?: fvec3$Properties; + parent?: number; + children?: number[]; + }; + + /** + * Constructs a new RigidBody. + * @exports message.input.MotionCapture.RigidBody + * @constructor + * @param {message.input.MotionCapture.RigidBody$Properties=} [properties] Properties to set + */ + class RigidBody { + + /** + * Constructs a new RigidBody. + * @exports message.input.MotionCapture.RigidBody + * @constructor + * @param {message.input.MotionCapture.RigidBody$Properties=} [properties] Properties to set + */ + constructor(properties?: message.input.MotionCapture.RigidBody$Properties); + + /** + * RigidBody id. + * @type {number} + */ + public id: number; + + /** + * RigidBody position. + * @type {(fvec3$Properties|null)} + */ + public position: (fvec3$Properties|null); + + /** + * RigidBody rotation. + * @type {(fvec4$Properties|null)} + */ + public rotation: (fvec4$Properties|null); + + /** + * RigidBody markers. + * @type {Array.} + */ + public markers: message.input.MotionCapture.Marker$Properties[]; + + /** + * RigidBody error. + * @type {number} + */ + public error: number; + + /** + * RigidBody trackingValid. + * @type {boolean} + */ + public trackingValid: boolean; + + /** + * RigidBody name. + * @type {string} + */ + public name: string; + + /** + * RigidBody offset. + * @type {(fvec3$Properties|null)} + */ + public offset: (fvec3$Properties|null); + + /** + * RigidBody parent. + * @type {number} + */ + public parent: number; + + /** + * RigidBody children. + * @type {Array.} + */ + public children: number[]; + + /** + * Creates a new RigidBody instance using the specified properties. + * @param {message.input.MotionCapture.RigidBody$Properties=} [properties] Properties to set + * @returns {message.input.MotionCapture.RigidBody} RigidBody instance + */ + public static create(properties?: message.input.MotionCapture.RigidBody$Properties): message.input.MotionCapture.RigidBody; + + /** + * Encodes the specified RigidBody message. Does not implicitly {@link message.input.MotionCapture.RigidBody.verify|verify} messages. + * @param {message.input.MotionCapture.RigidBody$Properties} message RigidBody message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.input.MotionCapture.RigidBody$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified RigidBody message, length delimited. Does not implicitly {@link message.input.MotionCapture.RigidBody.verify|verify} messages. + * @param {message.input.MotionCapture.RigidBody$Properties} message RigidBody message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.input.MotionCapture.RigidBody$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a RigidBody message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.input.MotionCapture.RigidBody} RigidBody + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.input.MotionCapture.RigidBody; + + /** + * Decodes a RigidBody message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.input.MotionCapture.RigidBody} RigidBody + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.input.MotionCapture.RigidBody; + + /** + * Verifies a RigidBody message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a RigidBody message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.input.MotionCapture.RigidBody} RigidBody + */ + public static fromObject(object: { [k: string]: any }): message.input.MotionCapture.RigidBody; + + /** + * Creates a RigidBody message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.input.MotionCapture.RigidBody.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.input.MotionCapture.RigidBody} RigidBody + */ + public static from(object: { [k: string]: any }): message.input.MotionCapture.RigidBody; + + /** + * Creates a plain object from a RigidBody message. Also converts values to other types if specified. + * @param {message.input.MotionCapture.RigidBody} message RigidBody + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.input.MotionCapture.RigidBody, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this RigidBody message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this RigidBody to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type Skeleton$Properties = { + id?: number; + bones?: message.input.MotionCapture.RigidBody$Properties[]; + name?: string; + }; + + /** + * Constructs a new Skeleton. + * @exports message.input.MotionCapture.Skeleton + * @constructor + * @param {message.input.MotionCapture.Skeleton$Properties=} [properties] Properties to set + */ + class Skeleton { + + /** + * Constructs a new Skeleton. + * @exports message.input.MotionCapture.Skeleton + * @constructor + * @param {message.input.MotionCapture.Skeleton$Properties=} [properties] Properties to set + */ + constructor(properties?: message.input.MotionCapture.Skeleton$Properties); + + /** + * Skeleton id. + * @type {number} + */ + public id: number; + + /** + * Skeleton bones. + * @type {Array.} + */ + public bones: message.input.MotionCapture.RigidBody$Properties[]; + + /** + * Skeleton name. + * @type {string} + */ + public name: string; + + /** + * Creates a new Skeleton instance using the specified properties. + * @param {message.input.MotionCapture.Skeleton$Properties=} [properties] Properties to set + * @returns {message.input.MotionCapture.Skeleton} Skeleton instance + */ + public static create(properties?: message.input.MotionCapture.Skeleton$Properties): message.input.MotionCapture.Skeleton; + + /** + * Encodes the specified Skeleton message. Does not implicitly {@link message.input.MotionCapture.Skeleton.verify|verify} messages. + * @param {message.input.MotionCapture.Skeleton$Properties} message Skeleton message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.input.MotionCapture.Skeleton$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Skeleton message, length delimited. Does not implicitly {@link message.input.MotionCapture.Skeleton.verify|verify} messages. + * @param {message.input.MotionCapture.Skeleton$Properties} message Skeleton message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.input.MotionCapture.Skeleton$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a Skeleton message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.input.MotionCapture.Skeleton} Skeleton + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.input.MotionCapture.Skeleton; + + /** + * Decodes a Skeleton message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.input.MotionCapture.Skeleton} Skeleton + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.input.MotionCapture.Skeleton; + + /** + * Verifies a Skeleton message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a Skeleton message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.input.MotionCapture.Skeleton} Skeleton + */ + public static fromObject(object: { [k: string]: any }): message.input.MotionCapture.Skeleton; + + /** + * Creates a Skeleton message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.input.MotionCapture.Skeleton.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.input.MotionCapture.Skeleton} Skeleton + */ + public static from(object: { [k: string]: any }): message.input.MotionCapture.Skeleton; + + /** + * Creates a plain object from a Skeleton message. Also converts values to other types if specified. + * @param {message.input.MotionCapture.Skeleton} message Skeleton + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.input.MotionCapture.Skeleton, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this Skeleton message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this Skeleton to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type LabeledMarker$Properties = { + marker?: message.input.MotionCapture.Marker$Properties; + occluded?: boolean; + pointCloudSolved?: boolean; + modelSolved?: boolean; + }; + + /** + * Constructs a new LabeledMarker. + * @exports message.input.MotionCapture.LabeledMarker + * @constructor + * @param {message.input.MotionCapture.LabeledMarker$Properties=} [properties] Properties to set + */ + class LabeledMarker { + + /** + * Constructs a new LabeledMarker. + * @exports message.input.MotionCapture.LabeledMarker + * @constructor + * @param {message.input.MotionCapture.LabeledMarker$Properties=} [properties] Properties to set + */ + constructor(properties?: message.input.MotionCapture.LabeledMarker$Properties); + + /** + * LabeledMarker marker. + * @type {(message.input.MotionCapture.Marker$Properties|null)} + */ + public marker: (message.input.MotionCapture.Marker$Properties|null); + + /** + * LabeledMarker occluded. + * @type {boolean} + */ + public occluded: boolean; + + /** + * LabeledMarker pointCloudSolved. + * @type {boolean} + */ + public pointCloudSolved: boolean; + + /** + * LabeledMarker modelSolved. + * @type {boolean} + */ + public modelSolved: boolean; + + /** + * Creates a new LabeledMarker instance using the specified properties. + * @param {message.input.MotionCapture.LabeledMarker$Properties=} [properties] Properties to set + * @returns {message.input.MotionCapture.LabeledMarker} LabeledMarker instance + */ + public static create(properties?: message.input.MotionCapture.LabeledMarker$Properties): message.input.MotionCapture.LabeledMarker; + + /** + * Encodes the specified LabeledMarker message. Does not implicitly {@link message.input.MotionCapture.LabeledMarker.verify|verify} messages. + * @param {message.input.MotionCapture.LabeledMarker$Properties} message LabeledMarker message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.input.MotionCapture.LabeledMarker$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified LabeledMarker message, length delimited. Does not implicitly {@link message.input.MotionCapture.LabeledMarker.verify|verify} messages. + * @param {message.input.MotionCapture.LabeledMarker$Properties} message LabeledMarker message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.input.MotionCapture.LabeledMarker$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a LabeledMarker message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.input.MotionCapture.LabeledMarker} LabeledMarker + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.input.MotionCapture.LabeledMarker; + + /** + * Decodes a LabeledMarker message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.input.MotionCapture.LabeledMarker} LabeledMarker + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.input.MotionCapture.LabeledMarker; + + /** + * Verifies a LabeledMarker message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a LabeledMarker message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.input.MotionCapture.LabeledMarker} LabeledMarker + */ + public static fromObject(object: { [k: string]: any }): message.input.MotionCapture.LabeledMarker; + + /** + * Creates a LabeledMarker message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.input.MotionCapture.LabeledMarker.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.input.MotionCapture.LabeledMarker} LabeledMarker + */ + public static from(object: { [k: string]: any }): message.input.MotionCapture.LabeledMarker; + + /** + * Creates a plain object from a LabeledMarker message. Also converts values to other types if specified. + * @param {message.input.MotionCapture.LabeledMarker} message LabeledMarker + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.input.MotionCapture.LabeledMarker, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this LabeledMarker message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this LabeledMarker to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type Channel$Properties = { + channel?: number[]; + }; + + /** + * Constructs a new Channel. + * @exports message.input.MotionCapture.Channel + * @constructor + * @param {message.input.MotionCapture.Channel$Properties=} [properties] Properties to set + */ + class Channel { + + /** + * Constructs a new Channel. + * @exports message.input.MotionCapture.Channel + * @constructor + * @param {message.input.MotionCapture.Channel$Properties=} [properties] Properties to set + */ + constructor(properties?: message.input.MotionCapture.Channel$Properties); + + /** + * Channel channel. + * @type {Array.} + */ + public channel: number[]; + + /** + * Creates a new Channel instance using the specified properties. + * @param {message.input.MotionCapture.Channel$Properties=} [properties] Properties to set + * @returns {message.input.MotionCapture.Channel} Channel instance + */ + public static create(properties?: message.input.MotionCapture.Channel$Properties): message.input.MotionCapture.Channel; + + /** + * Encodes the specified Channel message. Does not implicitly {@link message.input.MotionCapture.Channel.verify|verify} messages. + * @param {message.input.MotionCapture.Channel$Properties} message Channel message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.input.MotionCapture.Channel$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Channel message, length delimited. Does not implicitly {@link message.input.MotionCapture.Channel.verify|verify} messages. + * @param {message.input.MotionCapture.Channel$Properties} message Channel message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.input.MotionCapture.Channel$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a Channel message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.input.MotionCapture.Channel} Channel + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.input.MotionCapture.Channel; + + /** + * Decodes a Channel message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.input.MotionCapture.Channel} Channel + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.input.MotionCapture.Channel; + + /** + * Verifies a Channel message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a Channel message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.input.MotionCapture.Channel} Channel + */ + public static fromObject(object: { [k: string]: any }): message.input.MotionCapture.Channel; + + /** + * Creates a Channel message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.input.MotionCapture.Channel.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.input.MotionCapture.Channel} Channel + */ + public static from(object: { [k: string]: any }): message.input.MotionCapture.Channel; + + /** + * Creates a plain object from a Channel message. Also converts values to other types if specified. + * @param {message.input.MotionCapture.Channel} message Channel + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.input.MotionCapture.Channel, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this Channel message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this Channel to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type ForcePlate$Properties = { + id?: number; + channels?: message.input.MotionCapture.Channel$Properties[]; + }; + + /** + * Constructs a new ForcePlate. + * @exports message.input.MotionCapture.ForcePlate + * @constructor + * @param {message.input.MotionCapture.ForcePlate$Properties=} [properties] Properties to set + */ + class ForcePlate { + + /** + * Constructs a new ForcePlate. + * @exports message.input.MotionCapture.ForcePlate + * @constructor + * @param {message.input.MotionCapture.ForcePlate$Properties=} [properties] Properties to set + */ + constructor(properties?: message.input.MotionCapture.ForcePlate$Properties); + + /** + * ForcePlate id. + * @type {number} + */ + public id: number; + + /** + * ForcePlate channels. + * @type {Array.} + */ + public channels: message.input.MotionCapture.Channel$Properties[]; + + /** + * Creates a new ForcePlate instance using the specified properties. + * @param {message.input.MotionCapture.ForcePlate$Properties=} [properties] Properties to set + * @returns {message.input.MotionCapture.ForcePlate} ForcePlate instance + */ + public static create(properties?: message.input.MotionCapture.ForcePlate$Properties): message.input.MotionCapture.ForcePlate; + + /** + * Encodes the specified ForcePlate message. Does not implicitly {@link message.input.MotionCapture.ForcePlate.verify|verify} messages. + * @param {message.input.MotionCapture.ForcePlate$Properties} message ForcePlate message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.input.MotionCapture.ForcePlate$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified ForcePlate message, length delimited. Does not implicitly {@link message.input.MotionCapture.ForcePlate.verify|verify} messages. + * @param {message.input.MotionCapture.ForcePlate$Properties} message ForcePlate message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.input.MotionCapture.ForcePlate$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a ForcePlate message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.input.MotionCapture.ForcePlate} ForcePlate + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.input.MotionCapture.ForcePlate; + + /** + * Decodes a ForcePlate message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.input.MotionCapture.ForcePlate} ForcePlate + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.input.MotionCapture.ForcePlate; + + /** + * Verifies a ForcePlate message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a ForcePlate message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.input.MotionCapture.ForcePlate} ForcePlate + */ + public static fromObject(object: { [k: string]: any }): message.input.MotionCapture.ForcePlate; + + /** + * Creates a ForcePlate message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.input.MotionCapture.ForcePlate.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.input.MotionCapture.ForcePlate} ForcePlate + */ + public static from(object: { [k: string]: any }): message.input.MotionCapture.ForcePlate; + + /** + * Creates a plain object from a ForcePlate message. Also converts values to other types if specified. + * @param {message.input.MotionCapture.ForcePlate} message ForcePlate + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.input.MotionCapture.ForcePlate, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this ForcePlate message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this ForcePlate to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + } + + type WalkingDetected$Properties = {}; + + /** + * Constructs a new WalkingDetected. + * @exports message.input.WalkingDetected + * @constructor + * @param {message.input.WalkingDetected$Properties=} [properties] Properties to set + */ + class WalkingDetected { + + /** + * Constructs a new WalkingDetected. + * @exports message.input.WalkingDetected + * @constructor + * @param {message.input.WalkingDetected$Properties=} [properties] Properties to set + */ + constructor(properties?: message.input.WalkingDetected$Properties); + + /** + * Creates a new WalkingDetected instance using the specified properties. + * @param {message.input.WalkingDetected$Properties=} [properties] Properties to set + * @returns {message.input.WalkingDetected} WalkingDetected instance + */ + public static create(properties?: message.input.WalkingDetected$Properties): message.input.WalkingDetected; + + /** + * Encodes the specified WalkingDetected message. Does not implicitly {@link message.input.WalkingDetected.verify|verify} messages. + * @param {message.input.WalkingDetected$Properties} message WalkingDetected message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.input.WalkingDetected$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified WalkingDetected message, length delimited. Does not implicitly {@link message.input.WalkingDetected.verify|verify} messages. + * @param {message.input.WalkingDetected$Properties} message WalkingDetected message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.input.WalkingDetected$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a WalkingDetected message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.input.WalkingDetected} WalkingDetected + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.input.WalkingDetected; + + /** + * Decodes a WalkingDetected message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.input.WalkingDetected} WalkingDetected + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.input.WalkingDetected; + + /** + * Verifies a WalkingDetected message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a WalkingDetected message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.input.WalkingDetected} WalkingDetected + */ + public static fromObject(object: { [k: string]: any }): message.input.WalkingDetected; + + /** + * Creates a WalkingDetected message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.input.WalkingDetected.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.input.WalkingDetected} WalkingDetected + */ + public static from(object: { [k: string]: any }): message.input.WalkingDetected; + + /** + * Creates a plain object from a WalkingDetected message. Also converts values to other types if specified. + * @param {message.input.WalkingDetected} message WalkingDetected + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.input.WalkingDetected, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this WalkingDetected message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this WalkingDetected to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type BendingDetected$Properties = {}; + + /** + * Constructs a new BendingDetected. + * @exports message.input.BendingDetected + * @constructor + * @param {message.input.BendingDetected$Properties=} [properties] Properties to set + */ + class BendingDetected { + + /** + * Constructs a new BendingDetected. + * @exports message.input.BendingDetected + * @constructor + * @param {message.input.BendingDetected$Properties=} [properties] Properties to set + */ + constructor(properties?: message.input.BendingDetected$Properties); + + /** + * Creates a new BendingDetected instance using the specified properties. + * @param {message.input.BendingDetected$Properties=} [properties] Properties to set + * @returns {message.input.BendingDetected} BendingDetected instance + */ + public static create(properties?: message.input.BendingDetected$Properties): message.input.BendingDetected; + + /** + * Encodes the specified BendingDetected message. Does not implicitly {@link message.input.BendingDetected.verify|verify} messages. + * @param {message.input.BendingDetected$Properties} message BendingDetected message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.input.BendingDetected$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified BendingDetected message, length delimited. Does not implicitly {@link message.input.BendingDetected.verify|verify} messages. + * @param {message.input.BendingDetected$Properties} message BendingDetected message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.input.BendingDetected$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a BendingDetected message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.input.BendingDetected} BendingDetected + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.input.BendingDetected; + + /** + * Decodes a BendingDetected message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.input.BendingDetected} BendingDetected + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.input.BendingDetected; + + /** + * Verifies a BendingDetected message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a BendingDetected message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.input.BendingDetected} BendingDetected + */ + public static fromObject(object: { [k: string]: any }): message.input.BendingDetected; + + /** + * Creates a BendingDetected message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.input.BendingDetected.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.input.BendingDetected} BendingDetected + */ + public static from(object: { [k: string]: any }): message.input.BendingDetected; + + /** + * Creates a plain object from a BendingDetected message. Also converts values to other types if specified. + * @param {message.input.BendingDetected} message BendingDetected + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.input.BendingDetected, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this BendingDetected message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this BendingDetected to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type KickingDetected$Properties = {}; + + /** + * Constructs a new KickingDetected. + * @exports message.input.KickingDetected + * @constructor + * @param {message.input.KickingDetected$Properties=} [properties] Properties to set + */ + class KickingDetected { + + /** + * Constructs a new KickingDetected. + * @exports message.input.KickingDetected + * @constructor + * @param {message.input.KickingDetected$Properties=} [properties] Properties to set + */ + constructor(properties?: message.input.KickingDetected$Properties); + + /** + * Creates a new KickingDetected instance using the specified properties. + * @param {message.input.KickingDetected$Properties=} [properties] Properties to set + * @returns {message.input.KickingDetected} KickingDetected instance + */ + public static create(properties?: message.input.KickingDetected$Properties): message.input.KickingDetected; + + /** + * Encodes the specified KickingDetected message. Does not implicitly {@link message.input.KickingDetected.verify|verify} messages. + * @param {message.input.KickingDetected$Properties} message KickingDetected message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.input.KickingDetected$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified KickingDetected message, length delimited. Does not implicitly {@link message.input.KickingDetected.verify|verify} messages. + * @param {message.input.KickingDetected$Properties} message KickingDetected message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.input.KickingDetected$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a KickingDetected message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.input.KickingDetected} KickingDetected + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.input.KickingDetected; + + /** + * Decodes a KickingDetected message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.input.KickingDetected} KickingDetected + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.input.KickingDetected; + + /** + * Verifies a KickingDetected message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a KickingDetected message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.input.KickingDetected} KickingDetected + */ + public static fromObject(object: { [k: string]: any }): message.input.KickingDetected; + + /** + * Creates a KickingDetected message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.input.KickingDetected.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.input.KickingDetected} KickingDetected + */ + public static from(object: { [k: string]: any }): message.input.KickingDetected; + + /** + * Creates a plain object from a KickingDetected message. Also converts values to other types if specified. + * @param {message.input.KickingDetected} message KickingDetected + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.input.KickingDetected, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this KickingDetected message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this KickingDetected to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type SittingDetected$Properties = {}; + + /** + * Constructs a new SittingDetected. + * @exports message.input.SittingDetected + * @constructor + * @param {message.input.SittingDetected$Properties=} [properties] Properties to set + */ + class SittingDetected { + + /** + * Constructs a new SittingDetected. + * @exports message.input.SittingDetected + * @constructor + * @param {message.input.SittingDetected$Properties=} [properties] Properties to set + */ + constructor(properties?: message.input.SittingDetected$Properties); + + /** + * Creates a new SittingDetected instance using the specified properties. + * @param {message.input.SittingDetected$Properties=} [properties] Properties to set + * @returns {message.input.SittingDetected} SittingDetected instance + */ + public static create(properties?: message.input.SittingDetected$Properties): message.input.SittingDetected; + + /** + * Encodes the specified SittingDetected message. Does not implicitly {@link message.input.SittingDetected.verify|verify} messages. + * @param {message.input.SittingDetected$Properties} message SittingDetected message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.input.SittingDetected$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified SittingDetected message, length delimited. Does not implicitly {@link message.input.SittingDetected.verify|verify} messages. + * @param {message.input.SittingDetected$Properties} message SittingDetected message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.input.SittingDetected$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a SittingDetected message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.input.SittingDetected} SittingDetected + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.input.SittingDetected; + + /** + * Decodes a SittingDetected message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.input.SittingDetected} SittingDetected + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.input.SittingDetected; + + /** + * Verifies a SittingDetected message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a SittingDetected message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.input.SittingDetected} SittingDetected + */ + public static fromObject(object: { [k: string]: any }): message.input.SittingDetected; + + /** + * Creates a SittingDetected message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.input.SittingDetected.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.input.SittingDetected} SittingDetected + */ + public static from(object: { [k: string]: any }): message.input.SittingDetected; + + /** + * Creates a plain object from a SittingDetected message. Also converts values to other types if specified. + * @param {message.input.SittingDetected} message SittingDetected + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.input.SittingDetected, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this SittingDetected message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this SittingDetected to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type StandingDetected$Properties = {}; + + /** + * Constructs a new StandingDetected. + * @exports message.input.StandingDetected + * @constructor + * @param {message.input.StandingDetected$Properties=} [properties] Properties to set + */ + class StandingDetected { + + /** + * Constructs a new StandingDetected. + * @exports message.input.StandingDetected + * @constructor + * @param {message.input.StandingDetected$Properties=} [properties] Properties to set + */ + constructor(properties?: message.input.StandingDetected$Properties); + + /** + * Creates a new StandingDetected instance using the specified properties. + * @param {message.input.StandingDetected$Properties=} [properties] Properties to set + * @returns {message.input.StandingDetected} StandingDetected instance + */ + public static create(properties?: message.input.StandingDetected$Properties): message.input.StandingDetected; + + /** + * Encodes the specified StandingDetected message. Does not implicitly {@link message.input.StandingDetected.verify|verify} messages. + * @param {message.input.StandingDetected$Properties} message StandingDetected message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.input.StandingDetected$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified StandingDetected message, length delimited. Does not implicitly {@link message.input.StandingDetected.verify|verify} messages. + * @param {message.input.StandingDetected$Properties} message StandingDetected message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.input.StandingDetected$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a StandingDetected message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.input.StandingDetected} StandingDetected + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.input.StandingDetected; + + /** + * Decodes a StandingDetected message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.input.StandingDetected} StandingDetected + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.input.StandingDetected; + + /** + * Verifies a StandingDetected message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a StandingDetected message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.input.StandingDetected} StandingDetected + */ + public static fromObject(object: { [k: string]: any }): message.input.StandingDetected; + + /** + * Creates a StandingDetected message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.input.StandingDetected.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.input.StandingDetected} StandingDetected + */ + public static from(object: { [k: string]: any }): message.input.StandingDetected; + + /** + * Creates a plain object from a StandingDetected message. Also converts values to other types if specified. + * @param {message.input.StandingDetected} message StandingDetected + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.input.StandingDetected, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this StandingDetected message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this StandingDetected to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type FallingDetected$Properties = { + x?: number; + y?: number; + z?: number; + }; + + /** + * Constructs a new FallingDetected. + * @exports message.input.FallingDetected + * @constructor + * @param {message.input.FallingDetected$Properties=} [properties] Properties to set + */ + class FallingDetected { + + /** + * Constructs a new FallingDetected. + * @exports message.input.FallingDetected + * @constructor + * @param {message.input.FallingDetected$Properties=} [properties] Properties to set + */ + constructor(properties?: message.input.FallingDetected$Properties); + + /** + * FallingDetected x. + * @type {number} + */ + public x: number; + + /** + * FallingDetected y. + * @type {number} + */ + public y: number; + + /** + * FallingDetected z. + * @type {number} + */ + public z: number; + + /** + * Creates a new FallingDetected instance using the specified properties. + * @param {message.input.FallingDetected$Properties=} [properties] Properties to set + * @returns {message.input.FallingDetected} FallingDetected instance + */ + public static create(properties?: message.input.FallingDetected$Properties): message.input.FallingDetected; + + /** + * Encodes the specified FallingDetected message. Does not implicitly {@link message.input.FallingDetected.verify|verify} messages. + * @param {message.input.FallingDetected$Properties} message FallingDetected message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.input.FallingDetected$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified FallingDetected message, length delimited. Does not implicitly {@link message.input.FallingDetected.verify|verify} messages. + * @param {message.input.FallingDetected$Properties} message FallingDetected message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.input.FallingDetected$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a FallingDetected message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.input.FallingDetected} FallingDetected + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.input.FallingDetected; + + /** + * Decodes a FallingDetected message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.input.FallingDetected} FallingDetected + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.input.FallingDetected; + + /** + * Verifies a FallingDetected message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a FallingDetected message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.input.FallingDetected} FallingDetected + */ + public static fromObject(object: { [k: string]: any }): message.input.FallingDetected; + + /** + * Creates a FallingDetected message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.input.FallingDetected.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.input.FallingDetected} FallingDetected + */ + public static from(object: { [k: string]: any }): message.input.FallingDetected; + + /** + * Creates a plain object from a FallingDetected message. Also converts values to other types if specified. + * @param {message.input.FallingDetected} message FallingDetected + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.input.FallingDetected, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this FallingDetected message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this FallingDetected to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type PresenceUserState$Properties = { + headPose?: fmat44$Properties; + }; + + /** + * Constructs a new PresenceUserState. + * @exports message.input.PresenceUserState + * @constructor + * @param {message.input.PresenceUserState$Properties=} [properties] Properties to set + */ + class PresenceUserState { + + /** + * Constructs a new PresenceUserState. + * @exports message.input.PresenceUserState + * @constructor + * @param {message.input.PresenceUserState$Properties=} [properties] Properties to set + */ + constructor(properties?: message.input.PresenceUserState$Properties); + + /** + * PresenceUserState headPose. + * @type {(fmat44$Properties|null)} + */ + public headPose: (fmat44$Properties|null); + + /** + * Creates a new PresenceUserState instance using the specified properties. + * @param {message.input.PresenceUserState$Properties=} [properties] Properties to set + * @returns {message.input.PresenceUserState} PresenceUserState instance + */ + public static create(properties?: message.input.PresenceUserState$Properties): message.input.PresenceUserState; + + /** + * Encodes the specified PresenceUserState message. Does not implicitly {@link message.input.PresenceUserState.verify|verify} messages. + * @param {message.input.PresenceUserState$Properties} message PresenceUserState message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.input.PresenceUserState$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified PresenceUserState message, length delimited. Does not implicitly {@link message.input.PresenceUserState.verify|verify} messages. + * @param {message.input.PresenceUserState$Properties} message PresenceUserState message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.input.PresenceUserState$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a PresenceUserState message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.input.PresenceUserState} PresenceUserState + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.input.PresenceUserState; + + /** + * Decodes a PresenceUserState message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.input.PresenceUserState} PresenceUserState + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.input.PresenceUserState; + + /** + * Verifies a PresenceUserState message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a PresenceUserState message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.input.PresenceUserState} PresenceUserState + */ + public static fromObject(object: { [k: string]: any }): message.input.PresenceUserState; + + /** + * Creates a PresenceUserState message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.input.PresenceUserState.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.input.PresenceUserState} PresenceUserState + */ + public static from(object: { [k: string]: any }): message.input.PresenceUserState; + + /** + * Creates a plain object from a PresenceUserState message. Also converts values to other types if specified. + * @param {message.input.PresenceUserState} message PresenceUserState + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.input.PresenceUserState, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this PresenceUserState message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this PresenceUserState to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type PushDetection$Properties = { + forward?: boolean; + }; + + /** + * Constructs a new PushDetection. + * @exports message.input.PushDetection + * @constructor + * @param {message.input.PushDetection$Properties=} [properties] Properties to set + */ + class PushDetection { + + /** + * Constructs a new PushDetection. + * @exports message.input.PushDetection + * @constructor + * @param {message.input.PushDetection$Properties=} [properties] Properties to set + */ + constructor(properties?: message.input.PushDetection$Properties); + + /** + * PushDetection forward. + * @type {boolean} + */ + public forward: boolean; + + /** + * Creates a new PushDetection instance using the specified properties. + * @param {message.input.PushDetection$Properties=} [properties] Properties to set + * @returns {message.input.PushDetection} PushDetection instance + */ + public static create(properties?: message.input.PushDetection$Properties): message.input.PushDetection; + + /** + * Encodes the specified PushDetection message. Does not implicitly {@link message.input.PushDetection.verify|verify} messages. + * @param {message.input.PushDetection$Properties} message PushDetection message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.input.PushDetection$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified PushDetection message, length delimited. Does not implicitly {@link message.input.PushDetection.verify|verify} messages. + * @param {message.input.PushDetection$Properties} message PushDetection message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.input.PushDetection$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a PushDetection message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.input.PushDetection} PushDetection + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.input.PushDetection; + + /** + * Decodes a PushDetection message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.input.PushDetection} PushDetection + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.input.PushDetection; + + /** + * Verifies a PushDetection message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a PushDetection message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.input.PushDetection} PushDetection + */ + public static fromObject(object: { [k: string]: any }): message.input.PushDetection; + + /** + * Creates a PushDetection message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.input.PushDetection.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.input.PushDetection} PushDetection + */ + public static from(object: { [k: string]: any }): message.input.PushDetection; + + /** + * Creates a plain object from a PushDetection message. Also converts values to other types if specified. + * @param {message.input.PushDetection} message PushDetection + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.input.PushDetection, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this PushDetection message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this PushDetection to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type Sensors$Properties = { + timestamp?: google.protobuf.Timestamp$Properties; + accelerometer?: vec3$Properties; + gyroscope?: vec3$Properties; + world?: mat44$Properties; + fsr?: message.input.Sensors.FSR$Properties[]; + servo?: message.input.Sensors.Servo$Properties[]; + button?: message.input.Sensors.Button$Properties[]; + led?: message.input.Sensors.LED$Properties[]; + voltage?: number; + battery?: number; + centreOfPressure?: vec3$Properties; + robotToIMU?: mat22$Properties; + leftFootDown?: boolean; + rightFootDown?: boolean; + forwardKinematics?: { [k: string]: mat44$Properties }; + bodyCentreHeight?: number; + centreOfMass?: vec4$Properties; + bodyToGround?: mat44$Properties; + camToGround?: mat44$Properties; + }; + + /** + * Constructs a new Sensors. + * @exports message.input.Sensors + * @constructor + * @param {message.input.Sensors$Properties=} [properties] Properties to set + */ + class Sensors { + + /** + * Constructs a new Sensors. + * @exports message.input.Sensors + * @constructor + * @param {message.input.Sensors$Properties=} [properties] Properties to set + */ + constructor(properties?: message.input.Sensors$Properties); + + /** + * Sensors timestamp. + * @type {(google.protobuf.Timestamp$Properties|null)} + */ + public timestamp: (google.protobuf.Timestamp$Properties|null); + + /** + * Sensors accelerometer. + * @type {(vec3$Properties|null)} + */ + public accelerometer: (vec3$Properties|null); + + /** + * Sensors gyroscope. + * @type {(vec3$Properties|null)} + */ + public gyroscope: (vec3$Properties|null); + + /** + * Sensors world. + * @type {(mat44$Properties|null)} + */ + public world: (mat44$Properties|null); + + /** + * Sensors fsr. + * @type {Array.} + */ + public fsr: message.input.Sensors.FSR$Properties[]; + + /** + * Sensors servo. + * @type {Array.} + */ + public servo: message.input.Sensors.Servo$Properties[]; + + /** + * Sensors button. + * @type {Array.} + */ + public button: message.input.Sensors.Button$Properties[]; + + /** + * Sensors led. + * @type {Array.} + */ + public led: message.input.Sensors.LED$Properties[]; + + /** + * Sensors voltage. + * @type {number} + */ + public voltage: number; + + /** + * Sensors battery. + * @type {number} + */ + public battery: number; + + /** + * Sensors centreOfPressure. + * @type {(vec3$Properties|null)} + */ + public centreOfPressure: (vec3$Properties|null); + + /** + * Sensors robotToIMU. + * @type {(mat22$Properties|null)} + */ + public robotToIMU: (mat22$Properties|null); + + /** + * Sensors leftFootDown. + * @type {boolean} + */ + public leftFootDown: boolean; + + /** + * Sensors rightFootDown. + * @type {boolean} + */ + public rightFootDown: boolean; + + /** + * Sensors forwardKinematics. + * @type {Object.} + */ + public forwardKinematics: { [k: string]: mat44$Properties }; + + /** + * Sensors bodyCentreHeight. + * @type {number} + */ + public bodyCentreHeight: number; + + /** + * Sensors centreOfMass. + * @type {(vec4$Properties|null)} + */ + public centreOfMass: (vec4$Properties|null); + + /** + * Sensors bodyToGround. + * @type {(mat44$Properties|null)} + */ + public bodyToGround: (mat44$Properties|null); + + /** + * Sensors camToGround. + * @type {(mat44$Properties|null)} + */ + public camToGround: (mat44$Properties|null); + + /** + * Creates a new Sensors instance using the specified properties. + * @param {message.input.Sensors$Properties=} [properties] Properties to set + * @returns {message.input.Sensors} Sensors instance + */ + public static create(properties?: message.input.Sensors$Properties): message.input.Sensors; + + /** + * Encodes the specified Sensors message. Does not implicitly {@link message.input.Sensors.verify|verify} messages. + * @param {message.input.Sensors$Properties} message Sensors message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.input.Sensors$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Sensors message, length delimited. Does not implicitly {@link message.input.Sensors.verify|verify} messages. + * @param {message.input.Sensors$Properties} message Sensors message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.input.Sensors$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a Sensors message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.input.Sensors} Sensors + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.input.Sensors; + + /** + * Decodes a Sensors message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.input.Sensors} Sensors + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.input.Sensors; + + /** + * Verifies a Sensors message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a Sensors message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.input.Sensors} Sensors + */ + public static fromObject(object: { [k: string]: any }): message.input.Sensors; + + /** + * Creates a Sensors message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.input.Sensors.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.input.Sensors} Sensors + */ + public static from(object: { [k: string]: any }): message.input.Sensors; + + /** + * Creates a plain object from a Sensors message. Also converts values to other types if specified. + * @param {message.input.Sensors} message Sensors + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.input.Sensors, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this Sensors message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this Sensors to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + namespace Sensors { + + type Servo$Properties = { + errorFlags?: number; + id?: number; + enabled?: boolean; + pGain?: number; + iGain?: number; + dGain?: number; + goalPosition?: number; + goalVelocity?: number; + presentPosition?: number; + presentVelocity?: number; + load?: number; + voltage?: number; + temperature?: number; + }; + + /** + * Constructs a new Servo. + * @exports message.input.Sensors.Servo + * @constructor + * @param {message.input.Sensors.Servo$Properties=} [properties] Properties to set + */ + class Servo { + + /** + * Constructs a new Servo. + * @exports message.input.Sensors.Servo + * @constructor + * @param {message.input.Sensors.Servo$Properties=} [properties] Properties to set + */ + constructor(properties?: message.input.Sensors.Servo$Properties); + + /** + * Servo errorFlags. + * @type {number} + */ + public errorFlags: number; + + /** + * Servo id. + * @type {number} + */ + public id: number; + + /** + * Servo enabled. + * @type {boolean} + */ + public enabled: boolean; + + /** + * Servo pGain. + * @type {number} + */ + public pGain: number; + + /** + * Servo iGain. + * @type {number} + */ + public iGain: number; + + /** + * Servo dGain. + * @type {number} + */ + public dGain: number; + + /** + * Servo goalPosition. + * @type {number} + */ + public goalPosition: number; + + /** + * Servo goalVelocity. + * @type {number} + */ + public goalVelocity: number; + + /** + * Servo presentPosition. + * @type {number} + */ + public presentPosition: number; + + /** + * Servo presentVelocity. + * @type {number} + */ + public presentVelocity: number; + + /** + * Servo load. + * @type {number} + */ + public load: number; + + /** + * Servo voltage. + * @type {number} + */ + public voltage: number; + + /** + * Servo temperature. + * @type {number} + */ + public temperature: number; + + /** + * Creates a new Servo instance using the specified properties. + * @param {message.input.Sensors.Servo$Properties=} [properties] Properties to set + * @returns {message.input.Sensors.Servo} Servo instance + */ + public static create(properties?: message.input.Sensors.Servo$Properties): message.input.Sensors.Servo; + + /** + * Encodes the specified Servo message. Does not implicitly {@link message.input.Sensors.Servo.verify|verify} messages. + * @param {message.input.Sensors.Servo$Properties} message Servo message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.input.Sensors.Servo$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Servo message, length delimited. Does not implicitly {@link message.input.Sensors.Servo.verify|verify} messages. + * @param {message.input.Sensors.Servo$Properties} message Servo message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.input.Sensors.Servo$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a Servo message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.input.Sensors.Servo} Servo + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.input.Sensors.Servo; + + /** + * Decodes a Servo message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.input.Sensors.Servo} Servo + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.input.Sensors.Servo; + + /** + * Verifies a Servo message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a Servo message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.input.Sensors.Servo} Servo + */ + public static fromObject(object: { [k: string]: any }): message.input.Sensors.Servo; + + /** + * Creates a Servo message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.input.Sensors.Servo.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.input.Sensors.Servo} Servo + */ + public static from(object: { [k: string]: any }): message.input.Sensors.Servo; + + /** + * Creates a plain object from a Servo message. Also converts values to other types if specified. + * @param {message.input.Sensors.Servo} message Servo + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.input.Sensors.Servo, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this Servo message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this Servo to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type Button$Properties = { + id?: number; + value?: boolean; + }; + + /** + * Constructs a new Button. + * @exports message.input.Sensors.Button + * @constructor + * @param {message.input.Sensors.Button$Properties=} [properties] Properties to set + */ + class Button { + + /** + * Constructs a new Button. + * @exports message.input.Sensors.Button + * @constructor + * @param {message.input.Sensors.Button$Properties=} [properties] Properties to set + */ + constructor(properties?: message.input.Sensors.Button$Properties); + + /** + * Button id. + * @type {number} + */ + public id: number; + + /** + * Button value. + * @type {boolean} + */ + public value: boolean; + + /** + * Creates a new Button instance using the specified properties. + * @param {message.input.Sensors.Button$Properties=} [properties] Properties to set + * @returns {message.input.Sensors.Button} Button instance + */ + public static create(properties?: message.input.Sensors.Button$Properties): message.input.Sensors.Button; + + /** + * Encodes the specified Button message. Does not implicitly {@link message.input.Sensors.Button.verify|verify} messages. + * @param {message.input.Sensors.Button$Properties} message Button message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.input.Sensors.Button$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Button message, length delimited. Does not implicitly {@link message.input.Sensors.Button.verify|verify} messages. + * @param {message.input.Sensors.Button$Properties} message Button message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.input.Sensors.Button$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a Button message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.input.Sensors.Button} Button + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.input.Sensors.Button; + + /** + * Decodes a Button message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.input.Sensors.Button} Button + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.input.Sensors.Button; + + /** + * Verifies a Button message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a Button message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.input.Sensors.Button} Button + */ + public static fromObject(object: { [k: string]: any }): message.input.Sensors.Button; + + /** + * Creates a Button message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.input.Sensors.Button.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.input.Sensors.Button} Button + */ + public static from(object: { [k: string]: any }): message.input.Sensors.Button; + + /** + * Creates a plain object from a Button message. Also converts values to other types if specified. + * @param {message.input.Sensors.Button} message Button + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.input.Sensors.Button, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this Button message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this Button to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type LED$Properties = { + id?: number; + colour?: number; + }; + + /** + * Constructs a new LED. + * @exports message.input.Sensors.LED + * @constructor + * @param {message.input.Sensors.LED$Properties=} [properties] Properties to set + */ + class LED { + + /** + * Constructs a new LED. + * @exports message.input.Sensors.LED + * @constructor + * @param {message.input.Sensors.LED$Properties=} [properties] Properties to set + */ + constructor(properties?: message.input.Sensors.LED$Properties); + + /** + * LED id. + * @type {number} + */ + public id: number; + + /** + * LED colour. + * @type {number} + */ + public colour: number; + + /** + * Creates a new LED instance using the specified properties. + * @param {message.input.Sensors.LED$Properties=} [properties] Properties to set + * @returns {message.input.Sensors.LED} LED instance + */ + public static create(properties?: message.input.Sensors.LED$Properties): message.input.Sensors.LED; + + /** + * Encodes the specified LED message. Does not implicitly {@link message.input.Sensors.LED.verify|verify} messages. + * @param {message.input.Sensors.LED$Properties} message LED message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.input.Sensors.LED$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified LED message, length delimited. Does not implicitly {@link message.input.Sensors.LED.verify|verify} messages. + * @param {message.input.Sensors.LED$Properties} message LED message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.input.Sensors.LED$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a LED message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.input.Sensors.LED} LED + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.input.Sensors.LED; + + /** + * Decodes a LED message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.input.Sensors.LED} LED + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.input.Sensors.LED; + + /** + * Verifies a LED message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a LED message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.input.Sensors.LED} LED + */ + public static fromObject(object: { [k: string]: any }): message.input.Sensors.LED; + + /** + * Creates a LED message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.input.Sensors.LED.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.input.Sensors.LED} LED + */ + public static from(object: { [k: string]: any }): message.input.Sensors.LED; + + /** + * Creates a plain object from a LED message. Also converts values to other types if specified. + * @param {message.input.Sensors.LED} message LED + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.input.Sensors.LED, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this LED message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this LED to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type FSR$Properties = { + value?: number[]; + centre?: vec2$Properties; + }; + + /** + * Constructs a new FSR. + * @exports message.input.Sensors.FSR + * @constructor + * @param {message.input.Sensors.FSR$Properties=} [properties] Properties to set + */ + class FSR { + + /** + * Constructs a new FSR. + * @exports message.input.Sensors.FSR + * @constructor + * @param {message.input.Sensors.FSR$Properties=} [properties] Properties to set + */ + constructor(properties?: message.input.Sensors.FSR$Properties); + + /** + * FSR value. + * @type {Array.} + */ + public value: number[]; + + /** + * FSR centre. + * @type {(vec2$Properties|null)} + */ + public centre: (vec2$Properties|null); + + /** + * Creates a new FSR instance using the specified properties. + * @param {message.input.Sensors.FSR$Properties=} [properties] Properties to set + * @returns {message.input.Sensors.FSR} FSR instance + */ + public static create(properties?: message.input.Sensors.FSR$Properties): message.input.Sensors.FSR; + + /** + * Encodes the specified FSR message. Does not implicitly {@link message.input.Sensors.FSR.verify|verify} messages. + * @param {message.input.Sensors.FSR$Properties} message FSR message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.input.Sensors.FSR$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified FSR message, length delimited. Does not implicitly {@link message.input.Sensors.FSR.verify|verify} messages. + * @param {message.input.Sensors.FSR$Properties} message FSR message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.input.Sensors.FSR$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a FSR message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.input.Sensors.FSR} FSR + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.input.Sensors.FSR; + + /** + * Decodes a FSR message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.input.Sensors.FSR} FSR + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.input.Sensors.FSR; + + /** + * Verifies a FSR message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a FSR message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.input.Sensors.FSR} FSR + */ + public static fromObject(object: { [k: string]: any }): message.input.Sensors.FSR; + + /** + * Creates a FSR message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.input.Sensors.FSR.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.input.Sensors.FSR} FSR + */ + public static from(object: { [k: string]: any }): message.input.Sensors.FSR; + + /** + * Creates a plain object from a FSR message. Also converts values to other types if specified. + * @param {message.input.Sensors.FSR} message FSR + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.input.Sensors.FSR, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this FSR message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this FSR to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + } + + type SoundChunkSettings$Properties = { + sampleRate?: (number|Long); + channels?: (number|Long); + chunkSize?: (number|Long); + }; + + /** + * Constructs a new SoundChunkSettings. + * @classdesc TODO document + * + * @author Trent Houliston + * @exports message.input.SoundChunkSettings + * @constructor + * @param {message.input.SoundChunkSettings$Properties=} [properties] Properties to set + */ + class SoundChunkSettings { + + /** + * Constructs a new SoundChunkSettings. + * @classdesc TODO document + * + * @author Trent Houliston + * @exports message.input.SoundChunkSettings + * @constructor + * @param {message.input.SoundChunkSettings$Properties=} [properties] Properties to set + */ + constructor(properties?: message.input.SoundChunkSettings$Properties); + + /** + * The number of samples that are taken each second for the sound chunks + * @type {number|Long} + */ + public sampleRate: (number|Long); + + /** + * The number of channels that the sound chunks will have + * @type {number|Long} + */ + public channels: (number|Long); + + /** + * The number of frames (a frame is a single sample for all channels) that each emitted chunk will have + * @type {number|Long} + */ + public chunkSize: (number|Long); + + /** + * Creates a new SoundChunkSettings instance using the specified properties. + * @param {message.input.SoundChunkSettings$Properties=} [properties] Properties to set + * @returns {message.input.SoundChunkSettings} SoundChunkSettings instance + */ + public static create(properties?: message.input.SoundChunkSettings$Properties): message.input.SoundChunkSettings; + + /** + * Encodes the specified SoundChunkSettings message. Does not implicitly {@link message.input.SoundChunkSettings.verify|verify} messages. + * @param {message.input.SoundChunkSettings$Properties} message SoundChunkSettings message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.input.SoundChunkSettings$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified SoundChunkSettings message, length delimited. Does not implicitly {@link message.input.SoundChunkSettings.verify|verify} messages. + * @param {message.input.SoundChunkSettings$Properties} message SoundChunkSettings message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.input.SoundChunkSettings$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a SoundChunkSettings message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.input.SoundChunkSettings} SoundChunkSettings + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.input.SoundChunkSettings; + + /** + * Decodes a SoundChunkSettings message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.input.SoundChunkSettings} SoundChunkSettings + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.input.SoundChunkSettings; + + /** + * Verifies a SoundChunkSettings message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a SoundChunkSettings message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.input.SoundChunkSettings} SoundChunkSettings + */ + public static fromObject(object: { [k: string]: any }): message.input.SoundChunkSettings; + + /** + * Creates a SoundChunkSettings message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.input.SoundChunkSettings.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.input.SoundChunkSettings} SoundChunkSettings + */ + public static from(object: { [k: string]: any }): message.input.SoundChunkSettings; + + /** + * Creates a plain object from a SoundChunkSettings message. Also converts values to other types if specified. + * @param {message.input.SoundChunkSettings} message SoundChunkSettings + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.input.SoundChunkSettings, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this SoundChunkSettings message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this SoundChunkSettings to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type SoundFileStart$Properties = { + fileName?: string; + time?: google.protobuf.Timestamp$Properties; + }; + + /** + * Constructs a new SoundFileStart. + * @exports message.input.SoundFileStart + * @constructor + * @param {message.input.SoundFileStart$Properties=} [properties] Properties to set + */ + class SoundFileStart { + + /** + * Constructs a new SoundFileStart. + * @exports message.input.SoundFileStart + * @constructor + * @param {message.input.SoundFileStart$Properties=} [properties] Properties to set + */ + constructor(properties?: message.input.SoundFileStart$Properties); + + /** + * SoundFileStart fileName. + * @type {string} + */ + public fileName: string; + + /** + * SoundFileStart time. + * @type {(google.protobuf.Timestamp$Properties|null)} + */ + public time: (google.protobuf.Timestamp$Properties|null); + + /** + * Creates a new SoundFileStart instance using the specified properties. + * @param {message.input.SoundFileStart$Properties=} [properties] Properties to set + * @returns {message.input.SoundFileStart} SoundFileStart instance + */ + public static create(properties?: message.input.SoundFileStart$Properties): message.input.SoundFileStart; + + /** + * Encodes the specified SoundFileStart message. Does not implicitly {@link message.input.SoundFileStart.verify|verify} messages. + * @param {message.input.SoundFileStart$Properties} message SoundFileStart message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.input.SoundFileStart$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified SoundFileStart message, length delimited. Does not implicitly {@link message.input.SoundFileStart.verify|verify} messages. + * @param {message.input.SoundFileStart$Properties} message SoundFileStart message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.input.SoundFileStart$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a SoundFileStart message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.input.SoundFileStart} SoundFileStart + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.input.SoundFileStart; + + /** + * Decodes a SoundFileStart message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.input.SoundFileStart} SoundFileStart + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.input.SoundFileStart; + + /** + * Verifies a SoundFileStart message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a SoundFileStart message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.input.SoundFileStart} SoundFileStart + */ + public static fromObject(object: { [k: string]: any }): message.input.SoundFileStart; + + /** + * Creates a SoundFileStart message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.input.SoundFileStart.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.input.SoundFileStart} SoundFileStart + */ + public static from(object: { [k: string]: any }): message.input.SoundFileStart; + + /** + * Creates a plain object from a SoundFileStart message. Also converts values to other types if specified. + * @param {message.input.SoundFileStart} message SoundFileStart + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.input.SoundFileStart, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this SoundFileStart message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this SoundFileStart to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type SoundChunk$Properties = { + endTime?: google.protobuf.Timestamp$Properties; + data?: number[]; + }; + + /** + * Constructs a new SoundChunk. + * @classdesc TODO document + * + * @author Jake Woods + * @exports message.input.SoundChunk + * @constructor + * @param {message.input.SoundChunk$Properties=} [properties] Properties to set + */ + class SoundChunk { + + /** + * Constructs a new SoundChunk. + * @classdesc TODO document + * + * @author Jake Woods + * @exports message.input.SoundChunk + * @constructor + * @param {message.input.SoundChunk$Properties=} [properties] Properties to set + */ + constructor(properties?: message.input.SoundChunk$Properties); + + /** + * SoundChunk endTime. + * @type {(google.protobuf.Timestamp$Properties|null)} + */ + public endTime: (google.protobuf.Timestamp$Properties|null); + + /** + * SoundChunk data. + * @type {Array.} + */ + public data: number[]; + + /** + * Creates a new SoundChunk instance using the specified properties. + * @param {message.input.SoundChunk$Properties=} [properties] Properties to set + * @returns {message.input.SoundChunk} SoundChunk instance + */ + public static create(properties?: message.input.SoundChunk$Properties): message.input.SoundChunk; + + /** + * Encodes the specified SoundChunk message. Does not implicitly {@link message.input.SoundChunk.verify|verify} messages. + * @param {message.input.SoundChunk$Properties} message SoundChunk message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.input.SoundChunk$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified SoundChunk message, length delimited. Does not implicitly {@link message.input.SoundChunk.verify|verify} messages. + * @param {message.input.SoundChunk$Properties} message SoundChunk message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.input.SoundChunk$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a SoundChunk message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.input.SoundChunk} SoundChunk + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.input.SoundChunk; + + /** + * Decodes a SoundChunk message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.input.SoundChunk} SoundChunk + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.input.SoundChunk; + + /** + * Verifies a SoundChunk message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a SoundChunk message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.input.SoundChunk} SoundChunk + */ + public static fromObject(object: { [k: string]: any }): message.input.SoundChunk; + + /** + * Creates a SoundChunk message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.input.SoundChunk.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.input.SoundChunk} SoundChunk + */ + public static from(object: { [k: string]: any }): message.input.SoundChunk; + + /** + * Creates a plain object from a SoundChunk message. Also converts values to other types if specified. + * @param {message.input.SoundChunk} message SoundChunk + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.input.SoundChunk, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this SoundChunk message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this SoundChunk to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + } + + /** + * Namespace localisation. + * @exports message.localisation + * @namespace + */ + namespace localisation { + + type FieldObject$Properties = { + name?: string; + models?: message.localisation.Model$Properties[]; + }; + + /** + * Constructs a new FieldObject. + * @exports message.localisation.FieldObject + * @constructor + * @param {message.localisation.FieldObject$Properties=} [properties] Properties to set + */ + class FieldObject { + + /** + * Constructs a new FieldObject. + * @exports message.localisation.FieldObject + * @constructor + * @param {message.localisation.FieldObject$Properties=} [properties] Properties to set + */ + constructor(properties?: message.localisation.FieldObject$Properties); + + /** + * FieldObject name. + * @type {string} + */ + public name: string; + + /** + * FieldObject models. + * @type {Array.} + */ + public models: message.localisation.Model$Properties[]; + + /** + * Creates a new FieldObject instance using the specified properties. + * @param {message.localisation.FieldObject$Properties=} [properties] Properties to set + * @returns {message.localisation.FieldObject} FieldObject instance + */ + public static create(properties?: message.localisation.FieldObject$Properties): message.localisation.FieldObject; + + /** + * Encodes the specified FieldObject message. Does not implicitly {@link message.localisation.FieldObject.verify|verify} messages. + * @param {message.localisation.FieldObject$Properties} message FieldObject message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.localisation.FieldObject$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified FieldObject message, length delimited. Does not implicitly {@link message.localisation.FieldObject.verify|verify} messages. + * @param {message.localisation.FieldObject$Properties} message FieldObject message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.localisation.FieldObject$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a FieldObject message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.localisation.FieldObject} FieldObject + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.localisation.FieldObject; + + /** + * Decodes a FieldObject message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.localisation.FieldObject} FieldObject + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.localisation.FieldObject; + + /** + * Verifies a FieldObject message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a FieldObject message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.localisation.FieldObject} FieldObject + */ + public static fromObject(object: { [k: string]: any }): message.localisation.FieldObject; + + /** + * Creates a FieldObject message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.localisation.FieldObject.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.localisation.FieldObject} FieldObject + */ + public static from(object: { [k: string]: any }): message.localisation.FieldObject; + + /** + * Creates a plain object from a FieldObject message. Also converts values to other types if specified. + * @param {message.localisation.FieldObject} message FieldObject + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.localisation.FieldObject, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this FieldObject message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this FieldObject to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type LocalisationObject$Properties = { + position?: vec2$Properties; + positionCov?: mat22$Properties; + lastMeasurementTime?: google.protobuf.Timestamp$Properties; + }; + + /** + * Constructs a new LocalisationObject. + * @exports message.localisation.LocalisationObject + * @constructor + * @param {message.localisation.LocalisationObject$Properties=} [properties] Properties to set + */ + class LocalisationObject { + + /** + * Constructs a new LocalisationObject. + * @exports message.localisation.LocalisationObject + * @constructor + * @param {message.localisation.LocalisationObject$Properties=} [properties] Properties to set + */ + constructor(properties?: message.localisation.LocalisationObject$Properties); + + /** + * LocalisationObject position. + * @type {(vec2$Properties|null)} + */ + public position: (vec2$Properties|null); + + /** + * LocalisationObject positionCov. + * @type {(mat22$Properties|null)} + */ + public positionCov: (mat22$Properties|null); + + /** + * LocalisationObject lastMeasurementTime. + * @type {(google.protobuf.Timestamp$Properties|null)} + */ + public lastMeasurementTime: (google.protobuf.Timestamp$Properties|null); + + /** + * Creates a new LocalisationObject instance using the specified properties. + * @param {message.localisation.LocalisationObject$Properties=} [properties] Properties to set + * @returns {message.localisation.LocalisationObject} LocalisationObject instance + */ + public static create(properties?: message.localisation.LocalisationObject$Properties): message.localisation.LocalisationObject; + + /** + * Encodes the specified LocalisationObject message. Does not implicitly {@link message.localisation.LocalisationObject.verify|verify} messages. + * @param {message.localisation.LocalisationObject$Properties} message LocalisationObject message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.localisation.LocalisationObject$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified LocalisationObject message, length delimited. Does not implicitly {@link message.localisation.LocalisationObject.verify|verify} messages. + * @param {message.localisation.LocalisationObject$Properties} message LocalisationObject message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.localisation.LocalisationObject$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a LocalisationObject message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.localisation.LocalisationObject} LocalisationObject + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.localisation.LocalisationObject; + + /** + * Decodes a LocalisationObject message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.localisation.LocalisationObject} LocalisationObject + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.localisation.LocalisationObject; + + /** + * Verifies a LocalisationObject message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a LocalisationObject message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.localisation.LocalisationObject} LocalisationObject + */ + public static fromObject(object: { [k: string]: any }): message.localisation.LocalisationObject; + + /** + * Creates a LocalisationObject message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.localisation.LocalisationObject.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.localisation.LocalisationObject} LocalisationObject + */ + public static from(object: { [k: string]: any }): message.localisation.LocalisationObject; + + /** + * Creates a plain object from a LocalisationObject message. Also converts values to other types if specified. + * @param {message.localisation.LocalisationObject} message LocalisationObject + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.localisation.LocalisationObject, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this LocalisationObject message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this LocalisationObject to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type Ball$Properties = { + locObject?: message.localisation.LocalisationObject$Properties; + velocity?: vec2$Properties; + worldSpace?: boolean; + }; + + /** + * Constructs a new Ball. + * @exports message.localisation.Ball + * @constructor + * @param {message.localisation.Ball$Properties=} [properties] Properties to set + */ + class Ball { + + /** + * Constructs a new Ball. + * @exports message.localisation.Ball + * @constructor + * @param {message.localisation.Ball$Properties=} [properties] Properties to set + */ + constructor(properties?: message.localisation.Ball$Properties); + + /** + * Ball locObject. + * @type {(message.localisation.LocalisationObject$Properties|null)} + */ + public locObject: (message.localisation.LocalisationObject$Properties|null); + + /** + * Ball velocity. + * @type {(vec2$Properties|null)} + */ + public velocity: (vec2$Properties|null); + + /** + * Ball worldSpace. + * @type {boolean} + */ + public worldSpace: boolean; + + /** + * Creates a new Ball instance using the specified properties. + * @param {message.localisation.Ball$Properties=} [properties] Properties to set + * @returns {message.localisation.Ball} Ball instance + */ + public static create(properties?: message.localisation.Ball$Properties): message.localisation.Ball; + + /** + * Encodes the specified Ball message. Does not implicitly {@link message.localisation.Ball.verify|verify} messages. + * @param {message.localisation.Ball$Properties} message Ball message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.localisation.Ball$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Ball message, length delimited. Does not implicitly {@link message.localisation.Ball.verify|verify} messages. + * @param {message.localisation.Ball$Properties} message Ball message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.localisation.Ball$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a Ball message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.localisation.Ball} Ball + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.localisation.Ball; + + /** + * Decodes a Ball message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.localisation.Ball} Ball + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.localisation.Ball; + + /** + * Verifies a Ball message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a Ball message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.localisation.Ball} Ball + */ + public static fromObject(object: { [k: string]: any }): message.localisation.Ball; + + /** + * Creates a Ball message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.localisation.Ball.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.localisation.Ball} Ball + */ + public static from(object: { [k: string]: any }): message.localisation.Ball; + + /** + * Creates a plain object from a Ball message. Also converts values to other types if specified. + * @param {message.localisation.Ball} message Ball + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.localisation.Ball, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this Ball message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this Ball to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type Self$Properties = { + locObject?: message.localisation.LocalisationObject$Properties; + heading?: vec2$Properties; + velocity?: vec2$Properties; + robotToWorldRotation?: mat22$Properties; + }; + + /** + * Constructs a new Self. + * @exports message.localisation.Self + * @constructor + * @param {message.localisation.Self$Properties=} [properties] Properties to set + */ + class Self { + + /** + * Constructs a new Self. + * @exports message.localisation.Self + * @constructor + * @param {message.localisation.Self$Properties=} [properties] Properties to set + */ + constructor(properties?: message.localisation.Self$Properties); + + /** + * Self locObject. + * @type {(message.localisation.LocalisationObject$Properties|null)} + */ + public locObject: (message.localisation.LocalisationObject$Properties|null); + + /** + * Self heading. + * @type {(vec2$Properties|null)} + */ + public heading: (vec2$Properties|null); + + /** + * Self velocity. + * @type {(vec2$Properties|null)} + */ + public velocity: (vec2$Properties|null); + + /** + * Self robotToWorldRotation. + * @type {(mat22$Properties|null)} + */ + public robotToWorldRotation: (mat22$Properties|null); + + /** + * Creates a new Self instance using the specified properties. + * @param {message.localisation.Self$Properties=} [properties] Properties to set + * @returns {message.localisation.Self} Self instance + */ + public static create(properties?: message.localisation.Self$Properties): message.localisation.Self; + + /** + * Encodes the specified Self message. Does not implicitly {@link message.localisation.Self.verify|verify} messages. + * @param {message.localisation.Self$Properties} message Self message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.localisation.Self$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Self message, length delimited. Does not implicitly {@link message.localisation.Self.verify|verify} messages. + * @param {message.localisation.Self$Properties} message Self message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.localisation.Self$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a Self message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.localisation.Self} Self + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.localisation.Self; + + /** + * Decodes a Self message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.localisation.Self} Self + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.localisation.Self; + + /** + * Verifies a Self message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a Self message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.localisation.Self} Self + */ + public static fromObject(object: { [k: string]: any }): message.localisation.Self; + + /** + * Creates a Self message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.localisation.Self.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.localisation.Self} Self + */ + public static from(object: { [k: string]: any }): message.localisation.Self; + + /** + * Creates a plain object from a Self message. Also converts values to other types if specified. + * @param {message.localisation.Self} message Self + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.localisation.Self, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this Self message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this Self to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type Model$Properties = { + modelId?: number; + wmX?: number; + wmY?: number; + sdX?: number; + sdY?: number; + srXx?: number; + srXy?: number; + srYy?: number; + heading?: number; + sdHeading?: number; + lost?: boolean; + }; + + /** + * Constructs a new Model. + * @exports message.localisation.Model + * @constructor + * @param {message.localisation.Model$Properties=} [properties] Properties to set + */ + class Model { + + /** + * Constructs a new Model. + * @exports message.localisation.Model + * @constructor + * @param {message.localisation.Model$Properties=} [properties] Properties to set + */ + constructor(properties?: message.localisation.Model$Properties); + + /** + * Model modelId. + * @type {number} + */ + public modelId: number; + + /** + * Model wmX. + * @type {number} + */ + public wmX: number; + + /** + * Model wmY. + * @type {number} + */ + public wmY: number; + + /** + * Model sdX. + * @type {number} + */ + public sdX: number; + + /** + * Model sdY. + * @type {number} + */ + public sdY: number; + + /** + * Model srXx. + * @type {number} + */ + public srXx: number; + + /** + * Model srXy. + * @type {number} + */ + public srXy: number; + + /** + * Model srYy. + * @type {number} + */ + public srYy: number; + + /** + * Model heading. + * @type {number} + */ + public heading: number; + + /** + * Model sdHeading. + * @type {number} + */ + public sdHeading: number; + + /** + * Model lost. + * @type {boolean} + */ + public lost: boolean; + + /** + * Creates a new Model instance using the specified properties. + * @param {message.localisation.Model$Properties=} [properties] Properties to set + * @returns {message.localisation.Model} Model instance + */ + public static create(properties?: message.localisation.Model$Properties): message.localisation.Model; + + /** + * Encodes the specified Model message. Does not implicitly {@link message.localisation.Model.verify|verify} messages. + * @param {message.localisation.Model$Properties} message Model message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.localisation.Model$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Model message, length delimited. Does not implicitly {@link message.localisation.Model.verify|verify} messages. + * @param {message.localisation.Model$Properties} message Model message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.localisation.Model$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a Model message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.localisation.Model} Model + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.localisation.Model; + + /** + * Decodes a Model message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.localisation.Model} Model + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.localisation.Model; + + /** + * Verifies a Model message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a Model message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.localisation.Model} Model + */ + public static fromObject(object: { [k: string]: any }): message.localisation.Model; + + /** + * Creates a Model message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.localisation.Model.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.localisation.Model} Model + */ + public static from(object: { [k: string]: any }): message.localisation.Model; + + /** + * Creates a plain object from a Model message. Also converts values to other types if specified. + * @param {message.localisation.Model} message Model + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.localisation.Model, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this Model message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this Model to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type LocalisationFieldObject$Properties = { + name?: string; + models?: message.localisation.Model$Properties[]; + }; + + /** + * Constructs a new LocalisationFieldObject. + * @exports message.localisation.LocalisationFieldObject + * @constructor + * @param {message.localisation.LocalisationFieldObject$Properties=} [properties] Properties to set + */ + class LocalisationFieldObject { + + /** + * Constructs a new LocalisationFieldObject. + * @exports message.localisation.LocalisationFieldObject + * @constructor + * @param {message.localisation.LocalisationFieldObject$Properties=} [properties] Properties to set + */ + constructor(properties?: message.localisation.LocalisationFieldObject$Properties); + + /** + * LocalisationFieldObject name. + * @type {string} + */ + public name: string; + + /** + * LocalisationFieldObject models. + * @type {Array.} + */ + public models: message.localisation.Model$Properties[]; + + /** + * Creates a new LocalisationFieldObject instance using the specified properties. + * @param {message.localisation.LocalisationFieldObject$Properties=} [properties] Properties to set + * @returns {message.localisation.LocalisationFieldObject} LocalisationFieldObject instance + */ + public static create(properties?: message.localisation.LocalisationFieldObject$Properties): message.localisation.LocalisationFieldObject; + + /** + * Encodes the specified LocalisationFieldObject message. Does not implicitly {@link message.localisation.LocalisationFieldObject.verify|verify} messages. + * @param {message.localisation.LocalisationFieldObject$Properties} message LocalisationFieldObject message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.localisation.LocalisationFieldObject$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified LocalisationFieldObject message, length delimited. Does not implicitly {@link message.localisation.LocalisationFieldObject.verify|verify} messages. + * @param {message.localisation.LocalisationFieldObject$Properties} message LocalisationFieldObject message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.localisation.LocalisationFieldObject$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a LocalisationFieldObject message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.localisation.LocalisationFieldObject} LocalisationFieldObject + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.localisation.LocalisationFieldObject; + + /** + * Decodes a LocalisationFieldObject message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.localisation.LocalisationFieldObject} LocalisationFieldObject + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.localisation.LocalisationFieldObject; + + /** + * Verifies a LocalisationFieldObject message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a LocalisationFieldObject message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.localisation.LocalisationFieldObject} LocalisationFieldObject + */ + public static fromObject(object: { [k: string]: any }): message.localisation.LocalisationFieldObject; + + /** + * Creates a LocalisationFieldObject message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.localisation.LocalisationFieldObject.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.localisation.LocalisationFieldObject} LocalisationFieldObject + */ + public static from(object: { [k: string]: any }): message.localisation.LocalisationFieldObject; + + /** + * Creates a plain object from a LocalisationFieldObject message. Also converts values to other types if specified. + * @param {message.localisation.LocalisationFieldObject} message LocalisationFieldObject + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.localisation.LocalisationFieldObject, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this LocalisationFieldObject message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this LocalisationFieldObject to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type Localisation$Properties = { + fieldObject?: message.localisation.LocalisationFieldObject$Properties[]; + }; + + /** + * Constructs a new Localisation. + * @exports message.localisation.Localisation + * @constructor + * @param {message.localisation.Localisation$Properties=} [properties] Properties to set + */ + class Localisation { + + /** + * Constructs a new Localisation. + * @exports message.localisation.Localisation + * @constructor + * @param {message.localisation.Localisation$Properties=} [properties] Properties to set + */ + constructor(properties?: message.localisation.Localisation$Properties); + + /** + * Localisation fieldObject. + * @type {Array.} + */ + public fieldObject: message.localisation.LocalisationFieldObject$Properties[]; + + /** + * Creates a new Localisation instance using the specified properties. + * @param {message.localisation.Localisation$Properties=} [properties] Properties to set + * @returns {message.localisation.Localisation} Localisation instance + */ + public static create(properties?: message.localisation.Localisation$Properties): message.localisation.Localisation; + + /** + * Encodes the specified Localisation message. Does not implicitly {@link message.localisation.Localisation.verify|verify} messages. + * @param {message.localisation.Localisation$Properties} message Localisation message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.localisation.Localisation$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Localisation message, length delimited. Does not implicitly {@link message.localisation.Localisation.verify|verify} messages. + * @param {message.localisation.Localisation$Properties} message Localisation message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.localisation.Localisation$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a Localisation message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.localisation.Localisation} Localisation + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.localisation.Localisation; + + /** + * Decodes a Localisation message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.localisation.Localisation} Localisation + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.localisation.Localisation; + + /** + * Verifies a Localisation message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a Localisation message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.localisation.Localisation} Localisation + */ + public static fromObject(object: { [k: string]: any }): message.localisation.Localisation; + + /** + * Creates a Localisation message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.localisation.Localisation.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.localisation.Localisation} Localisation + */ + public static from(object: { [k: string]: any }): message.localisation.Localisation; + + /** + * Creates a plain object from a Localisation message. Also converts values to other types if specified. + * @param {message.localisation.Localisation} message Localisation + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.localisation.Localisation, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this Localisation message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this Localisation to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type ResetRobotHypotheses$Properties = { + hypotheses?: message.localisation.ResetRobotHypotheses.Self$Properties[]; + }; + + /** + * Constructs a new ResetRobotHypotheses. + * @exports message.localisation.ResetRobotHypotheses + * @constructor + * @param {message.localisation.ResetRobotHypotheses$Properties=} [properties] Properties to set + */ + class ResetRobotHypotheses { + + /** + * Constructs a new ResetRobotHypotheses. + * @exports message.localisation.ResetRobotHypotheses + * @constructor + * @param {message.localisation.ResetRobotHypotheses$Properties=} [properties] Properties to set + */ + constructor(properties?: message.localisation.ResetRobotHypotheses$Properties); + + /** + * ResetRobotHypotheses hypotheses. + * @type {Array.} + */ + public hypotheses: message.localisation.ResetRobotHypotheses.Self$Properties[]; + + /** + * Creates a new ResetRobotHypotheses instance using the specified properties. + * @param {message.localisation.ResetRobotHypotheses$Properties=} [properties] Properties to set + * @returns {message.localisation.ResetRobotHypotheses} ResetRobotHypotheses instance + */ + public static create(properties?: message.localisation.ResetRobotHypotheses$Properties): message.localisation.ResetRobotHypotheses; + + /** + * Encodes the specified ResetRobotHypotheses message. Does not implicitly {@link message.localisation.ResetRobotHypotheses.verify|verify} messages. + * @param {message.localisation.ResetRobotHypotheses$Properties} message ResetRobotHypotheses message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.localisation.ResetRobotHypotheses$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified ResetRobotHypotheses message, length delimited. Does not implicitly {@link message.localisation.ResetRobotHypotheses.verify|verify} messages. + * @param {message.localisation.ResetRobotHypotheses$Properties} message ResetRobotHypotheses message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.localisation.ResetRobotHypotheses$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a ResetRobotHypotheses message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.localisation.ResetRobotHypotheses} ResetRobotHypotheses + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.localisation.ResetRobotHypotheses; + + /** + * Decodes a ResetRobotHypotheses message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.localisation.ResetRobotHypotheses} ResetRobotHypotheses + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.localisation.ResetRobotHypotheses; + + /** + * Verifies a ResetRobotHypotheses message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a ResetRobotHypotheses message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.localisation.ResetRobotHypotheses} ResetRobotHypotheses + */ + public static fromObject(object: { [k: string]: any }): message.localisation.ResetRobotHypotheses; + + /** + * Creates a ResetRobotHypotheses message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.localisation.ResetRobotHypotheses.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.localisation.ResetRobotHypotheses} ResetRobotHypotheses + */ + public static from(object: { [k: string]: any }): message.localisation.ResetRobotHypotheses; + + /** + * Creates a plain object from a ResetRobotHypotheses message. Also converts values to other types if specified. + * @param {message.localisation.ResetRobotHypotheses} message ResetRobotHypotheses + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.localisation.ResetRobotHypotheses, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this ResetRobotHypotheses message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this ResetRobotHypotheses to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + namespace ResetRobotHypotheses { + + type Self$Properties = { + position?: vec2$Properties; + positionCov?: mat22$Properties; + heading?: number; + headingVar?: number; + absoluteYaw?: boolean; + }; + + /** + * Constructs a new Self. + * @exports message.localisation.ResetRobotHypotheses.Self + * @constructor + * @param {message.localisation.ResetRobotHypotheses.Self$Properties=} [properties] Properties to set + */ + class Self { + + /** + * Constructs a new Self. + * @exports message.localisation.ResetRobotHypotheses.Self + * @constructor + * @param {message.localisation.ResetRobotHypotheses.Self$Properties=} [properties] Properties to set + */ + constructor(properties?: message.localisation.ResetRobotHypotheses.Self$Properties); + + /** + * Self position. + * @type {(vec2$Properties|null)} + */ + public position: (vec2$Properties|null); + + /** + * Self positionCov. + * @type {(mat22$Properties|null)} + */ + public positionCov: (mat22$Properties|null); + + /** + * Self heading. + * @type {number} + */ + public heading: number; + + /** + * Self headingVar. + * @type {number} + */ + public headingVar: number; + + /** + * Self absoluteYaw. + * @type {boolean} + */ + public absoluteYaw: boolean; + + /** + * Creates a new Self instance using the specified properties. + * @param {message.localisation.ResetRobotHypotheses.Self$Properties=} [properties] Properties to set + * @returns {message.localisation.ResetRobotHypotheses.Self} Self instance + */ + public static create(properties?: message.localisation.ResetRobotHypotheses.Self$Properties): message.localisation.ResetRobotHypotheses.Self; + + /** + * Encodes the specified Self message. Does not implicitly {@link message.localisation.ResetRobotHypotheses.Self.verify|verify} messages. + * @param {message.localisation.ResetRobotHypotheses.Self$Properties} message Self message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.localisation.ResetRobotHypotheses.Self$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Self message, length delimited. Does not implicitly {@link message.localisation.ResetRobotHypotheses.Self.verify|verify} messages. + * @param {message.localisation.ResetRobotHypotheses.Self$Properties} message Self message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.localisation.ResetRobotHypotheses.Self$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a Self message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.localisation.ResetRobotHypotheses.Self} Self + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.localisation.ResetRobotHypotheses.Self; + + /** + * Decodes a Self message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.localisation.ResetRobotHypotheses.Self} Self + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.localisation.ResetRobotHypotheses.Self; + + /** + * Verifies a Self message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a Self message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.localisation.ResetRobotHypotheses.Self} Self + */ + public static fromObject(object: { [k: string]: any }): message.localisation.ResetRobotHypotheses.Self; + + /** + * Creates a Self message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.localisation.ResetRobotHypotheses.Self.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.localisation.ResetRobotHypotheses.Self} Self + */ + public static from(object: { [k: string]: any }): message.localisation.ResetRobotHypotheses.Self; + + /** + * Creates a plain object from a Self message. Also converts values to other types if specified. + * @param {message.localisation.ResetRobotHypotheses.Self} message Self + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.localisation.ResetRobotHypotheses.Self, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this Self message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this Self to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + } + + type SideCheckingComplete$Properties = {}; + + /** + * Constructs a new SideCheckingComplete. + * @exports message.localisation.SideCheckingComplete + * @constructor + * @param {message.localisation.SideCheckingComplete$Properties=} [properties] Properties to set + */ + class SideCheckingComplete { + + /** + * Constructs a new SideCheckingComplete. + * @exports message.localisation.SideCheckingComplete + * @constructor + * @param {message.localisation.SideCheckingComplete$Properties=} [properties] Properties to set + */ + constructor(properties?: message.localisation.SideCheckingComplete$Properties); + + /** + * Creates a new SideCheckingComplete instance using the specified properties. + * @param {message.localisation.SideCheckingComplete$Properties=} [properties] Properties to set + * @returns {message.localisation.SideCheckingComplete} SideCheckingComplete instance + */ + public static create(properties?: message.localisation.SideCheckingComplete$Properties): message.localisation.SideCheckingComplete; + + /** + * Encodes the specified SideCheckingComplete message. Does not implicitly {@link message.localisation.SideCheckingComplete.verify|verify} messages. + * @param {message.localisation.SideCheckingComplete$Properties} message SideCheckingComplete message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.localisation.SideCheckingComplete$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified SideCheckingComplete message, length delimited. Does not implicitly {@link message.localisation.SideCheckingComplete.verify|verify} messages. + * @param {message.localisation.SideCheckingComplete$Properties} message SideCheckingComplete message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.localisation.SideCheckingComplete$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a SideCheckingComplete message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.localisation.SideCheckingComplete} SideCheckingComplete + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.localisation.SideCheckingComplete; + + /** + * Decodes a SideCheckingComplete message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.localisation.SideCheckingComplete} SideCheckingComplete + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.localisation.SideCheckingComplete; + + /** + * Verifies a SideCheckingComplete message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a SideCheckingComplete message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.localisation.SideCheckingComplete} SideCheckingComplete + */ + public static fromObject(object: { [k: string]: any }): message.localisation.SideCheckingComplete; + + /** + * Creates a SideCheckingComplete message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.localisation.SideCheckingComplete.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.localisation.SideCheckingComplete} SideCheckingComplete + */ + public static from(object: { [k: string]: any }): message.localisation.SideCheckingComplete; + + /** + * Creates a plain object from a SideCheckingComplete message. Also converts values to other types if specified. + * @param {message.localisation.SideCheckingComplete} message SideCheckingComplete + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.localisation.SideCheckingComplete, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this SideCheckingComplete message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this SideCheckingComplete to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + } + + /** + * Namespace motion. + * @exports message.motion + * @namespace + */ + namespace motion { + + type BalanceBodyUpdate$Properties = { + phase?: number; + leftFoot?: mat44$Properties; + rightFoot?: mat44$Properties; + armLPosition?: vec3$Properties; + armRPosition?: vec3$Properties; + }; + + /** + * Constructs a new BalanceBodyUpdate. + * @exports message.motion.BalanceBodyUpdate + * @constructor + * @param {message.motion.BalanceBodyUpdate$Properties=} [properties] Properties to set + */ + class BalanceBodyUpdate { + + /** + * Constructs a new BalanceBodyUpdate. + * @exports message.motion.BalanceBodyUpdate + * @constructor + * @param {message.motion.BalanceBodyUpdate$Properties=} [properties] Properties to set + */ + constructor(properties?: message.motion.BalanceBodyUpdate$Properties); + + /** + * BalanceBodyUpdate phase. + * @type {number} + */ + public phase: number; + + /** + * BalanceBodyUpdate leftFoot. + * @type {(mat44$Properties|null)} + */ + public leftFoot: (mat44$Properties|null); + + /** + * BalanceBodyUpdate rightFoot. + * @type {(mat44$Properties|null)} + */ + public rightFoot: (mat44$Properties|null); + + /** + * BalanceBodyUpdate armLPosition. + * @type {(vec3$Properties|null)} + */ + public armLPosition: (vec3$Properties|null); + + /** + * BalanceBodyUpdate armRPosition. + * @type {(vec3$Properties|null)} + */ + public armRPosition: (vec3$Properties|null); + + /** + * Creates a new BalanceBodyUpdate instance using the specified properties. + * @param {message.motion.BalanceBodyUpdate$Properties=} [properties] Properties to set + * @returns {message.motion.BalanceBodyUpdate} BalanceBodyUpdate instance + */ + public static create(properties?: message.motion.BalanceBodyUpdate$Properties): message.motion.BalanceBodyUpdate; + + /** + * Encodes the specified BalanceBodyUpdate message. Does not implicitly {@link message.motion.BalanceBodyUpdate.verify|verify} messages. + * @param {message.motion.BalanceBodyUpdate$Properties} message BalanceBodyUpdate message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.motion.BalanceBodyUpdate$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified BalanceBodyUpdate message, length delimited. Does not implicitly {@link message.motion.BalanceBodyUpdate.verify|verify} messages. + * @param {message.motion.BalanceBodyUpdate$Properties} message BalanceBodyUpdate message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.motion.BalanceBodyUpdate$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a BalanceBodyUpdate message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.motion.BalanceBodyUpdate} BalanceBodyUpdate + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.motion.BalanceBodyUpdate; + + /** + * Decodes a BalanceBodyUpdate message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.motion.BalanceBodyUpdate} BalanceBodyUpdate + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.motion.BalanceBodyUpdate; + + /** + * Verifies a BalanceBodyUpdate message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a BalanceBodyUpdate message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.motion.BalanceBodyUpdate} BalanceBodyUpdate + */ + public static fromObject(object: { [k: string]: any }): message.motion.BalanceBodyUpdate; + + /** + * Creates a BalanceBodyUpdate message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.motion.BalanceBodyUpdate.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.motion.BalanceBodyUpdate} BalanceBodyUpdate + */ + public static from(object: { [k: string]: any }): message.motion.BalanceBodyUpdate; + + /** + * Creates a plain object from a BalanceBodyUpdate message. Also converts values to other types if specified. + * @param {message.motion.BalanceBodyUpdate} message BalanceBodyUpdate + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.motion.BalanceBodyUpdate, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this BalanceBodyUpdate message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this BalanceBodyUpdate to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type EnableBalanceResponse$Properties = {}; + + /** + * Constructs a new EnableBalanceResponse. + * @exports message.motion.EnableBalanceResponse + * @constructor + * @param {message.motion.EnableBalanceResponse$Properties=} [properties] Properties to set + */ + class EnableBalanceResponse { + + /** + * Constructs a new EnableBalanceResponse. + * @exports message.motion.EnableBalanceResponse + * @constructor + * @param {message.motion.EnableBalanceResponse$Properties=} [properties] Properties to set + */ + constructor(properties?: message.motion.EnableBalanceResponse$Properties); + + /** + * Creates a new EnableBalanceResponse instance using the specified properties. + * @param {message.motion.EnableBalanceResponse$Properties=} [properties] Properties to set + * @returns {message.motion.EnableBalanceResponse} EnableBalanceResponse instance + */ + public static create(properties?: message.motion.EnableBalanceResponse$Properties): message.motion.EnableBalanceResponse; + + /** + * Encodes the specified EnableBalanceResponse message. Does not implicitly {@link message.motion.EnableBalanceResponse.verify|verify} messages. + * @param {message.motion.EnableBalanceResponse$Properties} message EnableBalanceResponse message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.motion.EnableBalanceResponse$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified EnableBalanceResponse message, length delimited. Does not implicitly {@link message.motion.EnableBalanceResponse.verify|verify} messages. + * @param {message.motion.EnableBalanceResponse$Properties} message EnableBalanceResponse message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.motion.EnableBalanceResponse$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an EnableBalanceResponse message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.motion.EnableBalanceResponse} EnableBalanceResponse + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.motion.EnableBalanceResponse; + + /** + * Decodes an EnableBalanceResponse message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.motion.EnableBalanceResponse} EnableBalanceResponse + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.motion.EnableBalanceResponse; + + /** + * Verifies an EnableBalanceResponse message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates an EnableBalanceResponse message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.motion.EnableBalanceResponse} EnableBalanceResponse + */ + public static fromObject(object: { [k: string]: any }): message.motion.EnableBalanceResponse; + + /** + * Creates an EnableBalanceResponse message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.motion.EnableBalanceResponse.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.motion.EnableBalanceResponse} EnableBalanceResponse + */ + public static from(object: { [k: string]: any }): message.motion.EnableBalanceResponse; + + /** + * Creates a plain object from an EnableBalanceResponse message. Also converts values to other types if specified. + * @param {message.motion.EnableBalanceResponse} message EnableBalanceResponse + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.motion.EnableBalanceResponse, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this EnableBalanceResponse message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this EnableBalanceResponse to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type DisableBalanceResponse$Properties = {}; + + /** + * Constructs a new DisableBalanceResponse. + * @exports message.motion.DisableBalanceResponse + * @constructor + * @param {message.motion.DisableBalanceResponse$Properties=} [properties] Properties to set + */ + class DisableBalanceResponse { + + /** + * Constructs a new DisableBalanceResponse. + * @exports message.motion.DisableBalanceResponse + * @constructor + * @param {message.motion.DisableBalanceResponse$Properties=} [properties] Properties to set + */ + constructor(properties?: message.motion.DisableBalanceResponse$Properties); + + /** + * Creates a new DisableBalanceResponse instance using the specified properties. + * @param {message.motion.DisableBalanceResponse$Properties=} [properties] Properties to set + * @returns {message.motion.DisableBalanceResponse} DisableBalanceResponse instance + */ + public static create(properties?: message.motion.DisableBalanceResponse$Properties): message.motion.DisableBalanceResponse; + + /** + * Encodes the specified DisableBalanceResponse message. Does not implicitly {@link message.motion.DisableBalanceResponse.verify|verify} messages. + * @param {message.motion.DisableBalanceResponse$Properties} message DisableBalanceResponse message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.motion.DisableBalanceResponse$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified DisableBalanceResponse message, length delimited. Does not implicitly {@link message.motion.DisableBalanceResponse.verify|verify} messages. + * @param {message.motion.DisableBalanceResponse$Properties} message DisableBalanceResponse message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.motion.DisableBalanceResponse$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a DisableBalanceResponse message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.motion.DisableBalanceResponse} DisableBalanceResponse + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.motion.DisableBalanceResponse; + + /** + * Decodes a DisableBalanceResponse message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.motion.DisableBalanceResponse} DisableBalanceResponse + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.motion.DisableBalanceResponse; + + /** + * Verifies a DisableBalanceResponse message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a DisableBalanceResponse message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.motion.DisableBalanceResponse} DisableBalanceResponse + */ + public static fromObject(object: { [k: string]: any }): message.motion.DisableBalanceResponse; + + /** + * Creates a DisableBalanceResponse message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.motion.DisableBalanceResponse.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.motion.DisableBalanceResponse} DisableBalanceResponse + */ + public static from(object: { [k: string]: any }): message.motion.DisableBalanceResponse; + + /** + * Creates a plain object from a DisableBalanceResponse message. Also converts values to other types if specified. + * @param {message.motion.DisableBalanceResponse} message DisableBalanceResponse + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.motion.DisableBalanceResponse, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this DisableBalanceResponse message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this DisableBalanceResponse to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type DiveCommand$Properties = { + direction?: vec2$Properties; + }; + + /** + * Constructs a new DiveCommand. + * @exports message.motion.DiveCommand + * @constructor + * @param {message.motion.DiveCommand$Properties=} [properties] Properties to set + */ + class DiveCommand { + + /** + * Constructs a new DiveCommand. + * @exports message.motion.DiveCommand + * @constructor + * @param {message.motion.DiveCommand$Properties=} [properties] Properties to set + */ + constructor(properties?: message.motion.DiveCommand$Properties); + + /** + * DiveCommand direction. + * @type {(vec2$Properties|null)} + */ + public direction: (vec2$Properties|null); + + /** + * Creates a new DiveCommand instance using the specified properties. + * @param {message.motion.DiveCommand$Properties=} [properties] Properties to set + * @returns {message.motion.DiveCommand} DiveCommand instance + */ + public static create(properties?: message.motion.DiveCommand$Properties): message.motion.DiveCommand; + + /** + * Encodes the specified DiveCommand message. Does not implicitly {@link message.motion.DiveCommand.verify|verify} messages. + * @param {message.motion.DiveCommand$Properties} message DiveCommand message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.motion.DiveCommand$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified DiveCommand message, length delimited. Does not implicitly {@link message.motion.DiveCommand.verify|verify} messages. + * @param {message.motion.DiveCommand$Properties} message DiveCommand message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.motion.DiveCommand$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a DiveCommand message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.motion.DiveCommand} DiveCommand + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.motion.DiveCommand; + + /** + * Decodes a DiveCommand message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.motion.DiveCommand} DiveCommand + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.motion.DiveCommand; + + /** + * Verifies a DiveCommand message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a DiveCommand message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.motion.DiveCommand} DiveCommand + */ + public static fromObject(object: { [k: string]: any }): message.motion.DiveCommand; + + /** + * Creates a DiveCommand message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.motion.DiveCommand.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.motion.DiveCommand} DiveCommand + */ + public static from(object: { [k: string]: any }): message.motion.DiveCommand; + + /** + * Creates a plain object from a DiveCommand message. Also converts values to other types if specified. + * @param {message.motion.DiveCommand} message DiveCommand + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.motion.DiveCommand, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this DiveCommand message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this DiveCommand to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type DiveFinished$Properties = {}; + + /** + * Constructs a new DiveFinished. + * @exports message.motion.DiveFinished + * @constructor + * @param {message.motion.DiveFinished$Properties=} [properties] Properties to set + */ + class DiveFinished { + + /** + * Constructs a new DiveFinished. + * @exports message.motion.DiveFinished + * @constructor + * @param {message.motion.DiveFinished$Properties=} [properties] Properties to set + */ + constructor(properties?: message.motion.DiveFinished$Properties); + + /** + * Creates a new DiveFinished instance using the specified properties. + * @param {message.motion.DiveFinished$Properties=} [properties] Properties to set + * @returns {message.motion.DiveFinished} DiveFinished instance + */ + public static create(properties?: message.motion.DiveFinished$Properties): message.motion.DiveFinished; + + /** + * Encodes the specified DiveFinished message. Does not implicitly {@link message.motion.DiveFinished.verify|verify} messages. + * @param {message.motion.DiveFinished$Properties} message DiveFinished message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.motion.DiveFinished$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified DiveFinished message, length delimited. Does not implicitly {@link message.motion.DiveFinished.verify|verify} messages. + * @param {message.motion.DiveFinished$Properties} message DiveFinished message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.motion.DiveFinished$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a DiveFinished message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.motion.DiveFinished} DiveFinished + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.motion.DiveFinished; + + /** + * Decodes a DiveFinished message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.motion.DiveFinished} DiveFinished + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.motion.DiveFinished; + + /** + * Verifies a DiveFinished message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a DiveFinished message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.motion.DiveFinished} DiveFinished + */ + public static fromObject(object: { [k: string]: any }): message.motion.DiveFinished; + + /** + * Creates a DiveFinished message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.motion.DiveFinished.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.motion.DiveFinished} DiveFinished + */ + public static from(object: { [k: string]: any }): message.motion.DiveFinished; + + /** + * Creates a plain object from a DiveFinished message. Also converts values to other types if specified. + * @param {message.motion.DiveFinished} message DiveFinished + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.motion.DiveFinished, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this DiveFinished message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this DiveFinished to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type FootMotionStopped$Properties = {}; + + /** + * Constructs a new FootMotionStopped. + * @exports message.motion.FootMotionStopped + * @constructor + * @param {message.motion.FootMotionStopped$Properties=} [properties] Properties to set + */ + class FootMotionStopped { + + /** + * Constructs a new FootMotionStopped. + * @exports message.motion.FootMotionStopped + * @constructor + * @param {message.motion.FootMotionStopped$Properties=} [properties] Properties to set + */ + constructor(properties?: message.motion.FootMotionStopped$Properties); + + /** + * Creates a new FootMotionStopped instance using the specified properties. + * @param {message.motion.FootMotionStopped$Properties=} [properties] Properties to set + * @returns {message.motion.FootMotionStopped} FootMotionStopped instance + */ + public static create(properties?: message.motion.FootMotionStopped$Properties): message.motion.FootMotionStopped; + + /** + * Encodes the specified FootMotionStopped message. Does not implicitly {@link message.motion.FootMotionStopped.verify|verify} messages. + * @param {message.motion.FootMotionStopped$Properties} message FootMotionStopped message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.motion.FootMotionStopped$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified FootMotionStopped message, length delimited. Does not implicitly {@link message.motion.FootMotionStopped.verify|verify} messages. + * @param {message.motion.FootMotionStopped$Properties} message FootMotionStopped message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.motion.FootMotionStopped$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a FootMotionStopped message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.motion.FootMotionStopped} FootMotionStopped + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.motion.FootMotionStopped; + + /** + * Decodes a FootMotionStopped message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.motion.FootMotionStopped} FootMotionStopped + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.motion.FootMotionStopped; + + /** + * Verifies a FootMotionStopped message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a FootMotionStopped message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.motion.FootMotionStopped} FootMotionStopped + */ + public static fromObject(object: { [k: string]: any }): message.motion.FootMotionStopped; + + /** + * Creates a FootMotionStopped message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.motion.FootMotionStopped.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.motion.FootMotionStopped} FootMotionStopped + */ + public static from(object: { [k: string]: any }): message.motion.FootMotionStopped; + + /** + * Creates a plain object from a FootMotionStopped message. Also converts values to other types if specified. + * @param {message.motion.FootMotionStopped} message FootMotionStopped + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.motion.FootMotionStopped, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this FootMotionStopped message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this FootMotionStopped to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type FootMotionUpdate$Properties = { + phase?: number; + activeForwardLimb?: number; + leftFoot2D?: vec3$Properties; + rightFoot2D?: vec3$Properties; + leftFoot3D?: mat44$Properties; + rightFoot3D?: mat44$Properties; + }; + + /** + * Constructs a new FootMotionUpdate. + * @exports message.motion.FootMotionUpdate + * @constructor + * @param {message.motion.FootMotionUpdate$Properties=} [properties] Properties to set + */ + class FootMotionUpdate { + + /** + * Constructs a new FootMotionUpdate. + * @exports message.motion.FootMotionUpdate + * @constructor + * @param {message.motion.FootMotionUpdate$Properties=} [properties] Properties to set + */ + constructor(properties?: message.motion.FootMotionUpdate$Properties); + + /** + * FootMotionUpdate phase. + * @type {number} + */ + public phase: number; + + /** + * FootMotionUpdate activeForwardLimb. + * @type {number} + */ + public activeForwardLimb: number; + + /** + * FootMotionUpdate leftFoot2D. + * @type {(vec3$Properties|null)} + */ + public leftFoot2D: (vec3$Properties|null); + + /** + * FootMotionUpdate rightFoot2D. + * @type {(vec3$Properties|null)} + */ + public rightFoot2D: (vec3$Properties|null); + + /** + * FootMotionUpdate leftFoot3D. + * @type {(mat44$Properties|null)} + */ + public leftFoot3D: (mat44$Properties|null); + + /** + * FootMotionUpdate rightFoot3D. + * @type {(mat44$Properties|null)} + */ + public rightFoot3D: (mat44$Properties|null); + + /** + * Creates a new FootMotionUpdate instance using the specified properties. + * @param {message.motion.FootMotionUpdate$Properties=} [properties] Properties to set + * @returns {message.motion.FootMotionUpdate} FootMotionUpdate instance + */ + public static create(properties?: message.motion.FootMotionUpdate$Properties): message.motion.FootMotionUpdate; + + /** + * Encodes the specified FootMotionUpdate message. Does not implicitly {@link message.motion.FootMotionUpdate.verify|verify} messages. + * @param {message.motion.FootMotionUpdate$Properties} message FootMotionUpdate message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.motion.FootMotionUpdate$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified FootMotionUpdate message, length delimited. Does not implicitly {@link message.motion.FootMotionUpdate.verify|verify} messages. + * @param {message.motion.FootMotionUpdate$Properties} message FootMotionUpdate message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.motion.FootMotionUpdate$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a FootMotionUpdate message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.motion.FootMotionUpdate} FootMotionUpdate + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.motion.FootMotionUpdate; + + /** + * Decodes a FootMotionUpdate message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.motion.FootMotionUpdate} FootMotionUpdate + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.motion.FootMotionUpdate; + + /** + * Verifies a FootMotionUpdate message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a FootMotionUpdate message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.motion.FootMotionUpdate} FootMotionUpdate + */ + public static fromObject(object: { [k: string]: any }): message.motion.FootMotionUpdate; + + /** + * Creates a FootMotionUpdate message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.motion.FootMotionUpdate.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.motion.FootMotionUpdate} FootMotionUpdate + */ + public static from(object: { [k: string]: any }): message.motion.FootMotionUpdate; + + /** + * Creates a plain object from a FootMotionUpdate message. Also converts values to other types if specified. + * @param {message.motion.FootMotionUpdate} message FootMotionUpdate + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.motion.FootMotionUpdate, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this FootMotionUpdate message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this FootMotionUpdate to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type NextFootTargetInfo$Properties = { + leftFootSource?: vec3$Properties; + rightFootSource?: vec3$Properties; + supportMass?: vec3$Properties; + leftFootDestination?: vec3$Properties; + rightFootDestination?: vec3$Properties; + }; + + /** + * Constructs a new NextFootTargetInfo. + * @exports message.motion.NextFootTargetInfo + * @constructor + * @param {message.motion.NextFootTargetInfo$Properties=} [properties] Properties to set + */ + class NextFootTargetInfo { + + /** + * Constructs a new NextFootTargetInfo. + * @exports message.motion.NextFootTargetInfo + * @constructor + * @param {message.motion.NextFootTargetInfo$Properties=} [properties] Properties to set + */ + constructor(properties?: message.motion.NextFootTargetInfo$Properties); + + /** + * NextFootTargetInfo leftFootSource. + * @type {(vec3$Properties|null)} + */ + public leftFootSource: (vec3$Properties|null); + + /** + * NextFootTargetInfo rightFootSource. + * @type {(vec3$Properties|null)} + */ + public rightFootSource: (vec3$Properties|null); + + /** + * NextFootTargetInfo supportMass. + * @type {(vec3$Properties|null)} + */ + public supportMass: (vec3$Properties|null); + + /** + * NextFootTargetInfo leftFootDestination. + * @type {(vec3$Properties|null)} + */ + public leftFootDestination: (vec3$Properties|null); + + /** + * NextFootTargetInfo rightFootDestination. + * @type {(vec3$Properties|null)} + */ + public rightFootDestination: (vec3$Properties|null); + + /** + * Creates a new NextFootTargetInfo instance using the specified properties. + * @param {message.motion.NextFootTargetInfo$Properties=} [properties] Properties to set + * @returns {message.motion.NextFootTargetInfo} NextFootTargetInfo instance + */ + public static create(properties?: message.motion.NextFootTargetInfo$Properties): message.motion.NextFootTargetInfo; + + /** + * Encodes the specified NextFootTargetInfo message. Does not implicitly {@link message.motion.NextFootTargetInfo.verify|verify} messages. + * @param {message.motion.NextFootTargetInfo$Properties} message NextFootTargetInfo message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.motion.NextFootTargetInfo$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified NextFootTargetInfo message, length delimited. Does not implicitly {@link message.motion.NextFootTargetInfo.verify|verify} messages. + * @param {message.motion.NextFootTargetInfo$Properties} message NextFootTargetInfo message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.motion.NextFootTargetInfo$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a NextFootTargetInfo message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.motion.NextFootTargetInfo} NextFootTargetInfo + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.motion.NextFootTargetInfo; + + /** + * Decodes a NextFootTargetInfo message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.motion.NextFootTargetInfo} NextFootTargetInfo + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.motion.NextFootTargetInfo; + + /** + * Verifies a NextFootTargetInfo message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a NextFootTargetInfo message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.motion.NextFootTargetInfo} NextFootTargetInfo + */ + public static fromObject(object: { [k: string]: any }): message.motion.NextFootTargetInfo; + + /** + * Creates a NextFootTargetInfo message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.motion.NextFootTargetInfo.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.motion.NextFootTargetInfo} NextFootTargetInfo + */ + public static from(object: { [k: string]: any }): message.motion.NextFootTargetInfo; + + /** + * Creates a plain object from a NextFootTargetInfo message. Also converts values to other types if specified. + * @param {message.motion.NextFootTargetInfo} message NextFootTargetInfo + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.motion.NextFootTargetInfo, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this NextFootTargetInfo message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this NextFootTargetInfo to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type FootStepRequested$Properties = { + status?: boolean; + }; + + /** + * Constructs a new FootStepRequested. + * @exports message.motion.FootStepRequested + * @constructor + * @param {message.motion.FootStepRequested$Properties=} [properties] Properties to set + */ + class FootStepRequested { + + /** + * Constructs a new FootStepRequested. + * @exports message.motion.FootStepRequested + * @constructor + * @param {message.motion.FootStepRequested$Properties=} [properties] Properties to set + */ + constructor(properties?: message.motion.FootStepRequested$Properties); + + /** + * FootStepRequested status. + * @type {boolean} + */ + public status: boolean; + + /** + * Creates a new FootStepRequested instance using the specified properties. + * @param {message.motion.FootStepRequested$Properties=} [properties] Properties to set + * @returns {message.motion.FootStepRequested} FootStepRequested instance + */ + public static create(properties?: message.motion.FootStepRequested$Properties): message.motion.FootStepRequested; + + /** + * Encodes the specified FootStepRequested message. Does not implicitly {@link message.motion.FootStepRequested.verify|verify} messages. + * @param {message.motion.FootStepRequested$Properties} message FootStepRequested message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.motion.FootStepRequested$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified FootStepRequested message, length delimited. Does not implicitly {@link message.motion.FootStepRequested.verify|verify} messages. + * @param {message.motion.FootStepRequested$Properties} message FootStepRequested message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.motion.FootStepRequested$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a FootStepRequested message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.motion.FootStepRequested} FootStepRequested + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.motion.FootStepRequested; + + /** + * Decodes a FootStepRequested message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.motion.FootStepRequested} FootStepRequested + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.motion.FootStepRequested; + + /** + * Verifies a FootStepRequested message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a FootStepRequested message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.motion.FootStepRequested} FootStepRequested + */ + public static fromObject(object: { [k: string]: any }): message.motion.FootStepRequested; + + /** + * Creates a FootStepRequested message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.motion.FootStepRequested.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.motion.FootStepRequested} FootStepRequested + */ + public static from(object: { [k: string]: any }): message.motion.FootStepRequested; + + /** + * Creates a plain object from a FootStepRequested message. Also converts values to other types if specified. + * @param {message.motion.FootStepRequested} message FootStepRequested + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.motion.FootStepRequested, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this FootStepRequested message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this FootStepRequested to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type FootStepCompleted$Properties = { + status?: boolean; + }; + + /** + * Constructs a new FootStepCompleted. + * @exports message.motion.FootStepCompleted + * @constructor + * @param {message.motion.FootStepCompleted$Properties=} [properties] Properties to set + */ + class FootStepCompleted { + + /** + * Constructs a new FootStepCompleted. + * @exports message.motion.FootStepCompleted + * @constructor + * @param {message.motion.FootStepCompleted$Properties=} [properties] Properties to set + */ + constructor(properties?: message.motion.FootStepCompleted$Properties); + + /** + * FootStepCompleted status. + * @type {boolean} + */ + public status: boolean; + + /** + * Creates a new FootStepCompleted instance using the specified properties. + * @param {message.motion.FootStepCompleted$Properties=} [properties] Properties to set + * @returns {message.motion.FootStepCompleted} FootStepCompleted instance + */ + public static create(properties?: message.motion.FootStepCompleted$Properties): message.motion.FootStepCompleted; + + /** + * Encodes the specified FootStepCompleted message. Does not implicitly {@link message.motion.FootStepCompleted.verify|verify} messages. + * @param {message.motion.FootStepCompleted$Properties} message FootStepCompleted message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.motion.FootStepCompleted$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified FootStepCompleted message, length delimited. Does not implicitly {@link message.motion.FootStepCompleted.verify|verify} messages. + * @param {message.motion.FootStepCompleted$Properties} message FootStepCompleted message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.motion.FootStepCompleted$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a FootStepCompleted message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.motion.FootStepCompleted} FootStepCompleted + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.motion.FootStepCompleted; + + /** + * Decodes a FootStepCompleted message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.motion.FootStepCompleted} FootStepCompleted + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.motion.FootStepCompleted; + + /** + * Verifies a FootStepCompleted message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a FootStepCompleted message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.motion.FootStepCompleted} FootStepCompleted + */ + public static fromObject(object: { [k: string]: any }): message.motion.FootStepCompleted; + + /** + * Creates a FootStepCompleted message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.motion.FootStepCompleted.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.motion.FootStepCompleted} FootStepCompleted + */ + public static from(object: { [k: string]: any }): message.motion.FootStepCompleted; + + /** + * Creates a plain object from a FootStepCompleted message. Also converts values to other types if specified. + * @param {message.motion.FootStepCompleted} message FootStepCompleted + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.motion.FootStepCompleted, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this FootStepCompleted message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this FootStepCompleted to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type EnableFootMotion$Properties = {}; + + /** + * Constructs a new EnableFootMotion. + * @exports message.motion.EnableFootMotion + * @constructor + * @param {message.motion.EnableFootMotion$Properties=} [properties] Properties to set + */ + class EnableFootMotion { + + /** + * Constructs a new EnableFootMotion. + * @exports message.motion.EnableFootMotion + * @constructor + * @param {message.motion.EnableFootMotion$Properties=} [properties] Properties to set + */ + constructor(properties?: message.motion.EnableFootMotion$Properties); + + /** + * Creates a new EnableFootMotion instance using the specified properties. + * @param {message.motion.EnableFootMotion$Properties=} [properties] Properties to set + * @returns {message.motion.EnableFootMotion} EnableFootMotion instance + */ + public static create(properties?: message.motion.EnableFootMotion$Properties): message.motion.EnableFootMotion; + + /** + * Encodes the specified EnableFootMotion message. Does not implicitly {@link message.motion.EnableFootMotion.verify|verify} messages. + * @param {message.motion.EnableFootMotion$Properties} message EnableFootMotion message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.motion.EnableFootMotion$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified EnableFootMotion message, length delimited. Does not implicitly {@link message.motion.EnableFootMotion.verify|verify} messages. + * @param {message.motion.EnableFootMotion$Properties} message EnableFootMotion message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.motion.EnableFootMotion$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an EnableFootMotion message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.motion.EnableFootMotion} EnableFootMotion + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.motion.EnableFootMotion; + + /** + * Decodes an EnableFootMotion message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.motion.EnableFootMotion} EnableFootMotion + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.motion.EnableFootMotion; + + /** + * Verifies an EnableFootMotion message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates an EnableFootMotion message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.motion.EnableFootMotion} EnableFootMotion + */ + public static fromObject(object: { [k: string]: any }): message.motion.EnableFootMotion; + + /** + * Creates an EnableFootMotion message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.motion.EnableFootMotion.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.motion.EnableFootMotion} EnableFootMotion + */ + public static from(object: { [k: string]: any }): message.motion.EnableFootMotion; + + /** + * Creates a plain object from an EnableFootMotion message. Also converts values to other types if specified. + * @param {message.motion.EnableFootMotion} message EnableFootMotion + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.motion.EnableFootMotion, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this EnableFootMotion message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this EnableFootMotion to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type DisableFootMotion$Properties = {}; + + /** + * Constructs a new DisableFootMotion. + * @exports message.motion.DisableFootMotion + * @constructor + * @param {message.motion.DisableFootMotion$Properties=} [properties] Properties to set + */ + class DisableFootMotion { + + /** + * Constructs a new DisableFootMotion. + * @exports message.motion.DisableFootMotion + * @constructor + * @param {message.motion.DisableFootMotion$Properties=} [properties] Properties to set + */ + constructor(properties?: message.motion.DisableFootMotion$Properties); + + /** + * Creates a new DisableFootMotion instance using the specified properties. + * @param {message.motion.DisableFootMotion$Properties=} [properties] Properties to set + * @returns {message.motion.DisableFootMotion} DisableFootMotion instance + */ + public static create(properties?: message.motion.DisableFootMotion$Properties): message.motion.DisableFootMotion; + + /** + * Encodes the specified DisableFootMotion message. Does not implicitly {@link message.motion.DisableFootMotion.verify|verify} messages. + * @param {message.motion.DisableFootMotion$Properties} message DisableFootMotion message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.motion.DisableFootMotion$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified DisableFootMotion message, length delimited. Does not implicitly {@link message.motion.DisableFootMotion.verify|verify} messages. + * @param {message.motion.DisableFootMotion$Properties} message DisableFootMotion message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.motion.DisableFootMotion$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a DisableFootMotion message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.motion.DisableFootMotion} DisableFootMotion + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.motion.DisableFootMotion; + + /** + * Decodes a DisableFootMotion message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.motion.DisableFootMotion} DisableFootMotion + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.motion.DisableFootMotion; + + /** + * Verifies a DisableFootMotion message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a DisableFootMotion message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.motion.DisableFootMotion} DisableFootMotion + */ + public static fromObject(object: { [k: string]: any }): message.motion.DisableFootMotion; + + /** + * Creates a DisableFootMotion message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.motion.DisableFootMotion.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.motion.DisableFootMotion} DisableFootMotion + */ + public static from(object: { [k: string]: any }): message.motion.DisableFootMotion; + + /** + * Creates a plain object from a DisableFootMotion message. Also converts values to other types if specified. + * @param {message.motion.DisableFootMotion} message DisableFootMotion + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.motion.DisableFootMotion, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this DisableFootMotion message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this DisableFootMotion to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type FootPlacementStopped$Properties = {}; + + /** + * Constructs a new FootPlacementStopped. + * @exports message.motion.FootPlacementStopped + * @constructor + * @param {message.motion.FootPlacementStopped$Properties=} [properties] Properties to set + */ + class FootPlacementStopped { + + /** + * Constructs a new FootPlacementStopped. + * @exports message.motion.FootPlacementStopped + * @constructor + * @param {message.motion.FootPlacementStopped$Properties=} [properties] Properties to set + */ + constructor(properties?: message.motion.FootPlacementStopped$Properties); + + /** + * Creates a new FootPlacementStopped instance using the specified properties. + * @param {message.motion.FootPlacementStopped$Properties=} [properties] Properties to set + * @returns {message.motion.FootPlacementStopped} FootPlacementStopped instance + */ + public static create(properties?: message.motion.FootPlacementStopped$Properties): message.motion.FootPlacementStopped; + + /** + * Encodes the specified FootPlacementStopped message. Does not implicitly {@link message.motion.FootPlacementStopped.verify|verify} messages. + * @param {message.motion.FootPlacementStopped$Properties} message FootPlacementStopped message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.motion.FootPlacementStopped$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified FootPlacementStopped message, length delimited. Does not implicitly {@link message.motion.FootPlacementStopped.verify|verify} messages. + * @param {message.motion.FootPlacementStopped$Properties} message FootPlacementStopped message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.motion.FootPlacementStopped$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a FootPlacementStopped message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.motion.FootPlacementStopped} FootPlacementStopped + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.motion.FootPlacementStopped; + + /** + * Decodes a FootPlacementStopped message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.motion.FootPlacementStopped} FootPlacementStopped + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.motion.FootPlacementStopped; + + /** + * Verifies a FootPlacementStopped message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a FootPlacementStopped message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.motion.FootPlacementStopped} FootPlacementStopped + */ + public static fromObject(object: { [k: string]: any }): message.motion.FootPlacementStopped; + + /** + * Creates a FootPlacementStopped message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.motion.FootPlacementStopped.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.motion.FootPlacementStopped} FootPlacementStopped + */ + public static from(object: { [k: string]: any }): message.motion.FootPlacementStopped; + + /** + * Creates a plain object from a FootPlacementStopped message. Also converts values to other types if specified. + * @param {message.motion.FootPlacementStopped} message FootPlacementStopped + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.motion.FootPlacementStopped, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this FootPlacementStopped message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this FootPlacementStopped to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type NewStepTargetInfo$Properties = { + targetTime?: number; + velocityCurrent?: vec3$Properties; + activeForwardLimb?: number; + }; + + /** + * Constructs a new NewStepTargetInfo. + * @exports message.motion.NewStepTargetInfo + * @constructor + * @param {message.motion.NewStepTargetInfo$Properties=} [properties] Properties to set + */ + class NewStepTargetInfo { + + /** + * Constructs a new NewStepTargetInfo. + * @exports message.motion.NewStepTargetInfo + * @constructor + * @param {message.motion.NewStepTargetInfo$Properties=} [properties] Properties to set + */ + constructor(properties?: message.motion.NewStepTargetInfo$Properties); + + /** + * NewStepTargetInfo targetTime. + * @type {number} + */ + public targetTime: number; + + /** + * NewStepTargetInfo velocityCurrent. + * @type {(vec3$Properties|null)} + */ + public velocityCurrent: (vec3$Properties|null); + + /** + * NewStepTargetInfo activeForwardLimb. + * @type {number} + */ + public activeForwardLimb: number; + + /** + * Creates a new NewStepTargetInfo instance using the specified properties. + * @param {message.motion.NewStepTargetInfo$Properties=} [properties] Properties to set + * @returns {message.motion.NewStepTargetInfo} NewStepTargetInfo instance + */ + public static create(properties?: message.motion.NewStepTargetInfo$Properties): message.motion.NewStepTargetInfo; + + /** + * Encodes the specified NewStepTargetInfo message. Does not implicitly {@link message.motion.NewStepTargetInfo.verify|verify} messages. + * @param {message.motion.NewStepTargetInfo$Properties} message NewStepTargetInfo message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.motion.NewStepTargetInfo$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified NewStepTargetInfo message, length delimited. Does not implicitly {@link message.motion.NewStepTargetInfo.verify|verify} messages. + * @param {message.motion.NewStepTargetInfo$Properties} message NewStepTargetInfo message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.motion.NewStepTargetInfo$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a NewStepTargetInfo message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.motion.NewStepTargetInfo} NewStepTargetInfo + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.motion.NewStepTargetInfo; + + /** + * Decodes a NewStepTargetInfo message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.motion.NewStepTargetInfo} NewStepTargetInfo + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.motion.NewStepTargetInfo; + + /** + * Verifies a NewStepTargetInfo message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a NewStepTargetInfo message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.motion.NewStepTargetInfo} NewStepTargetInfo + */ + public static fromObject(object: { [k: string]: any }): message.motion.NewStepTargetInfo; + + /** + * Creates a NewStepTargetInfo message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.motion.NewStepTargetInfo.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.motion.NewStepTargetInfo} NewStepTargetInfo + */ + public static from(object: { [k: string]: any }): message.motion.NewStepTargetInfo; + + /** + * Creates a plain object from a NewStepTargetInfo message. Also converts values to other types if specified. + * @param {message.motion.NewStepTargetInfo} message NewStepTargetInfo + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.motion.NewStepTargetInfo, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this NewStepTargetInfo message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this NewStepTargetInfo to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type NewFootTargetInfo$Properties = { + leftFootSource?: vec3$Properties; + rightFootSource?: vec3$Properties; + supportMass?: vec3$Properties; + leftFootDestination?: vec3$Properties; + rightFootDestination?: vec3$Properties; + }; + + /** + * Constructs a new NewFootTargetInfo. + * @exports message.motion.NewFootTargetInfo + * @constructor + * @param {message.motion.NewFootTargetInfo$Properties=} [properties] Properties to set + */ + class NewFootTargetInfo { + + /** + * Constructs a new NewFootTargetInfo. + * @exports message.motion.NewFootTargetInfo + * @constructor + * @param {message.motion.NewFootTargetInfo$Properties=} [properties] Properties to set + */ + constructor(properties?: message.motion.NewFootTargetInfo$Properties); + + /** + * NewFootTargetInfo leftFootSource. + * @type {(vec3$Properties|null)} + */ + public leftFootSource: (vec3$Properties|null); + + /** + * NewFootTargetInfo rightFootSource. + * @type {(vec3$Properties|null)} + */ + public rightFootSource: (vec3$Properties|null); + + /** + * NewFootTargetInfo supportMass. + * @type {(vec3$Properties|null)} + */ + public supportMass: (vec3$Properties|null); + + /** + * NewFootTargetInfo leftFootDestination. + * @type {(vec3$Properties|null)} + */ + public leftFootDestination: (vec3$Properties|null); + + /** + * NewFootTargetInfo rightFootDestination. + * @type {(vec3$Properties|null)} + */ + public rightFootDestination: (vec3$Properties|null); + + /** + * Creates a new NewFootTargetInfo instance using the specified properties. + * @param {message.motion.NewFootTargetInfo$Properties=} [properties] Properties to set + * @returns {message.motion.NewFootTargetInfo} NewFootTargetInfo instance + */ + public static create(properties?: message.motion.NewFootTargetInfo$Properties): message.motion.NewFootTargetInfo; + + /** + * Encodes the specified NewFootTargetInfo message. Does not implicitly {@link message.motion.NewFootTargetInfo.verify|verify} messages. + * @param {message.motion.NewFootTargetInfo$Properties} message NewFootTargetInfo message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.motion.NewFootTargetInfo$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified NewFootTargetInfo message, length delimited. Does not implicitly {@link message.motion.NewFootTargetInfo.verify|verify} messages. + * @param {message.motion.NewFootTargetInfo$Properties} message NewFootTargetInfo message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.motion.NewFootTargetInfo$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a NewFootTargetInfo message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.motion.NewFootTargetInfo} NewFootTargetInfo + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.motion.NewFootTargetInfo; + + /** + * Decodes a NewFootTargetInfo message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.motion.NewFootTargetInfo} NewFootTargetInfo + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.motion.NewFootTargetInfo; + + /** + * Verifies a NewFootTargetInfo message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a NewFootTargetInfo message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.motion.NewFootTargetInfo} NewFootTargetInfo + */ + public static fromObject(object: { [k: string]: any }): message.motion.NewFootTargetInfo; + + /** + * Creates a NewFootTargetInfo message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.motion.NewFootTargetInfo.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.motion.NewFootTargetInfo} NewFootTargetInfo + */ + public static from(object: { [k: string]: any }): message.motion.NewFootTargetInfo; + + /** + * Creates a plain object from a NewFootTargetInfo message. Also converts values to other types if specified. + * @param {message.motion.NewFootTargetInfo} message NewFootTargetInfo + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.motion.NewFootTargetInfo, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this NewFootTargetInfo message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this NewFootTargetInfo to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type EnableFootPlacement$Properties = {}; + + /** + * Constructs a new EnableFootPlacement. + * @exports message.motion.EnableFootPlacement + * @constructor + * @param {message.motion.EnableFootPlacement$Properties=} [properties] Properties to set + */ + class EnableFootPlacement { + + /** + * Constructs a new EnableFootPlacement. + * @exports message.motion.EnableFootPlacement + * @constructor + * @param {message.motion.EnableFootPlacement$Properties=} [properties] Properties to set + */ + constructor(properties?: message.motion.EnableFootPlacement$Properties); + + /** + * Creates a new EnableFootPlacement instance using the specified properties. + * @param {message.motion.EnableFootPlacement$Properties=} [properties] Properties to set + * @returns {message.motion.EnableFootPlacement} EnableFootPlacement instance + */ + public static create(properties?: message.motion.EnableFootPlacement$Properties): message.motion.EnableFootPlacement; + + /** + * Encodes the specified EnableFootPlacement message. Does not implicitly {@link message.motion.EnableFootPlacement.verify|verify} messages. + * @param {message.motion.EnableFootPlacement$Properties} message EnableFootPlacement message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.motion.EnableFootPlacement$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified EnableFootPlacement message, length delimited. Does not implicitly {@link message.motion.EnableFootPlacement.verify|verify} messages. + * @param {message.motion.EnableFootPlacement$Properties} message EnableFootPlacement message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.motion.EnableFootPlacement$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an EnableFootPlacement message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.motion.EnableFootPlacement} EnableFootPlacement + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.motion.EnableFootPlacement; + + /** + * Decodes an EnableFootPlacement message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.motion.EnableFootPlacement} EnableFootPlacement + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.motion.EnableFootPlacement; + + /** + * Verifies an EnableFootPlacement message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates an EnableFootPlacement message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.motion.EnableFootPlacement} EnableFootPlacement + */ + public static fromObject(object: { [k: string]: any }): message.motion.EnableFootPlacement; + + /** + * Creates an EnableFootPlacement message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.motion.EnableFootPlacement.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.motion.EnableFootPlacement} EnableFootPlacement + */ + public static from(object: { [k: string]: any }): message.motion.EnableFootPlacement; + + /** + * Creates a plain object from an EnableFootPlacement message. Also converts values to other types if specified. + * @param {message.motion.EnableFootPlacement} message EnableFootPlacement + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.motion.EnableFootPlacement, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this EnableFootPlacement message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this EnableFootPlacement to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type DisableFootPlacement$Properties = {}; + + /** + * Constructs a new DisableFootPlacement. + * @exports message.motion.DisableFootPlacement + * @constructor + * @param {message.motion.DisableFootPlacement$Properties=} [properties] Properties to set + */ + class DisableFootPlacement { + + /** + * Constructs a new DisableFootPlacement. + * @exports message.motion.DisableFootPlacement + * @constructor + * @param {message.motion.DisableFootPlacement$Properties=} [properties] Properties to set + */ + constructor(properties?: message.motion.DisableFootPlacement$Properties); + + /** + * Creates a new DisableFootPlacement instance using the specified properties. + * @param {message.motion.DisableFootPlacement$Properties=} [properties] Properties to set + * @returns {message.motion.DisableFootPlacement} DisableFootPlacement instance + */ + public static create(properties?: message.motion.DisableFootPlacement$Properties): message.motion.DisableFootPlacement; + + /** + * Encodes the specified DisableFootPlacement message. Does not implicitly {@link message.motion.DisableFootPlacement.verify|verify} messages. + * @param {message.motion.DisableFootPlacement$Properties} message DisableFootPlacement message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.motion.DisableFootPlacement$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified DisableFootPlacement message, length delimited. Does not implicitly {@link message.motion.DisableFootPlacement.verify|verify} messages. + * @param {message.motion.DisableFootPlacement$Properties} message DisableFootPlacement message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.motion.DisableFootPlacement$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a DisableFootPlacement message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.motion.DisableFootPlacement} DisableFootPlacement + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.motion.DisableFootPlacement; + + /** + * Decodes a DisableFootPlacement message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.motion.DisableFootPlacement} DisableFootPlacement + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.motion.DisableFootPlacement; + + /** + * Verifies a DisableFootPlacement message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a DisableFootPlacement message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.motion.DisableFootPlacement} DisableFootPlacement + */ + public static fromObject(object: { [k: string]: any }): message.motion.DisableFootPlacement; + + /** + * Creates a DisableFootPlacement message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.motion.DisableFootPlacement.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.motion.DisableFootPlacement} DisableFootPlacement + */ + public static from(object: { [k: string]: any }): message.motion.DisableFootPlacement; + + /** + * Creates a plain object from a DisableFootPlacement message. Also converts values to other types if specified. + * @param {message.motion.DisableFootPlacement} message DisableFootPlacement + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.motion.DisableFootPlacement, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this DisableFootPlacement message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this DisableFootPlacement to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type ExecuteGetup$Properties = {}; + + /** + * Constructs a new ExecuteGetup. + * @exports message.motion.ExecuteGetup + * @constructor + * @param {message.motion.ExecuteGetup$Properties=} [properties] Properties to set + */ + class ExecuteGetup { + + /** + * Constructs a new ExecuteGetup. + * @exports message.motion.ExecuteGetup + * @constructor + * @param {message.motion.ExecuteGetup$Properties=} [properties] Properties to set + */ + constructor(properties?: message.motion.ExecuteGetup$Properties); + + /** + * Creates a new ExecuteGetup instance using the specified properties. + * @param {message.motion.ExecuteGetup$Properties=} [properties] Properties to set + * @returns {message.motion.ExecuteGetup} ExecuteGetup instance + */ + public static create(properties?: message.motion.ExecuteGetup$Properties): message.motion.ExecuteGetup; + + /** + * Encodes the specified ExecuteGetup message. Does not implicitly {@link message.motion.ExecuteGetup.verify|verify} messages. + * @param {message.motion.ExecuteGetup$Properties} message ExecuteGetup message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.motion.ExecuteGetup$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified ExecuteGetup message, length delimited. Does not implicitly {@link message.motion.ExecuteGetup.verify|verify} messages. + * @param {message.motion.ExecuteGetup$Properties} message ExecuteGetup message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.motion.ExecuteGetup$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an ExecuteGetup message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.motion.ExecuteGetup} ExecuteGetup + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.motion.ExecuteGetup; + + /** + * Decodes an ExecuteGetup message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.motion.ExecuteGetup} ExecuteGetup + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.motion.ExecuteGetup; + + /** + * Verifies an ExecuteGetup message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates an ExecuteGetup message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.motion.ExecuteGetup} ExecuteGetup + */ + public static fromObject(object: { [k: string]: any }): message.motion.ExecuteGetup; + + /** + * Creates an ExecuteGetup message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.motion.ExecuteGetup.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.motion.ExecuteGetup} ExecuteGetup + */ + public static from(object: { [k: string]: any }): message.motion.ExecuteGetup; + + /** + * Creates a plain object from an ExecuteGetup message. Also converts values to other types if specified. + * @param {message.motion.ExecuteGetup} message ExecuteGetup + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.motion.ExecuteGetup, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this ExecuteGetup message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this ExecuteGetup to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type KillGetup$Properties = {}; + + /** + * Constructs a new KillGetup. + * @exports message.motion.KillGetup + * @constructor + * @param {message.motion.KillGetup$Properties=} [properties] Properties to set + */ + class KillGetup { + + /** + * Constructs a new KillGetup. + * @exports message.motion.KillGetup + * @constructor + * @param {message.motion.KillGetup$Properties=} [properties] Properties to set + */ + constructor(properties?: message.motion.KillGetup$Properties); + + /** + * Creates a new KillGetup instance using the specified properties. + * @param {message.motion.KillGetup$Properties=} [properties] Properties to set + * @returns {message.motion.KillGetup} KillGetup instance + */ + public static create(properties?: message.motion.KillGetup$Properties): message.motion.KillGetup; + + /** + * Encodes the specified KillGetup message. Does not implicitly {@link message.motion.KillGetup.verify|verify} messages. + * @param {message.motion.KillGetup$Properties} message KillGetup message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.motion.KillGetup$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified KillGetup message, length delimited. Does not implicitly {@link message.motion.KillGetup.verify|verify} messages. + * @param {message.motion.KillGetup$Properties} message KillGetup message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.motion.KillGetup$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a KillGetup message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.motion.KillGetup} KillGetup + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.motion.KillGetup; + + /** + * Decodes a KillGetup message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.motion.KillGetup} KillGetup + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.motion.KillGetup; + + /** + * Verifies a KillGetup message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a KillGetup message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.motion.KillGetup} KillGetup + */ + public static fromObject(object: { [k: string]: any }): message.motion.KillGetup; + + /** + * Creates a KillGetup message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.motion.KillGetup.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.motion.KillGetup} KillGetup + */ + public static from(object: { [k: string]: any }): message.motion.KillGetup; + + /** + * Creates a plain object from a KillGetup message. Also converts values to other types if specified. + * @param {message.motion.KillGetup} message KillGetup + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.motion.KillGetup, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this KillGetup message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this KillGetup to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type HeadCommand$Properties = { + yaw?: number; + pitch?: number; + robotSpace?: boolean; + }; + + /** + * Constructs a new HeadCommand. + * @classdesc Tell the head where to look in world space. + * This command is interpreted such that the robot will use IMU data to fixate at these angles in the world even when rotating. + * + * @author Jake Fountain + * @exports message.motion.HeadCommand + * @constructor + * @param {message.motion.HeadCommand$Properties=} [properties] Properties to set + */ + class HeadCommand { + + /** + * Constructs a new HeadCommand. + * @classdesc Tell the head where to look in world space. + * This command is interpreted such that the robot will use IMU data to fixate at these angles in the world even when rotating. + * + * @author Jake Fountain + * @exports message.motion.HeadCommand + * @constructor + * @param {message.motion.HeadCommand$Properties=} [properties] Properties to set + */ + constructor(properties?: message.motion.HeadCommand$Properties); + + /** + * HeadCommand yaw. + * @type {number} + */ + public yaw: number; + + /** + * HeadCommand pitch. + * @type {number} + */ + public pitch: number; + + /** + * HeadCommand robotSpace. + * @type {boolean} + */ + public robotSpace: boolean; + + /** + * Creates a new HeadCommand instance using the specified properties. + * @param {message.motion.HeadCommand$Properties=} [properties] Properties to set + * @returns {message.motion.HeadCommand} HeadCommand instance + */ + public static create(properties?: message.motion.HeadCommand$Properties): message.motion.HeadCommand; + + /** + * Encodes the specified HeadCommand message. Does not implicitly {@link message.motion.HeadCommand.verify|verify} messages. + * @param {message.motion.HeadCommand$Properties} message HeadCommand message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.motion.HeadCommand$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified HeadCommand message, length delimited. Does not implicitly {@link message.motion.HeadCommand.verify|verify} messages. + * @param {message.motion.HeadCommand$Properties} message HeadCommand message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.motion.HeadCommand$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a HeadCommand message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.motion.HeadCommand} HeadCommand + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.motion.HeadCommand; + + /** + * Decodes a HeadCommand message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.motion.HeadCommand} HeadCommand + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.motion.HeadCommand; + + /** + * Verifies a HeadCommand message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a HeadCommand message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.motion.HeadCommand} HeadCommand + */ + public static fromObject(object: { [k: string]: any }): message.motion.HeadCommand; + + /** + * Creates a HeadCommand message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.motion.HeadCommand.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.motion.HeadCommand} HeadCommand + */ + public static from(object: { [k: string]: any }): message.motion.HeadCommand; + + /** + * Creates a plain object from a HeadCommand message. Also converts values to other types if specified. + * @param {message.motion.HeadCommand} message HeadCommand + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.motion.HeadCommand, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this HeadCommand message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this HeadCommand to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type HeadMotionUpdate$Properties = {}; + + /** + * Constructs a new HeadMotionUpdate. + * @exports message.motion.HeadMotionUpdate + * @constructor + * @param {message.motion.HeadMotionUpdate$Properties=} [properties] Properties to set + */ + class HeadMotionUpdate { + + /** + * Constructs a new HeadMotionUpdate. + * @exports message.motion.HeadMotionUpdate + * @constructor + * @param {message.motion.HeadMotionUpdate$Properties=} [properties] Properties to set + */ + constructor(properties?: message.motion.HeadMotionUpdate$Properties); + + /** + * Creates a new HeadMotionUpdate instance using the specified properties. + * @param {message.motion.HeadMotionUpdate$Properties=} [properties] Properties to set + * @returns {message.motion.HeadMotionUpdate} HeadMotionUpdate instance + */ + public static create(properties?: message.motion.HeadMotionUpdate$Properties): message.motion.HeadMotionUpdate; + + /** + * Encodes the specified HeadMotionUpdate message. Does not implicitly {@link message.motion.HeadMotionUpdate.verify|verify} messages. + * @param {message.motion.HeadMotionUpdate$Properties} message HeadMotionUpdate message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.motion.HeadMotionUpdate$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified HeadMotionUpdate message, length delimited. Does not implicitly {@link message.motion.HeadMotionUpdate.verify|verify} messages. + * @param {message.motion.HeadMotionUpdate$Properties} message HeadMotionUpdate message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.motion.HeadMotionUpdate$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a HeadMotionUpdate message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.motion.HeadMotionUpdate} HeadMotionUpdate + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.motion.HeadMotionUpdate; + + /** + * Decodes a HeadMotionUpdate message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.motion.HeadMotionUpdate} HeadMotionUpdate + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.motion.HeadMotionUpdate; + + /** + * Verifies a HeadMotionUpdate message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a HeadMotionUpdate message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.motion.HeadMotionUpdate} HeadMotionUpdate + */ + public static fromObject(object: { [k: string]: any }): message.motion.HeadMotionUpdate; + + /** + * Creates a HeadMotionUpdate message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.motion.HeadMotionUpdate.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.motion.HeadMotionUpdate} HeadMotionUpdate + */ + public static from(object: { [k: string]: any }): message.motion.HeadMotionUpdate; + + /** + * Creates a plain object from a HeadMotionUpdate message. Also converts values to other types if specified. + * @param {message.motion.HeadMotionUpdate} message HeadMotionUpdate + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.motion.HeadMotionUpdate, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this HeadMotionUpdate message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this HeadMotionUpdate to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** + * TODO document + * + * @author Trent Houliston + * @author Brendan Annable + * @name KickCommandType + * @memberof message.motion + * @enum {number} + * @property {number} NORMAL=0 NORMAL value + * @property {number} POWER=1 POWER value + */ + enum KickCommandType { + NORMAL = 0, + POWER = 1 + } + + type KickCommand$Properties = { + target?: vec3$Properties; + direction?: vec3$Properties; + kickCommandType?: message.motion.KickCommandType; + }; + + /** + * Constructs a new KickCommand. + * @exports message.motion.KickCommand + * @constructor + * @param {message.motion.KickCommand$Properties=} [properties] Properties to set + */ + class KickCommand { + + /** + * Constructs a new KickCommand. + * @exports message.motion.KickCommand + * @constructor + * @param {message.motion.KickCommand$Properties=} [properties] Properties to set + */ + constructor(properties?: message.motion.KickCommand$Properties); + + /** + * KickCommand target. + * @type {(vec3$Properties|null)} + */ + public target: (vec3$Properties|null); + + /** + * KickCommand direction. + * @type {(vec3$Properties|null)} + */ + public direction: (vec3$Properties|null); + + /** + * KickCommand kickCommandType. + * @type {message.motion.KickCommandType} + */ + public kickCommandType: message.motion.KickCommandType; + + /** + * Creates a new KickCommand instance using the specified properties. + * @param {message.motion.KickCommand$Properties=} [properties] Properties to set + * @returns {message.motion.KickCommand} KickCommand instance + */ + public static create(properties?: message.motion.KickCommand$Properties): message.motion.KickCommand; + + /** + * Encodes the specified KickCommand message. Does not implicitly {@link message.motion.KickCommand.verify|verify} messages. + * @param {message.motion.KickCommand$Properties} message KickCommand message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.motion.KickCommand$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified KickCommand message, length delimited. Does not implicitly {@link message.motion.KickCommand.verify|verify} messages. + * @param {message.motion.KickCommand$Properties} message KickCommand message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.motion.KickCommand$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a KickCommand message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.motion.KickCommand} KickCommand + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.motion.KickCommand; + + /** + * Decodes a KickCommand message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.motion.KickCommand} KickCommand + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.motion.KickCommand; + + /** + * Verifies a KickCommand message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a KickCommand message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.motion.KickCommand} KickCommand + */ + public static fromObject(object: { [k: string]: any }): message.motion.KickCommand; + + /** + * Creates a KickCommand message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.motion.KickCommand.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.motion.KickCommand} KickCommand + */ + public static from(object: { [k: string]: any }): message.motion.KickCommand; + + /** + * Creates a plain object from a KickCommand message. Also converts values to other types if specified. + * @param {message.motion.KickCommand} message KickCommand + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.motion.KickCommand, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this KickCommand message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this KickCommand to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type KickScriptCommand$Properties = { + direction?: vec3$Properties; + leg?: number; + }; + + /** + * Constructs a new KickScriptCommand. + * @classdesc TODO document + * + * @author Trent Houliston + * @author Brendan Annable + * @exports message.motion.KickScriptCommand + * @constructor + * @param {message.motion.KickScriptCommand$Properties=} [properties] Properties to set + */ + class KickScriptCommand { + + /** + * Constructs a new KickScriptCommand. + * @classdesc TODO document + * + * @author Trent Houliston + * @author Brendan Annable + * @exports message.motion.KickScriptCommand + * @constructor + * @param {message.motion.KickScriptCommand$Properties=} [properties] Properties to set + */ + constructor(properties?: message.motion.KickScriptCommand$Properties); + + /** + * KickScriptCommand direction. + * @type {(vec3$Properties|null)} + */ + public direction: (vec3$Properties|null); + + /** + * KickScriptCommand leg. + * @type {number} + */ + public leg: number; + + /** + * Creates a new KickScriptCommand instance using the specified properties. + * @param {message.motion.KickScriptCommand$Properties=} [properties] Properties to set + * @returns {message.motion.KickScriptCommand} KickScriptCommand instance + */ + public static create(properties?: message.motion.KickScriptCommand$Properties): message.motion.KickScriptCommand; + + /** + * Encodes the specified KickScriptCommand message. Does not implicitly {@link message.motion.KickScriptCommand.verify|verify} messages. + * @param {message.motion.KickScriptCommand$Properties} message KickScriptCommand message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.motion.KickScriptCommand$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified KickScriptCommand message, length delimited. Does not implicitly {@link message.motion.KickScriptCommand.verify|verify} messages. + * @param {message.motion.KickScriptCommand$Properties} message KickScriptCommand message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.motion.KickScriptCommand$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a KickScriptCommand message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.motion.KickScriptCommand} KickScriptCommand + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.motion.KickScriptCommand; + + /** + * Decodes a KickScriptCommand message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.motion.KickScriptCommand} KickScriptCommand + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.motion.KickScriptCommand; + + /** + * Verifies a KickScriptCommand message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a KickScriptCommand message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.motion.KickScriptCommand} KickScriptCommand + */ + public static fromObject(object: { [k: string]: any }): message.motion.KickScriptCommand; + + /** + * Creates a KickScriptCommand message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.motion.KickScriptCommand.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.motion.KickScriptCommand} KickScriptCommand + */ + public static from(object: { [k: string]: any }): message.motion.KickScriptCommand; + + /** + * Creates a plain object from a KickScriptCommand message. Also converts values to other types if specified. + * @param {message.motion.KickScriptCommand} message KickScriptCommand + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.motion.KickScriptCommand, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this KickScriptCommand message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this KickScriptCommand to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type KickPlannerConfig$Properties = { + maxBallDistance?: number; + kickCorridorWidth?: number; + secondsNotSeenLimit?: number; + kickForwardAngleLimit?: number; + }; + + /** + * Constructs a new KickPlannerConfig. + * @exports message.motion.KickPlannerConfig + * @constructor + * @param {message.motion.KickPlannerConfig$Properties=} [properties] Properties to set + */ + class KickPlannerConfig { + + /** + * Constructs a new KickPlannerConfig. + * @exports message.motion.KickPlannerConfig + * @constructor + * @param {message.motion.KickPlannerConfig$Properties=} [properties] Properties to set + */ + constructor(properties?: message.motion.KickPlannerConfig$Properties); + + /** + * KickPlannerConfig maxBallDistance. + * @type {number} + */ + public maxBallDistance: number; + + /** + * KickPlannerConfig kickCorridorWidth. + * @type {number} + */ + public kickCorridorWidth: number; + + /** + * KickPlannerConfig secondsNotSeenLimit. + * @type {number} + */ + public secondsNotSeenLimit: number; + + /** + * KickPlannerConfig kickForwardAngleLimit. + * @type {number} + */ + public kickForwardAngleLimit: number; + + /** + * Creates a new KickPlannerConfig instance using the specified properties. + * @param {message.motion.KickPlannerConfig$Properties=} [properties] Properties to set + * @returns {message.motion.KickPlannerConfig} KickPlannerConfig instance + */ + public static create(properties?: message.motion.KickPlannerConfig$Properties): message.motion.KickPlannerConfig; + + /** + * Encodes the specified KickPlannerConfig message. Does not implicitly {@link message.motion.KickPlannerConfig.verify|verify} messages. + * @param {message.motion.KickPlannerConfig$Properties} message KickPlannerConfig message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.motion.KickPlannerConfig$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified KickPlannerConfig message, length delimited. Does not implicitly {@link message.motion.KickPlannerConfig.verify|verify} messages. + * @param {message.motion.KickPlannerConfig$Properties} message KickPlannerConfig message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.motion.KickPlannerConfig$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a KickPlannerConfig message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.motion.KickPlannerConfig} KickPlannerConfig + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.motion.KickPlannerConfig; + + /** + * Decodes a KickPlannerConfig message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.motion.KickPlannerConfig} KickPlannerConfig + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.motion.KickPlannerConfig; + + /** + * Verifies a KickPlannerConfig message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a KickPlannerConfig message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.motion.KickPlannerConfig} KickPlannerConfig + */ + public static fromObject(object: { [k: string]: any }): message.motion.KickPlannerConfig; + + /** + * Creates a KickPlannerConfig message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.motion.KickPlannerConfig.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.motion.KickPlannerConfig} KickPlannerConfig + */ + public static from(object: { [k: string]: any }): message.motion.KickPlannerConfig; + + /** + * Creates a plain object from a KickPlannerConfig message. Also converts values to other types if specified. + * @param {message.motion.KickPlannerConfig} message KickPlannerConfig + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.motion.KickPlannerConfig, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this KickPlannerConfig message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this KickPlannerConfig to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type KickFinished$Properties = {}; + + /** + * Constructs a new KickFinished. + * @exports message.motion.KickFinished + * @constructor + * @param {message.motion.KickFinished$Properties=} [properties] Properties to set + */ + class KickFinished { + + /** + * Constructs a new KickFinished. + * @exports message.motion.KickFinished + * @constructor + * @param {message.motion.KickFinished$Properties=} [properties] Properties to set + */ + constructor(properties?: message.motion.KickFinished$Properties); + + /** + * Creates a new KickFinished instance using the specified properties. + * @param {message.motion.KickFinished$Properties=} [properties] Properties to set + * @returns {message.motion.KickFinished} KickFinished instance + */ + public static create(properties?: message.motion.KickFinished$Properties): message.motion.KickFinished; + + /** + * Encodes the specified KickFinished message. Does not implicitly {@link message.motion.KickFinished.verify|verify} messages. + * @param {message.motion.KickFinished$Properties} message KickFinished message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.motion.KickFinished$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified KickFinished message, length delimited. Does not implicitly {@link message.motion.KickFinished.verify|verify} messages. + * @param {message.motion.KickFinished$Properties} message KickFinished message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.motion.KickFinished$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a KickFinished message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.motion.KickFinished} KickFinished + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.motion.KickFinished; + + /** + * Decodes a KickFinished message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.motion.KickFinished} KickFinished + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.motion.KickFinished; + + /** + * Verifies a KickFinished message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a KickFinished message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.motion.KickFinished} KickFinished + */ + public static fromObject(object: { [k: string]: any }): message.motion.KickFinished; + + /** + * Creates a KickFinished message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.motion.KickFinished.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.motion.KickFinished} KickFinished + */ + public static from(object: { [k: string]: any }): message.motion.KickFinished; + + /** + * Creates a plain object from a KickFinished message. Also converts values to other types if specified. + * @param {message.motion.KickFinished} message KickFinished + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.motion.KickFinished, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this KickFinished message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this KickFinished to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type IKKickParams$Properties = { + standHeight?: number; + }; + + /** + * Constructs a new IKKickParams. + * @exports message.motion.IKKickParams + * @constructor + * @param {message.motion.IKKickParams$Properties=} [properties] Properties to set + */ + class IKKickParams { + + /** + * Constructs a new IKKickParams. + * @exports message.motion.IKKickParams + * @constructor + * @param {message.motion.IKKickParams$Properties=} [properties] Properties to set + */ + constructor(properties?: message.motion.IKKickParams$Properties); + + /** + * IKKickParams standHeight. + * @type {number} + */ + public standHeight: number; + + /** + * Creates a new IKKickParams instance using the specified properties. + * @param {message.motion.IKKickParams$Properties=} [properties] Properties to set + * @returns {message.motion.IKKickParams} IKKickParams instance + */ + public static create(properties?: message.motion.IKKickParams$Properties): message.motion.IKKickParams; + + /** + * Encodes the specified IKKickParams message. Does not implicitly {@link message.motion.IKKickParams.verify|verify} messages. + * @param {message.motion.IKKickParams$Properties} message IKKickParams message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.motion.IKKickParams$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified IKKickParams message, length delimited. Does not implicitly {@link message.motion.IKKickParams.verify|verify} messages. + * @param {message.motion.IKKickParams$Properties} message IKKickParams message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.motion.IKKickParams$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a IKKickParams message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.motion.IKKickParams} IKKickParams + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.motion.IKKickParams; + + /** + * Decodes a IKKickParams message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.motion.IKKickParams} IKKickParams + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.motion.IKKickParams; + + /** + * Verifies a IKKickParams message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a IKKickParams message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.motion.IKKickParams} IKKickParams + */ + public static fromObject(object: { [k: string]: any }): message.motion.IKKickParams; + + /** + * Creates a IKKickParams message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.motion.IKKickParams.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.motion.IKKickParams} IKKickParams + */ + public static from(object: { [k: string]: any }): message.motion.IKKickParams; + + /** + * Creates a plain object from a IKKickParams message. Also converts values to other types if specified. + * @param {message.motion.IKKickParams} message IKKickParams + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.motion.IKKickParams, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this IKKickParams message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this IKKickParams to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** + * BodySide enum. + * @name BodySide + * @memberof message.motion + * @enum {number} + * @property {number} LEFT=0 LEFT value + * @property {number} RIGHT=1 RIGHT value + */ + enum BodySide { + LEFT = 0, + RIGHT = 1 + } + + type KinematicsModel$Properties = { + leg?: message.motion.KinematicsModel.Leg$Properties; + head?: message.motion.KinematicsModel.Head$Properties; + arm?: message.motion.KinematicsModel.Arm$Properties; + massModel?: message.motion.KinematicsModel.MassModel$Properties; + TEAMDARWINCHEST_TO_ORIGIN?: number; + }; + + /** + * Constructs a new KinematicsModel. + * @exports message.motion.KinematicsModel + * @constructor + * @param {message.motion.KinematicsModel$Properties=} [properties] Properties to set + */ + class KinematicsModel { + + /** + * Constructs a new KinematicsModel. + * @exports message.motion.KinematicsModel + * @constructor + * @param {message.motion.KinematicsModel$Properties=} [properties] Properties to set + */ + constructor(properties?: message.motion.KinematicsModel$Properties); + + /** + * KinematicsModel leg. + * @type {(message.motion.KinematicsModel.Leg$Properties|null)} + */ + public leg: (message.motion.KinematicsModel.Leg$Properties|null); + + /** + * KinematicsModel head. + * @type {(message.motion.KinematicsModel.Head$Properties|null)} + */ + public head: (message.motion.KinematicsModel.Head$Properties|null); + + /** + * KinematicsModel arm. + * @type {(message.motion.KinematicsModel.Arm$Properties|null)} + */ + public arm: (message.motion.KinematicsModel.Arm$Properties|null); + + /** + * KinematicsModel massModel. + * @type {(message.motion.KinematicsModel.MassModel$Properties|null)} + */ + public massModel: (message.motion.KinematicsModel.MassModel$Properties|null); + + /** + * KinematicsModel TEAMDARWINCHEST_TO_ORIGIN. + * @type {number} + */ + public TEAMDARWINCHEST_TO_ORIGIN: number; + + /** + * Creates a new KinematicsModel instance using the specified properties. + * @param {message.motion.KinematicsModel$Properties=} [properties] Properties to set + * @returns {message.motion.KinematicsModel} KinematicsModel instance + */ + public static create(properties?: message.motion.KinematicsModel$Properties): message.motion.KinematicsModel; + + /** + * Encodes the specified KinematicsModel message. Does not implicitly {@link message.motion.KinematicsModel.verify|verify} messages. + * @param {message.motion.KinematicsModel$Properties} message KinematicsModel message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.motion.KinematicsModel$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified KinematicsModel message, length delimited. Does not implicitly {@link message.motion.KinematicsModel.verify|verify} messages. + * @param {message.motion.KinematicsModel$Properties} message KinematicsModel message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.motion.KinematicsModel$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a KinematicsModel message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.motion.KinematicsModel} KinematicsModel + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.motion.KinematicsModel; + + /** + * Decodes a KinematicsModel message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.motion.KinematicsModel} KinematicsModel + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.motion.KinematicsModel; + + /** + * Verifies a KinematicsModel message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a KinematicsModel message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.motion.KinematicsModel} KinematicsModel + */ + public static fromObject(object: { [k: string]: any }): message.motion.KinematicsModel; + + /** + * Creates a KinematicsModel message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.motion.KinematicsModel.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.motion.KinematicsModel} KinematicsModel + */ + public static from(object: { [k: string]: any }): message.motion.KinematicsModel; + + /** + * Creates a plain object from a KinematicsModel message. Also converts values to other types if specified. + * @param {message.motion.KinematicsModel} message KinematicsModel + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.motion.KinematicsModel, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this KinematicsModel message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this KinematicsModel to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + namespace KinematicsModel { + + type Leg$Properties = { + HIP_OFFSET_X?: number; + HIP_OFFSET_Y?: number; + HIP_OFFSET_Z?: number; + UPPER_LEG_LENGTH?: number; + LOWER_LEG_LENGTH?: number; + FOOT_HEIGHT?: number; + FOOT_LENGTH?: number; + TOE_LENGTH?: number; + HEEL_LENGTH?: number; + FOOT_WIDTH?: number; + FOOT_CENTRE_TO_ANKLE_CENTRE?: number; + LENGTH_BETWEEN_LEGS?: number; + LEFT_TO_RIGHT_HIP_YAW?: number; + LEFT_TO_RIGHT_HIP_ROLL?: number; + LEFT_TO_RIGHT_HIP_PITCH?: number; + LEFT_TO_RIGHT_KNEE?: number; + LEFT_TO_RIGHT_ANKLE_PITCH?: number; + LEFT_TO_RIGHT_ANKLE_ROLL?: number; + }; + + /** + * Constructs a new Leg. + * @exports message.motion.KinematicsModel.Leg + * @constructor + * @param {message.motion.KinematicsModel.Leg$Properties=} [properties] Properties to set + */ + class Leg { + + /** + * Constructs a new Leg. + * @exports message.motion.KinematicsModel.Leg + * @constructor + * @param {message.motion.KinematicsModel.Leg$Properties=} [properties] Properties to set + */ + constructor(properties?: message.motion.KinematicsModel.Leg$Properties); + + /** + * Leg HIP_OFFSET_X. + * @type {number} + */ + public HIP_OFFSET_X: number; + + /** + * Leg HIP_OFFSET_Y. + * @type {number} + */ + public HIP_OFFSET_Y: number; + + /** + * Leg HIP_OFFSET_Z. + * @type {number} + */ + public HIP_OFFSET_Z: number; + + /** + * Leg UPPER_LEG_LENGTH. + * @type {number} + */ + public UPPER_LEG_LENGTH: number; + + /** + * Leg LOWER_LEG_LENGTH. + * @type {number} + */ + public LOWER_LEG_LENGTH: number; + + /** + * Leg FOOT_HEIGHT. + * @type {number} + */ + public FOOT_HEIGHT: number; + + /** + * Leg FOOT_LENGTH. + * @type {number} + */ + public FOOT_LENGTH: number; + + /** + * Leg TOE_LENGTH. + * @type {number} + */ + public TOE_LENGTH: number; + + /** + * Leg HEEL_LENGTH. + * @type {number} + */ + public HEEL_LENGTH: number; + + /** + * Leg FOOT_WIDTH. + * @type {number} + */ + public FOOT_WIDTH: number; + + /** + * Leg FOOT_CENTRE_TO_ANKLE_CENTRE. + * @type {number} + */ + public FOOT_CENTRE_TO_ANKLE_CENTRE: number; + + /** + * Leg LENGTH_BETWEEN_LEGS. + * @type {number} + */ + public LENGTH_BETWEEN_LEGS: number; + + /** + * Leg LEFT_TO_RIGHT_HIP_YAW. + * @type {number} + */ + public LEFT_TO_RIGHT_HIP_YAW: number; + + /** + * Leg LEFT_TO_RIGHT_HIP_ROLL. + * @type {number} + */ + public LEFT_TO_RIGHT_HIP_ROLL: number; + + /** + * Leg LEFT_TO_RIGHT_HIP_PITCH. + * @type {number} + */ + public LEFT_TO_RIGHT_HIP_PITCH: number; + + /** + * Leg LEFT_TO_RIGHT_KNEE. + * @type {number} + */ + public LEFT_TO_RIGHT_KNEE: number; + + /** + * Leg LEFT_TO_RIGHT_ANKLE_PITCH. + * @type {number} + */ + public LEFT_TO_RIGHT_ANKLE_PITCH: number; + + /** + * Leg LEFT_TO_RIGHT_ANKLE_ROLL. + * @type {number} + */ + public LEFT_TO_RIGHT_ANKLE_ROLL: number; + + /** + * Creates a new Leg instance using the specified properties. + * @param {message.motion.KinematicsModel.Leg$Properties=} [properties] Properties to set + * @returns {message.motion.KinematicsModel.Leg} Leg instance + */ + public static create(properties?: message.motion.KinematicsModel.Leg$Properties): message.motion.KinematicsModel.Leg; + + /** + * Encodes the specified Leg message. Does not implicitly {@link message.motion.KinematicsModel.Leg.verify|verify} messages. + * @param {message.motion.KinematicsModel.Leg$Properties} message Leg message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.motion.KinematicsModel.Leg$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Leg message, length delimited. Does not implicitly {@link message.motion.KinematicsModel.Leg.verify|verify} messages. + * @param {message.motion.KinematicsModel.Leg$Properties} message Leg message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.motion.KinematicsModel.Leg$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a Leg message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.motion.KinematicsModel.Leg} Leg + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.motion.KinematicsModel.Leg; + + /** + * Decodes a Leg message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.motion.KinematicsModel.Leg} Leg + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.motion.KinematicsModel.Leg; + + /** + * Verifies a Leg message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a Leg message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.motion.KinematicsModel.Leg} Leg + */ + public static fromObject(object: { [k: string]: any }): message.motion.KinematicsModel.Leg; + + /** + * Creates a Leg message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.motion.KinematicsModel.Leg.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.motion.KinematicsModel.Leg} Leg + */ + public static from(object: { [k: string]: any }): message.motion.KinematicsModel.Leg; + + /** + * Creates a plain object from a Leg message. Also converts values to other types if specified. + * @param {message.motion.KinematicsModel.Leg} message Leg + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.motion.KinematicsModel.Leg, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this Leg message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this Leg to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type Head$Properties = { + NECK_BASE_POS_FROM_ORIGIN_X?: number; + NECK_BASE_POS_FROM_ORIGIN_Y?: number; + NECK_BASE_POS_FROM_ORIGIN_Z?: number; + NECK_LENGTH?: number; + NECK_TO_CAMERA_X?: number; + NECK_TO_CAMERA_Y?: number; + NECK_TO_CAMERA_Z?: number; + CAMERA_DECLINATION_ANGLE_OFFSET?: number; + MAX_YAW?: number; + MIN_YAW?: number; + MAX_PITCH?: number; + MIN_PITCH?: number; + }; + + /** + * Constructs a new Head. + * @exports message.motion.KinematicsModel.Head + * @constructor + * @param {message.motion.KinematicsModel.Head$Properties=} [properties] Properties to set + */ + class Head { + + /** + * Constructs a new Head. + * @exports message.motion.KinematicsModel.Head + * @constructor + * @param {message.motion.KinematicsModel.Head$Properties=} [properties] Properties to set + */ + constructor(properties?: message.motion.KinematicsModel.Head$Properties); + + /** + * Head NECK_BASE_POS_FROM_ORIGIN_X. + * @type {number} + */ + public NECK_BASE_POS_FROM_ORIGIN_X: number; + + /** + * Head NECK_BASE_POS_FROM_ORIGIN_Y. + * @type {number} + */ + public NECK_BASE_POS_FROM_ORIGIN_Y: number; + + /** + * Head NECK_BASE_POS_FROM_ORIGIN_Z. + * @type {number} + */ + public NECK_BASE_POS_FROM_ORIGIN_Z: number; + + /** + * Head NECK_LENGTH. + * @type {number} + */ + public NECK_LENGTH: number; + + /** + * Head NECK_TO_CAMERA_X. + * @type {number} + */ + public NECK_TO_CAMERA_X: number; + + /** + * Head NECK_TO_CAMERA_Y. + * @type {number} + */ + public NECK_TO_CAMERA_Y: number; + + /** + * Head NECK_TO_CAMERA_Z. + * @type {number} + */ + public NECK_TO_CAMERA_Z: number; + + /** + * Head CAMERA_DECLINATION_ANGLE_OFFSET. + * @type {number} + */ + public CAMERA_DECLINATION_ANGLE_OFFSET: number; + + /** + * Head MAX_YAW. + * @type {number} + */ + public MAX_YAW: number; + + /** + * Head MIN_YAW. + * @type {number} + */ + public MIN_YAW: number; + + /** + * Head MAX_PITCH. + * @type {number} + */ + public MAX_PITCH: number; + + /** + * Head MIN_PITCH. + * @type {number} + */ + public MIN_PITCH: number; + + /** + * Creates a new Head instance using the specified properties. + * @param {message.motion.KinematicsModel.Head$Properties=} [properties] Properties to set + * @returns {message.motion.KinematicsModel.Head} Head instance + */ + public static create(properties?: message.motion.KinematicsModel.Head$Properties): message.motion.KinematicsModel.Head; + + /** + * Encodes the specified Head message. Does not implicitly {@link message.motion.KinematicsModel.Head.verify|verify} messages. + * @param {message.motion.KinematicsModel.Head$Properties} message Head message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.motion.KinematicsModel.Head$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Head message, length delimited. Does not implicitly {@link message.motion.KinematicsModel.Head.verify|verify} messages. + * @param {message.motion.KinematicsModel.Head$Properties} message Head message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.motion.KinematicsModel.Head$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a Head message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.motion.KinematicsModel.Head} Head + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.motion.KinematicsModel.Head; + + /** + * Decodes a Head message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.motion.KinematicsModel.Head} Head + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.motion.KinematicsModel.Head; + + /** + * Verifies a Head message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a Head message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.motion.KinematicsModel.Head} Head + */ + public static fromObject(object: { [k: string]: any }): message.motion.KinematicsModel.Head; + + /** + * Creates a Head message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.motion.KinematicsModel.Head.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.motion.KinematicsModel.Head} Head + */ + public static from(object: { [k: string]: any }): message.motion.KinematicsModel.Head; + + /** + * Creates a plain object from a Head message. Also converts values to other types if specified. + * @param {message.motion.KinematicsModel.Head} message Head + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.motion.KinematicsModel.Head, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this Head message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this Head to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type Arm$Properties = { + DISTANCE_BETWEEN_SHOULDERS?: number; + SHOULDER_Z_OFFSET?: number; + SHOULDER_X_OFFSET?: number; + SHOULDER_LENGTH?: number; + SHOULDER_WIDTH?: number; + SHOULDER_HEIGHT?: number; + UPPER_ARM_LENGTH?: number; + UPPER_ARM_Y_OFFSET?: number; + UPPER_ARM_X_OFFSET?: number; + LOWER_ARM_LENGTH?: number; + LOWER_ARM_Y_OFFSET?: number; + LOWER_ARM_Z_OFFSET?: number; + }; + + /** + * Constructs a new Arm. + * @exports message.motion.KinematicsModel.Arm + * @constructor + * @param {message.motion.KinematicsModel.Arm$Properties=} [properties] Properties to set + */ + class Arm { + + /** + * Constructs a new Arm. + * @exports message.motion.KinematicsModel.Arm + * @constructor + * @param {message.motion.KinematicsModel.Arm$Properties=} [properties] Properties to set + */ + constructor(properties?: message.motion.KinematicsModel.Arm$Properties); + + /** + * Arm DISTANCE_BETWEEN_SHOULDERS. + * @type {number} + */ + public DISTANCE_BETWEEN_SHOULDERS: number; + + /** + * Arm SHOULDER_Z_OFFSET. + * @type {number} + */ + public SHOULDER_Z_OFFSET: number; + + /** + * Arm SHOULDER_X_OFFSET. + * @type {number} + */ + public SHOULDER_X_OFFSET: number; + + /** + * Arm SHOULDER_LENGTH. + * @type {number} + */ + public SHOULDER_LENGTH: number; + + /** + * Arm SHOULDER_WIDTH. + * @type {number} + */ + public SHOULDER_WIDTH: number; + + /** + * Arm SHOULDER_HEIGHT. + * @type {number} + */ + public SHOULDER_HEIGHT: number; + + /** + * Arm UPPER_ARM_LENGTH. + * @type {number} + */ + public UPPER_ARM_LENGTH: number; + + /** + * Arm UPPER_ARM_Y_OFFSET. + * @type {number} + */ + public UPPER_ARM_Y_OFFSET: number; + + /** + * Arm UPPER_ARM_X_OFFSET. + * @type {number} + */ + public UPPER_ARM_X_OFFSET: number; + + /** + * Arm LOWER_ARM_LENGTH. + * @type {number} + */ + public LOWER_ARM_LENGTH: number; + + /** + * Arm LOWER_ARM_Y_OFFSET. + * @type {number} + */ + public LOWER_ARM_Y_OFFSET: number; + + /** + * Arm LOWER_ARM_Z_OFFSET. + * @type {number} + */ + public LOWER_ARM_Z_OFFSET: number; + + /** + * Creates a new Arm instance using the specified properties. + * @param {message.motion.KinematicsModel.Arm$Properties=} [properties] Properties to set + * @returns {message.motion.KinematicsModel.Arm} Arm instance + */ + public static create(properties?: message.motion.KinematicsModel.Arm$Properties): message.motion.KinematicsModel.Arm; + + /** + * Encodes the specified Arm message. Does not implicitly {@link message.motion.KinematicsModel.Arm.verify|verify} messages. + * @param {message.motion.KinematicsModel.Arm$Properties} message Arm message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.motion.KinematicsModel.Arm$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Arm message, length delimited. Does not implicitly {@link message.motion.KinematicsModel.Arm.verify|verify} messages. + * @param {message.motion.KinematicsModel.Arm$Properties} message Arm message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.motion.KinematicsModel.Arm$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an Arm message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.motion.KinematicsModel.Arm} Arm + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.motion.KinematicsModel.Arm; + + /** + * Decodes an Arm message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.motion.KinematicsModel.Arm} Arm + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.motion.KinematicsModel.Arm; + + /** + * Verifies an Arm message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates an Arm message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.motion.KinematicsModel.Arm} Arm + */ + public static fromObject(object: { [k: string]: any }): message.motion.KinematicsModel.Arm; + + /** + * Creates an Arm message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.motion.KinematicsModel.Arm.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.motion.KinematicsModel.Arm} Arm + */ + public static from(object: { [k: string]: any }): message.motion.KinematicsModel.Arm; + + /** + * Creates a plain object from an Arm message. Also converts values to other types if specified. + * @param {message.motion.KinematicsModel.Arm} message Arm + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.motion.KinematicsModel.Arm, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this Arm message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this Arm to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type MassModel$Properties = { + masses?: vec4$Properties[]; + }; + + /** + * Constructs a new MassModel. + * @exports message.motion.KinematicsModel.MassModel + * @constructor + * @param {message.motion.KinematicsModel.MassModel$Properties=} [properties] Properties to set + */ + class MassModel { + + /** + * Constructs a new MassModel. + * @exports message.motion.KinematicsModel.MassModel + * @constructor + * @param {message.motion.KinematicsModel.MassModel$Properties=} [properties] Properties to set + */ + constructor(properties?: message.motion.KinematicsModel.MassModel$Properties); + + /** + * MassModel masses. + * @type {Array.} + */ + public masses: vec4$Properties[]; + + /** + * Creates a new MassModel instance using the specified properties. + * @param {message.motion.KinematicsModel.MassModel$Properties=} [properties] Properties to set + * @returns {message.motion.KinematicsModel.MassModel} MassModel instance + */ + public static create(properties?: message.motion.KinematicsModel.MassModel$Properties): message.motion.KinematicsModel.MassModel; + + /** + * Encodes the specified MassModel message. Does not implicitly {@link message.motion.KinematicsModel.MassModel.verify|verify} messages. + * @param {message.motion.KinematicsModel.MassModel$Properties} message MassModel message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.motion.KinematicsModel.MassModel$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified MassModel message, length delimited. Does not implicitly {@link message.motion.KinematicsModel.MassModel.verify|verify} messages. + * @param {message.motion.KinematicsModel.MassModel$Properties} message MassModel message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.motion.KinematicsModel.MassModel$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a MassModel message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.motion.KinematicsModel.MassModel} MassModel + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.motion.KinematicsModel.MassModel; + + /** + * Decodes a MassModel message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.motion.KinematicsModel.MassModel} MassModel + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.motion.KinematicsModel.MassModel; + + /** + * Verifies a MassModel message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a MassModel message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.motion.KinematicsModel.MassModel} MassModel + */ + public static fromObject(object: { [k: string]: any }): message.motion.KinematicsModel.MassModel; + + /** + * Creates a MassModel message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.motion.KinematicsModel.MassModel.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.motion.KinematicsModel.MassModel} MassModel + */ + public static from(object: { [k: string]: any }): message.motion.KinematicsModel.MassModel; + + /** + * Creates a plain object from a MassModel message. Also converts values to other types if specified. + * @param {message.motion.KinematicsModel.MassModel} message MassModel + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.motion.KinematicsModel.MassModel, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this MassModel message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this MassModel to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + } + + type ServoTarget$Properties = { + time?: google.protobuf.Timestamp$Properties; + id?: number; + position?: number; + gain?: number; + torque?: number; + }; + + /** + * Constructs a new ServoTarget. + * @classdesc TODO document + * + * @author Trent Houliston + * @exports message.motion.ServoTarget + * @constructor + * @param {message.motion.ServoTarget$Properties=} [properties] Properties to set + */ + class ServoTarget { + + /** + * Constructs a new ServoTarget. + * @classdesc TODO document + * + * @author Trent Houliston + * @exports message.motion.ServoTarget + * @constructor + * @param {message.motion.ServoTarget$Properties=} [properties] Properties to set + */ + constructor(properties?: message.motion.ServoTarget$Properties); + + /** + * ServoTarget time. + * @type {(google.protobuf.Timestamp$Properties|null)} + */ + public time: (google.protobuf.Timestamp$Properties|null); + + /** + * ServoTarget id. + * @type {number} + */ + public id: number; + + /** + * ServoTarget position. + * @type {number} + */ + public position: number; + + /** + * ServoTarget gain. + * @type {number} + */ + public gain: number; + + /** + * ServoTarget torque. + * @type {number} + */ + public torque: number; + + /** + * Creates a new ServoTarget instance using the specified properties. + * @param {message.motion.ServoTarget$Properties=} [properties] Properties to set + * @returns {message.motion.ServoTarget} ServoTarget instance + */ + public static create(properties?: message.motion.ServoTarget$Properties): message.motion.ServoTarget; + + /** + * Encodes the specified ServoTarget message. Does not implicitly {@link message.motion.ServoTarget.verify|verify} messages. + * @param {message.motion.ServoTarget$Properties} message ServoTarget message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.motion.ServoTarget$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified ServoTarget message, length delimited. Does not implicitly {@link message.motion.ServoTarget.verify|verify} messages. + * @param {message.motion.ServoTarget$Properties} message ServoTarget message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.motion.ServoTarget$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a ServoTarget message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.motion.ServoTarget} ServoTarget + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.motion.ServoTarget; + + /** + * Decodes a ServoTarget message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.motion.ServoTarget} ServoTarget + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.motion.ServoTarget; + + /** + * Verifies a ServoTarget message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a ServoTarget message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.motion.ServoTarget} ServoTarget + */ + public static fromObject(object: { [k: string]: any }): message.motion.ServoTarget; + + /** + * Creates a ServoTarget message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.motion.ServoTarget.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.motion.ServoTarget} ServoTarget + */ + public static from(object: { [k: string]: any }): message.motion.ServoTarget; + + /** + * Creates a plain object from a ServoTarget message. Also converts values to other types if specified. + * @param {message.motion.ServoTarget} message ServoTarget + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.motion.ServoTarget, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this ServoTarget message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this ServoTarget to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type TorsoMotionUpdate$Properties = { + frameArms?: vec3$Properties; + frameLegs?: vec3$Properties; + frame3D?: mat44$Properties; + }; + + /** + * Constructs a new TorsoMotionUpdate. + * @exports message.motion.TorsoMotionUpdate + * @constructor + * @param {message.motion.TorsoMotionUpdate$Properties=} [properties] Properties to set + */ + class TorsoMotionUpdate { + + /** + * Constructs a new TorsoMotionUpdate. + * @exports message.motion.TorsoMotionUpdate + * @constructor + * @param {message.motion.TorsoMotionUpdate$Properties=} [properties] Properties to set + */ + constructor(properties?: message.motion.TorsoMotionUpdate$Properties); + + /** + * TorsoMotionUpdate frameArms. + * @type {(vec3$Properties|null)} + */ + public frameArms: (vec3$Properties|null); + + /** + * TorsoMotionUpdate frameLegs. + * @type {(vec3$Properties|null)} + */ + public frameLegs: (vec3$Properties|null); + + /** + * TorsoMotionUpdate frame3D. + * @type {(mat44$Properties|null)} + */ + public frame3D: (mat44$Properties|null); + + /** + * Creates a new TorsoMotionUpdate instance using the specified properties. + * @param {message.motion.TorsoMotionUpdate$Properties=} [properties] Properties to set + * @returns {message.motion.TorsoMotionUpdate} TorsoMotionUpdate instance + */ + public static create(properties?: message.motion.TorsoMotionUpdate$Properties): message.motion.TorsoMotionUpdate; + + /** + * Encodes the specified TorsoMotionUpdate message. Does not implicitly {@link message.motion.TorsoMotionUpdate.verify|verify} messages. + * @param {message.motion.TorsoMotionUpdate$Properties} message TorsoMotionUpdate message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.motion.TorsoMotionUpdate$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified TorsoMotionUpdate message, length delimited. Does not implicitly {@link message.motion.TorsoMotionUpdate.verify|verify} messages. + * @param {message.motion.TorsoMotionUpdate$Properties} message TorsoMotionUpdate message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.motion.TorsoMotionUpdate$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a TorsoMotionUpdate message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.motion.TorsoMotionUpdate} TorsoMotionUpdate + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.motion.TorsoMotionUpdate; + + /** + * Decodes a TorsoMotionUpdate message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.motion.TorsoMotionUpdate} TorsoMotionUpdate + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.motion.TorsoMotionUpdate; + + /** + * Verifies a TorsoMotionUpdate message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a TorsoMotionUpdate message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.motion.TorsoMotionUpdate} TorsoMotionUpdate + */ + public static fromObject(object: { [k: string]: any }): message.motion.TorsoMotionUpdate; + + /** + * Creates a TorsoMotionUpdate message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.motion.TorsoMotionUpdate.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.motion.TorsoMotionUpdate} TorsoMotionUpdate + */ + public static from(object: { [k: string]: any }): message.motion.TorsoMotionUpdate; + + /** + * Creates a plain object from a TorsoMotionUpdate message. Also converts values to other types if specified. + * @param {message.motion.TorsoMotionUpdate} message TorsoMotionUpdate + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.motion.TorsoMotionUpdate, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this TorsoMotionUpdate message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this TorsoMotionUpdate to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type TorsoPositionUpdate$Properties = { + position?: vec3$Properties; + destination?: vec3$Properties; + }; + + /** + * Constructs a new TorsoPositionUpdate. + * @exports message.motion.TorsoPositionUpdate + * @constructor + * @param {message.motion.TorsoPositionUpdate$Properties=} [properties] Properties to set + */ + class TorsoPositionUpdate { + + /** + * Constructs a new TorsoPositionUpdate. + * @exports message.motion.TorsoPositionUpdate + * @constructor + * @param {message.motion.TorsoPositionUpdate$Properties=} [properties] Properties to set + */ + constructor(properties?: message.motion.TorsoPositionUpdate$Properties); + + /** + * TorsoPositionUpdate position. + * @type {(vec3$Properties|null)} + */ + public position: (vec3$Properties|null); + + /** + * TorsoPositionUpdate destination. + * @type {(vec3$Properties|null)} + */ + public destination: (vec3$Properties|null); + + /** + * Creates a new TorsoPositionUpdate instance using the specified properties. + * @param {message.motion.TorsoPositionUpdate$Properties=} [properties] Properties to set + * @returns {message.motion.TorsoPositionUpdate} TorsoPositionUpdate instance + */ + public static create(properties?: message.motion.TorsoPositionUpdate$Properties): message.motion.TorsoPositionUpdate; + + /** + * Encodes the specified TorsoPositionUpdate message. Does not implicitly {@link message.motion.TorsoPositionUpdate.verify|verify} messages. + * @param {message.motion.TorsoPositionUpdate$Properties} message TorsoPositionUpdate message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.motion.TorsoPositionUpdate$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified TorsoPositionUpdate message, length delimited. Does not implicitly {@link message.motion.TorsoPositionUpdate.verify|verify} messages. + * @param {message.motion.TorsoPositionUpdate$Properties} message TorsoPositionUpdate message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.motion.TorsoPositionUpdate$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a TorsoPositionUpdate message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.motion.TorsoPositionUpdate} TorsoPositionUpdate + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.motion.TorsoPositionUpdate; + + /** + * Decodes a TorsoPositionUpdate message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.motion.TorsoPositionUpdate} TorsoPositionUpdate + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.motion.TorsoPositionUpdate; + + /** + * Verifies a TorsoPositionUpdate message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a TorsoPositionUpdate message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.motion.TorsoPositionUpdate} TorsoPositionUpdate + */ + public static fromObject(object: { [k: string]: any }): message.motion.TorsoPositionUpdate; + + /** + * Creates a TorsoPositionUpdate message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.motion.TorsoPositionUpdate.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.motion.TorsoPositionUpdate} TorsoPositionUpdate + */ + public static from(object: { [k: string]: any }): message.motion.TorsoPositionUpdate; + + /** + * Creates a plain object from a TorsoPositionUpdate message. Also converts values to other types if specified. + * @param {message.motion.TorsoPositionUpdate} message TorsoPositionUpdate + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.motion.TorsoPositionUpdate, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this TorsoPositionUpdate message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this TorsoPositionUpdate to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type EnableTorsoMotion$Properties = {}; + + /** + * Constructs a new EnableTorsoMotion. + * @exports message.motion.EnableTorsoMotion + * @constructor + * @param {message.motion.EnableTorsoMotion$Properties=} [properties] Properties to set + */ + class EnableTorsoMotion { + + /** + * Constructs a new EnableTorsoMotion. + * @exports message.motion.EnableTorsoMotion + * @constructor + * @param {message.motion.EnableTorsoMotion$Properties=} [properties] Properties to set + */ + constructor(properties?: message.motion.EnableTorsoMotion$Properties); + + /** + * Creates a new EnableTorsoMotion instance using the specified properties. + * @param {message.motion.EnableTorsoMotion$Properties=} [properties] Properties to set + * @returns {message.motion.EnableTorsoMotion} EnableTorsoMotion instance + */ + public static create(properties?: message.motion.EnableTorsoMotion$Properties): message.motion.EnableTorsoMotion; + + /** + * Encodes the specified EnableTorsoMotion message. Does not implicitly {@link message.motion.EnableTorsoMotion.verify|verify} messages. + * @param {message.motion.EnableTorsoMotion$Properties} message EnableTorsoMotion message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.motion.EnableTorsoMotion$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified EnableTorsoMotion message, length delimited. Does not implicitly {@link message.motion.EnableTorsoMotion.verify|verify} messages. + * @param {message.motion.EnableTorsoMotion$Properties} message EnableTorsoMotion message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.motion.EnableTorsoMotion$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an EnableTorsoMotion message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.motion.EnableTorsoMotion} EnableTorsoMotion + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.motion.EnableTorsoMotion; + + /** + * Decodes an EnableTorsoMotion message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.motion.EnableTorsoMotion} EnableTorsoMotion + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.motion.EnableTorsoMotion; + + /** + * Verifies an EnableTorsoMotion message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates an EnableTorsoMotion message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.motion.EnableTorsoMotion} EnableTorsoMotion + */ + public static fromObject(object: { [k: string]: any }): message.motion.EnableTorsoMotion; + + /** + * Creates an EnableTorsoMotion message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.motion.EnableTorsoMotion.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.motion.EnableTorsoMotion} EnableTorsoMotion + */ + public static from(object: { [k: string]: any }): message.motion.EnableTorsoMotion; + + /** + * Creates a plain object from an EnableTorsoMotion message. Also converts values to other types if specified. + * @param {message.motion.EnableTorsoMotion} message EnableTorsoMotion + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.motion.EnableTorsoMotion, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this EnableTorsoMotion message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this EnableTorsoMotion to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type DisableTorsoMotion$Properties = {}; + + /** + * Constructs a new DisableTorsoMotion. + * @exports message.motion.DisableTorsoMotion + * @constructor + * @param {message.motion.DisableTorsoMotion$Properties=} [properties] Properties to set + */ + class DisableTorsoMotion { + + /** + * Constructs a new DisableTorsoMotion. + * @exports message.motion.DisableTorsoMotion + * @constructor + * @param {message.motion.DisableTorsoMotion$Properties=} [properties] Properties to set + */ + constructor(properties?: message.motion.DisableTorsoMotion$Properties); + + /** + * Creates a new DisableTorsoMotion instance using the specified properties. + * @param {message.motion.DisableTorsoMotion$Properties=} [properties] Properties to set + * @returns {message.motion.DisableTorsoMotion} DisableTorsoMotion instance + */ + public static create(properties?: message.motion.DisableTorsoMotion$Properties): message.motion.DisableTorsoMotion; + + /** + * Encodes the specified DisableTorsoMotion message. Does not implicitly {@link message.motion.DisableTorsoMotion.verify|verify} messages. + * @param {message.motion.DisableTorsoMotion$Properties} message DisableTorsoMotion message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.motion.DisableTorsoMotion$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified DisableTorsoMotion message, length delimited. Does not implicitly {@link message.motion.DisableTorsoMotion.verify|verify} messages. + * @param {message.motion.DisableTorsoMotion$Properties} message DisableTorsoMotion message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.motion.DisableTorsoMotion$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a DisableTorsoMotion message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.motion.DisableTorsoMotion} DisableTorsoMotion + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.motion.DisableTorsoMotion; + + /** + * Decodes a DisableTorsoMotion message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.motion.DisableTorsoMotion} DisableTorsoMotion + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.motion.DisableTorsoMotion; + + /** + * Verifies a DisableTorsoMotion message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a DisableTorsoMotion message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.motion.DisableTorsoMotion} DisableTorsoMotion + */ + public static fromObject(object: { [k: string]: any }): message.motion.DisableTorsoMotion; + + /** + * Creates a DisableTorsoMotion message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.motion.DisableTorsoMotion.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.motion.DisableTorsoMotion} DisableTorsoMotion + */ + public static from(object: { [k: string]: any }): message.motion.DisableTorsoMotion; + + /** + * Creates a plain object from a DisableTorsoMotion message. Also converts values to other types if specified. + * @param {message.motion.DisableTorsoMotion} message DisableTorsoMotion + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.motion.DisableTorsoMotion, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this DisableTorsoMotion message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this DisableTorsoMotion to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type WalkStarted$Properties = {}; + + /** + * Constructs a new WalkStarted. + * @exports message.motion.WalkStarted + * @constructor + * @param {message.motion.WalkStarted$Properties=} [properties] Properties to set + */ + class WalkStarted { + + /** + * Constructs a new WalkStarted. + * @exports message.motion.WalkStarted + * @constructor + * @param {message.motion.WalkStarted$Properties=} [properties] Properties to set + */ + constructor(properties?: message.motion.WalkStarted$Properties); + + /** + * Creates a new WalkStarted instance using the specified properties. + * @param {message.motion.WalkStarted$Properties=} [properties] Properties to set + * @returns {message.motion.WalkStarted} WalkStarted instance + */ + public static create(properties?: message.motion.WalkStarted$Properties): message.motion.WalkStarted; + + /** + * Encodes the specified WalkStarted message. Does not implicitly {@link message.motion.WalkStarted.verify|verify} messages. + * @param {message.motion.WalkStarted$Properties} message WalkStarted message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.motion.WalkStarted$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified WalkStarted message, length delimited. Does not implicitly {@link message.motion.WalkStarted.verify|verify} messages. + * @param {message.motion.WalkStarted$Properties} message WalkStarted message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.motion.WalkStarted$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a WalkStarted message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.motion.WalkStarted} WalkStarted + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.motion.WalkStarted; + + /** + * Decodes a WalkStarted message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.motion.WalkStarted} WalkStarted + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.motion.WalkStarted; + + /** + * Verifies a WalkStarted message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a WalkStarted message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.motion.WalkStarted} WalkStarted + */ + public static fromObject(object: { [k: string]: any }): message.motion.WalkStarted; + + /** + * Creates a WalkStarted message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.motion.WalkStarted.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.motion.WalkStarted} WalkStarted + */ + public static from(object: { [k: string]: any }): message.motion.WalkStarted; + + /** + * Creates a plain object from a WalkStarted message. Also converts values to other types if specified. + * @param {message.motion.WalkStarted} message WalkStarted + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.motion.WalkStarted, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this WalkStarted message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this WalkStarted to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type WalkStopped$Properties = {}; + + /** + * Constructs a new WalkStopped. + * @exports message.motion.WalkStopped + * @constructor + * @param {message.motion.WalkStopped$Properties=} [properties] Properties to set + */ + class WalkStopped { + + /** + * Constructs a new WalkStopped. + * @exports message.motion.WalkStopped + * @constructor + * @param {message.motion.WalkStopped$Properties=} [properties] Properties to set + */ + constructor(properties?: message.motion.WalkStopped$Properties); + + /** + * Creates a new WalkStopped instance using the specified properties. + * @param {message.motion.WalkStopped$Properties=} [properties] Properties to set + * @returns {message.motion.WalkStopped} WalkStopped instance + */ + public static create(properties?: message.motion.WalkStopped$Properties): message.motion.WalkStopped; + + /** + * Encodes the specified WalkStopped message. Does not implicitly {@link message.motion.WalkStopped.verify|verify} messages. + * @param {message.motion.WalkStopped$Properties} message WalkStopped message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.motion.WalkStopped$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified WalkStopped message, length delimited. Does not implicitly {@link message.motion.WalkStopped.verify|verify} messages. + * @param {message.motion.WalkStopped$Properties} message WalkStopped message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.motion.WalkStopped$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a WalkStopped message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.motion.WalkStopped} WalkStopped + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.motion.WalkStopped; + + /** + * Decodes a WalkStopped message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.motion.WalkStopped} WalkStopped + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.motion.WalkStopped; + + /** + * Verifies a WalkStopped message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a WalkStopped message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.motion.WalkStopped} WalkStopped + */ + public static fromObject(object: { [k: string]: any }): message.motion.WalkStopped; + + /** + * Creates a WalkStopped message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.motion.WalkStopped.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.motion.WalkStopped} WalkStopped + */ + public static from(object: { [k: string]: any }): message.motion.WalkStopped; + + /** + * Creates a plain object from a WalkStopped message. Also converts values to other types if specified. + * @param {message.motion.WalkStopped} message WalkStopped + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.motion.WalkStopped, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this WalkStopped message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this WalkStopped to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type WalkCommand$Properties = { + subsumptionId?: (number|Long); + command?: vec3$Properties; + }; + + /** + * Constructs a new WalkCommand. + * @exports message.motion.WalkCommand + * @constructor + * @param {message.motion.WalkCommand$Properties=} [properties] Properties to set + */ + class WalkCommand { + + /** + * Constructs a new WalkCommand. + * @exports message.motion.WalkCommand + * @constructor + * @param {message.motion.WalkCommand$Properties=} [properties] Properties to set + */ + constructor(properties?: message.motion.WalkCommand$Properties); + + /** + * WalkCommand subsumptionId. + * @type {number|Long} + */ + public subsumptionId: (number|Long); + + /** + * WalkCommand command. + * @type {(vec3$Properties|null)} + */ + public command: (vec3$Properties|null); + + /** + * Creates a new WalkCommand instance using the specified properties. + * @param {message.motion.WalkCommand$Properties=} [properties] Properties to set + * @returns {message.motion.WalkCommand} WalkCommand instance + */ + public static create(properties?: message.motion.WalkCommand$Properties): message.motion.WalkCommand; + + /** + * Encodes the specified WalkCommand message. Does not implicitly {@link message.motion.WalkCommand.verify|verify} messages. + * @param {message.motion.WalkCommand$Properties} message WalkCommand message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.motion.WalkCommand$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified WalkCommand message, length delimited. Does not implicitly {@link message.motion.WalkCommand.verify|verify} messages. + * @param {message.motion.WalkCommand$Properties} message WalkCommand message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.motion.WalkCommand$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a WalkCommand message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.motion.WalkCommand} WalkCommand + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.motion.WalkCommand; + + /** + * Decodes a WalkCommand message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.motion.WalkCommand} WalkCommand + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.motion.WalkCommand; + + /** + * Verifies a WalkCommand message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a WalkCommand message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.motion.WalkCommand} WalkCommand + */ + public static fromObject(object: { [k: string]: any }): message.motion.WalkCommand; + + /** + * Creates a WalkCommand message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.motion.WalkCommand.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.motion.WalkCommand} WalkCommand + */ + public static from(object: { [k: string]: any }): message.motion.WalkCommand; + + /** + * Creates a plain object from a WalkCommand message. Also converts values to other types if specified. + * @param {message.motion.WalkCommand} message WalkCommand + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.motion.WalkCommand, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this WalkCommand message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this WalkCommand to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type StopCommand$Properties = { + subsumptionId?: (number|Long); + }; + + /** + * Constructs a new StopCommand. + * @exports message.motion.StopCommand + * @constructor + * @param {message.motion.StopCommand$Properties=} [properties] Properties to set + */ + class StopCommand { + + /** + * Constructs a new StopCommand. + * @exports message.motion.StopCommand + * @constructor + * @param {message.motion.StopCommand$Properties=} [properties] Properties to set + */ + constructor(properties?: message.motion.StopCommand$Properties); + + /** + * StopCommand subsumptionId. + * @type {number|Long} + */ + public subsumptionId: (number|Long); + + /** + * Creates a new StopCommand instance using the specified properties. + * @param {message.motion.StopCommand$Properties=} [properties] Properties to set + * @returns {message.motion.StopCommand} StopCommand instance + */ + public static create(properties?: message.motion.StopCommand$Properties): message.motion.StopCommand; + + /** + * Encodes the specified StopCommand message. Does not implicitly {@link message.motion.StopCommand.verify|verify} messages. + * @param {message.motion.StopCommand$Properties} message StopCommand message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.motion.StopCommand$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified StopCommand message, length delimited. Does not implicitly {@link message.motion.StopCommand.verify|verify} messages. + * @param {message.motion.StopCommand$Properties} message StopCommand message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.motion.StopCommand$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a StopCommand message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.motion.StopCommand} StopCommand + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.motion.StopCommand; + + /** + * Decodes a StopCommand message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.motion.StopCommand} StopCommand + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.motion.StopCommand; + + /** + * Verifies a StopCommand message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a StopCommand message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.motion.StopCommand} StopCommand + */ + public static fromObject(object: { [k: string]: any }): message.motion.StopCommand; + + /** + * Creates a StopCommand message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.motion.StopCommand.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.motion.StopCommand} StopCommand + */ + public static from(object: { [k: string]: any }): message.motion.StopCommand; + + /** + * Creates a plain object from a StopCommand message. Also converts values to other types if specified. + * @param {message.motion.StopCommand} message StopCommand + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.motion.StopCommand, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this StopCommand message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this StopCommand to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type NewWalkCommand$Properties = { + velocityTarget?: vec3$Properties; + }; + + /** + * Constructs a new NewWalkCommand. + * @exports message.motion.NewWalkCommand + * @constructor + * @param {message.motion.NewWalkCommand$Properties=} [properties] Properties to set + */ + class NewWalkCommand { + + /** + * Constructs a new NewWalkCommand. + * @exports message.motion.NewWalkCommand + * @constructor + * @param {message.motion.NewWalkCommand$Properties=} [properties] Properties to set + */ + constructor(properties?: message.motion.NewWalkCommand$Properties); + + /** + * NewWalkCommand velocityTarget. + * @type {(vec3$Properties|null)} + */ + public velocityTarget: (vec3$Properties|null); + + /** + * Creates a new NewWalkCommand instance using the specified properties. + * @param {message.motion.NewWalkCommand$Properties=} [properties] Properties to set + * @returns {message.motion.NewWalkCommand} NewWalkCommand instance + */ + public static create(properties?: message.motion.NewWalkCommand$Properties): message.motion.NewWalkCommand; + + /** + * Encodes the specified NewWalkCommand message. Does not implicitly {@link message.motion.NewWalkCommand.verify|verify} messages. + * @param {message.motion.NewWalkCommand$Properties} message NewWalkCommand message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.motion.NewWalkCommand$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified NewWalkCommand message, length delimited. Does not implicitly {@link message.motion.NewWalkCommand.verify|verify} messages. + * @param {message.motion.NewWalkCommand$Properties} message NewWalkCommand message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.motion.NewWalkCommand$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a NewWalkCommand message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.motion.NewWalkCommand} NewWalkCommand + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.motion.NewWalkCommand; + + /** + * Decodes a NewWalkCommand message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.motion.NewWalkCommand} NewWalkCommand + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.motion.NewWalkCommand; + + /** + * Verifies a NewWalkCommand message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a NewWalkCommand message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.motion.NewWalkCommand} NewWalkCommand + */ + public static fromObject(object: { [k: string]: any }): message.motion.NewWalkCommand; + + /** + * Creates a NewWalkCommand message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.motion.NewWalkCommand.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.motion.NewWalkCommand} NewWalkCommand + */ + public static from(object: { [k: string]: any }): message.motion.NewWalkCommand; + + /** + * Creates a plain object from a NewWalkCommand message. Also converts values to other types if specified. + * @param {message.motion.NewWalkCommand} message NewWalkCommand + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.motion.NewWalkCommand, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this NewWalkCommand message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this NewWalkCommand to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type EnableWalkEngineCommand$Properties = { + subsumptionId?: (number|Long); + }; + + /** + * Constructs a new EnableWalkEngineCommand. + * @exports message.motion.EnableWalkEngineCommand + * @constructor + * @param {message.motion.EnableWalkEngineCommand$Properties=} [properties] Properties to set + */ + class EnableWalkEngineCommand { + + /** + * Constructs a new EnableWalkEngineCommand. + * @exports message.motion.EnableWalkEngineCommand + * @constructor + * @param {message.motion.EnableWalkEngineCommand$Properties=} [properties] Properties to set + */ + constructor(properties?: message.motion.EnableWalkEngineCommand$Properties); + + /** + * EnableWalkEngineCommand subsumptionId. + * @type {number|Long} + */ + public subsumptionId: (number|Long); + + /** + * Creates a new EnableWalkEngineCommand instance using the specified properties. + * @param {message.motion.EnableWalkEngineCommand$Properties=} [properties] Properties to set + * @returns {message.motion.EnableWalkEngineCommand} EnableWalkEngineCommand instance + */ + public static create(properties?: message.motion.EnableWalkEngineCommand$Properties): message.motion.EnableWalkEngineCommand; + + /** + * Encodes the specified EnableWalkEngineCommand message. Does not implicitly {@link message.motion.EnableWalkEngineCommand.verify|verify} messages. + * @param {message.motion.EnableWalkEngineCommand$Properties} message EnableWalkEngineCommand message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.motion.EnableWalkEngineCommand$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified EnableWalkEngineCommand message, length delimited. Does not implicitly {@link message.motion.EnableWalkEngineCommand.verify|verify} messages. + * @param {message.motion.EnableWalkEngineCommand$Properties} message EnableWalkEngineCommand message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.motion.EnableWalkEngineCommand$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an EnableWalkEngineCommand message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.motion.EnableWalkEngineCommand} EnableWalkEngineCommand + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.motion.EnableWalkEngineCommand; + + /** + * Decodes an EnableWalkEngineCommand message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.motion.EnableWalkEngineCommand} EnableWalkEngineCommand + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.motion.EnableWalkEngineCommand; + + /** + * Verifies an EnableWalkEngineCommand message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates an EnableWalkEngineCommand message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.motion.EnableWalkEngineCommand} EnableWalkEngineCommand + */ + public static fromObject(object: { [k: string]: any }): message.motion.EnableWalkEngineCommand; + + /** + * Creates an EnableWalkEngineCommand message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.motion.EnableWalkEngineCommand.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.motion.EnableWalkEngineCommand} EnableWalkEngineCommand + */ + public static from(object: { [k: string]: any }): message.motion.EnableWalkEngineCommand; + + /** + * Creates a plain object from an EnableWalkEngineCommand message. Also converts values to other types if specified. + * @param {message.motion.EnableWalkEngineCommand} message EnableWalkEngineCommand + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.motion.EnableWalkEngineCommand, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this EnableWalkEngineCommand message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this EnableWalkEngineCommand to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type DisableWalkEngineCommand$Properties = { + subsumptionId?: (number|Long); + }; + + /** + * Constructs a new DisableWalkEngineCommand. + * @exports message.motion.DisableWalkEngineCommand + * @constructor + * @param {message.motion.DisableWalkEngineCommand$Properties=} [properties] Properties to set + */ + class DisableWalkEngineCommand { + + /** + * Constructs a new DisableWalkEngineCommand. + * @exports message.motion.DisableWalkEngineCommand + * @constructor + * @param {message.motion.DisableWalkEngineCommand$Properties=} [properties] Properties to set + */ + constructor(properties?: message.motion.DisableWalkEngineCommand$Properties); + + /** + * DisableWalkEngineCommand subsumptionId. + * @type {number|Long} + */ + public subsumptionId: (number|Long); + + /** + * Creates a new DisableWalkEngineCommand instance using the specified properties. + * @param {message.motion.DisableWalkEngineCommand$Properties=} [properties] Properties to set + * @returns {message.motion.DisableWalkEngineCommand} DisableWalkEngineCommand instance + */ + public static create(properties?: message.motion.DisableWalkEngineCommand$Properties): message.motion.DisableWalkEngineCommand; + + /** + * Encodes the specified DisableWalkEngineCommand message. Does not implicitly {@link message.motion.DisableWalkEngineCommand.verify|verify} messages. + * @param {message.motion.DisableWalkEngineCommand$Properties} message DisableWalkEngineCommand message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.motion.DisableWalkEngineCommand$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified DisableWalkEngineCommand message, length delimited. Does not implicitly {@link message.motion.DisableWalkEngineCommand.verify|verify} messages. + * @param {message.motion.DisableWalkEngineCommand$Properties} message DisableWalkEngineCommand message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.motion.DisableWalkEngineCommand$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a DisableWalkEngineCommand message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.motion.DisableWalkEngineCommand} DisableWalkEngineCommand + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.motion.DisableWalkEngineCommand; + + /** + * Decodes a DisableWalkEngineCommand message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.motion.DisableWalkEngineCommand} DisableWalkEngineCommand + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.motion.DisableWalkEngineCommand; + + /** + * Verifies a DisableWalkEngineCommand message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a DisableWalkEngineCommand message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.motion.DisableWalkEngineCommand} DisableWalkEngineCommand + */ + public static fromObject(object: { [k: string]: any }): message.motion.DisableWalkEngineCommand; + + /** + * Creates a DisableWalkEngineCommand message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.motion.DisableWalkEngineCommand.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.motion.DisableWalkEngineCommand} DisableWalkEngineCommand + */ + public static from(object: { [k: string]: any }): message.motion.DisableWalkEngineCommand; + + /** + * Creates a plain object from a DisableWalkEngineCommand message. Also converts values to other types if specified. + * @param {message.motion.DisableWalkEngineCommand} message DisableWalkEngineCommand + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.motion.DisableWalkEngineCommand, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this DisableWalkEngineCommand message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this DisableWalkEngineCommand to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + } + + /** + * Namespace output. + * @exports message.output + * @namespace + */ + namespace output { + + type Say$Properties = { + message?: string; + }; + + /** + * Constructs a new Say. + * @classdesc TODO document + * + * @author Trent Houliston + * @exports message.output.Say + * @constructor + * @param {message.output.Say$Properties=} [properties] Properties to set + */ + class Say { + + /** + * Constructs a new Say. + * @classdesc TODO document + * + * @author Trent Houliston + * @exports message.output.Say + * @constructor + * @param {message.output.Say$Properties=} [properties] Properties to set + */ + constructor(properties?: message.output.Say$Properties); + + /** + * Say message. + * @type {string} + */ + public message: string; + + /** + * Creates a new Say instance using the specified properties. + * @param {message.output.Say$Properties=} [properties] Properties to set + * @returns {message.output.Say} Say instance + */ + public static create(properties?: message.output.Say$Properties): message.output.Say; + + /** + * Encodes the specified Say message. Does not implicitly {@link message.output.Say.verify|verify} messages. + * @param {message.output.Say$Properties} message Say message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.output.Say$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Say message, length delimited. Does not implicitly {@link message.output.Say.verify|verify} messages. + * @param {message.output.Say$Properties} message Say message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.output.Say$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a Say message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.output.Say} Say + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.output.Say; + + /** + * Decodes a Say message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.output.Say} Say + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.output.Say; + + /** + * Verifies a Say message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a Say message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.output.Say} Say + */ + public static fromObject(object: { [k: string]: any }): message.output.Say; + + /** + * Creates a Say message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.output.Say.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.output.Say} Say + */ + public static from(object: { [k: string]: any }): message.output.Say; + + /** + * Creates a plain object from a Say message. Also converts values to other types if specified. + * @param {message.output.Say} message Say + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.output.Say, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this Say message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this Say to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + } + + /** + * Namespace platform. + * @exports message.platform + * @namespace + */ + namespace platform { + + /** + * Namespace darwin. + * @exports message.platform.darwin + * @namespace + */ + namespace darwin { + + type DarwinSensors$Properties = { + timestamp?: google.protobuf.Timestamp$Properties; + cm730ErrorFlags?: number; + ledPanel?: message.platform.darwin.DarwinSensors.LEDPanel$Properties; + headLED?: message.platform.darwin.DarwinSensors.HeadLED$Properties; + eyeLED?: message.platform.darwin.DarwinSensors.EyeLED$Properties; + buttons?: message.platform.darwin.DarwinSensors.Buttons$Properties; + voltage?: number; + accelerometer?: message.platform.darwin.DarwinSensors.Accelerometer$Properties; + gyroscope?: message.platform.darwin.DarwinSensors.Gyroscope$Properties; + fsr?: message.platform.darwin.DarwinSensors.FSRs$Properties; + servo?: message.platform.darwin.DarwinSensors.Servos$Properties; + }; + + /** + * Constructs a new DarwinSensors. + * @classdesc TODO document + * + * @author Trent Houliston + * @exports message.platform.darwin.DarwinSensors + * @constructor + * @param {message.platform.darwin.DarwinSensors$Properties=} [properties] Properties to set + */ + class DarwinSensors { + + /** + * Constructs a new DarwinSensors. + * @classdesc TODO document + * + * @author Trent Houliston + * @exports message.platform.darwin.DarwinSensors + * @constructor + * @param {message.platform.darwin.DarwinSensors$Properties=} [properties] Properties to set + */ + constructor(properties?: message.platform.darwin.DarwinSensors$Properties); + + /** + * DarwinSensors timestamp. + * @type {(google.protobuf.Timestamp$Properties|null)} + */ + public timestamp: (google.protobuf.Timestamp$Properties|null); + + /** + * DarwinSensors cm730ErrorFlags. + * @type {number} + */ + public cm730ErrorFlags: number; + + /** + * DarwinSensors ledPanel. + * @type {(message.platform.darwin.DarwinSensors.LEDPanel$Properties|null)} + */ + public ledPanel: (message.platform.darwin.DarwinSensors.LEDPanel$Properties|null); + + /** + * DarwinSensors headLED. + * @type {(message.platform.darwin.DarwinSensors.HeadLED$Properties|null)} + */ + public headLED: (message.platform.darwin.DarwinSensors.HeadLED$Properties|null); + + /** + * DarwinSensors eyeLED. + * @type {(message.platform.darwin.DarwinSensors.EyeLED$Properties|null)} + */ + public eyeLED: (message.platform.darwin.DarwinSensors.EyeLED$Properties|null); + + /** + * DarwinSensors buttons. + * @type {(message.platform.darwin.DarwinSensors.Buttons$Properties|null)} + */ + public buttons: (message.platform.darwin.DarwinSensors.Buttons$Properties|null); + + /** + * DarwinSensors voltage. + * @type {number} + */ + public voltage: number; + + /** + * DarwinSensors accelerometer. + * @type {(message.platform.darwin.DarwinSensors.Accelerometer$Properties|null)} + */ + public accelerometer: (message.platform.darwin.DarwinSensors.Accelerometer$Properties|null); + + /** + * DarwinSensors gyroscope. + * @type {(message.platform.darwin.DarwinSensors.Gyroscope$Properties|null)} + */ + public gyroscope: (message.platform.darwin.DarwinSensors.Gyroscope$Properties|null); + + /** + * DarwinSensors fsr. + * @type {(message.platform.darwin.DarwinSensors.FSRs$Properties|null)} + */ + public fsr: (message.platform.darwin.DarwinSensors.FSRs$Properties|null); + + /** + * DarwinSensors servo. + * @type {(message.platform.darwin.DarwinSensors.Servos$Properties|null)} + */ + public servo: (message.platform.darwin.DarwinSensors.Servos$Properties|null); + + /** + * Creates a new DarwinSensors instance using the specified properties. + * @param {message.platform.darwin.DarwinSensors$Properties=} [properties] Properties to set + * @returns {message.platform.darwin.DarwinSensors} DarwinSensors instance + */ + public static create(properties?: message.platform.darwin.DarwinSensors$Properties): message.platform.darwin.DarwinSensors; + + /** + * Encodes the specified DarwinSensors message. Does not implicitly {@link message.platform.darwin.DarwinSensors.verify|verify} messages. + * @param {message.platform.darwin.DarwinSensors$Properties} message DarwinSensors message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.platform.darwin.DarwinSensors$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified DarwinSensors message, length delimited. Does not implicitly {@link message.platform.darwin.DarwinSensors.verify|verify} messages. + * @param {message.platform.darwin.DarwinSensors$Properties} message DarwinSensors message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.platform.darwin.DarwinSensors$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a DarwinSensors message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.platform.darwin.DarwinSensors} DarwinSensors + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.platform.darwin.DarwinSensors; + + /** + * Decodes a DarwinSensors message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.platform.darwin.DarwinSensors} DarwinSensors + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.platform.darwin.DarwinSensors; + + /** + * Verifies a DarwinSensors message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a DarwinSensors message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.platform.darwin.DarwinSensors} DarwinSensors + */ + public static fromObject(object: { [k: string]: any }): message.platform.darwin.DarwinSensors; + + /** + * Creates a DarwinSensors message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.platform.darwin.DarwinSensors.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.platform.darwin.DarwinSensors} DarwinSensors + */ + public static from(object: { [k: string]: any }): message.platform.darwin.DarwinSensors; + + /** + * Creates a plain object from a DarwinSensors message. Also converts values to other types if specified. + * @param {message.platform.darwin.DarwinSensors} message DarwinSensors + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.platform.darwin.DarwinSensors, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this DarwinSensors message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this DarwinSensors to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + namespace DarwinSensors { + + /** + * Error enum. + * @name Error + * @memberof message.platform.darwin.DarwinSensors + * @enum {number} + * @property {number} OK=0 OK value + * @property {number} INPUT_VOLTAGE=1 INPUT_VOLTAGE value + * @property {number} ANGLE_LIMIT=2 ANGLE_LIMIT value + * @property {number} OVERHEATING=4 OVERHEATING value + * @property {number} RANGE=8 RANGE value + * @property {number} CHECKSUM=16 CHECKSUM value + * @property {number} OVERLOAD=32 OVERLOAD value + * @property {number} INSTRUCTION=64 INSTRUCTION value + * @property {number} CORRUPT_DATA=128 CORRUPT_DATA value + * @property {number} TIMEOUT=256 TIMEOUT value + * @property {number} TIMEOUT_VICTIM=512 TIMEOUT_VICTIM value + */ + enum Error { + OK = 0, + INPUT_VOLTAGE = 1, + ANGLE_LIMIT = 2, + OVERHEATING = 4, + RANGE = 8, + CHECKSUM = 16, + OVERLOAD = 32, + INSTRUCTION = 64, + CORRUPT_DATA = 128, + TIMEOUT = 256, + TIMEOUT_VICTIM = 512 + } + + type LEDPanel$Properties = { + led2?: boolean; + led3?: boolean; + led4?: boolean; + }; + + /** + * Constructs a new LEDPanel. + * @exports message.platform.darwin.DarwinSensors.LEDPanel + * @constructor + * @param {message.platform.darwin.DarwinSensors.LEDPanel$Properties=} [properties] Properties to set + */ + class LEDPanel { + + /** + * Constructs a new LEDPanel. + * @exports message.platform.darwin.DarwinSensors.LEDPanel + * @constructor + * @param {message.platform.darwin.DarwinSensors.LEDPanel$Properties=} [properties] Properties to set + */ + constructor(properties?: message.platform.darwin.DarwinSensors.LEDPanel$Properties); + + /** + * LEDPanel led2. + * @type {boolean} + */ + public led2: boolean; + + /** + * LEDPanel led3. + * @type {boolean} + */ + public led3: boolean; + + /** + * LEDPanel led4. + * @type {boolean} + */ + public led4: boolean; + + /** + * Creates a new LEDPanel instance using the specified properties. + * @param {message.platform.darwin.DarwinSensors.LEDPanel$Properties=} [properties] Properties to set + * @returns {message.platform.darwin.DarwinSensors.LEDPanel} LEDPanel instance + */ + public static create(properties?: message.platform.darwin.DarwinSensors.LEDPanel$Properties): message.platform.darwin.DarwinSensors.LEDPanel; + + /** + * Encodes the specified LEDPanel message. Does not implicitly {@link message.platform.darwin.DarwinSensors.LEDPanel.verify|verify} messages. + * @param {message.platform.darwin.DarwinSensors.LEDPanel$Properties} message LEDPanel message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.platform.darwin.DarwinSensors.LEDPanel$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified LEDPanel message, length delimited. Does not implicitly {@link message.platform.darwin.DarwinSensors.LEDPanel.verify|verify} messages. + * @param {message.platform.darwin.DarwinSensors.LEDPanel$Properties} message LEDPanel message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.platform.darwin.DarwinSensors.LEDPanel$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a LEDPanel message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.platform.darwin.DarwinSensors.LEDPanel} LEDPanel + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.platform.darwin.DarwinSensors.LEDPanel; + + /** + * Decodes a LEDPanel message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.platform.darwin.DarwinSensors.LEDPanel} LEDPanel + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.platform.darwin.DarwinSensors.LEDPanel; + + /** + * Verifies a LEDPanel message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a LEDPanel message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.platform.darwin.DarwinSensors.LEDPanel} LEDPanel + */ + public static fromObject(object: { [k: string]: any }): message.platform.darwin.DarwinSensors.LEDPanel; + + /** + * Creates a LEDPanel message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.platform.darwin.DarwinSensors.LEDPanel.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.platform.darwin.DarwinSensors.LEDPanel} LEDPanel + */ + public static from(object: { [k: string]: any }): message.platform.darwin.DarwinSensors.LEDPanel; + + /** + * Creates a plain object from a LEDPanel message. Also converts values to other types if specified. + * @param {message.platform.darwin.DarwinSensors.LEDPanel} message LEDPanel + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.platform.darwin.DarwinSensors.LEDPanel, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this LEDPanel message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this LEDPanel to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type HeadLED$Properties = { + RGB?: number; + }; + + /** + * Constructs a new HeadLED. + * @exports message.platform.darwin.DarwinSensors.HeadLED + * @constructor + * @param {message.platform.darwin.DarwinSensors.HeadLED$Properties=} [properties] Properties to set + */ + class HeadLED { + + /** + * Constructs a new HeadLED. + * @exports message.platform.darwin.DarwinSensors.HeadLED + * @constructor + * @param {message.platform.darwin.DarwinSensors.HeadLED$Properties=} [properties] Properties to set + */ + constructor(properties?: message.platform.darwin.DarwinSensors.HeadLED$Properties); + + /** + * HeadLED RGB. + * @type {number} + */ + public RGB: number; + + /** + * Creates a new HeadLED instance using the specified properties. + * @param {message.platform.darwin.DarwinSensors.HeadLED$Properties=} [properties] Properties to set + * @returns {message.platform.darwin.DarwinSensors.HeadLED} HeadLED instance + */ + public static create(properties?: message.platform.darwin.DarwinSensors.HeadLED$Properties): message.platform.darwin.DarwinSensors.HeadLED; + + /** + * Encodes the specified HeadLED message. Does not implicitly {@link message.platform.darwin.DarwinSensors.HeadLED.verify|verify} messages. + * @param {message.platform.darwin.DarwinSensors.HeadLED$Properties} message HeadLED message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.platform.darwin.DarwinSensors.HeadLED$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified HeadLED message, length delimited. Does not implicitly {@link message.platform.darwin.DarwinSensors.HeadLED.verify|verify} messages. + * @param {message.platform.darwin.DarwinSensors.HeadLED$Properties} message HeadLED message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.platform.darwin.DarwinSensors.HeadLED$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a HeadLED message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.platform.darwin.DarwinSensors.HeadLED} HeadLED + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.platform.darwin.DarwinSensors.HeadLED; + + /** + * Decodes a HeadLED message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.platform.darwin.DarwinSensors.HeadLED} HeadLED + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.platform.darwin.DarwinSensors.HeadLED; + + /** + * Verifies a HeadLED message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a HeadLED message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.platform.darwin.DarwinSensors.HeadLED} HeadLED + */ + public static fromObject(object: { [k: string]: any }): message.platform.darwin.DarwinSensors.HeadLED; + + /** + * Creates a HeadLED message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.platform.darwin.DarwinSensors.HeadLED.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.platform.darwin.DarwinSensors.HeadLED} HeadLED + */ + public static from(object: { [k: string]: any }): message.platform.darwin.DarwinSensors.HeadLED; + + /** + * Creates a plain object from a HeadLED message. Also converts values to other types if specified. + * @param {message.platform.darwin.DarwinSensors.HeadLED} message HeadLED + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.platform.darwin.DarwinSensors.HeadLED, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this HeadLED message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this HeadLED to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type EyeLED$Properties = { + RGB?: number; + }; + + /** + * Constructs a new EyeLED. + * @exports message.platform.darwin.DarwinSensors.EyeLED + * @constructor + * @param {message.platform.darwin.DarwinSensors.EyeLED$Properties=} [properties] Properties to set + */ + class EyeLED { + + /** + * Constructs a new EyeLED. + * @exports message.platform.darwin.DarwinSensors.EyeLED + * @constructor + * @param {message.platform.darwin.DarwinSensors.EyeLED$Properties=} [properties] Properties to set + */ + constructor(properties?: message.platform.darwin.DarwinSensors.EyeLED$Properties); + + /** + * EyeLED RGB. + * @type {number} + */ + public RGB: number; + + /** + * Creates a new EyeLED instance using the specified properties. + * @param {message.platform.darwin.DarwinSensors.EyeLED$Properties=} [properties] Properties to set + * @returns {message.platform.darwin.DarwinSensors.EyeLED} EyeLED instance + */ + public static create(properties?: message.platform.darwin.DarwinSensors.EyeLED$Properties): message.platform.darwin.DarwinSensors.EyeLED; + + /** + * Encodes the specified EyeLED message. Does not implicitly {@link message.platform.darwin.DarwinSensors.EyeLED.verify|verify} messages. + * @param {message.platform.darwin.DarwinSensors.EyeLED$Properties} message EyeLED message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.platform.darwin.DarwinSensors.EyeLED$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified EyeLED message, length delimited. Does not implicitly {@link message.platform.darwin.DarwinSensors.EyeLED.verify|verify} messages. + * @param {message.platform.darwin.DarwinSensors.EyeLED$Properties} message EyeLED message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.platform.darwin.DarwinSensors.EyeLED$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an EyeLED message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.platform.darwin.DarwinSensors.EyeLED} EyeLED + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.platform.darwin.DarwinSensors.EyeLED; + + /** + * Decodes an EyeLED message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.platform.darwin.DarwinSensors.EyeLED} EyeLED + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.platform.darwin.DarwinSensors.EyeLED; + + /** + * Verifies an EyeLED message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates an EyeLED message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.platform.darwin.DarwinSensors.EyeLED} EyeLED + */ + public static fromObject(object: { [k: string]: any }): message.platform.darwin.DarwinSensors.EyeLED; + + /** + * Creates an EyeLED message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.platform.darwin.DarwinSensors.EyeLED.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.platform.darwin.DarwinSensors.EyeLED} EyeLED + */ + public static from(object: { [k: string]: any }): message.platform.darwin.DarwinSensors.EyeLED; + + /** + * Creates a plain object from an EyeLED message. Also converts values to other types if specified. + * @param {message.platform.darwin.DarwinSensors.EyeLED} message EyeLED + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.platform.darwin.DarwinSensors.EyeLED, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this EyeLED message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this EyeLED to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type Buttons$Properties = { + left?: boolean; + middle?: boolean; + }; + + /** + * Constructs a new Buttons. + * @exports message.platform.darwin.DarwinSensors.Buttons + * @constructor + * @param {message.platform.darwin.DarwinSensors.Buttons$Properties=} [properties] Properties to set + */ + class Buttons { + + /** + * Constructs a new Buttons. + * @exports message.platform.darwin.DarwinSensors.Buttons + * @constructor + * @param {message.platform.darwin.DarwinSensors.Buttons$Properties=} [properties] Properties to set + */ + constructor(properties?: message.platform.darwin.DarwinSensors.Buttons$Properties); + + /** + * Buttons left. + * @type {boolean} + */ + public left: boolean; + + /** + * Buttons middle. + * @type {boolean} + */ + public middle: boolean; + + /** + * Creates a new Buttons instance using the specified properties. + * @param {message.platform.darwin.DarwinSensors.Buttons$Properties=} [properties] Properties to set + * @returns {message.platform.darwin.DarwinSensors.Buttons} Buttons instance + */ + public static create(properties?: message.platform.darwin.DarwinSensors.Buttons$Properties): message.platform.darwin.DarwinSensors.Buttons; + + /** + * Encodes the specified Buttons message. Does not implicitly {@link message.platform.darwin.DarwinSensors.Buttons.verify|verify} messages. + * @param {message.platform.darwin.DarwinSensors.Buttons$Properties} message Buttons message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.platform.darwin.DarwinSensors.Buttons$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Buttons message, length delimited. Does not implicitly {@link message.platform.darwin.DarwinSensors.Buttons.verify|verify} messages. + * @param {message.platform.darwin.DarwinSensors.Buttons$Properties} message Buttons message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.platform.darwin.DarwinSensors.Buttons$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a Buttons message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.platform.darwin.DarwinSensors.Buttons} Buttons + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.platform.darwin.DarwinSensors.Buttons; + + /** + * Decodes a Buttons message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.platform.darwin.DarwinSensors.Buttons} Buttons + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.platform.darwin.DarwinSensors.Buttons; + + /** + * Verifies a Buttons message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a Buttons message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.platform.darwin.DarwinSensors.Buttons} Buttons + */ + public static fromObject(object: { [k: string]: any }): message.platform.darwin.DarwinSensors.Buttons; + + /** + * Creates a Buttons message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.platform.darwin.DarwinSensors.Buttons.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.platform.darwin.DarwinSensors.Buttons} Buttons + */ + public static from(object: { [k: string]: any }): message.platform.darwin.DarwinSensors.Buttons; + + /** + * Creates a plain object from a Buttons message. Also converts values to other types if specified. + * @param {message.platform.darwin.DarwinSensors.Buttons} message Buttons + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.platform.darwin.DarwinSensors.Buttons, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this Buttons message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this Buttons to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type Accelerometer$Properties = { + x?: number; + y?: number; + z?: number; + }; + + /** + * Constructs a new Accelerometer. + * @exports message.platform.darwin.DarwinSensors.Accelerometer + * @constructor + * @param {message.platform.darwin.DarwinSensors.Accelerometer$Properties=} [properties] Properties to set + */ + class Accelerometer { + + /** + * Constructs a new Accelerometer. + * @exports message.platform.darwin.DarwinSensors.Accelerometer + * @constructor + * @param {message.platform.darwin.DarwinSensors.Accelerometer$Properties=} [properties] Properties to set + */ + constructor(properties?: message.platform.darwin.DarwinSensors.Accelerometer$Properties); + + /** + * Accelerometer x. + * @type {number} + */ + public x: number; + + /** + * Accelerometer y. + * @type {number} + */ + public y: number; + + /** + * Accelerometer z. + * @type {number} + */ + public z: number; + + /** + * Creates a new Accelerometer instance using the specified properties. + * @param {message.platform.darwin.DarwinSensors.Accelerometer$Properties=} [properties] Properties to set + * @returns {message.platform.darwin.DarwinSensors.Accelerometer} Accelerometer instance + */ + public static create(properties?: message.platform.darwin.DarwinSensors.Accelerometer$Properties): message.platform.darwin.DarwinSensors.Accelerometer; + + /** + * Encodes the specified Accelerometer message. Does not implicitly {@link message.platform.darwin.DarwinSensors.Accelerometer.verify|verify} messages. + * @param {message.platform.darwin.DarwinSensors.Accelerometer$Properties} message Accelerometer message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.platform.darwin.DarwinSensors.Accelerometer$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Accelerometer message, length delimited. Does not implicitly {@link message.platform.darwin.DarwinSensors.Accelerometer.verify|verify} messages. + * @param {message.platform.darwin.DarwinSensors.Accelerometer$Properties} message Accelerometer message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.platform.darwin.DarwinSensors.Accelerometer$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an Accelerometer message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.platform.darwin.DarwinSensors.Accelerometer} Accelerometer + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.platform.darwin.DarwinSensors.Accelerometer; + + /** + * Decodes an Accelerometer message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.platform.darwin.DarwinSensors.Accelerometer} Accelerometer + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.platform.darwin.DarwinSensors.Accelerometer; + + /** + * Verifies an Accelerometer message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates an Accelerometer message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.platform.darwin.DarwinSensors.Accelerometer} Accelerometer + */ + public static fromObject(object: { [k: string]: any }): message.platform.darwin.DarwinSensors.Accelerometer; + + /** + * Creates an Accelerometer message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.platform.darwin.DarwinSensors.Accelerometer.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.platform.darwin.DarwinSensors.Accelerometer} Accelerometer + */ + public static from(object: { [k: string]: any }): message.platform.darwin.DarwinSensors.Accelerometer; + + /** + * Creates a plain object from an Accelerometer message. Also converts values to other types if specified. + * @param {message.platform.darwin.DarwinSensors.Accelerometer} message Accelerometer + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.platform.darwin.DarwinSensors.Accelerometer, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this Accelerometer message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this Accelerometer to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type Gyroscope$Properties = { + x?: number; + y?: number; + z?: number; + }; + + /** + * Constructs a new Gyroscope. + * @exports message.platform.darwin.DarwinSensors.Gyroscope + * @constructor + * @param {message.platform.darwin.DarwinSensors.Gyroscope$Properties=} [properties] Properties to set + */ + class Gyroscope { + + /** + * Constructs a new Gyroscope. + * @exports message.platform.darwin.DarwinSensors.Gyroscope + * @constructor + * @param {message.platform.darwin.DarwinSensors.Gyroscope$Properties=} [properties] Properties to set + */ + constructor(properties?: message.platform.darwin.DarwinSensors.Gyroscope$Properties); + + /** + * Gyroscope x. + * @type {number} + */ + public x: number; + + /** + * Gyroscope y. + * @type {number} + */ + public y: number; + + /** + * Gyroscope z. + * @type {number} + */ + public z: number; + + /** + * Creates a new Gyroscope instance using the specified properties. + * @param {message.platform.darwin.DarwinSensors.Gyroscope$Properties=} [properties] Properties to set + * @returns {message.platform.darwin.DarwinSensors.Gyroscope} Gyroscope instance + */ + public static create(properties?: message.platform.darwin.DarwinSensors.Gyroscope$Properties): message.platform.darwin.DarwinSensors.Gyroscope; + + /** + * Encodes the specified Gyroscope message. Does not implicitly {@link message.platform.darwin.DarwinSensors.Gyroscope.verify|verify} messages. + * @param {message.platform.darwin.DarwinSensors.Gyroscope$Properties} message Gyroscope message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.platform.darwin.DarwinSensors.Gyroscope$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Gyroscope message, length delimited. Does not implicitly {@link message.platform.darwin.DarwinSensors.Gyroscope.verify|verify} messages. + * @param {message.platform.darwin.DarwinSensors.Gyroscope$Properties} message Gyroscope message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.platform.darwin.DarwinSensors.Gyroscope$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a Gyroscope message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.platform.darwin.DarwinSensors.Gyroscope} Gyroscope + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.platform.darwin.DarwinSensors.Gyroscope; + + /** + * Decodes a Gyroscope message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.platform.darwin.DarwinSensors.Gyroscope} Gyroscope + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.platform.darwin.DarwinSensors.Gyroscope; + + /** + * Verifies a Gyroscope message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a Gyroscope message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.platform.darwin.DarwinSensors.Gyroscope} Gyroscope + */ + public static fromObject(object: { [k: string]: any }): message.platform.darwin.DarwinSensors.Gyroscope; + + /** + * Creates a Gyroscope message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.platform.darwin.DarwinSensors.Gyroscope.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.platform.darwin.DarwinSensors.Gyroscope} Gyroscope + */ + public static from(object: { [k: string]: any }): message.platform.darwin.DarwinSensors.Gyroscope; + + /** + * Creates a plain object from a Gyroscope message. Also converts values to other types if specified. + * @param {message.platform.darwin.DarwinSensors.Gyroscope} message Gyroscope + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.platform.darwin.DarwinSensors.Gyroscope, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this Gyroscope message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this Gyroscope to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type FSR$Properties = { + fsr1?: number; + fsr2?: number; + fsr3?: number; + fsr4?: number; + centreX?: number; + centreY?: number; + errorFlags?: number; + }; + + /** + * Constructs a new FSR. + * @exports message.platform.darwin.DarwinSensors.FSR + * @constructor + * @param {message.platform.darwin.DarwinSensors.FSR$Properties=} [properties] Properties to set + */ + class FSR { + + /** + * Constructs a new FSR. + * @exports message.platform.darwin.DarwinSensors.FSR + * @constructor + * @param {message.platform.darwin.DarwinSensors.FSR$Properties=} [properties] Properties to set + */ + constructor(properties?: message.platform.darwin.DarwinSensors.FSR$Properties); + + /** + * FSR fsr1. + * @type {number} + */ + public fsr1: number; + + /** + * FSR fsr2. + * @type {number} + */ + public fsr2: number; + + /** + * FSR fsr3. + * @type {number} + */ + public fsr3: number; + + /** + * FSR fsr4. + * @type {number} + */ + public fsr4: number; + + /** + * FSR centreX. + * @type {number} + */ + public centreX: number; + + /** + * FSR centreY. + * @type {number} + */ + public centreY: number; + + /** + * FSR errorFlags. + * @type {number} + */ + public errorFlags: number; + + /** + * Creates a new FSR instance using the specified properties. + * @param {message.platform.darwin.DarwinSensors.FSR$Properties=} [properties] Properties to set + * @returns {message.platform.darwin.DarwinSensors.FSR} FSR instance + */ + public static create(properties?: message.platform.darwin.DarwinSensors.FSR$Properties): message.platform.darwin.DarwinSensors.FSR; + + /** + * Encodes the specified FSR message. Does not implicitly {@link message.platform.darwin.DarwinSensors.FSR.verify|verify} messages. + * @param {message.platform.darwin.DarwinSensors.FSR$Properties} message FSR message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.platform.darwin.DarwinSensors.FSR$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified FSR message, length delimited. Does not implicitly {@link message.platform.darwin.DarwinSensors.FSR.verify|verify} messages. + * @param {message.platform.darwin.DarwinSensors.FSR$Properties} message FSR message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.platform.darwin.DarwinSensors.FSR$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a FSR message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.platform.darwin.DarwinSensors.FSR} FSR + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.platform.darwin.DarwinSensors.FSR; + + /** + * Decodes a FSR message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.platform.darwin.DarwinSensors.FSR} FSR + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.platform.darwin.DarwinSensors.FSR; + + /** + * Verifies a FSR message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a FSR message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.platform.darwin.DarwinSensors.FSR} FSR + */ + public static fromObject(object: { [k: string]: any }): message.platform.darwin.DarwinSensors.FSR; + + /** + * Creates a FSR message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.platform.darwin.DarwinSensors.FSR.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.platform.darwin.DarwinSensors.FSR} FSR + */ + public static from(object: { [k: string]: any }): message.platform.darwin.DarwinSensors.FSR; + + /** + * Creates a plain object from a FSR message. Also converts values to other types if specified. + * @param {message.platform.darwin.DarwinSensors.FSR} message FSR + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.platform.darwin.DarwinSensors.FSR, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this FSR message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this FSR to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type FSRs$Properties = { + left?: message.platform.darwin.DarwinSensors.FSR$Properties; + right?: message.platform.darwin.DarwinSensors.FSR$Properties; + }; + + /** + * Constructs a new FSRs. + * @exports message.platform.darwin.DarwinSensors.FSRs + * @constructor + * @param {message.platform.darwin.DarwinSensors.FSRs$Properties=} [properties] Properties to set + */ + class FSRs { + + /** + * Constructs a new FSRs. + * @exports message.platform.darwin.DarwinSensors.FSRs + * @constructor + * @param {message.platform.darwin.DarwinSensors.FSRs$Properties=} [properties] Properties to set + */ + constructor(properties?: message.platform.darwin.DarwinSensors.FSRs$Properties); + + /** + * FSRs left. + * @type {(message.platform.darwin.DarwinSensors.FSR$Properties|null)} + */ + public left: (message.platform.darwin.DarwinSensors.FSR$Properties|null); + + /** + * FSRs right. + * @type {(message.platform.darwin.DarwinSensors.FSR$Properties|null)} + */ + public right: (message.platform.darwin.DarwinSensors.FSR$Properties|null); + + /** + * Creates a new FSRs instance using the specified properties. + * @param {message.platform.darwin.DarwinSensors.FSRs$Properties=} [properties] Properties to set + * @returns {message.platform.darwin.DarwinSensors.FSRs} FSRs instance + */ + public static create(properties?: message.platform.darwin.DarwinSensors.FSRs$Properties): message.platform.darwin.DarwinSensors.FSRs; + + /** + * Encodes the specified FSRs message. Does not implicitly {@link message.platform.darwin.DarwinSensors.FSRs.verify|verify} messages. + * @param {message.platform.darwin.DarwinSensors.FSRs$Properties} message FSRs message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.platform.darwin.DarwinSensors.FSRs$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified FSRs message, length delimited. Does not implicitly {@link message.platform.darwin.DarwinSensors.FSRs.verify|verify} messages. + * @param {message.platform.darwin.DarwinSensors.FSRs$Properties} message FSRs message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.platform.darwin.DarwinSensors.FSRs$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a FSRs message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.platform.darwin.DarwinSensors.FSRs} FSRs + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.platform.darwin.DarwinSensors.FSRs; + + /** + * Decodes a FSRs message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.platform.darwin.DarwinSensors.FSRs} FSRs + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.platform.darwin.DarwinSensors.FSRs; + + /** + * Verifies a FSRs message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a FSRs message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.platform.darwin.DarwinSensors.FSRs} FSRs + */ + public static fromObject(object: { [k: string]: any }): message.platform.darwin.DarwinSensors.FSRs; + + /** + * Creates a FSRs message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.platform.darwin.DarwinSensors.FSRs.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.platform.darwin.DarwinSensors.FSRs} FSRs + */ + public static from(object: { [k: string]: any }): message.platform.darwin.DarwinSensors.FSRs; + + /** + * Creates a plain object from a FSRs message. Also converts values to other types if specified. + * @param {message.platform.darwin.DarwinSensors.FSRs} message FSRs + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.platform.darwin.DarwinSensors.FSRs, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this FSRs message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this FSRs to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type Servo$Properties = { + errorFlags?: number; + torqueEnabled?: boolean; + pGain?: number; + iGain?: number; + dGain?: number; + goalPosition?: number; + movingSpeed?: number; + torque?: number; + presentPosition?: number; + presentSpeed?: number; + load?: number; + voltage?: number; + temperature?: number; + }; + + /** + * Constructs a new Servo. + * @exports message.platform.darwin.DarwinSensors.Servo + * @constructor + * @param {message.platform.darwin.DarwinSensors.Servo$Properties=} [properties] Properties to set + */ + class Servo { + + /** + * Constructs a new Servo. + * @exports message.platform.darwin.DarwinSensors.Servo + * @constructor + * @param {message.platform.darwin.DarwinSensors.Servo$Properties=} [properties] Properties to set + */ + constructor(properties?: message.platform.darwin.DarwinSensors.Servo$Properties); + + /** + * Servo errorFlags. + * @type {number} + */ + public errorFlags: number; + + /** + * Servo torqueEnabled. + * @type {boolean} + */ + public torqueEnabled: boolean; + + /** + * Servo pGain. + * @type {number} + */ + public pGain: number; + + /** + * Servo iGain. + * @type {number} + */ + public iGain: number; + + /** + * Servo dGain. + * @type {number} + */ + public dGain: number; + + /** + * Servo goalPosition. + * @type {number} + */ + public goalPosition: number; + + /** + * Servo movingSpeed. + * @type {number} + */ + public movingSpeed: number; + + /** + * Servo torque. + * @type {number} + */ + public torque: number; + + /** + * Servo presentPosition. + * @type {number} + */ + public presentPosition: number; + + /** + * Servo presentSpeed. + * @type {number} + */ + public presentSpeed: number; + + /** + * Servo load. + * @type {number} + */ + public load: number; + + /** + * Servo voltage. + * @type {number} + */ + public voltage: number; + + /** + * Servo temperature. + * @type {number} + */ + public temperature: number; + + /** + * Creates a new Servo instance using the specified properties. + * @param {message.platform.darwin.DarwinSensors.Servo$Properties=} [properties] Properties to set + * @returns {message.platform.darwin.DarwinSensors.Servo} Servo instance + */ + public static create(properties?: message.platform.darwin.DarwinSensors.Servo$Properties): message.platform.darwin.DarwinSensors.Servo; + + /** + * Encodes the specified Servo message. Does not implicitly {@link message.platform.darwin.DarwinSensors.Servo.verify|verify} messages. + * @param {message.platform.darwin.DarwinSensors.Servo$Properties} message Servo message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.platform.darwin.DarwinSensors.Servo$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Servo message, length delimited. Does not implicitly {@link message.platform.darwin.DarwinSensors.Servo.verify|verify} messages. + * @param {message.platform.darwin.DarwinSensors.Servo$Properties} message Servo message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.platform.darwin.DarwinSensors.Servo$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a Servo message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.platform.darwin.DarwinSensors.Servo} Servo + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.platform.darwin.DarwinSensors.Servo; + + /** + * Decodes a Servo message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.platform.darwin.DarwinSensors.Servo} Servo + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.platform.darwin.DarwinSensors.Servo; + + /** + * Verifies a Servo message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a Servo message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.platform.darwin.DarwinSensors.Servo} Servo + */ + public static fromObject(object: { [k: string]: any }): message.platform.darwin.DarwinSensors.Servo; + + /** + * Creates a Servo message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.platform.darwin.DarwinSensors.Servo.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.platform.darwin.DarwinSensors.Servo} Servo + */ + public static from(object: { [k: string]: any }): message.platform.darwin.DarwinSensors.Servo; + + /** + * Creates a plain object from a Servo message. Also converts values to other types if specified. + * @param {message.platform.darwin.DarwinSensors.Servo} message Servo + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.platform.darwin.DarwinSensors.Servo, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this Servo message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this Servo to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type Servos$Properties = { + rShoulderPitch?: message.platform.darwin.DarwinSensors.Servo$Properties; + lShoulderPitch?: message.platform.darwin.DarwinSensors.Servo$Properties; + rShoulderRoll?: message.platform.darwin.DarwinSensors.Servo$Properties; + lShoulderRoll?: message.platform.darwin.DarwinSensors.Servo$Properties; + rElbow?: message.platform.darwin.DarwinSensors.Servo$Properties; + lElbow?: message.platform.darwin.DarwinSensors.Servo$Properties; + rHipYaw?: message.platform.darwin.DarwinSensors.Servo$Properties; + lHipYaw?: message.platform.darwin.DarwinSensors.Servo$Properties; + rHipRoll?: message.platform.darwin.DarwinSensors.Servo$Properties; + lHipRoll?: message.platform.darwin.DarwinSensors.Servo$Properties; + rHipPitch?: message.platform.darwin.DarwinSensors.Servo$Properties; + lHipPitch?: message.platform.darwin.DarwinSensors.Servo$Properties; + rKnee?: message.platform.darwin.DarwinSensors.Servo$Properties; + lKnee?: message.platform.darwin.DarwinSensors.Servo$Properties; + rAnklePitch?: message.platform.darwin.DarwinSensors.Servo$Properties; + lAnklePitch?: message.platform.darwin.DarwinSensors.Servo$Properties; + rAnkleRoll?: message.platform.darwin.DarwinSensors.Servo$Properties; + lAnkleRoll?: message.platform.darwin.DarwinSensors.Servo$Properties; + headPan?: message.platform.darwin.DarwinSensors.Servo$Properties; + headTilt?: message.platform.darwin.DarwinSensors.Servo$Properties; + }; + + /** + * Constructs a new Servos. + * @exports message.platform.darwin.DarwinSensors.Servos + * @constructor + * @param {message.platform.darwin.DarwinSensors.Servos$Properties=} [properties] Properties to set + */ + class Servos { + + /** + * Constructs a new Servos. + * @exports message.platform.darwin.DarwinSensors.Servos + * @constructor + * @param {message.platform.darwin.DarwinSensors.Servos$Properties=} [properties] Properties to set + */ + constructor(properties?: message.platform.darwin.DarwinSensors.Servos$Properties); + + /** + * Servos rShoulderPitch. + * @type {(message.platform.darwin.DarwinSensors.Servo$Properties|null)} + */ + public rShoulderPitch: (message.platform.darwin.DarwinSensors.Servo$Properties|null); + + /** + * Servos lShoulderPitch. + * @type {(message.platform.darwin.DarwinSensors.Servo$Properties|null)} + */ + public lShoulderPitch: (message.platform.darwin.DarwinSensors.Servo$Properties|null); + + /** + * Servos rShoulderRoll. + * @type {(message.platform.darwin.DarwinSensors.Servo$Properties|null)} + */ + public rShoulderRoll: (message.platform.darwin.DarwinSensors.Servo$Properties|null); + + /** + * Servos lShoulderRoll. + * @type {(message.platform.darwin.DarwinSensors.Servo$Properties|null)} + */ + public lShoulderRoll: (message.platform.darwin.DarwinSensors.Servo$Properties|null); + + /** + * Servos rElbow. + * @type {(message.platform.darwin.DarwinSensors.Servo$Properties|null)} + */ + public rElbow: (message.platform.darwin.DarwinSensors.Servo$Properties|null); + + /** + * Servos lElbow. + * @type {(message.platform.darwin.DarwinSensors.Servo$Properties|null)} + */ + public lElbow: (message.platform.darwin.DarwinSensors.Servo$Properties|null); + + /** + * Servos rHipYaw. + * @type {(message.platform.darwin.DarwinSensors.Servo$Properties|null)} + */ + public rHipYaw: (message.platform.darwin.DarwinSensors.Servo$Properties|null); + + /** + * Servos lHipYaw. + * @type {(message.platform.darwin.DarwinSensors.Servo$Properties|null)} + */ + public lHipYaw: (message.platform.darwin.DarwinSensors.Servo$Properties|null); + + /** + * Servos rHipRoll. + * @type {(message.platform.darwin.DarwinSensors.Servo$Properties|null)} + */ + public rHipRoll: (message.platform.darwin.DarwinSensors.Servo$Properties|null); + + /** + * Servos lHipRoll. + * @type {(message.platform.darwin.DarwinSensors.Servo$Properties|null)} + */ + public lHipRoll: (message.platform.darwin.DarwinSensors.Servo$Properties|null); + + /** + * Servos rHipPitch. + * @type {(message.platform.darwin.DarwinSensors.Servo$Properties|null)} + */ + public rHipPitch: (message.platform.darwin.DarwinSensors.Servo$Properties|null); + + /** + * Servos lHipPitch. + * @type {(message.platform.darwin.DarwinSensors.Servo$Properties|null)} + */ + public lHipPitch: (message.platform.darwin.DarwinSensors.Servo$Properties|null); + + /** + * Servos rKnee. + * @type {(message.platform.darwin.DarwinSensors.Servo$Properties|null)} + */ + public rKnee: (message.platform.darwin.DarwinSensors.Servo$Properties|null); + + /** + * Servos lKnee. + * @type {(message.platform.darwin.DarwinSensors.Servo$Properties|null)} + */ + public lKnee: (message.platform.darwin.DarwinSensors.Servo$Properties|null); + + /** + * Servos rAnklePitch. + * @type {(message.platform.darwin.DarwinSensors.Servo$Properties|null)} + */ + public rAnklePitch: (message.platform.darwin.DarwinSensors.Servo$Properties|null); + + /** + * Servos lAnklePitch. + * @type {(message.platform.darwin.DarwinSensors.Servo$Properties|null)} + */ + public lAnklePitch: (message.platform.darwin.DarwinSensors.Servo$Properties|null); + + /** + * Servos rAnkleRoll. + * @type {(message.platform.darwin.DarwinSensors.Servo$Properties|null)} + */ + public rAnkleRoll: (message.platform.darwin.DarwinSensors.Servo$Properties|null); + + /** + * Servos lAnkleRoll. + * @type {(message.platform.darwin.DarwinSensors.Servo$Properties|null)} + */ + public lAnkleRoll: (message.platform.darwin.DarwinSensors.Servo$Properties|null); + + /** + * Servos headPan. + * @type {(message.platform.darwin.DarwinSensors.Servo$Properties|null)} + */ + public headPan: (message.platform.darwin.DarwinSensors.Servo$Properties|null); + + /** + * Servos headTilt. + * @type {(message.platform.darwin.DarwinSensors.Servo$Properties|null)} + */ + public headTilt: (message.platform.darwin.DarwinSensors.Servo$Properties|null); + + /** + * Creates a new Servos instance using the specified properties. + * @param {message.platform.darwin.DarwinSensors.Servos$Properties=} [properties] Properties to set + * @returns {message.platform.darwin.DarwinSensors.Servos} Servos instance + */ + public static create(properties?: message.platform.darwin.DarwinSensors.Servos$Properties): message.platform.darwin.DarwinSensors.Servos; + + /** + * Encodes the specified Servos message. Does not implicitly {@link message.platform.darwin.DarwinSensors.Servos.verify|verify} messages. + * @param {message.platform.darwin.DarwinSensors.Servos$Properties} message Servos message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.platform.darwin.DarwinSensors.Servos$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Servos message, length delimited. Does not implicitly {@link message.platform.darwin.DarwinSensors.Servos.verify|verify} messages. + * @param {message.platform.darwin.DarwinSensors.Servos$Properties} message Servos message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.platform.darwin.DarwinSensors.Servos$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a Servos message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.platform.darwin.DarwinSensors.Servos} Servos + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.platform.darwin.DarwinSensors.Servos; + + /** + * Decodes a Servos message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.platform.darwin.DarwinSensors.Servos} Servos + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.platform.darwin.DarwinSensors.Servos; + + /** + * Verifies a Servos message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a Servos message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.platform.darwin.DarwinSensors.Servos} Servos + */ + public static fromObject(object: { [k: string]: any }): message.platform.darwin.DarwinSensors.Servos; + + /** + * Creates a Servos message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.platform.darwin.DarwinSensors.Servos.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.platform.darwin.DarwinSensors.Servos} Servos + */ + public static from(object: { [k: string]: any }): message.platform.darwin.DarwinSensors.Servos; + + /** + * Creates a plain object from a Servos message. Also converts values to other types if specified. + * @param {message.platform.darwin.DarwinSensors.Servos} message Servos + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.platform.darwin.DarwinSensors.Servos, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this Servos message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this Servos to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + } + + type ButtonLeftDown$Properties = {}; + + /** + * Constructs a new ButtonLeftDown. + * @exports message.platform.darwin.ButtonLeftDown + * @constructor + * @param {message.platform.darwin.ButtonLeftDown$Properties=} [properties] Properties to set + */ + class ButtonLeftDown { + + /** + * Constructs a new ButtonLeftDown. + * @exports message.platform.darwin.ButtonLeftDown + * @constructor + * @param {message.platform.darwin.ButtonLeftDown$Properties=} [properties] Properties to set + */ + constructor(properties?: message.platform.darwin.ButtonLeftDown$Properties); + + /** + * Creates a new ButtonLeftDown instance using the specified properties. + * @param {message.platform.darwin.ButtonLeftDown$Properties=} [properties] Properties to set + * @returns {message.platform.darwin.ButtonLeftDown} ButtonLeftDown instance + */ + public static create(properties?: message.platform.darwin.ButtonLeftDown$Properties): message.platform.darwin.ButtonLeftDown; + + /** + * Encodes the specified ButtonLeftDown message. Does not implicitly {@link message.platform.darwin.ButtonLeftDown.verify|verify} messages. + * @param {message.platform.darwin.ButtonLeftDown$Properties} message ButtonLeftDown message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.platform.darwin.ButtonLeftDown$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified ButtonLeftDown message, length delimited. Does not implicitly {@link message.platform.darwin.ButtonLeftDown.verify|verify} messages. + * @param {message.platform.darwin.ButtonLeftDown$Properties} message ButtonLeftDown message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.platform.darwin.ButtonLeftDown$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a ButtonLeftDown message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.platform.darwin.ButtonLeftDown} ButtonLeftDown + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.platform.darwin.ButtonLeftDown; + + /** + * Decodes a ButtonLeftDown message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.platform.darwin.ButtonLeftDown} ButtonLeftDown + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.platform.darwin.ButtonLeftDown; + + /** + * Verifies a ButtonLeftDown message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a ButtonLeftDown message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.platform.darwin.ButtonLeftDown} ButtonLeftDown + */ + public static fromObject(object: { [k: string]: any }): message.platform.darwin.ButtonLeftDown; + + /** + * Creates a ButtonLeftDown message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.platform.darwin.ButtonLeftDown.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.platform.darwin.ButtonLeftDown} ButtonLeftDown + */ + public static from(object: { [k: string]: any }): message.platform.darwin.ButtonLeftDown; + + /** + * Creates a plain object from a ButtonLeftDown message. Also converts values to other types if specified. + * @param {message.platform.darwin.ButtonLeftDown} message ButtonLeftDown + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.platform.darwin.ButtonLeftDown, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this ButtonLeftDown message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this ButtonLeftDown to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type ButtonLeftUp$Properties = {}; + + /** + * Constructs a new ButtonLeftUp. + * @exports message.platform.darwin.ButtonLeftUp + * @constructor + * @param {message.platform.darwin.ButtonLeftUp$Properties=} [properties] Properties to set + */ + class ButtonLeftUp { + + /** + * Constructs a new ButtonLeftUp. + * @exports message.platform.darwin.ButtonLeftUp + * @constructor + * @param {message.platform.darwin.ButtonLeftUp$Properties=} [properties] Properties to set + */ + constructor(properties?: message.platform.darwin.ButtonLeftUp$Properties); + + /** + * Creates a new ButtonLeftUp instance using the specified properties. + * @param {message.platform.darwin.ButtonLeftUp$Properties=} [properties] Properties to set + * @returns {message.platform.darwin.ButtonLeftUp} ButtonLeftUp instance + */ + public static create(properties?: message.platform.darwin.ButtonLeftUp$Properties): message.platform.darwin.ButtonLeftUp; + + /** + * Encodes the specified ButtonLeftUp message. Does not implicitly {@link message.platform.darwin.ButtonLeftUp.verify|verify} messages. + * @param {message.platform.darwin.ButtonLeftUp$Properties} message ButtonLeftUp message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.platform.darwin.ButtonLeftUp$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified ButtonLeftUp message, length delimited. Does not implicitly {@link message.platform.darwin.ButtonLeftUp.verify|verify} messages. + * @param {message.platform.darwin.ButtonLeftUp$Properties} message ButtonLeftUp message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.platform.darwin.ButtonLeftUp$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a ButtonLeftUp message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.platform.darwin.ButtonLeftUp} ButtonLeftUp + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.platform.darwin.ButtonLeftUp; + + /** + * Decodes a ButtonLeftUp message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.platform.darwin.ButtonLeftUp} ButtonLeftUp + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.platform.darwin.ButtonLeftUp; + + /** + * Verifies a ButtonLeftUp message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a ButtonLeftUp message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.platform.darwin.ButtonLeftUp} ButtonLeftUp + */ + public static fromObject(object: { [k: string]: any }): message.platform.darwin.ButtonLeftUp; + + /** + * Creates a ButtonLeftUp message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.platform.darwin.ButtonLeftUp.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.platform.darwin.ButtonLeftUp} ButtonLeftUp + */ + public static from(object: { [k: string]: any }): message.platform.darwin.ButtonLeftUp; + + /** + * Creates a plain object from a ButtonLeftUp message. Also converts values to other types if specified. + * @param {message.platform.darwin.ButtonLeftUp} message ButtonLeftUp + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.platform.darwin.ButtonLeftUp, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this ButtonLeftUp message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this ButtonLeftUp to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type ButtonMiddleDown$Properties = {}; + + /** + * Constructs a new ButtonMiddleDown. + * @exports message.platform.darwin.ButtonMiddleDown + * @constructor + * @param {message.platform.darwin.ButtonMiddleDown$Properties=} [properties] Properties to set + */ + class ButtonMiddleDown { + + /** + * Constructs a new ButtonMiddleDown. + * @exports message.platform.darwin.ButtonMiddleDown + * @constructor + * @param {message.platform.darwin.ButtonMiddleDown$Properties=} [properties] Properties to set + */ + constructor(properties?: message.platform.darwin.ButtonMiddleDown$Properties); + + /** + * Creates a new ButtonMiddleDown instance using the specified properties. + * @param {message.platform.darwin.ButtonMiddleDown$Properties=} [properties] Properties to set + * @returns {message.platform.darwin.ButtonMiddleDown} ButtonMiddleDown instance + */ + public static create(properties?: message.platform.darwin.ButtonMiddleDown$Properties): message.platform.darwin.ButtonMiddleDown; + + /** + * Encodes the specified ButtonMiddleDown message. Does not implicitly {@link message.platform.darwin.ButtonMiddleDown.verify|verify} messages. + * @param {message.platform.darwin.ButtonMiddleDown$Properties} message ButtonMiddleDown message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.platform.darwin.ButtonMiddleDown$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified ButtonMiddleDown message, length delimited. Does not implicitly {@link message.platform.darwin.ButtonMiddleDown.verify|verify} messages. + * @param {message.platform.darwin.ButtonMiddleDown$Properties} message ButtonMiddleDown message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.platform.darwin.ButtonMiddleDown$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a ButtonMiddleDown message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.platform.darwin.ButtonMiddleDown} ButtonMiddleDown + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.platform.darwin.ButtonMiddleDown; + + /** + * Decodes a ButtonMiddleDown message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.platform.darwin.ButtonMiddleDown} ButtonMiddleDown + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.platform.darwin.ButtonMiddleDown; + + /** + * Verifies a ButtonMiddleDown message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a ButtonMiddleDown message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.platform.darwin.ButtonMiddleDown} ButtonMiddleDown + */ + public static fromObject(object: { [k: string]: any }): message.platform.darwin.ButtonMiddleDown; + + /** + * Creates a ButtonMiddleDown message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.platform.darwin.ButtonMiddleDown.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.platform.darwin.ButtonMiddleDown} ButtonMiddleDown + */ + public static from(object: { [k: string]: any }): message.platform.darwin.ButtonMiddleDown; + + /** + * Creates a plain object from a ButtonMiddleDown message. Also converts values to other types if specified. + * @param {message.platform.darwin.ButtonMiddleDown} message ButtonMiddleDown + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.platform.darwin.ButtonMiddleDown, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this ButtonMiddleDown message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this ButtonMiddleDown to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type ButtonMiddleUp$Properties = {}; + + /** + * Constructs a new ButtonMiddleUp. + * @exports message.platform.darwin.ButtonMiddleUp + * @constructor + * @param {message.platform.darwin.ButtonMiddleUp$Properties=} [properties] Properties to set + */ + class ButtonMiddleUp { + + /** + * Constructs a new ButtonMiddleUp. + * @exports message.platform.darwin.ButtonMiddleUp + * @constructor + * @param {message.platform.darwin.ButtonMiddleUp$Properties=} [properties] Properties to set + */ + constructor(properties?: message.platform.darwin.ButtonMiddleUp$Properties); + + /** + * Creates a new ButtonMiddleUp instance using the specified properties. + * @param {message.platform.darwin.ButtonMiddleUp$Properties=} [properties] Properties to set + * @returns {message.platform.darwin.ButtonMiddleUp} ButtonMiddleUp instance + */ + public static create(properties?: message.platform.darwin.ButtonMiddleUp$Properties): message.platform.darwin.ButtonMiddleUp; + + /** + * Encodes the specified ButtonMiddleUp message. Does not implicitly {@link message.platform.darwin.ButtonMiddleUp.verify|verify} messages. + * @param {message.platform.darwin.ButtonMiddleUp$Properties} message ButtonMiddleUp message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.platform.darwin.ButtonMiddleUp$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified ButtonMiddleUp message, length delimited. Does not implicitly {@link message.platform.darwin.ButtonMiddleUp.verify|verify} messages. + * @param {message.platform.darwin.ButtonMiddleUp$Properties} message ButtonMiddleUp message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.platform.darwin.ButtonMiddleUp$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a ButtonMiddleUp message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.platform.darwin.ButtonMiddleUp} ButtonMiddleUp + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.platform.darwin.ButtonMiddleUp; + + /** + * Decodes a ButtonMiddleUp message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.platform.darwin.ButtonMiddleUp} ButtonMiddleUp + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.platform.darwin.ButtonMiddleUp; + + /** + * Verifies a ButtonMiddleUp message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a ButtonMiddleUp message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.platform.darwin.ButtonMiddleUp} ButtonMiddleUp + */ + public static fromObject(object: { [k: string]: any }): message.platform.darwin.ButtonMiddleUp; + + /** + * Creates a ButtonMiddleUp message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.platform.darwin.ButtonMiddleUp.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.platform.darwin.ButtonMiddleUp} ButtonMiddleUp + */ + public static from(object: { [k: string]: any }): message.platform.darwin.ButtonMiddleUp; + + /** + * Creates a plain object from a ButtonMiddleUp message. Also converts values to other types if specified. + * @param {message.platform.darwin.ButtonMiddleUp} message ButtonMiddleUp + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.platform.darwin.ButtonMiddleUp, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this ButtonMiddleUp message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this ButtonMiddleUp to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + } + } + + /** + * Namespace research. + * @exports message.research + * @namespace + */ + namespace research { + + type AutoClassifierPixels$Properties = { + pixels?: number[]; + classification?: number; + }; + + /** + * Constructs a new AutoClassifierPixels. + * @exports message.research.AutoClassifierPixels + * @constructor + * @param {message.research.AutoClassifierPixels$Properties=} [properties] Properties to set + */ + class AutoClassifierPixels { + + /** + * Constructs a new AutoClassifierPixels. + * @exports message.research.AutoClassifierPixels + * @constructor + * @param {message.research.AutoClassifierPixels$Properties=} [properties] Properties to set + */ + constructor(properties?: message.research.AutoClassifierPixels$Properties); + + /** + * AutoClassifierPixels pixels. + * @type {Array.} + */ + public pixels: number[]; + + /** + * AutoClassifierPixels classification. + * @type {number} + */ + public classification: number; + + /** + * Creates a new AutoClassifierPixels instance using the specified properties. + * @param {message.research.AutoClassifierPixels$Properties=} [properties] Properties to set + * @returns {message.research.AutoClassifierPixels} AutoClassifierPixels instance + */ + public static create(properties?: message.research.AutoClassifierPixels$Properties): message.research.AutoClassifierPixels; + + /** + * Encodes the specified AutoClassifierPixels message. Does not implicitly {@link message.research.AutoClassifierPixels.verify|verify} messages. + * @param {message.research.AutoClassifierPixels$Properties} message AutoClassifierPixels message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.research.AutoClassifierPixels$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified AutoClassifierPixels message, length delimited. Does not implicitly {@link message.research.AutoClassifierPixels.verify|verify} messages. + * @param {message.research.AutoClassifierPixels$Properties} message AutoClassifierPixels message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.research.AutoClassifierPixels$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an AutoClassifierPixels message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.research.AutoClassifierPixels} AutoClassifierPixels + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.research.AutoClassifierPixels; + + /** + * Decodes an AutoClassifierPixels message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.research.AutoClassifierPixels} AutoClassifierPixels + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.research.AutoClassifierPixels; + + /** + * Verifies an AutoClassifierPixels message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates an AutoClassifierPixels message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.research.AutoClassifierPixels} AutoClassifierPixels + */ + public static fromObject(object: { [k: string]: any }): message.research.AutoClassifierPixels; + + /** + * Creates an AutoClassifierPixels message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.research.AutoClassifierPixels.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.research.AutoClassifierPixels} AutoClassifierPixels + */ + public static from(object: { [k: string]: any }): message.research.AutoClassifierPixels; + + /** + * Creates a plain object from an AutoClassifierPixels message. Also converts values to other types if specified. + * @param {message.research.AutoClassifierPixels} message AutoClassifierPixels + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.research.AutoClassifierPixels, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this AutoClassifierPixels message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this AutoClassifierPixels to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** + * Namespace scriptoptimizer. + * @exports message.research.scriptoptimizer + * @namespace + */ + namespace scriptoptimizer { + + type OptimizeScript$Properties = { + target?: string; + iteration?: number; + metadata?: string; + frames?: message.research.scriptoptimizer.OptimizeScript.Frame$Properties[]; + }; + + /** + * Constructs a new OptimizeScript. + * @exports message.research.scriptoptimizer.OptimizeScript + * @constructor + * @param {message.research.scriptoptimizer.OptimizeScript$Properties=} [properties] Properties to set + */ + class OptimizeScript { + + /** + * Constructs a new OptimizeScript. + * @exports message.research.scriptoptimizer.OptimizeScript + * @constructor + * @param {message.research.scriptoptimizer.OptimizeScript$Properties=} [properties] Properties to set + */ + constructor(properties?: message.research.scriptoptimizer.OptimizeScript$Properties); + + /** + * OptimizeScript target. + * @type {string} + */ + public target: string; + + /** + * OptimizeScript iteration. + * @type {number} + */ + public iteration: number; + + /** + * OptimizeScript metadata. + * @type {string} + */ + public metadata: string; + + /** + * OptimizeScript frames. + * @type {Array.} + */ + public frames: message.research.scriptoptimizer.OptimizeScript.Frame$Properties[]; + + /** + * Creates a new OptimizeScript instance using the specified properties. + * @param {message.research.scriptoptimizer.OptimizeScript$Properties=} [properties] Properties to set + * @returns {message.research.scriptoptimizer.OptimizeScript} OptimizeScript instance + */ + public static create(properties?: message.research.scriptoptimizer.OptimizeScript$Properties): message.research.scriptoptimizer.OptimizeScript; + + /** + * Encodes the specified OptimizeScript message. Does not implicitly {@link message.research.scriptoptimizer.OptimizeScript.verify|verify} messages. + * @param {message.research.scriptoptimizer.OptimizeScript$Properties} message OptimizeScript message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.research.scriptoptimizer.OptimizeScript$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified OptimizeScript message, length delimited. Does not implicitly {@link message.research.scriptoptimizer.OptimizeScript.verify|verify} messages. + * @param {message.research.scriptoptimizer.OptimizeScript$Properties} message OptimizeScript message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.research.scriptoptimizer.OptimizeScript$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an OptimizeScript message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.research.scriptoptimizer.OptimizeScript} OptimizeScript + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.research.scriptoptimizer.OptimizeScript; + + /** + * Decodes an OptimizeScript message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.research.scriptoptimizer.OptimizeScript} OptimizeScript + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.research.scriptoptimizer.OptimizeScript; + + /** + * Verifies an OptimizeScript message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates an OptimizeScript message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.research.scriptoptimizer.OptimizeScript} OptimizeScript + */ + public static fromObject(object: { [k: string]: any }): message.research.scriptoptimizer.OptimizeScript; + + /** + * Creates an OptimizeScript message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.research.scriptoptimizer.OptimizeScript.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.research.scriptoptimizer.OptimizeScript} OptimizeScript + */ + public static from(object: { [k: string]: any }): message.research.scriptoptimizer.OptimizeScript; + + /** + * Creates a plain object from an OptimizeScript message. Also converts values to other types if specified. + * @param {message.research.scriptoptimizer.OptimizeScript} message OptimizeScript + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.research.scriptoptimizer.OptimizeScript, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this OptimizeScript message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this OptimizeScript to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + namespace OptimizeScript { + + type Target$Properties = { + id?: number; + position?: number; + gain?: number; + }; + + /** + * Constructs a new Target. + * @exports message.research.scriptoptimizer.OptimizeScript.Target + * @constructor + * @param {message.research.scriptoptimizer.OptimizeScript.Target$Properties=} [properties] Properties to set + */ + class Target { + + /** + * Constructs a new Target. + * @exports message.research.scriptoptimizer.OptimizeScript.Target + * @constructor + * @param {message.research.scriptoptimizer.OptimizeScript.Target$Properties=} [properties] Properties to set + */ + constructor(properties?: message.research.scriptoptimizer.OptimizeScript.Target$Properties); + + /** + * Target id. + * @type {number} + */ + public id: number; + + /** + * Target position. + * @type {number} + */ + public position: number; + + /** + * Target gain. + * @type {number} + */ + public gain: number; + + /** + * Creates a new Target instance using the specified properties. + * @param {message.research.scriptoptimizer.OptimizeScript.Target$Properties=} [properties] Properties to set + * @returns {message.research.scriptoptimizer.OptimizeScript.Target} Target instance + */ + public static create(properties?: message.research.scriptoptimizer.OptimizeScript.Target$Properties): message.research.scriptoptimizer.OptimizeScript.Target; + + /** + * Encodes the specified Target message. Does not implicitly {@link message.research.scriptoptimizer.OptimizeScript.Target.verify|verify} messages. + * @param {message.research.scriptoptimizer.OptimizeScript.Target$Properties} message Target message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.research.scriptoptimizer.OptimizeScript.Target$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Target message, length delimited. Does not implicitly {@link message.research.scriptoptimizer.OptimizeScript.Target.verify|verify} messages. + * @param {message.research.scriptoptimizer.OptimizeScript.Target$Properties} message Target message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.research.scriptoptimizer.OptimizeScript.Target$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a Target message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.research.scriptoptimizer.OptimizeScript.Target} Target + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.research.scriptoptimizer.OptimizeScript.Target; + + /** + * Decodes a Target message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.research.scriptoptimizer.OptimizeScript.Target} Target + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.research.scriptoptimizer.OptimizeScript.Target; + + /** + * Verifies a Target message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a Target message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.research.scriptoptimizer.OptimizeScript.Target} Target + */ + public static fromObject(object: { [k: string]: any }): message.research.scriptoptimizer.OptimizeScript.Target; + + /** + * Creates a Target message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.research.scriptoptimizer.OptimizeScript.Target.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.research.scriptoptimizer.OptimizeScript.Target} Target + */ + public static from(object: { [k: string]: any }): message.research.scriptoptimizer.OptimizeScript.Target; + + /** + * Creates a plain object from a Target message. Also converts values to other types if specified. + * @param {message.research.scriptoptimizer.OptimizeScript.Target} message Target + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.research.scriptoptimizer.OptimizeScript.Target, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this Target message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this Target to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type Frame$Properties = { + duration?: number; + targets?: message.research.scriptoptimizer.OptimizeScript.Target$Properties[]; + }; + + /** + * Constructs a new Frame. + * @exports message.research.scriptoptimizer.OptimizeScript.Frame + * @constructor + * @param {message.research.scriptoptimizer.OptimizeScript.Frame$Properties=} [properties] Properties to set + */ + class Frame { + + /** + * Constructs a new Frame. + * @exports message.research.scriptoptimizer.OptimizeScript.Frame + * @constructor + * @param {message.research.scriptoptimizer.OptimizeScript.Frame$Properties=} [properties] Properties to set + */ + constructor(properties?: message.research.scriptoptimizer.OptimizeScript.Frame$Properties); + + /** + * Frame duration. + * @type {number} + */ + public duration: number; + + /** + * Frame targets. + * @type {Array.} + */ + public targets: message.research.scriptoptimizer.OptimizeScript.Target$Properties[]; + + /** + * Creates a new Frame instance using the specified properties. + * @param {message.research.scriptoptimizer.OptimizeScript.Frame$Properties=} [properties] Properties to set + * @returns {message.research.scriptoptimizer.OptimizeScript.Frame} Frame instance + */ + public static create(properties?: message.research.scriptoptimizer.OptimizeScript.Frame$Properties): message.research.scriptoptimizer.OptimizeScript.Frame; + + /** + * Encodes the specified Frame message. Does not implicitly {@link message.research.scriptoptimizer.OptimizeScript.Frame.verify|verify} messages. + * @param {message.research.scriptoptimizer.OptimizeScript.Frame$Properties} message Frame message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.research.scriptoptimizer.OptimizeScript.Frame$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Frame message, length delimited. Does not implicitly {@link message.research.scriptoptimizer.OptimizeScript.Frame.verify|verify} messages. + * @param {message.research.scriptoptimizer.OptimizeScript.Frame$Properties} message Frame message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.research.scriptoptimizer.OptimizeScript.Frame$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a Frame message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.research.scriptoptimizer.OptimizeScript.Frame} Frame + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.research.scriptoptimizer.OptimizeScript.Frame; + + /** + * Decodes a Frame message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.research.scriptoptimizer.OptimizeScript.Frame} Frame + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.research.scriptoptimizer.OptimizeScript.Frame; + + /** + * Verifies a Frame message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a Frame message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.research.scriptoptimizer.OptimizeScript.Frame} Frame + */ + public static fromObject(object: { [k: string]: any }): message.research.scriptoptimizer.OptimizeScript.Frame; + + /** + * Creates a Frame message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.research.scriptoptimizer.OptimizeScript.Frame.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.research.scriptoptimizer.OptimizeScript.Frame} Frame + */ + public static from(object: { [k: string]: any }): message.research.scriptoptimizer.OptimizeScript.Frame; + + /** + * Creates a plain object from a Frame message. Also converts values to other types if specified. + * @param {message.research.scriptoptimizer.OptimizeScript.Frame} message Frame + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.research.scriptoptimizer.OptimizeScript.Frame, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this Frame message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this Frame to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + } + + type OptimizeScriptResult$Properties = { + iteration?: number; + metadata?: string; + sensors?: message.input.Sensors$Properties[]; + }; + + /** + * Constructs a new OptimizeScriptResult. + * @exports message.research.scriptoptimizer.OptimizeScriptResult + * @constructor + * @param {message.research.scriptoptimizer.OptimizeScriptResult$Properties=} [properties] Properties to set + */ + class OptimizeScriptResult { + + /** + * Constructs a new OptimizeScriptResult. + * @exports message.research.scriptoptimizer.OptimizeScriptResult + * @constructor + * @param {message.research.scriptoptimizer.OptimizeScriptResult$Properties=} [properties] Properties to set + */ + constructor(properties?: message.research.scriptoptimizer.OptimizeScriptResult$Properties); + + /** + * OptimizeScriptResult iteration. + * @type {number} + */ + public iteration: number; + + /** + * OptimizeScriptResult metadata. + * @type {string} + */ + public metadata: string; + + /** + * OptimizeScriptResult sensors. + * @type {Array.} + */ + public sensors: message.input.Sensors$Properties[]; + + /** + * Creates a new OptimizeScriptResult instance using the specified properties. + * @param {message.research.scriptoptimizer.OptimizeScriptResult$Properties=} [properties] Properties to set + * @returns {message.research.scriptoptimizer.OptimizeScriptResult} OptimizeScriptResult instance + */ + public static create(properties?: message.research.scriptoptimizer.OptimizeScriptResult$Properties): message.research.scriptoptimizer.OptimizeScriptResult; + + /** + * Encodes the specified OptimizeScriptResult message. Does not implicitly {@link message.research.scriptoptimizer.OptimizeScriptResult.verify|verify} messages. + * @param {message.research.scriptoptimizer.OptimizeScriptResult$Properties} message OptimizeScriptResult message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.research.scriptoptimizer.OptimizeScriptResult$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified OptimizeScriptResult message, length delimited. Does not implicitly {@link message.research.scriptoptimizer.OptimizeScriptResult.verify|verify} messages. + * @param {message.research.scriptoptimizer.OptimizeScriptResult$Properties} message OptimizeScriptResult message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.research.scriptoptimizer.OptimizeScriptResult$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an OptimizeScriptResult message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.research.scriptoptimizer.OptimizeScriptResult} OptimizeScriptResult + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.research.scriptoptimizer.OptimizeScriptResult; + + /** + * Decodes an OptimizeScriptResult message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.research.scriptoptimizer.OptimizeScriptResult} OptimizeScriptResult + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.research.scriptoptimizer.OptimizeScriptResult; + + /** + * Verifies an OptimizeScriptResult message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates an OptimizeScriptResult message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.research.scriptoptimizer.OptimizeScriptResult} OptimizeScriptResult + */ + public static fromObject(object: { [k: string]: any }): message.research.scriptoptimizer.OptimizeScriptResult; + + /** + * Creates an OptimizeScriptResult message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.research.scriptoptimizer.OptimizeScriptResult.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.research.scriptoptimizer.OptimizeScriptResult} OptimizeScriptResult + */ + public static from(object: { [k: string]: any }): message.research.scriptoptimizer.OptimizeScriptResult; + + /** + * Creates a plain object from an OptimizeScriptResult message. Also converts values to other types if specified. + * @param {message.research.scriptoptimizer.OptimizeScriptResult} message OptimizeScriptResult + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.research.scriptoptimizer.OptimizeScriptResult, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this OptimizeScriptResult message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this OptimizeScriptResult to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + } + } + + /** + * Namespace support. + * @exports message.support + * @namespace + */ + namespace support { + + type FieldDescription$Properties = { + ballRadius?: number; + goalpostTopHeight?: number; + penaltyRobotStart?: number; + goalpostOwnL?: vec2$Properties; + goalpostOwnR?: vec2$Properties; + goalpostOppL?: vec2$Properties; + goalpostOppR?: vec2$Properties; + dimensions?: message.support.FieldDescription.FieldDimensions$Properties; + }; + + /** + * Constructs a new FieldDescription. + * @exports message.support.FieldDescription + * @constructor + * @param {message.support.FieldDescription$Properties=} [properties] Properties to set + */ + class FieldDescription { + + /** + * Constructs a new FieldDescription. + * @exports message.support.FieldDescription + * @constructor + * @param {message.support.FieldDescription$Properties=} [properties] Properties to set + */ + constructor(properties?: message.support.FieldDescription$Properties); + + /** + * FieldDescription ballRadius. + * @type {number} + */ + public ballRadius: number; + + /** + * FieldDescription goalpostTopHeight. + * @type {number} + */ + public goalpostTopHeight: number; + + /** + * FieldDescription penaltyRobotStart. + * @type {number} + */ + public penaltyRobotStart: number; + + /** + * FieldDescription goalpostOwnL. + * @type {(vec2$Properties|null)} + */ + public goalpostOwnL: (vec2$Properties|null); + + /** + * FieldDescription goalpostOwnR. + * @type {(vec2$Properties|null)} + */ + public goalpostOwnR: (vec2$Properties|null); + + /** + * FieldDescription goalpostOppL. + * @type {(vec2$Properties|null)} + */ + public goalpostOppL: (vec2$Properties|null); + + /** + * FieldDescription goalpostOppR. + * @type {(vec2$Properties|null)} + */ + public goalpostOppR: (vec2$Properties|null); + + /** + * FieldDescription dimensions. + * @type {(message.support.FieldDescription.FieldDimensions$Properties|null)} + */ + public dimensions: (message.support.FieldDescription.FieldDimensions$Properties|null); + + /** + * Creates a new FieldDescription instance using the specified properties. + * @param {message.support.FieldDescription$Properties=} [properties] Properties to set + * @returns {message.support.FieldDescription} FieldDescription instance + */ + public static create(properties?: message.support.FieldDescription$Properties): message.support.FieldDescription; + + /** + * Encodes the specified FieldDescription message. Does not implicitly {@link message.support.FieldDescription.verify|verify} messages. + * @param {message.support.FieldDescription$Properties} message FieldDescription message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.support.FieldDescription$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified FieldDescription message, length delimited. Does not implicitly {@link message.support.FieldDescription.verify|verify} messages. + * @param {message.support.FieldDescription$Properties} message FieldDescription message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.support.FieldDescription$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a FieldDescription message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.support.FieldDescription} FieldDescription + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.support.FieldDescription; + + /** + * Decodes a FieldDescription message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.support.FieldDescription} FieldDescription + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.support.FieldDescription; + + /** + * Verifies a FieldDescription message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a FieldDescription message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.support.FieldDescription} FieldDescription + */ + public static fromObject(object: { [k: string]: any }): message.support.FieldDescription; + + /** + * Creates a FieldDescription message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.support.FieldDescription.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.support.FieldDescription} FieldDescription + */ + public static from(object: { [k: string]: any }): message.support.FieldDescription; + + /** + * Creates a plain object from a FieldDescription message. Also converts values to other types if specified. + * @param {message.support.FieldDescription} message FieldDescription + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.support.FieldDescription, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this FieldDescription message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this FieldDescription to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + namespace FieldDescription { + + type FieldDimensions$Properties = { + lineWidth?: number; + markWidth?: number; + fieldLength?: number; + fieldWidth?: number; + goalDepth?: number; + goalWidth?: number; + goalAreaLength?: number; + goalAreaWidth?: number; + goalCrossbarHeight?: number; + goalpostDiameter?: number; + goalCrossbarDiameter?: number; + goalNetHeight?: number; + penaltyMarkDistance?: number; + centerCircleDiameter?: number; + borderStripMinWidth?: number; + }; + + /** + * Constructs a new FieldDimensions. + * @exports message.support.FieldDescription.FieldDimensions + * @constructor + * @param {message.support.FieldDescription.FieldDimensions$Properties=} [properties] Properties to set + */ + class FieldDimensions { + + /** + * Constructs a new FieldDimensions. + * @exports message.support.FieldDescription.FieldDimensions + * @constructor + * @param {message.support.FieldDescription.FieldDimensions$Properties=} [properties] Properties to set + */ + constructor(properties?: message.support.FieldDescription.FieldDimensions$Properties); + + /** + * FieldDimensions lineWidth. + * @type {number} + */ + public lineWidth: number; + + /** + * FieldDimensions markWidth. + * @type {number} + */ + public markWidth: number; + + /** + * FieldDimensions fieldLength. + * @type {number} + */ + public fieldLength: number; + + /** + * FieldDimensions fieldWidth. + * @type {number} + */ + public fieldWidth: number; + + /** + * FieldDimensions goalDepth. + * @type {number} + */ + public goalDepth: number; + + /** + * FieldDimensions goalWidth. + * @type {number} + */ + public goalWidth: number; + + /** + * FieldDimensions goalAreaLength. + * @type {number} + */ + public goalAreaLength: number; + + /** + * FieldDimensions goalAreaWidth. + * @type {number} + */ + public goalAreaWidth: number; + + /** + * FieldDimensions goalCrossbarHeight. + * @type {number} + */ + public goalCrossbarHeight: number; + + /** + * FieldDimensions goalpostDiameter. + * @type {number} + */ + public goalpostDiameter: number; + + /** + * FieldDimensions goalCrossbarDiameter. + * @type {number} + */ + public goalCrossbarDiameter: number; + + /** + * FieldDimensions goalNetHeight. + * @type {number} + */ + public goalNetHeight: number; + + /** + * FieldDimensions penaltyMarkDistance. + * @type {number} + */ + public penaltyMarkDistance: number; + + /** + * FieldDimensions centerCircleDiameter. + * @type {number} + */ + public centerCircleDiameter: number; + + /** + * FieldDimensions borderStripMinWidth. + * @type {number} + */ + public borderStripMinWidth: number; + + /** + * Creates a new FieldDimensions instance using the specified properties. + * @param {message.support.FieldDescription.FieldDimensions$Properties=} [properties] Properties to set + * @returns {message.support.FieldDescription.FieldDimensions} FieldDimensions instance + */ + public static create(properties?: message.support.FieldDescription.FieldDimensions$Properties): message.support.FieldDescription.FieldDimensions; + + /** + * Encodes the specified FieldDimensions message. Does not implicitly {@link message.support.FieldDescription.FieldDimensions.verify|verify} messages. + * @param {message.support.FieldDescription.FieldDimensions$Properties} message FieldDimensions message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.support.FieldDescription.FieldDimensions$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified FieldDimensions message, length delimited. Does not implicitly {@link message.support.FieldDescription.FieldDimensions.verify|verify} messages. + * @param {message.support.FieldDescription.FieldDimensions$Properties} message FieldDimensions message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.support.FieldDescription.FieldDimensions$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a FieldDimensions message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.support.FieldDescription.FieldDimensions} FieldDimensions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.support.FieldDescription.FieldDimensions; + + /** + * Decodes a FieldDimensions message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.support.FieldDescription.FieldDimensions} FieldDimensions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.support.FieldDescription.FieldDimensions; + + /** + * Verifies a FieldDimensions message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a FieldDimensions message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.support.FieldDescription.FieldDimensions} FieldDimensions + */ + public static fromObject(object: { [k: string]: any }): message.support.FieldDescription.FieldDimensions; + + /** + * Creates a FieldDimensions message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.support.FieldDescription.FieldDimensions.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.support.FieldDescription.FieldDimensions} FieldDimensions + */ + public static from(object: { [k: string]: any }): message.support.FieldDescription.FieldDimensions; + + /** + * Creates a plain object from a FieldDimensions message. Also converts values to other types if specified. + * @param {message.support.FieldDescription.FieldDimensions} message FieldDimensions + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.support.FieldDescription.FieldDimensions, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this FieldDimensions message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this FieldDimensions to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + } + + type GlobalConfig$Properties = { + playerId?: number; + teamId?: number; + }; + + /** + * Constructs a new GlobalConfig. + * @exports message.support.GlobalConfig + * @constructor + * @param {message.support.GlobalConfig$Properties=} [properties] Properties to set + */ + class GlobalConfig { + + /** + * Constructs a new GlobalConfig. + * @exports message.support.GlobalConfig + * @constructor + * @param {message.support.GlobalConfig$Properties=} [properties] Properties to set + */ + constructor(properties?: message.support.GlobalConfig$Properties); + + /** + * GlobalConfig playerId. + * @type {number} + */ + public playerId: number; + + /** + * GlobalConfig teamId. + * @type {number} + */ + public teamId: number; + + /** + * Creates a new GlobalConfig instance using the specified properties. + * @param {message.support.GlobalConfig$Properties=} [properties] Properties to set + * @returns {message.support.GlobalConfig} GlobalConfig instance + */ + public static create(properties?: message.support.GlobalConfig$Properties): message.support.GlobalConfig; + + /** + * Encodes the specified GlobalConfig message. Does not implicitly {@link message.support.GlobalConfig.verify|verify} messages. + * @param {message.support.GlobalConfig$Properties} message GlobalConfig message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.support.GlobalConfig$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified GlobalConfig message, length delimited. Does not implicitly {@link message.support.GlobalConfig.verify|verify} messages. + * @param {message.support.GlobalConfig$Properties} message GlobalConfig message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.support.GlobalConfig$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a GlobalConfig message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.support.GlobalConfig} GlobalConfig + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.support.GlobalConfig; + + /** + * Decodes a GlobalConfig message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.support.GlobalConfig} GlobalConfig + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.support.GlobalConfig; + + /** + * Verifies a GlobalConfig message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a GlobalConfig message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.support.GlobalConfig} GlobalConfig + */ + public static fromObject(object: { [k: string]: any }): message.support.GlobalConfig; + + /** + * Creates a GlobalConfig message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.support.GlobalConfig.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.support.GlobalConfig} GlobalConfig + */ + public static from(object: { [k: string]: any }): message.support.GlobalConfig; + + /** + * Creates a plain object from a GlobalConfig message. Also converts values to other types if specified. + * @param {message.support.GlobalConfig} message GlobalConfig + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.support.GlobalConfig, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this GlobalConfig message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this GlobalConfig to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type SaveConfiguration$Properties = { + path?: string; + config?: string; + }; + + /** + * Constructs a new SaveConfiguration. + * @exports message.support.SaveConfiguration + * @constructor + * @param {message.support.SaveConfiguration$Properties=} [properties] Properties to set + */ + class SaveConfiguration { + + /** + * Constructs a new SaveConfiguration. + * @exports message.support.SaveConfiguration + * @constructor + * @param {message.support.SaveConfiguration$Properties=} [properties] Properties to set + */ + constructor(properties?: message.support.SaveConfiguration$Properties); + + /** + * SaveConfiguration path. + * @type {string} + */ + public path: string; + + /** + * SaveConfiguration config. + * @type {string} + */ + public config: string; + + /** + * Creates a new SaveConfiguration instance using the specified properties. + * @param {message.support.SaveConfiguration$Properties=} [properties] Properties to set + * @returns {message.support.SaveConfiguration} SaveConfiguration instance + */ + public static create(properties?: message.support.SaveConfiguration$Properties): message.support.SaveConfiguration; + + /** + * Encodes the specified SaveConfiguration message. Does not implicitly {@link message.support.SaveConfiguration.verify|verify} messages. + * @param {message.support.SaveConfiguration$Properties} message SaveConfiguration message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.support.SaveConfiguration$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified SaveConfiguration message, length delimited. Does not implicitly {@link message.support.SaveConfiguration.verify|verify} messages. + * @param {message.support.SaveConfiguration$Properties} message SaveConfiguration message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.support.SaveConfiguration$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a SaveConfiguration message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.support.SaveConfiguration} SaveConfiguration + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.support.SaveConfiguration; + + /** + * Decodes a SaveConfiguration message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.support.SaveConfiguration} SaveConfiguration + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.support.SaveConfiguration; + + /** + * Verifies a SaveConfiguration message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a SaveConfiguration message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.support.SaveConfiguration} SaveConfiguration + */ + public static fromObject(object: { [k: string]: any }): message.support.SaveConfiguration; + + /** + * Creates a SaveConfiguration message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.support.SaveConfiguration.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.support.SaveConfiguration} SaveConfiguration + */ + public static from(object: { [k: string]: any }): message.support.SaveConfiguration; + + /** + * Creates a plain object from a SaveConfiguration message. Also converts values to other types if specified. + * @param {message.support.SaveConfiguration} message SaveConfiguration + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.support.SaveConfiguration, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this SaveConfiguration message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this SaveConfiguration to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type ServoHealthTestData$Properties = { + state?: message.support.ServoHealthTestData.State; + sensors?: message.platform.darwin.DarwinSensors$Properties; + }; + + /** + * Constructs a new ServoHealthTestData. + * @exports message.support.ServoHealthTestData + * @constructor + * @param {message.support.ServoHealthTestData$Properties=} [properties] Properties to set + */ + class ServoHealthTestData { + + /** + * Constructs a new ServoHealthTestData. + * @exports message.support.ServoHealthTestData + * @constructor + * @param {message.support.ServoHealthTestData$Properties=} [properties] Properties to set + */ + constructor(properties?: message.support.ServoHealthTestData$Properties); + + /** + * ServoHealthTestData state. + * @type {message.support.ServoHealthTestData.State} + */ + public state: message.support.ServoHealthTestData.State; + + /** + * ServoHealthTestData sensors. + * @type {(message.platform.darwin.DarwinSensors$Properties|null)} + */ + public sensors: (message.platform.darwin.DarwinSensors$Properties|null); + + /** + * Creates a new ServoHealthTestData instance using the specified properties. + * @param {message.support.ServoHealthTestData$Properties=} [properties] Properties to set + * @returns {message.support.ServoHealthTestData} ServoHealthTestData instance + */ + public static create(properties?: message.support.ServoHealthTestData$Properties): message.support.ServoHealthTestData; + + /** + * Encodes the specified ServoHealthTestData message. Does not implicitly {@link message.support.ServoHealthTestData.verify|verify} messages. + * @param {message.support.ServoHealthTestData$Properties} message ServoHealthTestData message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.support.ServoHealthTestData$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified ServoHealthTestData message, length delimited. Does not implicitly {@link message.support.ServoHealthTestData.verify|verify} messages. + * @param {message.support.ServoHealthTestData$Properties} message ServoHealthTestData message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.support.ServoHealthTestData$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a ServoHealthTestData message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.support.ServoHealthTestData} ServoHealthTestData + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.support.ServoHealthTestData; + + /** + * Decodes a ServoHealthTestData message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.support.ServoHealthTestData} ServoHealthTestData + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.support.ServoHealthTestData; + + /** + * Verifies a ServoHealthTestData message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a ServoHealthTestData message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.support.ServoHealthTestData} ServoHealthTestData + */ + public static fromObject(object: { [k: string]: any }): message.support.ServoHealthTestData; + + /** + * Creates a ServoHealthTestData message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.support.ServoHealthTestData.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.support.ServoHealthTestData} ServoHealthTestData + */ + public static from(object: { [k: string]: any }): message.support.ServoHealthTestData; + + /** + * Creates a plain object from a ServoHealthTestData message. Also converts values to other types if specified. + * @param {message.support.ServoHealthTestData} message ServoHealthTestData + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.support.ServoHealthTestData, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this ServoHealthTestData message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this ServoHealthTestData to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + namespace ServoHealthTestData { + + /** + * State enum. + * @name State + * @memberof message.support.ServoHealthTestData + * @enum {number} + * @property {number} INITIALISE=0 INITIALISE value + * @property {number} MOVE_1=1 MOVE_1 value + * @property {number} ELBOW=2 ELBOW value + * @property {number} MOVE_2=3 MOVE_2 value + * @property {number} SHOULDER_PITCH=4 SHOULDER_PITCH value + * @property {number} SHOULDER_MOVE_1=5 SHOULDER_MOVE_1 value + * @property {number} SHOULDER_ROLL=6 SHOULDER_ROLL value + * @property {number} MOVE_3=7 MOVE_3 value + * @property {number} HEAD_PITCH=8 HEAD_PITCH value + * @property {number} MOVE_4=9 MOVE_4 value + * @property {number} HEAD_YAW=10 HEAD_YAW value + * @property {number} LAYDOWN=11 LAYDOWN value + * @property {number} HIP_ROLL=12 HIP_ROLL value + * @property {number} HIP_MOVE_1=13 HIP_MOVE_1 value + * @property {number} HIP_YAW=14 HIP_YAW value + * @property {number} HIP_MOVE_2=15 HIP_MOVE_2 value + * @property {number} ANKLE_PITCH=16 ANKLE_PITCH value + * @property {number} ANKLE_MOVE=17 ANKLE_MOVE value + * @property {number} ANKLE_ROLL=18 ANKLE_ROLL value + * @property {number} KNEE_MOVE=19 KNEE_MOVE value + * @property {number} KNEE=20 KNEE value + * @property {number} KNEE_MOVE_2=21 KNEE_MOVE_2 value + * @property {number} HIP_PITCH=22 HIP_PITCH value + * @property {number} LAYDOWN_2=23 LAYDOWN_2 value + * @property {number} FINISHED=24 FINISHED value + */ + enum State { + INITIALISE = 0, + MOVE_1 = 1, + ELBOW = 2, + MOVE_2 = 3, + SHOULDER_PITCH = 4, + SHOULDER_MOVE_1 = 5, + SHOULDER_ROLL = 6, + MOVE_3 = 7, + HEAD_PITCH = 8, + MOVE_4 = 9, + HEAD_YAW = 10, + LAYDOWN = 11, + HIP_ROLL = 12, + HIP_MOVE_1 = 13, + HIP_YAW = 14, + HIP_MOVE_2 = 15, + ANKLE_PITCH = 16, + ANKLE_MOVE = 17, + ANKLE_ROLL = 18, + KNEE_MOVE = 19, + KNEE = 20, + KNEE_MOVE_2 = 21, + HIP_PITCH = 22, + LAYDOWN_2 = 23, + FINISHED = 24 + } + } + + /** + * Namespace nubugger. + * @exports message.support.nubugger + * @namespace + */ + namespace nubugger { + + type Command$Properties = { + command?: string; + }; + + /** + * Constructs a new Command. + * @exports message.support.nubugger.Command + * @constructor + * @param {message.support.nubugger.Command$Properties=} [properties] Properties to set + */ + class Command { + + /** + * Constructs a new Command. + * @exports message.support.nubugger.Command + * @constructor + * @param {message.support.nubugger.Command$Properties=} [properties] Properties to set + */ + constructor(properties?: message.support.nubugger.Command$Properties); + + /** + * Command command. + * @type {string} + */ + public command: string; + + /** + * Creates a new Command instance using the specified properties. + * @param {message.support.nubugger.Command$Properties=} [properties] Properties to set + * @returns {message.support.nubugger.Command} Command instance + */ + public static create(properties?: message.support.nubugger.Command$Properties): message.support.nubugger.Command; + + /** + * Encodes the specified Command message. Does not implicitly {@link message.support.nubugger.Command.verify|verify} messages. + * @param {message.support.nubugger.Command$Properties} message Command message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.support.nubugger.Command$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Command message, length delimited. Does not implicitly {@link message.support.nubugger.Command.verify|verify} messages. + * @param {message.support.nubugger.Command$Properties} message Command message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.support.nubugger.Command$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a Command message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.support.nubugger.Command} Command + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.support.nubugger.Command; + + /** + * Decodes a Command message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.support.nubugger.Command} Command + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.support.nubugger.Command; + + /** + * Verifies a Command message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a Command message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.support.nubugger.Command} Command + */ + public static fromObject(object: { [k: string]: any }): message.support.nubugger.Command; + + /** + * Creates a Command message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.support.nubugger.Command.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.support.nubugger.Command} Command + */ + public static from(object: { [k: string]: any }): message.support.nubugger.Command; + + /** + * Creates a plain object from a Command message. Also converts values to other types if specified. + * @param {message.support.nubugger.Command} message Command + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.support.nubugger.Command, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this Command message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this Command to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type DataPoint$Properties = { + label?: string; + value?: number[]; + type?: message.support.nubugger.DataPoint.Type; + }; + + /** + * Constructs a new DataPoint. + * @exports message.support.nubugger.DataPoint + * @constructor + * @param {message.support.nubugger.DataPoint$Properties=} [properties] Properties to set + */ + class DataPoint { + + /** + * Constructs a new DataPoint. + * @exports message.support.nubugger.DataPoint + * @constructor + * @param {message.support.nubugger.DataPoint$Properties=} [properties] Properties to set + */ + constructor(properties?: message.support.nubugger.DataPoint$Properties); + + /** + * DataPoint label. + * @type {string} + */ + public label: string; + + /** + * DataPoint value. + * @type {Array.} + */ + public value: number[]; + + /** + * DataPoint type. + * @type {message.support.nubugger.DataPoint.Type} + */ + public type: message.support.nubugger.DataPoint.Type; + + /** + * Creates a new DataPoint instance using the specified properties. + * @param {message.support.nubugger.DataPoint$Properties=} [properties] Properties to set + * @returns {message.support.nubugger.DataPoint} DataPoint instance + */ + public static create(properties?: message.support.nubugger.DataPoint$Properties): message.support.nubugger.DataPoint; + + /** + * Encodes the specified DataPoint message. Does not implicitly {@link message.support.nubugger.DataPoint.verify|verify} messages. + * @param {message.support.nubugger.DataPoint$Properties} message DataPoint message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.support.nubugger.DataPoint$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified DataPoint message, length delimited. Does not implicitly {@link message.support.nubugger.DataPoint.verify|verify} messages. + * @param {message.support.nubugger.DataPoint$Properties} message DataPoint message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.support.nubugger.DataPoint$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a DataPoint message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.support.nubugger.DataPoint} DataPoint + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.support.nubugger.DataPoint; + + /** + * Decodes a DataPoint message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.support.nubugger.DataPoint} DataPoint + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.support.nubugger.DataPoint; + + /** + * Verifies a DataPoint message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a DataPoint message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.support.nubugger.DataPoint} DataPoint + */ + public static fromObject(object: { [k: string]: any }): message.support.nubugger.DataPoint; + + /** + * Creates a DataPoint message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.support.nubugger.DataPoint.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.support.nubugger.DataPoint} DataPoint + */ + public static from(object: { [k: string]: any }): message.support.nubugger.DataPoint; + + /** + * Creates a plain object from a DataPoint message. Also converts values to other types if specified. + * @param {message.support.nubugger.DataPoint} message DataPoint + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.support.nubugger.DataPoint, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this DataPoint message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this DataPoint to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + namespace DataPoint { + + /** + * The represents the type of data + * NOTE: This should not describe how to display the data, as that should be done client-side. + * @name Type + * @memberof message.support.nubugger.DataPoint + * @enum {number} + * @property {number} FLOAT_LIST=0 FLOAT_LIST value + * @property {number} ROTATION_3D=2 ROTATION_3D value + */ + enum Type { + FLOAT_LIST = 0, + ROTATION_3D = 2 + } + } + + type DrawObject$Properties = { + shape?: message.support.nubugger.DrawObject.Shape; + name?: string; + position?: vec3$Properties; + direction?: vec3$Properties; + target?: vec3$Properties; + width?: number; + height?: number; + rotation?: vec3$Properties; + colour?: vec3$Properties; + radius?: number; + topRadius?: number; + bottomRadius?: number; + vertices?: vec3$Properties[]; + path?: message.support.nubugger.DrawObject.Path$Properties[]; + faces?: number; + lineWidth?: number; + length?: number; + depth?: number; + fill?: boolean; + timeout?: number; + }; + + /** + * Constructs a new DrawObject. + * @exports message.support.nubugger.DrawObject + * @constructor + * @param {message.support.nubugger.DrawObject$Properties=} [properties] Properties to set + */ + class DrawObject { + + /** + * Constructs a new DrawObject. + * @exports message.support.nubugger.DrawObject + * @constructor + * @param {message.support.nubugger.DrawObject$Properties=} [properties] Properties to set + */ + constructor(properties?: message.support.nubugger.DrawObject$Properties); + + /** + * DrawObject shape. + * @type {message.support.nubugger.DrawObject.Shape} + */ + public shape: message.support.nubugger.DrawObject.Shape; + + /** + * DrawObject name. + * @type {string} + */ + public name: string; + + /** + * DrawObject position. + * @type {(vec3$Properties|null)} + */ + public position: (vec3$Properties|null); + + /** + * DrawObject direction. + * @type {(vec3$Properties|null)} + */ + public direction: (vec3$Properties|null); + + /** + * DrawObject target. + * @type {(vec3$Properties|null)} + */ + public target: (vec3$Properties|null); + + /** + * DrawObject width. + * @type {number} + */ + public width: number; + + /** + * DrawObject height. + * @type {number} + */ + public height: number; + + /** + * DrawObject rotation. + * @type {(vec3$Properties|null)} + */ + public rotation: (vec3$Properties|null); + + /** + * DrawObject colour. + * @type {(vec3$Properties|null)} + */ + public colour: (vec3$Properties|null); + + /** + * DrawObject radius. + * @type {number} + */ + public radius: number; + + /** + * DrawObject topRadius. + * @type {number} + */ + public topRadius: number; + + /** + * DrawObject bottomRadius. + * @type {number} + */ + public bottomRadius: number; + + /** + * DrawObject vertices. + * @type {Array.} + */ + public vertices: vec3$Properties[]; + + /** + * DrawObject path. + * @type {Array.} + */ + public path: message.support.nubugger.DrawObject.Path$Properties[]; + + /** + * DrawObject faces. + * @type {number} + */ + public faces: number; + + /** + * DrawObject lineWidth. + * @type {number} + */ + public lineWidth: number; + + /** + * DrawObject length. + * @type {number} + */ + public length: number; + + /** + * DrawObject depth. + * @type {number} + */ + public depth: number; + + /** + * DrawObject fill. + * @type {boolean} + */ + public fill: boolean; + + /** + * DrawObject timeout. + * @type {number} + */ + public timeout: number; + + /** + * Creates a new DrawObject instance using the specified properties. + * @param {message.support.nubugger.DrawObject$Properties=} [properties] Properties to set + * @returns {message.support.nubugger.DrawObject} DrawObject instance + */ + public static create(properties?: message.support.nubugger.DrawObject$Properties): message.support.nubugger.DrawObject; + + /** + * Encodes the specified DrawObject message. Does not implicitly {@link message.support.nubugger.DrawObject.verify|verify} messages. + * @param {message.support.nubugger.DrawObject$Properties} message DrawObject message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.support.nubugger.DrawObject$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified DrawObject message, length delimited. Does not implicitly {@link message.support.nubugger.DrawObject.verify|verify} messages. + * @param {message.support.nubugger.DrawObject$Properties} message DrawObject message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.support.nubugger.DrawObject$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a DrawObject message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.support.nubugger.DrawObject} DrawObject + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.support.nubugger.DrawObject; + + /** + * Decodes a DrawObject message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.support.nubugger.DrawObject} DrawObject + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.support.nubugger.DrawObject; + + /** + * Verifies a DrawObject message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a DrawObject message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.support.nubugger.DrawObject} DrawObject + */ + public static fromObject(object: { [k: string]: any }): message.support.nubugger.DrawObject; + + /** + * Creates a DrawObject message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.support.nubugger.DrawObject.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.support.nubugger.DrawObject} DrawObject + */ + public static from(object: { [k: string]: any }): message.support.nubugger.DrawObject; + + /** + * Creates a plain object from a DrawObject message. Also converts values to other types if specified. + * @param {message.support.nubugger.DrawObject} message DrawObject + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.support.nubugger.DrawObject, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this DrawObject message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this DrawObject to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + namespace DrawObject { + + /** + * Shape enum. + * @name Shape + * @memberof message.support.nubugger.DrawObject + * @enum {number} + * @property {number} UNKNOWN=0 UNKNOWN value + * @property {number} ARROW=1 ARROW value + * @property {number} BOX=2 BOX value + * @property {number} CIRCLE=3 CIRCLE value + * @property {number} CYLINDER=4 CYLINDER value + * @property {number} POLYLINE=5 POLYLINE value + * @property {number} PYRAMID=6 PYRAMID value + * @property {number} RECTANGLE=7 RECTANGLE value + * @property {number} SPHERE=8 SPHERE value + */ + enum Shape { + UNKNOWN = 0, + ARROW = 1, + BOX = 2, + CIRCLE = 3, + CYLINDER = 4, + POLYLINE = 5, + PYRAMID = 6, + RECTANGLE = 7, + SPHERE = 8 + } + + type Path$Properties = { + position?: vec2$Properties; + parentIndex?: number; + }; + + /** + * Constructs a new Path. + * @exports message.support.nubugger.DrawObject.Path + * @constructor + * @param {message.support.nubugger.DrawObject.Path$Properties=} [properties] Properties to set + */ + class Path { + + /** + * Constructs a new Path. + * @exports message.support.nubugger.DrawObject.Path + * @constructor + * @param {message.support.nubugger.DrawObject.Path$Properties=} [properties] Properties to set + */ + constructor(properties?: message.support.nubugger.DrawObject.Path$Properties); + + /** + * Path position. + * @type {(vec2$Properties|null)} + */ + public position: (vec2$Properties|null); + + /** + * Path parentIndex. + * @type {number} + */ + public parentIndex: number; + + /** + * Creates a new Path instance using the specified properties. + * @param {message.support.nubugger.DrawObject.Path$Properties=} [properties] Properties to set + * @returns {message.support.nubugger.DrawObject.Path} Path instance + */ + public static create(properties?: message.support.nubugger.DrawObject.Path$Properties): message.support.nubugger.DrawObject.Path; + + /** + * Encodes the specified Path message. Does not implicitly {@link message.support.nubugger.DrawObject.Path.verify|verify} messages. + * @param {message.support.nubugger.DrawObject.Path$Properties} message Path message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.support.nubugger.DrawObject.Path$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Path message, length delimited. Does not implicitly {@link message.support.nubugger.DrawObject.Path.verify|verify} messages. + * @param {message.support.nubugger.DrawObject.Path$Properties} message Path message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.support.nubugger.DrawObject.Path$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a Path message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.support.nubugger.DrawObject.Path} Path + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.support.nubugger.DrawObject.Path; + + /** + * Decodes a Path message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.support.nubugger.DrawObject.Path} Path + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.support.nubugger.DrawObject.Path; + + /** + * Verifies a Path message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a Path message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.support.nubugger.DrawObject.Path} Path + */ + public static fromObject(object: { [k: string]: any }): message.support.nubugger.DrawObject.Path; + + /** + * Creates a Path message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.support.nubugger.DrawObject.Path.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.support.nubugger.DrawObject.Path} Path + */ + public static from(object: { [k: string]: any }): message.support.nubugger.DrawObject.Path; + + /** + * Creates a plain object from a Path message. Also converts values to other types if specified. + * @param {message.support.nubugger.DrawObject.Path} message Path + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.support.nubugger.DrawObject.Path, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this Path message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this Path to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + } + + type DrawObjects$Properties = { + objects?: message.support.nubugger.DrawObject$Properties[]; + }; + + /** + * Constructs a new DrawObjects. + * @exports message.support.nubugger.DrawObjects + * @constructor + * @param {message.support.nubugger.DrawObjects$Properties=} [properties] Properties to set + */ + class DrawObjects { + + /** + * Constructs a new DrawObjects. + * @exports message.support.nubugger.DrawObjects + * @constructor + * @param {message.support.nubugger.DrawObjects$Properties=} [properties] Properties to set + */ + constructor(properties?: message.support.nubugger.DrawObjects$Properties); + + /** + * DrawObjects objects. + * @type {Array.} + */ + public objects: message.support.nubugger.DrawObject$Properties[]; + + /** + * Creates a new DrawObjects instance using the specified properties. + * @param {message.support.nubugger.DrawObjects$Properties=} [properties] Properties to set + * @returns {message.support.nubugger.DrawObjects} DrawObjects instance + */ + public static create(properties?: message.support.nubugger.DrawObjects$Properties): message.support.nubugger.DrawObjects; + + /** + * Encodes the specified DrawObjects message. Does not implicitly {@link message.support.nubugger.DrawObjects.verify|verify} messages. + * @param {message.support.nubugger.DrawObjects$Properties} message DrawObjects message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.support.nubugger.DrawObjects$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified DrawObjects message, length delimited. Does not implicitly {@link message.support.nubugger.DrawObjects.verify|verify} messages. + * @param {message.support.nubugger.DrawObjects$Properties} message DrawObjects message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.support.nubugger.DrawObjects$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a DrawObjects message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.support.nubugger.DrawObjects} DrawObjects + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.support.nubugger.DrawObjects; + + /** + * Decodes a DrawObjects message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.support.nubugger.DrawObjects} DrawObjects + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.support.nubugger.DrawObjects; + + /** + * Verifies a DrawObjects message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a DrawObjects message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.support.nubugger.DrawObjects} DrawObjects + */ + public static fromObject(object: { [k: string]: any }): message.support.nubugger.DrawObjects; + + /** + * Creates a DrawObjects message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.support.nubugger.DrawObjects.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.support.nubugger.DrawObjects} DrawObjects + */ + public static from(object: { [k: string]: any }): message.support.nubugger.DrawObjects; + + /** + * Creates a plain object from a DrawObjects message. Also converts values to other types if specified. + * @param {message.support.nubugger.DrawObjects} message DrawObjects + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.support.nubugger.DrawObjects, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this DrawObjects message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this DrawObjects to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type Overview$Properties = { + roleName?: string; + voltage?: number; + battery?: number; + behaviourState?: message.behaviour.Behaviour.State; + kickTarget?: vec2$Properties; + robotPosition?: vec2$Properties; + robotPositionCovariance?: mat22$Properties; + robotHeading?: vec2$Properties; + ballPosition?: vec2$Properties; + ballWorldPosition?: vec2$Properties; + gameMode?: message.input.GameState.Data.Mode; + gamePhase?: message.input.GameState.Data.Phase; + penaltyReason?: message.input.GameState.Data.PenaltyReason; + lastCameraImage?: google.protobuf.Timestamp$Properties; + lastSeenBall?: google.protobuf.Timestamp$Properties; + lastSeenGoal?: google.protobuf.Timestamp$Properties; + lastSeenObstacle?: google.protobuf.Timestamp$Properties; + pathPlan?: vec2$Properties[]; + walkCommand?: vec3$Properties; + }; + + /** + * Constructs a new Overview. + * @exports message.support.nubugger.Overview + * @constructor + * @param {message.support.nubugger.Overview$Properties=} [properties] Properties to set + */ + class Overview { + + /** + * Constructs a new Overview. + * @exports message.support.nubugger.Overview + * @constructor + * @param {message.support.nubugger.Overview$Properties=} [properties] Properties to set + */ + constructor(properties?: message.support.nubugger.Overview$Properties); + + /** + * Overview roleName. + * @type {string} + */ + public roleName: string; + + /** + * Overview voltage. + * @type {number} + */ + public voltage: number; + + /** + * Overview battery. + * @type {number} + */ + public battery: number; + + /** + * Overview behaviourState. + * @type {message.behaviour.Behaviour.State} + */ + public behaviourState: message.behaviour.Behaviour.State; + + /** + * Overview kickTarget. + * @type {(vec2$Properties|null)} + */ + public kickTarget: (vec2$Properties|null); + + /** + * Overview robotPosition. + * @type {(vec2$Properties|null)} + */ + public robotPosition: (vec2$Properties|null); + + /** + * Overview robotPositionCovariance. + * @type {(mat22$Properties|null)} + */ + public robotPositionCovariance: (mat22$Properties|null); + + /** + * Overview robotHeading. + * @type {(vec2$Properties|null)} + */ + public robotHeading: (vec2$Properties|null); + + /** + * Overview ballPosition. + * @type {(vec2$Properties|null)} + */ + public ballPosition: (vec2$Properties|null); + + /** + * Overview ballWorldPosition. + * @type {(vec2$Properties|null)} + */ + public ballWorldPosition: (vec2$Properties|null); + + /** + * Overview gameMode. + * @type {message.input.GameState.Data.Mode} + */ + public gameMode: message.input.GameState.Data.Mode; + + /** + * Overview gamePhase. + * @type {message.input.GameState.Data.Phase} + */ + public gamePhase: message.input.GameState.Data.Phase; + + /** + * Overview penaltyReason. + * @type {message.input.GameState.Data.PenaltyReason} + */ + public penaltyReason: message.input.GameState.Data.PenaltyReason; + + /** + * Overview lastCameraImage. + * @type {(google.protobuf.Timestamp$Properties|null)} + */ + public lastCameraImage: (google.protobuf.Timestamp$Properties|null); + + /** + * Overview lastSeenBall. + * @type {(google.protobuf.Timestamp$Properties|null)} + */ + public lastSeenBall: (google.protobuf.Timestamp$Properties|null); + + /** + * Overview lastSeenGoal. + * @type {(google.protobuf.Timestamp$Properties|null)} + */ + public lastSeenGoal: (google.protobuf.Timestamp$Properties|null); + + /** + * Overview lastSeenObstacle. + * @type {(google.protobuf.Timestamp$Properties|null)} + */ + public lastSeenObstacle: (google.protobuf.Timestamp$Properties|null); + + /** + * Overview pathPlan. + * @type {Array.} + */ + public pathPlan: vec2$Properties[]; + + /** + * Overview walkCommand. + * @type {(vec3$Properties|null)} + */ + public walkCommand: (vec3$Properties|null); + + /** + * Creates a new Overview instance using the specified properties. + * @param {message.support.nubugger.Overview$Properties=} [properties] Properties to set + * @returns {message.support.nubugger.Overview} Overview instance + */ + public static create(properties?: message.support.nubugger.Overview$Properties): message.support.nubugger.Overview; + + /** + * Encodes the specified Overview message. Does not implicitly {@link message.support.nubugger.Overview.verify|verify} messages. + * @param {message.support.nubugger.Overview$Properties} message Overview message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.support.nubugger.Overview$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Overview message, length delimited. Does not implicitly {@link message.support.nubugger.Overview.verify|verify} messages. + * @param {message.support.nubugger.Overview$Properties} message Overview message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.support.nubugger.Overview$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an Overview message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.support.nubugger.Overview} Overview + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.support.nubugger.Overview; + + /** + * Decodes an Overview message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.support.nubugger.Overview} Overview + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.support.nubugger.Overview; + + /** + * Verifies an Overview message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates an Overview message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.support.nubugger.Overview} Overview + */ + public static fromObject(object: { [k: string]: any }): message.support.nubugger.Overview; + + /** + * Creates an Overview message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.support.nubugger.Overview.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.support.nubugger.Overview} Overview + */ + public static from(object: { [k: string]: any }): message.support.nubugger.Overview; + + /** + * Creates a plain object from an Overview message. Also converts values to other types if specified. + * @param {message.support.nubugger.Overview} message Overview + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.support.nubugger.Overview, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this Overview message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this Overview to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type Ping$Properties = { + time?: (number|Long); + }; + + /** + * Constructs a new Ping. + * @exports message.support.nubugger.Ping + * @constructor + * @param {message.support.nubugger.Ping$Properties=} [properties] Properties to set + */ + class Ping { + + /** + * Constructs a new Ping. + * @exports message.support.nubugger.Ping + * @constructor + * @param {message.support.nubugger.Ping$Properties=} [properties] Properties to set + */ + constructor(properties?: message.support.nubugger.Ping$Properties); + + /** + * Ping time. + * @type {number|Long} + */ + public time: (number|Long); + + /** + * Creates a new Ping instance using the specified properties. + * @param {message.support.nubugger.Ping$Properties=} [properties] Properties to set + * @returns {message.support.nubugger.Ping} Ping instance + */ + public static create(properties?: message.support.nubugger.Ping$Properties): message.support.nubugger.Ping; + + /** + * Encodes the specified Ping message. Does not implicitly {@link message.support.nubugger.Ping.verify|verify} messages. + * @param {message.support.nubugger.Ping$Properties} message Ping message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.support.nubugger.Ping$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Ping message, length delimited. Does not implicitly {@link message.support.nubugger.Ping.verify|verify} messages. + * @param {message.support.nubugger.Ping$Properties} message Ping message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.support.nubugger.Ping$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a Ping message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.support.nubugger.Ping} Ping + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.support.nubugger.Ping; + + /** + * Decodes a Ping message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.support.nubugger.Ping} Ping + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.support.nubugger.Ping; + + /** + * Verifies a Ping message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a Ping message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.support.nubugger.Ping} Ping + */ + public static fromObject(object: { [k: string]: any }): message.support.nubugger.Ping; + + /** + * Creates a Ping message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.support.nubugger.Ping.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.support.nubugger.Ping} Ping + */ + public static from(object: { [k: string]: any }): message.support.nubugger.Ping; + + /** + * Creates a plain object from a Ping message. Also converts values to other types if specified. + * @param {message.support.nubugger.Ping} message Ping + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.support.nubugger.Ping, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this Ping message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this Ping to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type ReactionHandles$Properties = { + handles?: message.support.nubugger.ReactionHandles.Handle$Properties[]; + }; + + /** + * Constructs a new ReactionHandles. + * @exports message.support.nubugger.ReactionHandles + * @constructor + * @param {message.support.nubugger.ReactionHandles$Properties=} [properties] Properties to set + */ + class ReactionHandles { + + /** + * Constructs a new ReactionHandles. + * @exports message.support.nubugger.ReactionHandles + * @constructor + * @param {message.support.nubugger.ReactionHandles$Properties=} [properties] Properties to set + */ + constructor(properties?: message.support.nubugger.ReactionHandles$Properties); + + /** + * ReactionHandles handles. + * @type {Array.} + */ + public handles: message.support.nubugger.ReactionHandles.Handle$Properties[]; + + /** + * Creates a new ReactionHandles instance using the specified properties. + * @param {message.support.nubugger.ReactionHandles$Properties=} [properties] Properties to set + * @returns {message.support.nubugger.ReactionHandles} ReactionHandles instance + */ + public static create(properties?: message.support.nubugger.ReactionHandles$Properties): message.support.nubugger.ReactionHandles; + + /** + * Encodes the specified ReactionHandles message. Does not implicitly {@link message.support.nubugger.ReactionHandles.verify|verify} messages. + * @param {message.support.nubugger.ReactionHandles$Properties} message ReactionHandles message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.support.nubugger.ReactionHandles$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified ReactionHandles message, length delimited. Does not implicitly {@link message.support.nubugger.ReactionHandles.verify|verify} messages. + * @param {message.support.nubugger.ReactionHandles$Properties} message ReactionHandles message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.support.nubugger.ReactionHandles$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a ReactionHandles message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.support.nubugger.ReactionHandles} ReactionHandles + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.support.nubugger.ReactionHandles; + + /** + * Decodes a ReactionHandles message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.support.nubugger.ReactionHandles} ReactionHandles + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.support.nubugger.ReactionHandles; + + /** + * Verifies a ReactionHandles message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a ReactionHandles message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.support.nubugger.ReactionHandles} ReactionHandles + */ + public static fromObject(object: { [k: string]: any }): message.support.nubugger.ReactionHandles; + + /** + * Creates a ReactionHandles message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.support.nubugger.ReactionHandles.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.support.nubugger.ReactionHandles} ReactionHandles + */ + public static from(object: { [k: string]: any }): message.support.nubugger.ReactionHandles; + + /** + * Creates a plain object from a ReactionHandles message. Also converts values to other types if specified. + * @param {message.support.nubugger.ReactionHandles} message ReactionHandles + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.support.nubugger.ReactionHandles, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this ReactionHandles message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this ReactionHandles to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + namespace ReactionHandles { + + type Handle$Properties = { + type?: string; + enabled?: boolean; + }; + + /** + * Constructs a new Handle. + * @exports message.support.nubugger.ReactionHandles.Handle + * @constructor + * @param {message.support.nubugger.ReactionHandles.Handle$Properties=} [properties] Properties to set + */ + class Handle { + + /** + * Constructs a new Handle. + * @exports message.support.nubugger.ReactionHandles.Handle + * @constructor + * @param {message.support.nubugger.ReactionHandles.Handle$Properties=} [properties] Properties to set + */ + constructor(properties?: message.support.nubugger.ReactionHandles.Handle$Properties); + + /** + * Handle type. + * @type {string} + */ + public type: string; + + /** + * Handle enabled. + * @type {boolean} + */ + public enabled: boolean; + + /** + * Creates a new Handle instance using the specified properties. + * @param {message.support.nubugger.ReactionHandles.Handle$Properties=} [properties] Properties to set + * @returns {message.support.nubugger.ReactionHandles.Handle} Handle instance + */ + public static create(properties?: message.support.nubugger.ReactionHandles.Handle$Properties): message.support.nubugger.ReactionHandles.Handle; + + /** + * Encodes the specified Handle message. Does not implicitly {@link message.support.nubugger.ReactionHandles.Handle.verify|verify} messages. + * @param {message.support.nubugger.ReactionHandles.Handle$Properties} message Handle message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.support.nubugger.ReactionHandles.Handle$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Handle message, length delimited. Does not implicitly {@link message.support.nubugger.ReactionHandles.Handle.verify|verify} messages. + * @param {message.support.nubugger.ReactionHandles.Handle$Properties} message Handle message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.support.nubugger.ReactionHandles.Handle$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a Handle message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.support.nubugger.ReactionHandles.Handle} Handle + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.support.nubugger.ReactionHandles.Handle; + + /** + * Decodes a Handle message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.support.nubugger.ReactionHandles.Handle} Handle + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.support.nubugger.ReactionHandles.Handle; + + /** + * Verifies a Handle message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a Handle message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.support.nubugger.ReactionHandles.Handle} Handle + */ + public static fromObject(object: { [k: string]: any }): message.support.nubugger.ReactionHandles.Handle; + + /** + * Creates a Handle message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.support.nubugger.ReactionHandles.Handle.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.support.nubugger.ReactionHandles.Handle} Handle + */ + public static from(object: { [k: string]: any }): message.support.nubugger.ReactionHandles.Handle; + + /** + * Creates a plain object from a Handle message. Also converts values to other types if specified. + * @param {message.support.nubugger.ReactionHandles.Handle} message Handle + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.support.nubugger.ReactionHandles.Handle, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this Handle message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this Handle to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + } + } + + /** + * Namespace nuclear. + * @exports message.support.nuclear + * @namespace + */ + namespace nuclear { + + type ReactionStatistics$Properties = { + name?: string; + triggerName?: string; + functionName?: string; + reactionId?: (number|Long); + taskId?: (number|Long); + causeReactionId?: (number|Long); + causeTaskId?: (number|Long); + emitted?: (number|Long); + started?: (number|Long); + finished?: (number|Long); + }; + + /** + * Constructs a new ReactionStatistics. + * @exports message.support.nuclear.ReactionStatistics + * @constructor + * @param {message.support.nuclear.ReactionStatistics$Properties=} [properties] Properties to set + */ + class ReactionStatistics { + + /** + * Constructs a new ReactionStatistics. + * @exports message.support.nuclear.ReactionStatistics + * @constructor + * @param {message.support.nuclear.ReactionStatistics$Properties=} [properties] Properties to set + */ + constructor(properties?: message.support.nuclear.ReactionStatistics$Properties); + + /** + * ReactionStatistics name. + * @type {string} + */ + public name: string; + + /** + * ReactionStatistics triggerName. + * @type {string} + */ + public triggerName: string; + + /** + * ReactionStatistics functionName. + * @type {string} + */ + public functionName: string; + + /** + * ReactionStatistics reactionId. + * @type {number|Long} + */ + public reactionId: (number|Long); + + /** + * ReactionStatistics taskId. + * @type {number|Long} + */ + public taskId: (number|Long); + + /** + * ReactionStatistics causeReactionId. + * @type {number|Long} + */ + public causeReactionId: (number|Long); + + /** + * ReactionStatistics causeTaskId. + * @type {number|Long} + */ + public causeTaskId: (number|Long); + + /** + * ReactionStatistics emitted. + * @type {number|Long} + */ + public emitted: (number|Long); + + /** + * ReactionStatistics started. + * @type {number|Long} + */ + public started: (number|Long); + + /** + * ReactionStatistics finished. + * @type {number|Long} + */ + public finished: (number|Long); + + /** + * Creates a new ReactionStatistics instance using the specified properties. + * @param {message.support.nuclear.ReactionStatistics$Properties=} [properties] Properties to set + * @returns {message.support.nuclear.ReactionStatistics} ReactionStatistics instance + */ + public static create(properties?: message.support.nuclear.ReactionStatistics$Properties): message.support.nuclear.ReactionStatistics; + + /** + * Encodes the specified ReactionStatistics message. Does not implicitly {@link message.support.nuclear.ReactionStatistics.verify|verify} messages. + * @param {message.support.nuclear.ReactionStatistics$Properties} message ReactionStatistics message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.support.nuclear.ReactionStatistics$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified ReactionStatistics message, length delimited. Does not implicitly {@link message.support.nuclear.ReactionStatistics.verify|verify} messages. + * @param {message.support.nuclear.ReactionStatistics$Properties} message ReactionStatistics message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.support.nuclear.ReactionStatistics$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a ReactionStatistics message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.support.nuclear.ReactionStatistics} ReactionStatistics + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.support.nuclear.ReactionStatistics; + + /** + * Decodes a ReactionStatistics message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.support.nuclear.ReactionStatistics} ReactionStatistics + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.support.nuclear.ReactionStatistics; + + /** + * Verifies a ReactionStatistics message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a ReactionStatistics message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.support.nuclear.ReactionStatistics} ReactionStatistics + */ + public static fromObject(object: { [k: string]: any }): message.support.nuclear.ReactionStatistics; + + /** + * Creates a ReactionStatistics message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.support.nuclear.ReactionStatistics.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.support.nuclear.ReactionStatistics} ReactionStatistics + */ + public static from(object: { [k: string]: any }): message.support.nuclear.ReactionStatistics; + + /** + * Creates a plain object from a ReactionStatistics message. Also converts values to other types if specified. + * @param {message.support.nuclear.ReactionStatistics} message ReactionStatistics + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.support.nuclear.ReactionStatistics, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this ReactionStatistics message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this ReactionStatistics to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + } + + /** + * Namespace optimisation. + * @exports message.support.optimisation + * @namespace + */ + namespace optimisation { + + type RegisterOptimisation$Properties = { + group?: string; + network?: boolean; + parameters?: message.support.optimisation.OptimiserParameters$Properties; + }; + + /** + * Constructs a new RegisterOptimisation. + * @exports message.support.optimisation.RegisterOptimisation + * @constructor + * @param {message.support.optimisation.RegisterOptimisation$Properties=} [properties] Properties to set + */ + class RegisterOptimisation { + + /** + * Constructs a new RegisterOptimisation. + * @exports message.support.optimisation.RegisterOptimisation + * @constructor + * @param {message.support.optimisation.RegisterOptimisation$Properties=} [properties] Properties to set + */ + constructor(properties?: message.support.optimisation.RegisterOptimisation$Properties); + + /** + * RegisterOptimisation group. + * @type {string} + */ + public group: string; + + /** + * RegisterOptimisation network. + * @type {boolean} + */ + public network: boolean; + + /** + * RegisterOptimisation parameters. + * @type {(message.support.optimisation.OptimiserParameters$Properties|null)} + */ + public parameters: (message.support.optimisation.OptimiserParameters$Properties|null); + + /** + * Creates a new RegisterOptimisation instance using the specified properties. + * @param {message.support.optimisation.RegisterOptimisation$Properties=} [properties] Properties to set + * @returns {message.support.optimisation.RegisterOptimisation} RegisterOptimisation instance + */ + public static create(properties?: message.support.optimisation.RegisterOptimisation$Properties): message.support.optimisation.RegisterOptimisation; + + /** + * Encodes the specified RegisterOptimisation message. Does not implicitly {@link message.support.optimisation.RegisterOptimisation.verify|verify} messages. + * @param {message.support.optimisation.RegisterOptimisation$Properties} message RegisterOptimisation message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.support.optimisation.RegisterOptimisation$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified RegisterOptimisation message, length delimited. Does not implicitly {@link message.support.optimisation.RegisterOptimisation.verify|verify} messages. + * @param {message.support.optimisation.RegisterOptimisation$Properties} message RegisterOptimisation message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.support.optimisation.RegisterOptimisation$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a RegisterOptimisation message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.support.optimisation.RegisterOptimisation} RegisterOptimisation + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.support.optimisation.RegisterOptimisation; + + /** + * Decodes a RegisterOptimisation message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.support.optimisation.RegisterOptimisation} RegisterOptimisation + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.support.optimisation.RegisterOptimisation; + + /** + * Verifies a RegisterOptimisation message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a RegisterOptimisation message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.support.optimisation.RegisterOptimisation} RegisterOptimisation + */ + public static fromObject(object: { [k: string]: any }): message.support.optimisation.RegisterOptimisation; + + /** + * Creates a RegisterOptimisation message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.support.optimisation.RegisterOptimisation.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.support.optimisation.RegisterOptimisation} RegisterOptimisation + */ + public static from(object: { [k: string]: any }): message.support.optimisation.RegisterOptimisation; + + /** + * Creates a plain object from a RegisterOptimisation message. Also converts values to other types if specified. + * @param {message.support.optimisation.RegisterOptimisation} message RegisterOptimisation + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.support.optimisation.RegisterOptimisation, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this RegisterOptimisation message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this RegisterOptimisation to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type RequestParameters$Properties = { + group?: string; + nSamples?: number; + }; + + /** + * Constructs a new RequestParameters. + * @exports message.support.optimisation.RequestParameters + * @constructor + * @param {message.support.optimisation.RequestParameters$Properties=} [properties] Properties to set + */ + class RequestParameters { + + /** + * Constructs a new RequestParameters. + * @exports message.support.optimisation.RequestParameters + * @constructor + * @param {message.support.optimisation.RequestParameters$Properties=} [properties] Properties to set + */ + constructor(properties?: message.support.optimisation.RequestParameters$Properties); + + /** + * RequestParameters group. + * @type {string} + */ + public group: string; + + /** + * RequestParameters nSamples. + * @type {number} + */ + public nSamples: number; + + /** + * Creates a new RequestParameters instance using the specified properties. + * @param {message.support.optimisation.RequestParameters$Properties=} [properties] Properties to set + * @returns {message.support.optimisation.RequestParameters} RequestParameters instance + */ + public static create(properties?: message.support.optimisation.RequestParameters$Properties): message.support.optimisation.RequestParameters; + + /** + * Encodes the specified RequestParameters message. Does not implicitly {@link message.support.optimisation.RequestParameters.verify|verify} messages. + * @param {message.support.optimisation.RequestParameters$Properties} message RequestParameters message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.support.optimisation.RequestParameters$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified RequestParameters message, length delimited. Does not implicitly {@link message.support.optimisation.RequestParameters.verify|verify} messages. + * @param {message.support.optimisation.RequestParameters$Properties} message RequestParameters message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.support.optimisation.RequestParameters$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a RequestParameters message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.support.optimisation.RequestParameters} RequestParameters + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.support.optimisation.RequestParameters; + + /** + * Decodes a RequestParameters message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.support.optimisation.RequestParameters} RequestParameters + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.support.optimisation.RequestParameters; + + /** + * Verifies a RequestParameters message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a RequestParameters message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.support.optimisation.RequestParameters} RequestParameters + */ + public static fromObject(object: { [k: string]: any }): message.support.optimisation.RequestParameters; + + /** + * Creates a RequestParameters message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.support.optimisation.RequestParameters.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.support.optimisation.RequestParameters} RequestParameters + */ + public static from(object: { [k: string]: any }): message.support.optimisation.RequestParameters; + + /** + * Creates a plain object from a RequestParameters message. Also converts values to other types if specified. + * @param {message.support.optimisation.RequestParameters} message RequestParameters + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.support.optimisation.RequestParameters, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this RequestParameters message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this RequestParameters to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type Parameters$Properties = { + group?: string; + generation?: number; + samples?: mat$Properties; + covariance?: mat$Properties; + }; + + /** + * Constructs a new Parameters. + * @exports message.support.optimisation.Parameters + * @constructor + * @param {message.support.optimisation.Parameters$Properties=} [properties] Properties to set + */ + class Parameters { + + /** + * Constructs a new Parameters. + * @exports message.support.optimisation.Parameters + * @constructor + * @param {message.support.optimisation.Parameters$Properties=} [properties] Properties to set + */ + constructor(properties?: message.support.optimisation.Parameters$Properties); + + /** + * Parameters group. + * @type {string} + */ + public group: string; + + /** + * Parameters generation. + * @type {number} + */ + public generation: number; + + /** + * Parameters samples. + * @type {(mat$Properties|null)} + */ + public samples: (mat$Properties|null); + + /** + * Parameters covariance. + * @type {(mat$Properties|null)} + */ + public covariance: (mat$Properties|null); + + /** + * Creates a new Parameters instance using the specified properties. + * @param {message.support.optimisation.Parameters$Properties=} [properties] Properties to set + * @returns {message.support.optimisation.Parameters} Parameters instance + */ + public static create(properties?: message.support.optimisation.Parameters$Properties): message.support.optimisation.Parameters; + + /** + * Encodes the specified Parameters message. Does not implicitly {@link message.support.optimisation.Parameters.verify|verify} messages. + * @param {message.support.optimisation.Parameters$Properties} message Parameters message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.support.optimisation.Parameters$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Parameters message, length delimited. Does not implicitly {@link message.support.optimisation.Parameters.verify|verify} messages. + * @param {message.support.optimisation.Parameters$Properties} message Parameters message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.support.optimisation.Parameters$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a Parameters message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.support.optimisation.Parameters} Parameters + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.support.optimisation.Parameters; + + /** + * Decodes a Parameters message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.support.optimisation.Parameters} Parameters + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.support.optimisation.Parameters; + + /** + * Verifies a Parameters message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a Parameters message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.support.optimisation.Parameters} Parameters + */ + public static fromObject(object: { [k: string]: any }): message.support.optimisation.Parameters; + + /** + * Creates a Parameters message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.support.optimisation.Parameters.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.support.optimisation.Parameters} Parameters + */ + public static from(object: { [k: string]: any }): message.support.optimisation.Parameters; + + /** + * Creates a plain object from a Parameters message. Also converts values to other types if specified. + * @param {message.support.optimisation.Parameters} message Parameters + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.support.optimisation.Parameters, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this Parameters message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this Parameters to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type OptimiserEstimate$Properties = { + generation?: number; + estimate?: vec$Properties; + covariance?: mat$Properties; + }; + + /** + * Constructs a new OptimiserEstimate. + * @exports message.support.optimisation.OptimiserEstimate + * @constructor + * @param {message.support.optimisation.OptimiserEstimate$Properties=} [properties] Properties to set + */ + class OptimiserEstimate { + + /** + * Constructs a new OptimiserEstimate. + * @exports message.support.optimisation.OptimiserEstimate + * @constructor + * @param {message.support.optimisation.OptimiserEstimate$Properties=} [properties] Properties to set + */ + constructor(properties?: message.support.optimisation.OptimiserEstimate$Properties); + + /** + * OptimiserEstimate generation. + * @type {number} + */ + public generation: number; + + /** + * OptimiserEstimate estimate. + * @type {(vec$Properties|null)} + */ + public estimate: (vec$Properties|null); + + /** + * OptimiserEstimate covariance. + * @type {(mat$Properties|null)} + */ + public covariance: (mat$Properties|null); + + /** + * Creates a new OptimiserEstimate instance using the specified properties. + * @param {message.support.optimisation.OptimiserEstimate$Properties=} [properties] Properties to set + * @returns {message.support.optimisation.OptimiserEstimate} OptimiserEstimate instance + */ + public static create(properties?: message.support.optimisation.OptimiserEstimate$Properties): message.support.optimisation.OptimiserEstimate; + + /** + * Encodes the specified OptimiserEstimate message. Does not implicitly {@link message.support.optimisation.OptimiserEstimate.verify|verify} messages. + * @param {message.support.optimisation.OptimiserEstimate$Properties} message OptimiserEstimate message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.support.optimisation.OptimiserEstimate$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified OptimiserEstimate message, length delimited. Does not implicitly {@link message.support.optimisation.OptimiserEstimate.verify|verify} messages. + * @param {message.support.optimisation.OptimiserEstimate$Properties} message OptimiserEstimate message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.support.optimisation.OptimiserEstimate$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an OptimiserEstimate message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.support.optimisation.OptimiserEstimate} OptimiserEstimate + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.support.optimisation.OptimiserEstimate; + + /** + * Decodes an OptimiserEstimate message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.support.optimisation.OptimiserEstimate} OptimiserEstimate + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.support.optimisation.OptimiserEstimate; + + /** + * Verifies an OptimiserEstimate message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates an OptimiserEstimate message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.support.optimisation.OptimiserEstimate} OptimiserEstimate + */ + public static fromObject(object: { [k: string]: any }): message.support.optimisation.OptimiserEstimate; + + /** + * Creates an OptimiserEstimate message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.support.optimisation.OptimiserEstimate.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.support.optimisation.OptimiserEstimate} OptimiserEstimate + */ + public static from(object: { [k: string]: any }): message.support.optimisation.OptimiserEstimate; + + /** + * Creates a plain object from an OptimiserEstimate message. Also converts values to other types if specified. + * @param {message.support.optimisation.OptimiserEstimate} message OptimiserEstimate + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.support.optimisation.OptimiserEstimate, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this OptimiserEstimate message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this OptimiserEstimate to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type OptimiserParameters$Properties = { + initial?: message.support.optimisation.OptimiserEstimate$Properties; + upperBound?: vec$Properties; + lowerBound?: vec$Properties; + batchSize?: number; + }; + + /** + * Constructs a new OptimiserParameters. + * @exports message.support.optimisation.OptimiserParameters + * @constructor + * @param {message.support.optimisation.OptimiserParameters$Properties=} [properties] Properties to set + */ + class OptimiserParameters { + + /** + * Constructs a new OptimiserParameters. + * @exports message.support.optimisation.OptimiserParameters + * @constructor + * @param {message.support.optimisation.OptimiserParameters$Properties=} [properties] Properties to set + */ + constructor(properties?: message.support.optimisation.OptimiserParameters$Properties); + + /** + * OptimiserParameters initial. + * @type {(message.support.optimisation.OptimiserEstimate$Properties|null)} + */ + public initial: (message.support.optimisation.OptimiserEstimate$Properties|null); + + /** + * OptimiserParameters upperBound. + * @type {(vec$Properties|null)} + */ + public upperBound: (vec$Properties|null); + + /** + * OptimiserParameters lowerBound. + * @type {(vec$Properties|null)} + */ + public lowerBound: (vec$Properties|null); + + /** + * OptimiserParameters batchSize. + * @type {number} + */ + public batchSize: number; + + /** + * Creates a new OptimiserParameters instance using the specified properties. + * @param {message.support.optimisation.OptimiserParameters$Properties=} [properties] Properties to set + * @returns {message.support.optimisation.OptimiserParameters} OptimiserParameters instance + */ + public static create(properties?: message.support.optimisation.OptimiserParameters$Properties): message.support.optimisation.OptimiserParameters; + + /** + * Encodes the specified OptimiserParameters message. Does not implicitly {@link message.support.optimisation.OptimiserParameters.verify|verify} messages. + * @param {message.support.optimisation.OptimiserParameters$Properties} message OptimiserParameters message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.support.optimisation.OptimiserParameters$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified OptimiserParameters message, length delimited. Does not implicitly {@link message.support.optimisation.OptimiserParameters.verify|verify} messages. + * @param {message.support.optimisation.OptimiserParameters$Properties} message OptimiserParameters message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.support.optimisation.OptimiserParameters$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an OptimiserParameters message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.support.optimisation.OptimiserParameters} OptimiserParameters + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.support.optimisation.OptimiserParameters; + + /** + * Decodes an OptimiserParameters message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.support.optimisation.OptimiserParameters} OptimiserParameters + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.support.optimisation.OptimiserParameters; + + /** + * Verifies an OptimiserParameters message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates an OptimiserParameters message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.support.optimisation.OptimiserParameters} OptimiserParameters + */ + public static fromObject(object: { [k: string]: any }): message.support.optimisation.OptimiserParameters; + + /** + * Creates an OptimiserParameters message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.support.optimisation.OptimiserParameters.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.support.optimisation.OptimiserParameters} OptimiserParameters + */ + public static from(object: { [k: string]: any }): message.support.optimisation.OptimiserParameters; + + /** + * Creates a plain object from an OptimiserParameters message. Also converts values to other types if specified. + * @param {message.support.optimisation.OptimiserParameters} message OptimiserParameters + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.support.optimisation.OptimiserParameters, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this OptimiserParameters message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this OptimiserParameters to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type Episode$Properties = { + group?: string; + generation?: number; + values?: vec$Properties; + covariance?: mat$Properties; + fitness?: message.support.optimisation.Episode.Fitness$Properties[]; + }; + + /** + * Constructs a new Episode. + * @exports message.support.optimisation.Episode + * @constructor + * @param {message.support.optimisation.Episode$Properties=} [properties] Properties to set + */ + class Episode { + + /** + * Constructs a new Episode. + * @exports message.support.optimisation.Episode + * @constructor + * @param {message.support.optimisation.Episode$Properties=} [properties] Properties to set + */ + constructor(properties?: message.support.optimisation.Episode$Properties); + + /** + * Episode group. + * @type {string} + */ + public group: string; + + /** + * Episode generation. + * @type {number} + */ + public generation: number; + + /** + * Episode values. + * @type {(vec$Properties|null)} + */ + public values: (vec$Properties|null); + + /** + * Episode covariance. + * @type {(mat$Properties|null)} + */ + public covariance: (mat$Properties|null); + + /** + * Episode fitness. + * @type {Array.} + */ + public fitness: message.support.optimisation.Episode.Fitness$Properties[]; + + /** + * Creates a new Episode instance using the specified properties. + * @param {message.support.optimisation.Episode$Properties=} [properties] Properties to set + * @returns {message.support.optimisation.Episode} Episode instance + */ + public static create(properties?: message.support.optimisation.Episode$Properties): message.support.optimisation.Episode; + + /** + * Encodes the specified Episode message. Does not implicitly {@link message.support.optimisation.Episode.verify|verify} messages. + * @param {message.support.optimisation.Episode$Properties} message Episode message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.support.optimisation.Episode$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Episode message, length delimited. Does not implicitly {@link message.support.optimisation.Episode.verify|verify} messages. + * @param {message.support.optimisation.Episode$Properties} message Episode message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.support.optimisation.Episode$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an Episode message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.support.optimisation.Episode} Episode + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.support.optimisation.Episode; + + /** + * Decodes an Episode message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.support.optimisation.Episode} Episode + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.support.optimisation.Episode; + + /** + * Verifies an Episode message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates an Episode message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.support.optimisation.Episode} Episode + */ + public static fromObject(object: { [k: string]: any }): message.support.optimisation.Episode; + + /** + * Creates an Episode message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.support.optimisation.Episode.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.support.optimisation.Episode} Episode + */ + public static from(object: { [k: string]: any }): message.support.optimisation.Episode; + + /** + * Creates a plain object from an Episode message. Also converts values to other types if specified. + * @param {message.support.optimisation.Episode} message Episode + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.support.optimisation.Episode, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this Episode message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this Episode to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + namespace Episode { + + type Fitness$Properties = { + fitness?: number; + weight?: number; + }; + + /** + * Constructs a new Fitness. + * @exports message.support.optimisation.Episode.Fitness + * @constructor + * @param {message.support.optimisation.Episode.Fitness$Properties=} [properties] Properties to set + */ + class Fitness { + + /** + * Constructs a new Fitness. + * @exports message.support.optimisation.Episode.Fitness + * @constructor + * @param {message.support.optimisation.Episode.Fitness$Properties=} [properties] Properties to set + */ + constructor(properties?: message.support.optimisation.Episode.Fitness$Properties); + + /** + * Fitness fitness. + * @type {number} + */ + public fitness: number; + + /** + * Fitness weight. + * @type {number} + */ + public weight: number; + + /** + * Creates a new Fitness instance using the specified properties. + * @param {message.support.optimisation.Episode.Fitness$Properties=} [properties] Properties to set + * @returns {message.support.optimisation.Episode.Fitness} Fitness instance + */ + public static create(properties?: message.support.optimisation.Episode.Fitness$Properties): message.support.optimisation.Episode.Fitness; + + /** + * Encodes the specified Fitness message. Does not implicitly {@link message.support.optimisation.Episode.Fitness.verify|verify} messages. + * @param {message.support.optimisation.Episode.Fitness$Properties} message Fitness message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.support.optimisation.Episode.Fitness$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Fitness message, length delimited. Does not implicitly {@link message.support.optimisation.Episode.Fitness.verify|verify} messages. + * @param {message.support.optimisation.Episode.Fitness$Properties} message Fitness message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.support.optimisation.Episode.Fitness$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a Fitness message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.support.optimisation.Episode.Fitness} Fitness + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.support.optimisation.Episode.Fitness; + + /** + * Decodes a Fitness message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.support.optimisation.Episode.Fitness} Fitness + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.support.optimisation.Episode.Fitness; + + /** + * Verifies a Fitness message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a Fitness message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.support.optimisation.Episode.Fitness} Fitness + */ + public static fromObject(object: { [k: string]: any }): message.support.optimisation.Episode.Fitness; + + /** + * Creates a Fitness message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.support.optimisation.Episode.Fitness.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.support.optimisation.Episode.Fitness} Fitness + */ + public static from(object: { [k: string]: any }): message.support.optimisation.Episode.Fitness; + + /** + * Creates a plain object from a Fitness message. Also converts values to other types if specified. + * @param {message.support.optimisation.Episode.Fitness} message Fitness + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.support.optimisation.Episode.Fitness, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this Fitness message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this Fitness to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + } + + type Estimate$Properties = { + group?: string; + generation?: number; + values?: vec$Properties; + covariance?: mat$Properties; + estimateEpisode?: message.support.optimisation.Episode$Properties[]; + episode?: message.support.optimisation.Episode$Properties[]; + }; + + /** + * Constructs a new Estimate. + * @exports message.support.optimisation.Estimate + * @constructor + * @param {message.support.optimisation.Estimate$Properties=} [properties] Properties to set + */ + class Estimate { + + /** + * Constructs a new Estimate. + * @exports message.support.optimisation.Estimate + * @constructor + * @param {message.support.optimisation.Estimate$Properties=} [properties] Properties to set + */ + constructor(properties?: message.support.optimisation.Estimate$Properties); + + /** + * Estimate group. + * @type {string} + */ + public group: string; + + /** + * Estimate generation. + * @type {number} + */ + public generation: number; + + /** + * Estimate values. + * @type {(vec$Properties|null)} + */ + public values: (vec$Properties|null); + + /** + * Estimate covariance. + * @type {(mat$Properties|null)} + */ + public covariance: (mat$Properties|null); + + /** + * Estimate estimateEpisode. + * @type {Array.} + */ + public estimateEpisode: message.support.optimisation.Episode$Properties[]; + + /** + * Estimate episode. + * @type {Array.} + */ + public episode: message.support.optimisation.Episode$Properties[]; + + /** + * Creates a new Estimate instance using the specified properties. + * @param {message.support.optimisation.Estimate$Properties=} [properties] Properties to set + * @returns {message.support.optimisation.Estimate} Estimate instance + */ + public static create(properties?: message.support.optimisation.Estimate$Properties): message.support.optimisation.Estimate; + + /** + * Encodes the specified Estimate message. Does not implicitly {@link message.support.optimisation.Estimate.verify|verify} messages. + * @param {message.support.optimisation.Estimate$Properties} message Estimate message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.support.optimisation.Estimate$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Estimate message, length delimited. Does not implicitly {@link message.support.optimisation.Estimate.verify|verify} messages. + * @param {message.support.optimisation.Estimate$Properties} message Estimate message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.support.optimisation.Estimate$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an Estimate message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.support.optimisation.Estimate} Estimate + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.support.optimisation.Estimate; + + /** + * Decodes an Estimate message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.support.optimisation.Estimate} Estimate + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.support.optimisation.Estimate; + + /** + * Verifies an Estimate message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates an Estimate message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.support.optimisation.Estimate} Estimate + */ + public static fromObject(object: { [k: string]: any }): message.support.optimisation.Estimate; + + /** + * Creates an Estimate message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.support.optimisation.Estimate.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.support.optimisation.Estimate} Estimate + */ + public static from(object: { [k: string]: any }): message.support.optimisation.Estimate; + + /** + * Creates a plain object from an Estimate message. Also converts values to other types if specified. + * @param {message.support.optimisation.Estimate} message Estimate + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.support.optimisation.Estimate, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this Estimate message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this Estimate to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + } + } + + /** + * Namespace vision. + * @exports message.vision + * @namespace + */ + namespace vision { + + type ClassifiedImage$Properties = { + sensors?: message.input.Sensors$Properties; + image?: message.input.Image$Properties; + dimensions?: uvec2$Properties; + ballSeedPoints?: message.vision.ClassifiedImage.SeedPoints$Properties[]; + ballPoints?: ivec2$Properties[]; + horizon?: message.vision.Line$Properties; + visualHorizon?: ivec2$Properties[]; + horizontalSegments?: message.vision.ClassifiedImage.Segment$Properties[]; + verticalSegments?: message.vision.ClassifiedImage.Segment$Properties[]; + }; + + /** + * Constructs a new ClassifiedImage. + * @exports message.vision.ClassifiedImage + * @constructor + * @param {message.vision.ClassifiedImage$Properties=} [properties] Properties to set + */ + class ClassifiedImage { + + /** + * Constructs a new ClassifiedImage. + * @exports message.vision.ClassifiedImage + * @constructor + * @param {message.vision.ClassifiedImage$Properties=} [properties] Properties to set + */ + constructor(properties?: message.vision.ClassifiedImage$Properties); + + /** + * ClassifiedImage sensors. + * @type {(message.input.Sensors$Properties|null)} + */ + public sensors: (message.input.Sensors$Properties|null); + + /** + * ClassifiedImage image. + * @type {(message.input.Image$Properties|null)} + */ + public image: (message.input.Image$Properties|null); + + /** + * ClassifiedImage dimensions. + * @type {(uvec2$Properties|null)} + */ + public dimensions: (uvec2$Properties|null); + + /** + * ClassifiedImage ballSeedPoints. + * @type {Array.} + */ + public ballSeedPoints: message.vision.ClassifiedImage.SeedPoints$Properties[]; + + /** + * ClassifiedImage ballPoints. + * @type {Array.} + */ + public ballPoints: ivec2$Properties[]; + + /** + * ClassifiedImage horizon. + * @type {(message.vision.Line$Properties|null)} + */ + public horizon: (message.vision.Line$Properties|null); + + /** + * ClassifiedImage visualHorizon. + * @type {Array.} + */ + public visualHorizon: ivec2$Properties[]; + + /** + * ClassifiedImage horizontalSegments. + * @type {Array.} + */ + public horizontalSegments: message.vision.ClassifiedImage.Segment$Properties[]; + + /** + * ClassifiedImage verticalSegments. + * @type {Array.} + */ + public verticalSegments: message.vision.ClassifiedImage.Segment$Properties[]; + + /** + * Creates a new ClassifiedImage instance using the specified properties. + * @param {message.vision.ClassifiedImage$Properties=} [properties] Properties to set + * @returns {message.vision.ClassifiedImage} ClassifiedImage instance + */ + public static create(properties?: message.vision.ClassifiedImage$Properties): message.vision.ClassifiedImage; + + /** + * Encodes the specified ClassifiedImage message. Does not implicitly {@link message.vision.ClassifiedImage.verify|verify} messages. + * @param {message.vision.ClassifiedImage$Properties} message ClassifiedImage message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.vision.ClassifiedImage$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified ClassifiedImage message, length delimited. Does not implicitly {@link message.vision.ClassifiedImage.verify|verify} messages. + * @param {message.vision.ClassifiedImage$Properties} message ClassifiedImage message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.vision.ClassifiedImage$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a ClassifiedImage message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.vision.ClassifiedImage} ClassifiedImage + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.vision.ClassifiedImage; + + /** + * Decodes a ClassifiedImage message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.vision.ClassifiedImage} ClassifiedImage + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.vision.ClassifiedImage; + + /** + * Verifies a ClassifiedImage message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a ClassifiedImage message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.vision.ClassifiedImage} ClassifiedImage + */ + public static fromObject(object: { [k: string]: any }): message.vision.ClassifiedImage; + + /** + * Creates a ClassifiedImage message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.vision.ClassifiedImage.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.vision.ClassifiedImage} ClassifiedImage + */ + public static from(object: { [k: string]: any }): message.vision.ClassifiedImage; + + /** + * Creates a plain object from a ClassifiedImage message. Also converts values to other types if specified. + * @param {message.vision.ClassifiedImage} message ClassifiedImage + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.vision.ClassifiedImage, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this ClassifiedImage message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this ClassifiedImage to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + namespace ClassifiedImage { + + /** + * SegmentClass enum. + * @name SegmentClass + * @memberof message.vision.ClassifiedImage + * @enum {number} + * @property {number} UNKNOWN_CLASS=0 UNKNOWN_CLASS value + * @property {number} FIELD=1 FIELD value + * @property {number} BALL=2 BALL value + * @property {number} GOAL=3 GOAL value + * @property {number} LINE=4 LINE value + * @property {number} CYAN_TEAM=5 CYAN_TEAM value + * @property {number} MAGENTA_TEAM=6 MAGENTA_TEAM value + */ + enum SegmentClass { + UNKNOWN_CLASS = 0, + FIELD = 1, + BALL = 2, + GOAL = 3, + LINE = 4, + CYAN_TEAM = 5, + MAGENTA_TEAM = 6 + } + + type Segment$Properties = { + segmentClass?: message.vision.ClassifiedImage.SegmentClass; + length?: number; + subsample?: number; + start?: ivec2$Properties; + end?: ivec2$Properties; + midpoint?: ivec2$Properties; + previous?: number; + next?: number; + }; + + /** + * Constructs a new Segment. + * @exports message.vision.ClassifiedImage.Segment + * @constructor + * @param {message.vision.ClassifiedImage.Segment$Properties=} [properties] Properties to set + */ + class Segment { + + /** + * Constructs a new Segment. + * @exports message.vision.ClassifiedImage.Segment + * @constructor + * @param {message.vision.ClassifiedImage.Segment$Properties=} [properties] Properties to set + */ + constructor(properties?: message.vision.ClassifiedImage.Segment$Properties); + + /** + * Segment segmentClass. + * @type {message.vision.ClassifiedImage.SegmentClass} + */ + public segmentClass: message.vision.ClassifiedImage.SegmentClass; + + /** + * Segment length. + * @type {number} + */ + public length: number; + + /** + * Segment subsample. + * @type {number} + */ + public subsample: number; + + /** + * Segment start. + * @type {(ivec2$Properties|null)} + */ + public start: (ivec2$Properties|null); + + /** + * Segment end. + * @type {(ivec2$Properties|null)} + */ + public end: (ivec2$Properties|null); + + /** + * Segment midpoint. + * @type {(ivec2$Properties|null)} + */ + public midpoint: (ivec2$Properties|null); + + /** + * Segment previous. + * @type {number} + */ + public previous: number; + + /** + * Segment next. + * @type {number} + */ + public next: number; + + /** + * Creates a new Segment instance using the specified properties. + * @param {message.vision.ClassifiedImage.Segment$Properties=} [properties] Properties to set + * @returns {message.vision.ClassifiedImage.Segment} Segment instance + */ + public static create(properties?: message.vision.ClassifiedImage.Segment$Properties): message.vision.ClassifiedImage.Segment; + + /** + * Encodes the specified Segment message. Does not implicitly {@link message.vision.ClassifiedImage.Segment.verify|verify} messages. + * @param {message.vision.ClassifiedImage.Segment$Properties} message Segment message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.vision.ClassifiedImage.Segment$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Segment message, length delimited. Does not implicitly {@link message.vision.ClassifiedImage.Segment.verify|verify} messages. + * @param {message.vision.ClassifiedImage.Segment$Properties} message Segment message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.vision.ClassifiedImage.Segment$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a Segment message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.vision.ClassifiedImage.Segment} Segment + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.vision.ClassifiedImage.Segment; + + /** + * Decodes a Segment message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.vision.ClassifiedImage.Segment} Segment + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.vision.ClassifiedImage.Segment; + + /** + * Verifies a Segment message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a Segment message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.vision.ClassifiedImage.Segment} Segment + */ + public static fromObject(object: { [k: string]: any }): message.vision.ClassifiedImage.Segment; + + /** + * Creates a Segment message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.vision.ClassifiedImage.Segment.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.vision.ClassifiedImage.Segment} Segment + */ + public static from(object: { [k: string]: any }): message.vision.ClassifiedImage.Segment; + + /** + * Creates a plain object from a Segment message. Also converts values to other types if specified. + * @param {message.vision.ClassifiedImage.Segment} message Segment + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.vision.ClassifiedImage.Segment, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this Segment message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this Segment to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type SeedPoints$Properties = { + points?: ivec2$Properties[]; + }; + + /** + * Constructs a new SeedPoints. + * @exports message.vision.ClassifiedImage.SeedPoints + * @constructor + * @param {message.vision.ClassifiedImage.SeedPoints$Properties=} [properties] Properties to set + */ + class SeedPoints { + + /** + * Constructs a new SeedPoints. + * @exports message.vision.ClassifiedImage.SeedPoints + * @constructor + * @param {message.vision.ClassifiedImage.SeedPoints$Properties=} [properties] Properties to set + */ + constructor(properties?: message.vision.ClassifiedImage.SeedPoints$Properties); + + /** + * SeedPoints points. + * @type {Array.} + */ + public points: ivec2$Properties[]; + + /** + * Creates a new SeedPoints instance using the specified properties. + * @param {message.vision.ClassifiedImage.SeedPoints$Properties=} [properties] Properties to set + * @returns {message.vision.ClassifiedImage.SeedPoints} SeedPoints instance + */ + public static create(properties?: message.vision.ClassifiedImage.SeedPoints$Properties): message.vision.ClassifiedImage.SeedPoints; + + /** + * Encodes the specified SeedPoints message. Does not implicitly {@link message.vision.ClassifiedImage.SeedPoints.verify|verify} messages. + * @param {message.vision.ClassifiedImage.SeedPoints$Properties} message SeedPoints message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.vision.ClassifiedImage.SeedPoints$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified SeedPoints message, length delimited. Does not implicitly {@link message.vision.ClassifiedImage.SeedPoints.verify|verify} messages. + * @param {message.vision.ClassifiedImage.SeedPoints$Properties} message SeedPoints message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.vision.ClassifiedImage.SeedPoints$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a SeedPoints message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.vision.ClassifiedImage.SeedPoints} SeedPoints + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.vision.ClassifiedImage.SeedPoints; + + /** + * Decodes a SeedPoints message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.vision.ClassifiedImage.SeedPoints} SeedPoints + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.vision.ClassifiedImage.SeedPoints; + + /** + * Verifies a SeedPoints message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a SeedPoints message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.vision.ClassifiedImage.SeedPoints} SeedPoints + */ + public static fromObject(object: { [k: string]: any }): message.vision.ClassifiedImage.SeedPoints; + + /** + * Creates a SeedPoints message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.vision.ClassifiedImage.SeedPoints.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.vision.ClassifiedImage.SeedPoints} SeedPoints + */ + public static from(object: { [k: string]: any }): message.vision.ClassifiedImage.SeedPoints; + + /** + * Creates a plain object from a SeedPoints message. Also converts values to other types if specified. + * @param {message.vision.ClassifiedImage.SeedPoints} message SeedPoints + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.vision.ClassifiedImage.SeedPoints, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this SeedPoints message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this SeedPoints to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + } + + type LookUpTable$Properties = { + table?: Uint8Array; + bitsY?: number; + bitsCb?: number; + bitsCr?: number; + }; + + /** + * Constructs a new LookUpTable. + * @exports message.vision.LookUpTable + * @constructor + * @param {message.vision.LookUpTable$Properties=} [properties] Properties to set + */ + class LookUpTable { + + /** + * Constructs a new LookUpTable. + * @exports message.vision.LookUpTable + * @constructor + * @param {message.vision.LookUpTable$Properties=} [properties] Properties to set + */ + constructor(properties?: message.vision.LookUpTable$Properties); + + /** + * LookUpTable table. + * @type {Uint8Array} + */ + public table: Uint8Array; + + /** + * LookUpTable bitsY. + * @type {number} + */ + public bitsY: number; + + /** + * LookUpTable bitsCb. + * @type {number} + */ + public bitsCb: number; + + /** + * LookUpTable bitsCr. + * @type {number} + */ + public bitsCr: number; + + /** + * Creates a new LookUpTable instance using the specified properties. + * @param {message.vision.LookUpTable$Properties=} [properties] Properties to set + * @returns {message.vision.LookUpTable} LookUpTable instance + */ + public static create(properties?: message.vision.LookUpTable$Properties): message.vision.LookUpTable; + + /** + * Encodes the specified LookUpTable message. Does not implicitly {@link message.vision.LookUpTable.verify|verify} messages. + * @param {message.vision.LookUpTable$Properties} message LookUpTable message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.vision.LookUpTable$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified LookUpTable message, length delimited. Does not implicitly {@link message.vision.LookUpTable.verify|verify} messages. + * @param {message.vision.LookUpTable$Properties} message LookUpTable message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.vision.LookUpTable$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a LookUpTable message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.vision.LookUpTable} LookUpTable + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.vision.LookUpTable; + + /** + * Decodes a LookUpTable message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.vision.LookUpTable} LookUpTable + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.vision.LookUpTable; + + /** + * Verifies a LookUpTable message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a LookUpTable message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.vision.LookUpTable} LookUpTable + */ + public static fromObject(object: { [k: string]: any }): message.vision.LookUpTable; + + /** + * Creates a LookUpTable message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.vision.LookUpTable.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.vision.LookUpTable} LookUpTable + */ + public static from(object: { [k: string]: any }): message.vision.LookUpTable; + + /** + * Creates a plain object from a LookUpTable message. Also converts values to other types if specified. + * @param {message.vision.LookUpTable} message LookUpTable + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.vision.LookUpTable, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this LookUpTable message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this LookUpTable to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type SaveLookUpTable$Properties = {}; + + /** + * Constructs a new SaveLookUpTable. + * @exports message.vision.SaveLookUpTable + * @constructor + * @param {message.vision.SaveLookUpTable$Properties=} [properties] Properties to set + */ + class SaveLookUpTable { + + /** + * Constructs a new SaveLookUpTable. + * @exports message.vision.SaveLookUpTable + * @constructor + * @param {message.vision.SaveLookUpTable$Properties=} [properties] Properties to set + */ + constructor(properties?: message.vision.SaveLookUpTable$Properties); + + /** + * Creates a new SaveLookUpTable instance using the specified properties. + * @param {message.vision.SaveLookUpTable$Properties=} [properties] Properties to set + * @returns {message.vision.SaveLookUpTable} SaveLookUpTable instance + */ + public static create(properties?: message.vision.SaveLookUpTable$Properties): message.vision.SaveLookUpTable; + + /** + * Encodes the specified SaveLookUpTable message. Does not implicitly {@link message.vision.SaveLookUpTable.verify|verify} messages. + * @param {message.vision.SaveLookUpTable$Properties} message SaveLookUpTable message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.vision.SaveLookUpTable$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified SaveLookUpTable message, length delimited. Does not implicitly {@link message.vision.SaveLookUpTable.verify|verify} messages. + * @param {message.vision.SaveLookUpTable$Properties} message SaveLookUpTable message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.vision.SaveLookUpTable$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a SaveLookUpTable message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.vision.SaveLookUpTable} SaveLookUpTable + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.vision.SaveLookUpTable; + + /** + * Decodes a SaveLookUpTable message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.vision.SaveLookUpTable} SaveLookUpTable + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.vision.SaveLookUpTable; + + /** + * Verifies a SaveLookUpTable message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a SaveLookUpTable message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.vision.SaveLookUpTable} SaveLookUpTable + */ + public static fromObject(object: { [k: string]: any }): message.vision.SaveLookUpTable; + + /** + * Creates a SaveLookUpTable message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.vision.SaveLookUpTable.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.vision.SaveLookUpTable} SaveLookUpTable + */ + public static from(object: { [k: string]: any }): message.vision.SaveLookUpTable; + + /** + * Creates a plain object from a SaveLookUpTable message. Also converts values to other types if specified. + * @param {message.vision.SaveLookUpTable} message SaveLookUpTable + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.vision.SaveLookUpTable, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this SaveLookUpTable message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this SaveLookUpTable to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type LookUpTableDiff$Properties = { + diff?: message.vision.LookUpTableDiff.Diff$Properties[]; + }; + + /** + * Constructs a new LookUpTableDiff. + * @exports message.vision.LookUpTableDiff + * @constructor + * @param {message.vision.LookUpTableDiff$Properties=} [properties] Properties to set + */ + class LookUpTableDiff { + + /** + * Constructs a new LookUpTableDiff. + * @exports message.vision.LookUpTableDiff + * @constructor + * @param {message.vision.LookUpTableDiff$Properties=} [properties] Properties to set + */ + constructor(properties?: message.vision.LookUpTableDiff$Properties); + + /** + * LookUpTableDiff diff. + * @type {Array.} + */ + public diff: message.vision.LookUpTableDiff.Diff$Properties[]; + + /** + * Creates a new LookUpTableDiff instance using the specified properties. + * @param {message.vision.LookUpTableDiff$Properties=} [properties] Properties to set + * @returns {message.vision.LookUpTableDiff} LookUpTableDiff instance + */ + public static create(properties?: message.vision.LookUpTableDiff$Properties): message.vision.LookUpTableDiff; + + /** + * Encodes the specified LookUpTableDiff message. Does not implicitly {@link message.vision.LookUpTableDiff.verify|verify} messages. + * @param {message.vision.LookUpTableDiff$Properties} message LookUpTableDiff message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.vision.LookUpTableDiff$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified LookUpTableDiff message, length delimited. Does not implicitly {@link message.vision.LookUpTableDiff.verify|verify} messages. + * @param {message.vision.LookUpTableDiff$Properties} message LookUpTableDiff message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.vision.LookUpTableDiff$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a LookUpTableDiff message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.vision.LookUpTableDiff} LookUpTableDiff + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.vision.LookUpTableDiff; + + /** + * Decodes a LookUpTableDiff message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.vision.LookUpTableDiff} LookUpTableDiff + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.vision.LookUpTableDiff; + + /** + * Verifies a LookUpTableDiff message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a LookUpTableDiff message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.vision.LookUpTableDiff} LookUpTableDiff + */ + public static fromObject(object: { [k: string]: any }): message.vision.LookUpTableDiff; + + /** + * Creates a LookUpTableDiff message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.vision.LookUpTableDiff.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.vision.LookUpTableDiff} LookUpTableDiff + */ + public static from(object: { [k: string]: any }): message.vision.LookUpTableDiff; + + /** + * Creates a plain object from a LookUpTableDiff message. Also converts values to other types if specified. + * @param {message.vision.LookUpTableDiff} message LookUpTableDiff + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.vision.LookUpTableDiff, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this LookUpTableDiff message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this LookUpTableDiff to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + namespace LookUpTableDiff { + + type Diff$Properties = { + lutIndex?: number; + classification?: number; + }; + + /** + * Constructs a new Diff. + * @exports message.vision.LookUpTableDiff.Diff + * @constructor + * @param {message.vision.LookUpTableDiff.Diff$Properties=} [properties] Properties to set + */ + class Diff { + + /** + * Constructs a new Diff. + * @exports message.vision.LookUpTableDiff.Diff + * @constructor + * @param {message.vision.LookUpTableDiff.Diff$Properties=} [properties] Properties to set + */ + constructor(properties?: message.vision.LookUpTableDiff.Diff$Properties); + + /** + * Diff lutIndex. + * @type {number} + */ + public lutIndex: number; + + /** + * Diff classification. + * @type {number} + */ + public classification: number; + + /** + * Creates a new Diff instance using the specified properties. + * @param {message.vision.LookUpTableDiff.Diff$Properties=} [properties] Properties to set + * @returns {message.vision.LookUpTableDiff.Diff} Diff instance + */ + public static create(properties?: message.vision.LookUpTableDiff.Diff$Properties): message.vision.LookUpTableDiff.Diff; + + /** + * Encodes the specified Diff message. Does not implicitly {@link message.vision.LookUpTableDiff.Diff.verify|verify} messages. + * @param {message.vision.LookUpTableDiff.Diff$Properties} message Diff message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.vision.LookUpTableDiff.Diff$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Diff message, length delimited. Does not implicitly {@link message.vision.LookUpTableDiff.Diff.verify|verify} messages. + * @param {message.vision.LookUpTableDiff.Diff$Properties} message Diff message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.vision.LookUpTableDiff.Diff$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a Diff message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.vision.LookUpTableDiff.Diff} Diff + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.vision.LookUpTableDiff.Diff; + + /** + * Decodes a Diff message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.vision.LookUpTableDiff.Diff} Diff + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.vision.LookUpTableDiff.Diff; + + /** + * Verifies a Diff message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a Diff message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.vision.LookUpTableDiff.Diff} Diff + */ + public static fromObject(object: { [k: string]: any }): message.vision.LookUpTableDiff.Diff; + + /** + * Creates a Diff message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.vision.LookUpTableDiff.Diff.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.vision.LookUpTableDiff.Diff} Diff + */ + public static from(object: { [k: string]: any }): message.vision.LookUpTableDiff.Diff; + + /** + * Creates a plain object from a Diff message. Also converts values to other types if specified. + * @param {message.vision.LookUpTableDiff.Diff} message Diff + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.vision.LookUpTableDiff.Diff, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this Diff message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this Diff to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + } + + type VisionObject$Properties = { + timestamp?: google.protobuf.Timestamp$Properties; + screenAngular?: vec2$Properties; + angularSize?: vec2$Properties; + sensors?: message.input.Sensors$Properties; + classifiedImage?: message.vision.ClassifiedImage$Properties; + cameraId?: number; + }; + + /** + * Constructs a new VisionObject. + * @exports message.vision.VisionObject + * @constructor + * @param {message.vision.VisionObject$Properties=} [properties] Properties to set + */ + class VisionObject { + + /** + * Constructs a new VisionObject. + * @exports message.vision.VisionObject + * @constructor + * @param {message.vision.VisionObject$Properties=} [properties] Properties to set + */ + constructor(properties?: message.vision.VisionObject$Properties); + + /** + * VisionObject timestamp. + * @type {(google.protobuf.Timestamp$Properties|null)} + */ + public timestamp: (google.protobuf.Timestamp$Properties|null); + + /** + * VisionObject screenAngular. + * @type {(vec2$Properties|null)} + */ + public screenAngular: (vec2$Properties|null); + + /** + * VisionObject angularSize. + * @type {(vec2$Properties|null)} + */ + public angularSize: (vec2$Properties|null); + + /** + * VisionObject sensors. + * @type {(message.input.Sensors$Properties|null)} + */ + public sensors: (message.input.Sensors$Properties|null); + + /** + * VisionObject classifiedImage. + * @type {(message.vision.ClassifiedImage$Properties|null)} + */ + public classifiedImage: (message.vision.ClassifiedImage$Properties|null); + + /** + * VisionObject cameraId. + * @type {number} + */ + public cameraId: number; + + /** + * Creates a new VisionObject instance using the specified properties. + * @param {message.vision.VisionObject$Properties=} [properties] Properties to set + * @returns {message.vision.VisionObject} VisionObject instance + */ + public static create(properties?: message.vision.VisionObject$Properties): message.vision.VisionObject; + + /** + * Encodes the specified VisionObject message. Does not implicitly {@link message.vision.VisionObject.verify|verify} messages. + * @param {message.vision.VisionObject$Properties} message VisionObject message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.vision.VisionObject$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified VisionObject message, length delimited. Does not implicitly {@link message.vision.VisionObject.verify|verify} messages. + * @param {message.vision.VisionObject$Properties} message VisionObject message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.vision.VisionObject$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a VisionObject message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.vision.VisionObject} VisionObject + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.vision.VisionObject; + + /** + * Decodes a VisionObject message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.vision.VisionObject} VisionObject + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.vision.VisionObject; + + /** + * Verifies a VisionObject message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a VisionObject message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.vision.VisionObject} VisionObject + */ + public static fromObject(object: { [k: string]: any }): message.vision.VisionObject; + + /** + * Creates a VisionObject message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.vision.VisionObject.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.vision.VisionObject} VisionObject + */ + public static from(object: { [k: string]: any }): message.vision.VisionObject; + + /** + * Creates a plain object from a VisionObject message. Also converts values to other types if specified. + * @param {message.vision.VisionObject} message VisionObject + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.vision.VisionObject, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this VisionObject message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this VisionObject to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type Ball$Properties = { + visObject?: message.vision.VisionObject$Properties; + position?: vec3$Properties; + torsoSpacePosition?: vec3$Properties; + edgePoints?: vec3$Properties[]; + circle?: message.Circle$Properties; + }; + + /** + * Constructs a new Ball. + * @exports message.vision.Ball + * @constructor + * @param {message.vision.Ball$Properties=} [properties] Properties to set + */ + class Ball { + + /** + * Constructs a new Ball. + * @exports message.vision.Ball + * @constructor + * @param {message.vision.Ball$Properties=} [properties] Properties to set + */ + constructor(properties?: message.vision.Ball$Properties); + + /** + * Ball visObject. + * @type {(message.vision.VisionObject$Properties|null)} + */ + public visObject: (message.vision.VisionObject$Properties|null); + + /** + * Ball position. + * @type {(vec3$Properties|null)} + */ + public position: (vec3$Properties|null); + + /** + * Ball torsoSpacePosition. + * @type {(vec3$Properties|null)} + */ + public torsoSpacePosition: (vec3$Properties|null); + + /** + * Ball edgePoints. + * @type {Array.} + */ + public edgePoints: vec3$Properties[]; + + /** + * Ball circle. + * @type {(message.Circle$Properties|null)} + */ + public circle: (message.Circle$Properties|null); + + /** + * Creates a new Ball instance using the specified properties. + * @param {message.vision.Ball$Properties=} [properties] Properties to set + * @returns {message.vision.Ball} Ball instance + */ + public static create(properties?: message.vision.Ball$Properties): message.vision.Ball; + + /** + * Encodes the specified Ball message. Does not implicitly {@link message.vision.Ball.verify|verify} messages. + * @param {message.vision.Ball$Properties} message Ball message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.vision.Ball$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Ball message, length delimited. Does not implicitly {@link message.vision.Ball.verify|verify} messages. + * @param {message.vision.Ball$Properties} message Ball message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.vision.Ball$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a Ball message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.vision.Ball} Ball + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.vision.Ball; + + /** + * Decodes a Ball message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.vision.Ball} Ball + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.vision.Ball; + + /** + * Verifies a Ball message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a Ball message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.vision.Ball} Ball + */ + public static fromObject(object: { [k: string]: any }): message.vision.Ball; + + /** + * Creates a Ball message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.vision.Ball.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.vision.Ball} Ball + */ + public static from(object: { [k: string]: any }): message.vision.Ball; + + /** + * Creates a plain object from a Ball message. Also converts values to other types if specified. + * @param {message.vision.Ball} message Ball + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.vision.Ball, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this Ball message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this Ball to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type Goal$Properties = { + visObject?: message.vision.VisionObject$Properties; + side?: message.vision.Goal.Side; + team?: message.vision.Goal.Team; + quad?: message.Quad$Properties; + measurement?: message.vision.Goal.Measurement$Properties[]; + }; + + /** + * Constructs a new Goal. + * @exports message.vision.Goal + * @constructor + * @param {message.vision.Goal$Properties=} [properties] Properties to set + */ + class Goal { + + /** + * Constructs a new Goal. + * @exports message.vision.Goal + * @constructor + * @param {message.vision.Goal$Properties=} [properties] Properties to set + */ + constructor(properties?: message.vision.Goal$Properties); + + /** + * Goal visObject. + * @type {(message.vision.VisionObject$Properties|null)} + */ + public visObject: (message.vision.VisionObject$Properties|null); + + /** + * Goal side. + * @type {message.vision.Goal.Side} + */ + public side: message.vision.Goal.Side; + + /** + * Goal team. + * @type {message.vision.Goal.Team} + */ + public team: message.vision.Goal.Team; + + /** + * Goal quad. + * @type {(message.Quad$Properties|null)} + */ + public quad: (message.Quad$Properties|null); + + /** + * Goal measurement. + * @type {Array.} + */ + public measurement: message.vision.Goal.Measurement$Properties[]; + + /** + * Creates a new Goal instance using the specified properties. + * @param {message.vision.Goal$Properties=} [properties] Properties to set + * @returns {message.vision.Goal} Goal instance + */ + public static create(properties?: message.vision.Goal$Properties): message.vision.Goal; + + /** + * Encodes the specified Goal message. Does not implicitly {@link message.vision.Goal.verify|verify} messages. + * @param {message.vision.Goal$Properties} message Goal message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.vision.Goal$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Goal message, length delimited. Does not implicitly {@link message.vision.Goal.verify|verify} messages. + * @param {message.vision.Goal$Properties} message Goal message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.vision.Goal$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a Goal message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.vision.Goal} Goal + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.vision.Goal; + + /** + * Decodes a Goal message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.vision.Goal} Goal + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.vision.Goal; + + /** + * Verifies a Goal message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a Goal message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.vision.Goal} Goal + */ + public static fromObject(object: { [k: string]: any }): message.vision.Goal; + + /** + * Creates a Goal message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.vision.Goal.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.vision.Goal} Goal + */ + public static from(object: { [k: string]: any }): message.vision.Goal; + + /** + * Creates a plain object from a Goal message. Also converts values to other types if specified. + * @param {message.vision.Goal} message Goal + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.vision.Goal, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this Goal message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this Goal to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + namespace Goal { + + /** + * Side enum. + * @name Side + * @memberof message.vision.Goal + * @enum {number} + * @property {number} UNKNOWN_SIDE=0 UNKNOWN_SIDE value + * @property {number} LEFT=1 LEFT value + * @property {number} RIGHT=2 RIGHT value + */ + enum Side { + UNKNOWN_SIDE = 0, + LEFT = 1, + RIGHT = 2 + } + + /** + * Team enum. + * @name Team + * @memberof message.vision.Goal + * @enum {number} + * @property {number} UNKNOWN_TEAM=0 UNKNOWN_TEAM value + * @property {number} OWN=1 OWN value + * @property {number} OPPONENT=2 OPPONENT value + */ + enum Team { + UNKNOWN_TEAM = 0, + OWN = 1, + OPPONENT = 2 + } + + /** + * MeasurementType enum. + * @name MeasurementType + * @memberof message.vision.Goal + * @enum {number} + * @property {number} UNKNOWN_MEASUREMENT=0 UNKNOWN_MEASUREMENT value + * @property {number} LEFT_NORMAL=1 LEFT_NORMAL value + * @property {number} RIGHT_NORMAL=2 RIGHT_NORMAL value + * @property {number} TOP_NORMAL=3 TOP_NORMAL value + * @property {number} BASE_NORMAL=4 BASE_NORMAL value + */ + enum MeasurementType { + UNKNOWN_MEASUREMENT = 0, + LEFT_NORMAL = 1, + RIGHT_NORMAL = 2, + TOP_NORMAL = 3, + BASE_NORMAL = 4 + } + + type Measurement$Properties = { + type?: message.vision.Goal.MeasurementType; + position?: vec3$Properties; + }; + + /** + * Constructs a new Measurement. + * @exports message.vision.Goal.Measurement + * @constructor + * @param {message.vision.Goal.Measurement$Properties=} [properties] Properties to set + */ + class Measurement { + + /** + * Constructs a new Measurement. + * @exports message.vision.Goal.Measurement + * @constructor + * @param {message.vision.Goal.Measurement$Properties=} [properties] Properties to set + */ + constructor(properties?: message.vision.Goal.Measurement$Properties); + + /** + * Measurement type. + * @type {message.vision.Goal.MeasurementType} + */ + public type: message.vision.Goal.MeasurementType; + + /** + * Measurement position. + * @type {(vec3$Properties|null)} + */ + public position: (vec3$Properties|null); + + /** + * Creates a new Measurement instance using the specified properties. + * @param {message.vision.Goal.Measurement$Properties=} [properties] Properties to set + * @returns {message.vision.Goal.Measurement} Measurement instance + */ + public static create(properties?: message.vision.Goal.Measurement$Properties): message.vision.Goal.Measurement; + + /** + * Encodes the specified Measurement message. Does not implicitly {@link message.vision.Goal.Measurement.verify|verify} messages. + * @param {message.vision.Goal.Measurement$Properties} message Measurement message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.vision.Goal.Measurement$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Measurement message, length delimited. Does not implicitly {@link message.vision.Goal.Measurement.verify|verify} messages. + * @param {message.vision.Goal.Measurement$Properties} message Measurement message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.vision.Goal.Measurement$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a Measurement message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.vision.Goal.Measurement} Measurement + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.vision.Goal.Measurement; + + /** + * Decodes a Measurement message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.vision.Goal.Measurement} Measurement + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.vision.Goal.Measurement; + + /** + * Verifies a Measurement message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a Measurement message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.vision.Goal.Measurement} Measurement + */ + public static fromObject(object: { [k: string]: any }): message.vision.Goal.Measurement; + + /** + * Creates a Measurement message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.vision.Goal.Measurement.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.vision.Goal.Measurement} Measurement + */ + public static from(object: { [k: string]: any }): message.vision.Goal.Measurement; + + /** + * Creates a plain object from a Measurement message. Also converts values to other types if specified. + * @param {message.vision.Goal.Measurement} message Measurement + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.vision.Goal.Measurement, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this Measurement message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this Measurement to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + } + + type Obstacle$Properties = { + visObject?: message.vision.VisionObject$Properties; + shape?: message.Polygon$Properties; + team?: message.vision.Obstacle.Team; + }; + + /** + * Constructs a new Obstacle. + * @exports message.vision.Obstacle + * @constructor + * @param {message.vision.Obstacle$Properties=} [properties] Properties to set + */ + class Obstacle { + + /** + * Constructs a new Obstacle. + * @exports message.vision.Obstacle + * @constructor + * @param {message.vision.Obstacle$Properties=} [properties] Properties to set + */ + constructor(properties?: message.vision.Obstacle$Properties); + + /** + * Obstacle visObject. + * @type {(message.vision.VisionObject$Properties|null)} + */ + public visObject: (message.vision.VisionObject$Properties|null); + + /** + * Obstacle shape. + * @type {(message.Polygon$Properties|null)} + */ + public shape: (message.Polygon$Properties|null); + + /** + * Obstacle team. + * @type {message.vision.Obstacle.Team} + */ + public team: message.vision.Obstacle.Team; + + /** + * Creates a new Obstacle instance using the specified properties. + * @param {message.vision.Obstacle$Properties=} [properties] Properties to set + * @returns {message.vision.Obstacle} Obstacle instance + */ + public static create(properties?: message.vision.Obstacle$Properties): message.vision.Obstacle; + + /** + * Encodes the specified Obstacle message. Does not implicitly {@link message.vision.Obstacle.verify|verify} messages. + * @param {message.vision.Obstacle$Properties} message Obstacle message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.vision.Obstacle$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Obstacle message, length delimited. Does not implicitly {@link message.vision.Obstacle.verify|verify} messages. + * @param {message.vision.Obstacle$Properties} message Obstacle message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.vision.Obstacle$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes an Obstacle message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.vision.Obstacle} Obstacle + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.vision.Obstacle; + + /** + * Decodes an Obstacle message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.vision.Obstacle} Obstacle + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.vision.Obstacle; + + /** + * Verifies an Obstacle message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates an Obstacle message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.vision.Obstacle} Obstacle + */ + public static fromObject(object: { [k: string]: any }): message.vision.Obstacle; + + /** + * Creates an Obstacle message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.vision.Obstacle.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.vision.Obstacle} Obstacle + */ + public static from(object: { [k: string]: any }): message.vision.Obstacle; + + /** + * Creates a plain object from an Obstacle message. Also converts values to other types if specified. + * @param {message.vision.Obstacle} message Obstacle + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.vision.Obstacle, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this Obstacle message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this Obstacle to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + namespace Obstacle { + + /** + * Team enum. + * @name Team + * @memberof message.vision.Obstacle + * @enum {number} + * @property {number} UNKNOWN_TEAM=0 UNKNOWN_TEAM value + * @property {number} MAGENTA=1 MAGENTA value + * @property {number} CYAN=2 CYAN value + */ + enum Team { + UNKNOWN_TEAM = 0, + MAGENTA = 1, + CYAN = 2 + } + } + + type Line$Properties = { + visObject?: message.vision.VisionObject$Properties; + start?: ivec2$Properties; + end?: ivec2$Properties; + colour?: vec4$Properties; + }; + + /** + * Constructs a new Line. + * @exports message.vision.Line + * @constructor + * @param {message.vision.Line$Properties=} [properties] Properties to set + */ + class Line { + + /** + * Constructs a new Line. + * @exports message.vision.Line + * @constructor + * @param {message.vision.Line$Properties=} [properties] Properties to set + */ + constructor(properties?: message.vision.Line$Properties); + + /** + * Line visObject. + * @type {(message.vision.VisionObject$Properties|null)} + */ + public visObject: (message.vision.VisionObject$Properties|null); + + /** + * Line start. + * @type {(ivec2$Properties|null)} + */ + public start: (ivec2$Properties|null); + + /** + * Line end. + * @type {(ivec2$Properties|null)} + */ + public end: (ivec2$Properties|null); + + /** + * Line colour. + * @type {(vec4$Properties|null)} + */ + public colour: (vec4$Properties|null); + + /** + * Creates a new Line instance using the specified properties. + * @param {message.vision.Line$Properties=} [properties] Properties to set + * @returns {message.vision.Line} Line instance + */ + public static create(properties?: message.vision.Line$Properties): message.vision.Line; + + /** + * Encodes the specified Line message. Does not implicitly {@link message.vision.Line.verify|verify} messages. + * @param {message.vision.Line$Properties} message Line message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.vision.Line$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Line message, length delimited. Does not implicitly {@link message.vision.Line.verify|verify} messages. + * @param {message.vision.Line$Properties} message Line message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.vision.Line$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a Line message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.vision.Line} Line + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.vision.Line; + + /** + * Decodes a Line message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.vision.Line} Line + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.vision.Line; + + /** + * Verifies a Line message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a Line message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.vision.Line} Line + */ + public static fromObject(object: { [k: string]: any }): message.vision.Line; + + /** + * Creates a Line message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.vision.Line.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.vision.Line} Line + */ + public static from(object: { [k: string]: any }): message.vision.Line; + + /** + * Creates a plain object from a Line message. Also converts values to other types if specified. + * @param {message.vision.Line} message Line + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.vision.Line, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this Line message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this Line to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type NUsightBalls$Properties = { + balls?: message.vision.Ball$Properties[]; + }; + + /** + * Constructs a new NUsightBalls. + * @exports message.vision.NUsightBalls + * @constructor + * @param {message.vision.NUsightBalls$Properties=} [properties] Properties to set + */ + class NUsightBalls { + + /** + * Constructs a new NUsightBalls. + * @exports message.vision.NUsightBalls + * @constructor + * @param {message.vision.NUsightBalls$Properties=} [properties] Properties to set + */ + constructor(properties?: message.vision.NUsightBalls$Properties); + + /** + * NUsightBalls balls. + * @type {Array.} + */ + public balls: message.vision.Ball$Properties[]; + + /** + * Creates a new NUsightBalls instance using the specified properties. + * @param {message.vision.NUsightBalls$Properties=} [properties] Properties to set + * @returns {message.vision.NUsightBalls} NUsightBalls instance + */ + public static create(properties?: message.vision.NUsightBalls$Properties): message.vision.NUsightBalls; + + /** + * Encodes the specified NUsightBalls message. Does not implicitly {@link message.vision.NUsightBalls.verify|verify} messages. + * @param {message.vision.NUsightBalls$Properties} message NUsightBalls message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.vision.NUsightBalls$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified NUsightBalls message, length delimited. Does not implicitly {@link message.vision.NUsightBalls.verify|verify} messages. + * @param {message.vision.NUsightBalls$Properties} message NUsightBalls message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.vision.NUsightBalls$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a NUsightBalls message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.vision.NUsightBalls} NUsightBalls + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.vision.NUsightBalls; + + /** + * Decodes a NUsightBalls message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.vision.NUsightBalls} NUsightBalls + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.vision.NUsightBalls; + + /** + * Verifies a NUsightBalls message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a NUsightBalls message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.vision.NUsightBalls} NUsightBalls + */ + public static fromObject(object: { [k: string]: any }): message.vision.NUsightBalls; + + /** + * Creates a NUsightBalls message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.vision.NUsightBalls.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.vision.NUsightBalls} NUsightBalls + */ + public static from(object: { [k: string]: any }): message.vision.NUsightBalls; + + /** + * Creates a plain object from a NUsightBalls message. Also converts values to other types if specified. + * @param {message.vision.NUsightBalls} message NUsightBalls + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.vision.NUsightBalls, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this NUsightBalls message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this NUsightBalls to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type NUsightGoals$Properties = { + goals?: message.vision.Goal$Properties[]; + }; + + /** + * Constructs a new NUsightGoals. + * @exports message.vision.NUsightGoals + * @constructor + * @param {message.vision.NUsightGoals$Properties=} [properties] Properties to set + */ + class NUsightGoals { + + /** + * Constructs a new NUsightGoals. + * @exports message.vision.NUsightGoals + * @constructor + * @param {message.vision.NUsightGoals$Properties=} [properties] Properties to set + */ + constructor(properties?: message.vision.NUsightGoals$Properties); + + /** + * NUsightGoals goals. + * @type {Array.} + */ + public goals: message.vision.Goal$Properties[]; + + /** + * Creates a new NUsightGoals instance using the specified properties. + * @param {message.vision.NUsightGoals$Properties=} [properties] Properties to set + * @returns {message.vision.NUsightGoals} NUsightGoals instance + */ + public static create(properties?: message.vision.NUsightGoals$Properties): message.vision.NUsightGoals; + + /** + * Encodes the specified NUsightGoals message. Does not implicitly {@link message.vision.NUsightGoals.verify|verify} messages. + * @param {message.vision.NUsightGoals$Properties} message NUsightGoals message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.vision.NUsightGoals$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified NUsightGoals message, length delimited. Does not implicitly {@link message.vision.NUsightGoals.verify|verify} messages. + * @param {message.vision.NUsightGoals$Properties} message NUsightGoals message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.vision.NUsightGoals$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a NUsightGoals message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.vision.NUsightGoals} NUsightGoals + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.vision.NUsightGoals; + + /** + * Decodes a NUsightGoals message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.vision.NUsightGoals} NUsightGoals + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.vision.NUsightGoals; + + /** + * Verifies a NUsightGoals message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a NUsightGoals message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.vision.NUsightGoals} NUsightGoals + */ + public static fromObject(object: { [k: string]: any }): message.vision.NUsightGoals; + + /** + * Creates a NUsightGoals message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.vision.NUsightGoals.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.vision.NUsightGoals} NUsightGoals + */ + public static from(object: { [k: string]: any }): message.vision.NUsightGoals; + + /** + * Creates a plain object from a NUsightGoals message. Also converts values to other types if specified. + * @param {message.vision.NUsightGoals} message NUsightGoals + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.vision.NUsightGoals, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this NUsightGoals message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this NUsightGoals to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type NUsightObstacles$Properties = { + obstacles?: message.vision.Obstacle$Properties[]; + }; + + /** + * Constructs a new NUsightObstacles. + * @exports message.vision.NUsightObstacles + * @constructor + * @param {message.vision.NUsightObstacles$Properties=} [properties] Properties to set + */ + class NUsightObstacles { + + /** + * Constructs a new NUsightObstacles. + * @exports message.vision.NUsightObstacles + * @constructor + * @param {message.vision.NUsightObstacles$Properties=} [properties] Properties to set + */ + constructor(properties?: message.vision.NUsightObstacles$Properties); + + /** + * NUsightObstacles obstacles. + * @type {Array.} + */ + public obstacles: message.vision.Obstacle$Properties[]; + + /** + * Creates a new NUsightObstacles instance using the specified properties. + * @param {message.vision.NUsightObstacles$Properties=} [properties] Properties to set + * @returns {message.vision.NUsightObstacles} NUsightObstacles instance + */ + public static create(properties?: message.vision.NUsightObstacles$Properties): message.vision.NUsightObstacles; + + /** + * Encodes the specified NUsightObstacles message. Does not implicitly {@link message.vision.NUsightObstacles.verify|verify} messages. + * @param {message.vision.NUsightObstacles$Properties} message NUsightObstacles message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.vision.NUsightObstacles$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified NUsightObstacles message, length delimited. Does not implicitly {@link message.vision.NUsightObstacles.verify|verify} messages. + * @param {message.vision.NUsightObstacles$Properties} message NUsightObstacles message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.vision.NUsightObstacles$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a NUsightObstacles message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.vision.NUsightObstacles} NUsightObstacles + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.vision.NUsightObstacles; + + /** + * Decodes a NUsightObstacles message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.vision.NUsightObstacles} NUsightObstacles + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.vision.NUsightObstacles; + + /** + * Verifies a NUsightObstacles message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a NUsightObstacles message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.vision.NUsightObstacles} NUsightObstacles + */ + public static fromObject(object: { [k: string]: any }): message.vision.NUsightObstacles; + + /** + * Creates a NUsightObstacles message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.vision.NUsightObstacles.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.vision.NUsightObstacles} NUsightObstacles + */ + public static from(object: { [k: string]: any }): message.vision.NUsightObstacles; + + /** + * Creates a plain object from a NUsightObstacles message. Also converts values to other types if specified. + * @param {message.vision.NUsightObstacles} message NUsightObstacles + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.vision.NUsightObstacles, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this NUsightObstacles message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this NUsightObstacles to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + + type NUsightLines$Properties = { + lines?: message.vision.Line$Properties[]; + }; + + /** + * Constructs a new NUsightLines. + * @exports message.vision.NUsightLines + * @constructor + * @param {message.vision.NUsightLines$Properties=} [properties] Properties to set + */ + class NUsightLines { + + /** + * Constructs a new NUsightLines. + * @exports message.vision.NUsightLines + * @constructor + * @param {message.vision.NUsightLines$Properties=} [properties] Properties to set + */ + constructor(properties?: message.vision.NUsightLines$Properties); + + /** + * NUsightLines lines. + * @type {Array.} + */ + public lines: message.vision.Line$Properties[]; + + /** + * Creates a new NUsightLines instance using the specified properties. + * @param {message.vision.NUsightLines$Properties=} [properties] Properties to set + * @returns {message.vision.NUsightLines} NUsightLines instance + */ + public static create(properties?: message.vision.NUsightLines$Properties): message.vision.NUsightLines; + + /** + * Encodes the specified NUsightLines message. Does not implicitly {@link message.vision.NUsightLines.verify|verify} messages. + * @param {message.vision.NUsightLines$Properties} message NUsightLines message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encode(message: message.vision.NUsightLines$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified NUsightLines message, length delimited. Does not implicitly {@link message.vision.NUsightLines.verify|verify} messages. + * @param {message.vision.NUsightLines$Properties} message NUsightLines message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + public static encodeDelimited(message: message.vision.NUsightLines$Properties, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a NUsightLines message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.vision.NUsightLines} NUsightLines + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): message.vision.NUsightLines; + + /** + * Decodes a NUsightLines message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.vision.NUsightLines} NUsightLines + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): message.vision.NUsightLines; + + /** + * Verifies a NUsightLines message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string; + + /** + * Creates a NUsightLines message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.vision.NUsightLines} NUsightLines + */ + public static fromObject(object: { [k: string]: any }): message.vision.NUsightLines; + + /** + * Creates a NUsightLines message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.vision.NUsightLines.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.vision.NUsightLines} NUsightLines + */ + public static from(object: { [k: string]: any }): message.vision.NUsightLines; + + /** + * Creates a plain object from a NUsightLines message. Also converts values to other types if specified. + * @param {message.vision.NUsightLines} message NUsightLines + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public static toObject(message: message.vision.NUsightLines, options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Creates a plain object from this NUsightLines message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + public toObject(options?: $protobuf.ConversionOptions): { [k: string]: any }; + + /** + * Converts this NUsightLines to JSON. + * @returns {Object.} JSON object + */ + public toJSON(): { [k: string]: any }; + } + } +} diff --git a/src/shared/proto/messages.js b/src/shared/proto/messages.js new file mode 100644 index 00000000..d81b0be8 --- /dev/null +++ b/src/shared/proto/messages.js @@ -0,0 +1,60347 @@ +/*eslint-disable block-scoped-var, no-redeclare, no-control-regex, no-prototype-builtins*/ +"use strict"; + +var $protobuf = require("protobufjs/minimal"); + +// Common aliases +var $Reader = $protobuf.Reader, $Writer = $protobuf.Writer, $util = $protobuf.util; + +// Exported root namespace +var $root = $protobuf.roots["default"] || ($protobuf.roots["default"] = {}); + +$root.mat = (function() { + + /** + * Properties of a mat. + * @typedef mat$Properties + * @type {Object} + * @property {number} [rows] mat rows. + * @property {number} [cols] mat cols. + * @property {Array.} [v] mat v. + */ + + /** + * Constructs a new mat. + * @exports mat + * @constructor + * @param {mat$Properties=} [properties] Properties to set + */ + function mat(properties) { + this.v = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * mat rows. + * @type {number} + */ + mat.prototype.rows = 0; + + /** + * mat cols. + * @type {number} + */ + mat.prototype.cols = 0; + + /** + * mat v. + * @type {Array.} + */ + mat.prototype.v = $util.emptyArray; + + /** + * Creates a new mat instance using the specified properties. + * @param {mat$Properties=} [properties] Properties to set + * @returns {mat} mat instance + */ + mat.create = function create(properties) { + return new mat(properties); + }; + + /** + * Encodes the specified mat message. Does not implicitly {@link mat.verify|verify} messages. + * @param {mat$Properties} message mat message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + mat.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.rows != null && message.hasOwnProperty("rows")) + writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.rows); + if (message.cols != null && message.hasOwnProperty("cols")) + writer.uint32(/* id 2, wireType 0 =*/16).uint32(message.cols); + if (message.v != null && message.v.length) { + writer.uint32(/* id 3, wireType 2 =*/26).fork(); + for (var i = 0; i < message.v.length; ++i) + writer.double(message.v[i]); + writer.ldelim(); + } + return writer; + }; + + /** + * Encodes the specified mat message, length delimited. Does not implicitly {@link mat.verify|verify} messages. + * @param {mat$Properties} message mat message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + mat.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a mat message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {mat} mat + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + mat.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.mat(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.rows = reader.uint32(); + break; + case 2: + message.cols = reader.uint32(); + break; + case 3: + if (!(message.v && message.v.length)) + message.v = []; + if ((tag & 7) === 2) { + var end2 = reader.uint32() + reader.pos; + while (reader.pos < end2) + message.v.push(reader.double()); + } else + message.v.push(reader.double()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a mat message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {mat} mat + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + mat.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a mat message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + mat.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.rows != null && message.hasOwnProperty("rows")) + if (!$util.isInteger(message.rows)) + return "rows: integer expected"; + if (message.cols != null && message.hasOwnProperty("cols")) + if (!$util.isInteger(message.cols)) + return "cols: integer expected"; + if (message.v != null && message.hasOwnProperty("v")) { + if (!Array.isArray(message.v)) + return "v: array expected"; + for (var i = 0; i < message.v.length; ++i) + if (typeof message.v[i] !== "number") + return "v: number[] expected"; + } + return null; + }; + + /** + * Creates a mat message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {mat} mat + */ + mat.fromObject = function fromObject(object) { + if (object instanceof $root.mat) + return object; + var message = new $root.mat(); + if (object.rows != null) + message.rows = object.rows >>> 0; + if (object.cols != null) + message.cols = object.cols >>> 0; + if (object.v) { + if (!Array.isArray(object.v)) + throw TypeError(".mat.v: array expected"); + message.v = []; + for (var i = 0; i < object.v.length; ++i) + message.v[i] = Number(object.v[i]); + } + return message; + }; + + /** + * Creates a mat message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link mat.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {mat} mat + */ + mat.from = mat.fromObject; + + /** + * Creates a plain object from a mat message. Also converts values to other types if specified. + * @param {mat} message mat + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + mat.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.v = []; + if (options.defaults) { + object.rows = 0; + object.cols = 0; + } + if (message.rows != null && message.hasOwnProperty("rows")) + object.rows = message.rows; + if (message.cols != null && message.hasOwnProperty("cols")) + object.cols = message.cols; + if (message.v && message.v.length) { + object.v = []; + for (var j = 0; j < message.v.length; ++j) + object.v[j] = message.v[j]; + } + return object; + }; + + /** + * Creates a plain object from this mat message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + mat.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this mat to JSON. + * @returns {Object.} JSON object + */ + mat.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return mat; +})(); + +$root.fmat = (function() { + + /** + * Properties of a fmat. + * @typedef fmat$Properties + * @type {Object} + * @property {number} [rows] fmat rows. + * @property {number} [cols] fmat cols. + * @property {Array.} [v] fmat v. + */ + + /** + * Constructs a new fmat. + * @exports fmat + * @constructor + * @param {fmat$Properties=} [properties] Properties to set + */ + function fmat(properties) { + this.v = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * fmat rows. + * @type {number} + */ + fmat.prototype.rows = 0; + + /** + * fmat cols. + * @type {number} + */ + fmat.prototype.cols = 0; + + /** + * fmat v. + * @type {Array.} + */ + fmat.prototype.v = $util.emptyArray; + + /** + * Creates a new fmat instance using the specified properties. + * @param {fmat$Properties=} [properties] Properties to set + * @returns {fmat} fmat instance + */ + fmat.create = function create(properties) { + return new fmat(properties); + }; + + /** + * Encodes the specified fmat message. Does not implicitly {@link fmat.verify|verify} messages. + * @param {fmat$Properties} message fmat message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + fmat.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.rows != null && message.hasOwnProperty("rows")) + writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.rows); + if (message.cols != null && message.hasOwnProperty("cols")) + writer.uint32(/* id 2, wireType 0 =*/16).uint32(message.cols); + if (message.v != null && message.v.length) { + writer.uint32(/* id 3, wireType 2 =*/26).fork(); + for (var i = 0; i < message.v.length; ++i) + writer.float(message.v[i]); + writer.ldelim(); + } + return writer; + }; + + /** + * Encodes the specified fmat message, length delimited. Does not implicitly {@link fmat.verify|verify} messages. + * @param {fmat$Properties} message fmat message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + fmat.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a fmat message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {fmat} fmat + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + fmat.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.fmat(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.rows = reader.uint32(); + break; + case 2: + message.cols = reader.uint32(); + break; + case 3: + if (!(message.v && message.v.length)) + message.v = []; + if ((tag & 7) === 2) { + var end2 = reader.uint32() + reader.pos; + while (reader.pos < end2) + message.v.push(reader.float()); + } else + message.v.push(reader.float()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a fmat message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {fmat} fmat + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + fmat.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a fmat message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + fmat.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.rows != null && message.hasOwnProperty("rows")) + if (!$util.isInteger(message.rows)) + return "rows: integer expected"; + if (message.cols != null && message.hasOwnProperty("cols")) + if (!$util.isInteger(message.cols)) + return "cols: integer expected"; + if (message.v != null && message.hasOwnProperty("v")) { + if (!Array.isArray(message.v)) + return "v: array expected"; + for (var i = 0; i < message.v.length; ++i) + if (typeof message.v[i] !== "number") + return "v: number[] expected"; + } + return null; + }; + + /** + * Creates a fmat message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {fmat} fmat + */ + fmat.fromObject = function fromObject(object) { + if (object instanceof $root.fmat) + return object; + var message = new $root.fmat(); + if (object.rows != null) + message.rows = object.rows >>> 0; + if (object.cols != null) + message.cols = object.cols >>> 0; + if (object.v) { + if (!Array.isArray(object.v)) + throw TypeError(".fmat.v: array expected"); + message.v = []; + for (var i = 0; i < object.v.length; ++i) + message.v[i] = Number(object.v[i]); + } + return message; + }; + + /** + * Creates a fmat message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link fmat.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {fmat} fmat + */ + fmat.from = fmat.fromObject; + + /** + * Creates a plain object from a fmat message. Also converts values to other types if specified. + * @param {fmat} message fmat + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + fmat.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.v = []; + if (options.defaults) { + object.rows = 0; + object.cols = 0; + } + if (message.rows != null && message.hasOwnProperty("rows")) + object.rows = message.rows; + if (message.cols != null && message.hasOwnProperty("cols")) + object.cols = message.cols; + if (message.v && message.v.length) { + object.v = []; + for (var j = 0; j < message.v.length; ++j) + object.v[j] = message.v[j]; + } + return object; + }; + + /** + * Creates a plain object from this fmat message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + fmat.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this fmat to JSON. + * @returns {Object.} JSON object + */ + fmat.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return fmat; +})(); + +$root.imat = (function() { + + /** + * Properties of an imat. + * @typedef imat$Properties + * @type {Object} + * @property {number} [rows] imat rows. + * @property {number} [cols] imat cols. + * @property {Array.} [v] imat v. + */ + + /** + * Constructs a new imat. + * @exports imat + * @constructor + * @param {imat$Properties=} [properties] Properties to set + */ + function imat(properties) { + this.v = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * imat rows. + * @type {number} + */ + imat.prototype.rows = 0; + + /** + * imat cols. + * @type {number} + */ + imat.prototype.cols = 0; + + /** + * imat v. + * @type {Array.} + */ + imat.prototype.v = $util.emptyArray; + + /** + * Creates a new imat instance using the specified properties. + * @param {imat$Properties=} [properties] Properties to set + * @returns {imat} imat instance + */ + imat.create = function create(properties) { + return new imat(properties); + }; + + /** + * Encodes the specified imat message. Does not implicitly {@link imat.verify|verify} messages. + * @param {imat$Properties} message imat message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + imat.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.rows != null && message.hasOwnProperty("rows")) + writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.rows); + if (message.cols != null && message.hasOwnProperty("cols")) + writer.uint32(/* id 2, wireType 0 =*/16).uint32(message.cols); + if (message.v != null && message.v.length) { + writer.uint32(/* id 3, wireType 2 =*/26).fork(); + for (var i = 0; i < message.v.length; ++i) + writer.sint32(message.v[i]); + writer.ldelim(); + } + return writer; + }; + + /** + * Encodes the specified imat message, length delimited. Does not implicitly {@link imat.verify|verify} messages. + * @param {imat$Properties} message imat message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + imat.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes an imat message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {imat} imat + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + imat.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.imat(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.rows = reader.uint32(); + break; + case 2: + message.cols = reader.uint32(); + break; + case 3: + if (!(message.v && message.v.length)) + message.v = []; + if ((tag & 7) === 2) { + var end2 = reader.uint32() + reader.pos; + while (reader.pos < end2) + message.v.push(reader.sint32()); + } else + message.v.push(reader.sint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes an imat message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {imat} imat + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + imat.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies an imat message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + imat.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.rows != null && message.hasOwnProperty("rows")) + if (!$util.isInteger(message.rows)) + return "rows: integer expected"; + if (message.cols != null && message.hasOwnProperty("cols")) + if (!$util.isInteger(message.cols)) + return "cols: integer expected"; + if (message.v != null && message.hasOwnProperty("v")) { + if (!Array.isArray(message.v)) + return "v: array expected"; + for (var i = 0; i < message.v.length; ++i) + if (!$util.isInteger(message.v[i])) + return "v: integer[] expected"; + } + return null; + }; + + /** + * Creates an imat message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {imat} imat + */ + imat.fromObject = function fromObject(object) { + if (object instanceof $root.imat) + return object; + var message = new $root.imat(); + if (object.rows != null) + message.rows = object.rows >>> 0; + if (object.cols != null) + message.cols = object.cols >>> 0; + if (object.v) { + if (!Array.isArray(object.v)) + throw TypeError(".imat.v: array expected"); + message.v = []; + for (var i = 0; i < object.v.length; ++i) + message.v[i] = object.v[i] | 0; + } + return message; + }; + + /** + * Creates an imat message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link imat.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {imat} imat + */ + imat.from = imat.fromObject; + + /** + * Creates a plain object from an imat message. Also converts values to other types if specified. + * @param {imat} message imat + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + imat.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.v = []; + if (options.defaults) { + object.rows = 0; + object.cols = 0; + } + if (message.rows != null && message.hasOwnProperty("rows")) + object.rows = message.rows; + if (message.cols != null && message.hasOwnProperty("cols")) + object.cols = message.cols; + if (message.v && message.v.length) { + object.v = []; + for (var j = 0; j < message.v.length; ++j) + object.v[j] = message.v[j]; + } + return object; + }; + + /** + * Creates a plain object from this imat message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + imat.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this imat to JSON. + * @returns {Object.} JSON object + */ + imat.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return imat; +})(); + +$root.umat = (function() { + + /** + * Properties of an umat. + * @typedef umat$Properties + * @type {Object} + * @property {number} [rows] umat rows. + * @property {number} [cols] umat cols. + * @property {Array.} [v] umat v. + */ + + /** + * Constructs a new umat. + * @exports umat + * @constructor + * @param {umat$Properties=} [properties] Properties to set + */ + function umat(properties) { + this.v = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * umat rows. + * @type {number} + */ + umat.prototype.rows = 0; + + /** + * umat cols. + * @type {number} + */ + umat.prototype.cols = 0; + + /** + * umat v. + * @type {Array.} + */ + umat.prototype.v = $util.emptyArray; + + /** + * Creates a new umat instance using the specified properties. + * @param {umat$Properties=} [properties] Properties to set + * @returns {umat} umat instance + */ + umat.create = function create(properties) { + return new umat(properties); + }; + + /** + * Encodes the specified umat message. Does not implicitly {@link umat.verify|verify} messages. + * @param {umat$Properties} message umat message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + umat.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.rows != null && message.hasOwnProperty("rows")) + writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.rows); + if (message.cols != null && message.hasOwnProperty("cols")) + writer.uint32(/* id 2, wireType 0 =*/16).uint32(message.cols); + if (message.v != null && message.v.length) { + writer.uint32(/* id 3, wireType 2 =*/26).fork(); + for (var i = 0; i < message.v.length; ++i) + writer.uint32(message.v[i]); + writer.ldelim(); + } + return writer; + }; + + /** + * Encodes the specified umat message, length delimited. Does not implicitly {@link umat.verify|verify} messages. + * @param {umat$Properties} message umat message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + umat.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes an umat message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {umat} umat + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + umat.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.umat(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.rows = reader.uint32(); + break; + case 2: + message.cols = reader.uint32(); + break; + case 3: + if (!(message.v && message.v.length)) + message.v = []; + if ((tag & 7) === 2) { + var end2 = reader.uint32() + reader.pos; + while (reader.pos < end2) + message.v.push(reader.uint32()); + } else + message.v.push(reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes an umat message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {umat} umat + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + umat.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies an umat message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + umat.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.rows != null && message.hasOwnProperty("rows")) + if (!$util.isInteger(message.rows)) + return "rows: integer expected"; + if (message.cols != null && message.hasOwnProperty("cols")) + if (!$util.isInteger(message.cols)) + return "cols: integer expected"; + if (message.v != null && message.hasOwnProperty("v")) { + if (!Array.isArray(message.v)) + return "v: array expected"; + for (var i = 0; i < message.v.length; ++i) + if (!$util.isInteger(message.v[i])) + return "v: integer[] expected"; + } + return null; + }; + + /** + * Creates an umat message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {umat} umat + */ + umat.fromObject = function fromObject(object) { + if (object instanceof $root.umat) + return object; + var message = new $root.umat(); + if (object.rows != null) + message.rows = object.rows >>> 0; + if (object.cols != null) + message.cols = object.cols >>> 0; + if (object.v) { + if (!Array.isArray(object.v)) + throw TypeError(".umat.v: array expected"); + message.v = []; + for (var i = 0; i < object.v.length; ++i) + message.v[i] = object.v[i] >>> 0; + } + return message; + }; + + /** + * Creates an umat message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link umat.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {umat} umat + */ + umat.from = umat.fromObject; + + /** + * Creates a plain object from an umat message. Also converts values to other types if specified. + * @param {umat} message umat + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + umat.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.v = []; + if (options.defaults) { + object.rows = 0; + object.cols = 0; + } + if (message.rows != null && message.hasOwnProperty("rows")) + object.rows = message.rows; + if (message.cols != null && message.hasOwnProperty("cols")) + object.cols = message.cols; + if (message.v && message.v.length) { + object.v = []; + for (var j = 0; j < message.v.length; ++j) + object.v[j] = message.v[j]; + } + return object; + }; + + /** + * Creates a plain object from this umat message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + umat.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this umat to JSON. + * @returns {Object.} JSON object + */ + umat.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return umat; +})(); + +$root.cmat = (function() { + + /** + * Properties of a cmat. + * @typedef cmat$Properties + * @type {Object} + * @property {number} [rows] cmat rows. + * @property {number} [cols] cmat cols. + * @property {Uint8Array} [v] cmat v. + */ + + /** + * Constructs a new cmat. + * @exports cmat + * @constructor + * @param {cmat$Properties=} [properties] Properties to set + */ + function cmat(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * cmat rows. + * @type {number} + */ + cmat.prototype.rows = 0; + + /** + * cmat cols. + * @type {number} + */ + cmat.prototype.cols = 0; + + /** + * cmat v. + * @type {Uint8Array} + */ + cmat.prototype.v = $util.newBuffer([]); + + /** + * Creates a new cmat instance using the specified properties. + * @param {cmat$Properties=} [properties] Properties to set + * @returns {cmat} cmat instance + */ + cmat.create = function create(properties) { + return new cmat(properties); + }; + + /** + * Encodes the specified cmat message. Does not implicitly {@link cmat.verify|verify} messages. + * @param {cmat$Properties} message cmat message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + cmat.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.rows != null && message.hasOwnProperty("rows")) + writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.rows); + if (message.cols != null && message.hasOwnProperty("cols")) + writer.uint32(/* id 2, wireType 0 =*/16).uint32(message.cols); + if (message.v != null && message.hasOwnProperty("v")) + writer.uint32(/* id 3, wireType 2 =*/26).bytes(message.v); + return writer; + }; + + /** + * Encodes the specified cmat message, length delimited. Does not implicitly {@link cmat.verify|verify} messages. + * @param {cmat$Properties} message cmat message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + cmat.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a cmat message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {cmat} cmat + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + cmat.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.cmat(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.rows = reader.uint32(); + break; + case 2: + message.cols = reader.uint32(); + break; + case 3: + message.v = reader.bytes(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a cmat message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {cmat} cmat + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + cmat.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a cmat message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + cmat.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.rows != null && message.hasOwnProperty("rows")) + if (!$util.isInteger(message.rows)) + return "rows: integer expected"; + if (message.cols != null && message.hasOwnProperty("cols")) + if (!$util.isInteger(message.cols)) + return "cols: integer expected"; + if (message.v != null && message.hasOwnProperty("v")) + if (!(message.v && typeof message.v.length === "number" || $util.isString(message.v))) + return "v: buffer expected"; + return null; + }; + + /** + * Creates a cmat message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {cmat} cmat + */ + cmat.fromObject = function fromObject(object) { + if (object instanceof $root.cmat) + return object; + var message = new $root.cmat(); + if (object.rows != null) + message.rows = object.rows >>> 0; + if (object.cols != null) + message.cols = object.cols >>> 0; + if (object.v != null) + if (typeof object.v === "string") + $util.base64.decode(object.v, message.v = $util.newBuffer($util.base64.length(object.v)), 0); + else if (object.v.length) + message.v = object.v; + return message; + }; + + /** + * Creates a cmat message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link cmat.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {cmat} cmat + */ + cmat.from = cmat.fromObject; + + /** + * Creates a plain object from a cmat message. Also converts values to other types if specified. + * @param {cmat} message cmat + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + cmat.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.rows = 0; + object.cols = 0; + object.v = options.bytes === String ? "" : []; + } + if (message.rows != null && message.hasOwnProperty("rows")) + object.rows = message.rows; + if (message.cols != null && message.hasOwnProperty("cols")) + object.cols = message.cols; + if (message.v != null && message.hasOwnProperty("v")) + object.v = options.bytes === String ? $util.base64.encode(message.v, 0, message.v.length) : options.bytes === Array ? Array.prototype.slice.call(message.v) : message.v; + return object; + }; + + /** + * Creates a plain object from this cmat message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + cmat.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this cmat to JSON. + * @returns {Object.} JSON object + */ + cmat.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return cmat; +})(); + +$root.mat22 = (function() { + + /** + * Properties of a mat22. + * @typedef mat22$Properties + * @type {Object} + * @property {vec2$Properties} [x] mat22 x. + * @property {vec2$Properties} [y] mat22 y. + */ + + /** + * Constructs a new mat22. + * @exports mat22 + * @constructor + * @param {mat22$Properties=} [properties] Properties to set + */ + function mat22(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * mat22 x. + * @type {(vec2$Properties|null)} + */ + mat22.prototype.x = null; + + /** + * mat22 y. + * @type {(vec2$Properties|null)} + */ + mat22.prototype.y = null; + + /** + * Creates a new mat22 instance using the specified properties. + * @param {mat22$Properties=} [properties] Properties to set + * @returns {mat22} mat22 instance + */ + mat22.create = function create(properties) { + return new mat22(properties); + }; + + /** + * Encodes the specified mat22 message. Does not implicitly {@link mat22.verify|verify} messages. + * @param {mat22$Properties} message mat22 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + mat22.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.x != null && message.hasOwnProperty("x")) + $root.vec2.encode(message.x, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.y != null && message.hasOwnProperty("y")) + $root.vec2.encode(message.y, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified mat22 message, length delimited. Does not implicitly {@link mat22.verify|verify} messages. + * @param {mat22$Properties} message mat22 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + mat22.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a mat22 message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {mat22} mat22 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + mat22.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.mat22(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.x = $root.vec2.decode(reader, reader.uint32()); + break; + case 2: + message.y = $root.vec2.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a mat22 message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {mat22} mat22 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + mat22.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a mat22 message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + mat22.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.x != null && message.hasOwnProperty("x")) { + var error = $root.vec2.verify(message.x); + if (error) + return "x." + error; + } + if (message.y != null && message.hasOwnProperty("y")) { + var error = $root.vec2.verify(message.y); + if (error) + return "y." + error; + } + return null; + }; + + /** + * Creates a mat22 message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {mat22} mat22 + */ + mat22.fromObject = function fromObject(object) { + if (object instanceof $root.mat22) + return object; + var message = new $root.mat22(); + if (object.x != null) { + if (typeof object.x !== "object") + throw TypeError(".mat22.x: object expected"); + message.x = $root.vec2.fromObject(object.x); + } + if (object.y != null) { + if (typeof object.y !== "object") + throw TypeError(".mat22.y: object expected"); + message.y = $root.vec2.fromObject(object.y); + } + return message; + }; + + /** + * Creates a mat22 message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link mat22.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {mat22} mat22 + */ + mat22.from = mat22.fromObject; + + /** + * Creates a plain object from a mat22 message. Also converts values to other types if specified. + * @param {mat22} message mat22 + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + mat22.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.x = null; + object.y = null; + } + if (message.x != null && message.hasOwnProperty("x")) + object.x = $root.vec2.toObject(message.x, options); + if (message.y != null && message.hasOwnProperty("y")) + object.y = $root.vec2.toObject(message.y, options); + return object; + }; + + /** + * Creates a plain object from this mat22 message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + mat22.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this mat22 to JSON. + * @returns {Object.} JSON object + */ + mat22.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return mat22; +})(); + +$root.fmat22 = (function() { + + /** + * Properties of a fmat22. + * @typedef fmat22$Properties + * @type {Object} + * @property {fvec2$Properties} [x] fmat22 x. + * @property {fvec2$Properties} [y] fmat22 y. + */ + + /** + * Constructs a new fmat22. + * @exports fmat22 + * @constructor + * @param {fmat22$Properties=} [properties] Properties to set + */ + function fmat22(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * fmat22 x. + * @type {(fvec2$Properties|null)} + */ + fmat22.prototype.x = null; + + /** + * fmat22 y. + * @type {(fvec2$Properties|null)} + */ + fmat22.prototype.y = null; + + /** + * Creates a new fmat22 instance using the specified properties. + * @param {fmat22$Properties=} [properties] Properties to set + * @returns {fmat22} fmat22 instance + */ + fmat22.create = function create(properties) { + return new fmat22(properties); + }; + + /** + * Encodes the specified fmat22 message. Does not implicitly {@link fmat22.verify|verify} messages. + * @param {fmat22$Properties} message fmat22 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + fmat22.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.x != null && message.hasOwnProperty("x")) + $root.fvec2.encode(message.x, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.y != null && message.hasOwnProperty("y")) + $root.fvec2.encode(message.y, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified fmat22 message, length delimited. Does not implicitly {@link fmat22.verify|verify} messages. + * @param {fmat22$Properties} message fmat22 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + fmat22.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a fmat22 message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {fmat22} fmat22 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + fmat22.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.fmat22(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.x = $root.fvec2.decode(reader, reader.uint32()); + break; + case 2: + message.y = $root.fvec2.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a fmat22 message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {fmat22} fmat22 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + fmat22.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a fmat22 message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + fmat22.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.x != null && message.hasOwnProperty("x")) { + var error = $root.fvec2.verify(message.x); + if (error) + return "x." + error; + } + if (message.y != null && message.hasOwnProperty("y")) { + var error = $root.fvec2.verify(message.y); + if (error) + return "y." + error; + } + return null; + }; + + /** + * Creates a fmat22 message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {fmat22} fmat22 + */ + fmat22.fromObject = function fromObject(object) { + if (object instanceof $root.fmat22) + return object; + var message = new $root.fmat22(); + if (object.x != null) { + if (typeof object.x !== "object") + throw TypeError(".fmat22.x: object expected"); + message.x = $root.fvec2.fromObject(object.x); + } + if (object.y != null) { + if (typeof object.y !== "object") + throw TypeError(".fmat22.y: object expected"); + message.y = $root.fvec2.fromObject(object.y); + } + return message; + }; + + /** + * Creates a fmat22 message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link fmat22.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {fmat22} fmat22 + */ + fmat22.from = fmat22.fromObject; + + /** + * Creates a plain object from a fmat22 message. Also converts values to other types if specified. + * @param {fmat22} message fmat22 + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + fmat22.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.x = null; + object.y = null; + } + if (message.x != null && message.hasOwnProperty("x")) + object.x = $root.fvec2.toObject(message.x, options); + if (message.y != null && message.hasOwnProperty("y")) + object.y = $root.fvec2.toObject(message.y, options); + return object; + }; + + /** + * Creates a plain object from this fmat22 message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + fmat22.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this fmat22 to JSON. + * @returns {Object.} JSON object + */ + fmat22.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return fmat22; +})(); + +$root.imat22 = (function() { + + /** + * Properties of an imat22. + * @typedef imat22$Properties + * @type {Object} + * @property {ivec2$Properties} [x] imat22 x. + * @property {ivec2$Properties} [y] imat22 y. + */ + + /** + * Constructs a new imat22. + * @exports imat22 + * @constructor + * @param {imat22$Properties=} [properties] Properties to set + */ + function imat22(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * imat22 x. + * @type {(ivec2$Properties|null)} + */ + imat22.prototype.x = null; + + /** + * imat22 y. + * @type {(ivec2$Properties|null)} + */ + imat22.prototype.y = null; + + /** + * Creates a new imat22 instance using the specified properties. + * @param {imat22$Properties=} [properties] Properties to set + * @returns {imat22} imat22 instance + */ + imat22.create = function create(properties) { + return new imat22(properties); + }; + + /** + * Encodes the specified imat22 message. Does not implicitly {@link imat22.verify|verify} messages. + * @param {imat22$Properties} message imat22 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + imat22.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.x != null && message.hasOwnProperty("x")) + $root.ivec2.encode(message.x, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.y != null && message.hasOwnProperty("y")) + $root.ivec2.encode(message.y, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified imat22 message, length delimited. Does not implicitly {@link imat22.verify|verify} messages. + * @param {imat22$Properties} message imat22 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + imat22.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes an imat22 message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {imat22} imat22 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + imat22.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.imat22(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.x = $root.ivec2.decode(reader, reader.uint32()); + break; + case 2: + message.y = $root.ivec2.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes an imat22 message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {imat22} imat22 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + imat22.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies an imat22 message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + imat22.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.x != null && message.hasOwnProperty("x")) { + var error = $root.ivec2.verify(message.x); + if (error) + return "x." + error; + } + if (message.y != null && message.hasOwnProperty("y")) { + var error = $root.ivec2.verify(message.y); + if (error) + return "y." + error; + } + return null; + }; + + /** + * Creates an imat22 message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {imat22} imat22 + */ + imat22.fromObject = function fromObject(object) { + if (object instanceof $root.imat22) + return object; + var message = new $root.imat22(); + if (object.x != null) { + if (typeof object.x !== "object") + throw TypeError(".imat22.x: object expected"); + message.x = $root.ivec2.fromObject(object.x); + } + if (object.y != null) { + if (typeof object.y !== "object") + throw TypeError(".imat22.y: object expected"); + message.y = $root.ivec2.fromObject(object.y); + } + return message; + }; + + /** + * Creates an imat22 message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link imat22.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {imat22} imat22 + */ + imat22.from = imat22.fromObject; + + /** + * Creates a plain object from an imat22 message. Also converts values to other types if specified. + * @param {imat22} message imat22 + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + imat22.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.x = null; + object.y = null; + } + if (message.x != null && message.hasOwnProperty("x")) + object.x = $root.ivec2.toObject(message.x, options); + if (message.y != null && message.hasOwnProperty("y")) + object.y = $root.ivec2.toObject(message.y, options); + return object; + }; + + /** + * Creates a plain object from this imat22 message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + imat22.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this imat22 to JSON. + * @returns {Object.} JSON object + */ + imat22.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return imat22; +})(); + +$root.umat22 = (function() { + + /** + * Properties of an umat22. + * @typedef umat22$Properties + * @type {Object} + * @property {uvec2$Properties} [x] umat22 x. + * @property {uvec2$Properties} [y] umat22 y. + */ + + /** + * Constructs a new umat22. + * @exports umat22 + * @constructor + * @param {umat22$Properties=} [properties] Properties to set + */ + function umat22(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * umat22 x. + * @type {(uvec2$Properties|null)} + */ + umat22.prototype.x = null; + + /** + * umat22 y. + * @type {(uvec2$Properties|null)} + */ + umat22.prototype.y = null; + + /** + * Creates a new umat22 instance using the specified properties. + * @param {umat22$Properties=} [properties] Properties to set + * @returns {umat22} umat22 instance + */ + umat22.create = function create(properties) { + return new umat22(properties); + }; + + /** + * Encodes the specified umat22 message. Does not implicitly {@link umat22.verify|verify} messages. + * @param {umat22$Properties} message umat22 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + umat22.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.x != null && message.hasOwnProperty("x")) + $root.uvec2.encode(message.x, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.y != null && message.hasOwnProperty("y")) + $root.uvec2.encode(message.y, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified umat22 message, length delimited. Does not implicitly {@link umat22.verify|verify} messages. + * @param {umat22$Properties} message umat22 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + umat22.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes an umat22 message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {umat22} umat22 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + umat22.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.umat22(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.x = $root.uvec2.decode(reader, reader.uint32()); + break; + case 2: + message.y = $root.uvec2.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes an umat22 message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {umat22} umat22 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + umat22.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies an umat22 message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + umat22.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.x != null && message.hasOwnProperty("x")) { + var error = $root.uvec2.verify(message.x); + if (error) + return "x." + error; + } + if (message.y != null && message.hasOwnProperty("y")) { + var error = $root.uvec2.verify(message.y); + if (error) + return "y." + error; + } + return null; + }; + + /** + * Creates an umat22 message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {umat22} umat22 + */ + umat22.fromObject = function fromObject(object) { + if (object instanceof $root.umat22) + return object; + var message = new $root.umat22(); + if (object.x != null) { + if (typeof object.x !== "object") + throw TypeError(".umat22.x: object expected"); + message.x = $root.uvec2.fromObject(object.x); + } + if (object.y != null) { + if (typeof object.y !== "object") + throw TypeError(".umat22.y: object expected"); + message.y = $root.uvec2.fromObject(object.y); + } + return message; + }; + + /** + * Creates an umat22 message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link umat22.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {umat22} umat22 + */ + umat22.from = umat22.fromObject; + + /** + * Creates a plain object from an umat22 message. Also converts values to other types if specified. + * @param {umat22} message umat22 + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + umat22.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.x = null; + object.y = null; + } + if (message.x != null && message.hasOwnProperty("x")) + object.x = $root.uvec2.toObject(message.x, options); + if (message.y != null && message.hasOwnProperty("y")) + object.y = $root.uvec2.toObject(message.y, options); + return object; + }; + + /** + * Creates a plain object from this umat22 message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + umat22.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this umat22 to JSON. + * @returns {Object.} JSON object + */ + umat22.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return umat22; +})(); + +$root.mat33 = (function() { + + /** + * Properties of a mat33. + * @typedef mat33$Properties + * @type {Object} + * @property {vec3$Properties} [x] mat33 x. + * @property {vec3$Properties} [y] mat33 y. + * @property {vec3$Properties} [z] mat33 z. + */ + + /** + * Constructs a new mat33. + * @exports mat33 + * @constructor + * @param {mat33$Properties=} [properties] Properties to set + */ + function mat33(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * mat33 x. + * @type {(vec3$Properties|null)} + */ + mat33.prototype.x = null; + + /** + * mat33 y. + * @type {(vec3$Properties|null)} + */ + mat33.prototype.y = null; + + /** + * mat33 z. + * @type {(vec3$Properties|null)} + */ + mat33.prototype.z = null; + + /** + * Creates a new mat33 instance using the specified properties. + * @param {mat33$Properties=} [properties] Properties to set + * @returns {mat33} mat33 instance + */ + mat33.create = function create(properties) { + return new mat33(properties); + }; + + /** + * Encodes the specified mat33 message. Does not implicitly {@link mat33.verify|verify} messages. + * @param {mat33$Properties} message mat33 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + mat33.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.x != null && message.hasOwnProperty("x")) + $root.vec3.encode(message.x, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.y != null && message.hasOwnProperty("y")) + $root.vec3.encode(message.y, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.z != null && message.hasOwnProperty("z")) + $root.vec3.encode(message.z, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified mat33 message, length delimited. Does not implicitly {@link mat33.verify|verify} messages. + * @param {mat33$Properties} message mat33 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + mat33.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a mat33 message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {mat33} mat33 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + mat33.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.mat33(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.x = $root.vec3.decode(reader, reader.uint32()); + break; + case 2: + message.y = $root.vec3.decode(reader, reader.uint32()); + break; + case 3: + message.z = $root.vec3.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a mat33 message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {mat33} mat33 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + mat33.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a mat33 message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + mat33.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.x != null && message.hasOwnProperty("x")) { + var error = $root.vec3.verify(message.x); + if (error) + return "x." + error; + } + if (message.y != null && message.hasOwnProperty("y")) { + var error = $root.vec3.verify(message.y); + if (error) + return "y." + error; + } + if (message.z != null && message.hasOwnProperty("z")) { + var error = $root.vec3.verify(message.z); + if (error) + return "z." + error; + } + return null; + }; + + /** + * Creates a mat33 message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {mat33} mat33 + */ + mat33.fromObject = function fromObject(object) { + if (object instanceof $root.mat33) + return object; + var message = new $root.mat33(); + if (object.x != null) { + if (typeof object.x !== "object") + throw TypeError(".mat33.x: object expected"); + message.x = $root.vec3.fromObject(object.x); + } + if (object.y != null) { + if (typeof object.y !== "object") + throw TypeError(".mat33.y: object expected"); + message.y = $root.vec3.fromObject(object.y); + } + if (object.z != null) { + if (typeof object.z !== "object") + throw TypeError(".mat33.z: object expected"); + message.z = $root.vec3.fromObject(object.z); + } + return message; + }; + + /** + * Creates a mat33 message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link mat33.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {mat33} mat33 + */ + mat33.from = mat33.fromObject; + + /** + * Creates a plain object from a mat33 message. Also converts values to other types if specified. + * @param {mat33} message mat33 + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + mat33.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.x = null; + object.y = null; + object.z = null; + } + if (message.x != null && message.hasOwnProperty("x")) + object.x = $root.vec3.toObject(message.x, options); + if (message.y != null && message.hasOwnProperty("y")) + object.y = $root.vec3.toObject(message.y, options); + if (message.z != null && message.hasOwnProperty("z")) + object.z = $root.vec3.toObject(message.z, options); + return object; + }; + + /** + * Creates a plain object from this mat33 message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + mat33.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this mat33 to JSON. + * @returns {Object.} JSON object + */ + mat33.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return mat33; +})(); + +$root.fmat33 = (function() { + + /** + * Properties of a fmat33. + * @typedef fmat33$Properties + * @type {Object} + * @property {fvec3$Properties} [x] fmat33 x. + * @property {fvec3$Properties} [y] fmat33 y. + * @property {fvec3$Properties} [z] fmat33 z. + */ + + /** + * Constructs a new fmat33. + * @exports fmat33 + * @constructor + * @param {fmat33$Properties=} [properties] Properties to set + */ + function fmat33(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * fmat33 x. + * @type {(fvec3$Properties|null)} + */ + fmat33.prototype.x = null; + + /** + * fmat33 y. + * @type {(fvec3$Properties|null)} + */ + fmat33.prototype.y = null; + + /** + * fmat33 z. + * @type {(fvec3$Properties|null)} + */ + fmat33.prototype.z = null; + + /** + * Creates a new fmat33 instance using the specified properties. + * @param {fmat33$Properties=} [properties] Properties to set + * @returns {fmat33} fmat33 instance + */ + fmat33.create = function create(properties) { + return new fmat33(properties); + }; + + /** + * Encodes the specified fmat33 message. Does not implicitly {@link fmat33.verify|verify} messages. + * @param {fmat33$Properties} message fmat33 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + fmat33.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.x != null && message.hasOwnProperty("x")) + $root.fvec3.encode(message.x, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.y != null && message.hasOwnProperty("y")) + $root.fvec3.encode(message.y, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.z != null && message.hasOwnProperty("z")) + $root.fvec3.encode(message.z, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified fmat33 message, length delimited. Does not implicitly {@link fmat33.verify|verify} messages. + * @param {fmat33$Properties} message fmat33 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + fmat33.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a fmat33 message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {fmat33} fmat33 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + fmat33.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.fmat33(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.x = $root.fvec3.decode(reader, reader.uint32()); + break; + case 2: + message.y = $root.fvec3.decode(reader, reader.uint32()); + break; + case 3: + message.z = $root.fvec3.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a fmat33 message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {fmat33} fmat33 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + fmat33.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a fmat33 message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + fmat33.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.x != null && message.hasOwnProperty("x")) { + var error = $root.fvec3.verify(message.x); + if (error) + return "x." + error; + } + if (message.y != null && message.hasOwnProperty("y")) { + var error = $root.fvec3.verify(message.y); + if (error) + return "y." + error; + } + if (message.z != null && message.hasOwnProperty("z")) { + var error = $root.fvec3.verify(message.z); + if (error) + return "z." + error; + } + return null; + }; + + /** + * Creates a fmat33 message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {fmat33} fmat33 + */ + fmat33.fromObject = function fromObject(object) { + if (object instanceof $root.fmat33) + return object; + var message = new $root.fmat33(); + if (object.x != null) { + if (typeof object.x !== "object") + throw TypeError(".fmat33.x: object expected"); + message.x = $root.fvec3.fromObject(object.x); + } + if (object.y != null) { + if (typeof object.y !== "object") + throw TypeError(".fmat33.y: object expected"); + message.y = $root.fvec3.fromObject(object.y); + } + if (object.z != null) { + if (typeof object.z !== "object") + throw TypeError(".fmat33.z: object expected"); + message.z = $root.fvec3.fromObject(object.z); + } + return message; + }; + + /** + * Creates a fmat33 message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link fmat33.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {fmat33} fmat33 + */ + fmat33.from = fmat33.fromObject; + + /** + * Creates a plain object from a fmat33 message. Also converts values to other types if specified. + * @param {fmat33} message fmat33 + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + fmat33.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.x = null; + object.y = null; + object.z = null; + } + if (message.x != null && message.hasOwnProperty("x")) + object.x = $root.fvec3.toObject(message.x, options); + if (message.y != null && message.hasOwnProperty("y")) + object.y = $root.fvec3.toObject(message.y, options); + if (message.z != null && message.hasOwnProperty("z")) + object.z = $root.fvec3.toObject(message.z, options); + return object; + }; + + /** + * Creates a plain object from this fmat33 message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + fmat33.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this fmat33 to JSON. + * @returns {Object.} JSON object + */ + fmat33.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return fmat33; +})(); + +$root.imat33 = (function() { + + /** + * Properties of an imat33. + * @typedef imat33$Properties + * @type {Object} + * @property {ivec3$Properties} [x] imat33 x. + * @property {ivec3$Properties} [y] imat33 y. + * @property {ivec3$Properties} [z] imat33 z. + */ + + /** + * Constructs a new imat33. + * @exports imat33 + * @constructor + * @param {imat33$Properties=} [properties] Properties to set + */ + function imat33(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * imat33 x. + * @type {(ivec3$Properties|null)} + */ + imat33.prototype.x = null; + + /** + * imat33 y. + * @type {(ivec3$Properties|null)} + */ + imat33.prototype.y = null; + + /** + * imat33 z. + * @type {(ivec3$Properties|null)} + */ + imat33.prototype.z = null; + + /** + * Creates a new imat33 instance using the specified properties. + * @param {imat33$Properties=} [properties] Properties to set + * @returns {imat33} imat33 instance + */ + imat33.create = function create(properties) { + return new imat33(properties); + }; + + /** + * Encodes the specified imat33 message. Does not implicitly {@link imat33.verify|verify} messages. + * @param {imat33$Properties} message imat33 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + imat33.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.x != null && message.hasOwnProperty("x")) + $root.ivec3.encode(message.x, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.y != null && message.hasOwnProperty("y")) + $root.ivec3.encode(message.y, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.z != null && message.hasOwnProperty("z")) + $root.ivec3.encode(message.z, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified imat33 message, length delimited. Does not implicitly {@link imat33.verify|verify} messages. + * @param {imat33$Properties} message imat33 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + imat33.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes an imat33 message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {imat33} imat33 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + imat33.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.imat33(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.x = $root.ivec3.decode(reader, reader.uint32()); + break; + case 2: + message.y = $root.ivec3.decode(reader, reader.uint32()); + break; + case 3: + message.z = $root.ivec3.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes an imat33 message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {imat33} imat33 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + imat33.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies an imat33 message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + imat33.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.x != null && message.hasOwnProperty("x")) { + var error = $root.ivec3.verify(message.x); + if (error) + return "x." + error; + } + if (message.y != null && message.hasOwnProperty("y")) { + var error = $root.ivec3.verify(message.y); + if (error) + return "y." + error; + } + if (message.z != null && message.hasOwnProperty("z")) { + var error = $root.ivec3.verify(message.z); + if (error) + return "z." + error; + } + return null; + }; + + /** + * Creates an imat33 message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {imat33} imat33 + */ + imat33.fromObject = function fromObject(object) { + if (object instanceof $root.imat33) + return object; + var message = new $root.imat33(); + if (object.x != null) { + if (typeof object.x !== "object") + throw TypeError(".imat33.x: object expected"); + message.x = $root.ivec3.fromObject(object.x); + } + if (object.y != null) { + if (typeof object.y !== "object") + throw TypeError(".imat33.y: object expected"); + message.y = $root.ivec3.fromObject(object.y); + } + if (object.z != null) { + if (typeof object.z !== "object") + throw TypeError(".imat33.z: object expected"); + message.z = $root.ivec3.fromObject(object.z); + } + return message; + }; + + /** + * Creates an imat33 message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link imat33.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {imat33} imat33 + */ + imat33.from = imat33.fromObject; + + /** + * Creates a plain object from an imat33 message. Also converts values to other types if specified. + * @param {imat33} message imat33 + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + imat33.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.x = null; + object.y = null; + object.z = null; + } + if (message.x != null && message.hasOwnProperty("x")) + object.x = $root.ivec3.toObject(message.x, options); + if (message.y != null && message.hasOwnProperty("y")) + object.y = $root.ivec3.toObject(message.y, options); + if (message.z != null && message.hasOwnProperty("z")) + object.z = $root.ivec3.toObject(message.z, options); + return object; + }; + + /** + * Creates a plain object from this imat33 message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + imat33.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this imat33 to JSON. + * @returns {Object.} JSON object + */ + imat33.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return imat33; +})(); + +$root.umat33 = (function() { + + /** + * Properties of an umat33. + * @typedef umat33$Properties + * @type {Object} + * @property {uvec3$Properties} [x] umat33 x. + * @property {uvec3$Properties} [y] umat33 y. + * @property {uvec3$Properties} [z] umat33 z. + */ + + /** + * Constructs a new umat33. + * @exports umat33 + * @constructor + * @param {umat33$Properties=} [properties] Properties to set + */ + function umat33(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * umat33 x. + * @type {(uvec3$Properties|null)} + */ + umat33.prototype.x = null; + + /** + * umat33 y. + * @type {(uvec3$Properties|null)} + */ + umat33.prototype.y = null; + + /** + * umat33 z. + * @type {(uvec3$Properties|null)} + */ + umat33.prototype.z = null; + + /** + * Creates a new umat33 instance using the specified properties. + * @param {umat33$Properties=} [properties] Properties to set + * @returns {umat33} umat33 instance + */ + umat33.create = function create(properties) { + return new umat33(properties); + }; + + /** + * Encodes the specified umat33 message. Does not implicitly {@link umat33.verify|verify} messages. + * @param {umat33$Properties} message umat33 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + umat33.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.x != null && message.hasOwnProperty("x")) + $root.uvec3.encode(message.x, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.y != null && message.hasOwnProperty("y")) + $root.uvec3.encode(message.y, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.z != null && message.hasOwnProperty("z")) + $root.uvec3.encode(message.z, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified umat33 message, length delimited. Does not implicitly {@link umat33.verify|verify} messages. + * @param {umat33$Properties} message umat33 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + umat33.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes an umat33 message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {umat33} umat33 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + umat33.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.umat33(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.x = $root.uvec3.decode(reader, reader.uint32()); + break; + case 2: + message.y = $root.uvec3.decode(reader, reader.uint32()); + break; + case 3: + message.z = $root.uvec3.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes an umat33 message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {umat33} umat33 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + umat33.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies an umat33 message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + umat33.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.x != null && message.hasOwnProperty("x")) { + var error = $root.uvec3.verify(message.x); + if (error) + return "x." + error; + } + if (message.y != null && message.hasOwnProperty("y")) { + var error = $root.uvec3.verify(message.y); + if (error) + return "y." + error; + } + if (message.z != null && message.hasOwnProperty("z")) { + var error = $root.uvec3.verify(message.z); + if (error) + return "z." + error; + } + return null; + }; + + /** + * Creates an umat33 message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {umat33} umat33 + */ + umat33.fromObject = function fromObject(object) { + if (object instanceof $root.umat33) + return object; + var message = new $root.umat33(); + if (object.x != null) { + if (typeof object.x !== "object") + throw TypeError(".umat33.x: object expected"); + message.x = $root.uvec3.fromObject(object.x); + } + if (object.y != null) { + if (typeof object.y !== "object") + throw TypeError(".umat33.y: object expected"); + message.y = $root.uvec3.fromObject(object.y); + } + if (object.z != null) { + if (typeof object.z !== "object") + throw TypeError(".umat33.z: object expected"); + message.z = $root.uvec3.fromObject(object.z); + } + return message; + }; + + /** + * Creates an umat33 message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link umat33.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {umat33} umat33 + */ + umat33.from = umat33.fromObject; + + /** + * Creates a plain object from an umat33 message. Also converts values to other types if specified. + * @param {umat33} message umat33 + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + umat33.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.x = null; + object.y = null; + object.z = null; + } + if (message.x != null && message.hasOwnProperty("x")) + object.x = $root.uvec3.toObject(message.x, options); + if (message.y != null && message.hasOwnProperty("y")) + object.y = $root.uvec3.toObject(message.y, options); + if (message.z != null && message.hasOwnProperty("z")) + object.z = $root.uvec3.toObject(message.z, options); + return object; + }; + + /** + * Creates a plain object from this umat33 message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + umat33.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this umat33 to JSON. + * @returns {Object.} JSON object + */ + umat33.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return umat33; +})(); + +$root.mat44 = (function() { + + /** + * Properties of a mat44. + * @typedef mat44$Properties + * @type {Object} + * @property {vec4$Properties} [x] mat44 x. + * @property {vec4$Properties} [y] mat44 y. + * @property {vec4$Properties} [z] mat44 z. + * @property {vec4$Properties} [t] mat44 t. + */ + + /** + * Constructs a new mat44. + * @exports mat44 + * @constructor + * @param {mat44$Properties=} [properties] Properties to set + */ + function mat44(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * mat44 x. + * @type {(vec4$Properties|null)} + */ + mat44.prototype.x = null; + + /** + * mat44 y. + * @type {(vec4$Properties|null)} + */ + mat44.prototype.y = null; + + /** + * mat44 z. + * @type {(vec4$Properties|null)} + */ + mat44.prototype.z = null; + + /** + * mat44 t. + * @type {(vec4$Properties|null)} + */ + mat44.prototype.t = null; + + /** + * Creates a new mat44 instance using the specified properties. + * @param {mat44$Properties=} [properties] Properties to set + * @returns {mat44} mat44 instance + */ + mat44.create = function create(properties) { + return new mat44(properties); + }; + + /** + * Encodes the specified mat44 message. Does not implicitly {@link mat44.verify|verify} messages. + * @param {mat44$Properties} message mat44 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + mat44.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.x != null && message.hasOwnProperty("x")) + $root.vec4.encode(message.x, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.y != null && message.hasOwnProperty("y")) + $root.vec4.encode(message.y, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.z != null && message.hasOwnProperty("z")) + $root.vec4.encode(message.z, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + if (message.t != null && message.hasOwnProperty("t")) + $root.vec4.encode(message.t, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified mat44 message, length delimited. Does not implicitly {@link mat44.verify|verify} messages. + * @param {mat44$Properties} message mat44 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + mat44.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a mat44 message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {mat44} mat44 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + mat44.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.mat44(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.x = $root.vec4.decode(reader, reader.uint32()); + break; + case 2: + message.y = $root.vec4.decode(reader, reader.uint32()); + break; + case 3: + message.z = $root.vec4.decode(reader, reader.uint32()); + break; + case 4: + message.t = $root.vec4.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a mat44 message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {mat44} mat44 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + mat44.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a mat44 message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + mat44.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.x != null && message.hasOwnProperty("x")) { + var error = $root.vec4.verify(message.x); + if (error) + return "x." + error; + } + if (message.y != null && message.hasOwnProperty("y")) { + var error = $root.vec4.verify(message.y); + if (error) + return "y." + error; + } + if (message.z != null && message.hasOwnProperty("z")) { + var error = $root.vec4.verify(message.z); + if (error) + return "z." + error; + } + if (message.t != null && message.hasOwnProperty("t")) { + var error = $root.vec4.verify(message.t); + if (error) + return "t." + error; + } + return null; + }; + + /** + * Creates a mat44 message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {mat44} mat44 + */ + mat44.fromObject = function fromObject(object) { + if (object instanceof $root.mat44) + return object; + var message = new $root.mat44(); + if (object.x != null) { + if (typeof object.x !== "object") + throw TypeError(".mat44.x: object expected"); + message.x = $root.vec4.fromObject(object.x); + } + if (object.y != null) { + if (typeof object.y !== "object") + throw TypeError(".mat44.y: object expected"); + message.y = $root.vec4.fromObject(object.y); + } + if (object.z != null) { + if (typeof object.z !== "object") + throw TypeError(".mat44.z: object expected"); + message.z = $root.vec4.fromObject(object.z); + } + if (object.t != null) { + if (typeof object.t !== "object") + throw TypeError(".mat44.t: object expected"); + message.t = $root.vec4.fromObject(object.t); + } + return message; + }; + + /** + * Creates a mat44 message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link mat44.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {mat44} mat44 + */ + mat44.from = mat44.fromObject; + + /** + * Creates a plain object from a mat44 message. Also converts values to other types if specified. + * @param {mat44} message mat44 + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + mat44.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.x = null; + object.y = null; + object.z = null; + object.t = null; + } + if (message.x != null && message.hasOwnProperty("x")) + object.x = $root.vec4.toObject(message.x, options); + if (message.y != null && message.hasOwnProperty("y")) + object.y = $root.vec4.toObject(message.y, options); + if (message.z != null && message.hasOwnProperty("z")) + object.z = $root.vec4.toObject(message.z, options); + if (message.t != null && message.hasOwnProperty("t")) + object.t = $root.vec4.toObject(message.t, options); + return object; + }; + + /** + * Creates a plain object from this mat44 message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + mat44.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this mat44 to JSON. + * @returns {Object.} JSON object + */ + mat44.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return mat44; +})(); + +$root.fmat44 = (function() { + + /** + * Properties of a fmat44. + * @typedef fmat44$Properties + * @type {Object} + * @property {fvec4$Properties} [x] fmat44 x. + * @property {fvec4$Properties} [y] fmat44 y. + * @property {fvec4$Properties} [z] fmat44 z. + * @property {fvec4$Properties} [t] fmat44 t. + */ + + /** + * Constructs a new fmat44. + * @exports fmat44 + * @constructor + * @param {fmat44$Properties=} [properties] Properties to set + */ + function fmat44(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * fmat44 x. + * @type {(fvec4$Properties|null)} + */ + fmat44.prototype.x = null; + + /** + * fmat44 y. + * @type {(fvec4$Properties|null)} + */ + fmat44.prototype.y = null; + + /** + * fmat44 z. + * @type {(fvec4$Properties|null)} + */ + fmat44.prototype.z = null; + + /** + * fmat44 t. + * @type {(fvec4$Properties|null)} + */ + fmat44.prototype.t = null; + + /** + * Creates a new fmat44 instance using the specified properties. + * @param {fmat44$Properties=} [properties] Properties to set + * @returns {fmat44} fmat44 instance + */ + fmat44.create = function create(properties) { + return new fmat44(properties); + }; + + /** + * Encodes the specified fmat44 message. Does not implicitly {@link fmat44.verify|verify} messages. + * @param {fmat44$Properties} message fmat44 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + fmat44.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.x != null && message.hasOwnProperty("x")) + $root.fvec4.encode(message.x, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.y != null && message.hasOwnProperty("y")) + $root.fvec4.encode(message.y, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.z != null && message.hasOwnProperty("z")) + $root.fvec4.encode(message.z, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + if (message.t != null && message.hasOwnProperty("t")) + $root.fvec4.encode(message.t, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified fmat44 message, length delimited. Does not implicitly {@link fmat44.verify|verify} messages. + * @param {fmat44$Properties} message fmat44 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + fmat44.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a fmat44 message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {fmat44} fmat44 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + fmat44.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.fmat44(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.x = $root.fvec4.decode(reader, reader.uint32()); + break; + case 2: + message.y = $root.fvec4.decode(reader, reader.uint32()); + break; + case 3: + message.z = $root.fvec4.decode(reader, reader.uint32()); + break; + case 4: + message.t = $root.fvec4.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a fmat44 message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {fmat44} fmat44 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + fmat44.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a fmat44 message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + fmat44.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.x != null && message.hasOwnProperty("x")) { + var error = $root.fvec4.verify(message.x); + if (error) + return "x." + error; + } + if (message.y != null && message.hasOwnProperty("y")) { + var error = $root.fvec4.verify(message.y); + if (error) + return "y." + error; + } + if (message.z != null && message.hasOwnProperty("z")) { + var error = $root.fvec4.verify(message.z); + if (error) + return "z." + error; + } + if (message.t != null && message.hasOwnProperty("t")) { + var error = $root.fvec4.verify(message.t); + if (error) + return "t." + error; + } + return null; + }; + + /** + * Creates a fmat44 message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {fmat44} fmat44 + */ + fmat44.fromObject = function fromObject(object) { + if (object instanceof $root.fmat44) + return object; + var message = new $root.fmat44(); + if (object.x != null) { + if (typeof object.x !== "object") + throw TypeError(".fmat44.x: object expected"); + message.x = $root.fvec4.fromObject(object.x); + } + if (object.y != null) { + if (typeof object.y !== "object") + throw TypeError(".fmat44.y: object expected"); + message.y = $root.fvec4.fromObject(object.y); + } + if (object.z != null) { + if (typeof object.z !== "object") + throw TypeError(".fmat44.z: object expected"); + message.z = $root.fvec4.fromObject(object.z); + } + if (object.t != null) { + if (typeof object.t !== "object") + throw TypeError(".fmat44.t: object expected"); + message.t = $root.fvec4.fromObject(object.t); + } + return message; + }; + + /** + * Creates a fmat44 message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link fmat44.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {fmat44} fmat44 + */ + fmat44.from = fmat44.fromObject; + + /** + * Creates a plain object from a fmat44 message. Also converts values to other types if specified. + * @param {fmat44} message fmat44 + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + fmat44.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.x = null; + object.y = null; + object.z = null; + object.t = null; + } + if (message.x != null && message.hasOwnProperty("x")) + object.x = $root.fvec4.toObject(message.x, options); + if (message.y != null && message.hasOwnProperty("y")) + object.y = $root.fvec4.toObject(message.y, options); + if (message.z != null && message.hasOwnProperty("z")) + object.z = $root.fvec4.toObject(message.z, options); + if (message.t != null && message.hasOwnProperty("t")) + object.t = $root.fvec4.toObject(message.t, options); + return object; + }; + + /** + * Creates a plain object from this fmat44 message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + fmat44.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this fmat44 to JSON. + * @returns {Object.} JSON object + */ + fmat44.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return fmat44; +})(); + +$root.imat44 = (function() { + + /** + * Properties of an imat44. + * @typedef imat44$Properties + * @type {Object} + * @property {ivec4$Properties} [x] imat44 x. + * @property {ivec4$Properties} [y] imat44 y. + * @property {ivec4$Properties} [z] imat44 z. + * @property {ivec4$Properties} [t] imat44 t. + */ + + /** + * Constructs a new imat44. + * @exports imat44 + * @constructor + * @param {imat44$Properties=} [properties] Properties to set + */ + function imat44(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * imat44 x. + * @type {(ivec4$Properties|null)} + */ + imat44.prototype.x = null; + + /** + * imat44 y. + * @type {(ivec4$Properties|null)} + */ + imat44.prototype.y = null; + + /** + * imat44 z. + * @type {(ivec4$Properties|null)} + */ + imat44.prototype.z = null; + + /** + * imat44 t. + * @type {(ivec4$Properties|null)} + */ + imat44.prototype.t = null; + + /** + * Creates a new imat44 instance using the specified properties. + * @param {imat44$Properties=} [properties] Properties to set + * @returns {imat44} imat44 instance + */ + imat44.create = function create(properties) { + return new imat44(properties); + }; + + /** + * Encodes the specified imat44 message. Does not implicitly {@link imat44.verify|verify} messages. + * @param {imat44$Properties} message imat44 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + imat44.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.x != null && message.hasOwnProperty("x")) + $root.ivec4.encode(message.x, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.y != null && message.hasOwnProperty("y")) + $root.ivec4.encode(message.y, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.z != null && message.hasOwnProperty("z")) + $root.ivec4.encode(message.z, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + if (message.t != null && message.hasOwnProperty("t")) + $root.ivec4.encode(message.t, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified imat44 message, length delimited. Does not implicitly {@link imat44.verify|verify} messages. + * @param {imat44$Properties} message imat44 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + imat44.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes an imat44 message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {imat44} imat44 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + imat44.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.imat44(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.x = $root.ivec4.decode(reader, reader.uint32()); + break; + case 2: + message.y = $root.ivec4.decode(reader, reader.uint32()); + break; + case 3: + message.z = $root.ivec4.decode(reader, reader.uint32()); + break; + case 4: + message.t = $root.ivec4.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes an imat44 message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {imat44} imat44 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + imat44.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies an imat44 message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + imat44.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.x != null && message.hasOwnProperty("x")) { + var error = $root.ivec4.verify(message.x); + if (error) + return "x." + error; + } + if (message.y != null && message.hasOwnProperty("y")) { + var error = $root.ivec4.verify(message.y); + if (error) + return "y." + error; + } + if (message.z != null && message.hasOwnProperty("z")) { + var error = $root.ivec4.verify(message.z); + if (error) + return "z." + error; + } + if (message.t != null && message.hasOwnProperty("t")) { + var error = $root.ivec4.verify(message.t); + if (error) + return "t." + error; + } + return null; + }; + + /** + * Creates an imat44 message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {imat44} imat44 + */ + imat44.fromObject = function fromObject(object) { + if (object instanceof $root.imat44) + return object; + var message = new $root.imat44(); + if (object.x != null) { + if (typeof object.x !== "object") + throw TypeError(".imat44.x: object expected"); + message.x = $root.ivec4.fromObject(object.x); + } + if (object.y != null) { + if (typeof object.y !== "object") + throw TypeError(".imat44.y: object expected"); + message.y = $root.ivec4.fromObject(object.y); + } + if (object.z != null) { + if (typeof object.z !== "object") + throw TypeError(".imat44.z: object expected"); + message.z = $root.ivec4.fromObject(object.z); + } + if (object.t != null) { + if (typeof object.t !== "object") + throw TypeError(".imat44.t: object expected"); + message.t = $root.ivec4.fromObject(object.t); + } + return message; + }; + + /** + * Creates an imat44 message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link imat44.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {imat44} imat44 + */ + imat44.from = imat44.fromObject; + + /** + * Creates a plain object from an imat44 message. Also converts values to other types if specified. + * @param {imat44} message imat44 + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + imat44.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.x = null; + object.y = null; + object.z = null; + object.t = null; + } + if (message.x != null && message.hasOwnProperty("x")) + object.x = $root.ivec4.toObject(message.x, options); + if (message.y != null && message.hasOwnProperty("y")) + object.y = $root.ivec4.toObject(message.y, options); + if (message.z != null && message.hasOwnProperty("z")) + object.z = $root.ivec4.toObject(message.z, options); + if (message.t != null && message.hasOwnProperty("t")) + object.t = $root.ivec4.toObject(message.t, options); + return object; + }; + + /** + * Creates a plain object from this imat44 message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + imat44.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this imat44 to JSON. + * @returns {Object.} JSON object + */ + imat44.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return imat44; +})(); + +$root.umat44 = (function() { + + /** + * Properties of an umat44. + * @typedef umat44$Properties + * @type {Object} + * @property {uvec4$Properties} [x] umat44 x. + * @property {uvec4$Properties} [y] umat44 y. + * @property {uvec4$Properties} [z] umat44 z. + * @property {uvec4$Properties} [t] umat44 t. + */ + + /** + * Constructs a new umat44. + * @exports umat44 + * @constructor + * @param {umat44$Properties=} [properties] Properties to set + */ + function umat44(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * umat44 x. + * @type {(uvec4$Properties|null)} + */ + umat44.prototype.x = null; + + /** + * umat44 y. + * @type {(uvec4$Properties|null)} + */ + umat44.prototype.y = null; + + /** + * umat44 z. + * @type {(uvec4$Properties|null)} + */ + umat44.prototype.z = null; + + /** + * umat44 t. + * @type {(uvec4$Properties|null)} + */ + umat44.prototype.t = null; + + /** + * Creates a new umat44 instance using the specified properties. + * @param {umat44$Properties=} [properties] Properties to set + * @returns {umat44} umat44 instance + */ + umat44.create = function create(properties) { + return new umat44(properties); + }; + + /** + * Encodes the specified umat44 message. Does not implicitly {@link umat44.verify|verify} messages. + * @param {umat44$Properties} message umat44 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + umat44.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.x != null && message.hasOwnProperty("x")) + $root.uvec4.encode(message.x, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.y != null && message.hasOwnProperty("y")) + $root.uvec4.encode(message.y, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.z != null && message.hasOwnProperty("z")) + $root.uvec4.encode(message.z, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + if (message.t != null && message.hasOwnProperty("t")) + $root.uvec4.encode(message.t, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified umat44 message, length delimited. Does not implicitly {@link umat44.verify|verify} messages. + * @param {umat44$Properties} message umat44 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + umat44.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes an umat44 message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {umat44} umat44 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + umat44.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.umat44(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.x = $root.uvec4.decode(reader, reader.uint32()); + break; + case 2: + message.y = $root.uvec4.decode(reader, reader.uint32()); + break; + case 3: + message.z = $root.uvec4.decode(reader, reader.uint32()); + break; + case 4: + message.t = $root.uvec4.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes an umat44 message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {umat44} umat44 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + umat44.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies an umat44 message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + umat44.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.x != null && message.hasOwnProperty("x")) { + var error = $root.uvec4.verify(message.x); + if (error) + return "x." + error; + } + if (message.y != null && message.hasOwnProperty("y")) { + var error = $root.uvec4.verify(message.y); + if (error) + return "y." + error; + } + if (message.z != null && message.hasOwnProperty("z")) { + var error = $root.uvec4.verify(message.z); + if (error) + return "z." + error; + } + if (message.t != null && message.hasOwnProperty("t")) { + var error = $root.uvec4.verify(message.t); + if (error) + return "t." + error; + } + return null; + }; + + /** + * Creates an umat44 message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {umat44} umat44 + */ + umat44.fromObject = function fromObject(object) { + if (object instanceof $root.umat44) + return object; + var message = new $root.umat44(); + if (object.x != null) { + if (typeof object.x !== "object") + throw TypeError(".umat44.x: object expected"); + message.x = $root.uvec4.fromObject(object.x); + } + if (object.y != null) { + if (typeof object.y !== "object") + throw TypeError(".umat44.y: object expected"); + message.y = $root.uvec4.fromObject(object.y); + } + if (object.z != null) { + if (typeof object.z !== "object") + throw TypeError(".umat44.z: object expected"); + message.z = $root.uvec4.fromObject(object.z); + } + if (object.t != null) { + if (typeof object.t !== "object") + throw TypeError(".umat44.t: object expected"); + message.t = $root.uvec4.fromObject(object.t); + } + return message; + }; + + /** + * Creates an umat44 message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link umat44.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {umat44} umat44 + */ + umat44.from = umat44.fromObject; + + /** + * Creates a plain object from an umat44 message. Also converts values to other types if specified. + * @param {umat44} message umat44 + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + umat44.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.x = null; + object.y = null; + object.z = null; + object.t = null; + } + if (message.x != null && message.hasOwnProperty("x")) + object.x = $root.uvec4.toObject(message.x, options); + if (message.y != null && message.hasOwnProperty("y")) + object.y = $root.uvec4.toObject(message.y, options); + if (message.z != null && message.hasOwnProperty("z")) + object.z = $root.uvec4.toObject(message.z, options); + if (message.t != null && message.hasOwnProperty("t")) + object.t = $root.uvec4.toObject(message.t, options); + return object; + }; + + /** + * Creates a plain object from this umat44 message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + umat44.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this umat44 to JSON. + * @returns {Object.} JSON object + */ + umat44.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return umat44; +})(); + +$root.vec = (function() { + + /** + * Properties of a vec. + * @typedef vec$Properties + * @type {Object} + * @property {Array.} [v] vec v. + */ + + /** + * Constructs a new vec. + * @exports vec + * @constructor + * @param {vec$Properties=} [properties] Properties to set + */ + function vec(properties) { + this.v = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * vec v. + * @type {Array.} + */ + vec.prototype.v = $util.emptyArray; + + /** + * Creates a new vec instance using the specified properties. + * @param {vec$Properties=} [properties] Properties to set + * @returns {vec} vec instance + */ + vec.create = function create(properties) { + return new vec(properties); + }; + + /** + * Encodes the specified vec message. Does not implicitly {@link vec.verify|verify} messages. + * @param {vec$Properties} message vec message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + vec.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.v != null && message.v.length) { + writer.uint32(/* id 1, wireType 2 =*/10).fork(); + for (var i = 0; i < message.v.length; ++i) + writer.double(message.v[i]); + writer.ldelim(); + } + return writer; + }; + + /** + * Encodes the specified vec message, length delimited. Does not implicitly {@link vec.verify|verify} messages. + * @param {vec$Properties} message vec message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + vec.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a vec message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {vec} vec + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + vec.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.vec(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (!(message.v && message.v.length)) + message.v = []; + if ((tag & 7) === 2) { + var end2 = reader.uint32() + reader.pos; + while (reader.pos < end2) + message.v.push(reader.double()); + } else + message.v.push(reader.double()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a vec message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {vec} vec + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + vec.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a vec message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + vec.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.v != null && message.hasOwnProperty("v")) { + if (!Array.isArray(message.v)) + return "v: array expected"; + for (var i = 0; i < message.v.length; ++i) + if (typeof message.v[i] !== "number") + return "v: number[] expected"; + } + return null; + }; + + /** + * Creates a vec message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {vec} vec + */ + vec.fromObject = function fromObject(object) { + if (object instanceof $root.vec) + return object; + var message = new $root.vec(); + if (object.v) { + if (!Array.isArray(object.v)) + throw TypeError(".vec.v: array expected"); + message.v = []; + for (var i = 0; i < object.v.length; ++i) + message.v[i] = Number(object.v[i]); + } + return message; + }; + + /** + * Creates a vec message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link vec.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {vec} vec + */ + vec.from = vec.fromObject; + + /** + * Creates a plain object from a vec message. Also converts values to other types if specified. + * @param {vec} message vec + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + vec.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.v = []; + if (message.v && message.v.length) { + object.v = []; + for (var j = 0; j < message.v.length; ++j) + object.v[j] = message.v[j]; + } + return object; + }; + + /** + * Creates a plain object from this vec message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + vec.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this vec to JSON. + * @returns {Object.} JSON object + */ + vec.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return vec; +})(); + +$root.fvec = (function() { + + /** + * Properties of a fvec. + * @typedef fvec$Properties + * @type {Object} + * @property {Array.} [v] fvec v. + */ + + /** + * Constructs a new fvec. + * @exports fvec + * @constructor + * @param {fvec$Properties=} [properties] Properties to set + */ + function fvec(properties) { + this.v = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * fvec v. + * @type {Array.} + */ + fvec.prototype.v = $util.emptyArray; + + /** + * Creates a new fvec instance using the specified properties. + * @param {fvec$Properties=} [properties] Properties to set + * @returns {fvec} fvec instance + */ + fvec.create = function create(properties) { + return new fvec(properties); + }; + + /** + * Encodes the specified fvec message. Does not implicitly {@link fvec.verify|verify} messages. + * @param {fvec$Properties} message fvec message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + fvec.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.v != null && message.v.length) { + writer.uint32(/* id 1, wireType 2 =*/10).fork(); + for (var i = 0; i < message.v.length; ++i) + writer.float(message.v[i]); + writer.ldelim(); + } + return writer; + }; + + /** + * Encodes the specified fvec message, length delimited. Does not implicitly {@link fvec.verify|verify} messages. + * @param {fvec$Properties} message fvec message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + fvec.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a fvec message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {fvec} fvec + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + fvec.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.fvec(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (!(message.v && message.v.length)) + message.v = []; + if ((tag & 7) === 2) { + var end2 = reader.uint32() + reader.pos; + while (reader.pos < end2) + message.v.push(reader.float()); + } else + message.v.push(reader.float()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a fvec message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {fvec} fvec + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + fvec.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a fvec message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + fvec.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.v != null && message.hasOwnProperty("v")) { + if (!Array.isArray(message.v)) + return "v: array expected"; + for (var i = 0; i < message.v.length; ++i) + if (typeof message.v[i] !== "number") + return "v: number[] expected"; + } + return null; + }; + + /** + * Creates a fvec message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {fvec} fvec + */ + fvec.fromObject = function fromObject(object) { + if (object instanceof $root.fvec) + return object; + var message = new $root.fvec(); + if (object.v) { + if (!Array.isArray(object.v)) + throw TypeError(".fvec.v: array expected"); + message.v = []; + for (var i = 0; i < object.v.length; ++i) + message.v[i] = Number(object.v[i]); + } + return message; + }; + + /** + * Creates a fvec message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link fvec.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {fvec} fvec + */ + fvec.from = fvec.fromObject; + + /** + * Creates a plain object from a fvec message. Also converts values to other types if specified. + * @param {fvec} message fvec + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + fvec.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.v = []; + if (message.v && message.v.length) { + object.v = []; + for (var j = 0; j < message.v.length; ++j) + object.v[j] = message.v[j]; + } + return object; + }; + + /** + * Creates a plain object from this fvec message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + fvec.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this fvec to JSON. + * @returns {Object.} JSON object + */ + fvec.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return fvec; +})(); + +$root.ivec = (function() { + + /** + * Properties of an ivec. + * @typedef ivec$Properties + * @type {Object} + * @property {Array.} [v] ivec v. + */ + + /** + * Constructs a new ivec. + * @exports ivec + * @constructor + * @param {ivec$Properties=} [properties] Properties to set + */ + function ivec(properties) { + this.v = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * ivec v. + * @type {Array.} + */ + ivec.prototype.v = $util.emptyArray; + + /** + * Creates a new ivec instance using the specified properties. + * @param {ivec$Properties=} [properties] Properties to set + * @returns {ivec} ivec instance + */ + ivec.create = function create(properties) { + return new ivec(properties); + }; + + /** + * Encodes the specified ivec message. Does not implicitly {@link ivec.verify|verify} messages. + * @param {ivec$Properties} message ivec message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ivec.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.v != null && message.v.length) { + writer.uint32(/* id 1, wireType 2 =*/10).fork(); + for (var i = 0; i < message.v.length; ++i) + writer.sint32(message.v[i]); + writer.ldelim(); + } + return writer; + }; + + /** + * Encodes the specified ivec message, length delimited. Does not implicitly {@link ivec.verify|verify} messages. + * @param {ivec$Properties} message ivec message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ivec.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes an ivec message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {ivec} ivec + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ivec.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.ivec(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (!(message.v && message.v.length)) + message.v = []; + if ((tag & 7) === 2) { + var end2 = reader.uint32() + reader.pos; + while (reader.pos < end2) + message.v.push(reader.sint32()); + } else + message.v.push(reader.sint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes an ivec message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {ivec} ivec + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ivec.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies an ivec message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + ivec.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.v != null && message.hasOwnProperty("v")) { + if (!Array.isArray(message.v)) + return "v: array expected"; + for (var i = 0; i < message.v.length; ++i) + if (!$util.isInteger(message.v[i])) + return "v: integer[] expected"; + } + return null; + }; + + /** + * Creates an ivec message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {ivec} ivec + */ + ivec.fromObject = function fromObject(object) { + if (object instanceof $root.ivec) + return object; + var message = new $root.ivec(); + if (object.v) { + if (!Array.isArray(object.v)) + throw TypeError(".ivec.v: array expected"); + message.v = []; + for (var i = 0; i < object.v.length; ++i) + message.v[i] = object.v[i] | 0; + } + return message; + }; + + /** + * Creates an ivec message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link ivec.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {ivec} ivec + */ + ivec.from = ivec.fromObject; + + /** + * Creates a plain object from an ivec message. Also converts values to other types if specified. + * @param {ivec} message ivec + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + ivec.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.v = []; + if (message.v && message.v.length) { + object.v = []; + for (var j = 0; j < message.v.length; ++j) + object.v[j] = message.v[j]; + } + return object; + }; + + /** + * Creates a plain object from this ivec message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + ivec.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this ivec to JSON. + * @returns {Object.} JSON object + */ + ivec.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return ivec; +})(); + +$root.uvec = (function() { + + /** + * Properties of an uvec. + * @typedef uvec$Properties + * @type {Object} + * @property {Array.} [v] uvec v. + */ + + /** + * Constructs a new uvec. + * @exports uvec + * @constructor + * @param {uvec$Properties=} [properties] Properties to set + */ + function uvec(properties) { + this.v = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * uvec v. + * @type {Array.} + */ + uvec.prototype.v = $util.emptyArray; + + /** + * Creates a new uvec instance using the specified properties. + * @param {uvec$Properties=} [properties] Properties to set + * @returns {uvec} uvec instance + */ + uvec.create = function create(properties) { + return new uvec(properties); + }; + + /** + * Encodes the specified uvec message. Does not implicitly {@link uvec.verify|verify} messages. + * @param {uvec$Properties} message uvec message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + uvec.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.v != null && message.v.length) { + writer.uint32(/* id 1, wireType 2 =*/10).fork(); + for (var i = 0; i < message.v.length; ++i) + writer.uint32(message.v[i]); + writer.ldelim(); + } + return writer; + }; + + /** + * Encodes the specified uvec message, length delimited. Does not implicitly {@link uvec.verify|verify} messages. + * @param {uvec$Properties} message uvec message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + uvec.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes an uvec message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {uvec} uvec + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + uvec.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.uvec(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (!(message.v && message.v.length)) + message.v = []; + if ((tag & 7) === 2) { + var end2 = reader.uint32() + reader.pos; + while (reader.pos < end2) + message.v.push(reader.uint32()); + } else + message.v.push(reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes an uvec message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {uvec} uvec + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + uvec.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies an uvec message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + uvec.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.v != null && message.hasOwnProperty("v")) { + if (!Array.isArray(message.v)) + return "v: array expected"; + for (var i = 0; i < message.v.length; ++i) + if (!$util.isInteger(message.v[i])) + return "v: integer[] expected"; + } + return null; + }; + + /** + * Creates an uvec message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {uvec} uvec + */ + uvec.fromObject = function fromObject(object) { + if (object instanceof $root.uvec) + return object; + var message = new $root.uvec(); + if (object.v) { + if (!Array.isArray(object.v)) + throw TypeError(".uvec.v: array expected"); + message.v = []; + for (var i = 0; i < object.v.length; ++i) + message.v[i] = object.v[i] >>> 0; + } + return message; + }; + + /** + * Creates an uvec message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link uvec.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {uvec} uvec + */ + uvec.from = uvec.fromObject; + + /** + * Creates a plain object from an uvec message. Also converts values to other types if specified. + * @param {uvec} message uvec + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + uvec.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.v = []; + if (message.v && message.v.length) { + object.v = []; + for (var j = 0; j < message.v.length; ++j) + object.v[j] = message.v[j]; + } + return object; + }; + + /** + * Creates a plain object from this uvec message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + uvec.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this uvec to JSON. + * @returns {Object.} JSON object + */ + uvec.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return uvec; +})(); + +$root.cvec = (function() { + + /** + * Properties of a cvec. + * @typedef cvec$Properties + * @type {Object} + * @property {Uint8Array} [v] cvec v. + */ + + /** + * Constructs a new cvec. + * @exports cvec + * @constructor + * @param {cvec$Properties=} [properties] Properties to set + */ + function cvec(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * cvec v. + * @type {Uint8Array} + */ + cvec.prototype.v = $util.newBuffer([]); + + /** + * Creates a new cvec instance using the specified properties. + * @param {cvec$Properties=} [properties] Properties to set + * @returns {cvec} cvec instance + */ + cvec.create = function create(properties) { + return new cvec(properties); + }; + + /** + * Encodes the specified cvec message. Does not implicitly {@link cvec.verify|verify} messages. + * @param {cvec$Properties} message cvec message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + cvec.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.v != null && message.hasOwnProperty("v")) + writer.uint32(/* id 1, wireType 2 =*/10).bytes(message.v); + return writer; + }; + + /** + * Encodes the specified cvec message, length delimited. Does not implicitly {@link cvec.verify|verify} messages. + * @param {cvec$Properties} message cvec message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + cvec.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a cvec message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {cvec} cvec + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + cvec.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.cvec(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.v = reader.bytes(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a cvec message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {cvec} cvec + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + cvec.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a cvec message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + cvec.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.v != null && message.hasOwnProperty("v")) + if (!(message.v && typeof message.v.length === "number" || $util.isString(message.v))) + return "v: buffer expected"; + return null; + }; + + /** + * Creates a cvec message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {cvec} cvec + */ + cvec.fromObject = function fromObject(object) { + if (object instanceof $root.cvec) + return object; + var message = new $root.cvec(); + if (object.v != null) + if (typeof object.v === "string") + $util.base64.decode(object.v, message.v = $util.newBuffer($util.base64.length(object.v)), 0); + else if (object.v.length) + message.v = object.v; + return message; + }; + + /** + * Creates a cvec message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link cvec.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {cvec} cvec + */ + cvec.from = cvec.fromObject; + + /** + * Creates a plain object from a cvec message. Also converts values to other types if specified. + * @param {cvec} message cvec + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + cvec.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) + object.v = options.bytes === String ? "" : []; + if (message.v != null && message.hasOwnProperty("v")) + object.v = options.bytes === String ? $util.base64.encode(message.v, 0, message.v.length) : options.bytes === Array ? Array.prototype.slice.call(message.v) : message.v; + return object; + }; + + /** + * Creates a plain object from this cvec message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + cvec.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this cvec to JSON. + * @returns {Object.} JSON object + */ + cvec.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return cvec; +})(); + +$root.vec2 = (function() { + + /** + * Properties of a vec2. + * @typedef vec2$Properties + * @type {Object} + * @property {number} [x] vec2 x. + * @property {number} [y] vec2 y. + */ + + /** + * Constructs a new vec2. + * @exports vec2 + * @constructor + * @param {vec2$Properties=} [properties] Properties to set + */ + function vec2(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * vec2 x. + * @type {number} + */ + vec2.prototype.x = 0; + + /** + * vec2 y. + * @type {number} + */ + vec2.prototype.y = 0; + + /** + * Creates a new vec2 instance using the specified properties. + * @param {vec2$Properties=} [properties] Properties to set + * @returns {vec2} vec2 instance + */ + vec2.create = function create(properties) { + return new vec2(properties); + }; + + /** + * Encodes the specified vec2 message. Does not implicitly {@link vec2.verify|verify} messages. + * @param {vec2$Properties} message vec2 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + vec2.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.x != null && message.hasOwnProperty("x")) + writer.uint32(/* id 1, wireType 1 =*/9).double(message.x); + if (message.y != null && message.hasOwnProperty("y")) + writer.uint32(/* id 2, wireType 1 =*/17).double(message.y); + return writer; + }; + + /** + * Encodes the specified vec2 message, length delimited. Does not implicitly {@link vec2.verify|verify} messages. + * @param {vec2$Properties} message vec2 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + vec2.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a vec2 message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {vec2} vec2 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + vec2.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.vec2(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.x = reader.double(); + break; + case 2: + message.y = reader.double(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a vec2 message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {vec2} vec2 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + vec2.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a vec2 message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + vec2.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.x != null && message.hasOwnProperty("x")) + if (typeof message.x !== "number") + return "x: number expected"; + if (message.y != null && message.hasOwnProperty("y")) + if (typeof message.y !== "number") + return "y: number expected"; + return null; + }; + + /** + * Creates a vec2 message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {vec2} vec2 + */ + vec2.fromObject = function fromObject(object) { + if (object instanceof $root.vec2) + return object; + var message = new $root.vec2(); + if (object.x != null) + message.x = Number(object.x); + if (object.y != null) + message.y = Number(object.y); + return message; + }; + + /** + * Creates a vec2 message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link vec2.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {vec2} vec2 + */ + vec2.from = vec2.fromObject; + + /** + * Creates a plain object from a vec2 message. Also converts values to other types if specified. + * @param {vec2} message vec2 + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + vec2.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.x = 0; + object.y = 0; + } + if (message.x != null && message.hasOwnProperty("x")) + object.x = message.x; + if (message.y != null && message.hasOwnProperty("y")) + object.y = message.y; + return object; + }; + + /** + * Creates a plain object from this vec2 message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + vec2.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this vec2 to JSON. + * @returns {Object.} JSON object + */ + vec2.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return vec2; +})(); + +$root.fvec2 = (function() { + + /** + * Properties of a fvec2. + * @typedef fvec2$Properties + * @type {Object} + * @property {number} [x] fvec2 x. + * @property {number} [y] fvec2 y. + */ + + /** + * Constructs a new fvec2. + * @exports fvec2 + * @constructor + * @param {fvec2$Properties=} [properties] Properties to set + */ + function fvec2(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * fvec2 x. + * @type {number} + */ + fvec2.prototype.x = 0; + + /** + * fvec2 y. + * @type {number} + */ + fvec2.prototype.y = 0; + + /** + * Creates a new fvec2 instance using the specified properties. + * @param {fvec2$Properties=} [properties] Properties to set + * @returns {fvec2} fvec2 instance + */ + fvec2.create = function create(properties) { + return new fvec2(properties); + }; + + /** + * Encodes the specified fvec2 message. Does not implicitly {@link fvec2.verify|verify} messages. + * @param {fvec2$Properties} message fvec2 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + fvec2.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.x != null && message.hasOwnProperty("x")) + writer.uint32(/* id 1, wireType 5 =*/13).float(message.x); + if (message.y != null && message.hasOwnProperty("y")) + writer.uint32(/* id 2, wireType 5 =*/21).float(message.y); + return writer; + }; + + /** + * Encodes the specified fvec2 message, length delimited. Does not implicitly {@link fvec2.verify|verify} messages. + * @param {fvec2$Properties} message fvec2 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + fvec2.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a fvec2 message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {fvec2} fvec2 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + fvec2.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.fvec2(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.x = reader.float(); + break; + case 2: + message.y = reader.float(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a fvec2 message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {fvec2} fvec2 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + fvec2.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a fvec2 message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + fvec2.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.x != null && message.hasOwnProperty("x")) + if (typeof message.x !== "number") + return "x: number expected"; + if (message.y != null && message.hasOwnProperty("y")) + if (typeof message.y !== "number") + return "y: number expected"; + return null; + }; + + /** + * Creates a fvec2 message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {fvec2} fvec2 + */ + fvec2.fromObject = function fromObject(object) { + if (object instanceof $root.fvec2) + return object; + var message = new $root.fvec2(); + if (object.x != null) + message.x = Number(object.x); + if (object.y != null) + message.y = Number(object.y); + return message; + }; + + /** + * Creates a fvec2 message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link fvec2.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {fvec2} fvec2 + */ + fvec2.from = fvec2.fromObject; + + /** + * Creates a plain object from a fvec2 message. Also converts values to other types if specified. + * @param {fvec2} message fvec2 + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + fvec2.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.x = 0; + object.y = 0; + } + if (message.x != null && message.hasOwnProperty("x")) + object.x = message.x; + if (message.y != null && message.hasOwnProperty("y")) + object.y = message.y; + return object; + }; + + /** + * Creates a plain object from this fvec2 message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + fvec2.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this fvec2 to JSON. + * @returns {Object.} JSON object + */ + fvec2.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return fvec2; +})(); + +$root.ivec2 = (function() { + + /** + * Properties of an ivec2. + * @typedef ivec2$Properties + * @type {Object} + * @property {number} [x] ivec2 x. + * @property {number} [y] ivec2 y. + */ + + /** + * Constructs a new ivec2. + * @exports ivec2 + * @constructor + * @param {ivec2$Properties=} [properties] Properties to set + */ + function ivec2(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * ivec2 x. + * @type {number} + */ + ivec2.prototype.x = 0; + + /** + * ivec2 y. + * @type {number} + */ + ivec2.prototype.y = 0; + + /** + * Creates a new ivec2 instance using the specified properties. + * @param {ivec2$Properties=} [properties] Properties to set + * @returns {ivec2} ivec2 instance + */ + ivec2.create = function create(properties) { + return new ivec2(properties); + }; + + /** + * Encodes the specified ivec2 message. Does not implicitly {@link ivec2.verify|verify} messages. + * @param {ivec2$Properties} message ivec2 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ivec2.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.x != null && message.hasOwnProperty("x")) + writer.uint32(/* id 1, wireType 0 =*/8).sint32(message.x); + if (message.y != null && message.hasOwnProperty("y")) + writer.uint32(/* id 2, wireType 0 =*/16).sint32(message.y); + return writer; + }; + + /** + * Encodes the specified ivec2 message, length delimited. Does not implicitly {@link ivec2.verify|verify} messages. + * @param {ivec2$Properties} message ivec2 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ivec2.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes an ivec2 message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {ivec2} ivec2 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ivec2.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.ivec2(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.x = reader.sint32(); + break; + case 2: + message.y = reader.sint32(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes an ivec2 message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {ivec2} ivec2 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ivec2.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies an ivec2 message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + ivec2.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.x != null && message.hasOwnProperty("x")) + if (!$util.isInteger(message.x)) + return "x: integer expected"; + if (message.y != null && message.hasOwnProperty("y")) + if (!$util.isInteger(message.y)) + return "y: integer expected"; + return null; + }; + + /** + * Creates an ivec2 message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {ivec2} ivec2 + */ + ivec2.fromObject = function fromObject(object) { + if (object instanceof $root.ivec2) + return object; + var message = new $root.ivec2(); + if (object.x != null) + message.x = object.x | 0; + if (object.y != null) + message.y = object.y | 0; + return message; + }; + + /** + * Creates an ivec2 message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link ivec2.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {ivec2} ivec2 + */ + ivec2.from = ivec2.fromObject; + + /** + * Creates a plain object from an ivec2 message. Also converts values to other types if specified. + * @param {ivec2} message ivec2 + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + ivec2.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.x = 0; + object.y = 0; + } + if (message.x != null && message.hasOwnProperty("x")) + object.x = message.x; + if (message.y != null && message.hasOwnProperty("y")) + object.y = message.y; + return object; + }; + + /** + * Creates a plain object from this ivec2 message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + ivec2.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this ivec2 to JSON. + * @returns {Object.} JSON object + */ + ivec2.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return ivec2; +})(); + +$root.uvec2 = (function() { + + /** + * Properties of an uvec2. + * @typedef uvec2$Properties + * @type {Object} + * @property {number} [x] uvec2 x. + * @property {number} [y] uvec2 y. + */ + + /** + * Constructs a new uvec2. + * @exports uvec2 + * @constructor + * @param {uvec2$Properties=} [properties] Properties to set + */ + function uvec2(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * uvec2 x. + * @type {number} + */ + uvec2.prototype.x = 0; + + /** + * uvec2 y. + * @type {number} + */ + uvec2.prototype.y = 0; + + /** + * Creates a new uvec2 instance using the specified properties. + * @param {uvec2$Properties=} [properties] Properties to set + * @returns {uvec2} uvec2 instance + */ + uvec2.create = function create(properties) { + return new uvec2(properties); + }; + + /** + * Encodes the specified uvec2 message. Does not implicitly {@link uvec2.verify|verify} messages. + * @param {uvec2$Properties} message uvec2 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + uvec2.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.x != null && message.hasOwnProperty("x")) + writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.x); + if (message.y != null && message.hasOwnProperty("y")) + writer.uint32(/* id 2, wireType 0 =*/16).uint32(message.y); + return writer; + }; + + /** + * Encodes the specified uvec2 message, length delimited. Does not implicitly {@link uvec2.verify|verify} messages. + * @param {uvec2$Properties} message uvec2 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + uvec2.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes an uvec2 message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {uvec2} uvec2 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + uvec2.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.uvec2(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.x = reader.uint32(); + break; + case 2: + message.y = reader.uint32(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes an uvec2 message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {uvec2} uvec2 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + uvec2.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies an uvec2 message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + uvec2.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.x != null && message.hasOwnProperty("x")) + if (!$util.isInteger(message.x)) + return "x: integer expected"; + if (message.y != null && message.hasOwnProperty("y")) + if (!$util.isInteger(message.y)) + return "y: integer expected"; + return null; + }; + + /** + * Creates an uvec2 message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {uvec2} uvec2 + */ + uvec2.fromObject = function fromObject(object) { + if (object instanceof $root.uvec2) + return object; + var message = new $root.uvec2(); + if (object.x != null) + message.x = object.x >>> 0; + if (object.y != null) + message.y = object.y >>> 0; + return message; + }; + + /** + * Creates an uvec2 message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link uvec2.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {uvec2} uvec2 + */ + uvec2.from = uvec2.fromObject; + + /** + * Creates a plain object from an uvec2 message. Also converts values to other types if specified. + * @param {uvec2} message uvec2 + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + uvec2.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.x = 0; + object.y = 0; + } + if (message.x != null && message.hasOwnProperty("x")) + object.x = message.x; + if (message.y != null && message.hasOwnProperty("y")) + object.y = message.y; + return object; + }; + + /** + * Creates a plain object from this uvec2 message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + uvec2.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this uvec2 to JSON. + * @returns {Object.} JSON object + */ + uvec2.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return uvec2; +})(); + +$root.vec3 = (function() { + + /** + * Properties of a vec3. + * @typedef vec3$Properties + * @type {Object} + * @property {number} [x] vec3 x. + * @property {number} [y] vec3 y. + * @property {number} [z] vec3 z. + */ + + /** + * Constructs a new vec3. + * @exports vec3 + * @constructor + * @param {vec3$Properties=} [properties] Properties to set + */ + function vec3(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * vec3 x. + * @type {number} + */ + vec3.prototype.x = 0; + + /** + * vec3 y. + * @type {number} + */ + vec3.prototype.y = 0; + + /** + * vec3 z. + * @type {number} + */ + vec3.prototype.z = 0; + + /** + * Creates a new vec3 instance using the specified properties. + * @param {vec3$Properties=} [properties] Properties to set + * @returns {vec3} vec3 instance + */ + vec3.create = function create(properties) { + return new vec3(properties); + }; + + /** + * Encodes the specified vec3 message. Does not implicitly {@link vec3.verify|verify} messages. + * @param {vec3$Properties} message vec3 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + vec3.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.x != null && message.hasOwnProperty("x")) + writer.uint32(/* id 1, wireType 1 =*/9).double(message.x); + if (message.y != null && message.hasOwnProperty("y")) + writer.uint32(/* id 2, wireType 1 =*/17).double(message.y); + if (message.z != null && message.hasOwnProperty("z")) + writer.uint32(/* id 3, wireType 1 =*/25).double(message.z); + return writer; + }; + + /** + * Encodes the specified vec3 message, length delimited. Does not implicitly {@link vec3.verify|verify} messages. + * @param {vec3$Properties} message vec3 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + vec3.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a vec3 message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {vec3} vec3 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + vec3.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.vec3(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.x = reader.double(); + break; + case 2: + message.y = reader.double(); + break; + case 3: + message.z = reader.double(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a vec3 message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {vec3} vec3 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + vec3.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a vec3 message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + vec3.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.x != null && message.hasOwnProperty("x")) + if (typeof message.x !== "number") + return "x: number expected"; + if (message.y != null && message.hasOwnProperty("y")) + if (typeof message.y !== "number") + return "y: number expected"; + if (message.z != null && message.hasOwnProperty("z")) + if (typeof message.z !== "number") + return "z: number expected"; + return null; + }; + + /** + * Creates a vec3 message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {vec3} vec3 + */ + vec3.fromObject = function fromObject(object) { + if (object instanceof $root.vec3) + return object; + var message = new $root.vec3(); + if (object.x != null) + message.x = Number(object.x); + if (object.y != null) + message.y = Number(object.y); + if (object.z != null) + message.z = Number(object.z); + return message; + }; + + /** + * Creates a vec3 message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link vec3.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {vec3} vec3 + */ + vec3.from = vec3.fromObject; + + /** + * Creates a plain object from a vec3 message. Also converts values to other types if specified. + * @param {vec3} message vec3 + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + vec3.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.x = 0; + object.y = 0; + object.z = 0; + } + if (message.x != null && message.hasOwnProperty("x")) + object.x = message.x; + if (message.y != null && message.hasOwnProperty("y")) + object.y = message.y; + if (message.z != null && message.hasOwnProperty("z")) + object.z = message.z; + return object; + }; + + /** + * Creates a plain object from this vec3 message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + vec3.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this vec3 to JSON. + * @returns {Object.} JSON object + */ + vec3.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return vec3; +})(); + +$root.fvec3 = (function() { + + /** + * Properties of a fvec3. + * @typedef fvec3$Properties + * @type {Object} + * @property {number} [x] fvec3 x. + * @property {number} [y] fvec3 y. + * @property {number} [z] fvec3 z. + */ + + /** + * Constructs a new fvec3. + * @exports fvec3 + * @constructor + * @param {fvec3$Properties=} [properties] Properties to set + */ + function fvec3(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * fvec3 x. + * @type {number} + */ + fvec3.prototype.x = 0; + + /** + * fvec3 y. + * @type {number} + */ + fvec3.prototype.y = 0; + + /** + * fvec3 z. + * @type {number} + */ + fvec3.prototype.z = 0; + + /** + * Creates a new fvec3 instance using the specified properties. + * @param {fvec3$Properties=} [properties] Properties to set + * @returns {fvec3} fvec3 instance + */ + fvec3.create = function create(properties) { + return new fvec3(properties); + }; + + /** + * Encodes the specified fvec3 message. Does not implicitly {@link fvec3.verify|verify} messages. + * @param {fvec3$Properties} message fvec3 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + fvec3.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.x != null && message.hasOwnProperty("x")) + writer.uint32(/* id 1, wireType 5 =*/13).float(message.x); + if (message.y != null && message.hasOwnProperty("y")) + writer.uint32(/* id 2, wireType 5 =*/21).float(message.y); + if (message.z != null && message.hasOwnProperty("z")) + writer.uint32(/* id 3, wireType 5 =*/29).float(message.z); + return writer; + }; + + /** + * Encodes the specified fvec3 message, length delimited. Does not implicitly {@link fvec3.verify|verify} messages. + * @param {fvec3$Properties} message fvec3 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + fvec3.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a fvec3 message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {fvec3} fvec3 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + fvec3.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.fvec3(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.x = reader.float(); + break; + case 2: + message.y = reader.float(); + break; + case 3: + message.z = reader.float(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a fvec3 message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {fvec3} fvec3 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + fvec3.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a fvec3 message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + fvec3.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.x != null && message.hasOwnProperty("x")) + if (typeof message.x !== "number") + return "x: number expected"; + if (message.y != null && message.hasOwnProperty("y")) + if (typeof message.y !== "number") + return "y: number expected"; + if (message.z != null && message.hasOwnProperty("z")) + if (typeof message.z !== "number") + return "z: number expected"; + return null; + }; + + /** + * Creates a fvec3 message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {fvec3} fvec3 + */ + fvec3.fromObject = function fromObject(object) { + if (object instanceof $root.fvec3) + return object; + var message = new $root.fvec3(); + if (object.x != null) + message.x = Number(object.x); + if (object.y != null) + message.y = Number(object.y); + if (object.z != null) + message.z = Number(object.z); + return message; + }; + + /** + * Creates a fvec3 message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link fvec3.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {fvec3} fvec3 + */ + fvec3.from = fvec3.fromObject; + + /** + * Creates a plain object from a fvec3 message. Also converts values to other types if specified. + * @param {fvec3} message fvec3 + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + fvec3.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.x = 0; + object.y = 0; + object.z = 0; + } + if (message.x != null && message.hasOwnProperty("x")) + object.x = message.x; + if (message.y != null && message.hasOwnProperty("y")) + object.y = message.y; + if (message.z != null && message.hasOwnProperty("z")) + object.z = message.z; + return object; + }; + + /** + * Creates a plain object from this fvec3 message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + fvec3.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this fvec3 to JSON. + * @returns {Object.} JSON object + */ + fvec3.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return fvec3; +})(); + +$root.ivec3 = (function() { + + /** + * Properties of an ivec3. + * @typedef ivec3$Properties + * @type {Object} + * @property {number} [x] ivec3 x. + * @property {number} [y] ivec3 y. + * @property {number} [z] ivec3 z. + */ + + /** + * Constructs a new ivec3. + * @exports ivec3 + * @constructor + * @param {ivec3$Properties=} [properties] Properties to set + */ + function ivec3(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * ivec3 x. + * @type {number} + */ + ivec3.prototype.x = 0; + + /** + * ivec3 y. + * @type {number} + */ + ivec3.prototype.y = 0; + + /** + * ivec3 z. + * @type {number} + */ + ivec3.prototype.z = 0; + + /** + * Creates a new ivec3 instance using the specified properties. + * @param {ivec3$Properties=} [properties] Properties to set + * @returns {ivec3} ivec3 instance + */ + ivec3.create = function create(properties) { + return new ivec3(properties); + }; + + /** + * Encodes the specified ivec3 message. Does not implicitly {@link ivec3.verify|verify} messages. + * @param {ivec3$Properties} message ivec3 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ivec3.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.x != null && message.hasOwnProperty("x")) + writer.uint32(/* id 1, wireType 0 =*/8).sint32(message.x); + if (message.y != null && message.hasOwnProperty("y")) + writer.uint32(/* id 2, wireType 0 =*/16).sint32(message.y); + if (message.z != null && message.hasOwnProperty("z")) + writer.uint32(/* id 3, wireType 0 =*/24).sint32(message.z); + return writer; + }; + + /** + * Encodes the specified ivec3 message, length delimited. Does not implicitly {@link ivec3.verify|verify} messages. + * @param {ivec3$Properties} message ivec3 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ivec3.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes an ivec3 message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {ivec3} ivec3 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ivec3.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.ivec3(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.x = reader.sint32(); + break; + case 2: + message.y = reader.sint32(); + break; + case 3: + message.z = reader.sint32(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes an ivec3 message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {ivec3} ivec3 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ivec3.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies an ivec3 message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + ivec3.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.x != null && message.hasOwnProperty("x")) + if (!$util.isInteger(message.x)) + return "x: integer expected"; + if (message.y != null && message.hasOwnProperty("y")) + if (!$util.isInteger(message.y)) + return "y: integer expected"; + if (message.z != null && message.hasOwnProperty("z")) + if (!$util.isInteger(message.z)) + return "z: integer expected"; + return null; + }; + + /** + * Creates an ivec3 message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {ivec3} ivec3 + */ + ivec3.fromObject = function fromObject(object) { + if (object instanceof $root.ivec3) + return object; + var message = new $root.ivec3(); + if (object.x != null) + message.x = object.x | 0; + if (object.y != null) + message.y = object.y | 0; + if (object.z != null) + message.z = object.z | 0; + return message; + }; + + /** + * Creates an ivec3 message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link ivec3.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {ivec3} ivec3 + */ + ivec3.from = ivec3.fromObject; + + /** + * Creates a plain object from an ivec3 message. Also converts values to other types if specified. + * @param {ivec3} message ivec3 + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + ivec3.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.x = 0; + object.y = 0; + object.z = 0; + } + if (message.x != null && message.hasOwnProperty("x")) + object.x = message.x; + if (message.y != null && message.hasOwnProperty("y")) + object.y = message.y; + if (message.z != null && message.hasOwnProperty("z")) + object.z = message.z; + return object; + }; + + /** + * Creates a plain object from this ivec3 message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + ivec3.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this ivec3 to JSON. + * @returns {Object.} JSON object + */ + ivec3.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return ivec3; +})(); + +$root.uvec3 = (function() { + + /** + * Properties of an uvec3. + * @typedef uvec3$Properties + * @type {Object} + * @property {number} [x] uvec3 x. + * @property {number} [y] uvec3 y. + * @property {number} [z] uvec3 z. + */ + + /** + * Constructs a new uvec3. + * @exports uvec3 + * @constructor + * @param {uvec3$Properties=} [properties] Properties to set + */ + function uvec3(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * uvec3 x. + * @type {number} + */ + uvec3.prototype.x = 0; + + /** + * uvec3 y. + * @type {number} + */ + uvec3.prototype.y = 0; + + /** + * uvec3 z. + * @type {number} + */ + uvec3.prototype.z = 0; + + /** + * Creates a new uvec3 instance using the specified properties. + * @param {uvec3$Properties=} [properties] Properties to set + * @returns {uvec3} uvec3 instance + */ + uvec3.create = function create(properties) { + return new uvec3(properties); + }; + + /** + * Encodes the specified uvec3 message. Does not implicitly {@link uvec3.verify|verify} messages. + * @param {uvec3$Properties} message uvec3 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + uvec3.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.x != null && message.hasOwnProperty("x")) + writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.x); + if (message.y != null && message.hasOwnProperty("y")) + writer.uint32(/* id 2, wireType 0 =*/16).uint32(message.y); + if (message.z != null && message.hasOwnProperty("z")) + writer.uint32(/* id 3, wireType 0 =*/24).uint32(message.z); + return writer; + }; + + /** + * Encodes the specified uvec3 message, length delimited. Does not implicitly {@link uvec3.verify|verify} messages. + * @param {uvec3$Properties} message uvec3 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + uvec3.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes an uvec3 message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {uvec3} uvec3 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + uvec3.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.uvec3(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.x = reader.uint32(); + break; + case 2: + message.y = reader.uint32(); + break; + case 3: + message.z = reader.uint32(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes an uvec3 message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {uvec3} uvec3 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + uvec3.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies an uvec3 message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + uvec3.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.x != null && message.hasOwnProperty("x")) + if (!$util.isInteger(message.x)) + return "x: integer expected"; + if (message.y != null && message.hasOwnProperty("y")) + if (!$util.isInteger(message.y)) + return "y: integer expected"; + if (message.z != null && message.hasOwnProperty("z")) + if (!$util.isInteger(message.z)) + return "z: integer expected"; + return null; + }; + + /** + * Creates an uvec3 message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {uvec3} uvec3 + */ + uvec3.fromObject = function fromObject(object) { + if (object instanceof $root.uvec3) + return object; + var message = new $root.uvec3(); + if (object.x != null) + message.x = object.x >>> 0; + if (object.y != null) + message.y = object.y >>> 0; + if (object.z != null) + message.z = object.z >>> 0; + return message; + }; + + /** + * Creates an uvec3 message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link uvec3.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {uvec3} uvec3 + */ + uvec3.from = uvec3.fromObject; + + /** + * Creates a plain object from an uvec3 message. Also converts values to other types if specified. + * @param {uvec3} message uvec3 + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + uvec3.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.x = 0; + object.y = 0; + object.z = 0; + } + if (message.x != null && message.hasOwnProperty("x")) + object.x = message.x; + if (message.y != null && message.hasOwnProperty("y")) + object.y = message.y; + if (message.z != null && message.hasOwnProperty("z")) + object.z = message.z; + return object; + }; + + /** + * Creates a plain object from this uvec3 message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + uvec3.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this uvec3 to JSON. + * @returns {Object.} JSON object + */ + uvec3.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return uvec3; +})(); + +$root.vec4 = (function() { + + /** + * Properties of a vec4. + * @typedef vec4$Properties + * @type {Object} + * @property {number} [x] vec4 x. + * @property {number} [y] vec4 y. + * @property {number} [z] vec4 z. + * @property {number} [t] vec4 t. + */ + + /** + * Constructs a new vec4. + * @exports vec4 + * @constructor + * @param {vec4$Properties=} [properties] Properties to set + */ + function vec4(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * vec4 x. + * @type {number} + */ + vec4.prototype.x = 0; + + /** + * vec4 y. + * @type {number} + */ + vec4.prototype.y = 0; + + /** + * vec4 z. + * @type {number} + */ + vec4.prototype.z = 0; + + /** + * vec4 t. + * @type {number} + */ + vec4.prototype.t = 0; + + /** + * Creates a new vec4 instance using the specified properties. + * @param {vec4$Properties=} [properties] Properties to set + * @returns {vec4} vec4 instance + */ + vec4.create = function create(properties) { + return new vec4(properties); + }; + + /** + * Encodes the specified vec4 message. Does not implicitly {@link vec4.verify|verify} messages. + * @param {vec4$Properties} message vec4 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + vec4.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.x != null && message.hasOwnProperty("x")) + writer.uint32(/* id 1, wireType 1 =*/9).double(message.x); + if (message.y != null && message.hasOwnProperty("y")) + writer.uint32(/* id 2, wireType 1 =*/17).double(message.y); + if (message.z != null && message.hasOwnProperty("z")) + writer.uint32(/* id 3, wireType 1 =*/25).double(message.z); + if (message.t != null && message.hasOwnProperty("t")) + writer.uint32(/* id 4, wireType 1 =*/33).double(message.t); + return writer; + }; + + /** + * Encodes the specified vec4 message, length delimited. Does not implicitly {@link vec4.verify|verify} messages. + * @param {vec4$Properties} message vec4 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + vec4.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a vec4 message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {vec4} vec4 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + vec4.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.vec4(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.x = reader.double(); + break; + case 2: + message.y = reader.double(); + break; + case 3: + message.z = reader.double(); + break; + case 4: + message.t = reader.double(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a vec4 message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {vec4} vec4 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + vec4.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a vec4 message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + vec4.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.x != null && message.hasOwnProperty("x")) + if (typeof message.x !== "number") + return "x: number expected"; + if (message.y != null && message.hasOwnProperty("y")) + if (typeof message.y !== "number") + return "y: number expected"; + if (message.z != null && message.hasOwnProperty("z")) + if (typeof message.z !== "number") + return "z: number expected"; + if (message.t != null && message.hasOwnProperty("t")) + if (typeof message.t !== "number") + return "t: number expected"; + return null; + }; + + /** + * Creates a vec4 message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {vec4} vec4 + */ + vec4.fromObject = function fromObject(object) { + if (object instanceof $root.vec4) + return object; + var message = new $root.vec4(); + if (object.x != null) + message.x = Number(object.x); + if (object.y != null) + message.y = Number(object.y); + if (object.z != null) + message.z = Number(object.z); + if (object.t != null) + message.t = Number(object.t); + return message; + }; + + /** + * Creates a vec4 message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link vec4.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {vec4} vec4 + */ + vec4.from = vec4.fromObject; + + /** + * Creates a plain object from a vec4 message. Also converts values to other types if specified. + * @param {vec4} message vec4 + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + vec4.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.x = 0; + object.y = 0; + object.z = 0; + object.t = 0; + } + if (message.x != null && message.hasOwnProperty("x")) + object.x = message.x; + if (message.y != null && message.hasOwnProperty("y")) + object.y = message.y; + if (message.z != null && message.hasOwnProperty("z")) + object.z = message.z; + if (message.t != null && message.hasOwnProperty("t")) + object.t = message.t; + return object; + }; + + /** + * Creates a plain object from this vec4 message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + vec4.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this vec4 to JSON. + * @returns {Object.} JSON object + */ + vec4.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return vec4; +})(); + +$root.fvec4 = (function() { + + /** + * Properties of a fvec4. + * @typedef fvec4$Properties + * @type {Object} + * @property {number} [x] fvec4 x. + * @property {number} [y] fvec4 y. + * @property {number} [z] fvec4 z. + * @property {number} [t] fvec4 t. + */ + + /** + * Constructs a new fvec4. + * @exports fvec4 + * @constructor + * @param {fvec4$Properties=} [properties] Properties to set + */ + function fvec4(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * fvec4 x. + * @type {number} + */ + fvec4.prototype.x = 0; + + /** + * fvec4 y. + * @type {number} + */ + fvec4.prototype.y = 0; + + /** + * fvec4 z. + * @type {number} + */ + fvec4.prototype.z = 0; + + /** + * fvec4 t. + * @type {number} + */ + fvec4.prototype.t = 0; + + /** + * Creates a new fvec4 instance using the specified properties. + * @param {fvec4$Properties=} [properties] Properties to set + * @returns {fvec4} fvec4 instance + */ + fvec4.create = function create(properties) { + return new fvec4(properties); + }; + + /** + * Encodes the specified fvec4 message. Does not implicitly {@link fvec4.verify|verify} messages. + * @param {fvec4$Properties} message fvec4 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + fvec4.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.x != null && message.hasOwnProperty("x")) + writer.uint32(/* id 1, wireType 5 =*/13).float(message.x); + if (message.y != null && message.hasOwnProperty("y")) + writer.uint32(/* id 2, wireType 5 =*/21).float(message.y); + if (message.z != null && message.hasOwnProperty("z")) + writer.uint32(/* id 3, wireType 5 =*/29).float(message.z); + if (message.t != null && message.hasOwnProperty("t")) + writer.uint32(/* id 4, wireType 5 =*/37).float(message.t); + return writer; + }; + + /** + * Encodes the specified fvec4 message, length delimited. Does not implicitly {@link fvec4.verify|verify} messages. + * @param {fvec4$Properties} message fvec4 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + fvec4.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a fvec4 message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {fvec4} fvec4 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + fvec4.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.fvec4(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.x = reader.float(); + break; + case 2: + message.y = reader.float(); + break; + case 3: + message.z = reader.float(); + break; + case 4: + message.t = reader.float(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a fvec4 message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {fvec4} fvec4 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + fvec4.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a fvec4 message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + fvec4.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.x != null && message.hasOwnProperty("x")) + if (typeof message.x !== "number") + return "x: number expected"; + if (message.y != null && message.hasOwnProperty("y")) + if (typeof message.y !== "number") + return "y: number expected"; + if (message.z != null && message.hasOwnProperty("z")) + if (typeof message.z !== "number") + return "z: number expected"; + if (message.t != null && message.hasOwnProperty("t")) + if (typeof message.t !== "number") + return "t: number expected"; + return null; + }; + + /** + * Creates a fvec4 message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {fvec4} fvec4 + */ + fvec4.fromObject = function fromObject(object) { + if (object instanceof $root.fvec4) + return object; + var message = new $root.fvec4(); + if (object.x != null) + message.x = Number(object.x); + if (object.y != null) + message.y = Number(object.y); + if (object.z != null) + message.z = Number(object.z); + if (object.t != null) + message.t = Number(object.t); + return message; + }; + + /** + * Creates a fvec4 message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link fvec4.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {fvec4} fvec4 + */ + fvec4.from = fvec4.fromObject; + + /** + * Creates a plain object from a fvec4 message. Also converts values to other types if specified. + * @param {fvec4} message fvec4 + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + fvec4.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.x = 0; + object.y = 0; + object.z = 0; + object.t = 0; + } + if (message.x != null && message.hasOwnProperty("x")) + object.x = message.x; + if (message.y != null && message.hasOwnProperty("y")) + object.y = message.y; + if (message.z != null && message.hasOwnProperty("z")) + object.z = message.z; + if (message.t != null && message.hasOwnProperty("t")) + object.t = message.t; + return object; + }; + + /** + * Creates a plain object from this fvec4 message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + fvec4.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this fvec4 to JSON. + * @returns {Object.} JSON object + */ + fvec4.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return fvec4; +})(); + +$root.ivec4 = (function() { + + /** + * Properties of an ivec4. + * @typedef ivec4$Properties + * @type {Object} + * @property {number} [x] ivec4 x. + * @property {number} [y] ivec4 y. + * @property {number} [z] ivec4 z. + * @property {number} [t] ivec4 t. + */ + + /** + * Constructs a new ivec4. + * @exports ivec4 + * @constructor + * @param {ivec4$Properties=} [properties] Properties to set + */ + function ivec4(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * ivec4 x. + * @type {number} + */ + ivec4.prototype.x = 0; + + /** + * ivec4 y. + * @type {number} + */ + ivec4.prototype.y = 0; + + /** + * ivec4 z. + * @type {number} + */ + ivec4.prototype.z = 0; + + /** + * ivec4 t. + * @type {number} + */ + ivec4.prototype.t = 0; + + /** + * Creates a new ivec4 instance using the specified properties. + * @param {ivec4$Properties=} [properties] Properties to set + * @returns {ivec4} ivec4 instance + */ + ivec4.create = function create(properties) { + return new ivec4(properties); + }; + + /** + * Encodes the specified ivec4 message. Does not implicitly {@link ivec4.verify|verify} messages. + * @param {ivec4$Properties} message ivec4 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ivec4.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.x != null && message.hasOwnProperty("x")) + writer.uint32(/* id 1, wireType 0 =*/8).sint32(message.x); + if (message.y != null && message.hasOwnProperty("y")) + writer.uint32(/* id 2, wireType 0 =*/16).sint32(message.y); + if (message.z != null && message.hasOwnProperty("z")) + writer.uint32(/* id 3, wireType 0 =*/24).sint32(message.z); + if (message.t != null && message.hasOwnProperty("t")) + writer.uint32(/* id 4, wireType 0 =*/32).sint32(message.t); + return writer; + }; + + /** + * Encodes the specified ivec4 message, length delimited. Does not implicitly {@link ivec4.verify|verify} messages. + * @param {ivec4$Properties} message ivec4 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ivec4.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes an ivec4 message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {ivec4} ivec4 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ivec4.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.ivec4(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.x = reader.sint32(); + break; + case 2: + message.y = reader.sint32(); + break; + case 3: + message.z = reader.sint32(); + break; + case 4: + message.t = reader.sint32(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes an ivec4 message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {ivec4} ivec4 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ivec4.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies an ivec4 message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + ivec4.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.x != null && message.hasOwnProperty("x")) + if (!$util.isInteger(message.x)) + return "x: integer expected"; + if (message.y != null && message.hasOwnProperty("y")) + if (!$util.isInteger(message.y)) + return "y: integer expected"; + if (message.z != null && message.hasOwnProperty("z")) + if (!$util.isInteger(message.z)) + return "z: integer expected"; + if (message.t != null && message.hasOwnProperty("t")) + if (!$util.isInteger(message.t)) + return "t: integer expected"; + return null; + }; + + /** + * Creates an ivec4 message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {ivec4} ivec4 + */ + ivec4.fromObject = function fromObject(object) { + if (object instanceof $root.ivec4) + return object; + var message = new $root.ivec4(); + if (object.x != null) + message.x = object.x | 0; + if (object.y != null) + message.y = object.y | 0; + if (object.z != null) + message.z = object.z | 0; + if (object.t != null) + message.t = object.t | 0; + return message; + }; + + /** + * Creates an ivec4 message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link ivec4.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {ivec4} ivec4 + */ + ivec4.from = ivec4.fromObject; + + /** + * Creates a plain object from an ivec4 message. Also converts values to other types if specified. + * @param {ivec4} message ivec4 + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + ivec4.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.x = 0; + object.y = 0; + object.z = 0; + object.t = 0; + } + if (message.x != null && message.hasOwnProperty("x")) + object.x = message.x; + if (message.y != null && message.hasOwnProperty("y")) + object.y = message.y; + if (message.z != null && message.hasOwnProperty("z")) + object.z = message.z; + if (message.t != null && message.hasOwnProperty("t")) + object.t = message.t; + return object; + }; + + /** + * Creates a plain object from this ivec4 message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + ivec4.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this ivec4 to JSON. + * @returns {Object.} JSON object + */ + ivec4.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return ivec4; +})(); + +$root.uvec4 = (function() { + + /** + * Properties of an uvec4. + * @typedef uvec4$Properties + * @type {Object} + * @property {number} [x] uvec4 x. + * @property {number} [y] uvec4 y. + * @property {number} [z] uvec4 z. + * @property {number} [t] uvec4 t. + */ + + /** + * Constructs a new uvec4. + * @exports uvec4 + * @constructor + * @param {uvec4$Properties=} [properties] Properties to set + */ + function uvec4(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * uvec4 x. + * @type {number} + */ + uvec4.prototype.x = 0; + + /** + * uvec4 y. + * @type {number} + */ + uvec4.prototype.y = 0; + + /** + * uvec4 z. + * @type {number} + */ + uvec4.prototype.z = 0; + + /** + * uvec4 t. + * @type {number} + */ + uvec4.prototype.t = 0; + + /** + * Creates a new uvec4 instance using the specified properties. + * @param {uvec4$Properties=} [properties] Properties to set + * @returns {uvec4} uvec4 instance + */ + uvec4.create = function create(properties) { + return new uvec4(properties); + }; + + /** + * Encodes the specified uvec4 message. Does not implicitly {@link uvec4.verify|verify} messages. + * @param {uvec4$Properties} message uvec4 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + uvec4.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.x != null && message.hasOwnProperty("x")) + writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.x); + if (message.y != null && message.hasOwnProperty("y")) + writer.uint32(/* id 2, wireType 0 =*/16).uint32(message.y); + if (message.z != null && message.hasOwnProperty("z")) + writer.uint32(/* id 3, wireType 0 =*/24).uint32(message.z); + if (message.t != null && message.hasOwnProperty("t")) + writer.uint32(/* id 4, wireType 0 =*/32).uint32(message.t); + return writer; + }; + + /** + * Encodes the specified uvec4 message, length delimited. Does not implicitly {@link uvec4.verify|verify} messages. + * @param {uvec4$Properties} message uvec4 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + uvec4.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes an uvec4 message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {uvec4} uvec4 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + uvec4.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.uvec4(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.x = reader.uint32(); + break; + case 2: + message.y = reader.uint32(); + break; + case 3: + message.z = reader.uint32(); + break; + case 4: + message.t = reader.uint32(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes an uvec4 message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {uvec4} uvec4 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + uvec4.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies an uvec4 message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + uvec4.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.x != null && message.hasOwnProperty("x")) + if (!$util.isInteger(message.x)) + return "x: integer expected"; + if (message.y != null && message.hasOwnProperty("y")) + if (!$util.isInteger(message.y)) + return "y: integer expected"; + if (message.z != null && message.hasOwnProperty("z")) + if (!$util.isInteger(message.z)) + return "z: integer expected"; + if (message.t != null && message.hasOwnProperty("t")) + if (!$util.isInteger(message.t)) + return "t: integer expected"; + return null; + }; + + /** + * Creates an uvec4 message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {uvec4} uvec4 + */ + uvec4.fromObject = function fromObject(object) { + if (object instanceof $root.uvec4) + return object; + var message = new $root.uvec4(); + if (object.x != null) + message.x = object.x >>> 0; + if (object.y != null) + message.y = object.y >>> 0; + if (object.z != null) + message.z = object.z >>> 0; + if (object.t != null) + message.t = object.t >>> 0; + return message; + }; + + /** + * Creates an uvec4 message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link uvec4.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {uvec4} uvec4 + */ + uvec4.from = uvec4.fromObject; + + /** + * Creates a plain object from an uvec4 message. Also converts values to other types if specified. + * @param {uvec4} message uvec4 + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + uvec4.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.x = 0; + object.y = 0; + object.z = 0; + object.t = 0; + } + if (message.x != null && message.hasOwnProperty("x")) + object.x = message.x; + if (message.y != null && message.hasOwnProperty("y")) + object.y = message.y; + if (message.z != null && message.hasOwnProperty("z")) + object.z = message.z; + if (message.t != null && message.hasOwnProperty("t")) + object.t = message.t; + return object; + }; + + /** + * Creates a plain object from this uvec4 message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + uvec4.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this uvec4 to JSON. + * @returns {Object.} JSON object + */ + uvec4.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return uvec4; +})(); + +/** + * PointerType enum. + * @exports PointerType + * @enum {number} + * @property {number} NONE=0 NONE value + * @property {number} RAW=1 RAW value + * @property {number} SHARED=2 SHARED value + * @property {number} UNIQUE=3 UNIQUE value + */ +$root.PointerType = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "NONE"] = 0; + values[valuesById[1] = "RAW"] = 1; + values[valuesById[2] = "SHARED"] = 2; + values[valuesById[3] = "UNIQUE"] = 3; + return values; +})(); + +$root.google = (function() { + + /** + * Namespace google. + * @exports google + * @namespace + */ + var google = {}; + + google.protobuf = (function() { + + /** + * Namespace protobuf. + * @exports google.protobuf + * @namespace + */ + var protobuf = {}; + + protobuf.FileDescriptorSet = (function() { + + /** + * Properties of a FileDescriptorSet. + * @typedef google.protobuf.FileDescriptorSet$Properties + * @type {Object} + * @property {Array.} [file] FileDescriptorSet file. + */ + + /** + * Constructs a new FileDescriptorSet. + * @exports google.protobuf.FileDescriptorSet + * @constructor + * @param {google.protobuf.FileDescriptorSet$Properties=} [properties] Properties to set + */ + function FileDescriptorSet(properties) { + this.file = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * FileDescriptorSet file. + * @type {Array.} + */ + FileDescriptorSet.prototype.file = $util.emptyArray; + + /** + * Creates a new FileDescriptorSet instance using the specified properties. + * @param {google.protobuf.FileDescriptorSet$Properties=} [properties] Properties to set + * @returns {google.protobuf.FileDescriptorSet} FileDescriptorSet instance + */ + FileDescriptorSet.create = function create(properties) { + return new FileDescriptorSet(properties); + }; + + /** + * Encodes the specified FileDescriptorSet message. Does not implicitly {@link google.protobuf.FileDescriptorSet.verify|verify} messages. + * @param {google.protobuf.FileDescriptorSet$Properties} message FileDescriptorSet message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + FileDescriptorSet.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.file != null && message.file.length) + for (var i = 0; i < message.file.length; ++i) + $root.google.protobuf.FileDescriptorProto.encode(message.file[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified FileDescriptorSet message, length delimited. Does not implicitly {@link google.protobuf.FileDescriptorSet.verify|verify} messages. + * @param {google.protobuf.FileDescriptorSet$Properties} message FileDescriptorSet message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + FileDescriptorSet.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a FileDescriptorSet message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.FileDescriptorSet} FileDescriptorSet + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + FileDescriptorSet.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.FileDescriptorSet(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (!(message.file && message.file.length)) + message.file = []; + message.file.push($root.google.protobuf.FileDescriptorProto.decode(reader, reader.uint32())); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a FileDescriptorSet message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.FileDescriptorSet} FileDescriptorSet + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + FileDescriptorSet.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a FileDescriptorSet message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + FileDescriptorSet.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.file != null && message.hasOwnProperty("file")) { + if (!Array.isArray(message.file)) + return "file: array expected"; + for (var i = 0; i < message.file.length; ++i) { + var error = $root.google.protobuf.FileDescriptorProto.verify(message.file[i]); + if (error) + return "file." + error; + } + } + return null; + }; + + /** + * Creates a FileDescriptorSet message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {google.protobuf.FileDescriptorSet} FileDescriptorSet + */ + FileDescriptorSet.fromObject = function fromObject(object) { + if (object instanceof $root.google.protobuf.FileDescriptorSet) + return object; + var message = new $root.google.protobuf.FileDescriptorSet(); + if (object.file) { + if (!Array.isArray(object.file)) + throw TypeError(".google.protobuf.FileDescriptorSet.file: array expected"); + message.file = []; + for (var i = 0; i < object.file.length; ++i) { + if (typeof object.file[i] !== "object") + throw TypeError(".google.protobuf.FileDescriptorSet.file: object expected"); + message.file[i] = $root.google.protobuf.FileDescriptorProto.fromObject(object.file[i]); + } + } + return message; + }; + + /** + * Creates a FileDescriptorSet message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link google.protobuf.FileDescriptorSet.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {google.protobuf.FileDescriptorSet} FileDescriptorSet + */ + FileDescriptorSet.from = FileDescriptorSet.fromObject; + + /** + * Creates a plain object from a FileDescriptorSet message. Also converts values to other types if specified. + * @param {google.protobuf.FileDescriptorSet} message FileDescriptorSet + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + FileDescriptorSet.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.file = []; + if (message.file && message.file.length) { + object.file = []; + for (var j = 0; j < message.file.length; ++j) + object.file[j] = $root.google.protobuf.FileDescriptorProto.toObject(message.file[j], options); + } + return object; + }; + + /** + * Creates a plain object from this FileDescriptorSet message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + FileDescriptorSet.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this FileDescriptorSet to JSON. + * @returns {Object.} JSON object + */ + FileDescriptorSet.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return FileDescriptorSet; + })(); + + protobuf.FileDescriptorProto = (function() { + + /** + * Properties of a FileDescriptorProto. + * @typedef google.protobuf.FileDescriptorProto$Properties + * @type {Object} + * @property {string} [name] FileDescriptorProto name. + * @property {string} ["package"] FileDescriptorProto package. + * @property {Array.} [dependency] FileDescriptorProto dependency. + * @property {Array.} [publicDependency] FileDescriptorProto publicDependency. + * @property {Array.} [weakDependency] FileDescriptorProto weakDependency. + * @property {Array.} [messageType] FileDescriptorProto messageType. + * @property {Array.} [enumType] FileDescriptorProto enumType. + * @property {Array.} [service] FileDescriptorProto service. + * @property {Array.} [extension] FileDescriptorProto extension. + * @property {google.protobuf.FileOptions$Properties} [options] FileDescriptorProto options. + * @property {google.protobuf.SourceCodeInfo$Properties} [sourceCodeInfo] FileDescriptorProto sourceCodeInfo. + * @property {string} [syntax] FileDescriptorProto syntax. + */ + + /** + * Constructs a new FileDescriptorProto. + * @exports google.protobuf.FileDescriptorProto + * @constructor + * @param {google.protobuf.FileDescriptorProto$Properties=} [properties] Properties to set + */ + function FileDescriptorProto(properties) { + this.dependency = []; + this.publicDependency = []; + this.weakDependency = []; + this.messageType = []; + this.enumType = []; + this.service = []; + this.extension = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * FileDescriptorProto name. + * @type {string} + */ + FileDescriptorProto.prototype.name = ""; + + /** + * FileDescriptorProto package. + * @type {string} + */ + FileDescriptorProto.prototype["package"] = ""; + + /** + * FileDescriptorProto dependency. + * @type {Array.} + */ + FileDescriptorProto.prototype.dependency = $util.emptyArray; + + /** + * FileDescriptorProto publicDependency. + * @type {Array.} + */ + FileDescriptorProto.prototype.publicDependency = $util.emptyArray; + + /** + * FileDescriptorProto weakDependency. + * @type {Array.} + */ + FileDescriptorProto.prototype.weakDependency = $util.emptyArray; + + /** + * FileDescriptorProto messageType. + * @type {Array.} + */ + FileDescriptorProto.prototype.messageType = $util.emptyArray; + + /** + * FileDescriptorProto enumType. + * @type {Array.} + */ + FileDescriptorProto.prototype.enumType = $util.emptyArray; + + /** + * FileDescriptorProto service. + * @type {Array.} + */ + FileDescriptorProto.prototype.service = $util.emptyArray; + + /** + * FileDescriptorProto extension. + * @type {Array.} + */ + FileDescriptorProto.prototype.extension = $util.emptyArray; + + /** + * FileDescriptorProto options. + * @type {(google.protobuf.FileOptions$Properties|null)} + */ + FileDescriptorProto.prototype.options = null; + + /** + * FileDescriptorProto sourceCodeInfo. + * @type {(google.protobuf.SourceCodeInfo$Properties|null)} + */ + FileDescriptorProto.prototype.sourceCodeInfo = null; + + /** + * FileDescriptorProto syntax. + * @type {string} + */ + FileDescriptorProto.prototype.syntax = ""; + + /** + * Creates a new FileDescriptorProto instance using the specified properties. + * @param {google.protobuf.FileDescriptorProto$Properties=} [properties] Properties to set + * @returns {google.protobuf.FileDescriptorProto} FileDescriptorProto instance + */ + FileDescriptorProto.create = function create(properties) { + return new FileDescriptorProto(properties); + }; + + /** + * Encodes the specified FileDescriptorProto message. Does not implicitly {@link google.protobuf.FileDescriptorProto.verify|verify} messages. + * @param {google.protobuf.FileDescriptorProto$Properties} message FileDescriptorProto message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + FileDescriptorProto.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.name != null && message.hasOwnProperty("name")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.name); + if (message["package"] != null && message.hasOwnProperty("package")) + writer.uint32(/* id 2, wireType 2 =*/18).string(message["package"]); + if (message.dependency != null && message.dependency.length) + for (var i = 0; i < message.dependency.length; ++i) + writer.uint32(/* id 3, wireType 2 =*/26).string(message.dependency[i]); + if (message.messageType != null && message.messageType.length) + for (var i = 0; i < message.messageType.length; ++i) + $root.google.protobuf.DescriptorProto.encode(message.messageType[i], writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); + if (message.enumType != null && message.enumType.length) + for (var i = 0; i < message.enumType.length; ++i) + $root.google.protobuf.EnumDescriptorProto.encode(message.enumType[i], writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); + if (message.service != null && message.service.length) + for (var i = 0; i < message.service.length; ++i) + $root.google.protobuf.ServiceDescriptorProto.encode(message.service[i], writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim(); + if (message.extension != null && message.extension.length) + for (var i = 0; i < message.extension.length; ++i) + $root.google.protobuf.FieldDescriptorProto.encode(message.extension[i], writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim(); + if (message.options != null && message.hasOwnProperty("options")) + $root.google.protobuf.FileOptions.encode(message.options, writer.uint32(/* id 8, wireType 2 =*/66).fork()).ldelim(); + if (message.sourceCodeInfo != null && message.hasOwnProperty("sourceCodeInfo")) + $root.google.protobuf.SourceCodeInfo.encode(message.sourceCodeInfo, writer.uint32(/* id 9, wireType 2 =*/74).fork()).ldelim(); + if (message.publicDependency != null && message.publicDependency.length) + for (var i = 0; i < message.publicDependency.length; ++i) + writer.uint32(/* id 10, wireType 0 =*/80).int32(message.publicDependency[i]); + if (message.weakDependency != null && message.weakDependency.length) + for (var i = 0; i < message.weakDependency.length; ++i) + writer.uint32(/* id 11, wireType 0 =*/88).int32(message.weakDependency[i]); + if (message.syntax != null && message.hasOwnProperty("syntax")) + writer.uint32(/* id 12, wireType 2 =*/98).string(message.syntax); + return writer; + }; + + /** + * Encodes the specified FileDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.FileDescriptorProto.verify|verify} messages. + * @param {google.protobuf.FileDescriptorProto$Properties} message FileDescriptorProto message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + FileDescriptorProto.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a FileDescriptorProto message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.FileDescriptorProto} FileDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + FileDescriptorProto.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.FileDescriptorProto(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.name = reader.string(); + break; + case 2: + message["package"] = reader.string(); + break; + case 3: + if (!(message.dependency && message.dependency.length)) + message.dependency = []; + message.dependency.push(reader.string()); + break; + case 10: + if (!(message.publicDependency && message.publicDependency.length)) + message.publicDependency = []; + if ((tag & 7) === 2) { + var end2 = reader.uint32() + reader.pos; + while (reader.pos < end2) + message.publicDependency.push(reader.int32()); + } else + message.publicDependency.push(reader.int32()); + break; + case 11: + if (!(message.weakDependency && message.weakDependency.length)) + message.weakDependency = []; + if ((tag & 7) === 2) { + var end2 = reader.uint32() + reader.pos; + while (reader.pos < end2) + message.weakDependency.push(reader.int32()); + } else + message.weakDependency.push(reader.int32()); + break; + case 4: + if (!(message.messageType && message.messageType.length)) + message.messageType = []; + message.messageType.push($root.google.protobuf.DescriptorProto.decode(reader, reader.uint32())); + break; + case 5: + if (!(message.enumType && message.enumType.length)) + message.enumType = []; + message.enumType.push($root.google.protobuf.EnumDescriptorProto.decode(reader, reader.uint32())); + break; + case 6: + if (!(message.service && message.service.length)) + message.service = []; + message.service.push($root.google.protobuf.ServiceDescriptorProto.decode(reader, reader.uint32())); + break; + case 7: + if (!(message.extension && message.extension.length)) + message.extension = []; + message.extension.push($root.google.protobuf.FieldDescriptorProto.decode(reader, reader.uint32())); + break; + case 8: + message.options = $root.google.protobuf.FileOptions.decode(reader, reader.uint32()); + break; + case 9: + message.sourceCodeInfo = $root.google.protobuf.SourceCodeInfo.decode(reader, reader.uint32()); + break; + case 12: + message.syntax = reader.string(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a FileDescriptorProto message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.FileDescriptorProto} FileDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + FileDescriptorProto.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a FileDescriptorProto message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + FileDescriptorProto.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.name != null && message.hasOwnProperty("name")) + if (!$util.isString(message.name)) + return "name: string expected"; + if (message["package"] != null && message.hasOwnProperty("package")) + if (!$util.isString(message["package"])) + return "package: string expected"; + if (message.dependency != null && message.hasOwnProperty("dependency")) { + if (!Array.isArray(message.dependency)) + return "dependency: array expected"; + for (var i = 0; i < message.dependency.length; ++i) + if (!$util.isString(message.dependency[i])) + return "dependency: string[] expected"; + } + if (message.publicDependency != null && message.hasOwnProperty("publicDependency")) { + if (!Array.isArray(message.publicDependency)) + return "publicDependency: array expected"; + for (var i = 0; i < message.publicDependency.length; ++i) + if (!$util.isInteger(message.publicDependency[i])) + return "publicDependency: integer[] expected"; + } + if (message.weakDependency != null && message.hasOwnProperty("weakDependency")) { + if (!Array.isArray(message.weakDependency)) + return "weakDependency: array expected"; + for (var i = 0; i < message.weakDependency.length; ++i) + if (!$util.isInteger(message.weakDependency[i])) + return "weakDependency: integer[] expected"; + } + if (message.messageType != null && message.hasOwnProperty("messageType")) { + if (!Array.isArray(message.messageType)) + return "messageType: array expected"; + for (var i = 0; i < message.messageType.length; ++i) { + var error = $root.google.protobuf.DescriptorProto.verify(message.messageType[i]); + if (error) + return "messageType." + error; + } + } + if (message.enumType != null && message.hasOwnProperty("enumType")) { + if (!Array.isArray(message.enumType)) + return "enumType: array expected"; + for (var i = 0; i < message.enumType.length; ++i) { + var error = $root.google.protobuf.EnumDescriptorProto.verify(message.enumType[i]); + if (error) + return "enumType." + error; + } + } + if (message.service != null && message.hasOwnProperty("service")) { + if (!Array.isArray(message.service)) + return "service: array expected"; + for (var i = 0; i < message.service.length; ++i) { + var error = $root.google.protobuf.ServiceDescriptorProto.verify(message.service[i]); + if (error) + return "service." + error; + } + } + if (message.extension != null && message.hasOwnProperty("extension")) { + if (!Array.isArray(message.extension)) + return "extension: array expected"; + for (var i = 0; i < message.extension.length; ++i) { + var error = $root.google.protobuf.FieldDescriptorProto.verify(message.extension[i]); + if (error) + return "extension." + error; + } + } + if (message.options != null && message.hasOwnProperty("options")) { + var error = $root.google.protobuf.FileOptions.verify(message.options); + if (error) + return "options." + error; + } + if (message.sourceCodeInfo != null && message.hasOwnProperty("sourceCodeInfo")) { + var error = $root.google.protobuf.SourceCodeInfo.verify(message.sourceCodeInfo); + if (error) + return "sourceCodeInfo." + error; + } + if (message.syntax != null && message.hasOwnProperty("syntax")) + if (!$util.isString(message.syntax)) + return "syntax: string expected"; + return null; + }; + + /** + * Creates a FileDescriptorProto message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {google.protobuf.FileDescriptorProto} FileDescriptorProto + */ + FileDescriptorProto.fromObject = function fromObject(object) { + if (object instanceof $root.google.protobuf.FileDescriptorProto) + return object; + var message = new $root.google.protobuf.FileDescriptorProto(); + if (object.name != null) + message.name = String(object.name); + if (object["package"] != null) + message["package"] = String(object["package"]); + if (object.dependency) { + if (!Array.isArray(object.dependency)) + throw TypeError(".google.protobuf.FileDescriptorProto.dependency: array expected"); + message.dependency = []; + for (var i = 0; i < object.dependency.length; ++i) + message.dependency[i] = String(object.dependency[i]); + } + if (object.publicDependency) { + if (!Array.isArray(object.publicDependency)) + throw TypeError(".google.protobuf.FileDescriptorProto.publicDependency: array expected"); + message.publicDependency = []; + for (var i = 0; i < object.publicDependency.length; ++i) + message.publicDependency[i] = object.publicDependency[i] | 0; + } + if (object.weakDependency) { + if (!Array.isArray(object.weakDependency)) + throw TypeError(".google.protobuf.FileDescriptorProto.weakDependency: array expected"); + message.weakDependency = []; + for (var i = 0; i < object.weakDependency.length; ++i) + message.weakDependency[i] = object.weakDependency[i] | 0; + } + if (object.messageType) { + if (!Array.isArray(object.messageType)) + throw TypeError(".google.protobuf.FileDescriptorProto.messageType: array expected"); + message.messageType = []; + for (var i = 0; i < object.messageType.length; ++i) { + if (typeof object.messageType[i] !== "object") + throw TypeError(".google.protobuf.FileDescriptorProto.messageType: object expected"); + message.messageType[i] = $root.google.protobuf.DescriptorProto.fromObject(object.messageType[i]); + } + } + if (object.enumType) { + if (!Array.isArray(object.enumType)) + throw TypeError(".google.protobuf.FileDescriptorProto.enumType: array expected"); + message.enumType = []; + for (var i = 0; i < object.enumType.length; ++i) { + if (typeof object.enumType[i] !== "object") + throw TypeError(".google.protobuf.FileDescriptorProto.enumType: object expected"); + message.enumType[i] = $root.google.protobuf.EnumDescriptorProto.fromObject(object.enumType[i]); + } + } + if (object.service) { + if (!Array.isArray(object.service)) + throw TypeError(".google.protobuf.FileDescriptorProto.service: array expected"); + message.service = []; + for (var i = 0; i < object.service.length; ++i) { + if (typeof object.service[i] !== "object") + throw TypeError(".google.protobuf.FileDescriptorProto.service: object expected"); + message.service[i] = $root.google.protobuf.ServiceDescriptorProto.fromObject(object.service[i]); + } + } + if (object.extension) { + if (!Array.isArray(object.extension)) + throw TypeError(".google.protobuf.FileDescriptorProto.extension: array expected"); + message.extension = []; + for (var i = 0; i < object.extension.length; ++i) { + if (typeof object.extension[i] !== "object") + throw TypeError(".google.protobuf.FileDescriptorProto.extension: object expected"); + message.extension[i] = $root.google.protobuf.FieldDescriptorProto.fromObject(object.extension[i]); + } + } + if (object.options != null) { + if (typeof object.options !== "object") + throw TypeError(".google.protobuf.FileDescriptorProto.options: object expected"); + message.options = $root.google.protobuf.FileOptions.fromObject(object.options); + } + if (object.sourceCodeInfo != null) { + if (typeof object.sourceCodeInfo !== "object") + throw TypeError(".google.protobuf.FileDescriptorProto.sourceCodeInfo: object expected"); + message.sourceCodeInfo = $root.google.protobuf.SourceCodeInfo.fromObject(object.sourceCodeInfo); + } + if (object.syntax != null) + message.syntax = String(object.syntax); + return message; + }; + + /** + * Creates a FileDescriptorProto message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link google.protobuf.FileDescriptorProto.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {google.protobuf.FileDescriptorProto} FileDescriptorProto + */ + FileDescriptorProto.from = FileDescriptorProto.fromObject; + + /** + * Creates a plain object from a FileDescriptorProto message. Also converts values to other types if specified. + * @param {google.protobuf.FileDescriptorProto} message FileDescriptorProto + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + FileDescriptorProto.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) { + object.dependency = []; + object.messageType = []; + object.enumType = []; + object.service = []; + object.extension = []; + object.publicDependency = []; + object.weakDependency = []; + } + if (options.defaults) { + object.name = ""; + object["package"] = ""; + object.options = null; + object.sourceCodeInfo = null; + object.syntax = ""; + } + if (message.name != null && message.hasOwnProperty("name")) + object.name = message.name; + if (message["package"] != null && message.hasOwnProperty("package")) + object["package"] = message["package"]; + if (message.dependency && message.dependency.length) { + object.dependency = []; + for (var j = 0; j < message.dependency.length; ++j) + object.dependency[j] = message.dependency[j]; + } + if (message.messageType && message.messageType.length) { + object.messageType = []; + for (var j = 0; j < message.messageType.length; ++j) + object.messageType[j] = $root.google.protobuf.DescriptorProto.toObject(message.messageType[j], options); + } + if (message.enumType && message.enumType.length) { + object.enumType = []; + for (var j = 0; j < message.enumType.length; ++j) + object.enumType[j] = $root.google.protobuf.EnumDescriptorProto.toObject(message.enumType[j], options); + } + if (message.service && message.service.length) { + object.service = []; + for (var j = 0; j < message.service.length; ++j) + object.service[j] = $root.google.protobuf.ServiceDescriptorProto.toObject(message.service[j], options); + } + if (message.extension && message.extension.length) { + object.extension = []; + for (var j = 0; j < message.extension.length; ++j) + object.extension[j] = $root.google.protobuf.FieldDescriptorProto.toObject(message.extension[j], options); + } + if (message.options != null && message.hasOwnProperty("options")) + object.options = $root.google.protobuf.FileOptions.toObject(message.options, options); + if (message.sourceCodeInfo != null && message.hasOwnProperty("sourceCodeInfo")) + object.sourceCodeInfo = $root.google.protobuf.SourceCodeInfo.toObject(message.sourceCodeInfo, options); + if (message.publicDependency && message.publicDependency.length) { + object.publicDependency = []; + for (var j = 0; j < message.publicDependency.length; ++j) + object.publicDependency[j] = message.publicDependency[j]; + } + if (message.weakDependency && message.weakDependency.length) { + object.weakDependency = []; + for (var j = 0; j < message.weakDependency.length; ++j) + object.weakDependency[j] = message.weakDependency[j]; + } + if (message.syntax != null && message.hasOwnProperty("syntax")) + object.syntax = message.syntax; + return object; + }; + + /** + * Creates a plain object from this FileDescriptorProto message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + FileDescriptorProto.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this FileDescriptorProto to JSON. + * @returns {Object.} JSON object + */ + FileDescriptorProto.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return FileDescriptorProto; + })(); + + protobuf.DescriptorProto = (function() { + + /** + * Properties of a DescriptorProto. + * @typedef google.protobuf.DescriptorProto$Properties + * @type {Object} + * @property {string} [name] DescriptorProto name. + * @property {Array.} [field] DescriptorProto field. + * @property {Array.} [extension] DescriptorProto extension. + * @property {Array.} [nestedType] DescriptorProto nestedType. + * @property {Array.} [enumType] DescriptorProto enumType. + * @property {Array.} [extensionRange] DescriptorProto extensionRange. + * @property {Array.} [oneofDecl] DescriptorProto oneofDecl. + * @property {google.protobuf.MessageOptions$Properties} [options] DescriptorProto options. + * @property {Array.} [reservedRange] DescriptorProto reservedRange. + * @property {Array.} [reservedName] DescriptorProto reservedName. + */ + + /** + * Constructs a new DescriptorProto. + * @exports google.protobuf.DescriptorProto + * @constructor + * @param {google.protobuf.DescriptorProto$Properties=} [properties] Properties to set + */ + function DescriptorProto(properties) { + this.field = []; + this.extension = []; + this.nestedType = []; + this.enumType = []; + this.extensionRange = []; + this.oneofDecl = []; + this.reservedRange = []; + this.reservedName = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * DescriptorProto name. + * @type {string} + */ + DescriptorProto.prototype.name = ""; + + /** + * DescriptorProto field. + * @type {Array.} + */ + DescriptorProto.prototype.field = $util.emptyArray; + + /** + * DescriptorProto extension. + * @type {Array.} + */ + DescriptorProto.prototype.extension = $util.emptyArray; + + /** + * DescriptorProto nestedType. + * @type {Array.} + */ + DescriptorProto.prototype.nestedType = $util.emptyArray; + + /** + * DescriptorProto enumType. + * @type {Array.} + */ + DescriptorProto.prototype.enumType = $util.emptyArray; + + /** + * DescriptorProto extensionRange. + * @type {Array.} + */ + DescriptorProto.prototype.extensionRange = $util.emptyArray; + + /** + * DescriptorProto oneofDecl. + * @type {Array.} + */ + DescriptorProto.prototype.oneofDecl = $util.emptyArray; + + /** + * DescriptorProto options. + * @type {(google.protobuf.MessageOptions$Properties|null)} + */ + DescriptorProto.prototype.options = null; + + /** + * DescriptorProto reservedRange. + * @type {Array.} + */ + DescriptorProto.prototype.reservedRange = $util.emptyArray; + + /** + * DescriptorProto reservedName. + * @type {Array.} + */ + DescriptorProto.prototype.reservedName = $util.emptyArray; + + /** + * Creates a new DescriptorProto instance using the specified properties. + * @param {google.protobuf.DescriptorProto$Properties=} [properties] Properties to set + * @returns {google.protobuf.DescriptorProto} DescriptorProto instance + */ + DescriptorProto.create = function create(properties) { + return new DescriptorProto(properties); + }; + + /** + * Encodes the specified DescriptorProto message. Does not implicitly {@link google.protobuf.DescriptorProto.verify|verify} messages. + * @param {google.protobuf.DescriptorProto$Properties} message DescriptorProto message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + DescriptorProto.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.name != null && message.hasOwnProperty("name")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.name); + if (message.field != null && message.field.length) + for (var i = 0; i < message.field.length; ++i) + $root.google.protobuf.FieldDescriptorProto.encode(message.field[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.nestedType != null && message.nestedType.length) + for (var i = 0; i < message.nestedType.length; ++i) + $root.google.protobuf.DescriptorProto.encode(message.nestedType[i], writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + if (message.enumType != null && message.enumType.length) + for (var i = 0; i < message.enumType.length; ++i) + $root.google.protobuf.EnumDescriptorProto.encode(message.enumType[i], writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); + if (message.extensionRange != null && message.extensionRange.length) + for (var i = 0; i < message.extensionRange.length; ++i) + $root.google.protobuf.DescriptorProto.ExtensionRange.encode(message.extensionRange[i], writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); + if (message.extension != null && message.extension.length) + for (var i = 0; i < message.extension.length; ++i) + $root.google.protobuf.FieldDescriptorProto.encode(message.extension[i], writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim(); + if (message.options != null && message.hasOwnProperty("options")) + $root.google.protobuf.MessageOptions.encode(message.options, writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim(); + if (message.oneofDecl != null && message.oneofDecl.length) + for (var i = 0; i < message.oneofDecl.length; ++i) + $root.google.protobuf.OneofDescriptorProto.encode(message.oneofDecl[i], writer.uint32(/* id 8, wireType 2 =*/66).fork()).ldelim(); + if (message.reservedRange != null && message.reservedRange.length) + for (var i = 0; i < message.reservedRange.length; ++i) + $root.google.protobuf.DescriptorProto.ReservedRange.encode(message.reservedRange[i], writer.uint32(/* id 9, wireType 2 =*/74).fork()).ldelim(); + if (message.reservedName != null && message.reservedName.length) + for (var i = 0; i < message.reservedName.length; ++i) + writer.uint32(/* id 10, wireType 2 =*/82).string(message.reservedName[i]); + return writer; + }; + + /** + * Encodes the specified DescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.DescriptorProto.verify|verify} messages. + * @param {google.protobuf.DescriptorProto$Properties} message DescriptorProto message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + DescriptorProto.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a DescriptorProto message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.DescriptorProto} DescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + DescriptorProto.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.DescriptorProto(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.name = reader.string(); + break; + case 2: + if (!(message.field && message.field.length)) + message.field = []; + message.field.push($root.google.protobuf.FieldDescriptorProto.decode(reader, reader.uint32())); + break; + case 6: + if (!(message.extension && message.extension.length)) + message.extension = []; + message.extension.push($root.google.protobuf.FieldDescriptorProto.decode(reader, reader.uint32())); + break; + case 3: + if (!(message.nestedType && message.nestedType.length)) + message.nestedType = []; + message.nestedType.push($root.google.protobuf.DescriptorProto.decode(reader, reader.uint32())); + break; + case 4: + if (!(message.enumType && message.enumType.length)) + message.enumType = []; + message.enumType.push($root.google.protobuf.EnumDescriptorProto.decode(reader, reader.uint32())); + break; + case 5: + if (!(message.extensionRange && message.extensionRange.length)) + message.extensionRange = []; + message.extensionRange.push($root.google.protobuf.DescriptorProto.ExtensionRange.decode(reader, reader.uint32())); + break; + case 8: + if (!(message.oneofDecl && message.oneofDecl.length)) + message.oneofDecl = []; + message.oneofDecl.push($root.google.protobuf.OneofDescriptorProto.decode(reader, reader.uint32())); + break; + case 7: + message.options = $root.google.protobuf.MessageOptions.decode(reader, reader.uint32()); + break; + case 9: + if (!(message.reservedRange && message.reservedRange.length)) + message.reservedRange = []; + message.reservedRange.push($root.google.protobuf.DescriptorProto.ReservedRange.decode(reader, reader.uint32())); + break; + case 10: + if (!(message.reservedName && message.reservedName.length)) + message.reservedName = []; + message.reservedName.push(reader.string()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a DescriptorProto message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.DescriptorProto} DescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + DescriptorProto.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a DescriptorProto message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + DescriptorProto.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.name != null && message.hasOwnProperty("name")) + if (!$util.isString(message.name)) + return "name: string expected"; + if (message.field != null && message.hasOwnProperty("field")) { + if (!Array.isArray(message.field)) + return "field: array expected"; + for (var i = 0; i < message.field.length; ++i) { + var error = $root.google.protobuf.FieldDescriptorProto.verify(message.field[i]); + if (error) + return "field." + error; + } + } + if (message.extension != null && message.hasOwnProperty("extension")) { + if (!Array.isArray(message.extension)) + return "extension: array expected"; + for (var i = 0; i < message.extension.length; ++i) { + var error = $root.google.protobuf.FieldDescriptorProto.verify(message.extension[i]); + if (error) + return "extension." + error; + } + } + if (message.nestedType != null && message.hasOwnProperty("nestedType")) { + if (!Array.isArray(message.nestedType)) + return "nestedType: array expected"; + for (var i = 0; i < message.nestedType.length; ++i) { + var error = $root.google.protobuf.DescriptorProto.verify(message.nestedType[i]); + if (error) + return "nestedType." + error; + } + } + if (message.enumType != null && message.hasOwnProperty("enumType")) { + if (!Array.isArray(message.enumType)) + return "enumType: array expected"; + for (var i = 0; i < message.enumType.length; ++i) { + var error = $root.google.protobuf.EnumDescriptorProto.verify(message.enumType[i]); + if (error) + return "enumType." + error; + } + } + if (message.extensionRange != null && message.hasOwnProperty("extensionRange")) { + if (!Array.isArray(message.extensionRange)) + return "extensionRange: array expected"; + for (var i = 0; i < message.extensionRange.length; ++i) { + var error = $root.google.protobuf.DescriptorProto.ExtensionRange.verify(message.extensionRange[i]); + if (error) + return "extensionRange." + error; + } + } + if (message.oneofDecl != null && message.hasOwnProperty("oneofDecl")) { + if (!Array.isArray(message.oneofDecl)) + return "oneofDecl: array expected"; + for (var i = 0; i < message.oneofDecl.length; ++i) { + var error = $root.google.protobuf.OneofDescriptorProto.verify(message.oneofDecl[i]); + if (error) + return "oneofDecl." + error; + } + } + if (message.options != null && message.hasOwnProperty("options")) { + var error = $root.google.protobuf.MessageOptions.verify(message.options); + if (error) + return "options." + error; + } + if (message.reservedRange != null && message.hasOwnProperty("reservedRange")) { + if (!Array.isArray(message.reservedRange)) + return "reservedRange: array expected"; + for (var i = 0; i < message.reservedRange.length; ++i) { + var error = $root.google.protobuf.DescriptorProto.ReservedRange.verify(message.reservedRange[i]); + if (error) + return "reservedRange." + error; + } + } + if (message.reservedName != null && message.hasOwnProperty("reservedName")) { + if (!Array.isArray(message.reservedName)) + return "reservedName: array expected"; + for (var i = 0; i < message.reservedName.length; ++i) + if (!$util.isString(message.reservedName[i])) + return "reservedName: string[] expected"; + } + return null; + }; + + /** + * Creates a DescriptorProto message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {google.protobuf.DescriptorProto} DescriptorProto + */ + DescriptorProto.fromObject = function fromObject(object) { + if (object instanceof $root.google.protobuf.DescriptorProto) + return object; + var message = new $root.google.protobuf.DescriptorProto(); + if (object.name != null) + message.name = String(object.name); + if (object.field) { + if (!Array.isArray(object.field)) + throw TypeError(".google.protobuf.DescriptorProto.field: array expected"); + message.field = []; + for (var i = 0; i < object.field.length; ++i) { + if (typeof object.field[i] !== "object") + throw TypeError(".google.protobuf.DescriptorProto.field: object expected"); + message.field[i] = $root.google.protobuf.FieldDescriptorProto.fromObject(object.field[i]); + } + } + if (object.extension) { + if (!Array.isArray(object.extension)) + throw TypeError(".google.protobuf.DescriptorProto.extension: array expected"); + message.extension = []; + for (var i = 0; i < object.extension.length; ++i) { + if (typeof object.extension[i] !== "object") + throw TypeError(".google.protobuf.DescriptorProto.extension: object expected"); + message.extension[i] = $root.google.protobuf.FieldDescriptorProto.fromObject(object.extension[i]); + } + } + if (object.nestedType) { + if (!Array.isArray(object.nestedType)) + throw TypeError(".google.protobuf.DescriptorProto.nestedType: array expected"); + message.nestedType = []; + for (var i = 0; i < object.nestedType.length; ++i) { + if (typeof object.nestedType[i] !== "object") + throw TypeError(".google.protobuf.DescriptorProto.nestedType: object expected"); + message.nestedType[i] = $root.google.protobuf.DescriptorProto.fromObject(object.nestedType[i]); + } + } + if (object.enumType) { + if (!Array.isArray(object.enumType)) + throw TypeError(".google.protobuf.DescriptorProto.enumType: array expected"); + message.enumType = []; + for (var i = 0; i < object.enumType.length; ++i) { + if (typeof object.enumType[i] !== "object") + throw TypeError(".google.protobuf.DescriptorProto.enumType: object expected"); + message.enumType[i] = $root.google.protobuf.EnumDescriptorProto.fromObject(object.enumType[i]); + } + } + if (object.extensionRange) { + if (!Array.isArray(object.extensionRange)) + throw TypeError(".google.protobuf.DescriptorProto.extensionRange: array expected"); + message.extensionRange = []; + for (var i = 0; i < object.extensionRange.length; ++i) { + if (typeof object.extensionRange[i] !== "object") + throw TypeError(".google.protobuf.DescriptorProto.extensionRange: object expected"); + message.extensionRange[i] = $root.google.protobuf.DescriptorProto.ExtensionRange.fromObject(object.extensionRange[i]); + } + } + if (object.oneofDecl) { + if (!Array.isArray(object.oneofDecl)) + throw TypeError(".google.protobuf.DescriptorProto.oneofDecl: array expected"); + message.oneofDecl = []; + for (var i = 0; i < object.oneofDecl.length; ++i) { + if (typeof object.oneofDecl[i] !== "object") + throw TypeError(".google.protobuf.DescriptorProto.oneofDecl: object expected"); + message.oneofDecl[i] = $root.google.protobuf.OneofDescriptorProto.fromObject(object.oneofDecl[i]); + } + } + if (object.options != null) { + if (typeof object.options !== "object") + throw TypeError(".google.protobuf.DescriptorProto.options: object expected"); + message.options = $root.google.protobuf.MessageOptions.fromObject(object.options); + } + if (object.reservedRange) { + if (!Array.isArray(object.reservedRange)) + throw TypeError(".google.protobuf.DescriptorProto.reservedRange: array expected"); + message.reservedRange = []; + for (var i = 0; i < object.reservedRange.length; ++i) { + if (typeof object.reservedRange[i] !== "object") + throw TypeError(".google.protobuf.DescriptorProto.reservedRange: object expected"); + message.reservedRange[i] = $root.google.protobuf.DescriptorProto.ReservedRange.fromObject(object.reservedRange[i]); + } + } + if (object.reservedName) { + if (!Array.isArray(object.reservedName)) + throw TypeError(".google.protobuf.DescriptorProto.reservedName: array expected"); + message.reservedName = []; + for (var i = 0; i < object.reservedName.length; ++i) + message.reservedName[i] = String(object.reservedName[i]); + } + return message; + }; + + /** + * Creates a DescriptorProto message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link google.protobuf.DescriptorProto.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {google.protobuf.DescriptorProto} DescriptorProto + */ + DescriptorProto.from = DescriptorProto.fromObject; + + /** + * Creates a plain object from a DescriptorProto message. Also converts values to other types if specified. + * @param {google.protobuf.DescriptorProto} message DescriptorProto + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + DescriptorProto.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) { + object.field = []; + object.nestedType = []; + object.enumType = []; + object.extensionRange = []; + object.extension = []; + object.oneofDecl = []; + object.reservedRange = []; + object.reservedName = []; + } + if (options.defaults) { + object.name = ""; + object.options = null; + } + if (message.name != null && message.hasOwnProperty("name")) + object.name = message.name; + if (message.field && message.field.length) { + object.field = []; + for (var j = 0; j < message.field.length; ++j) + object.field[j] = $root.google.protobuf.FieldDescriptorProto.toObject(message.field[j], options); + } + if (message.nestedType && message.nestedType.length) { + object.nestedType = []; + for (var j = 0; j < message.nestedType.length; ++j) + object.nestedType[j] = $root.google.protobuf.DescriptorProto.toObject(message.nestedType[j], options); + } + if (message.enumType && message.enumType.length) { + object.enumType = []; + for (var j = 0; j < message.enumType.length; ++j) + object.enumType[j] = $root.google.protobuf.EnumDescriptorProto.toObject(message.enumType[j], options); + } + if (message.extensionRange && message.extensionRange.length) { + object.extensionRange = []; + for (var j = 0; j < message.extensionRange.length; ++j) + object.extensionRange[j] = $root.google.protobuf.DescriptorProto.ExtensionRange.toObject(message.extensionRange[j], options); + } + if (message.extension && message.extension.length) { + object.extension = []; + for (var j = 0; j < message.extension.length; ++j) + object.extension[j] = $root.google.protobuf.FieldDescriptorProto.toObject(message.extension[j], options); + } + if (message.options != null && message.hasOwnProperty("options")) + object.options = $root.google.protobuf.MessageOptions.toObject(message.options, options); + if (message.oneofDecl && message.oneofDecl.length) { + object.oneofDecl = []; + for (var j = 0; j < message.oneofDecl.length; ++j) + object.oneofDecl[j] = $root.google.protobuf.OneofDescriptorProto.toObject(message.oneofDecl[j], options); + } + if (message.reservedRange && message.reservedRange.length) { + object.reservedRange = []; + for (var j = 0; j < message.reservedRange.length; ++j) + object.reservedRange[j] = $root.google.protobuf.DescriptorProto.ReservedRange.toObject(message.reservedRange[j], options); + } + if (message.reservedName && message.reservedName.length) { + object.reservedName = []; + for (var j = 0; j < message.reservedName.length; ++j) + object.reservedName[j] = message.reservedName[j]; + } + return object; + }; + + /** + * Creates a plain object from this DescriptorProto message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + DescriptorProto.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this DescriptorProto to JSON. + * @returns {Object.} JSON object + */ + DescriptorProto.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + DescriptorProto.ExtensionRange = (function() { + + /** + * Properties of an ExtensionRange. + * @typedef google.protobuf.DescriptorProto.ExtensionRange$Properties + * @type {Object} + * @property {number} [start] ExtensionRange start. + * @property {number} [end] ExtensionRange end. + */ + + /** + * Constructs a new ExtensionRange. + * @exports google.protobuf.DescriptorProto.ExtensionRange + * @constructor + * @param {google.protobuf.DescriptorProto.ExtensionRange$Properties=} [properties] Properties to set + */ + function ExtensionRange(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * ExtensionRange start. + * @type {number} + */ + ExtensionRange.prototype.start = 0; + + /** + * ExtensionRange end. + * @type {number} + */ + ExtensionRange.prototype.end = 0; + + /** + * Creates a new ExtensionRange instance using the specified properties. + * @param {google.protobuf.DescriptorProto.ExtensionRange$Properties=} [properties] Properties to set + * @returns {google.protobuf.DescriptorProto.ExtensionRange} ExtensionRange instance + */ + ExtensionRange.create = function create(properties) { + return new ExtensionRange(properties); + }; + + /** + * Encodes the specified ExtensionRange message. Does not implicitly {@link google.protobuf.DescriptorProto.ExtensionRange.verify|verify} messages. + * @param {google.protobuf.DescriptorProto.ExtensionRange$Properties} message ExtensionRange message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ExtensionRange.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.start != null && message.hasOwnProperty("start")) + writer.uint32(/* id 1, wireType 0 =*/8).int32(message.start); + if (message.end != null && message.hasOwnProperty("end")) + writer.uint32(/* id 2, wireType 0 =*/16).int32(message.end); + return writer; + }; + + /** + * Encodes the specified ExtensionRange message, length delimited. Does not implicitly {@link google.protobuf.DescriptorProto.ExtensionRange.verify|verify} messages. + * @param {google.protobuf.DescriptorProto.ExtensionRange$Properties} message ExtensionRange message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ExtensionRange.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes an ExtensionRange message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.DescriptorProto.ExtensionRange} ExtensionRange + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ExtensionRange.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.DescriptorProto.ExtensionRange(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.start = reader.int32(); + break; + case 2: + message.end = reader.int32(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes an ExtensionRange message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.DescriptorProto.ExtensionRange} ExtensionRange + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ExtensionRange.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies an ExtensionRange message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + ExtensionRange.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.start != null && message.hasOwnProperty("start")) + if (!$util.isInteger(message.start)) + return "start: integer expected"; + if (message.end != null && message.hasOwnProperty("end")) + if (!$util.isInteger(message.end)) + return "end: integer expected"; + return null; + }; + + /** + * Creates an ExtensionRange message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {google.protobuf.DescriptorProto.ExtensionRange} ExtensionRange + */ + ExtensionRange.fromObject = function fromObject(object) { + if (object instanceof $root.google.protobuf.DescriptorProto.ExtensionRange) + return object; + var message = new $root.google.protobuf.DescriptorProto.ExtensionRange(); + if (object.start != null) + message.start = object.start | 0; + if (object.end != null) + message.end = object.end | 0; + return message; + }; + + /** + * Creates an ExtensionRange message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link google.protobuf.DescriptorProto.ExtensionRange.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {google.protobuf.DescriptorProto.ExtensionRange} ExtensionRange + */ + ExtensionRange.from = ExtensionRange.fromObject; + + /** + * Creates a plain object from an ExtensionRange message. Also converts values to other types if specified. + * @param {google.protobuf.DescriptorProto.ExtensionRange} message ExtensionRange + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + ExtensionRange.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.start = 0; + object.end = 0; + } + if (message.start != null && message.hasOwnProperty("start")) + object.start = message.start; + if (message.end != null && message.hasOwnProperty("end")) + object.end = message.end; + return object; + }; + + /** + * Creates a plain object from this ExtensionRange message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + ExtensionRange.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this ExtensionRange to JSON. + * @returns {Object.} JSON object + */ + ExtensionRange.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return ExtensionRange; + })(); + + DescriptorProto.ReservedRange = (function() { + + /** + * Properties of a ReservedRange. + * @typedef google.protobuf.DescriptorProto.ReservedRange$Properties + * @type {Object} + * @property {number} [start] ReservedRange start. + * @property {number} [end] ReservedRange end. + */ + + /** + * Constructs a new ReservedRange. + * @exports google.protobuf.DescriptorProto.ReservedRange + * @constructor + * @param {google.protobuf.DescriptorProto.ReservedRange$Properties=} [properties] Properties to set + */ + function ReservedRange(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * ReservedRange start. + * @type {number} + */ + ReservedRange.prototype.start = 0; + + /** + * ReservedRange end. + * @type {number} + */ + ReservedRange.prototype.end = 0; + + /** + * Creates a new ReservedRange instance using the specified properties. + * @param {google.protobuf.DescriptorProto.ReservedRange$Properties=} [properties] Properties to set + * @returns {google.protobuf.DescriptorProto.ReservedRange} ReservedRange instance + */ + ReservedRange.create = function create(properties) { + return new ReservedRange(properties); + }; + + /** + * Encodes the specified ReservedRange message. Does not implicitly {@link google.protobuf.DescriptorProto.ReservedRange.verify|verify} messages. + * @param {google.protobuf.DescriptorProto.ReservedRange$Properties} message ReservedRange message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ReservedRange.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.start != null && message.hasOwnProperty("start")) + writer.uint32(/* id 1, wireType 0 =*/8).int32(message.start); + if (message.end != null && message.hasOwnProperty("end")) + writer.uint32(/* id 2, wireType 0 =*/16).int32(message.end); + return writer; + }; + + /** + * Encodes the specified ReservedRange message, length delimited. Does not implicitly {@link google.protobuf.DescriptorProto.ReservedRange.verify|verify} messages. + * @param {google.protobuf.DescriptorProto.ReservedRange$Properties} message ReservedRange message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ReservedRange.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a ReservedRange message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.DescriptorProto.ReservedRange} ReservedRange + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ReservedRange.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.DescriptorProto.ReservedRange(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.start = reader.int32(); + break; + case 2: + message.end = reader.int32(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a ReservedRange message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.DescriptorProto.ReservedRange} ReservedRange + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ReservedRange.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a ReservedRange message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + ReservedRange.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.start != null && message.hasOwnProperty("start")) + if (!$util.isInteger(message.start)) + return "start: integer expected"; + if (message.end != null && message.hasOwnProperty("end")) + if (!$util.isInteger(message.end)) + return "end: integer expected"; + return null; + }; + + /** + * Creates a ReservedRange message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {google.protobuf.DescriptorProto.ReservedRange} ReservedRange + */ + ReservedRange.fromObject = function fromObject(object) { + if (object instanceof $root.google.protobuf.DescriptorProto.ReservedRange) + return object; + var message = new $root.google.protobuf.DescriptorProto.ReservedRange(); + if (object.start != null) + message.start = object.start | 0; + if (object.end != null) + message.end = object.end | 0; + return message; + }; + + /** + * Creates a ReservedRange message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link google.protobuf.DescriptorProto.ReservedRange.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {google.protobuf.DescriptorProto.ReservedRange} ReservedRange + */ + ReservedRange.from = ReservedRange.fromObject; + + /** + * Creates a plain object from a ReservedRange message. Also converts values to other types if specified. + * @param {google.protobuf.DescriptorProto.ReservedRange} message ReservedRange + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + ReservedRange.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.start = 0; + object.end = 0; + } + if (message.start != null && message.hasOwnProperty("start")) + object.start = message.start; + if (message.end != null && message.hasOwnProperty("end")) + object.end = message.end; + return object; + }; + + /** + * Creates a plain object from this ReservedRange message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + ReservedRange.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this ReservedRange to JSON. + * @returns {Object.} JSON object + */ + ReservedRange.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return ReservedRange; + })(); + + return DescriptorProto; + })(); + + protobuf.FieldDescriptorProto = (function() { + + /** + * Properties of a FieldDescriptorProto. + * @typedef google.protobuf.FieldDescriptorProto$Properties + * @type {Object} + * @property {string} [name] FieldDescriptorProto name. + * @property {number} [number] FieldDescriptorProto number. + * @property {google.protobuf.FieldDescriptorProto.Label} [label] FieldDescriptorProto label. + * @property {google.protobuf.FieldDescriptorProto.Type} [type] FieldDescriptorProto type. + * @property {string} [typeName] FieldDescriptorProto typeName. + * @property {string} [extendee] FieldDescriptorProto extendee. + * @property {string} [defaultValue] FieldDescriptorProto defaultValue. + * @property {number} [oneofIndex] FieldDescriptorProto oneofIndex. + * @property {string} [jsonName] FieldDescriptorProto jsonName. + * @property {google.protobuf.FieldOptions$Properties} [options] FieldDescriptorProto options. + */ + + /** + * Constructs a new FieldDescriptorProto. + * @exports google.protobuf.FieldDescriptorProto + * @constructor + * @param {google.protobuf.FieldDescriptorProto$Properties=} [properties] Properties to set + */ + function FieldDescriptorProto(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * FieldDescriptorProto name. + * @type {string} + */ + FieldDescriptorProto.prototype.name = ""; + + /** + * FieldDescriptorProto number. + * @type {number} + */ + FieldDescriptorProto.prototype.number = 0; + + /** + * FieldDescriptorProto label. + * @type {google.protobuf.FieldDescriptorProto.Label} + */ + FieldDescriptorProto.prototype.label = 1; + + /** + * FieldDescriptorProto type. + * @type {google.protobuf.FieldDescriptorProto.Type} + */ + FieldDescriptorProto.prototype.type = 1; + + /** + * FieldDescriptorProto typeName. + * @type {string} + */ + FieldDescriptorProto.prototype.typeName = ""; + + /** + * FieldDescriptorProto extendee. + * @type {string} + */ + FieldDescriptorProto.prototype.extendee = ""; + + /** + * FieldDescriptorProto defaultValue. + * @type {string} + */ + FieldDescriptorProto.prototype.defaultValue = ""; + + /** + * FieldDescriptorProto oneofIndex. + * @type {number} + */ + FieldDescriptorProto.prototype.oneofIndex = 0; + + /** + * FieldDescriptorProto jsonName. + * @type {string} + */ + FieldDescriptorProto.prototype.jsonName = ""; + + /** + * FieldDescriptorProto options. + * @type {(google.protobuf.FieldOptions$Properties|null)} + */ + FieldDescriptorProto.prototype.options = null; + + /** + * Creates a new FieldDescriptorProto instance using the specified properties. + * @param {google.protobuf.FieldDescriptorProto$Properties=} [properties] Properties to set + * @returns {google.protobuf.FieldDescriptorProto} FieldDescriptorProto instance + */ + FieldDescriptorProto.create = function create(properties) { + return new FieldDescriptorProto(properties); + }; + + /** + * Encodes the specified FieldDescriptorProto message. Does not implicitly {@link google.protobuf.FieldDescriptorProto.verify|verify} messages. + * @param {google.protobuf.FieldDescriptorProto$Properties} message FieldDescriptorProto message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + FieldDescriptorProto.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.name != null && message.hasOwnProperty("name")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.name); + if (message.extendee != null && message.hasOwnProperty("extendee")) + writer.uint32(/* id 2, wireType 2 =*/18).string(message.extendee); + if (message.number != null && message.hasOwnProperty("number")) + writer.uint32(/* id 3, wireType 0 =*/24).int32(message.number); + if (message.label != null && message.hasOwnProperty("label")) + writer.uint32(/* id 4, wireType 0 =*/32).uint32(message.label); + if (message.type != null && message.hasOwnProperty("type")) + writer.uint32(/* id 5, wireType 0 =*/40).uint32(message.type); + if (message.typeName != null && message.hasOwnProperty("typeName")) + writer.uint32(/* id 6, wireType 2 =*/50).string(message.typeName); + if (message.defaultValue != null && message.hasOwnProperty("defaultValue")) + writer.uint32(/* id 7, wireType 2 =*/58).string(message.defaultValue); + if (message.options != null && message.hasOwnProperty("options")) + $root.google.protobuf.FieldOptions.encode(message.options, writer.uint32(/* id 8, wireType 2 =*/66).fork()).ldelim(); + if (message.oneofIndex != null && message.hasOwnProperty("oneofIndex")) + writer.uint32(/* id 9, wireType 0 =*/72).int32(message.oneofIndex); + if (message.jsonName != null && message.hasOwnProperty("jsonName")) + writer.uint32(/* id 10, wireType 2 =*/82).string(message.jsonName); + return writer; + }; + + /** + * Encodes the specified FieldDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.FieldDescriptorProto.verify|verify} messages. + * @param {google.protobuf.FieldDescriptorProto$Properties} message FieldDescriptorProto message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + FieldDescriptorProto.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a FieldDescriptorProto message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.FieldDescriptorProto} FieldDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + FieldDescriptorProto.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.FieldDescriptorProto(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.name = reader.string(); + break; + case 3: + message.number = reader.int32(); + break; + case 4: + message.label = reader.uint32(); + break; + case 5: + message.type = reader.uint32(); + break; + case 6: + message.typeName = reader.string(); + break; + case 2: + message.extendee = reader.string(); + break; + case 7: + message.defaultValue = reader.string(); + break; + case 9: + message.oneofIndex = reader.int32(); + break; + case 10: + message.jsonName = reader.string(); + break; + case 8: + message.options = $root.google.protobuf.FieldOptions.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a FieldDescriptorProto message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.FieldDescriptorProto} FieldDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + FieldDescriptorProto.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a FieldDescriptorProto message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + FieldDescriptorProto.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.name != null && message.hasOwnProperty("name")) + if (!$util.isString(message.name)) + return "name: string expected"; + if (message.number != null && message.hasOwnProperty("number")) + if (!$util.isInteger(message.number)) + return "number: integer expected"; + if (message.label != null && message.hasOwnProperty("label")) + switch (message.label) { + default: + return "label: enum value expected"; + case 1: + case 2: + case 3: + break; + } + if (message.type != null && message.hasOwnProperty("type")) + switch (message.type) { + default: + return "type: enum value expected"; + case 1: + case 2: + case 3: + case 4: + case 5: + case 6: + case 7: + case 8: + case 9: + case 10: + case 11: + case 12: + case 13: + case 14: + case 15: + case 16: + case 17: + case 18: + break; + } + if (message.typeName != null && message.hasOwnProperty("typeName")) + if (!$util.isString(message.typeName)) + return "typeName: string expected"; + if (message.extendee != null && message.hasOwnProperty("extendee")) + if (!$util.isString(message.extendee)) + return "extendee: string expected"; + if (message.defaultValue != null && message.hasOwnProperty("defaultValue")) + if (!$util.isString(message.defaultValue)) + return "defaultValue: string expected"; + if (message.oneofIndex != null && message.hasOwnProperty("oneofIndex")) + if (!$util.isInteger(message.oneofIndex)) + return "oneofIndex: integer expected"; + if (message.jsonName != null && message.hasOwnProperty("jsonName")) + if (!$util.isString(message.jsonName)) + return "jsonName: string expected"; + if (message.options != null && message.hasOwnProperty("options")) { + var error = $root.google.protobuf.FieldOptions.verify(message.options); + if (error) + return "options." + error; + } + return null; + }; + + /** + * Creates a FieldDescriptorProto message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {google.protobuf.FieldDescriptorProto} FieldDescriptorProto + */ + FieldDescriptorProto.fromObject = function fromObject(object) { + if (object instanceof $root.google.protobuf.FieldDescriptorProto) + return object; + var message = new $root.google.protobuf.FieldDescriptorProto(); + if (object.name != null) + message.name = String(object.name); + if (object.number != null) + message.number = object.number | 0; + switch (object.label) { + case "LABEL_OPTIONAL": + case 1: + message.label = 1; + break; + case "LABEL_REQUIRED": + case 2: + message.label = 2; + break; + case "LABEL_REPEATED": + case 3: + message.label = 3; + break; + } + switch (object.type) { + case "TYPE_DOUBLE": + case 1: + message.type = 1; + break; + case "TYPE_FLOAT": + case 2: + message.type = 2; + break; + case "TYPE_INT64": + case 3: + message.type = 3; + break; + case "TYPE_UINT64": + case 4: + message.type = 4; + break; + case "TYPE_INT32": + case 5: + message.type = 5; + break; + case "TYPE_FIXED64": + case 6: + message.type = 6; + break; + case "TYPE_FIXED32": + case 7: + message.type = 7; + break; + case "TYPE_BOOL": + case 8: + message.type = 8; + break; + case "TYPE_STRING": + case 9: + message.type = 9; + break; + case "TYPE_GROUP": + case 10: + message.type = 10; + break; + case "TYPE_MESSAGE": + case 11: + message.type = 11; + break; + case "TYPE_BYTES": + case 12: + message.type = 12; + break; + case "TYPE_UINT32": + case 13: + message.type = 13; + break; + case "TYPE_ENUM": + case 14: + message.type = 14; + break; + case "TYPE_SFIXED32": + case 15: + message.type = 15; + break; + case "TYPE_SFIXED64": + case 16: + message.type = 16; + break; + case "TYPE_SINT32": + case 17: + message.type = 17; + break; + case "TYPE_SINT64": + case 18: + message.type = 18; + break; + } + if (object.typeName != null) + message.typeName = String(object.typeName); + if (object.extendee != null) + message.extendee = String(object.extendee); + if (object.defaultValue != null) + message.defaultValue = String(object.defaultValue); + if (object.oneofIndex != null) + message.oneofIndex = object.oneofIndex | 0; + if (object.jsonName != null) + message.jsonName = String(object.jsonName); + if (object.options != null) { + if (typeof object.options !== "object") + throw TypeError(".google.protobuf.FieldDescriptorProto.options: object expected"); + message.options = $root.google.protobuf.FieldOptions.fromObject(object.options); + } + return message; + }; + + /** + * Creates a FieldDescriptorProto message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link google.protobuf.FieldDescriptorProto.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {google.protobuf.FieldDescriptorProto} FieldDescriptorProto + */ + FieldDescriptorProto.from = FieldDescriptorProto.fromObject; + + /** + * Creates a plain object from a FieldDescriptorProto message. Also converts values to other types if specified. + * @param {google.protobuf.FieldDescriptorProto} message FieldDescriptorProto + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + FieldDescriptorProto.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.name = ""; + object.extendee = ""; + object.number = 0; + object.label = options.enums === String ? "LABEL_OPTIONAL" : 1; + object.type = options.enums === String ? "TYPE_DOUBLE" : 1; + object.typeName = ""; + object.defaultValue = ""; + object.options = null; + object.oneofIndex = 0; + object.jsonName = ""; + } + if (message.name != null && message.hasOwnProperty("name")) + object.name = message.name; + if (message.extendee != null && message.hasOwnProperty("extendee")) + object.extendee = message.extendee; + if (message.number != null && message.hasOwnProperty("number")) + object.number = message.number; + if (message.label != null && message.hasOwnProperty("label")) + object.label = options.enums === String ? $root.google.protobuf.FieldDescriptorProto.Label[message.label] : message.label; + if (message.type != null && message.hasOwnProperty("type")) + object.type = options.enums === String ? $root.google.protobuf.FieldDescriptorProto.Type[message.type] : message.type; + if (message.typeName != null && message.hasOwnProperty("typeName")) + object.typeName = message.typeName; + if (message.defaultValue != null && message.hasOwnProperty("defaultValue")) + object.defaultValue = message.defaultValue; + if (message.options != null && message.hasOwnProperty("options")) + object.options = $root.google.protobuf.FieldOptions.toObject(message.options, options); + if (message.oneofIndex != null && message.hasOwnProperty("oneofIndex")) + object.oneofIndex = message.oneofIndex; + if (message.jsonName != null && message.hasOwnProperty("jsonName")) + object.jsonName = message.jsonName; + return object; + }; + + /** + * Creates a plain object from this FieldDescriptorProto message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + FieldDescriptorProto.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this FieldDescriptorProto to JSON. + * @returns {Object.} JSON object + */ + FieldDescriptorProto.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Type enum. + * @name Type + * @memberof google.protobuf.FieldDescriptorProto + * @enum {number} + * @property {number} TYPE_DOUBLE=1 TYPE_DOUBLE value + * @property {number} TYPE_FLOAT=2 TYPE_FLOAT value + * @property {number} TYPE_INT64=3 TYPE_INT64 value + * @property {number} TYPE_UINT64=4 TYPE_UINT64 value + * @property {number} TYPE_INT32=5 TYPE_INT32 value + * @property {number} TYPE_FIXED64=6 TYPE_FIXED64 value + * @property {number} TYPE_FIXED32=7 TYPE_FIXED32 value + * @property {number} TYPE_BOOL=8 TYPE_BOOL value + * @property {number} TYPE_STRING=9 TYPE_STRING value + * @property {number} TYPE_GROUP=10 TYPE_GROUP value + * @property {number} TYPE_MESSAGE=11 TYPE_MESSAGE value + * @property {number} TYPE_BYTES=12 TYPE_BYTES value + * @property {number} TYPE_UINT32=13 TYPE_UINT32 value + * @property {number} TYPE_ENUM=14 TYPE_ENUM value + * @property {number} TYPE_SFIXED32=15 TYPE_SFIXED32 value + * @property {number} TYPE_SFIXED64=16 TYPE_SFIXED64 value + * @property {number} TYPE_SINT32=17 TYPE_SINT32 value + * @property {number} TYPE_SINT64=18 TYPE_SINT64 value + */ + FieldDescriptorProto.Type = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[1] = "TYPE_DOUBLE"] = 1; + values[valuesById[2] = "TYPE_FLOAT"] = 2; + values[valuesById[3] = "TYPE_INT64"] = 3; + values[valuesById[4] = "TYPE_UINT64"] = 4; + values[valuesById[5] = "TYPE_INT32"] = 5; + values[valuesById[6] = "TYPE_FIXED64"] = 6; + values[valuesById[7] = "TYPE_FIXED32"] = 7; + values[valuesById[8] = "TYPE_BOOL"] = 8; + values[valuesById[9] = "TYPE_STRING"] = 9; + values[valuesById[10] = "TYPE_GROUP"] = 10; + values[valuesById[11] = "TYPE_MESSAGE"] = 11; + values[valuesById[12] = "TYPE_BYTES"] = 12; + values[valuesById[13] = "TYPE_UINT32"] = 13; + values[valuesById[14] = "TYPE_ENUM"] = 14; + values[valuesById[15] = "TYPE_SFIXED32"] = 15; + values[valuesById[16] = "TYPE_SFIXED64"] = 16; + values[valuesById[17] = "TYPE_SINT32"] = 17; + values[valuesById[18] = "TYPE_SINT64"] = 18; + return values; + })(); + + /** + * Label enum. + * @name Label + * @memberof google.protobuf.FieldDescriptorProto + * @enum {number} + * @property {number} LABEL_OPTIONAL=1 LABEL_OPTIONAL value + * @property {number} LABEL_REQUIRED=2 LABEL_REQUIRED value + * @property {number} LABEL_REPEATED=3 LABEL_REPEATED value + */ + FieldDescriptorProto.Label = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[1] = "LABEL_OPTIONAL"] = 1; + values[valuesById[2] = "LABEL_REQUIRED"] = 2; + values[valuesById[3] = "LABEL_REPEATED"] = 3; + return values; + })(); + + return FieldDescriptorProto; + })(); + + protobuf.OneofDescriptorProto = (function() { + + /** + * Properties of an OneofDescriptorProto. + * @typedef google.protobuf.OneofDescriptorProto$Properties + * @type {Object} + * @property {string} [name] OneofDescriptorProto name. + * @property {google.protobuf.OneofOptions$Properties} [options] OneofDescriptorProto options. + */ + + /** + * Constructs a new OneofDescriptorProto. + * @exports google.protobuf.OneofDescriptorProto + * @constructor + * @param {google.protobuf.OneofDescriptorProto$Properties=} [properties] Properties to set + */ + function OneofDescriptorProto(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * OneofDescriptorProto name. + * @type {string} + */ + OneofDescriptorProto.prototype.name = ""; + + /** + * OneofDescriptorProto options. + * @type {(google.protobuf.OneofOptions$Properties|null)} + */ + OneofDescriptorProto.prototype.options = null; + + /** + * Creates a new OneofDescriptorProto instance using the specified properties. + * @param {google.protobuf.OneofDescriptorProto$Properties=} [properties] Properties to set + * @returns {google.protobuf.OneofDescriptorProto} OneofDescriptorProto instance + */ + OneofDescriptorProto.create = function create(properties) { + return new OneofDescriptorProto(properties); + }; + + /** + * Encodes the specified OneofDescriptorProto message. Does not implicitly {@link google.protobuf.OneofDescriptorProto.verify|verify} messages. + * @param {google.protobuf.OneofDescriptorProto$Properties} message OneofDescriptorProto message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + OneofDescriptorProto.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.name != null && message.hasOwnProperty("name")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.name); + if (message.options != null && message.hasOwnProperty("options")) + $root.google.protobuf.OneofOptions.encode(message.options, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified OneofDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.OneofDescriptorProto.verify|verify} messages. + * @param {google.protobuf.OneofDescriptorProto$Properties} message OneofDescriptorProto message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + OneofDescriptorProto.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes an OneofDescriptorProto message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.OneofDescriptorProto} OneofDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + OneofDescriptorProto.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.OneofDescriptorProto(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.name = reader.string(); + break; + case 2: + message.options = $root.google.protobuf.OneofOptions.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes an OneofDescriptorProto message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.OneofDescriptorProto} OneofDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + OneofDescriptorProto.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies an OneofDescriptorProto message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + OneofDescriptorProto.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.name != null && message.hasOwnProperty("name")) + if (!$util.isString(message.name)) + return "name: string expected"; + if (message.options != null && message.hasOwnProperty("options")) { + var error = $root.google.protobuf.OneofOptions.verify(message.options); + if (error) + return "options." + error; + } + return null; + }; + + /** + * Creates an OneofDescriptorProto message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {google.protobuf.OneofDescriptorProto} OneofDescriptorProto + */ + OneofDescriptorProto.fromObject = function fromObject(object) { + if (object instanceof $root.google.protobuf.OneofDescriptorProto) + return object; + var message = new $root.google.protobuf.OneofDescriptorProto(); + if (object.name != null) + message.name = String(object.name); + if (object.options != null) { + if (typeof object.options !== "object") + throw TypeError(".google.protobuf.OneofDescriptorProto.options: object expected"); + message.options = $root.google.protobuf.OneofOptions.fromObject(object.options); + } + return message; + }; + + /** + * Creates an OneofDescriptorProto message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link google.protobuf.OneofDescriptorProto.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {google.protobuf.OneofDescriptorProto} OneofDescriptorProto + */ + OneofDescriptorProto.from = OneofDescriptorProto.fromObject; + + /** + * Creates a plain object from an OneofDescriptorProto message. Also converts values to other types if specified. + * @param {google.protobuf.OneofDescriptorProto} message OneofDescriptorProto + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + OneofDescriptorProto.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.name = ""; + object.options = null; + } + if (message.name != null && message.hasOwnProperty("name")) + object.name = message.name; + if (message.options != null && message.hasOwnProperty("options")) + object.options = $root.google.protobuf.OneofOptions.toObject(message.options, options); + return object; + }; + + /** + * Creates a plain object from this OneofDescriptorProto message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + OneofDescriptorProto.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this OneofDescriptorProto to JSON. + * @returns {Object.} JSON object + */ + OneofDescriptorProto.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return OneofDescriptorProto; + })(); + + protobuf.EnumDescriptorProto = (function() { + + /** + * Properties of an EnumDescriptorProto. + * @typedef google.protobuf.EnumDescriptorProto$Properties + * @type {Object} + * @property {string} [name] EnumDescriptorProto name. + * @property {Array.} [value] EnumDescriptorProto value. + * @property {google.protobuf.EnumOptions$Properties} [options] EnumDescriptorProto options. + */ + + /** + * Constructs a new EnumDescriptorProto. + * @exports google.protobuf.EnumDescriptorProto + * @constructor + * @param {google.protobuf.EnumDescriptorProto$Properties=} [properties] Properties to set + */ + function EnumDescriptorProto(properties) { + this.value = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * EnumDescriptorProto name. + * @type {string} + */ + EnumDescriptorProto.prototype.name = ""; + + /** + * EnumDescriptorProto value. + * @type {Array.} + */ + EnumDescriptorProto.prototype.value = $util.emptyArray; + + /** + * EnumDescriptorProto options. + * @type {(google.protobuf.EnumOptions$Properties|null)} + */ + EnumDescriptorProto.prototype.options = null; + + /** + * Creates a new EnumDescriptorProto instance using the specified properties. + * @param {google.protobuf.EnumDescriptorProto$Properties=} [properties] Properties to set + * @returns {google.protobuf.EnumDescriptorProto} EnumDescriptorProto instance + */ + EnumDescriptorProto.create = function create(properties) { + return new EnumDescriptorProto(properties); + }; + + /** + * Encodes the specified EnumDescriptorProto message. Does not implicitly {@link google.protobuf.EnumDescriptorProto.verify|verify} messages. + * @param {google.protobuf.EnumDescriptorProto$Properties} message EnumDescriptorProto message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + EnumDescriptorProto.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.name != null && message.hasOwnProperty("name")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.name); + if (message.value != null && message.value.length) + for (var i = 0; i < message.value.length; ++i) + $root.google.protobuf.EnumValueDescriptorProto.encode(message.value[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.options != null && message.hasOwnProperty("options")) + $root.google.protobuf.EnumOptions.encode(message.options, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified EnumDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.EnumDescriptorProto.verify|verify} messages. + * @param {google.protobuf.EnumDescriptorProto$Properties} message EnumDescriptorProto message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + EnumDescriptorProto.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes an EnumDescriptorProto message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.EnumDescriptorProto} EnumDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + EnumDescriptorProto.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.EnumDescriptorProto(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.name = reader.string(); + break; + case 2: + if (!(message.value && message.value.length)) + message.value = []; + message.value.push($root.google.protobuf.EnumValueDescriptorProto.decode(reader, reader.uint32())); + break; + case 3: + message.options = $root.google.protobuf.EnumOptions.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes an EnumDescriptorProto message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.EnumDescriptorProto} EnumDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + EnumDescriptorProto.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies an EnumDescriptorProto message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + EnumDescriptorProto.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.name != null && message.hasOwnProperty("name")) + if (!$util.isString(message.name)) + return "name: string expected"; + if (message.value != null && message.hasOwnProperty("value")) { + if (!Array.isArray(message.value)) + return "value: array expected"; + for (var i = 0; i < message.value.length; ++i) { + var error = $root.google.protobuf.EnumValueDescriptorProto.verify(message.value[i]); + if (error) + return "value." + error; + } + } + if (message.options != null && message.hasOwnProperty("options")) { + var error = $root.google.protobuf.EnumOptions.verify(message.options); + if (error) + return "options." + error; + } + return null; + }; + + /** + * Creates an EnumDescriptorProto message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {google.protobuf.EnumDescriptorProto} EnumDescriptorProto + */ + EnumDescriptorProto.fromObject = function fromObject(object) { + if (object instanceof $root.google.protobuf.EnumDescriptorProto) + return object; + var message = new $root.google.protobuf.EnumDescriptorProto(); + if (object.name != null) + message.name = String(object.name); + if (object.value) { + if (!Array.isArray(object.value)) + throw TypeError(".google.protobuf.EnumDescriptorProto.value: array expected"); + message.value = []; + for (var i = 0; i < object.value.length; ++i) { + if (typeof object.value[i] !== "object") + throw TypeError(".google.protobuf.EnumDescriptorProto.value: object expected"); + message.value[i] = $root.google.protobuf.EnumValueDescriptorProto.fromObject(object.value[i]); + } + } + if (object.options != null) { + if (typeof object.options !== "object") + throw TypeError(".google.protobuf.EnumDescriptorProto.options: object expected"); + message.options = $root.google.protobuf.EnumOptions.fromObject(object.options); + } + return message; + }; + + /** + * Creates an EnumDescriptorProto message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link google.protobuf.EnumDescriptorProto.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {google.protobuf.EnumDescriptorProto} EnumDescriptorProto + */ + EnumDescriptorProto.from = EnumDescriptorProto.fromObject; + + /** + * Creates a plain object from an EnumDescriptorProto message. Also converts values to other types if specified. + * @param {google.protobuf.EnumDescriptorProto} message EnumDescriptorProto + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + EnumDescriptorProto.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.value = []; + if (options.defaults) { + object.name = ""; + object.options = null; + } + if (message.name != null && message.hasOwnProperty("name")) + object.name = message.name; + if (message.value && message.value.length) { + object.value = []; + for (var j = 0; j < message.value.length; ++j) + object.value[j] = $root.google.protobuf.EnumValueDescriptorProto.toObject(message.value[j], options); + } + if (message.options != null && message.hasOwnProperty("options")) + object.options = $root.google.protobuf.EnumOptions.toObject(message.options, options); + return object; + }; + + /** + * Creates a plain object from this EnumDescriptorProto message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + EnumDescriptorProto.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this EnumDescriptorProto to JSON. + * @returns {Object.} JSON object + */ + EnumDescriptorProto.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return EnumDescriptorProto; + })(); + + protobuf.EnumValueDescriptorProto = (function() { + + /** + * Properties of an EnumValueDescriptorProto. + * @typedef google.protobuf.EnumValueDescriptorProto$Properties + * @type {Object} + * @property {string} [name] EnumValueDescriptorProto name. + * @property {number} [number] EnumValueDescriptorProto number. + * @property {google.protobuf.EnumValueOptions$Properties} [options] EnumValueDescriptorProto options. + */ + + /** + * Constructs a new EnumValueDescriptorProto. + * @exports google.protobuf.EnumValueDescriptorProto + * @constructor + * @param {google.protobuf.EnumValueDescriptorProto$Properties=} [properties] Properties to set + */ + function EnumValueDescriptorProto(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * EnumValueDescriptorProto name. + * @type {string} + */ + EnumValueDescriptorProto.prototype.name = ""; + + /** + * EnumValueDescriptorProto number. + * @type {number} + */ + EnumValueDescriptorProto.prototype.number = 0; + + /** + * EnumValueDescriptorProto options. + * @type {(google.protobuf.EnumValueOptions$Properties|null)} + */ + EnumValueDescriptorProto.prototype.options = null; + + /** + * Creates a new EnumValueDescriptorProto instance using the specified properties. + * @param {google.protobuf.EnumValueDescriptorProto$Properties=} [properties] Properties to set + * @returns {google.protobuf.EnumValueDescriptorProto} EnumValueDescriptorProto instance + */ + EnumValueDescriptorProto.create = function create(properties) { + return new EnumValueDescriptorProto(properties); + }; + + /** + * Encodes the specified EnumValueDescriptorProto message. Does not implicitly {@link google.protobuf.EnumValueDescriptorProto.verify|verify} messages. + * @param {google.protobuf.EnumValueDescriptorProto$Properties} message EnumValueDescriptorProto message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + EnumValueDescriptorProto.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.name != null && message.hasOwnProperty("name")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.name); + if (message.number != null && message.hasOwnProperty("number")) + writer.uint32(/* id 2, wireType 0 =*/16).int32(message.number); + if (message.options != null && message.hasOwnProperty("options")) + $root.google.protobuf.EnumValueOptions.encode(message.options, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified EnumValueDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.EnumValueDescriptorProto.verify|verify} messages. + * @param {google.protobuf.EnumValueDescriptorProto$Properties} message EnumValueDescriptorProto message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + EnumValueDescriptorProto.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes an EnumValueDescriptorProto message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.EnumValueDescriptorProto} EnumValueDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + EnumValueDescriptorProto.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.EnumValueDescriptorProto(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.name = reader.string(); + break; + case 2: + message.number = reader.int32(); + break; + case 3: + message.options = $root.google.protobuf.EnumValueOptions.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes an EnumValueDescriptorProto message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.EnumValueDescriptorProto} EnumValueDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + EnumValueDescriptorProto.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies an EnumValueDescriptorProto message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + EnumValueDescriptorProto.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.name != null && message.hasOwnProperty("name")) + if (!$util.isString(message.name)) + return "name: string expected"; + if (message.number != null && message.hasOwnProperty("number")) + if (!$util.isInteger(message.number)) + return "number: integer expected"; + if (message.options != null && message.hasOwnProperty("options")) { + var error = $root.google.protobuf.EnumValueOptions.verify(message.options); + if (error) + return "options." + error; + } + return null; + }; + + /** + * Creates an EnumValueDescriptorProto message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {google.protobuf.EnumValueDescriptorProto} EnumValueDescriptorProto + */ + EnumValueDescriptorProto.fromObject = function fromObject(object) { + if (object instanceof $root.google.protobuf.EnumValueDescriptorProto) + return object; + var message = new $root.google.protobuf.EnumValueDescriptorProto(); + if (object.name != null) + message.name = String(object.name); + if (object.number != null) + message.number = object.number | 0; + if (object.options != null) { + if (typeof object.options !== "object") + throw TypeError(".google.protobuf.EnumValueDescriptorProto.options: object expected"); + message.options = $root.google.protobuf.EnumValueOptions.fromObject(object.options); + } + return message; + }; + + /** + * Creates an EnumValueDescriptorProto message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link google.protobuf.EnumValueDescriptorProto.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {google.protobuf.EnumValueDescriptorProto} EnumValueDescriptorProto + */ + EnumValueDescriptorProto.from = EnumValueDescriptorProto.fromObject; + + /** + * Creates a plain object from an EnumValueDescriptorProto message. Also converts values to other types if specified. + * @param {google.protobuf.EnumValueDescriptorProto} message EnumValueDescriptorProto + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + EnumValueDescriptorProto.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.name = ""; + object.number = 0; + object.options = null; + } + if (message.name != null && message.hasOwnProperty("name")) + object.name = message.name; + if (message.number != null && message.hasOwnProperty("number")) + object.number = message.number; + if (message.options != null && message.hasOwnProperty("options")) + object.options = $root.google.protobuf.EnumValueOptions.toObject(message.options, options); + return object; + }; + + /** + * Creates a plain object from this EnumValueDescriptorProto message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + EnumValueDescriptorProto.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this EnumValueDescriptorProto to JSON. + * @returns {Object.} JSON object + */ + EnumValueDescriptorProto.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return EnumValueDescriptorProto; + })(); + + protobuf.ServiceDescriptorProto = (function() { + + /** + * Properties of a ServiceDescriptorProto. + * @typedef google.protobuf.ServiceDescriptorProto$Properties + * @type {Object} + * @property {string} [name] ServiceDescriptorProto name. + * @property {Array.} [method] ServiceDescriptorProto method. + * @property {google.protobuf.ServiceOptions$Properties} [options] ServiceDescriptorProto options. + */ + + /** + * Constructs a new ServiceDescriptorProto. + * @exports google.protobuf.ServiceDescriptorProto + * @constructor + * @param {google.protobuf.ServiceDescriptorProto$Properties=} [properties] Properties to set + */ + function ServiceDescriptorProto(properties) { + this.method = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * ServiceDescriptorProto name. + * @type {string} + */ + ServiceDescriptorProto.prototype.name = ""; + + /** + * ServiceDescriptorProto method. + * @type {Array.} + */ + ServiceDescriptorProto.prototype.method = $util.emptyArray; + + /** + * ServiceDescriptorProto options. + * @type {(google.protobuf.ServiceOptions$Properties|null)} + */ + ServiceDescriptorProto.prototype.options = null; + + /** + * Creates a new ServiceDescriptorProto instance using the specified properties. + * @param {google.protobuf.ServiceDescriptorProto$Properties=} [properties] Properties to set + * @returns {google.protobuf.ServiceDescriptorProto} ServiceDescriptorProto instance + */ + ServiceDescriptorProto.create = function create(properties) { + return new ServiceDescriptorProto(properties); + }; + + /** + * Encodes the specified ServiceDescriptorProto message. Does not implicitly {@link google.protobuf.ServiceDescriptorProto.verify|verify} messages. + * @param {google.protobuf.ServiceDescriptorProto$Properties} message ServiceDescriptorProto message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ServiceDescriptorProto.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.name != null && message.hasOwnProperty("name")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.name); + if (message.method != null && message.method.length) + for (var i = 0; i < message.method.length; ++i) + $root.google.protobuf.MethodDescriptorProto.encode(message.method[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.options != null && message.hasOwnProperty("options")) + $root.google.protobuf.ServiceOptions.encode(message.options, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified ServiceDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.ServiceDescriptorProto.verify|verify} messages. + * @param {google.protobuf.ServiceDescriptorProto$Properties} message ServiceDescriptorProto message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ServiceDescriptorProto.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a ServiceDescriptorProto message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.ServiceDescriptorProto} ServiceDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ServiceDescriptorProto.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.ServiceDescriptorProto(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.name = reader.string(); + break; + case 2: + if (!(message.method && message.method.length)) + message.method = []; + message.method.push($root.google.protobuf.MethodDescriptorProto.decode(reader, reader.uint32())); + break; + case 3: + message.options = $root.google.protobuf.ServiceOptions.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a ServiceDescriptorProto message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.ServiceDescriptorProto} ServiceDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ServiceDescriptorProto.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a ServiceDescriptorProto message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + ServiceDescriptorProto.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.name != null && message.hasOwnProperty("name")) + if (!$util.isString(message.name)) + return "name: string expected"; + if (message.method != null && message.hasOwnProperty("method")) { + if (!Array.isArray(message.method)) + return "method: array expected"; + for (var i = 0; i < message.method.length; ++i) { + var error = $root.google.protobuf.MethodDescriptorProto.verify(message.method[i]); + if (error) + return "method." + error; + } + } + if (message.options != null && message.hasOwnProperty("options")) { + var error = $root.google.protobuf.ServiceOptions.verify(message.options); + if (error) + return "options." + error; + } + return null; + }; + + /** + * Creates a ServiceDescriptorProto message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {google.protobuf.ServiceDescriptorProto} ServiceDescriptorProto + */ + ServiceDescriptorProto.fromObject = function fromObject(object) { + if (object instanceof $root.google.protobuf.ServiceDescriptorProto) + return object; + var message = new $root.google.protobuf.ServiceDescriptorProto(); + if (object.name != null) + message.name = String(object.name); + if (object.method) { + if (!Array.isArray(object.method)) + throw TypeError(".google.protobuf.ServiceDescriptorProto.method: array expected"); + message.method = []; + for (var i = 0; i < object.method.length; ++i) { + if (typeof object.method[i] !== "object") + throw TypeError(".google.protobuf.ServiceDescriptorProto.method: object expected"); + message.method[i] = $root.google.protobuf.MethodDescriptorProto.fromObject(object.method[i]); + } + } + if (object.options != null) { + if (typeof object.options !== "object") + throw TypeError(".google.protobuf.ServiceDescriptorProto.options: object expected"); + message.options = $root.google.protobuf.ServiceOptions.fromObject(object.options); + } + return message; + }; + + /** + * Creates a ServiceDescriptorProto message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link google.protobuf.ServiceDescriptorProto.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {google.protobuf.ServiceDescriptorProto} ServiceDescriptorProto + */ + ServiceDescriptorProto.from = ServiceDescriptorProto.fromObject; + + /** + * Creates a plain object from a ServiceDescriptorProto message. Also converts values to other types if specified. + * @param {google.protobuf.ServiceDescriptorProto} message ServiceDescriptorProto + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + ServiceDescriptorProto.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.method = []; + if (options.defaults) { + object.name = ""; + object.options = null; + } + if (message.name != null && message.hasOwnProperty("name")) + object.name = message.name; + if (message.method && message.method.length) { + object.method = []; + for (var j = 0; j < message.method.length; ++j) + object.method[j] = $root.google.protobuf.MethodDescriptorProto.toObject(message.method[j], options); + } + if (message.options != null && message.hasOwnProperty("options")) + object.options = $root.google.protobuf.ServiceOptions.toObject(message.options, options); + return object; + }; + + /** + * Creates a plain object from this ServiceDescriptorProto message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + ServiceDescriptorProto.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this ServiceDescriptorProto to JSON. + * @returns {Object.} JSON object + */ + ServiceDescriptorProto.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return ServiceDescriptorProto; + })(); + + protobuf.MethodDescriptorProto = (function() { + + /** + * Properties of a MethodDescriptorProto. + * @typedef google.protobuf.MethodDescriptorProto$Properties + * @type {Object} + * @property {string} [name] MethodDescriptorProto name. + * @property {string} [inputType] MethodDescriptorProto inputType. + * @property {string} [outputType] MethodDescriptorProto outputType. + * @property {google.protobuf.MethodOptions$Properties} [options] MethodDescriptorProto options. + * @property {boolean} [clientStreaming] MethodDescriptorProto clientStreaming. + * @property {boolean} [serverStreaming] MethodDescriptorProto serverStreaming. + */ + + /** + * Constructs a new MethodDescriptorProto. + * @exports google.protobuf.MethodDescriptorProto + * @constructor + * @param {google.protobuf.MethodDescriptorProto$Properties=} [properties] Properties to set + */ + function MethodDescriptorProto(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * MethodDescriptorProto name. + * @type {string} + */ + MethodDescriptorProto.prototype.name = ""; + + /** + * MethodDescriptorProto inputType. + * @type {string} + */ + MethodDescriptorProto.prototype.inputType = ""; + + /** + * MethodDescriptorProto outputType. + * @type {string} + */ + MethodDescriptorProto.prototype.outputType = ""; + + /** + * MethodDescriptorProto options. + * @type {(google.protobuf.MethodOptions$Properties|null)} + */ + MethodDescriptorProto.prototype.options = null; + + /** + * MethodDescriptorProto clientStreaming. + * @type {boolean} + */ + MethodDescriptorProto.prototype.clientStreaming = false; + + /** + * MethodDescriptorProto serverStreaming. + * @type {boolean} + */ + MethodDescriptorProto.prototype.serverStreaming = false; + + /** + * Creates a new MethodDescriptorProto instance using the specified properties. + * @param {google.protobuf.MethodDescriptorProto$Properties=} [properties] Properties to set + * @returns {google.protobuf.MethodDescriptorProto} MethodDescriptorProto instance + */ + MethodDescriptorProto.create = function create(properties) { + return new MethodDescriptorProto(properties); + }; + + /** + * Encodes the specified MethodDescriptorProto message. Does not implicitly {@link google.protobuf.MethodDescriptorProto.verify|verify} messages. + * @param {google.protobuf.MethodDescriptorProto$Properties} message MethodDescriptorProto message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + MethodDescriptorProto.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.name != null && message.hasOwnProperty("name")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.name); + if (message.inputType != null && message.hasOwnProperty("inputType")) + writer.uint32(/* id 2, wireType 2 =*/18).string(message.inputType); + if (message.outputType != null && message.hasOwnProperty("outputType")) + writer.uint32(/* id 3, wireType 2 =*/26).string(message.outputType); + if (message.options != null && message.hasOwnProperty("options")) + $root.google.protobuf.MethodOptions.encode(message.options, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); + if (message.clientStreaming != null && message.hasOwnProperty("clientStreaming")) + writer.uint32(/* id 5, wireType 0 =*/40).bool(message.clientStreaming); + if (message.serverStreaming != null && message.hasOwnProperty("serverStreaming")) + writer.uint32(/* id 6, wireType 0 =*/48).bool(message.serverStreaming); + return writer; + }; + + /** + * Encodes the specified MethodDescriptorProto message, length delimited. Does not implicitly {@link google.protobuf.MethodDescriptorProto.verify|verify} messages. + * @param {google.protobuf.MethodDescriptorProto$Properties} message MethodDescriptorProto message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + MethodDescriptorProto.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a MethodDescriptorProto message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.MethodDescriptorProto} MethodDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + MethodDescriptorProto.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.MethodDescriptorProto(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.name = reader.string(); + break; + case 2: + message.inputType = reader.string(); + break; + case 3: + message.outputType = reader.string(); + break; + case 4: + message.options = $root.google.protobuf.MethodOptions.decode(reader, reader.uint32()); + break; + case 5: + message.clientStreaming = reader.bool(); + break; + case 6: + message.serverStreaming = reader.bool(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a MethodDescriptorProto message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.MethodDescriptorProto} MethodDescriptorProto + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + MethodDescriptorProto.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a MethodDescriptorProto message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + MethodDescriptorProto.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.name != null && message.hasOwnProperty("name")) + if (!$util.isString(message.name)) + return "name: string expected"; + if (message.inputType != null && message.hasOwnProperty("inputType")) + if (!$util.isString(message.inputType)) + return "inputType: string expected"; + if (message.outputType != null && message.hasOwnProperty("outputType")) + if (!$util.isString(message.outputType)) + return "outputType: string expected"; + if (message.options != null && message.hasOwnProperty("options")) { + var error = $root.google.protobuf.MethodOptions.verify(message.options); + if (error) + return "options." + error; + } + if (message.clientStreaming != null && message.hasOwnProperty("clientStreaming")) + if (typeof message.clientStreaming !== "boolean") + return "clientStreaming: boolean expected"; + if (message.serverStreaming != null && message.hasOwnProperty("serverStreaming")) + if (typeof message.serverStreaming !== "boolean") + return "serverStreaming: boolean expected"; + return null; + }; + + /** + * Creates a MethodDescriptorProto message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {google.protobuf.MethodDescriptorProto} MethodDescriptorProto + */ + MethodDescriptorProto.fromObject = function fromObject(object) { + if (object instanceof $root.google.protobuf.MethodDescriptorProto) + return object; + var message = new $root.google.protobuf.MethodDescriptorProto(); + if (object.name != null) + message.name = String(object.name); + if (object.inputType != null) + message.inputType = String(object.inputType); + if (object.outputType != null) + message.outputType = String(object.outputType); + if (object.options != null) { + if (typeof object.options !== "object") + throw TypeError(".google.protobuf.MethodDescriptorProto.options: object expected"); + message.options = $root.google.protobuf.MethodOptions.fromObject(object.options); + } + if (object.clientStreaming != null) + message.clientStreaming = Boolean(object.clientStreaming); + if (object.serverStreaming != null) + message.serverStreaming = Boolean(object.serverStreaming); + return message; + }; + + /** + * Creates a MethodDescriptorProto message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link google.protobuf.MethodDescriptorProto.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {google.protobuf.MethodDescriptorProto} MethodDescriptorProto + */ + MethodDescriptorProto.from = MethodDescriptorProto.fromObject; + + /** + * Creates a plain object from a MethodDescriptorProto message. Also converts values to other types if specified. + * @param {google.protobuf.MethodDescriptorProto} message MethodDescriptorProto + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + MethodDescriptorProto.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.name = ""; + object.inputType = ""; + object.outputType = ""; + object.options = null; + object.clientStreaming = false; + object.serverStreaming = false; + } + if (message.name != null && message.hasOwnProperty("name")) + object.name = message.name; + if (message.inputType != null && message.hasOwnProperty("inputType")) + object.inputType = message.inputType; + if (message.outputType != null && message.hasOwnProperty("outputType")) + object.outputType = message.outputType; + if (message.options != null && message.hasOwnProperty("options")) + object.options = $root.google.protobuf.MethodOptions.toObject(message.options, options); + if (message.clientStreaming != null && message.hasOwnProperty("clientStreaming")) + object.clientStreaming = message.clientStreaming; + if (message.serverStreaming != null && message.hasOwnProperty("serverStreaming")) + object.serverStreaming = message.serverStreaming; + return object; + }; + + /** + * Creates a plain object from this MethodDescriptorProto message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + MethodDescriptorProto.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this MethodDescriptorProto to JSON. + * @returns {Object.} JSON object + */ + MethodDescriptorProto.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return MethodDescriptorProto; + })(); + + protobuf.FileOptions = (function() { + + /** + * Properties of a FileOptions. + * @typedef google.protobuf.FileOptions$Properties + * @type {Object} + * @property {string} [javaPackage] FileOptions javaPackage. + * @property {string} [javaOuterClassname] FileOptions javaOuterClassname. + * @property {boolean} [javaMultipleFiles] FileOptions javaMultipleFiles. + * @property {boolean} [javaGenerateEqualsAndHash] FileOptions javaGenerateEqualsAndHash. + * @property {boolean} [javaStringCheckUtf8] FileOptions javaStringCheckUtf8. + * @property {google.protobuf.FileOptions.OptimizeMode} [optimizeFor] FileOptions optimizeFor. + * @property {string} [goPackage] FileOptions goPackage. + * @property {boolean} [ccGenericServices] FileOptions ccGenericServices. + * @property {boolean} [javaGenericServices] FileOptions javaGenericServices. + * @property {boolean} [pyGenericServices] FileOptions pyGenericServices. + * @property {boolean} [deprecated] FileOptions deprecated. + * @property {boolean} [ccEnableArenas] FileOptions ccEnableArenas. + * @property {string} [objcClassPrefix] FileOptions objcClassPrefix. + * @property {string} [csharpNamespace] FileOptions csharpNamespace. + * @property {Array.} [uninterpretedOption] FileOptions uninterpretedOption. + */ + + /** + * Constructs a new FileOptions. + * @exports google.protobuf.FileOptions + * @constructor + * @param {google.protobuf.FileOptions$Properties=} [properties] Properties to set + */ + function FileOptions(properties) { + this.uninterpretedOption = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * FileOptions javaPackage. + * @type {string} + */ + FileOptions.prototype.javaPackage = ""; + + /** + * FileOptions javaOuterClassname. + * @type {string} + */ + FileOptions.prototype.javaOuterClassname = ""; + + /** + * FileOptions javaMultipleFiles. + * @type {boolean} + */ + FileOptions.prototype.javaMultipleFiles = false; + + /** + * FileOptions javaGenerateEqualsAndHash. + * @type {boolean} + */ + FileOptions.prototype.javaGenerateEqualsAndHash = false; + + /** + * FileOptions javaStringCheckUtf8. + * @type {boolean} + */ + FileOptions.prototype.javaStringCheckUtf8 = false; + + /** + * FileOptions optimizeFor. + * @type {google.protobuf.FileOptions.OptimizeMode} + */ + FileOptions.prototype.optimizeFor = 1; + + /** + * FileOptions goPackage. + * @type {string} + */ + FileOptions.prototype.goPackage = ""; + + /** + * FileOptions ccGenericServices. + * @type {boolean} + */ + FileOptions.prototype.ccGenericServices = false; + + /** + * FileOptions javaGenericServices. + * @type {boolean} + */ + FileOptions.prototype.javaGenericServices = false; + + /** + * FileOptions pyGenericServices. + * @type {boolean} + */ + FileOptions.prototype.pyGenericServices = false; + + /** + * FileOptions deprecated. + * @type {boolean} + */ + FileOptions.prototype.deprecated = false; + + /** + * FileOptions ccEnableArenas. + * @type {boolean} + */ + FileOptions.prototype.ccEnableArenas = false; + + /** + * FileOptions objcClassPrefix. + * @type {string} + */ + FileOptions.prototype.objcClassPrefix = ""; + + /** + * FileOptions csharpNamespace. + * @type {string} + */ + FileOptions.prototype.csharpNamespace = ""; + + /** + * FileOptions uninterpretedOption. + * @type {Array.} + */ + FileOptions.prototype.uninterpretedOption = $util.emptyArray; + + /** + * Creates a new FileOptions instance using the specified properties. + * @param {google.protobuf.FileOptions$Properties=} [properties] Properties to set + * @returns {google.protobuf.FileOptions} FileOptions instance + */ + FileOptions.create = function create(properties) { + return new FileOptions(properties); + }; + + /** + * Encodes the specified FileOptions message. Does not implicitly {@link google.protobuf.FileOptions.verify|verify} messages. + * @param {google.protobuf.FileOptions$Properties} message FileOptions message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + FileOptions.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.javaPackage != null && message.hasOwnProperty("javaPackage")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.javaPackage); + if (message.javaOuterClassname != null && message.hasOwnProperty("javaOuterClassname")) + writer.uint32(/* id 8, wireType 2 =*/66).string(message.javaOuterClassname); + if (message.optimizeFor != null && message.hasOwnProperty("optimizeFor")) + writer.uint32(/* id 9, wireType 0 =*/72).uint32(message.optimizeFor); + if (message.javaMultipleFiles != null && message.hasOwnProperty("javaMultipleFiles")) + writer.uint32(/* id 10, wireType 0 =*/80).bool(message.javaMultipleFiles); + if (message.goPackage != null && message.hasOwnProperty("goPackage")) + writer.uint32(/* id 11, wireType 2 =*/90).string(message.goPackage); + if (message.ccGenericServices != null && message.hasOwnProperty("ccGenericServices")) + writer.uint32(/* id 16, wireType 0 =*/128).bool(message.ccGenericServices); + if (message.javaGenericServices != null && message.hasOwnProperty("javaGenericServices")) + writer.uint32(/* id 17, wireType 0 =*/136).bool(message.javaGenericServices); + if (message.pyGenericServices != null && message.hasOwnProperty("pyGenericServices")) + writer.uint32(/* id 18, wireType 0 =*/144).bool(message.pyGenericServices); + if (message.javaGenerateEqualsAndHash != null && message.hasOwnProperty("javaGenerateEqualsAndHash")) + writer.uint32(/* id 20, wireType 0 =*/160).bool(message.javaGenerateEqualsAndHash); + if (message.deprecated != null && message.hasOwnProperty("deprecated")) + writer.uint32(/* id 23, wireType 0 =*/184).bool(message.deprecated); + if (message.javaStringCheckUtf8 != null && message.hasOwnProperty("javaStringCheckUtf8")) + writer.uint32(/* id 27, wireType 0 =*/216).bool(message.javaStringCheckUtf8); + if (message.ccEnableArenas != null && message.hasOwnProperty("ccEnableArenas")) + writer.uint32(/* id 31, wireType 0 =*/248).bool(message.ccEnableArenas); + if (message.objcClassPrefix != null && message.hasOwnProperty("objcClassPrefix")) + writer.uint32(/* id 36, wireType 2 =*/290).string(message.objcClassPrefix); + if (message.csharpNamespace != null && message.hasOwnProperty("csharpNamespace")) + writer.uint32(/* id 37, wireType 2 =*/298).string(message.csharpNamespace); + if (message.uninterpretedOption != null && message.uninterpretedOption.length) + for (var i = 0; i < message.uninterpretedOption.length; ++i) + $root.google.protobuf.UninterpretedOption.encode(message.uninterpretedOption[i], writer.uint32(/* id 999, wireType 2 =*/7994).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified FileOptions message, length delimited. Does not implicitly {@link google.protobuf.FileOptions.verify|verify} messages. + * @param {google.protobuf.FileOptions$Properties} message FileOptions message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + FileOptions.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a FileOptions message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.FileOptions} FileOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + FileOptions.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.FileOptions(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.javaPackage = reader.string(); + break; + case 8: + message.javaOuterClassname = reader.string(); + break; + case 10: + message.javaMultipleFiles = reader.bool(); + break; + case 20: + message.javaGenerateEqualsAndHash = reader.bool(); + break; + case 27: + message.javaStringCheckUtf8 = reader.bool(); + break; + case 9: + message.optimizeFor = reader.uint32(); + break; + case 11: + message.goPackage = reader.string(); + break; + case 16: + message.ccGenericServices = reader.bool(); + break; + case 17: + message.javaGenericServices = reader.bool(); + break; + case 18: + message.pyGenericServices = reader.bool(); + break; + case 23: + message.deprecated = reader.bool(); + break; + case 31: + message.ccEnableArenas = reader.bool(); + break; + case 36: + message.objcClassPrefix = reader.string(); + break; + case 37: + message.csharpNamespace = reader.string(); + break; + case 999: + if (!(message.uninterpretedOption && message.uninterpretedOption.length)) + message.uninterpretedOption = []; + message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32())); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a FileOptions message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.FileOptions} FileOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + FileOptions.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a FileOptions message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + FileOptions.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.javaPackage != null && message.hasOwnProperty("javaPackage")) + if (!$util.isString(message.javaPackage)) + return "javaPackage: string expected"; + if (message.javaOuterClassname != null && message.hasOwnProperty("javaOuterClassname")) + if (!$util.isString(message.javaOuterClassname)) + return "javaOuterClassname: string expected"; + if (message.javaMultipleFiles != null && message.hasOwnProperty("javaMultipleFiles")) + if (typeof message.javaMultipleFiles !== "boolean") + return "javaMultipleFiles: boolean expected"; + if (message.javaGenerateEqualsAndHash != null && message.hasOwnProperty("javaGenerateEqualsAndHash")) + if (typeof message.javaGenerateEqualsAndHash !== "boolean") + return "javaGenerateEqualsAndHash: boolean expected"; + if (message.javaStringCheckUtf8 != null && message.hasOwnProperty("javaStringCheckUtf8")) + if (typeof message.javaStringCheckUtf8 !== "boolean") + return "javaStringCheckUtf8: boolean expected"; + if (message.optimizeFor != null && message.hasOwnProperty("optimizeFor")) + switch (message.optimizeFor) { + default: + return "optimizeFor: enum value expected"; + case 1: + case 2: + case 3: + break; + } + if (message.goPackage != null && message.hasOwnProperty("goPackage")) + if (!$util.isString(message.goPackage)) + return "goPackage: string expected"; + if (message.ccGenericServices != null && message.hasOwnProperty("ccGenericServices")) + if (typeof message.ccGenericServices !== "boolean") + return "ccGenericServices: boolean expected"; + if (message.javaGenericServices != null && message.hasOwnProperty("javaGenericServices")) + if (typeof message.javaGenericServices !== "boolean") + return "javaGenericServices: boolean expected"; + if (message.pyGenericServices != null && message.hasOwnProperty("pyGenericServices")) + if (typeof message.pyGenericServices !== "boolean") + return "pyGenericServices: boolean expected"; + if (message.deprecated != null && message.hasOwnProperty("deprecated")) + if (typeof message.deprecated !== "boolean") + return "deprecated: boolean expected"; + if (message.ccEnableArenas != null && message.hasOwnProperty("ccEnableArenas")) + if (typeof message.ccEnableArenas !== "boolean") + return "ccEnableArenas: boolean expected"; + if (message.objcClassPrefix != null && message.hasOwnProperty("objcClassPrefix")) + if (!$util.isString(message.objcClassPrefix)) + return "objcClassPrefix: string expected"; + if (message.csharpNamespace != null && message.hasOwnProperty("csharpNamespace")) + if (!$util.isString(message.csharpNamespace)) + return "csharpNamespace: string expected"; + if (message.uninterpretedOption != null && message.hasOwnProperty("uninterpretedOption")) { + if (!Array.isArray(message.uninterpretedOption)) + return "uninterpretedOption: array expected"; + for (var i = 0; i < message.uninterpretedOption.length; ++i) { + var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i]); + if (error) + return "uninterpretedOption." + error; + } + } + return null; + }; + + /** + * Creates a FileOptions message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {google.protobuf.FileOptions} FileOptions + */ + FileOptions.fromObject = function fromObject(object) { + if (object instanceof $root.google.protobuf.FileOptions) + return object; + var message = new $root.google.protobuf.FileOptions(); + if (object.javaPackage != null) + message.javaPackage = String(object.javaPackage); + if (object.javaOuterClassname != null) + message.javaOuterClassname = String(object.javaOuterClassname); + if (object.javaMultipleFiles != null) + message.javaMultipleFiles = Boolean(object.javaMultipleFiles); + if (object.javaGenerateEqualsAndHash != null) + message.javaGenerateEqualsAndHash = Boolean(object.javaGenerateEqualsAndHash); + if (object.javaStringCheckUtf8 != null) + message.javaStringCheckUtf8 = Boolean(object.javaStringCheckUtf8); + switch (object.optimizeFor) { + case "SPEED": + case 1: + message.optimizeFor = 1; + break; + case "CODE_SIZE": + case 2: + message.optimizeFor = 2; + break; + case "LITE_RUNTIME": + case 3: + message.optimizeFor = 3; + break; + } + if (object.goPackage != null) + message.goPackage = String(object.goPackage); + if (object.ccGenericServices != null) + message.ccGenericServices = Boolean(object.ccGenericServices); + if (object.javaGenericServices != null) + message.javaGenericServices = Boolean(object.javaGenericServices); + if (object.pyGenericServices != null) + message.pyGenericServices = Boolean(object.pyGenericServices); + if (object.deprecated != null) + message.deprecated = Boolean(object.deprecated); + if (object.ccEnableArenas != null) + message.ccEnableArenas = Boolean(object.ccEnableArenas); + if (object.objcClassPrefix != null) + message.objcClassPrefix = String(object.objcClassPrefix); + if (object.csharpNamespace != null) + message.csharpNamespace = String(object.csharpNamespace); + if (object.uninterpretedOption) { + if (!Array.isArray(object.uninterpretedOption)) + throw TypeError(".google.protobuf.FileOptions.uninterpretedOption: array expected"); + message.uninterpretedOption = []; + for (var i = 0; i < object.uninterpretedOption.length; ++i) { + if (typeof object.uninterpretedOption[i] !== "object") + throw TypeError(".google.protobuf.FileOptions.uninterpretedOption: object expected"); + message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i]); + } + } + return message; + }; + + /** + * Creates a FileOptions message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link google.protobuf.FileOptions.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {google.protobuf.FileOptions} FileOptions + */ + FileOptions.from = FileOptions.fromObject; + + /** + * Creates a plain object from a FileOptions message. Also converts values to other types if specified. + * @param {google.protobuf.FileOptions} message FileOptions + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + FileOptions.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.uninterpretedOption = []; + if (options.defaults) { + object.javaPackage = ""; + object.javaOuterClassname = ""; + object.optimizeFor = options.enums === String ? "SPEED" : 1; + object.javaMultipleFiles = false; + object.goPackage = ""; + object.ccGenericServices = false; + object.javaGenericServices = false; + object.pyGenericServices = false; + object.javaGenerateEqualsAndHash = false; + object.deprecated = false; + object.javaStringCheckUtf8 = false; + object.ccEnableArenas = false; + object.objcClassPrefix = ""; + object.csharpNamespace = ""; + } + if (message.javaPackage != null && message.hasOwnProperty("javaPackage")) + object.javaPackage = message.javaPackage; + if (message.javaOuterClassname != null && message.hasOwnProperty("javaOuterClassname")) + object.javaOuterClassname = message.javaOuterClassname; + if (message.optimizeFor != null && message.hasOwnProperty("optimizeFor")) + object.optimizeFor = options.enums === String ? $root.google.protobuf.FileOptions.OptimizeMode[message.optimizeFor] : message.optimizeFor; + if (message.javaMultipleFiles != null && message.hasOwnProperty("javaMultipleFiles")) + object.javaMultipleFiles = message.javaMultipleFiles; + if (message.goPackage != null && message.hasOwnProperty("goPackage")) + object.goPackage = message.goPackage; + if (message.ccGenericServices != null && message.hasOwnProperty("ccGenericServices")) + object.ccGenericServices = message.ccGenericServices; + if (message.javaGenericServices != null && message.hasOwnProperty("javaGenericServices")) + object.javaGenericServices = message.javaGenericServices; + if (message.pyGenericServices != null && message.hasOwnProperty("pyGenericServices")) + object.pyGenericServices = message.pyGenericServices; + if (message.javaGenerateEqualsAndHash != null && message.hasOwnProperty("javaGenerateEqualsAndHash")) + object.javaGenerateEqualsAndHash = message.javaGenerateEqualsAndHash; + if (message.deprecated != null && message.hasOwnProperty("deprecated")) + object.deprecated = message.deprecated; + if (message.javaStringCheckUtf8 != null && message.hasOwnProperty("javaStringCheckUtf8")) + object.javaStringCheckUtf8 = message.javaStringCheckUtf8; + if (message.ccEnableArenas != null && message.hasOwnProperty("ccEnableArenas")) + object.ccEnableArenas = message.ccEnableArenas; + if (message.objcClassPrefix != null && message.hasOwnProperty("objcClassPrefix")) + object.objcClassPrefix = message.objcClassPrefix; + if (message.csharpNamespace != null && message.hasOwnProperty("csharpNamespace")) + object.csharpNamespace = message.csharpNamespace; + if (message.uninterpretedOption && message.uninterpretedOption.length) { + object.uninterpretedOption = []; + for (var j = 0; j < message.uninterpretedOption.length; ++j) + object.uninterpretedOption[j] = $root.google.protobuf.UninterpretedOption.toObject(message.uninterpretedOption[j], options); + } + return object; + }; + + /** + * Creates a plain object from this FileOptions message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + FileOptions.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this FileOptions to JSON. + * @returns {Object.} JSON object + */ + FileOptions.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * OptimizeMode enum. + * @name OptimizeMode + * @memberof google.protobuf.FileOptions + * @enum {number} + * @property {number} SPEED=1 SPEED value + * @property {number} CODE_SIZE=2 CODE_SIZE value + * @property {number} LITE_RUNTIME=3 LITE_RUNTIME value + */ + FileOptions.OptimizeMode = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[1] = "SPEED"] = 1; + values[valuesById[2] = "CODE_SIZE"] = 2; + values[valuesById[3] = "LITE_RUNTIME"] = 3; + return values; + })(); + + return FileOptions; + })(); + + protobuf.MessageOptions = (function() { + + /** + * Properties of a MessageOptions. + * @typedef google.protobuf.MessageOptions$Properties + * @type {Object} + * @property {boolean} [messageSetWireFormat] MessageOptions messageSetWireFormat. + * @property {boolean} [noStandardDescriptorAccessor] MessageOptions noStandardDescriptorAccessor. + * @property {boolean} [deprecated] MessageOptions deprecated. + * @property {boolean} [mapEntry] MessageOptions mapEntry. + * @property {Array.} [uninterpretedOption] MessageOptions uninterpretedOption. + */ + + /** + * Constructs a new MessageOptions. + * @exports google.protobuf.MessageOptions + * @constructor + * @param {google.protobuf.MessageOptions$Properties=} [properties] Properties to set + */ + function MessageOptions(properties) { + this.uninterpretedOption = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * MessageOptions messageSetWireFormat. + * @type {boolean} + */ + MessageOptions.prototype.messageSetWireFormat = false; + + /** + * MessageOptions noStandardDescriptorAccessor. + * @type {boolean} + */ + MessageOptions.prototype.noStandardDescriptorAccessor = false; + + /** + * MessageOptions deprecated. + * @type {boolean} + */ + MessageOptions.prototype.deprecated = false; + + /** + * MessageOptions mapEntry. + * @type {boolean} + */ + MessageOptions.prototype.mapEntry = false; + + /** + * MessageOptions uninterpretedOption. + * @type {Array.} + */ + MessageOptions.prototype.uninterpretedOption = $util.emptyArray; + + /** + * Creates a new MessageOptions instance using the specified properties. + * @param {google.protobuf.MessageOptions$Properties=} [properties] Properties to set + * @returns {google.protobuf.MessageOptions} MessageOptions instance + */ + MessageOptions.create = function create(properties) { + return new MessageOptions(properties); + }; + + /** + * Encodes the specified MessageOptions message. Does not implicitly {@link google.protobuf.MessageOptions.verify|verify} messages. + * @param {google.protobuf.MessageOptions$Properties} message MessageOptions message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + MessageOptions.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.messageSetWireFormat != null && message.hasOwnProperty("messageSetWireFormat")) + writer.uint32(/* id 1, wireType 0 =*/8).bool(message.messageSetWireFormat); + if (message.noStandardDescriptorAccessor != null && message.hasOwnProperty("noStandardDescriptorAccessor")) + writer.uint32(/* id 2, wireType 0 =*/16).bool(message.noStandardDescriptorAccessor); + if (message.deprecated != null && message.hasOwnProperty("deprecated")) + writer.uint32(/* id 3, wireType 0 =*/24).bool(message.deprecated); + if (message.mapEntry != null && message.hasOwnProperty("mapEntry")) + writer.uint32(/* id 7, wireType 0 =*/56).bool(message.mapEntry); + if (message.uninterpretedOption != null && message.uninterpretedOption.length) + for (var i = 0; i < message.uninterpretedOption.length; ++i) + $root.google.protobuf.UninterpretedOption.encode(message.uninterpretedOption[i], writer.uint32(/* id 999, wireType 2 =*/7994).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified MessageOptions message, length delimited. Does not implicitly {@link google.protobuf.MessageOptions.verify|verify} messages. + * @param {google.protobuf.MessageOptions$Properties} message MessageOptions message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + MessageOptions.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a MessageOptions message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.MessageOptions} MessageOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + MessageOptions.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.MessageOptions(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.messageSetWireFormat = reader.bool(); + break; + case 2: + message.noStandardDescriptorAccessor = reader.bool(); + break; + case 3: + message.deprecated = reader.bool(); + break; + case 7: + message.mapEntry = reader.bool(); + break; + case 999: + if (!(message.uninterpretedOption && message.uninterpretedOption.length)) + message.uninterpretedOption = []; + message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32())); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a MessageOptions message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.MessageOptions} MessageOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + MessageOptions.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a MessageOptions message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + MessageOptions.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.messageSetWireFormat != null && message.hasOwnProperty("messageSetWireFormat")) + if (typeof message.messageSetWireFormat !== "boolean") + return "messageSetWireFormat: boolean expected"; + if (message.noStandardDescriptorAccessor != null && message.hasOwnProperty("noStandardDescriptorAccessor")) + if (typeof message.noStandardDescriptorAccessor !== "boolean") + return "noStandardDescriptorAccessor: boolean expected"; + if (message.deprecated != null && message.hasOwnProperty("deprecated")) + if (typeof message.deprecated !== "boolean") + return "deprecated: boolean expected"; + if (message.mapEntry != null && message.hasOwnProperty("mapEntry")) + if (typeof message.mapEntry !== "boolean") + return "mapEntry: boolean expected"; + if (message.uninterpretedOption != null && message.hasOwnProperty("uninterpretedOption")) { + if (!Array.isArray(message.uninterpretedOption)) + return "uninterpretedOption: array expected"; + for (var i = 0; i < message.uninterpretedOption.length; ++i) { + var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i]); + if (error) + return "uninterpretedOption." + error; + } + } + return null; + }; + + /** + * Creates a MessageOptions message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {google.protobuf.MessageOptions} MessageOptions + */ + MessageOptions.fromObject = function fromObject(object) { + if (object instanceof $root.google.protobuf.MessageOptions) + return object; + var message = new $root.google.protobuf.MessageOptions(); + if (object.messageSetWireFormat != null) + message.messageSetWireFormat = Boolean(object.messageSetWireFormat); + if (object.noStandardDescriptorAccessor != null) + message.noStandardDescriptorAccessor = Boolean(object.noStandardDescriptorAccessor); + if (object.deprecated != null) + message.deprecated = Boolean(object.deprecated); + if (object.mapEntry != null) + message.mapEntry = Boolean(object.mapEntry); + if (object.uninterpretedOption) { + if (!Array.isArray(object.uninterpretedOption)) + throw TypeError(".google.protobuf.MessageOptions.uninterpretedOption: array expected"); + message.uninterpretedOption = []; + for (var i = 0; i < object.uninterpretedOption.length; ++i) { + if (typeof object.uninterpretedOption[i] !== "object") + throw TypeError(".google.protobuf.MessageOptions.uninterpretedOption: object expected"); + message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i]); + } + } + return message; + }; + + /** + * Creates a MessageOptions message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link google.protobuf.MessageOptions.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {google.protobuf.MessageOptions} MessageOptions + */ + MessageOptions.from = MessageOptions.fromObject; + + /** + * Creates a plain object from a MessageOptions message. Also converts values to other types if specified. + * @param {google.protobuf.MessageOptions} message MessageOptions + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + MessageOptions.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.uninterpretedOption = []; + if (options.defaults) { + object.messageSetWireFormat = false; + object.noStandardDescriptorAccessor = false; + object.deprecated = false; + object.mapEntry = false; + } + if (message.messageSetWireFormat != null && message.hasOwnProperty("messageSetWireFormat")) + object.messageSetWireFormat = message.messageSetWireFormat; + if (message.noStandardDescriptorAccessor != null && message.hasOwnProperty("noStandardDescriptorAccessor")) + object.noStandardDescriptorAccessor = message.noStandardDescriptorAccessor; + if (message.deprecated != null && message.hasOwnProperty("deprecated")) + object.deprecated = message.deprecated; + if (message.mapEntry != null && message.hasOwnProperty("mapEntry")) + object.mapEntry = message.mapEntry; + if (message.uninterpretedOption && message.uninterpretedOption.length) { + object.uninterpretedOption = []; + for (var j = 0; j < message.uninterpretedOption.length; ++j) + object.uninterpretedOption[j] = $root.google.protobuf.UninterpretedOption.toObject(message.uninterpretedOption[j], options); + } + return object; + }; + + /** + * Creates a plain object from this MessageOptions message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + MessageOptions.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this MessageOptions to JSON. + * @returns {Object.} JSON object + */ + MessageOptions.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return MessageOptions; + })(); + + protobuf.FieldOptions = (function() { + + /** + * Properties of a FieldOptions. + * @typedef google.protobuf.FieldOptions$Properties + * @type {Object} + * @property {google.protobuf.FieldOptions.CType} [ctype] FieldOptions ctype. + * @property {boolean} [packed] FieldOptions packed. + * @property {google.protobuf.FieldOptions.JSType} [jstype] FieldOptions jstype. + * @property {boolean} [lazy] FieldOptions lazy. + * @property {boolean} [deprecated] FieldOptions deprecated. + * @property {boolean} [weak] FieldOptions weak. + * @property {Array.} [uninterpretedOption] FieldOptions uninterpretedOption. + * @property {PointerType} [".pointer"] FieldOptions .pointer. + * @property {number} [".arraySize"] FieldOptions .arraySize. + */ + + /** + * Constructs a new FieldOptions. + * @exports google.protobuf.FieldOptions + * @constructor + * @param {google.protobuf.FieldOptions$Properties=} [properties] Properties to set + */ + function FieldOptions(properties) { + this.uninterpretedOption = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * FieldOptions ctype. + * @type {google.protobuf.FieldOptions.CType} + */ + FieldOptions.prototype.ctype = 0; + + /** + * FieldOptions packed. + * @type {boolean} + */ + FieldOptions.prototype.packed = false; + + /** + * FieldOptions jstype. + * @type {google.protobuf.FieldOptions.JSType} + */ + FieldOptions.prototype.jstype = 0; + + /** + * FieldOptions lazy. + * @type {boolean} + */ + FieldOptions.prototype.lazy = false; + + /** + * FieldOptions deprecated. + * @type {boolean} + */ + FieldOptions.prototype.deprecated = false; + + /** + * FieldOptions weak. + * @type {boolean} + */ + FieldOptions.prototype.weak = false; + + /** + * FieldOptions uninterpretedOption. + * @type {Array.} + */ + FieldOptions.prototype.uninterpretedOption = $util.emptyArray; + + /** + * FieldOptions .pointer. + * @type {PointerType} + */ + FieldOptions.prototype[".pointer"] = 0; + + /** + * FieldOptions .arraySize. + * @type {number} + */ + FieldOptions.prototype[".arraySize"] = 0; + + /** + * Creates a new FieldOptions instance using the specified properties. + * @param {google.protobuf.FieldOptions$Properties=} [properties] Properties to set + * @returns {google.protobuf.FieldOptions} FieldOptions instance + */ + FieldOptions.create = function create(properties) { + return new FieldOptions(properties); + }; + + /** + * Encodes the specified FieldOptions message. Does not implicitly {@link google.protobuf.FieldOptions.verify|verify} messages. + * @param {google.protobuf.FieldOptions$Properties} message FieldOptions message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + FieldOptions.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.ctype != null && message.hasOwnProperty("ctype")) + writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.ctype); + if (message.packed != null && message.hasOwnProperty("packed")) + writer.uint32(/* id 2, wireType 0 =*/16).bool(message.packed); + if (message.deprecated != null && message.hasOwnProperty("deprecated")) + writer.uint32(/* id 3, wireType 0 =*/24).bool(message.deprecated); + if (message.lazy != null && message.hasOwnProperty("lazy")) + writer.uint32(/* id 5, wireType 0 =*/40).bool(message.lazy); + if (message.jstype != null && message.hasOwnProperty("jstype")) + writer.uint32(/* id 6, wireType 0 =*/48).uint32(message.jstype); + if (message.weak != null && message.hasOwnProperty("weak")) + writer.uint32(/* id 10, wireType 0 =*/80).bool(message.weak); + if (message.uninterpretedOption != null && message.uninterpretedOption.length) + for (var i = 0; i < message.uninterpretedOption.length; ++i) + $root.google.protobuf.UninterpretedOption.encode(message.uninterpretedOption[i], writer.uint32(/* id 999, wireType 2 =*/7994).fork()).ldelim(); + if (message[".pointer"] != null && message.hasOwnProperty(".pointer")) + writer.uint32(/* id 50000, wireType 0 =*/400000).uint32(message[".pointer"]); + if (message[".arraySize"] != null && message.hasOwnProperty(".arraySize")) + writer.uint32(/* id 50001, wireType 0 =*/400008).uint32(message[".arraySize"]); + return writer; + }; + + /** + * Encodes the specified FieldOptions message, length delimited. Does not implicitly {@link google.protobuf.FieldOptions.verify|verify} messages. + * @param {google.protobuf.FieldOptions$Properties} message FieldOptions message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + FieldOptions.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a FieldOptions message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.FieldOptions} FieldOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + FieldOptions.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.FieldOptions(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.ctype = reader.uint32(); + break; + case 2: + message.packed = reader.bool(); + break; + case 6: + message.jstype = reader.uint32(); + break; + case 5: + message.lazy = reader.bool(); + break; + case 3: + message.deprecated = reader.bool(); + break; + case 10: + message.weak = reader.bool(); + break; + case 999: + if (!(message.uninterpretedOption && message.uninterpretedOption.length)) + message.uninterpretedOption = []; + message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32())); + break; + case 50000: + message[".pointer"] = reader.uint32(); + break; + case 50001: + message[".arraySize"] = reader.uint32(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a FieldOptions message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.FieldOptions} FieldOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + FieldOptions.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a FieldOptions message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + FieldOptions.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.ctype != null && message.hasOwnProperty("ctype")) + switch (message.ctype) { + default: + return "ctype: enum value expected"; + case 0: + case 1: + case 2: + break; + } + if (message.packed != null && message.hasOwnProperty("packed")) + if (typeof message.packed !== "boolean") + return "packed: boolean expected"; + if (message.jstype != null && message.hasOwnProperty("jstype")) + switch (message.jstype) { + default: + return "jstype: enum value expected"; + case 0: + case 1: + case 2: + break; + } + if (message.lazy != null && message.hasOwnProperty("lazy")) + if (typeof message.lazy !== "boolean") + return "lazy: boolean expected"; + if (message.deprecated != null && message.hasOwnProperty("deprecated")) + if (typeof message.deprecated !== "boolean") + return "deprecated: boolean expected"; + if (message.weak != null && message.hasOwnProperty("weak")) + if (typeof message.weak !== "boolean") + return "weak: boolean expected"; + if (message.uninterpretedOption != null && message.hasOwnProperty("uninterpretedOption")) { + if (!Array.isArray(message.uninterpretedOption)) + return "uninterpretedOption: array expected"; + for (var i = 0; i < message.uninterpretedOption.length; ++i) { + var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i]); + if (error) + return "uninterpretedOption." + error; + } + } + if (message[".pointer"] != null && message.hasOwnProperty(".pointer")) + switch (message[".pointer"]) { + default: + return ".pointer: enum value expected"; + case 0: + case 1: + case 2: + case 3: + break; + } + if (message[".arraySize"] != null && message.hasOwnProperty(".arraySize")) + if (!$util.isInteger(message[".arraySize"])) + return ".arraySize: integer expected"; + return null; + }; + + /** + * Creates a FieldOptions message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {google.protobuf.FieldOptions} FieldOptions + */ + FieldOptions.fromObject = function fromObject(object) { + if (object instanceof $root.google.protobuf.FieldOptions) + return object; + var message = new $root.google.protobuf.FieldOptions(); + switch (object.ctype) { + case "STRING": + case 0: + message.ctype = 0; + break; + case "CORD": + case 1: + message.ctype = 1; + break; + case "STRING_PIECE": + case 2: + message.ctype = 2; + break; + } + if (object.packed != null) + message.packed = Boolean(object.packed); + switch (object.jstype) { + case "JS_NORMAL": + case 0: + message.jstype = 0; + break; + case "JS_STRING": + case 1: + message.jstype = 1; + break; + case "JS_NUMBER": + case 2: + message.jstype = 2; + break; + } + if (object.lazy != null) + message.lazy = Boolean(object.lazy); + if (object.deprecated != null) + message.deprecated = Boolean(object.deprecated); + if (object.weak != null) + message.weak = Boolean(object.weak); + if (object.uninterpretedOption) { + if (!Array.isArray(object.uninterpretedOption)) + throw TypeError(".google.protobuf.FieldOptions.uninterpretedOption: array expected"); + message.uninterpretedOption = []; + for (var i = 0; i < object.uninterpretedOption.length; ++i) { + if (typeof object.uninterpretedOption[i] !== "object") + throw TypeError(".google.protobuf.FieldOptions.uninterpretedOption: object expected"); + message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i]); + } + } + switch (object[".pointer"]) { + case "NONE": + case 0: + message[".pointer"] = 0; + break; + case "RAW": + case 1: + message[".pointer"] = 1; + break; + case "SHARED": + case 2: + message[".pointer"] = 2; + break; + case "UNIQUE": + case 3: + message[".pointer"] = 3; + break; + } + if (object[".arraySize"] != null) + message[".arraySize"] = object[".arraySize"] >>> 0; + return message; + }; + + /** + * Creates a FieldOptions message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link google.protobuf.FieldOptions.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {google.protobuf.FieldOptions} FieldOptions + */ + FieldOptions.from = FieldOptions.fromObject; + + /** + * Creates a plain object from a FieldOptions message. Also converts values to other types if specified. + * @param {google.protobuf.FieldOptions} message FieldOptions + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + FieldOptions.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.uninterpretedOption = []; + if (options.defaults) { + object.ctype = options.enums === String ? "STRING" : 0; + object.packed = false; + object.deprecated = false; + object.lazy = false; + object.jstype = options.enums === String ? "JS_NORMAL" : 0; + object.weak = false; + object[".pointer"] = options.enums === String ? "NONE" : 0; + object[".arraySize"] = 0; + } + if (message.ctype != null && message.hasOwnProperty("ctype")) + object.ctype = options.enums === String ? $root.google.protobuf.FieldOptions.CType[message.ctype] : message.ctype; + if (message.packed != null && message.hasOwnProperty("packed")) + object.packed = message.packed; + if (message.deprecated != null && message.hasOwnProperty("deprecated")) + object.deprecated = message.deprecated; + if (message.lazy != null && message.hasOwnProperty("lazy")) + object.lazy = message.lazy; + if (message.jstype != null && message.hasOwnProperty("jstype")) + object.jstype = options.enums === String ? $root.google.protobuf.FieldOptions.JSType[message.jstype] : message.jstype; + if (message.weak != null && message.hasOwnProperty("weak")) + object.weak = message.weak; + if (message.uninterpretedOption && message.uninterpretedOption.length) { + object.uninterpretedOption = []; + for (var j = 0; j < message.uninterpretedOption.length; ++j) + object.uninterpretedOption[j] = $root.google.protobuf.UninterpretedOption.toObject(message.uninterpretedOption[j], options); + } + if (message[".pointer"] != null && message.hasOwnProperty(".pointer")) + object[".pointer"] = options.enums === String ? $root.PointerType[message[".pointer"]] : message[".pointer"]; + if (message[".arraySize"] != null && message.hasOwnProperty(".arraySize")) + object[".arraySize"] = message[".arraySize"]; + return object; + }; + + /** + * Creates a plain object from this FieldOptions message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + FieldOptions.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this FieldOptions to JSON. + * @returns {Object.} JSON object + */ + FieldOptions.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * CType enum. + * @name CType + * @memberof google.protobuf.FieldOptions + * @enum {number} + * @property {number} STRING=0 STRING value + * @property {number} CORD=1 CORD value + * @property {number} STRING_PIECE=2 STRING_PIECE value + */ + FieldOptions.CType = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "STRING"] = 0; + values[valuesById[1] = "CORD"] = 1; + values[valuesById[2] = "STRING_PIECE"] = 2; + return values; + })(); + + /** + * JSType enum. + * @name JSType + * @memberof google.protobuf.FieldOptions + * @enum {number} + * @property {number} JS_NORMAL=0 JS_NORMAL value + * @property {number} JS_STRING=1 JS_STRING value + * @property {number} JS_NUMBER=2 JS_NUMBER value + */ + FieldOptions.JSType = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "JS_NORMAL"] = 0; + values[valuesById[1] = "JS_STRING"] = 1; + values[valuesById[2] = "JS_NUMBER"] = 2; + return values; + })(); + + return FieldOptions; + })(); + + protobuf.OneofOptions = (function() { + + /** + * Properties of an OneofOptions. + * @typedef google.protobuf.OneofOptions$Properties + * @type {Object} + * @property {Array.} [uninterpretedOption] OneofOptions uninterpretedOption. + */ + + /** + * Constructs a new OneofOptions. + * @exports google.protobuf.OneofOptions + * @constructor + * @param {google.protobuf.OneofOptions$Properties=} [properties] Properties to set + */ + function OneofOptions(properties) { + this.uninterpretedOption = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * OneofOptions uninterpretedOption. + * @type {Array.} + */ + OneofOptions.prototype.uninterpretedOption = $util.emptyArray; + + /** + * Creates a new OneofOptions instance using the specified properties. + * @param {google.protobuf.OneofOptions$Properties=} [properties] Properties to set + * @returns {google.protobuf.OneofOptions} OneofOptions instance + */ + OneofOptions.create = function create(properties) { + return new OneofOptions(properties); + }; + + /** + * Encodes the specified OneofOptions message. Does not implicitly {@link google.protobuf.OneofOptions.verify|verify} messages. + * @param {google.protobuf.OneofOptions$Properties} message OneofOptions message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + OneofOptions.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.uninterpretedOption != null && message.uninterpretedOption.length) + for (var i = 0; i < message.uninterpretedOption.length; ++i) + $root.google.protobuf.UninterpretedOption.encode(message.uninterpretedOption[i], writer.uint32(/* id 999, wireType 2 =*/7994).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified OneofOptions message, length delimited. Does not implicitly {@link google.protobuf.OneofOptions.verify|verify} messages. + * @param {google.protobuf.OneofOptions$Properties} message OneofOptions message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + OneofOptions.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes an OneofOptions message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.OneofOptions} OneofOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + OneofOptions.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.OneofOptions(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 999: + if (!(message.uninterpretedOption && message.uninterpretedOption.length)) + message.uninterpretedOption = []; + message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32())); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes an OneofOptions message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.OneofOptions} OneofOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + OneofOptions.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies an OneofOptions message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + OneofOptions.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.uninterpretedOption != null && message.hasOwnProperty("uninterpretedOption")) { + if (!Array.isArray(message.uninterpretedOption)) + return "uninterpretedOption: array expected"; + for (var i = 0; i < message.uninterpretedOption.length; ++i) { + var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i]); + if (error) + return "uninterpretedOption." + error; + } + } + return null; + }; + + /** + * Creates an OneofOptions message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {google.protobuf.OneofOptions} OneofOptions + */ + OneofOptions.fromObject = function fromObject(object) { + if (object instanceof $root.google.protobuf.OneofOptions) + return object; + var message = new $root.google.protobuf.OneofOptions(); + if (object.uninterpretedOption) { + if (!Array.isArray(object.uninterpretedOption)) + throw TypeError(".google.protobuf.OneofOptions.uninterpretedOption: array expected"); + message.uninterpretedOption = []; + for (var i = 0; i < object.uninterpretedOption.length; ++i) { + if (typeof object.uninterpretedOption[i] !== "object") + throw TypeError(".google.protobuf.OneofOptions.uninterpretedOption: object expected"); + message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i]); + } + } + return message; + }; + + /** + * Creates an OneofOptions message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link google.protobuf.OneofOptions.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {google.protobuf.OneofOptions} OneofOptions + */ + OneofOptions.from = OneofOptions.fromObject; + + /** + * Creates a plain object from an OneofOptions message. Also converts values to other types if specified. + * @param {google.protobuf.OneofOptions} message OneofOptions + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + OneofOptions.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.uninterpretedOption = []; + if (message.uninterpretedOption && message.uninterpretedOption.length) { + object.uninterpretedOption = []; + for (var j = 0; j < message.uninterpretedOption.length; ++j) + object.uninterpretedOption[j] = $root.google.protobuf.UninterpretedOption.toObject(message.uninterpretedOption[j], options); + } + return object; + }; + + /** + * Creates a plain object from this OneofOptions message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + OneofOptions.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this OneofOptions to JSON. + * @returns {Object.} JSON object + */ + OneofOptions.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return OneofOptions; + })(); + + protobuf.EnumOptions = (function() { + + /** + * Properties of an EnumOptions. + * @typedef google.protobuf.EnumOptions$Properties + * @type {Object} + * @property {boolean} [allowAlias] EnumOptions allowAlias. + * @property {boolean} [deprecated] EnumOptions deprecated. + * @property {Array.} [uninterpretedOption] EnumOptions uninterpretedOption. + */ + + /** + * Constructs a new EnumOptions. + * @exports google.protobuf.EnumOptions + * @constructor + * @param {google.protobuf.EnumOptions$Properties=} [properties] Properties to set + */ + function EnumOptions(properties) { + this.uninterpretedOption = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * EnumOptions allowAlias. + * @type {boolean} + */ + EnumOptions.prototype.allowAlias = false; + + /** + * EnumOptions deprecated. + * @type {boolean} + */ + EnumOptions.prototype.deprecated = false; + + /** + * EnumOptions uninterpretedOption. + * @type {Array.} + */ + EnumOptions.prototype.uninterpretedOption = $util.emptyArray; + + /** + * Creates a new EnumOptions instance using the specified properties. + * @param {google.protobuf.EnumOptions$Properties=} [properties] Properties to set + * @returns {google.protobuf.EnumOptions} EnumOptions instance + */ + EnumOptions.create = function create(properties) { + return new EnumOptions(properties); + }; + + /** + * Encodes the specified EnumOptions message. Does not implicitly {@link google.protobuf.EnumOptions.verify|verify} messages. + * @param {google.protobuf.EnumOptions$Properties} message EnumOptions message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + EnumOptions.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.allowAlias != null && message.hasOwnProperty("allowAlias")) + writer.uint32(/* id 2, wireType 0 =*/16).bool(message.allowAlias); + if (message.deprecated != null && message.hasOwnProperty("deprecated")) + writer.uint32(/* id 3, wireType 0 =*/24).bool(message.deprecated); + if (message.uninterpretedOption != null && message.uninterpretedOption.length) + for (var i = 0; i < message.uninterpretedOption.length; ++i) + $root.google.protobuf.UninterpretedOption.encode(message.uninterpretedOption[i], writer.uint32(/* id 999, wireType 2 =*/7994).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified EnumOptions message, length delimited. Does not implicitly {@link google.protobuf.EnumOptions.verify|verify} messages. + * @param {google.protobuf.EnumOptions$Properties} message EnumOptions message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + EnumOptions.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes an EnumOptions message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.EnumOptions} EnumOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + EnumOptions.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.EnumOptions(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 2: + message.allowAlias = reader.bool(); + break; + case 3: + message.deprecated = reader.bool(); + break; + case 999: + if (!(message.uninterpretedOption && message.uninterpretedOption.length)) + message.uninterpretedOption = []; + message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32())); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes an EnumOptions message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.EnumOptions} EnumOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + EnumOptions.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies an EnumOptions message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + EnumOptions.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.allowAlias != null && message.hasOwnProperty("allowAlias")) + if (typeof message.allowAlias !== "boolean") + return "allowAlias: boolean expected"; + if (message.deprecated != null && message.hasOwnProperty("deprecated")) + if (typeof message.deprecated !== "boolean") + return "deprecated: boolean expected"; + if (message.uninterpretedOption != null && message.hasOwnProperty("uninterpretedOption")) { + if (!Array.isArray(message.uninterpretedOption)) + return "uninterpretedOption: array expected"; + for (var i = 0; i < message.uninterpretedOption.length; ++i) { + var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i]); + if (error) + return "uninterpretedOption." + error; + } + } + return null; + }; + + /** + * Creates an EnumOptions message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {google.protobuf.EnumOptions} EnumOptions + */ + EnumOptions.fromObject = function fromObject(object) { + if (object instanceof $root.google.protobuf.EnumOptions) + return object; + var message = new $root.google.protobuf.EnumOptions(); + if (object.allowAlias != null) + message.allowAlias = Boolean(object.allowAlias); + if (object.deprecated != null) + message.deprecated = Boolean(object.deprecated); + if (object.uninterpretedOption) { + if (!Array.isArray(object.uninterpretedOption)) + throw TypeError(".google.protobuf.EnumOptions.uninterpretedOption: array expected"); + message.uninterpretedOption = []; + for (var i = 0; i < object.uninterpretedOption.length; ++i) { + if (typeof object.uninterpretedOption[i] !== "object") + throw TypeError(".google.protobuf.EnumOptions.uninterpretedOption: object expected"); + message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i]); + } + } + return message; + }; + + /** + * Creates an EnumOptions message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link google.protobuf.EnumOptions.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {google.protobuf.EnumOptions} EnumOptions + */ + EnumOptions.from = EnumOptions.fromObject; + + /** + * Creates a plain object from an EnumOptions message. Also converts values to other types if specified. + * @param {google.protobuf.EnumOptions} message EnumOptions + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + EnumOptions.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.uninterpretedOption = []; + if (options.defaults) { + object.allowAlias = false; + object.deprecated = false; + } + if (message.allowAlias != null && message.hasOwnProperty("allowAlias")) + object.allowAlias = message.allowAlias; + if (message.deprecated != null && message.hasOwnProperty("deprecated")) + object.deprecated = message.deprecated; + if (message.uninterpretedOption && message.uninterpretedOption.length) { + object.uninterpretedOption = []; + for (var j = 0; j < message.uninterpretedOption.length; ++j) + object.uninterpretedOption[j] = $root.google.protobuf.UninterpretedOption.toObject(message.uninterpretedOption[j], options); + } + return object; + }; + + /** + * Creates a plain object from this EnumOptions message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + EnumOptions.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this EnumOptions to JSON. + * @returns {Object.} JSON object + */ + EnumOptions.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return EnumOptions; + })(); + + protobuf.EnumValueOptions = (function() { + + /** + * Properties of an EnumValueOptions. + * @typedef google.protobuf.EnumValueOptions$Properties + * @type {Object} + * @property {boolean} [deprecated] EnumValueOptions deprecated. + * @property {Array.} [uninterpretedOption] EnumValueOptions uninterpretedOption. + */ + + /** + * Constructs a new EnumValueOptions. + * @exports google.protobuf.EnumValueOptions + * @constructor + * @param {google.protobuf.EnumValueOptions$Properties=} [properties] Properties to set + */ + function EnumValueOptions(properties) { + this.uninterpretedOption = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * EnumValueOptions deprecated. + * @type {boolean} + */ + EnumValueOptions.prototype.deprecated = false; + + /** + * EnumValueOptions uninterpretedOption. + * @type {Array.} + */ + EnumValueOptions.prototype.uninterpretedOption = $util.emptyArray; + + /** + * Creates a new EnumValueOptions instance using the specified properties. + * @param {google.protobuf.EnumValueOptions$Properties=} [properties] Properties to set + * @returns {google.protobuf.EnumValueOptions} EnumValueOptions instance + */ + EnumValueOptions.create = function create(properties) { + return new EnumValueOptions(properties); + }; + + /** + * Encodes the specified EnumValueOptions message. Does not implicitly {@link google.protobuf.EnumValueOptions.verify|verify} messages. + * @param {google.protobuf.EnumValueOptions$Properties} message EnumValueOptions message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + EnumValueOptions.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.deprecated != null && message.hasOwnProperty("deprecated")) + writer.uint32(/* id 1, wireType 0 =*/8).bool(message.deprecated); + if (message.uninterpretedOption != null && message.uninterpretedOption.length) + for (var i = 0; i < message.uninterpretedOption.length; ++i) + $root.google.protobuf.UninterpretedOption.encode(message.uninterpretedOption[i], writer.uint32(/* id 999, wireType 2 =*/7994).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified EnumValueOptions message, length delimited. Does not implicitly {@link google.protobuf.EnumValueOptions.verify|verify} messages. + * @param {google.protobuf.EnumValueOptions$Properties} message EnumValueOptions message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + EnumValueOptions.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes an EnumValueOptions message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.EnumValueOptions} EnumValueOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + EnumValueOptions.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.EnumValueOptions(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.deprecated = reader.bool(); + break; + case 999: + if (!(message.uninterpretedOption && message.uninterpretedOption.length)) + message.uninterpretedOption = []; + message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32())); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes an EnumValueOptions message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.EnumValueOptions} EnumValueOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + EnumValueOptions.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies an EnumValueOptions message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + EnumValueOptions.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.deprecated != null && message.hasOwnProperty("deprecated")) + if (typeof message.deprecated !== "boolean") + return "deprecated: boolean expected"; + if (message.uninterpretedOption != null && message.hasOwnProperty("uninterpretedOption")) { + if (!Array.isArray(message.uninterpretedOption)) + return "uninterpretedOption: array expected"; + for (var i = 0; i < message.uninterpretedOption.length; ++i) { + var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i]); + if (error) + return "uninterpretedOption." + error; + } + } + return null; + }; + + /** + * Creates an EnumValueOptions message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {google.protobuf.EnumValueOptions} EnumValueOptions + */ + EnumValueOptions.fromObject = function fromObject(object) { + if (object instanceof $root.google.protobuf.EnumValueOptions) + return object; + var message = new $root.google.protobuf.EnumValueOptions(); + if (object.deprecated != null) + message.deprecated = Boolean(object.deprecated); + if (object.uninterpretedOption) { + if (!Array.isArray(object.uninterpretedOption)) + throw TypeError(".google.protobuf.EnumValueOptions.uninterpretedOption: array expected"); + message.uninterpretedOption = []; + for (var i = 0; i < object.uninterpretedOption.length; ++i) { + if (typeof object.uninterpretedOption[i] !== "object") + throw TypeError(".google.protobuf.EnumValueOptions.uninterpretedOption: object expected"); + message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i]); + } + } + return message; + }; + + /** + * Creates an EnumValueOptions message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link google.protobuf.EnumValueOptions.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {google.protobuf.EnumValueOptions} EnumValueOptions + */ + EnumValueOptions.from = EnumValueOptions.fromObject; + + /** + * Creates a plain object from an EnumValueOptions message. Also converts values to other types if specified. + * @param {google.protobuf.EnumValueOptions} message EnumValueOptions + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + EnumValueOptions.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.uninterpretedOption = []; + if (options.defaults) + object.deprecated = false; + if (message.deprecated != null && message.hasOwnProperty("deprecated")) + object.deprecated = message.deprecated; + if (message.uninterpretedOption && message.uninterpretedOption.length) { + object.uninterpretedOption = []; + for (var j = 0; j < message.uninterpretedOption.length; ++j) + object.uninterpretedOption[j] = $root.google.protobuf.UninterpretedOption.toObject(message.uninterpretedOption[j], options); + } + return object; + }; + + /** + * Creates a plain object from this EnumValueOptions message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + EnumValueOptions.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this EnumValueOptions to JSON. + * @returns {Object.} JSON object + */ + EnumValueOptions.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return EnumValueOptions; + })(); + + protobuf.ServiceOptions = (function() { + + /** + * Properties of a ServiceOptions. + * @typedef google.protobuf.ServiceOptions$Properties + * @type {Object} + * @property {boolean} [deprecated] ServiceOptions deprecated. + * @property {Array.} [uninterpretedOption] ServiceOptions uninterpretedOption. + */ + + /** + * Constructs a new ServiceOptions. + * @exports google.protobuf.ServiceOptions + * @constructor + * @param {google.protobuf.ServiceOptions$Properties=} [properties] Properties to set + */ + function ServiceOptions(properties) { + this.uninterpretedOption = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * ServiceOptions deprecated. + * @type {boolean} + */ + ServiceOptions.prototype.deprecated = false; + + /** + * ServiceOptions uninterpretedOption. + * @type {Array.} + */ + ServiceOptions.prototype.uninterpretedOption = $util.emptyArray; + + /** + * Creates a new ServiceOptions instance using the specified properties. + * @param {google.protobuf.ServiceOptions$Properties=} [properties] Properties to set + * @returns {google.protobuf.ServiceOptions} ServiceOptions instance + */ + ServiceOptions.create = function create(properties) { + return new ServiceOptions(properties); + }; + + /** + * Encodes the specified ServiceOptions message. Does not implicitly {@link google.protobuf.ServiceOptions.verify|verify} messages. + * @param {google.protobuf.ServiceOptions$Properties} message ServiceOptions message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ServiceOptions.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.deprecated != null && message.hasOwnProperty("deprecated")) + writer.uint32(/* id 33, wireType 0 =*/264).bool(message.deprecated); + if (message.uninterpretedOption != null && message.uninterpretedOption.length) + for (var i = 0; i < message.uninterpretedOption.length; ++i) + $root.google.protobuf.UninterpretedOption.encode(message.uninterpretedOption[i], writer.uint32(/* id 999, wireType 2 =*/7994).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified ServiceOptions message, length delimited. Does not implicitly {@link google.protobuf.ServiceOptions.verify|verify} messages. + * @param {google.protobuf.ServiceOptions$Properties} message ServiceOptions message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ServiceOptions.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a ServiceOptions message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.ServiceOptions} ServiceOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ServiceOptions.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.ServiceOptions(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 33: + message.deprecated = reader.bool(); + break; + case 999: + if (!(message.uninterpretedOption && message.uninterpretedOption.length)) + message.uninterpretedOption = []; + message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32())); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a ServiceOptions message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.ServiceOptions} ServiceOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ServiceOptions.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a ServiceOptions message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + ServiceOptions.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.deprecated != null && message.hasOwnProperty("deprecated")) + if (typeof message.deprecated !== "boolean") + return "deprecated: boolean expected"; + if (message.uninterpretedOption != null && message.hasOwnProperty("uninterpretedOption")) { + if (!Array.isArray(message.uninterpretedOption)) + return "uninterpretedOption: array expected"; + for (var i = 0; i < message.uninterpretedOption.length; ++i) { + var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i]); + if (error) + return "uninterpretedOption." + error; + } + } + return null; + }; + + /** + * Creates a ServiceOptions message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {google.protobuf.ServiceOptions} ServiceOptions + */ + ServiceOptions.fromObject = function fromObject(object) { + if (object instanceof $root.google.protobuf.ServiceOptions) + return object; + var message = new $root.google.protobuf.ServiceOptions(); + if (object.deprecated != null) + message.deprecated = Boolean(object.deprecated); + if (object.uninterpretedOption) { + if (!Array.isArray(object.uninterpretedOption)) + throw TypeError(".google.protobuf.ServiceOptions.uninterpretedOption: array expected"); + message.uninterpretedOption = []; + for (var i = 0; i < object.uninterpretedOption.length; ++i) { + if (typeof object.uninterpretedOption[i] !== "object") + throw TypeError(".google.protobuf.ServiceOptions.uninterpretedOption: object expected"); + message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i]); + } + } + return message; + }; + + /** + * Creates a ServiceOptions message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link google.protobuf.ServiceOptions.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {google.protobuf.ServiceOptions} ServiceOptions + */ + ServiceOptions.from = ServiceOptions.fromObject; + + /** + * Creates a plain object from a ServiceOptions message. Also converts values to other types if specified. + * @param {google.protobuf.ServiceOptions} message ServiceOptions + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + ServiceOptions.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.uninterpretedOption = []; + if (options.defaults) + object.deprecated = false; + if (message.deprecated != null && message.hasOwnProperty("deprecated")) + object.deprecated = message.deprecated; + if (message.uninterpretedOption && message.uninterpretedOption.length) { + object.uninterpretedOption = []; + for (var j = 0; j < message.uninterpretedOption.length; ++j) + object.uninterpretedOption[j] = $root.google.protobuf.UninterpretedOption.toObject(message.uninterpretedOption[j], options); + } + return object; + }; + + /** + * Creates a plain object from this ServiceOptions message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + ServiceOptions.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this ServiceOptions to JSON. + * @returns {Object.} JSON object + */ + ServiceOptions.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return ServiceOptions; + })(); + + protobuf.MethodOptions = (function() { + + /** + * Properties of a MethodOptions. + * @typedef google.protobuf.MethodOptions$Properties + * @type {Object} + * @property {boolean} [deprecated] MethodOptions deprecated. + * @property {Array.} [uninterpretedOption] MethodOptions uninterpretedOption. + */ + + /** + * Constructs a new MethodOptions. + * @exports google.protobuf.MethodOptions + * @constructor + * @param {google.protobuf.MethodOptions$Properties=} [properties] Properties to set + */ + function MethodOptions(properties) { + this.uninterpretedOption = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * MethodOptions deprecated. + * @type {boolean} + */ + MethodOptions.prototype.deprecated = false; + + /** + * MethodOptions uninterpretedOption. + * @type {Array.} + */ + MethodOptions.prototype.uninterpretedOption = $util.emptyArray; + + /** + * Creates a new MethodOptions instance using the specified properties. + * @param {google.protobuf.MethodOptions$Properties=} [properties] Properties to set + * @returns {google.protobuf.MethodOptions} MethodOptions instance + */ + MethodOptions.create = function create(properties) { + return new MethodOptions(properties); + }; + + /** + * Encodes the specified MethodOptions message. Does not implicitly {@link google.protobuf.MethodOptions.verify|verify} messages. + * @param {google.protobuf.MethodOptions$Properties} message MethodOptions message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + MethodOptions.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.deprecated != null && message.hasOwnProperty("deprecated")) + writer.uint32(/* id 33, wireType 0 =*/264).bool(message.deprecated); + if (message.uninterpretedOption != null && message.uninterpretedOption.length) + for (var i = 0; i < message.uninterpretedOption.length; ++i) + $root.google.protobuf.UninterpretedOption.encode(message.uninterpretedOption[i], writer.uint32(/* id 999, wireType 2 =*/7994).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified MethodOptions message, length delimited. Does not implicitly {@link google.protobuf.MethodOptions.verify|verify} messages. + * @param {google.protobuf.MethodOptions$Properties} message MethodOptions message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + MethodOptions.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a MethodOptions message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.MethodOptions} MethodOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + MethodOptions.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.MethodOptions(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 33: + message.deprecated = reader.bool(); + break; + case 999: + if (!(message.uninterpretedOption && message.uninterpretedOption.length)) + message.uninterpretedOption = []; + message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32())); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a MethodOptions message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.MethodOptions} MethodOptions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + MethodOptions.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a MethodOptions message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + MethodOptions.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.deprecated != null && message.hasOwnProperty("deprecated")) + if (typeof message.deprecated !== "boolean") + return "deprecated: boolean expected"; + if (message.uninterpretedOption != null && message.hasOwnProperty("uninterpretedOption")) { + if (!Array.isArray(message.uninterpretedOption)) + return "uninterpretedOption: array expected"; + for (var i = 0; i < message.uninterpretedOption.length; ++i) { + var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i]); + if (error) + return "uninterpretedOption." + error; + } + } + return null; + }; + + /** + * Creates a MethodOptions message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {google.protobuf.MethodOptions} MethodOptions + */ + MethodOptions.fromObject = function fromObject(object) { + if (object instanceof $root.google.protobuf.MethodOptions) + return object; + var message = new $root.google.protobuf.MethodOptions(); + if (object.deprecated != null) + message.deprecated = Boolean(object.deprecated); + if (object.uninterpretedOption) { + if (!Array.isArray(object.uninterpretedOption)) + throw TypeError(".google.protobuf.MethodOptions.uninterpretedOption: array expected"); + message.uninterpretedOption = []; + for (var i = 0; i < object.uninterpretedOption.length; ++i) { + if (typeof object.uninterpretedOption[i] !== "object") + throw TypeError(".google.protobuf.MethodOptions.uninterpretedOption: object expected"); + message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i]); + } + } + return message; + }; + + /** + * Creates a MethodOptions message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link google.protobuf.MethodOptions.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {google.protobuf.MethodOptions} MethodOptions + */ + MethodOptions.from = MethodOptions.fromObject; + + /** + * Creates a plain object from a MethodOptions message. Also converts values to other types if specified. + * @param {google.protobuf.MethodOptions} message MethodOptions + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + MethodOptions.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.uninterpretedOption = []; + if (options.defaults) + object.deprecated = false; + if (message.deprecated != null && message.hasOwnProperty("deprecated")) + object.deprecated = message.deprecated; + if (message.uninterpretedOption && message.uninterpretedOption.length) { + object.uninterpretedOption = []; + for (var j = 0; j < message.uninterpretedOption.length; ++j) + object.uninterpretedOption[j] = $root.google.protobuf.UninterpretedOption.toObject(message.uninterpretedOption[j], options); + } + return object; + }; + + /** + * Creates a plain object from this MethodOptions message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + MethodOptions.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this MethodOptions to JSON. + * @returns {Object.} JSON object + */ + MethodOptions.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return MethodOptions; + })(); + + protobuf.UninterpretedOption = (function() { + + /** + * Properties of an UninterpretedOption. + * @typedef google.protobuf.UninterpretedOption$Properties + * @type {Object} + * @property {Array.} [name] UninterpretedOption name. + * @property {string} [identifierValue] UninterpretedOption identifierValue. + * @property {number|Long} [positiveIntValue] UninterpretedOption positiveIntValue. + * @property {number|Long} [negativeIntValue] UninterpretedOption negativeIntValue. + * @property {number} [doubleValue] UninterpretedOption doubleValue. + * @property {Uint8Array} [stringValue] UninterpretedOption stringValue. + * @property {string} [aggregateValue] UninterpretedOption aggregateValue. + */ + + /** + * Constructs a new UninterpretedOption. + * @exports google.protobuf.UninterpretedOption + * @constructor + * @param {google.protobuf.UninterpretedOption$Properties=} [properties] Properties to set + */ + function UninterpretedOption(properties) { + this.name = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * UninterpretedOption name. + * @type {Array.} + */ + UninterpretedOption.prototype.name = $util.emptyArray; + + /** + * UninterpretedOption identifierValue. + * @type {string} + */ + UninterpretedOption.prototype.identifierValue = ""; + + /** + * UninterpretedOption positiveIntValue. + * @type {number|Long} + */ + UninterpretedOption.prototype.positiveIntValue = $util.Long ? $util.Long.fromBits(0,0,true) : 0; + + /** + * UninterpretedOption negativeIntValue. + * @type {number|Long} + */ + UninterpretedOption.prototype.negativeIntValue = $util.Long ? $util.Long.fromBits(0,0,false) : 0; + + /** + * UninterpretedOption doubleValue. + * @type {number} + */ + UninterpretedOption.prototype.doubleValue = 0; + + /** + * UninterpretedOption stringValue. + * @type {Uint8Array} + */ + UninterpretedOption.prototype.stringValue = $util.newBuffer([]); + + /** + * UninterpretedOption aggregateValue. + * @type {string} + */ + UninterpretedOption.prototype.aggregateValue = ""; + + /** + * Creates a new UninterpretedOption instance using the specified properties. + * @param {google.protobuf.UninterpretedOption$Properties=} [properties] Properties to set + * @returns {google.protobuf.UninterpretedOption} UninterpretedOption instance + */ + UninterpretedOption.create = function create(properties) { + return new UninterpretedOption(properties); + }; + + /** + * Encodes the specified UninterpretedOption message. Does not implicitly {@link google.protobuf.UninterpretedOption.verify|verify} messages. + * @param {google.protobuf.UninterpretedOption$Properties} message UninterpretedOption message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + UninterpretedOption.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.name != null && message.name.length) + for (var i = 0; i < message.name.length; ++i) + $root.google.protobuf.UninterpretedOption.NamePart.encode(message.name[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.identifierValue != null && message.hasOwnProperty("identifierValue")) + writer.uint32(/* id 3, wireType 2 =*/26).string(message.identifierValue); + if (message.positiveIntValue != null && message.hasOwnProperty("positiveIntValue")) + writer.uint32(/* id 4, wireType 0 =*/32).uint64(message.positiveIntValue); + if (message.negativeIntValue != null && message.hasOwnProperty("negativeIntValue")) + writer.uint32(/* id 5, wireType 0 =*/40).int64(message.negativeIntValue); + if (message.doubleValue != null && message.hasOwnProperty("doubleValue")) + writer.uint32(/* id 6, wireType 1 =*/49).double(message.doubleValue); + if (message.stringValue != null && message.hasOwnProperty("stringValue")) + writer.uint32(/* id 7, wireType 2 =*/58).bytes(message.stringValue); + if (message.aggregateValue != null && message.hasOwnProperty("aggregateValue")) + writer.uint32(/* id 8, wireType 2 =*/66).string(message.aggregateValue); + return writer; + }; + + /** + * Encodes the specified UninterpretedOption message, length delimited. Does not implicitly {@link google.protobuf.UninterpretedOption.verify|verify} messages. + * @param {google.protobuf.UninterpretedOption$Properties} message UninterpretedOption message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + UninterpretedOption.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes an UninterpretedOption message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.UninterpretedOption} UninterpretedOption + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + UninterpretedOption.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.UninterpretedOption(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 2: + if (!(message.name && message.name.length)) + message.name = []; + message.name.push($root.google.protobuf.UninterpretedOption.NamePart.decode(reader, reader.uint32())); + break; + case 3: + message.identifierValue = reader.string(); + break; + case 4: + message.positiveIntValue = reader.uint64(); + break; + case 5: + message.negativeIntValue = reader.int64(); + break; + case 6: + message.doubleValue = reader.double(); + break; + case 7: + message.stringValue = reader.bytes(); + break; + case 8: + message.aggregateValue = reader.string(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes an UninterpretedOption message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.UninterpretedOption} UninterpretedOption + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + UninterpretedOption.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies an UninterpretedOption message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + UninterpretedOption.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.name != null && message.hasOwnProperty("name")) { + if (!Array.isArray(message.name)) + return "name: array expected"; + for (var i = 0; i < message.name.length; ++i) { + var error = $root.google.protobuf.UninterpretedOption.NamePart.verify(message.name[i]); + if (error) + return "name." + error; + } + } + if (message.identifierValue != null && message.hasOwnProperty("identifierValue")) + if (!$util.isString(message.identifierValue)) + return "identifierValue: string expected"; + if (message.positiveIntValue != null && message.hasOwnProperty("positiveIntValue")) + if (!$util.isInteger(message.positiveIntValue) && !(message.positiveIntValue && $util.isInteger(message.positiveIntValue.low) && $util.isInteger(message.positiveIntValue.high))) + return "positiveIntValue: integer|Long expected"; + if (message.negativeIntValue != null && message.hasOwnProperty("negativeIntValue")) + if (!$util.isInteger(message.negativeIntValue) && !(message.negativeIntValue && $util.isInteger(message.negativeIntValue.low) && $util.isInteger(message.negativeIntValue.high))) + return "negativeIntValue: integer|Long expected"; + if (message.doubleValue != null && message.hasOwnProperty("doubleValue")) + if (typeof message.doubleValue !== "number") + return "doubleValue: number expected"; + if (message.stringValue != null && message.hasOwnProperty("stringValue")) + if (!(message.stringValue && typeof message.stringValue.length === "number" || $util.isString(message.stringValue))) + return "stringValue: buffer expected"; + if (message.aggregateValue != null && message.hasOwnProperty("aggregateValue")) + if (!$util.isString(message.aggregateValue)) + return "aggregateValue: string expected"; + return null; + }; + + /** + * Creates an UninterpretedOption message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {google.protobuf.UninterpretedOption} UninterpretedOption + */ + UninterpretedOption.fromObject = function fromObject(object) { + if (object instanceof $root.google.protobuf.UninterpretedOption) + return object; + var message = new $root.google.protobuf.UninterpretedOption(); + if (object.name) { + if (!Array.isArray(object.name)) + throw TypeError(".google.protobuf.UninterpretedOption.name: array expected"); + message.name = []; + for (var i = 0; i < object.name.length; ++i) { + if (typeof object.name[i] !== "object") + throw TypeError(".google.protobuf.UninterpretedOption.name: object expected"); + message.name[i] = $root.google.protobuf.UninterpretedOption.NamePart.fromObject(object.name[i]); + } + } + if (object.identifierValue != null) + message.identifierValue = String(object.identifierValue); + if (object.positiveIntValue != null) + if ($util.Long) + (message.positiveIntValue = $util.Long.fromValue(object.positiveIntValue)).unsigned = true; + else if (typeof object.positiveIntValue === "string") + message.positiveIntValue = parseInt(object.positiveIntValue, 10); + else if (typeof object.positiveIntValue === "number") + message.positiveIntValue = object.positiveIntValue; + else if (typeof object.positiveIntValue === "object") + message.positiveIntValue = new $util.LongBits(object.positiveIntValue.low >>> 0, object.positiveIntValue.high >>> 0).toNumber(true); + if (object.negativeIntValue != null) + if ($util.Long) + (message.negativeIntValue = $util.Long.fromValue(object.negativeIntValue)).unsigned = false; + else if (typeof object.negativeIntValue === "string") + message.negativeIntValue = parseInt(object.negativeIntValue, 10); + else if (typeof object.negativeIntValue === "number") + message.negativeIntValue = object.negativeIntValue; + else if (typeof object.negativeIntValue === "object") + message.negativeIntValue = new $util.LongBits(object.negativeIntValue.low >>> 0, object.negativeIntValue.high >>> 0).toNumber(); + if (object.doubleValue != null) + message.doubleValue = Number(object.doubleValue); + if (object.stringValue != null) + if (typeof object.stringValue === "string") + $util.base64.decode(object.stringValue, message.stringValue = $util.newBuffer($util.base64.length(object.stringValue)), 0); + else if (object.stringValue.length) + message.stringValue = object.stringValue; + if (object.aggregateValue != null) + message.aggregateValue = String(object.aggregateValue); + return message; + }; + + /** + * Creates an UninterpretedOption message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link google.protobuf.UninterpretedOption.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {google.protobuf.UninterpretedOption} UninterpretedOption + */ + UninterpretedOption.from = UninterpretedOption.fromObject; + + /** + * Creates a plain object from an UninterpretedOption message. Also converts values to other types if specified. + * @param {google.protobuf.UninterpretedOption} message UninterpretedOption + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + UninterpretedOption.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.name = []; + if (options.defaults) { + object.identifierValue = ""; + if ($util.Long) { + var long = new $util.Long(0, 0, true); + object.positiveIntValue = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; + } else + object.positiveIntValue = options.longs === String ? "0" : 0; + if ($util.Long) { + var long = new $util.Long(0, 0, false); + object.negativeIntValue = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; + } else + object.negativeIntValue = options.longs === String ? "0" : 0; + object.doubleValue = 0; + object.stringValue = options.bytes === String ? "" : []; + object.aggregateValue = ""; + } + if (message.name && message.name.length) { + object.name = []; + for (var j = 0; j < message.name.length; ++j) + object.name[j] = $root.google.protobuf.UninterpretedOption.NamePart.toObject(message.name[j], options); + } + if (message.identifierValue != null && message.hasOwnProperty("identifierValue")) + object.identifierValue = message.identifierValue; + if (message.positiveIntValue != null && message.hasOwnProperty("positiveIntValue")) + if (typeof message.positiveIntValue === "number") + object.positiveIntValue = options.longs === String ? String(message.positiveIntValue) : message.positiveIntValue; + else + object.positiveIntValue = options.longs === String ? $util.Long.prototype.toString.call(message.positiveIntValue) : options.longs === Number ? new $util.LongBits(message.positiveIntValue.low >>> 0, message.positiveIntValue.high >>> 0).toNumber(true) : message.positiveIntValue; + if (message.negativeIntValue != null && message.hasOwnProperty("negativeIntValue")) + if (typeof message.negativeIntValue === "number") + object.negativeIntValue = options.longs === String ? String(message.negativeIntValue) : message.negativeIntValue; + else + object.negativeIntValue = options.longs === String ? $util.Long.prototype.toString.call(message.negativeIntValue) : options.longs === Number ? new $util.LongBits(message.negativeIntValue.low >>> 0, message.negativeIntValue.high >>> 0).toNumber() : message.negativeIntValue; + if (message.doubleValue != null && message.hasOwnProperty("doubleValue")) + object.doubleValue = message.doubleValue; + if (message.stringValue != null && message.hasOwnProperty("stringValue")) + object.stringValue = options.bytes === String ? $util.base64.encode(message.stringValue, 0, message.stringValue.length) : options.bytes === Array ? Array.prototype.slice.call(message.stringValue) : message.stringValue; + if (message.aggregateValue != null && message.hasOwnProperty("aggregateValue")) + object.aggregateValue = message.aggregateValue; + return object; + }; + + /** + * Creates a plain object from this UninterpretedOption message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + UninterpretedOption.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this UninterpretedOption to JSON. + * @returns {Object.} JSON object + */ + UninterpretedOption.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + UninterpretedOption.NamePart = (function() { + + /** + * Properties of a NamePart. + * @typedef google.protobuf.UninterpretedOption.NamePart$Properties + * @type {Object} + * @property {string} namePart NamePart namePart. + * @property {boolean} isExtension NamePart isExtension. + */ + + /** + * Constructs a new NamePart. + * @exports google.protobuf.UninterpretedOption.NamePart + * @constructor + * @param {google.protobuf.UninterpretedOption.NamePart$Properties=} [properties] Properties to set + */ + function NamePart(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * NamePart namePart. + * @type {string} + */ + NamePart.prototype.namePart = ""; + + /** + * NamePart isExtension. + * @type {boolean} + */ + NamePart.prototype.isExtension = false; + + /** + * Creates a new NamePart instance using the specified properties. + * @param {google.protobuf.UninterpretedOption.NamePart$Properties=} [properties] Properties to set + * @returns {google.protobuf.UninterpretedOption.NamePart} NamePart instance + */ + NamePart.create = function create(properties) { + return new NamePart(properties); + }; + + /** + * Encodes the specified NamePart message. Does not implicitly {@link google.protobuf.UninterpretedOption.NamePart.verify|verify} messages. + * @param {google.protobuf.UninterpretedOption.NamePart$Properties} message NamePart message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + NamePart.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + writer.uint32(/* id 1, wireType 2 =*/10).string(message.namePart); + writer.uint32(/* id 2, wireType 0 =*/16).bool(message.isExtension); + return writer; + }; + + /** + * Encodes the specified NamePart message, length delimited. Does not implicitly {@link google.protobuf.UninterpretedOption.NamePart.verify|verify} messages. + * @param {google.protobuf.UninterpretedOption.NamePart$Properties} message NamePart message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + NamePart.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a NamePart message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.UninterpretedOption.NamePart} NamePart + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + NamePart.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.UninterpretedOption.NamePart(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.namePart = reader.string(); + break; + case 2: + message.isExtension = reader.bool(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + if (!message.hasOwnProperty("namePart")) + throw $util.ProtocolError("missing required 'namePart'", { instance: message }); + if (!message.hasOwnProperty("isExtension")) + throw $util.ProtocolError("missing required 'isExtension'", { instance: message }); + return message; + }; + + /** + * Decodes a NamePart message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.UninterpretedOption.NamePart} NamePart + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + NamePart.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a NamePart message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + NamePart.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (!$util.isString(message.namePart)) + return "namePart: string expected"; + if (typeof message.isExtension !== "boolean") + return "isExtension: boolean expected"; + return null; + }; + + /** + * Creates a NamePart message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {google.protobuf.UninterpretedOption.NamePart} NamePart + */ + NamePart.fromObject = function fromObject(object) { + if (object instanceof $root.google.protobuf.UninterpretedOption.NamePart) + return object; + var message = new $root.google.protobuf.UninterpretedOption.NamePart(); + if (object.namePart != null) + message.namePart = String(object.namePart); + if (object.isExtension != null) + message.isExtension = Boolean(object.isExtension); + return message; + }; + + /** + * Creates a NamePart message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link google.protobuf.UninterpretedOption.NamePart.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {google.protobuf.UninterpretedOption.NamePart} NamePart + */ + NamePart.from = NamePart.fromObject; + + /** + * Creates a plain object from a NamePart message. Also converts values to other types if specified. + * @param {google.protobuf.UninterpretedOption.NamePart} message NamePart + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + NamePart.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.namePart = ""; + object.isExtension = false; + } + if (message.namePart != null && message.hasOwnProperty("namePart")) + object.namePart = message.namePart; + if (message.isExtension != null && message.hasOwnProperty("isExtension")) + object.isExtension = message.isExtension; + return object; + }; + + /** + * Creates a plain object from this NamePart message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + NamePart.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this NamePart to JSON. + * @returns {Object.} JSON object + */ + NamePart.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return NamePart; + })(); + + return UninterpretedOption; + })(); + + protobuf.SourceCodeInfo = (function() { + + /** + * Properties of a SourceCodeInfo. + * @typedef google.protobuf.SourceCodeInfo$Properties + * @type {Object} + * @property {Array.} [location] SourceCodeInfo location. + */ + + /** + * Constructs a new SourceCodeInfo. + * @exports google.protobuf.SourceCodeInfo + * @constructor + * @param {google.protobuf.SourceCodeInfo$Properties=} [properties] Properties to set + */ + function SourceCodeInfo(properties) { + this.location = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * SourceCodeInfo location. + * @type {Array.} + */ + SourceCodeInfo.prototype.location = $util.emptyArray; + + /** + * Creates a new SourceCodeInfo instance using the specified properties. + * @param {google.protobuf.SourceCodeInfo$Properties=} [properties] Properties to set + * @returns {google.protobuf.SourceCodeInfo} SourceCodeInfo instance + */ + SourceCodeInfo.create = function create(properties) { + return new SourceCodeInfo(properties); + }; + + /** + * Encodes the specified SourceCodeInfo message. Does not implicitly {@link google.protobuf.SourceCodeInfo.verify|verify} messages. + * @param {google.protobuf.SourceCodeInfo$Properties} message SourceCodeInfo message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + SourceCodeInfo.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.location != null && message.location.length) + for (var i = 0; i < message.location.length; ++i) + $root.google.protobuf.SourceCodeInfo.Location.encode(message.location[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified SourceCodeInfo message, length delimited. Does not implicitly {@link google.protobuf.SourceCodeInfo.verify|verify} messages. + * @param {google.protobuf.SourceCodeInfo$Properties} message SourceCodeInfo message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + SourceCodeInfo.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a SourceCodeInfo message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.SourceCodeInfo} SourceCodeInfo + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + SourceCodeInfo.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.SourceCodeInfo(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (!(message.location && message.location.length)) + message.location = []; + message.location.push($root.google.protobuf.SourceCodeInfo.Location.decode(reader, reader.uint32())); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a SourceCodeInfo message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.SourceCodeInfo} SourceCodeInfo + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + SourceCodeInfo.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a SourceCodeInfo message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + SourceCodeInfo.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.location != null && message.hasOwnProperty("location")) { + if (!Array.isArray(message.location)) + return "location: array expected"; + for (var i = 0; i < message.location.length; ++i) { + var error = $root.google.protobuf.SourceCodeInfo.Location.verify(message.location[i]); + if (error) + return "location." + error; + } + } + return null; + }; + + /** + * Creates a SourceCodeInfo message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {google.protobuf.SourceCodeInfo} SourceCodeInfo + */ + SourceCodeInfo.fromObject = function fromObject(object) { + if (object instanceof $root.google.protobuf.SourceCodeInfo) + return object; + var message = new $root.google.protobuf.SourceCodeInfo(); + if (object.location) { + if (!Array.isArray(object.location)) + throw TypeError(".google.protobuf.SourceCodeInfo.location: array expected"); + message.location = []; + for (var i = 0; i < object.location.length; ++i) { + if (typeof object.location[i] !== "object") + throw TypeError(".google.protobuf.SourceCodeInfo.location: object expected"); + message.location[i] = $root.google.protobuf.SourceCodeInfo.Location.fromObject(object.location[i]); + } + } + return message; + }; + + /** + * Creates a SourceCodeInfo message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link google.protobuf.SourceCodeInfo.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {google.protobuf.SourceCodeInfo} SourceCodeInfo + */ + SourceCodeInfo.from = SourceCodeInfo.fromObject; + + /** + * Creates a plain object from a SourceCodeInfo message. Also converts values to other types if specified. + * @param {google.protobuf.SourceCodeInfo} message SourceCodeInfo + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + SourceCodeInfo.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.location = []; + if (message.location && message.location.length) { + object.location = []; + for (var j = 0; j < message.location.length; ++j) + object.location[j] = $root.google.protobuf.SourceCodeInfo.Location.toObject(message.location[j], options); + } + return object; + }; + + /** + * Creates a plain object from this SourceCodeInfo message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + SourceCodeInfo.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this SourceCodeInfo to JSON. + * @returns {Object.} JSON object + */ + SourceCodeInfo.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + SourceCodeInfo.Location = (function() { + + /** + * Properties of a Location. + * @typedef google.protobuf.SourceCodeInfo.Location$Properties + * @type {Object} + * @property {Array.} [path] Location path. + * @property {Array.} [span] Location span. + * @property {string} [leadingComments] Location leadingComments. + * @property {string} [trailingComments] Location trailingComments. + * @property {Array.} [leadingDetachedComments] Location leadingDetachedComments. + */ + + /** + * Constructs a new Location. + * @exports google.protobuf.SourceCodeInfo.Location + * @constructor + * @param {google.protobuf.SourceCodeInfo.Location$Properties=} [properties] Properties to set + */ + function Location(properties) { + this.path = []; + this.span = []; + this.leadingDetachedComments = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Location path. + * @type {Array.} + */ + Location.prototype.path = $util.emptyArray; + + /** + * Location span. + * @type {Array.} + */ + Location.prototype.span = $util.emptyArray; + + /** + * Location leadingComments. + * @type {string} + */ + Location.prototype.leadingComments = ""; + + /** + * Location trailingComments. + * @type {string} + */ + Location.prototype.trailingComments = ""; + + /** + * Location leadingDetachedComments. + * @type {Array.} + */ + Location.prototype.leadingDetachedComments = $util.emptyArray; + + /** + * Creates a new Location instance using the specified properties. + * @param {google.protobuf.SourceCodeInfo.Location$Properties=} [properties] Properties to set + * @returns {google.protobuf.SourceCodeInfo.Location} Location instance + */ + Location.create = function create(properties) { + return new Location(properties); + }; + + /** + * Encodes the specified Location message. Does not implicitly {@link google.protobuf.SourceCodeInfo.Location.verify|verify} messages. + * @param {google.protobuf.SourceCodeInfo.Location$Properties} message Location message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Location.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.path != null && message.path.length) { + writer.uint32(/* id 1, wireType 2 =*/10).fork(); + for (var i = 0; i < message.path.length; ++i) + writer.int32(message.path[i]); + writer.ldelim(); + } + if (message.span != null && message.span.length) { + writer.uint32(/* id 2, wireType 2 =*/18).fork(); + for (var i = 0; i < message.span.length; ++i) + writer.int32(message.span[i]); + writer.ldelim(); + } + if (message.leadingComments != null && message.hasOwnProperty("leadingComments")) + writer.uint32(/* id 3, wireType 2 =*/26).string(message.leadingComments); + if (message.trailingComments != null && message.hasOwnProperty("trailingComments")) + writer.uint32(/* id 4, wireType 2 =*/34).string(message.trailingComments); + if (message.leadingDetachedComments != null && message.leadingDetachedComments.length) + for (var i = 0; i < message.leadingDetachedComments.length; ++i) + writer.uint32(/* id 6, wireType 2 =*/50).string(message.leadingDetachedComments[i]); + return writer; + }; + + /** + * Encodes the specified Location message, length delimited. Does not implicitly {@link google.protobuf.SourceCodeInfo.Location.verify|verify} messages. + * @param {google.protobuf.SourceCodeInfo.Location$Properties} message Location message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Location.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a Location message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.SourceCodeInfo.Location} Location + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Location.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.SourceCodeInfo.Location(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (!(message.path && message.path.length)) + message.path = []; + if ((tag & 7) === 2) { + var end2 = reader.uint32() + reader.pos; + while (reader.pos < end2) + message.path.push(reader.int32()); + } else + message.path.push(reader.int32()); + break; + case 2: + if (!(message.span && message.span.length)) + message.span = []; + if ((tag & 7) === 2) { + var end2 = reader.uint32() + reader.pos; + while (reader.pos < end2) + message.span.push(reader.int32()); + } else + message.span.push(reader.int32()); + break; + case 3: + message.leadingComments = reader.string(); + break; + case 4: + message.trailingComments = reader.string(); + break; + case 6: + if (!(message.leadingDetachedComments && message.leadingDetachedComments.length)) + message.leadingDetachedComments = []; + message.leadingDetachedComments.push(reader.string()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a Location message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.SourceCodeInfo.Location} Location + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Location.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a Location message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + Location.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.path != null && message.hasOwnProperty("path")) { + if (!Array.isArray(message.path)) + return "path: array expected"; + for (var i = 0; i < message.path.length; ++i) + if (!$util.isInteger(message.path[i])) + return "path: integer[] expected"; + } + if (message.span != null && message.hasOwnProperty("span")) { + if (!Array.isArray(message.span)) + return "span: array expected"; + for (var i = 0; i < message.span.length; ++i) + if (!$util.isInteger(message.span[i])) + return "span: integer[] expected"; + } + if (message.leadingComments != null && message.hasOwnProperty("leadingComments")) + if (!$util.isString(message.leadingComments)) + return "leadingComments: string expected"; + if (message.trailingComments != null && message.hasOwnProperty("trailingComments")) + if (!$util.isString(message.trailingComments)) + return "trailingComments: string expected"; + if (message.leadingDetachedComments != null && message.hasOwnProperty("leadingDetachedComments")) { + if (!Array.isArray(message.leadingDetachedComments)) + return "leadingDetachedComments: array expected"; + for (var i = 0; i < message.leadingDetachedComments.length; ++i) + if (!$util.isString(message.leadingDetachedComments[i])) + return "leadingDetachedComments: string[] expected"; + } + return null; + }; + + /** + * Creates a Location message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {google.protobuf.SourceCodeInfo.Location} Location + */ + Location.fromObject = function fromObject(object) { + if (object instanceof $root.google.protobuf.SourceCodeInfo.Location) + return object; + var message = new $root.google.protobuf.SourceCodeInfo.Location(); + if (object.path) { + if (!Array.isArray(object.path)) + throw TypeError(".google.protobuf.SourceCodeInfo.Location.path: array expected"); + message.path = []; + for (var i = 0; i < object.path.length; ++i) + message.path[i] = object.path[i] | 0; + } + if (object.span) { + if (!Array.isArray(object.span)) + throw TypeError(".google.protobuf.SourceCodeInfo.Location.span: array expected"); + message.span = []; + for (var i = 0; i < object.span.length; ++i) + message.span[i] = object.span[i] | 0; + } + if (object.leadingComments != null) + message.leadingComments = String(object.leadingComments); + if (object.trailingComments != null) + message.trailingComments = String(object.trailingComments); + if (object.leadingDetachedComments) { + if (!Array.isArray(object.leadingDetachedComments)) + throw TypeError(".google.protobuf.SourceCodeInfo.Location.leadingDetachedComments: array expected"); + message.leadingDetachedComments = []; + for (var i = 0; i < object.leadingDetachedComments.length; ++i) + message.leadingDetachedComments[i] = String(object.leadingDetachedComments[i]); + } + return message; + }; + + /** + * Creates a Location message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link google.protobuf.SourceCodeInfo.Location.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {google.protobuf.SourceCodeInfo.Location} Location + */ + Location.from = Location.fromObject; + + /** + * Creates a plain object from a Location message. Also converts values to other types if specified. + * @param {google.protobuf.SourceCodeInfo.Location} message Location + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Location.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) { + object.path = []; + object.span = []; + object.leadingDetachedComments = []; + } + if (options.defaults) { + object.leadingComments = ""; + object.trailingComments = ""; + } + if (message.path && message.path.length) { + object.path = []; + for (var j = 0; j < message.path.length; ++j) + object.path[j] = message.path[j]; + } + if (message.span && message.span.length) { + object.span = []; + for (var j = 0; j < message.span.length; ++j) + object.span[j] = message.span[j]; + } + if (message.leadingComments != null && message.hasOwnProperty("leadingComments")) + object.leadingComments = message.leadingComments; + if (message.trailingComments != null && message.hasOwnProperty("trailingComments")) + object.trailingComments = message.trailingComments; + if (message.leadingDetachedComments && message.leadingDetachedComments.length) { + object.leadingDetachedComments = []; + for (var j = 0; j < message.leadingDetachedComments.length; ++j) + object.leadingDetachedComments[j] = message.leadingDetachedComments[j]; + } + return object; + }; + + /** + * Creates a plain object from this Location message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Location.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this Location to JSON. + * @returns {Object.} JSON object + */ + Location.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return Location; + })(); + + return SourceCodeInfo; + })(); + + protobuf.GeneratedCodeInfo = (function() { + + /** + * Properties of a GeneratedCodeInfo. + * @typedef google.protobuf.GeneratedCodeInfo$Properties + * @type {Object} + * @property {Array.} [annotation] GeneratedCodeInfo annotation. + */ + + /** + * Constructs a new GeneratedCodeInfo. + * @exports google.protobuf.GeneratedCodeInfo + * @constructor + * @param {google.protobuf.GeneratedCodeInfo$Properties=} [properties] Properties to set + */ + function GeneratedCodeInfo(properties) { + this.annotation = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * GeneratedCodeInfo annotation. + * @type {Array.} + */ + GeneratedCodeInfo.prototype.annotation = $util.emptyArray; + + /** + * Creates a new GeneratedCodeInfo instance using the specified properties. + * @param {google.protobuf.GeneratedCodeInfo$Properties=} [properties] Properties to set + * @returns {google.protobuf.GeneratedCodeInfo} GeneratedCodeInfo instance + */ + GeneratedCodeInfo.create = function create(properties) { + return new GeneratedCodeInfo(properties); + }; + + /** + * Encodes the specified GeneratedCodeInfo message. Does not implicitly {@link google.protobuf.GeneratedCodeInfo.verify|verify} messages. + * @param {google.protobuf.GeneratedCodeInfo$Properties} message GeneratedCodeInfo message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + GeneratedCodeInfo.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.annotation != null && message.annotation.length) + for (var i = 0; i < message.annotation.length; ++i) + $root.google.protobuf.GeneratedCodeInfo.Annotation.encode(message.annotation[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified GeneratedCodeInfo message, length delimited. Does not implicitly {@link google.protobuf.GeneratedCodeInfo.verify|verify} messages. + * @param {google.protobuf.GeneratedCodeInfo$Properties} message GeneratedCodeInfo message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + GeneratedCodeInfo.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a GeneratedCodeInfo message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.GeneratedCodeInfo} GeneratedCodeInfo + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + GeneratedCodeInfo.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.GeneratedCodeInfo(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (!(message.annotation && message.annotation.length)) + message.annotation = []; + message.annotation.push($root.google.protobuf.GeneratedCodeInfo.Annotation.decode(reader, reader.uint32())); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a GeneratedCodeInfo message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.GeneratedCodeInfo} GeneratedCodeInfo + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + GeneratedCodeInfo.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a GeneratedCodeInfo message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + GeneratedCodeInfo.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.annotation != null && message.hasOwnProperty("annotation")) { + if (!Array.isArray(message.annotation)) + return "annotation: array expected"; + for (var i = 0; i < message.annotation.length; ++i) { + var error = $root.google.protobuf.GeneratedCodeInfo.Annotation.verify(message.annotation[i]); + if (error) + return "annotation." + error; + } + } + return null; + }; + + /** + * Creates a GeneratedCodeInfo message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {google.protobuf.GeneratedCodeInfo} GeneratedCodeInfo + */ + GeneratedCodeInfo.fromObject = function fromObject(object) { + if (object instanceof $root.google.protobuf.GeneratedCodeInfo) + return object; + var message = new $root.google.protobuf.GeneratedCodeInfo(); + if (object.annotation) { + if (!Array.isArray(object.annotation)) + throw TypeError(".google.protobuf.GeneratedCodeInfo.annotation: array expected"); + message.annotation = []; + for (var i = 0; i < object.annotation.length; ++i) { + if (typeof object.annotation[i] !== "object") + throw TypeError(".google.protobuf.GeneratedCodeInfo.annotation: object expected"); + message.annotation[i] = $root.google.protobuf.GeneratedCodeInfo.Annotation.fromObject(object.annotation[i]); + } + } + return message; + }; + + /** + * Creates a GeneratedCodeInfo message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link google.protobuf.GeneratedCodeInfo.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {google.protobuf.GeneratedCodeInfo} GeneratedCodeInfo + */ + GeneratedCodeInfo.from = GeneratedCodeInfo.fromObject; + + /** + * Creates a plain object from a GeneratedCodeInfo message. Also converts values to other types if specified. + * @param {google.protobuf.GeneratedCodeInfo} message GeneratedCodeInfo + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + GeneratedCodeInfo.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.annotation = []; + if (message.annotation && message.annotation.length) { + object.annotation = []; + for (var j = 0; j < message.annotation.length; ++j) + object.annotation[j] = $root.google.protobuf.GeneratedCodeInfo.Annotation.toObject(message.annotation[j], options); + } + return object; + }; + + /** + * Creates a plain object from this GeneratedCodeInfo message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + GeneratedCodeInfo.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this GeneratedCodeInfo to JSON. + * @returns {Object.} JSON object + */ + GeneratedCodeInfo.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + GeneratedCodeInfo.Annotation = (function() { + + /** + * Properties of an Annotation. + * @typedef google.protobuf.GeneratedCodeInfo.Annotation$Properties + * @type {Object} + * @property {Array.} [path] Annotation path. + * @property {string} [sourceFile] Annotation sourceFile. + * @property {number} [begin] Annotation begin. + * @property {number} [end] Annotation end. + */ + + /** + * Constructs a new Annotation. + * @exports google.protobuf.GeneratedCodeInfo.Annotation + * @constructor + * @param {google.protobuf.GeneratedCodeInfo.Annotation$Properties=} [properties] Properties to set + */ + function Annotation(properties) { + this.path = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Annotation path. + * @type {Array.} + */ + Annotation.prototype.path = $util.emptyArray; + + /** + * Annotation sourceFile. + * @type {string} + */ + Annotation.prototype.sourceFile = ""; + + /** + * Annotation begin. + * @type {number} + */ + Annotation.prototype.begin = 0; + + /** + * Annotation end. + * @type {number} + */ + Annotation.prototype.end = 0; + + /** + * Creates a new Annotation instance using the specified properties. + * @param {google.protobuf.GeneratedCodeInfo.Annotation$Properties=} [properties] Properties to set + * @returns {google.protobuf.GeneratedCodeInfo.Annotation} Annotation instance + */ + Annotation.create = function create(properties) { + return new Annotation(properties); + }; + + /** + * Encodes the specified Annotation message. Does not implicitly {@link google.protobuf.GeneratedCodeInfo.Annotation.verify|verify} messages. + * @param {google.protobuf.GeneratedCodeInfo.Annotation$Properties} message Annotation message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Annotation.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.path != null && message.path.length) { + writer.uint32(/* id 1, wireType 2 =*/10).fork(); + for (var i = 0; i < message.path.length; ++i) + writer.int32(message.path[i]); + writer.ldelim(); + } + if (message.sourceFile != null && message.hasOwnProperty("sourceFile")) + writer.uint32(/* id 2, wireType 2 =*/18).string(message.sourceFile); + if (message.begin != null && message.hasOwnProperty("begin")) + writer.uint32(/* id 3, wireType 0 =*/24).int32(message.begin); + if (message.end != null && message.hasOwnProperty("end")) + writer.uint32(/* id 4, wireType 0 =*/32).int32(message.end); + return writer; + }; + + /** + * Encodes the specified Annotation message, length delimited. Does not implicitly {@link google.protobuf.GeneratedCodeInfo.Annotation.verify|verify} messages. + * @param {google.protobuf.GeneratedCodeInfo.Annotation$Properties} message Annotation message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Annotation.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes an Annotation message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.GeneratedCodeInfo.Annotation} Annotation + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Annotation.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.GeneratedCodeInfo.Annotation(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (!(message.path && message.path.length)) + message.path = []; + if ((tag & 7) === 2) { + var end2 = reader.uint32() + reader.pos; + while (reader.pos < end2) + message.path.push(reader.int32()); + } else + message.path.push(reader.int32()); + break; + case 2: + message.sourceFile = reader.string(); + break; + case 3: + message.begin = reader.int32(); + break; + case 4: + message.end = reader.int32(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes an Annotation message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.GeneratedCodeInfo.Annotation} Annotation + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Annotation.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies an Annotation message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + Annotation.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.path != null && message.hasOwnProperty("path")) { + if (!Array.isArray(message.path)) + return "path: array expected"; + for (var i = 0; i < message.path.length; ++i) + if (!$util.isInteger(message.path[i])) + return "path: integer[] expected"; + } + if (message.sourceFile != null && message.hasOwnProperty("sourceFile")) + if (!$util.isString(message.sourceFile)) + return "sourceFile: string expected"; + if (message.begin != null && message.hasOwnProperty("begin")) + if (!$util.isInteger(message.begin)) + return "begin: integer expected"; + if (message.end != null && message.hasOwnProperty("end")) + if (!$util.isInteger(message.end)) + return "end: integer expected"; + return null; + }; + + /** + * Creates an Annotation message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {google.protobuf.GeneratedCodeInfo.Annotation} Annotation + */ + Annotation.fromObject = function fromObject(object) { + if (object instanceof $root.google.protobuf.GeneratedCodeInfo.Annotation) + return object; + var message = new $root.google.protobuf.GeneratedCodeInfo.Annotation(); + if (object.path) { + if (!Array.isArray(object.path)) + throw TypeError(".google.protobuf.GeneratedCodeInfo.Annotation.path: array expected"); + message.path = []; + for (var i = 0; i < object.path.length; ++i) + message.path[i] = object.path[i] | 0; + } + if (object.sourceFile != null) + message.sourceFile = String(object.sourceFile); + if (object.begin != null) + message.begin = object.begin | 0; + if (object.end != null) + message.end = object.end | 0; + return message; + }; + + /** + * Creates an Annotation message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link google.protobuf.GeneratedCodeInfo.Annotation.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {google.protobuf.GeneratedCodeInfo.Annotation} Annotation + */ + Annotation.from = Annotation.fromObject; + + /** + * Creates a plain object from an Annotation message. Also converts values to other types if specified. + * @param {google.protobuf.GeneratedCodeInfo.Annotation} message Annotation + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Annotation.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.path = []; + if (options.defaults) { + object.sourceFile = ""; + object.begin = 0; + object.end = 0; + } + if (message.path && message.path.length) { + object.path = []; + for (var j = 0; j < message.path.length; ++j) + object.path[j] = message.path[j]; + } + if (message.sourceFile != null && message.hasOwnProperty("sourceFile")) + object.sourceFile = message.sourceFile; + if (message.begin != null && message.hasOwnProperty("begin")) + object.begin = message.begin; + if (message.end != null && message.hasOwnProperty("end")) + object.end = message.end; + return object; + }; + + /** + * Creates a plain object from this Annotation message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Annotation.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this Annotation to JSON. + * @returns {Object.} JSON object + */ + Annotation.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return Annotation; + })(); + + return GeneratedCodeInfo; + })(); + + protobuf.Duration = (function() { + + /** + * Properties of a Duration. + * @typedef google.protobuf.Duration$Properties + * @type {Object} + * @property {number|Long} [seconds] Duration seconds. + * @property {number} [nanos] Duration nanos. + */ + + /** + * Constructs a new Duration. + * @exports google.protobuf.Duration + * @constructor + * @param {google.protobuf.Duration$Properties=} [properties] Properties to set + */ + function Duration(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Duration seconds. + * @type {number|Long} + */ + Duration.prototype.seconds = $util.Long ? $util.Long.fromBits(0,0,false) : 0; + + /** + * Duration nanos. + * @type {number} + */ + Duration.prototype.nanos = 0; + + /** + * Creates a new Duration instance using the specified properties. + * @param {google.protobuf.Duration$Properties=} [properties] Properties to set + * @returns {google.protobuf.Duration} Duration instance + */ + Duration.create = function create(properties) { + return new Duration(properties); + }; + + /** + * Encodes the specified Duration message. Does not implicitly {@link google.protobuf.Duration.verify|verify} messages. + * @param {google.protobuf.Duration$Properties} message Duration message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Duration.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.seconds != null && message.hasOwnProperty("seconds")) + writer.uint32(/* id 1, wireType 0 =*/8).int64(message.seconds); + if (message.nanos != null && message.hasOwnProperty("nanos")) + writer.uint32(/* id 2, wireType 0 =*/16).int32(message.nanos); + return writer; + }; + + /** + * Encodes the specified Duration message, length delimited. Does not implicitly {@link google.protobuf.Duration.verify|verify} messages. + * @param {google.protobuf.Duration$Properties} message Duration message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Duration.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a Duration message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.Duration} Duration + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Duration.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.Duration(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.seconds = reader.int64(); + break; + case 2: + message.nanos = reader.int32(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a Duration message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.Duration} Duration + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Duration.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a Duration message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + Duration.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.seconds != null && message.hasOwnProperty("seconds")) + if (!$util.isInteger(message.seconds) && !(message.seconds && $util.isInteger(message.seconds.low) && $util.isInteger(message.seconds.high))) + return "seconds: integer|Long expected"; + if (message.nanos != null && message.hasOwnProperty("nanos")) + if (!$util.isInteger(message.nanos)) + return "nanos: integer expected"; + return null; + }; + + /** + * Creates a Duration message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {google.protobuf.Duration} Duration + */ + Duration.fromObject = function fromObject(object) { + if (object instanceof $root.google.protobuf.Duration) + return object; + var message = new $root.google.protobuf.Duration(); + if (object.seconds != null) + if ($util.Long) + (message.seconds = $util.Long.fromValue(object.seconds)).unsigned = false; + else if (typeof object.seconds === "string") + message.seconds = parseInt(object.seconds, 10); + else if (typeof object.seconds === "number") + message.seconds = object.seconds; + else if (typeof object.seconds === "object") + message.seconds = new $util.LongBits(object.seconds.low >>> 0, object.seconds.high >>> 0).toNumber(); + if (object.nanos != null) + message.nanos = object.nanos | 0; + return message; + }; + + /** + * Creates a Duration message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link google.protobuf.Duration.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {google.protobuf.Duration} Duration + */ + Duration.from = Duration.fromObject; + + /** + * Creates a plain object from a Duration message. Also converts values to other types if specified. + * @param {google.protobuf.Duration} message Duration + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Duration.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + if ($util.Long) { + var long = new $util.Long(0, 0, false); + object.seconds = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; + } else + object.seconds = options.longs === String ? "0" : 0; + object.nanos = 0; + } + if (message.seconds != null && message.hasOwnProperty("seconds")) + if (typeof message.seconds === "number") + object.seconds = options.longs === String ? String(message.seconds) : message.seconds; + else + object.seconds = options.longs === String ? $util.Long.prototype.toString.call(message.seconds) : options.longs === Number ? new $util.LongBits(message.seconds.low >>> 0, message.seconds.high >>> 0).toNumber() : message.seconds; + if (message.nanos != null && message.hasOwnProperty("nanos")) + object.nanos = message.nanos; + return object; + }; + + /** + * Creates a plain object from this Duration message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Duration.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this Duration to JSON. + * @returns {Object.} JSON object + */ + Duration.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return Duration; + })(); + + protobuf.Timestamp = (function() { + + /** + * Properties of a Timestamp. + * @typedef google.protobuf.Timestamp$Properties + * @type {Object} + * @property {number|Long} [seconds] Timestamp seconds. + * @property {number} [nanos] Timestamp nanos. + */ + + /** + * Constructs a new Timestamp. + * @exports google.protobuf.Timestamp + * @constructor + * @param {google.protobuf.Timestamp$Properties=} [properties] Properties to set + */ + function Timestamp(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Timestamp seconds. + * @type {number|Long} + */ + Timestamp.prototype.seconds = $util.Long ? $util.Long.fromBits(0,0,false) : 0; + + /** + * Timestamp nanos. + * @type {number} + */ + Timestamp.prototype.nanos = 0; + + /** + * Creates a new Timestamp instance using the specified properties. + * @param {google.protobuf.Timestamp$Properties=} [properties] Properties to set + * @returns {google.protobuf.Timestamp} Timestamp instance + */ + Timestamp.create = function create(properties) { + return new Timestamp(properties); + }; + + /** + * Encodes the specified Timestamp message. Does not implicitly {@link google.protobuf.Timestamp.verify|verify} messages. + * @param {google.protobuf.Timestamp$Properties} message Timestamp message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Timestamp.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.seconds != null && message.hasOwnProperty("seconds")) + writer.uint32(/* id 1, wireType 0 =*/8).int64(message.seconds); + if (message.nanos != null && message.hasOwnProperty("nanos")) + writer.uint32(/* id 2, wireType 0 =*/16).int32(message.nanos); + return writer; + }; + + /** + * Encodes the specified Timestamp message, length delimited. Does not implicitly {@link google.protobuf.Timestamp.verify|verify} messages. + * @param {google.protobuf.Timestamp$Properties} message Timestamp message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Timestamp.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a Timestamp message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.protobuf.Timestamp} Timestamp + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Timestamp.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.Timestamp(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.seconds = reader.int64(); + break; + case 2: + message.nanos = reader.int32(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a Timestamp message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.protobuf.Timestamp} Timestamp + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Timestamp.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a Timestamp message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + Timestamp.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.seconds != null && message.hasOwnProperty("seconds")) + if (!$util.isInteger(message.seconds) && !(message.seconds && $util.isInteger(message.seconds.low) && $util.isInteger(message.seconds.high))) + return "seconds: integer|Long expected"; + if (message.nanos != null && message.hasOwnProperty("nanos")) + if (!$util.isInteger(message.nanos)) + return "nanos: integer expected"; + return null; + }; + + /** + * Creates a Timestamp message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {google.protobuf.Timestamp} Timestamp + */ + Timestamp.fromObject = function fromObject(object) { + if (object instanceof $root.google.protobuf.Timestamp) + return object; + var message = new $root.google.protobuf.Timestamp(); + if (object.seconds != null) + if ($util.Long) + (message.seconds = $util.Long.fromValue(object.seconds)).unsigned = false; + else if (typeof object.seconds === "string") + message.seconds = parseInt(object.seconds, 10); + else if (typeof object.seconds === "number") + message.seconds = object.seconds; + else if (typeof object.seconds === "object") + message.seconds = new $util.LongBits(object.seconds.low >>> 0, object.seconds.high >>> 0).toNumber(); + if (object.nanos != null) + message.nanos = object.nanos | 0; + return message; + }; + + /** + * Creates a Timestamp message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link google.protobuf.Timestamp.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {google.protobuf.Timestamp} Timestamp + */ + Timestamp.from = Timestamp.fromObject; + + /** + * Creates a plain object from a Timestamp message. Also converts values to other types if specified. + * @param {google.protobuf.Timestamp} message Timestamp + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Timestamp.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + if ($util.Long) { + var long = new $util.Long(0, 0, false); + object.seconds = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; + } else + object.seconds = options.longs === String ? "0" : 0; + object.nanos = 0; + } + if (message.seconds != null && message.hasOwnProperty("seconds")) + if (typeof message.seconds === "number") + object.seconds = options.longs === String ? String(message.seconds) : message.seconds; + else + object.seconds = options.longs === String ? $util.Long.prototype.toString.call(message.seconds) : options.longs === Number ? new $util.LongBits(message.seconds.low >>> 0, message.seconds.high >>> 0).toNumber() : message.seconds; + if (message.nanos != null && message.hasOwnProperty("nanos")) + object.nanos = message.nanos; + return object; + }; + + /** + * Creates a plain object from this Timestamp message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Timestamp.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this Timestamp to JSON. + * @returns {Object.} JSON object + */ + Timestamp.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return Timestamp; + })(); + + return protobuf; + })(); + + return google; +})(); + +$root.message = (function() { + + /** + * Namespace message. + * @exports message + * @namespace + */ + var message = {}; + + message.Line = (function() { + + /** + * Properties of a Line. + * @typedef message.Line$Properties + * @type {Object} + * @property {vec2$Properties} [normal] Line normal. + * @property {number} [distance] Line distance. + */ + + /** + * Constructs a new Line. + * @exports message.Line + * @constructor + * @param {message.Line$Properties=} [properties] Properties to set + */ + function Line(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Line normal. + * @type {(vec2$Properties|null)} + */ + Line.prototype.normal = null; + + /** + * Line distance. + * @type {number} + */ + Line.prototype.distance = 0; + + /** + * Creates a new Line instance using the specified properties. + * @param {message.Line$Properties=} [properties] Properties to set + * @returns {message.Line} Line instance + */ + Line.create = function create(properties) { + return new Line(properties); + }; + + /** + * Encodes the specified Line message. Does not implicitly {@link message.Line.verify|verify} messages. + * @param {message.Line$Properties} message Line message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Line.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.normal != null && message.hasOwnProperty("normal")) + $root.vec2.encode(message.normal, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.distance != null && message.hasOwnProperty("distance")) + writer.uint32(/* id 2, wireType 1 =*/17).double(message.distance); + return writer; + }; + + /** + * Encodes the specified Line message, length delimited. Does not implicitly {@link message.Line.verify|verify} messages. + * @param {message.Line$Properties} message Line message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Line.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a Line message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.Line} Line + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Line.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.Line(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.normal = $root.vec2.decode(reader, reader.uint32()); + break; + case 2: + message.distance = reader.double(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a Line message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.Line} Line + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Line.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a Line message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + Line.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.normal != null && message.hasOwnProperty("normal")) { + var error = $root.vec2.verify(message.normal); + if (error) + return "normal." + error; + } + if (message.distance != null && message.hasOwnProperty("distance")) + if (typeof message.distance !== "number") + return "distance: number expected"; + return null; + }; + + /** + * Creates a Line message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.Line} Line + */ + Line.fromObject = function fromObject(object) { + if (object instanceof $root.message.Line) + return object; + var message = new $root.message.Line(); + if (object.normal != null) { + if (typeof object.normal !== "object") + throw TypeError(".message.Line.normal: object expected"); + message.normal = $root.vec2.fromObject(object.normal); + } + if (object.distance != null) + message.distance = Number(object.distance); + return message; + }; + + /** + * Creates a Line message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.Line.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.Line} Line + */ + Line.from = Line.fromObject; + + /** + * Creates a plain object from a Line message. Also converts values to other types if specified. + * @param {message.Line} message Line + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Line.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.normal = null; + object.distance = 0; + } + if (message.normal != null && message.hasOwnProperty("normal")) + object.normal = $root.vec2.toObject(message.normal, options); + if (message.distance != null && message.hasOwnProperty("distance")) + object.distance = message.distance; + return object; + }; + + /** + * Creates a plain object from this Line message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Line.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this Line to JSON. + * @returns {Object.} JSON object + */ + Line.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return Line; + })(); + + message.Circle = (function() { + + /** + * Properties of a Circle. + * @typedef message.Circle$Properties + * @type {Object} + * @property {number} [radius] Circle radius. + * @property {vec2$Properties} [centre] Circle centre. + */ + + /** + * Constructs a new Circle. + * @exports message.Circle + * @constructor + * @param {message.Circle$Properties=} [properties] Properties to set + */ + function Circle(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Circle radius. + * @type {number} + */ + Circle.prototype.radius = 0; + + /** + * Circle centre. + * @type {(vec2$Properties|null)} + */ + Circle.prototype.centre = null; + + /** + * Creates a new Circle instance using the specified properties. + * @param {message.Circle$Properties=} [properties] Properties to set + * @returns {message.Circle} Circle instance + */ + Circle.create = function create(properties) { + return new Circle(properties); + }; + + /** + * Encodes the specified Circle message. Does not implicitly {@link message.Circle.verify|verify} messages. + * @param {message.Circle$Properties} message Circle message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Circle.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.radius != null && message.hasOwnProperty("radius")) + writer.uint32(/* id 1, wireType 1 =*/9).double(message.radius); + if (message.centre != null && message.hasOwnProperty("centre")) + $root.vec2.encode(message.centre, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified Circle message, length delimited. Does not implicitly {@link message.Circle.verify|verify} messages. + * @param {message.Circle$Properties} message Circle message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Circle.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a Circle message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.Circle} Circle + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Circle.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.Circle(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.radius = reader.double(); + break; + case 2: + message.centre = $root.vec2.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a Circle message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.Circle} Circle + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Circle.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a Circle message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + Circle.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.radius != null && message.hasOwnProperty("radius")) + if (typeof message.radius !== "number") + return "radius: number expected"; + if (message.centre != null && message.hasOwnProperty("centre")) { + var error = $root.vec2.verify(message.centre); + if (error) + return "centre." + error; + } + return null; + }; + + /** + * Creates a Circle message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.Circle} Circle + */ + Circle.fromObject = function fromObject(object) { + if (object instanceof $root.message.Circle) + return object; + var message = new $root.message.Circle(); + if (object.radius != null) + message.radius = Number(object.radius); + if (object.centre != null) { + if (typeof object.centre !== "object") + throw TypeError(".message.Circle.centre: object expected"); + message.centre = $root.vec2.fromObject(object.centre); + } + return message; + }; + + /** + * Creates a Circle message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.Circle.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.Circle} Circle + */ + Circle.from = Circle.fromObject; + + /** + * Creates a plain object from a Circle message. Also converts values to other types if specified. + * @param {message.Circle} message Circle + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Circle.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.radius = 0; + object.centre = null; + } + if (message.radius != null && message.hasOwnProperty("radius")) + object.radius = message.radius; + if (message.centre != null && message.hasOwnProperty("centre")) + object.centre = $root.vec2.toObject(message.centre, options); + return object; + }; + + /** + * Creates a plain object from this Circle message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Circle.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this Circle to JSON. + * @returns {Object.} JSON object + */ + Circle.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return Circle; + })(); + + message.Ellipse = (function() { + + /** + * Properties of an Ellipse. + * @typedef message.Ellipse$Properties + * @type {Object} + * @property {mat33$Properties} [ellipse] Ellipse ellipse. + */ + + /** + * Constructs a new Ellipse. + * @exports message.Ellipse + * @constructor + * @param {message.Ellipse$Properties=} [properties] Properties to set + */ + function Ellipse(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Ellipse ellipse. + * @type {(mat33$Properties|null)} + */ + Ellipse.prototype.ellipse = null; + + /** + * Creates a new Ellipse instance using the specified properties. + * @param {message.Ellipse$Properties=} [properties] Properties to set + * @returns {message.Ellipse} Ellipse instance + */ + Ellipse.create = function create(properties) { + return new Ellipse(properties); + }; + + /** + * Encodes the specified Ellipse message. Does not implicitly {@link message.Ellipse.verify|verify} messages. + * @param {message.Ellipse$Properties} message Ellipse message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Ellipse.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.ellipse != null && message.hasOwnProperty("ellipse")) + $root.mat33.encode(message.ellipse, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified Ellipse message, length delimited. Does not implicitly {@link message.Ellipse.verify|verify} messages. + * @param {message.Ellipse$Properties} message Ellipse message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Ellipse.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes an Ellipse message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.Ellipse} Ellipse + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Ellipse.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.Ellipse(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.ellipse = $root.mat33.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes an Ellipse message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.Ellipse} Ellipse + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Ellipse.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies an Ellipse message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + Ellipse.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.ellipse != null && message.hasOwnProperty("ellipse")) { + var error = $root.mat33.verify(message.ellipse); + if (error) + return "ellipse." + error; + } + return null; + }; + + /** + * Creates an Ellipse message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.Ellipse} Ellipse + */ + Ellipse.fromObject = function fromObject(object) { + if (object instanceof $root.message.Ellipse) + return object; + var message = new $root.message.Ellipse(); + if (object.ellipse != null) { + if (typeof object.ellipse !== "object") + throw TypeError(".message.Ellipse.ellipse: object expected"); + message.ellipse = $root.mat33.fromObject(object.ellipse); + } + return message; + }; + + /** + * Creates an Ellipse message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.Ellipse.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.Ellipse} Ellipse + */ + Ellipse.from = Ellipse.fromObject; + + /** + * Creates a plain object from an Ellipse message. Also converts values to other types if specified. + * @param {message.Ellipse} message Ellipse + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Ellipse.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) + object.ellipse = null; + if (message.ellipse != null && message.hasOwnProperty("ellipse")) + object.ellipse = $root.mat33.toObject(message.ellipse, options); + return object; + }; + + /** + * Creates a plain object from this Ellipse message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Ellipse.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this Ellipse to JSON. + * @returns {Object.} JSON object + */ + Ellipse.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return Ellipse; + })(); + + message.Quad = (function() { + + /** + * Properties of a Quad. + * @typedef message.Quad$Properties + * @type {Object} + * @property {vec2$Properties} [tl] Quad tl. + * @property {vec2$Properties} [tr] Quad tr. + * @property {vec2$Properties} [bl] Quad bl. + * @property {vec2$Properties} [br] Quad br. + */ + + /** + * Constructs a new Quad. + * @exports message.Quad + * @constructor + * @param {message.Quad$Properties=} [properties] Properties to set + */ + function Quad(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Quad tl. + * @type {(vec2$Properties|null)} + */ + Quad.prototype.tl = null; + + /** + * Quad tr. + * @type {(vec2$Properties|null)} + */ + Quad.prototype.tr = null; + + /** + * Quad bl. + * @type {(vec2$Properties|null)} + */ + Quad.prototype.bl = null; + + /** + * Quad br. + * @type {(vec2$Properties|null)} + */ + Quad.prototype.br = null; + + /** + * Creates a new Quad instance using the specified properties. + * @param {message.Quad$Properties=} [properties] Properties to set + * @returns {message.Quad} Quad instance + */ + Quad.create = function create(properties) { + return new Quad(properties); + }; + + /** + * Encodes the specified Quad message. Does not implicitly {@link message.Quad.verify|verify} messages. + * @param {message.Quad$Properties} message Quad message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Quad.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.tl != null && message.hasOwnProperty("tl")) + $root.vec2.encode(message.tl, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.tr != null && message.hasOwnProperty("tr")) + $root.vec2.encode(message.tr, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.bl != null && message.hasOwnProperty("bl")) + $root.vec2.encode(message.bl, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + if (message.br != null && message.hasOwnProperty("br")) + $root.vec2.encode(message.br, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified Quad message, length delimited. Does not implicitly {@link message.Quad.verify|verify} messages. + * @param {message.Quad$Properties} message Quad message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Quad.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a Quad message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.Quad} Quad + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Quad.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.Quad(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.tl = $root.vec2.decode(reader, reader.uint32()); + break; + case 2: + message.tr = $root.vec2.decode(reader, reader.uint32()); + break; + case 3: + message.bl = $root.vec2.decode(reader, reader.uint32()); + break; + case 4: + message.br = $root.vec2.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a Quad message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.Quad} Quad + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Quad.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a Quad message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + Quad.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.tl != null && message.hasOwnProperty("tl")) { + var error = $root.vec2.verify(message.tl); + if (error) + return "tl." + error; + } + if (message.tr != null && message.hasOwnProperty("tr")) { + var error = $root.vec2.verify(message.tr); + if (error) + return "tr." + error; + } + if (message.bl != null && message.hasOwnProperty("bl")) { + var error = $root.vec2.verify(message.bl); + if (error) + return "bl." + error; + } + if (message.br != null && message.hasOwnProperty("br")) { + var error = $root.vec2.verify(message.br); + if (error) + return "br." + error; + } + return null; + }; + + /** + * Creates a Quad message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.Quad} Quad + */ + Quad.fromObject = function fromObject(object) { + if (object instanceof $root.message.Quad) + return object; + var message = new $root.message.Quad(); + if (object.tl != null) { + if (typeof object.tl !== "object") + throw TypeError(".message.Quad.tl: object expected"); + message.tl = $root.vec2.fromObject(object.tl); + } + if (object.tr != null) { + if (typeof object.tr !== "object") + throw TypeError(".message.Quad.tr: object expected"); + message.tr = $root.vec2.fromObject(object.tr); + } + if (object.bl != null) { + if (typeof object.bl !== "object") + throw TypeError(".message.Quad.bl: object expected"); + message.bl = $root.vec2.fromObject(object.bl); + } + if (object.br != null) { + if (typeof object.br !== "object") + throw TypeError(".message.Quad.br: object expected"); + message.br = $root.vec2.fromObject(object.br); + } + return message; + }; + + /** + * Creates a Quad message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.Quad.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.Quad} Quad + */ + Quad.from = Quad.fromObject; + + /** + * Creates a plain object from a Quad message. Also converts values to other types if specified. + * @param {message.Quad} message Quad + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Quad.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.tl = null; + object.tr = null; + object.bl = null; + object.br = null; + } + if (message.tl != null && message.hasOwnProperty("tl")) + object.tl = $root.vec2.toObject(message.tl, options); + if (message.tr != null && message.hasOwnProperty("tr")) + object.tr = $root.vec2.toObject(message.tr, options); + if (message.bl != null && message.hasOwnProperty("bl")) + object.bl = $root.vec2.toObject(message.bl, options); + if (message.br != null && message.hasOwnProperty("br")) + object.br = $root.vec2.toObject(message.br, options); + return object; + }; + + /** + * Creates a plain object from this Quad message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Quad.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this Quad to JSON. + * @returns {Object.} JSON object + */ + Quad.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return Quad; + })(); + + message.Polygon = (function() { + + /** + * Properties of a Polygon. + * @typedef message.Polygon$Properties + * @type {Object} + * @property {vec2$Properties} [point] Polygon point. + */ + + /** + * Constructs a new Polygon. + * @exports message.Polygon + * @constructor + * @param {message.Polygon$Properties=} [properties] Properties to set + */ + function Polygon(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Polygon point. + * @type {(vec2$Properties|null)} + */ + Polygon.prototype.point = null; + + /** + * Creates a new Polygon instance using the specified properties. + * @param {message.Polygon$Properties=} [properties] Properties to set + * @returns {message.Polygon} Polygon instance + */ + Polygon.create = function create(properties) { + return new Polygon(properties); + }; + + /** + * Encodes the specified Polygon message. Does not implicitly {@link message.Polygon.verify|verify} messages. + * @param {message.Polygon$Properties} message Polygon message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Polygon.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.point != null && message.hasOwnProperty("point")) + $root.vec2.encode(message.point, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified Polygon message, length delimited. Does not implicitly {@link message.Polygon.verify|verify} messages. + * @param {message.Polygon$Properties} message Polygon message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Polygon.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a Polygon message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.Polygon} Polygon + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Polygon.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.Polygon(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.point = $root.vec2.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a Polygon message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.Polygon} Polygon + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Polygon.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a Polygon message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + Polygon.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.point != null && message.hasOwnProperty("point")) { + var error = $root.vec2.verify(message.point); + if (error) + return "point." + error; + } + return null; + }; + + /** + * Creates a Polygon message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.Polygon} Polygon + */ + Polygon.fromObject = function fromObject(object) { + if (object instanceof $root.message.Polygon) + return object; + var message = new $root.message.Polygon(); + if (object.point != null) { + if (typeof object.point !== "object") + throw TypeError(".message.Polygon.point: object expected"); + message.point = $root.vec2.fromObject(object.point); + } + return message; + }; + + /** + * Creates a Polygon message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.Polygon.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.Polygon} Polygon + */ + Polygon.from = Polygon.fromObject; + + /** + * Creates a plain object from a Polygon message. Also converts values to other types if specified. + * @param {message.Polygon} message Polygon + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Polygon.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) + object.point = null; + if (message.point != null && message.hasOwnProperty("point")) + object.point = $root.vec2.toObject(message.point, options); + return object; + }; + + /** + * Creates a plain object from this Polygon message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Polygon.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this Polygon to JSON. + * @returns {Object.} JSON object + */ + Polygon.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return Polygon; + })(); + + message.audio = (function() { + + /** + * Namespace audio. + * @exports message.audio + * @namespace + */ + var audio = {}; + + audio.Beat = (function() { + + /** + * Properties of a Beat. + * @typedef message.audio.Beat$Properties + * @type {Object} + * @property {google.protobuf.Timestamp$Properties} [timestamp] Beat timestamp. + * @property {google.protobuf.Duration$Properties} [period] Beat period. + */ + + /** + * Constructs a new Beat. + * @exports message.audio.Beat + * @constructor + * @param {message.audio.Beat$Properties=} [properties] Properties to set + */ + function Beat(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Beat timestamp. + * @type {(google.protobuf.Timestamp$Properties|null)} + */ + Beat.prototype.timestamp = null; + + /** + * Beat period. + * @type {(google.protobuf.Duration$Properties|null)} + */ + Beat.prototype.period = null; + + /** + * Creates a new Beat instance using the specified properties. + * @param {message.audio.Beat$Properties=} [properties] Properties to set + * @returns {message.audio.Beat} Beat instance + */ + Beat.create = function create(properties) { + return new Beat(properties); + }; + + /** + * Encodes the specified Beat message. Does not implicitly {@link message.audio.Beat.verify|verify} messages. + * @param {message.audio.Beat$Properties} message Beat message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Beat.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.timestamp != null && message.hasOwnProperty("timestamp")) + $root.google.protobuf.Timestamp.encode(message.timestamp, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.period != null && message.hasOwnProperty("period")) + $root.google.protobuf.Duration.encode(message.period, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified Beat message, length delimited. Does not implicitly {@link message.audio.Beat.verify|verify} messages. + * @param {message.audio.Beat$Properties} message Beat message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Beat.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a Beat message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.audio.Beat} Beat + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Beat.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.audio.Beat(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.timestamp = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); + break; + case 2: + message.period = $root.google.protobuf.Duration.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a Beat message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.audio.Beat} Beat + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Beat.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a Beat message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + Beat.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.timestamp != null && message.hasOwnProperty("timestamp")) { + var error = $root.google.protobuf.Timestamp.verify(message.timestamp); + if (error) + return "timestamp." + error; + } + if (message.period != null && message.hasOwnProperty("period")) { + var error = $root.google.protobuf.Duration.verify(message.period); + if (error) + return "period." + error; + } + return null; + }; + + /** + * Creates a Beat message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.audio.Beat} Beat + */ + Beat.fromObject = function fromObject(object) { + if (object instanceof $root.message.audio.Beat) + return object; + var message = new $root.message.audio.Beat(); + if (object.timestamp != null) { + if (typeof object.timestamp !== "object") + throw TypeError(".message.audio.Beat.timestamp: object expected"); + message.timestamp = $root.google.protobuf.Timestamp.fromObject(object.timestamp); + } + if (object.period != null) { + if (typeof object.period !== "object") + throw TypeError(".message.audio.Beat.period: object expected"); + message.period = $root.google.protobuf.Duration.fromObject(object.period); + } + return message; + }; + + /** + * Creates a Beat message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.audio.Beat.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.audio.Beat} Beat + */ + Beat.from = Beat.fromObject; + + /** + * Creates a plain object from a Beat message. Also converts values to other types if specified. + * @param {message.audio.Beat} message Beat + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Beat.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.timestamp = null; + object.period = null; + } + if (message.timestamp != null && message.hasOwnProperty("timestamp")) + object.timestamp = $root.google.protobuf.Timestamp.toObject(message.timestamp, options); + if (message.period != null && message.hasOwnProperty("period")) + object.period = $root.google.protobuf.Duration.toObject(message.period, options); + return object; + }; + + /** + * Creates a plain object from this Beat message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Beat.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this Beat to JSON. + * @returns {Object.} JSON object + */ + Beat.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return Beat; + })(); + + return audio; + })(); + + message.behaviour = (function() { + + /** + * Namespace behaviour. + * @exports message.behaviour + * @namespace + */ + var behaviour = {}; + + behaviour.Behaviour = (function() { + + /** + * Properties of a Behaviour. + * @typedef message.behaviour.Behaviour$Properties + * @type {Object} + * @property {message.behaviour.Behaviour.State} [state] Behaviour state. + */ + + /** + * Constructs a new Behaviour. + * @exports message.behaviour.Behaviour + * @constructor + * @param {message.behaviour.Behaviour$Properties=} [properties] Properties to set + */ + function Behaviour(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Behaviour state. + * @type {message.behaviour.Behaviour.State} + */ + Behaviour.prototype.state = 0; + + /** + * Creates a new Behaviour instance using the specified properties. + * @param {message.behaviour.Behaviour$Properties=} [properties] Properties to set + * @returns {message.behaviour.Behaviour} Behaviour instance + */ + Behaviour.create = function create(properties) { + return new Behaviour(properties); + }; + + /** + * Encodes the specified Behaviour message. Does not implicitly {@link message.behaviour.Behaviour.verify|verify} messages. + * @param {message.behaviour.Behaviour$Properties} message Behaviour message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Behaviour.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.state != null && message.hasOwnProperty("state")) + writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.state); + return writer; + }; + + /** + * Encodes the specified Behaviour message, length delimited. Does not implicitly {@link message.behaviour.Behaviour.verify|verify} messages. + * @param {message.behaviour.Behaviour$Properties} message Behaviour message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Behaviour.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a Behaviour message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.behaviour.Behaviour} Behaviour + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Behaviour.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.behaviour.Behaviour(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.state = reader.uint32(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a Behaviour message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.behaviour.Behaviour} Behaviour + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Behaviour.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a Behaviour message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + Behaviour.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.state != null && message.hasOwnProperty("state")) + switch (message.state) { + default: + return "state: enum value expected"; + case 0: + case 1: + case 2: + case 3: + case 4: + case 5: + case 6: + case 7: + case 8: + case 9: + case 10: + case 11: + case 12: + case 13: + case 14: + break; + } + return null; + }; + + /** + * Creates a Behaviour message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.behaviour.Behaviour} Behaviour + */ + Behaviour.fromObject = function fromObject(object) { + if (object instanceof $root.message.behaviour.Behaviour) + return object; + var message = new $root.message.behaviour.Behaviour(); + switch (object.state) { + case "UNKNOWN": + case 0: + message.state = 0; + break; + case "INIT": + case 1: + message.state = 1; + break; + case "SEARCH_FOR_BALL": + case 2: + message.state = 2; + break; + case "SEARCH_FOR_GOALS": + case 3: + message.state = 3; + break; + case "WALK_TO_BALL": + case 4: + message.state = 4; + break; + case "PICKED_UP": + case 5: + message.state = 5; + break; + case "INITIAL": + case 6: + message.state = 6; + break; + case "READY": + case 7: + message.state = 7; + break; + case "SET": + case 8: + message.state = 8; + break; + case "TIMEOUT": + case 9: + message.state = 9; + break; + case "FINISHED": + case 10: + message.state = 10; + break; + case "PENALISED": + case 11: + message.state = 11; + break; + case "GOALIE_WALK": + case 12: + message.state = 12; + break; + case "MOVE_TO_CENTRE": + case 13: + message.state = 13; + break; + case "LOCALISING": + case 14: + message.state = 14; + break; + } + return message; + }; + + /** + * Creates a Behaviour message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.behaviour.Behaviour.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.behaviour.Behaviour} Behaviour + */ + Behaviour.from = Behaviour.fromObject; + + /** + * Creates a plain object from a Behaviour message. Also converts values to other types if specified. + * @param {message.behaviour.Behaviour} message Behaviour + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Behaviour.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) + object.state = options.enums === String ? "UNKNOWN" : 0; + if (message.state != null && message.hasOwnProperty("state")) + object.state = options.enums === String ? $root.message.behaviour.Behaviour.State[message.state] : message.state; + return object; + }; + + /** + * Creates a plain object from this Behaviour message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Behaviour.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this Behaviour to JSON. + * @returns {Object.} JSON object + */ + Behaviour.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * State enum. + * @name State + * @memberof message.behaviour.Behaviour + * @enum {number} + * @property {number} UNKNOWN=0 UNKNOWN value + * @property {number} INIT=1 INIT value + * @property {number} SEARCH_FOR_BALL=2 SEARCH_FOR_BALL value + * @property {number} SEARCH_FOR_GOALS=3 SEARCH_FOR_GOALS value + * @property {number} WALK_TO_BALL=4 WALK_TO_BALL value + * @property {number} PICKED_UP=5 PICKED_UP value + * @property {number} INITIAL=6 INITIAL value + * @property {number} READY=7 READY value + * @property {number} SET=8 SET value + * @property {number} TIMEOUT=9 TIMEOUT value + * @property {number} FINISHED=10 FINISHED value + * @property {number} PENALISED=11 PENALISED value + * @property {number} GOALIE_WALK=12 GOALIE_WALK value + * @property {number} MOVE_TO_CENTRE=13 MOVE_TO_CENTRE value + * @property {number} LOCALISING=14 LOCALISING value + */ + Behaviour.State = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "UNKNOWN"] = 0; + values[valuesById[1] = "INIT"] = 1; + values[valuesById[2] = "SEARCH_FOR_BALL"] = 2; + values[valuesById[3] = "SEARCH_FOR_GOALS"] = 3; + values[valuesById[4] = "WALK_TO_BALL"] = 4; + values[valuesById[5] = "PICKED_UP"] = 5; + values[valuesById[6] = "INITIAL"] = 6; + values[valuesById[7] = "READY"] = 7; + values[valuesById[8] = "SET"] = 8; + values[valuesById[9] = "TIMEOUT"] = 9; + values[valuesById[10] = "FINISHED"] = 10; + values[valuesById[11] = "PENALISED"] = 11; + values[valuesById[12] = "GOALIE_WALK"] = 12; + values[valuesById[13] = "MOVE_TO_CENTRE"] = 13; + values[valuesById[14] = "LOCALISING"] = 14; + return values; + })(); + + return Behaviour; + })(); + + behaviour.FieldTarget = (function() { + + /** + * Properties of a FieldTarget. + * @typedef message.behaviour.FieldTarget$Properties + * @type {Object} + * @property {message.behaviour.FieldTarget.Target} [target] FieldTarget target. + */ + + /** + * Constructs a new FieldTarget. + * @exports message.behaviour.FieldTarget + * @constructor + * @param {message.behaviour.FieldTarget$Properties=} [properties] Properties to set + */ + function FieldTarget(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * FieldTarget target. + * @type {message.behaviour.FieldTarget.Target} + */ + FieldTarget.prototype.target = 0; + + /** + * Creates a new FieldTarget instance using the specified properties. + * @param {message.behaviour.FieldTarget$Properties=} [properties] Properties to set + * @returns {message.behaviour.FieldTarget} FieldTarget instance + */ + FieldTarget.create = function create(properties) { + return new FieldTarget(properties); + }; + + /** + * Encodes the specified FieldTarget message. Does not implicitly {@link message.behaviour.FieldTarget.verify|verify} messages. + * @param {message.behaviour.FieldTarget$Properties} message FieldTarget message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + FieldTarget.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.target != null && message.hasOwnProperty("target")) + writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.target); + return writer; + }; + + /** + * Encodes the specified FieldTarget message, length delimited. Does not implicitly {@link message.behaviour.FieldTarget.verify|verify} messages. + * @param {message.behaviour.FieldTarget$Properties} message FieldTarget message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + FieldTarget.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a FieldTarget message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.behaviour.FieldTarget} FieldTarget + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + FieldTarget.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.behaviour.FieldTarget(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.target = reader.uint32(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a FieldTarget message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.behaviour.FieldTarget} FieldTarget + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + FieldTarget.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a FieldTarget message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + FieldTarget.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.target != null && message.hasOwnProperty("target")) + switch (message.target) { + default: + return "target: enum value expected"; + case 0: + case 1: + case 2: + break; + } + return null; + }; + + /** + * Creates a FieldTarget message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.behaviour.FieldTarget} FieldTarget + */ + FieldTarget.fromObject = function fromObject(object) { + if (object instanceof $root.message.behaviour.FieldTarget) + return object; + var message = new $root.message.behaviour.FieldTarget(); + switch (object.target) { + case "SELF": + case 0: + message.target = 0; + break; + case "BALL": + case 1: + message.target = 1; + break; + case "GOAL": + case 2: + message.target = 2; + break; + } + return message; + }; + + /** + * Creates a FieldTarget message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.behaviour.FieldTarget.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.behaviour.FieldTarget} FieldTarget + */ + FieldTarget.from = FieldTarget.fromObject; + + /** + * Creates a plain object from a FieldTarget message. Also converts values to other types if specified. + * @param {message.behaviour.FieldTarget} message FieldTarget + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + FieldTarget.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) + object.target = options.enums === String ? "SELF" : 0; + if (message.target != null && message.hasOwnProperty("target")) + object.target = options.enums === String ? $root.message.behaviour.FieldTarget.Target[message.target] : message.target; + return object; + }; + + /** + * Creates a plain object from this FieldTarget message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + FieldTarget.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this FieldTarget to JSON. + * @returns {Object.} JSON object + */ + FieldTarget.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Target enum. + * @name Target + * @memberof message.behaviour.FieldTarget + * @enum {number} + * @property {number} SELF=0 SELF value + * @property {number} BALL=1 BALL value + * @property {number} GOAL=2 GOAL value + */ + FieldTarget.Target = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "SELF"] = 0; + values[valuesById[1] = "BALL"] = 1; + values[valuesById[2] = "GOAL"] = 2; + return values; + })(); + + return FieldTarget; + })(); + + behaviour.FixedWalkFinished = (function() { + + /** + * Properties of a FixedWalkFinished. + * @typedef message.behaviour.FixedWalkFinished$Properties + * @type {Object} + */ + + /** + * Constructs a new FixedWalkFinished. + * @exports message.behaviour.FixedWalkFinished + * @constructor + * @param {message.behaviour.FixedWalkFinished$Properties=} [properties] Properties to set + */ + function FixedWalkFinished(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Creates a new FixedWalkFinished instance using the specified properties. + * @param {message.behaviour.FixedWalkFinished$Properties=} [properties] Properties to set + * @returns {message.behaviour.FixedWalkFinished} FixedWalkFinished instance + */ + FixedWalkFinished.create = function create(properties) { + return new FixedWalkFinished(properties); + }; + + /** + * Encodes the specified FixedWalkFinished message. Does not implicitly {@link message.behaviour.FixedWalkFinished.verify|verify} messages. + * @param {message.behaviour.FixedWalkFinished$Properties} message FixedWalkFinished message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + FixedWalkFinished.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + return writer; + }; + + /** + * Encodes the specified FixedWalkFinished message, length delimited. Does not implicitly {@link message.behaviour.FixedWalkFinished.verify|verify} messages. + * @param {message.behaviour.FixedWalkFinished$Properties} message FixedWalkFinished message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + FixedWalkFinished.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a FixedWalkFinished message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.behaviour.FixedWalkFinished} FixedWalkFinished + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + FixedWalkFinished.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.behaviour.FixedWalkFinished(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a FixedWalkFinished message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.behaviour.FixedWalkFinished} FixedWalkFinished + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + FixedWalkFinished.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a FixedWalkFinished message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + FixedWalkFinished.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + return null; + }; + + /** + * Creates a FixedWalkFinished message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.behaviour.FixedWalkFinished} FixedWalkFinished + */ + FixedWalkFinished.fromObject = function fromObject(object) { + if (object instanceof $root.message.behaviour.FixedWalkFinished) + return object; + return new $root.message.behaviour.FixedWalkFinished(); + }; + + /** + * Creates a FixedWalkFinished message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.behaviour.FixedWalkFinished.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.behaviour.FixedWalkFinished} FixedWalkFinished + */ + FixedWalkFinished.from = FixedWalkFinished.fromObject; + + /** + * Creates a plain object from a FixedWalkFinished message. Also converts values to other types if specified. + * @param {message.behaviour.FixedWalkFinished} message FixedWalkFinished + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + FixedWalkFinished.toObject = function toObject() { + return {}; + }; + + /** + * Creates a plain object from this FixedWalkFinished message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + FixedWalkFinished.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this FixedWalkFinished to JSON. + * @returns {Object.} JSON object + */ + FixedWalkFinished.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return FixedWalkFinished; + })(); + + behaviour.WalkConfigSaved = (function() { + + /** + * Properties of a WalkConfigSaved. + * @typedef message.behaviour.WalkConfigSaved$Properties + * @type {Object} + */ + + /** + * Constructs a new WalkConfigSaved. + * @exports message.behaviour.WalkConfigSaved + * @constructor + * @param {message.behaviour.WalkConfigSaved$Properties=} [properties] Properties to set + */ + function WalkConfigSaved(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Creates a new WalkConfigSaved instance using the specified properties. + * @param {message.behaviour.WalkConfigSaved$Properties=} [properties] Properties to set + * @returns {message.behaviour.WalkConfigSaved} WalkConfigSaved instance + */ + WalkConfigSaved.create = function create(properties) { + return new WalkConfigSaved(properties); + }; + + /** + * Encodes the specified WalkConfigSaved message. Does not implicitly {@link message.behaviour.WalkConfigSaved.verify|verify} messages. + * @param {message.behaviour.WalkConfigSaved$Properties} message WalkConfigSaved message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + WalkConfigSaved.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + return writer; + }; + + /** + * Encodes the specified WalkConfigSaved message, length delimited. Does not implicitly {@link message.behaviour.WalkConfigSaved.verify|verify} messages. + * @param {message.behaviour.WalkConfigSaved$Properties} message WalkConfigSaved message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + WalkConfigSaved.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a WalkConfigSaved message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.behaviour.WalkConfigSaved} WalkConfigSaved + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + WalkConfigSaved.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.behaviour.WalkConfigSaved(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a WalkConfigSaved message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.behaviour.WalkConfigSaved} WalkConfigSaved + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + WalkConfigSaved.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a WalkConfigSaved message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + WalkConfigSaved.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + return null; + }; + + /** + * Creates a WalkConfigSaved message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.behaviour.WalkConfigSaved} WalkConfigSaved + */ + WalkConfigSaved.fromObject = function fromObject(object) { + if (object instanceof $root.message.behaviour.WalkConfigSaved) + return object; + return new $root.message.behaviour.WalkConfigSaved(); + }; + + /** + * Creates a WalkConfigSaved message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.behaviour.WalkConfigSaved.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.behaviour.WalkConfigSaved} WalkConfigSaved + */ + WalkConfigSaved.from = WalkConfigSaved.fromObject; + + /** + * Creates a plain object from a WalkConfigSaved message. Also converts values to other types if specified. + * @param {message.behaviour.WalkConfigSaved} message WalkConfigSaved + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + WalkConfigSaved.toObject = function toObject() { + return {}; + }; + + /** + * Creates a plain object from this WalkConfigSaved message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + WalkConfigSaved.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this WalkConfigSaved to JSON. + * @returns {Object.} JSON object + */ + WalkConfigSaved.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return WalkConfigSaved; + })(); + + behaviour.CancelFixedWalk = (function() { + + /** + * Properties of a CancelFixedWalk. + * @typedef message.behaviour.CancelFixedWalk$Properties + * @type {Object} + */ + + /** + * Constructs a new CancelFixedWalk. + * @exports message.behaviour.CancelFixedWalk + * @constructor + * @param {message.behaviour.CancelFixedWalk$Properties=} [properties] Properties to set + */ + function CancelFixedWalk(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Creates a new CancelFixedWalk instance using the specified properties. + * @param {message.behaviour.CancelFixedWalk$Properties=} [properties] Properties to set + * @returns {message.behaviour.CancelFixedWalk} CancelFixedWalk instance + */ + CancelFixedWalk.create = function create(properties) { + return new CancelFixedWalk(properties); + }; + + /** + * Encodes the specified CancelFixedWalk message. Does not implicitly {@link message.behaviour.CancelFixedWalk.verify|verify} messages. + * @param {message.behaviour.CancelFixedWalk$Properties} message CancelFixedWalk message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + CancelFixedWalk.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + return writer; + }; + + /** + * Encodes the specified CancelFixedWalk message, length delimited. Does not implicitly {@link message.behaviour.CancelFixedWalk.verify|verify} messages. + * @param {message.behaviour.CancelFixedWalk$Properties} message CancelFixedWalk message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + CancelFixedWalk.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a CancelFixedWalk message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.behaviour.CancelFixedWalk} CancelFixedWalk + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + CancelFixedWalk.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.behaviour.CancelFixedWalk(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a CancelFixedWalk message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.behaviour.CancelFixedWalk} CancelFixedWalk + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + CancelFixedWalk.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a CancelFixedWalk message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + CancelFixedWalk.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + return null; + }; + + /** + * Creates a CancelFixedWalk message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.behaviour.CancelFixedWalk} CancelFixedWalk + */ + CancelFixedWalk.fromObject = function fromObject(object) { + if (object instanceof $root.message.behaviour.CancelFixedWalk) + return object; + return new $root.message.behaviour.CancelFixedWalk(); + }; + + /** + * Creates a CancelFixedWalk message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.behaviour.CancelFixedWalk.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.behaviour.CancelFixedWalk} CancelFixedWalk + */ + CancelFixedWalk.from = CancelFixedWalk.fromObject; + + /** + * Creates a plain object from a CancelFixedWalk message. Also converts values to other types if specified. + * @param {message.behaviour.CancelFixedWalk} message CancelFixedWalk + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + CancelFixedWalk.toObject = function toObject() { + return {}; + }; + + /** + * Creates a plain object from this CancelFixedWalk message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + CancelFixedWalk.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this CancelFixedWalk to JSON. + * @returns {Object.} JSON object + */ + CancelFixedWalk.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return CancelFixedWalk; + })(); + + behaviour.WalkOptimiserCommand = (function() { + + /** + * Properties of a WalkOptimiserCommand. + * @typedef message.behaviour.WalkOptimiserCommand$Properties + * @type {Object} + * @property {string} [walkConfig] WalkOptimiserCommand walkConfig. + */ + + /** + * Constructs a new WalkOptimiserCommand. + * @exports message.behaviour.WalkOptimiserCommand + * @constructor + * @param {message.behaviour.WalkOptimiserCommand$Properties=} [properties] Properties to set + */ + function WalkOptimiserCommand(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * WalkOptimiserCommand walkConfig. + * @type {string} + */ + WalkOptimiserCommand.prototype.walkConfig = ""; + + /** + * Creates a new WalkOptimiserCommand instance using the specified properties. + * @param {message.behaviour.WalkOptimiserCommand$Properties=} [properties] Properties to set + * @returns {message.behaviour.WalkOptimiserCommand} WalkOptimiserCommand instance + */ + WalkOptimiserCommand.create = function create(properties) { + return new WalkOptimiserCommand(properties); + }; + + /** + * Encodes the specified WalkOptimiserCommand message. Does not implicitly {@link message.behaviour.WalkOptimiserCommand.verify|verify} messages. + * @param {message.behaviour.WalkOptimiserCommand$Properties} message WalkOptimiserCommand message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + WalkOptimiserCommand.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.walkConfig != null && message.hasOwnProperty("walkConfig")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.walkConfig); + return writer; + }; + + /** + * Encodes the specified WalkOptimiserCommand message, length delimited. Does not implicitly {@link message.behaviour.WalkOptimiserCommand.verify|verify} messages. + * @param {message.behaviour.WalkOptimiserCommand$Properties} message WalkOptimiserCommand message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + WalkOptimiserCommand.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a WalkOptimiserCommand message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.behaviour.WalkOptimiserCommand} WalkOptimiserCommand + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + WalkOptimiserCommand.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.behaviour.WalkOptimiserCommand(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.walkConfig = reader.string(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a WalkOptimiserCommand message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.behaviour.WalkOptimiserCommand} WalkOptimiserCommand + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + WalkOptimiserCommand.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a WalkOptimiserCommand message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + WalkOptimiserCommand.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.walkConfig != null && message.hasOwnProperty("walkConfig")) + if (!$util.isString(message.walkConfig)) + return "walkConfig: string expected"; + return null; + }; + + /** + * Creates a WalkOptimiserCommand message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.behaviour.WalkOptimiserCommand} WalkOptimiserCommand + */ + WalkOptimiserCommand.fromObject = function fromObject(object) { + if (object instanceof $root.message.behaviour.WalkOptimiserCommand) + return object; + var message = new $root.message.behaviour.WalkOptimiserCommand(); + if (object.walkConfig != null) + message.walkConfig = String(object.walkConfig); + return message; + }; + + /** + * Creates a WalkOptimiserCommand message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.behaviour.WalkOptimiserCommand.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.behaviour.WalkOptimiserCommand} WalkOptimiserCommand + */ + WalkOptimiserCommand.from = WalkOptimiserCommand.fromObject; + + /** + * Creates a plain object from a WalkOptimiserCommand message. Also converts values to other types if specified. + * @param {message.behaviour.WalkOptimiserCommand} message WalkOptimiserCommand + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + WalkOptimiserCommand.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) + object.walkConfig = ""; + if (message.walkConfig != null && message.hasOwnProperty("walkConfig")) + object.walkConfig = message.walkConfig; + return object; + }; + + /** + * Creates a plain object from this WalkOptimiserCommand message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + WalkOptimiserCommand.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this WalkOptimiserCommand to JSON. + * @returns {Object.} JSON object + */ + WalkOptimiserCommand.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return WalkOptimiserCommand; + })(); + + behaviour.FixedWalkCommand = (function() { + + /** + * Properties of a FixedWalkCommand. + * @typedef message.behaviour.FixedWalkCommand$Properties + * @type {Object} + * @property {Array.} [segments] FixedWalkCommand segments. + */ + + /** + * Constructs a new FixedWalkCommand. + * @exports message.behaviour.FixedWalkCommand + * @constructor + * @param {message.behaviour.FixedWalkCommand$Properties=} [properties] Properties to set + */ + function FixedWalkCommand(properties) { + this.segments = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * FixedWalkCommand segments. + * @type {Array.} + */ + FixedWalkCommand.prototype.segments = $util.emptyArray; + + /** + * Creates a new FixedWalkCommand instance using the specified properties. + * @param {message.behaviour.FixedWalkCommand$Properties=} [properties] Properties to set + * @returns {message.behaviour.FixedWalkCommand} FixedWalkCommand instance + */ + FixedWalkCommand.create = function create(properties) { + return new FixedWalkCommand(properties); + }; + + /** + * Encodes the specified FixedWalkCommand message. Does not implicitly {@link message.behaviour.FixedWalkCommand.verify|verify} messages. + * @param {message.behaviour.FixedWalkCommand$Properties} message FixedWalkCommand message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + FixedWalkCommand.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.segments != null && message.segments.length) + for (var i = 0; i < message.segments.length; ++i) + $root.message.behaviour.FixedWalkCommand.WalkSegment.encode(message.segments[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified FixedWalkCommand message, length delimited. Does not implicitly {@link message.behaviour.FixedWalkCommand.verify|verify} messages. + * @param {message.behaviour.FixedWalkCommand$Properties} message FixedWalkCommand message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + FixedWalkCommand.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a FixedWalkCommand message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.behaviour.FixedWalkCommand} FixedWalkCommand + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + FixedWalkCommand.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.behaviour.FixedWalkCommand(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (!(message.segments && message.segments.length)) + message.segments = []; + message.segments.push($root.message.behaviour.FixedWalkCommand.WalkSegment.decode(reader, reader.uint32())); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a FixedWalkCommand message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.behaviour.FixedWalkCommand} FixedWalkCommand + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + FixedWalkCommand.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a FixedWalkCommand message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + FixedWalkCommand.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.segments != null && message.hasOwnProperty("segments")) { + if (!Array.isArray(message.segments)) + return "segments: array expected"; + for (var i = 0; i < message.segments.length; ++i) { + var error = $root.message.behaviour.FixedWalkCommand.WalkSegment.verify(message.segments[i]); + if (error) + return "segments." + error; + } + } + return null; + }; + + /** + * Creates a FixedWalkCommand message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.behaviour.FixedWalkCommand} FixedWalkCommand + */ + FixedWalkCommand.fromObject = function fromObject(object) { + if (object instanceof $root.message.behaviour.FixedWalkCommand) + return object; + var message = new $root.message.behaviour.FixedWalkCommand(); + if (object.segments) { + if (!Array.isArray(object.segments)) + throw TypeError(".message.behaviour.FixedWalkCommand.segments: array expected"); + message.segments = []; + for (var i = 0; i < object.segments.length; ++i) { + if (typeof object.segments[i] !== "object") + throw TypeError(".message.behaviour.FixedWalkCommand.segments: object expected"); + message.segments[i] = $root.message.behaviour.FixedWalkCommand.WalkSegment.fromObject(object.segments[i]); + } + } + return message; + }; + + /** + * Creates a FixedWalkCommand message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.behaviour.FixedWalkCommand.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.behaviour.FixedWalkCommand} FixedWalkCommand + */ + FixedWalkCommand.from = FixedWalkCommand.fromObject; + + /** + * Creates a plain object from a FixedWalkCommand message. Also converts values to other types if specified. + * @param {message.behaviour.FixedWalkCommand} message FixedWalkCommand + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + FixedWalkCommand.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.segments = []; + if (message.segments && message.segments.length) { + object.segments = []; + for (var j = 0; j < message.segments.length; ++j) + object.segments[j] = $root.message.behaviour.FixedWalkCommand.WalkSegment.toObject(message.segments[j], options); + } + return object; + }; + + /** + * Creates a plain object from this FixedWalkCommand message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + FixedWalkCommand.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this FixedWalkCommand to JSON. + * @returns {Object.} JSON object + */ + FixedWalkCommand.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + FixedWalkCommand.WalkSegment = (function() { + + /** + * Properties of a WalkSegment. + * @typedef message.behaviour.FixedWalkCommand.WalkSegment$Properties + * @type {Object} + * @property {vec2$Properties} [direction] WalkSegment direction. + * @property {number} [curvePeriod] WalkSegment curvePeriod. + * @property {number} [normalisedVelocity] WalkSegment normalisedVelocity. + * @property {number} [normalisedAngularVelocity] WalkSegment normalisedAngularVelocity. + * @property {google.protobuf.Duration$Properties} [duration] WalkSegment duration. + */ + + /** + * Constructs a new WalkSegment. + * @exports message.behaviour.FixedWalkCommand.WalkSegment + * @constructor + * @param {message.behaviour.FixedWalkCommand.WalkSegment$Properties=} [properties] Properties to set + */ + function WalkSegment(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * WalkSegment direction. + * @type {(vec2$Properties|null)} + */ + WalkSegment.prototype.direction = null; + + /** + * WalkSegment curvePeriod. + * @type {number} + */ + WalkSegment.prototype.curvePeriod = 0; + + /** + * WalkSegment normalisedVelocity. + * @type {number} + */ + WalkSegment.prototype.normalisedVelocity = 0; + + /** + * WalkSegment normalisedAngularVelocity. + * @type {number} + */ + WalkSegment.prototype.normalisedAngularVelocity = 0; + + /** + * WalkSegment duration. + * @type {(google.protobuf.Duration$Properties|null)} + */ + WalkSegment.prototype.duration = null; + + /** + * Creates a new WalkSegment instance using the specified properties. + * @param {message.behaviour.FixedWalkCommand.WalkSegment$Properties=} [properties] Properties to set + * @returns {message.behaviour.FixedWalkCommand.WalkSegment} WalkSegment instance + */ + WalkSegment.create = function create(properties) { + return new WalkSegment(properties); + }; + + /** + * Encodes the specified WalkSegment message. Does not implicitly {@link message.behaviour.FixedWalkCommand.WalkSegment.verify|verify} messages. + * @param {message.behaviour.FixedWalkCommand.WalkSegment$Properties} message WalkSegment message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + WalkSegment.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.direction != null && message.hasOwnProperty("direction")) + $root.vec2.encode(message.direction, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.curvePeriod != null && message.hasOwnProperty("curvePeriod")) + writer.uint32(/* id 2, wireType 1 =*/17).double(message.curvePeriod); + if (message.normalisedVelocity != null && message.hasOwnProperty("normalisedVelocity")) + writer.uint32(/* id 3, wireType 1 =*/25).double(message.normalisedVelocity); + if (message.normalisedAngularVelocity != null && message.hasOwnProperty("normalisedAngularVelocity")) + writer.uint32(/* id 4, wireType 1 =*/33).double(message.normalisedAngularVelocity); + if (message.duration != null && message.hasOwnProperty("duration")) + $root.google.protobuf.Duration.encode(message.duration, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified WalkSegment message, length delimited. Does not implicitly {@link message.behaviour.FixedWalkCommand.WalkSegment.verify|verify} messages. + * @param {message.behaviour.FixedWalkCommand.WalkSegment$Properties} message WalkSegment message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + WalkSegment.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a WalkSegment message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.behaviour.FixedWalkCommand.WalkSegment} WalkSegment + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + WalkSegment.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.behaviour.FixedWalkCommand.WalkSegment(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.direction = $root.vec2.decode(reader, reader.uint32()); + break; + case 2: + message.curvePeriod = reader.double(); + break; + case 3: + message.normalisedVelocity = reader.double(); + break; + case 4: + message.normalisedAngularVelocity = reader.double(); + break; + case 5: + message.duration = $root.google.protobuf.Duration.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a WalkSegment message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.behaviour.FixedWalkCommand.WalkSegment} WalkSegment + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + WalkSegment.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a WalkSegment message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + WalkSegment.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.direction != null && message.hasOwnProperty("direction")) { + var error = $root.vec2.verify(message.direction); + if (error) + return "direction." + error; + } + if (message.curvePeriod != null && message.hasOwnProperty("curvePeriod")) + if (typeof message.curvePeriod !== "number") + return "curvePeriod: number expected"; + if (message.normalisedVelocity != null && message.hasOwnProperty("normalisedVelocity")) + if (typeof message.normalisedVelocity !== "number") + return "normalisedVelocity: number expected"; + if (message.normalisedAngularVelocity != null && message.hasOwnProperty("normalisedAngularVelocity")) + if (typeof message.normalisedAngularVelocity !== "number") + return "normalisedAngularVelocity: number expected"; + if (message.duration != null && message.hasOwnProperty("duration")) { + var error = $root.google.protobuf.Duration.verify(message.duration); + if (error) + return "duration." + error; + } + return null; + }; + + /** + * Creates a WalkSegment message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.behaviour.FixedWalkCommand.WalkSegment} WalkSegment + */ + WalkSegment.fromObject = function fromObject(object) { + if (object instanceof $root.message.behaviour.FixedWalkCommand.WalkSegment) + return object; + var message = new $root.message.behaviour.FixedWalkCommand.WalkSegment(); + if (object.direction != null) { + if (typeof object.direction !== "object") + throw TypeError(".message.behaviour.FixedWalkCommand.WalkSegment.direction: object expected"); + message.direction = $root.vec2.fromObject(object.direction); + } + if (object.curvePeriod != null) + message.curvePeriod = Number(object.curvePeriod); + if (object.normalisedVelocity != null) + message.normalisedVelocity = Number(object.normalisedVelocity); + if (object.normalisedAngularVelocity != null) + message.normalisedAngularVelocity = Number(object.normalisedAngularVelocity); + if (object.duration != null) { + if (typeof object.duration !== "object") + throw TypeError(".message.behaviour.FixedWalkCommand.WalkSegment.duration: object expected"); + message.duration = $root.google.protobuf.Duration.fromObject(object.duration); + } + return message; + }; + + /** + * Creates a WalkSegment message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.behaviour.FixedWalkCommand.WalkSegment.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.behaviour.FixedWalkCommand.WalkSegment} WalkSegment + */ + WalkSegment.from = WalkSegment.fromObject; + + /** + * Creates a plain object from a WalkSegment message. Also converts values to other types if specified. + * @param {message.behaviour.FixedWalkCommand.WalkSegment} message WalkSegment + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + WalkSegment.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.direction = null; + object.curvePeriod = 0; + object.normalisedVelocity = 0; + object.normalisedAngularVelocity = 0; + object.duration = null; + } + if (message.direction != null && message.hasOwnProperty("direction")) + object.direction = $root.vec2.toObject(message.direction, options); + if (message.curvePeriod != null && message.hasOwnProperty("curvePeriod")) + object.curvePeriod = message.curvePeriod; + if (message.normalisedVelocity != null && message.hasOwnProperty("normalisedVelocity")) + object.normalisedVelocity = message.normalisedVelocity; + if (message.normalisedAngularVelocity != null && message.hasOwnProperty("normalisedAngularVelocity")) + object.normalisedAngularVelocity = message.normalisedAngularVelocity; + if (message.duration != null && message.hasOwnProperty("duration")) + object.duration = $root.google.protobuf.Duration.toObject(message.duration, options); + return object; + }; + + /** + * Creates a plain object from this WalkSegment message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + WalkSegment.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this WalkSegment to JSON. + * @returns {Object.} JSON object + */ + WalkSegment.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return WalkSegment; + })(); + + return FixedWalkCommand; + })(); + + behaviour.KickPlan = (function() { + + /** + * Properties of a KickPlan. + * @typedef message.behaviour.KickPlan$Properties + * @type {Object} + * @property {vec2$Properties} [target] KickPlan target. + * @property {message.behaviour.KickPlan.KickType} [kickType] KickPlan kickType. + */ + + /** + * Constructs a new KickPlan. + * @exports message.behaviour.KickPlan + * @constructor + * @param {message.behaviour.KickPlan$Properties=} [properties] Properties to set + */ + function KickPlan(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * KickPlan target. + * @type {(vec2$Properties|null)} + */ + KickPlan.prototype.target = null; + + /** + * KickPlan kickType. + * @type {message.behaviour.KickPlan.KickType} + */ + KickPlan.prototype.kickType = 0; + + /** + * Creates a new KickPlan instance using the specified properties. + * @param {message.behaviour.KickPlan$Properties=} [properties] Properties to set + * @returns {message.behaviour.KickPlan} KickPlan instance + */ + KickPlan.create = function create(properties) { + return new KickPlan(properties); + }; + + /** + * Encodes the specified KickPlan message. Does not implicitly {@link message.behaviour.KickPlan.verify|verify} messages. + * @param {message.behaviour.KickPlan$Properties} message KickPlan message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + KickPlan.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.target != null && message.hasOwnProperty("target")) + $root.vec2.encode(message.target, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.kickType != null && message.hasOwnProperty("kickType")) + writer.uint32(/* id 2, wireType 0 =*/16).uint32(message.kickType); + return writer; + }; + + /** + * Encodes the specified KickPlan message, length delimited. Does not implicitly {@link message.behaviour.KickPlan.verify|verify} messages. + * @param {message.behaviour.KickPlan$Properties} message KickPlan message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + KickPlan.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a KickPlan message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.behaviour.KickPlan} KickPlan + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + KickPlan.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.behaviour.KickPlan(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.target = $root.vec2.decode(reader, reader.uint32()); + break; + case 2: + message.kickType = reader.uint32(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a KickPlan message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.behaviour.KickPlan} KickPlan + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + KickPlan.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a KickPlan message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + KickPlan.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.target != null && message.hasOwnProperty("target")) { + var error = $root.vec2.verify(message.target); + if (error) + return "target." + error; + } + if (message.kickType != null && message.hasOwnProperty("kickType")) + switch (message.kickType) { + default: + return "kickType: enum value expected"; + case 0: + case 1: + break; + } + return null; + }; + + /** + * Creates a KickPlan message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.behaviour.KickPlan} KickPlan + */ + KickPlan.fromObject = function fromObject(object) { + if (object instanceof $root.message.behaviour.KickPlan) + return object; + var message = new $root.message.behaviour.KickPlan(); + if (object.target != null) { + if (typeof object.target !== "object") + throw TypeError(".message.behaviour.KickPlan.target: object expected"); + message.target = $root.vec2.fromObject(object.target); + } + switch (object.kickType) { + case "SCRIPTED": + case 0: + message.kickType = 0; + break; + case "IK_KICK": + case 1: + message.kickType = 1; + break; + } + return message; + }; + + /** + * Creates a KickPlan message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.behaviour.KickPlan.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.behaviour.KickPlan} KickPlan + */ + KickPlan.from = KickPlan.fromObject; + + /** + * Creates a plain object from a KickPlan message. Also converts values to other types if specified. + * @param {message.behaviour.KickPlan} message KickPlan + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + KickPlan.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.target = null; + object.kickType = options.enums === String ? "SCRIPTED" : 0; + } + if (message.target != null && message.hasOwnProperty("target")) + object.target = $root.vec2.toObject(message.target, options); + if (message.kickType != null && message.hasOwnProperty("kickType")) + object.kickType = options.enums === String ? $root.message.behaviour.KickPlan.KickType[message.kickType] : message.kickType; + return object; + }; + + /** + * Creates a plain object from this KickPlan message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + KickPlan.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this KickPlan to JSON. + * @returns {Object.} JSON object + */ + KickPlan.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * KickType enum. + * @name KickType + * @memberof message.behaviour.KickPlan + * @enum {number} + * @property {number} SCRIPTED=0 SCRIPTED value + * @property {number} IK_KICK=1 IK_KICK value + */ + KickPlan.KickType = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "SCRIPTED"] = 0; + values[valuesById[1] = "IK_KICK"] = 1; + return values; + })(); + + return KickPlan; + })(); + + behaviour.WantsToKick = (function() { + + /** + * Properties of a WantsToKick. + * @typedef message.behaviour.WantsToKick$Properties + * @type {Object} + * @property {boolean} [kick] WantsToKick kick. + */ + + /** + * Constructs a new WantsToKick. + * @exports message.behaviour.WantsToKick + * @constructor + * @param {message.behaviour.WantsToKick$Properties=} [properties] Properties to set + */ + function WantsToKick(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * WantsToKick kick. + * @type {boolean} + */ + WantsToKick.prototype.kick = false; + + /** + * Creates a new WantsToKick instance using the specified properties. + * @param {message.behaviour.WantsToKick$Properties=} [properties] Properties to set + * @returns {message.behaviour.WantsToKick} WantsToKick instance + */ + WantsToKick.create = function create(properties) { + return new WantsToKick(properties); + }; + + /** + * Encodes the specified WantsToKick message. Does not implicitly {@link message.behaviour.WantsToKick.verify|verify} messages. + * @param {message.behaviour.WantsToKick$Properties} message WantsToKick message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + WantsToKick.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.kick != null && message.hasOwnProperty("kick")) + writer.uint32(/* id 1, wireType 0 =*/8).bool(message.kick); + return writer; + }; + + /** + * Encodes the specified WantsToKick message, length delimited. Does not implicitly {@link message.behaviour.WantsToKick.verify|verify} messages. + * @param {message.behaviour.WantsToKick$Properties} message WantsToKick message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + WantsToKick.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a WantsToKick message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.behaviour.WantsToKick} WantsToKick + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + WantsToKick.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.behaviour.WantsToKick(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.kick = reader.bool(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a WantsToKick message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.behaviour.WantsToKick} WantsToKick + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + WantsToKick.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a WantsToKick message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + WantsToKick.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.kick != null && message.hasOwnProperty("kick")) + if (typeof message.kick !== "boolean") + return "kick: boolean expected"; + return null; + }; + + /** + * Creates a WantsToKick message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.behaviour.WantsToKick} WantsToKick + */ + WantsToKick.fromObject = function fromObject(object) { + if (object instanceof $root.message.behaviour.WantsToKick) + return object; + var message = new $root.message.behaviour.WantsToKick(); + if (object.kick != null) + message.kick = Boolean(object.kick); + return message; + }; + + /** + * Creates a WantsToKick message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.behaviour.WantsToKick.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.behaviour.WantsToKick} WantsToKick + */ + WantsToKick.from = WantsToKick.fromObject; + + /** + * Creates a plain object from a WantsToKick message. Also converts values to other types if specified. + * @param {message.behaviour.WantsToKick} message WantsToKick + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + WantsToKick.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) + object.kick = false; + if (message.kick != null && message.hasOwnProperty("kick")) + object.kick = message.kick; + return object; + }; + + /** + * Creates a plain object from this WantsToKick message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + WantsToKick.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this WantsToKick to JSON. + * @returns {Object.} JSON object + */ + WantsToKick.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return WantsToKick; + })(); + + behaviour.Look = (function() { + + /** + * Properties of a Look. + * @typedef message.behaviour.Look$Properties + * @type {Object} + */ + + /** + * Constructs a new Look. + * @exports message.behaviour.Look + * @constructor + * @param {message.behaviour.Look$Properties=} [properties] Properties to set + */ + function Look(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Creates a new Look instance using the specified properties. + * @param {message.behaviour.Look$Properties=} [properties] Properties to set + * @returns {message.behaviour.Look} Look instance + */ + Look.create = function create(properties) { + return new Look(properties); + }; + + /** + * Encodes the specified Look message. Does not implicitly {@link message.behaviour.Look.verify|verify} messages. + * @param {message.behaviour.Look$Properties} message Look message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Look.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + return writer; + }; + + /** + * Encodes the specified Look message, length delimited. Does not implicitly {@link message.behaviour.Look.verify|verify} messages. + * @param {message.behaviour.Look$Properties} message Look message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Look.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a Look message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.behaviour.Look} Look + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Look.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.behaviour.Look(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a Look message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.behaviour.Look} Look + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Look.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a Look message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + Look.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + return null; + }; + + /** + * Creates a Look message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.behaviour.Look} Look + */ + Look.fromObject = function fromObject(object) { + if (object instanceof $root.message.behaviour.Look) + return object; + return new $root.message.behaviour.Look(); + }; + + /** + * Creates a Look message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.behaviour.Look.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.behaviour.Look} Look + */ + Look.from = Look.fromObject; + + /** + * Creates a plain object from a Look message. Also converts values to other types if specified. + * @param {message.behaviour.Look} message Look + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Look.toObject = function toObject() { + return {}; + }; + + /** + * Creates a plain object from this Look message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Look.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this Look to JSON. + * @returns {Object.} JSON object + */ + Look.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + Look.Fixation = (function() { + + /** + * Properties of a Fixation. + * @typedef message.behaviour.Look.Fixation$Properties + * @type {Object} + * @property {vec2$Properties} [angle] Fixation angle. + * @property {vec2$Properties} [arcSize] Fixation arcSize. + */ + + /** + * Constructs a new Fixation. + * @exports message.behaviour.Look.Fixation + * @constructor + * @param {message.behaviour.Look.Fixation$Properties=} [properties] Properties to set + */ + function Fixation(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Fixation angle. + * @type {(vec2$Properties|null)} + */ + Fixation.prototype.angle = null; + + /** + * Fixation arcSize. + * @type {(vec2$Properties|null)} + */ + Fixation.prototype.arcSize = null; + + /** + * Creates a new Fixation instance using the specified properties. + * @param {message.behaviour.Look.Fixation$Properties=} [properties] Properties to set + * @returns {message.behaviour.Look.Fixation} Fixation instance + */ + Fixation.create = function create(properties) { + return new Fixation(properties); + }; + + /** + * Encodes the specified Fixation message. Does not implicitly {@link message.behaviour.Look.Fixation.verify|verify} messages. + * @param {message.behaviour.Look.Fixation$Properties} message Fixation message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Fixation.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.angle != null && message.hasOwnProperty("angle")) + $root.vec2.encode(message.angle, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.arcSize != null && message.hasOwnProperty("arcSize")) + $root.vec2.encode(message.arcSize, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified Fixation message, length delimited. Does not implicitly {@link message.behaviour.Look.Fixation.verify|verify} messages. + * @param {message.behaviour.Look.Fixation$Properties} message Fixation message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Fixation.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a Fixation message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.behaviour.Look.Fixation} Fixation + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Fixation.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.behaviour.Look.Fixation(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.angle = $root.vec2.decode(reader, reader.uint32()); + break; + case 2: + message.arcSize = $root.vec2.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a Fixation message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.behaviour.Look.Fixation} Fixation + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Fixation.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a Fixation message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + Fixation.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.angle != null && message.hasOwnProperty("angle")) { + var error = $root.vec2.verify(message.angle); + if (error) + return "angle." + error; + } + if (message.arcSize != null && message.hasOwnProperty("arcSize")) { + var error = $root.vec2.verify(message.arcSize); + if (error) + return "arcSize." + error; + } + return null; + }; + + /** + * Creates a Fixation message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.behaviour.Look.Fixation} Fixation + */ + Fixation.fromObject = function fromObject(object) { + if (object instanceof $root.message.behaviour.Look.Fixation) + return object; + var message = new $root.message.behaviour.Look.Fixation(); + if (object.angle != null) { + if (typeof object.angle !== "object") + throw TypeError(".message.behaviour.Look.Fixation.angle: object expected"); + message.angle = $root.vec2.fromObject(object.angle); + } + if (object.arcSize != null) { + if (typeof object.arcSize !== "object") + throw TypeError(".message.behaviour.Look.Fixation.arcSize: object expected"); + message.arcSize = $root.vec2.fromObject(object.arcSize); + } + return message; + }; + + /** + * Creates a Fixation message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.behaviour.Look.Fixation.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.behaviour.Look.Fixation} Fixation + */ + Fixation.from = Fixation.fromObject; + + /** + * Creates a plain object from a Fixation message. Also converts values to other types if specified. + * @param {message.behaviour.Look.Fixation} message Fixation + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Fixation.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.angle = null; + object.arcSize = null; + } + if (message.angle != null && message.hasOwnProperty("angle")) + object.angle = $root.vec2.toObject(message.angle, options); + if (message.arcSize != null && message.hasOwnProperty("arcSize")) + object.arcSize = $root.vec2.toObject(message.arcSize, options); + return object; + }; + + /** + * Creates a plain object from this Fixation message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Fixation.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this Fixation to JSON. + * @returns {Object.} JSON object + */ + Fixation.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return Fixation; + })(); + + Look.Saccade = (function() { + + /** + * Properties of a Saccade. + * @typedef message.behaviour.Look.Saccade$Properties + * @type {Object} + * @property {google.protobuf.Duration$Properties} [dwellTime] Saccade dwellTime. + * @property {vec2$Properties} [angle] Saccade angle. + * @property {vec2$Properties} [arcSize] Saccade arcSize. + */ + + /** + * Constructs a new Saccade. + * @exports message.behaviour.Look.Saccade + * @constructor + * @param {message.behaviour.Look.Saccade$Properties=} [properties] Properties to set + */ + function Saccade(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Saccade dwellTime. + * @type {(google.protobuf.Duration$Properties|null)} + */ + Saccade.prototype.dwellTime = null; + + /** + * Saccade angle. + * @type {(vec2$Properties|null)} + */ + Saccade.prototype.angle = null; + + /** + * Saccade arcSize. + * @type {(vec2$Properties|null)} + */ + Saccade.prototype.arcSize = null; + + /** + * Creates a new Saccade instance using the specified properties. + * @param {message.behaviour.Look.Saccade$Properties=} [properties] Properties to set + * @returns {message.behaviour.Look.Saccade} Saccade instance + */ + Saccade.create = function create(properties) { + return new Saccade(properties); + }; + + /** + * Encodes the specified Saccade message. Does not implicitly {@link message.behaviour.Look.Saccade.verify|verify} messages. + * @param {message.behaviour.Look.Saccade$Properties} message Saccade message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Saccade.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.dwellTime != null && message.hasOwnProperty("dwellTime")) + $root.google.protobuf.Duration.encode(message.dwellTime, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.angle != null && message.hasOwnProperty("angle")) + $root.vec2.encode(message.angle, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.arcSize != null && message.hasOwnProperty("arcSize")) + $root.vec2.encode(message.arcSize, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified Saccade message, length delimited. Does not implicitly {@link message.behaviour.Look.Saccade.verify|verify} messages. + * @param {message.behaviour.Look.Saccade$Properties} message Saccade message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Saccade.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a Saccade message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.behaviour.Look.Saccade} Saccade + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Saccade.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.behaviour.Look.Saccade(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.dwellTime = $root.google.protobuf.Duration.decode(reader, reader.uint32()); + break; + case 2: + message.angle = $root.vec2.decode(reader, reader.uint32()); + break; + case 3: + message.arcSize = $root.vec2.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a Saccade message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.behaviour.Look.Saccade} Saccade + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Saccade.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a Saccade message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + Saccade.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.dwellTime != null && message.hasOwnProperty("dwellTime")) { + var error = $root.google.protobuf.Duration.verify(message.dwellTime); + if (error) + return "dwellTime." + error; + } + if (message.angle != null && message.hasOwnProperty("angle")) { + var error = $root.vec2.verify(message.angle); + if (error) + return "angle." + error; + } + if (message.arcSize != null && message.hasOwnProperty("arcSize")) { + var error = $root.vec2.verify(message.arcSize); + if (error) + return "arcSize." + error; + } + return null; + }; + + /** + * Creates a Saccade message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.behaviour.Look.Saccade} Saccade + */ + Saccade.fromObject = function fromObject(object) { + if (object instanceof $root.message.behaviour.Look.Saccade) + return object; + var message = new $root.message.behaviour.Look.Saccade(); + if (object.dwellTime != null) { + if (typeof object.dwellTime !== "object") + throw TypeError(".message.behaviour.Look.Saccade.dwellTime: object expected"); + message.dwellTime = $root.google.protobuf.Duration.fromObject(object.dwellTime); + } + if (object.angle != null) { + if (typeof object.angle !== "object") + throw TypeError(".message.behaviour.Look.Saccade.angle: object expected"); + message.angle = $root.vec2.fromObject(object.angle); + } + if (object.arcSize != null) { + if (typeof object.arcSize !== "object") + throw TypeError(".message.behaviour.Look.Saccade.arcSize: object expected"); + message.arcSize = $root.vec2.fromObject(object.arcSize); + } + return message; + }; + + /** + * Creates a Saccade message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.behaviour.Look.Saccade.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.behaviour.Look.Saccade} Saccade + */ + Saccade.from = Saccade.fromObject; + + /** + * Creates a plain object from a Saccade message. Also converts values to other types if specified. + * @param {message.behaviour.Look.Saccade} message Saccade + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Saccade.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.dwellTime = null; + object.angle = null; + object.arcSize = null; + } + if (message.dwellTime != null && message.hasOwnProperty("dwellTime")) + object.dwellTime = $root.google.protobuf.Duration.toObject(message.dwellTime, options); + if (message.angle != null && message.hasOwnProperty("angle")) + object.angle = $root.vec2.toObject(message.angle, options); + if (message.arcSize != null && message.hasOwnProperty("arcSize")) + object.arcSize = $root.vec2.toObject(message.arcSize, options); + return object; + }; + + /** + * Creates a plain object from this Saccade message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Saccade.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this Saccade to JSON. + * @returns {Object.} JSON object + */ + Saccade.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return Saccade; + })(); + + Look.Pan = (function() { + + /** + * Properties of a Pan. + * @typedef message.behaviour.Look.Pan$Properties + * @type {Object} + * @property {vec2$Properties} [angle] Pan angle. + * @property {vec2$Properties} [arcSize] Pan arcSize. + */ + + /** + * Constructs a new Pan. + * @exports message.behaviour.Look.Pan + * @constructor + * @param {message.behaviour.Look.Pan$Properties=} [properties] Properties to set + */ + function Pan(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Pan angle. + * @type {(vec2$Properties|null)} + */ + Pan.prototype.angle = null; + + /** + * Pan arcSize. + * @type {(vec2$Properties|null)} + */ + Pan.prototype.arcSize = null; + + /** + * Creates a new Pan instance using the specified properties. + * @param {message.behaviour.Look.Pan$Properties=} [properties] Properties to set + * @returns {message.behaviour.Look.Pan} Pan instance + */ + Pan.create = function create(properties) { + return new Pan(properties); + }; + + /** + * Encodes the specified Pan message. Does not implicitly {@link message.behaviour.Look.Pan.verify|verify} messages. + * @param {message.behaviour.Look.Pan$Properties} message Pan message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Pan.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.angle != null && message.hasOwnProperty("angle")) + $root.vec2.encode(message.angle, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.arcSize != null && message.hasOwnProperty("arcSize")) + $root.vec2.encode(message.arcSize, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified Pan message, length delimited. Does not implicitly {@link message.behaviour.Look.Pan.verify|verify} messages. + * @param {message.behaviour.Look.Pan$Properties} message Pan message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Pan.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a Pan message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.behaviour.Look.Pan} Pan + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Pan.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.behaviour.Look.Pan(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.angle = $root.vec2.decode(reader, reader.uint32()); + break; + case 2: + message.arcSize = $root.vec2.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a Pan message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.behaviour.Look.Pan} Pan + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Pan.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a Pan message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + Pan.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.angle != null && message.hasOwnProperty("angle")) { + var error = $root.vec2.verify(message.angle); + if (error) + return "angle." + error; + } + if (message.arcSize != null && message.hasOwnProperty("arcSize")) { + var error = $root.vec2.verify(message.arcSize); + if (error) + return "arcSize." + error; + } + return null; + }; + + /** + * Creates a Pan message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.behaviour.Look.Pan} Pan + */ + Pan.fromObject = function fromObject(object) { + if (object instanceof $root.message.behaviour.Look.Pan) + return object; + var message = new $root.message.behaviour.Look.Pan(); + if (object.angle != null) { + if (typeof object.angle !== "object") + throw TypeError(".message.behaviour.Look.Pan.angle: object expected"); + message.angle = $root.vec2.fromObject(object.angle); + } + if (object.arcSize != null) { + if (typeof object.arcSize !== "object") + throw TypeError(".message.behaviour.Look.Pan.arcSize: object expected"); + message.arcSize = $root.vec2.fromObject(object.arcSize); + } + return message; + }; + + /** + * Creates a Pan message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.behaviour.Look.Pan.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.behaviour.Look.Pan} Pan + */ + Pan.from = Pan.fromObject; + + /** + * Creates a plain object from a Pan message. Also converts values to other types if specified. + * @param {message.behaviour.Look.Pan} message Pan + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Pan.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.angle = null; + object.arcSize = null; + } + if (message.angle != null && message.hasOwnProperty("angle")) + object.angle = $root.vec2.toObject(message.angle, options); + if (message.arcSize != null && message.hasOwnProperty("arcSize")) + object.arcSize = $root.vec2.toObject(message.arcSize, options); + return object; + }; + + /** + * Creates a plain object from this Pan message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Pan.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this Pan to JSON. + * @returns {Object.} JSON object + */ + Pan.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return Pan; + })(); + + Look.PanSelection = (function() { + + /** + * Properties of a PanSelection. + * @typedef message.behaviour.Look.PanSelection$Properties + * @type {Object} + * @property {boolean} [lookAtGoalInsteadOfBall] PanSelection lookAtGoalInsteadOfBall. + */ + + /** + * Constructs a new PanSelection. + * @exports message.behaviour.Look.PanSelection + * @constructor + * @param {message.behaviour.Look.PanSelection$Properties=} [properties] Properties to set + */ + function PanSelection(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * PanSelection lookAtGoalInsteadOfBall. + * @type {boolean} + */ + PanSelection.prototype.lookAtGoalInsteadOfBall = false; + + /** + * Creates a new PanSelection instance using the specified properties. + * @param {message.behaviour.Look.PanSelection$Properties=} [properties] Properties to set + * @returns {message.behaviour.Look.PanSelection} PanSelection instance + */ + PanSelection.create = function create(properties) { + return new PanSelection(properties); + }; + + /** + * Encodes the specified PanSelection message. Does not implicitly {@link message.behaviour.Look.PanSelection.verify|verify} messages. + * @param {message.behaviour.Look.PanSelection$Properties} message PanSelection message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + PanSelection.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.lookAtGoalInsteadOfBall != null && message.hasOwnProperty("lookAtGoalInsteadOfBall")) + writer.uint32(/* id 1, wireType 0 =*/8).bool(message.lookAtGoalInsteadOfBall); + return writer; + }; + + /** + * Encodes the specified PanSelection message, length delimited. Does not implicitly {@link message.behaviour.Look.PanSelection.verify|verify} messages. + * @param {message.behaviour.Look.PanSelection$Properties} message PanSelection message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + PanSelection.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a PanSelection message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.behaviour.Look.PanSelection} PanSelection + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + PanSelection.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.behaviour.Look.PanSelection(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.lookAtGoalInsteadOfBall = reader.bool(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a PanSelection message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.behaviour.Look.PanSelection} PanSelection + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + PanSelection.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a PanSelection message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + PanSelection.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.lookAtGoalInsteadOfBall != null && message.hasOwnProperty("lookAtGoalInsteadOfBall")) + if (typeof message.lookAtGoalInsteadOfBall !== "boolean") + return "lookAtGoalInsteadOfBall: boolean expected"; + return null; + }; + + /** + * Creates a PanSelection message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.behaviour.Look.PanSelection} PanSelection + */ + PanSelection.fromObject = function fromObject(object) { + if (object instanceof $root.message.behaviour.Look.PanSelection) + return object; + var message = new $root.message.behaviour.Look.PanSelection(); + if (object.lookAtGoalInsteadOfBall != null) + message.lookAtGoalInsteadOfBall = Boolean(object.lookAtGoalInsteadOfBall); + return message; + }; + + /** + * Creates a PanSelection message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.behaviour.Look.PanSelection.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.behaviour.Look.PanSelection} PanSelection + */ + PanSelection.from = PanSelection.fromObject; + + /** + * Creates a plain object from a PanSelection message. Also converts values to other types if specified. + * @param {message.behaviour.Look.PanSelection} message PanSelection + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + PanSelection.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) + object.lookAtGoalInsteadOfBall = false; + if (message.lookAtGoalInsteadOfBall != null && message.hasOwnProperty("lookAtGoalInsteadOfBall")) + object.lookAtGoalInsteadOfBall = message.lookAtGoalInsteadOfBall; + return object; + }; + + /** + * Creates a plain object from this PanSelection message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + PanSelection.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this PanSelection to JSON. + * @returns {Object.} JSON object + */ + PanSelection.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return PanSelection; + })(); + + return Look; + })(); + + behaviour.MotionCommand = (function() { + + /** + * Properties of a MotionCommand. + * @typedef message.behaviour.MotionCommand$Properties + * @type {Object} + * @property {message.behaviour.MotionCommand.Type} [type] MotionCommand type. + * @property {vec3$Properties} [goalState] MotionCommand goalState. + * @property {vec2$Properties} [kickTarget] MotionCommand kickTarget. + * @property {vec3$Properties} [walkCommand] MotionCommand walkCommand. + */ + + /** + * Constructs a new MotionCommand. + * @exports message.behaviour.MotionCommand + * @constructor + * @param {message.behaviour.MotionCommand$Properties=} [properties] Properties to set + */ + function MotionCommand(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * MotionCommand type. + * @type {message.behaviour.MotionCommand.Type} + */ + MotionCommand.prototype.type = 0; + + /** + * MotionCommand goalState. + * @type {(vec3$Properties|null)} + */ + MotionCommand.prototype.goalState = null; + + /** + * MotionCommand kickTarget. + * @type {(vec2$Properties|null)} + */ + MotionCommand.prototype.kickTarget = null; + + /** + * MotionCommand walkCommand. + * @type {(vec3$Properties|null)} + */ + MotionCommand.prototype.walkCommand = null; + + /** + * Creates a new MotionCommand instance using the specified properties. + * @param {message.behaviour.MotionCommand$Properties=} [properties] Properties to set + * @returns {message.behaviour.MotionCommand} MotionCommand instance + */ + MotionCommand.create = function create(properties) { + return new MotionCommand(properties); + }; + + /** + * Encodes the specified MotionCommand message. Does not implicitly {@link message.behaviour.MotionCommand.verify|verify} messages. + * @param {message.behaviour.MotionCommand$Properties} message MotionCommand message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + MotionCommand.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.type != null && message.hasOwnProperty("type")) + writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.type); + if (message.goalState != null && message.hasOwnProperty("goalState")) + $root.vec3.encode(message.goalState, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.kickTarget != null && message.hasOwnProperty("kickTarget")) + $root.vec2.encode(message.kickTarget, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + if (message.walkCommand != null && message.hasOwnProperty("walkCommand")) + $root.vec3.encode(message.walkCommand, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified MotionCommand message, length delimited. Does not implicitly {@link message.behaviour.MotionCommand.verify|verify} messages. + * @param {message.behaviour.MotionCommand$Properties} message MotionCommand message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + MotionCommand.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a MotionCommand message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.behaviour.MotionCommand} MotionCommand + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + MotionCommand.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.behaviour.MotionCommand(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.type = reader.uint32(); + break; + case 2: + message.goalState = $root.vec3.decode(reader, reader.uint32()); + break; + case 3: + message.kickTarget = $root.vec2.decode(reader, reader.uint32()); + break; + case 4: + message.walkCommand = $root.vec3.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a MotionCommand message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.behaviour.MotionCommand} MotionCommand + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + MotionCommand.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a MotionCommand message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + MotionCommand.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.type != null && message.hasOwnProperty("type")) + switch (message.type) { + default: + return "type: enum value expected"; + case 0: + case 1: + case 2: + case 3: + break; + } + if (message.goalState != null && message.hasOwnProperty("goalState")) { + var error = $root.vec3.verify(message.goalState); + if (error) + return "goalState." + error; + } + if (message.kickTarget != null && message.hasOwnProperty("kickTarget")) { + var error = $root.vec2.verify(message.kickTarget); + if (error) + return "kickTarget." + error; + } + if (message.walkCommand != null && message.hasOwnProperty("walkCommand")) { + var error = $root.vec3.verify(message.walkCommand); + if (error) + return "walkCommand." + error; + } + return null; + }; + + /** + * Creates a MotionCommand message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.behaviour.MotionCommand} MotionCommand + */ + MotionCommand.fromObject = function fromObject(object) { + if (object instanceof $root.message.behaviour.MotionCommand) + return object; + var message = new $root.message.behaviour.MotionCommand(); + switch (object.type) { + case "StandStill": + case 0: + message.type = 0; + break; + case "WalkToState": + case 1: + message.type = 1; + break; + case "BallApproach": + case 2: + message.type = 2; + break; + case "DirectCommand": + case 3: + message.type = 3; + break; + } + if (object.goalState != null) { + if (typeof object.goalState !== "object") + throw TypeError(".message.behaviour.MotionCommand.goalState: object expected"); + message.goalState = $root.vec3.fromObject(object.goalState); + } + if (object.kickTarget != null) { + if (typeof object.kickTarget !== "object") + throw TypeError(".message.behaviour.MotionCommand.kickTarget: object expected"); + message.kickTarget = $root.vec2.fromObject(object.kickTarget); + } + if (object.walkCommand != null) { + if (typeof object.walkCommand !== "object") + throw TypeError(".message.behaviour.MotionCommand.walkCommand: object expected"); + message.walkCommand = $root.vec3.fromObject(object.walkCommand); + } + return message; + }; + + /** + * Creates a MotionCommand message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.behaviour.MotionCommand.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.behaviour.MotionCommand} MotionCommand + */ + MotionCommand.from = MotionCommand.fromObject; + + /** + * Creates a plain object from a MotionCommand message. Also converts values to other types if specified. + * @param {message.behaviour.MotionCommand} message MotionCommand + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + MotionCommand.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.type = options.enums === String ? "StandStill" : 0; + object.goalState = null; + object.kickTarget = null; + object.walkCommand = null; + } + if (message.type != null && message.hasOwnProperty("type")) + object.type = options.enums === String ? $root.message.behaviour.MotionCommand.Type[message.type] : message.type; + if (message.goalState != null && message.hasOwnProperty("goalState")) + object.goalState = $root.vec3.toObject(message.goalState, options); + if (message.kickTarget != null && message.hasOwnProperty("kickTarget")) + object.kickTarget = $root.vec2.toObject(message.kickTarget, options); + if (message.walkCommand != null && message.hasOwnProperty("walkCommand")) + object.walkCommand = $root.vec3.toObject(message.walkCommand, options); + return object; + }; + + /** + * Creates a plain object from this MotionCommand message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + MotionCommand.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this MotionCommand to JSON. + * @returns {Object.} JSON object + */ + MotionCommand.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Type enum. + * @name Type + * @memberof message.behaviour.MotionCommand + * @enum {number} + * @property {number} StandStill=0 StandStill value + * @property {number} WalkToState=1 WalkToState value + * @property {number} BallApproach=2 BallApproach value + * @property {number} DirectCommand=3 DirectCommand value + */ + MotionCommand.Type = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "StandStill"] = 0; + values[valuesById[1] = "WalkToState"] = 1; + values[valuesById[2] = "BallApproach"] = 2; + values[valuesById[3] = "DirectCommand"] = 3; + return values; + })(); + + return MotionCommand; + })(); + + behaviour.Nod = (function() { + + /** + * Properties of a Nod. + * @typedef message.behaviour.Nod$Properties + * @type {Object} + * @property {boolean} [value] Nod value. + */ + + /** + * Constructs a new Nod. + * @exports message.behaviour.Nod + * @constructor + * @param {message.behaviour.Nod$Properties=} [properties] Properties to set + */ + function Nod(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Nod value. + * @type {boolean} + */ + Nod.prototype.value = false; + + /** + * Creates a new Nod instance using the specified properties. + * @param {message.behaviour.Nod$Properties=} [properties] Properties to set + * @returns {message.behaviour.Nod} Nod instance + */ + Nod.create = function create(properties) { + return new Nod(properties); + }; + + /** + * Encodes the specified Nod message. Does not implicitly {@link message.behaviour.Nod.verify|verify} messages. + * @param {message.behaviour.Nod$Properties} message Nod message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Nod.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.value != null && message.hasOwnProperty("value")) + writer.uint32(/* id 1, wireType 0 =*/8).bool(message.value); + return writer; + }; + + /** + * Encodes the specified Nod message, length delimited. Does not implicitly {@link message.behaviour.Nod.verify|verify} messages. + * @param {message.behaviour.Nod$Properties} message Nod message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Nod.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a Nod message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.behaviour.Nod} Nod + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Nod.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.behaviour.Nod(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.value = reader.bool(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a Nod message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.behaviour.Nod} Nod + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Nod.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a Nod message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + Nod.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.value != null && message.hasOwnProperty("value")) + if (typeof message.value !== "boolean") + return "value: boolean expected"; + return null; + }; + + /** + * Creates a Nod message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.behaviour.Nod} Nod + */ + Nod.fromObject = function fromObject(object) { + if (object instanceof $root.message.behaviour.Nod) + return object; + var message = new $root.message.behaviour.Nod(); + if (object.value != null) + message.value = Boolean(object.value); + return message; + }; + + /** + * Creates a Nod message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.behaviour.Nod.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.behaviour.Nod} Nod + */ + Nod.from = Nod.fromObject; + + /** + * Creates a plain object from a Nod message. Also converts values to other types if specified. + * @param {message.behaviour.Nod} message Nod + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Nod.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) + object.value = false; + if (message.value != null && message.hasOwnProperty("value")) + object.value = message.value; + return object; + }; + + /** + * Creates a plain object from this Nod message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Nod.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this Nod to JSON. + * @returns {Object.} JSON object + */ + Nod.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return Nod; + })(); + + behaviour.ServoCommand = (function() { + + /** + * Properties of a ServoCommand. + * @typedef message.behaviour.ServoCommand$Properties + * @type {Object} + * @property {number|Long} [source] ServoCommand source. + * @property {google.protobuf.Timestamp$Properties} [time] ServoCommand time. + * @property {number} [id] ServoCommand id. + * @property {number} [position] ServoCommand position. + * @property {number} [gain] ServoCommand gain. + * @property {number} [torque] ServoCommand torque. + */ + + /** + * Constructs a new ServoCommand. + * @exports message.behaviour.ServoCommand + * @constructor + * @param {message.behaviour.ServoCommand$Properties=} [properties] Properties to set + */ + function ServoCommand(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * ServoCommand source. + * @type {number|Long} + */ + ServoCommand.prototype.source = $util.Long ? $util.Long.fromBits(0,0,true) : 0; + + /** + * ServoCommand time. + * @type {(google.protobuf.Timestamp$Properties|null)} + */ + ServoCommand.prototype.time = null; + + /** + * ServoCommand id. + * @type {number} + */ + ServoCommand.prototype.id = 0; + + /** + * ServoCommand position. + * @type {number} + */ + ServoCommand.prototype.position = 0; + + /** + * ServoCommand gain. + * @type {number} + */ + ServoCommand.prototype.gain = 0; + + /** + * ServoCommand torque. + * @type {number} + */ + ServoCommand.prototype.torque = 0; + + /** + * Creates a new ServoCommand instance using the specified properties. + * @param {message.behaviour.ServoCommand$Properties=} [properties] Properties to set + * @returns {message.behaviour.ServoCommand} ServoCommand instance + */ + ServoCommand.create = function create(properties) { + return new ServoCommand(properties); + }; + + /** + * Encodes the specified ServoCommand message. Does not implicitly {@link message.behaviour.ServoCommand.verify|verify} messages. + * @param {message.behaviour.ServoCommand$Properties} message ServoCommand message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ServoCommand.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.source != null && message.hasOwnProperty("source")) + writer.uint32(/* id 1, wireType 0 =*/8).uint64(message.source); + if (message.time != null && message.hasOwnProperty("time")) + $root.google.protobuf.Timestamp.encode(message.time, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.id != null && message.hasOwnProperty("id")) + writer.uint32(/* id 3, wireType 0 =*/24).uint32(message.id); + if (message.position != null && message.hasOwnProperty("position")) + writer.uint32(/* id 4, wireType 5 =*/37).float(message.position); + if (message.gain != null && message.hasOwnProperty("gain")) + writer.uint32(/* id 5, wireType 5 =*/45).float(message.gain); + if (message.torque != null && message.hasOwnProperty("torque")) + writer.uint32(/* id 6, wireType 5 =*/53).float(message.torque); + return writer; + }; + + /** + * Encodes the specified ServoCommand message, length delimited. Does not implicitly {@link message.behaviour.ServoCommand.verify|verify} messages. + * @param {message.behaviour.ServoCommand$Properties} message ServoCommand message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ServoCommand.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a ServoCommand message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.behaviour.ServoCommand} ServoCommand + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ServoCommand.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.behaviour.ServoCommand(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.source = reader.uint64(); + break; + case 2: + message.time = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); + break; + case 3: + message.id = reader.uint32(); + break; + case 4: + message.position = reader.float(); + break; + case 5: + message.gain = reader.float(); + break; + case 6: + message.torque = reader.float(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a ServoCommand message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.behaviour.ServoCommand} ServoCommand + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ServoCommand.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a ServoCommand message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + ServoCommand.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.source != null && message.hasOwnProperty("source")) + if (!$util.isInteger(message.source) && !(message.source && $util.isInteger(message.source.low) && $util.isInteger(message.source.high))) + return "source: integer|Long expected"; + if (message.time != null && message.hasOwnProperty("time")) { + var error = $root.google.protobuf.Timestamp.verify(message.time); + if (error) + return "time." + error; + } + if (message.id != null && message.hasOwnProperty("id")) + if (!$util.isInteger(message.id)) + return "id: integer expected"; + if (message.position != null && message.hasOwnProperty("position")) + if (typeof message.position !== "number") + return "position: number expected"; + if (message.gain != null && message.hasOwnProperty("gain")) + if (typeof message.gain !== "number") + return "gain: number expected"; + if (message.torque != null && message.hasOwnProperty("torque")) + if (typeof message.torque !== "number") + return "torque: number expected"; + return null; + }; + + /** + * Creates a ServoCommand message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.behaviour.ServoCommand} ServoCommand + */ + ServoCommand.fromObject = function fromObject(object) { + if (object instanceof $root.message.behaviour.ServoCommand) + return object; + var message = new $root.message.behaviour.ServoCommand(); + if (object.source != null) + if ($util.Long) + (message.source = $util.Long.fromValue(object.source)).unsigned = true; + else if (typeof object.source === "string") + message.source = parseInt(object.source, 10); + else if (typeof object.source === "number") + message.source = object.source; + else if (typeof object.source === "object") + message.source = new $util.LongBits(object.source.low >>> 0, object.source.high >>> 0).toNumber(true); + if (object.time != null) { + if (typeof object.time !== "object") + throw TypeError(".message.behaviour.ServoCommand.time: object expected"); + message.time = $root.google.protobuf.Timestamp.fromObject(object.time); + } + if (object.id != null) + message.id = object.id >>> 0; + if (object.position != null) + message.position = Number(object.position); + if (object.gain != null) + message.gain = Number(object.gain); + if (object.torque != null) + message.torque = Number(object.torque); + return message; + }; + + /** + * Creates a ServoCommand message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.behaviour.ServoCommand.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.behaviour.ServoCommand} ServoCommand + */ + ServoCommand.from = ServoCommand.fromObject; + + /** + * Creates a plain object from a ServoCommand message. Also converts values to other types if specified. + * @param {message.behaviour.ServoCommand} message ServoCommand + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + ServoCommand.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + if ($util.Long) { + var long = new $util.Long(0, 0, true); + object.source = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; + } else + object.source = options.longs === String ? "0" : 0; + object.time = null; + object.id = 0; + object.position = 0; + object.gain = 0; + object.torque = 0; + } + if (message.source != null && message.hasOwnProperty("source")) + if (typeof message.source === "number") + object.source = options.longs === String ? String(message.source) : message.source; + else + object.source = options.longs === String ? $util.Long.prototype.toString.call(message.source) : options.longs === Number ? new $util.LongBits(message.source.low >>> 0, message.source.high >>> 0).toNumber(true) : message.source; + if (message.time != null && message.hasOwnProperty("time")) + object.time = $root.google.protobuf.Timestamp.toObject(message.time, options); + if (message.id != null && message.hasOwnProperty("id")) + object.id = message.id; + if (message.position != null && message.hasOwnProperty("position")) + object.position = message.position; + if (message.gain != null && message.hasOwnProperty("gain")) + object.gain = message.gain; + if (message.torque != null && message.hasOwnProperty("torque")) + object.torque = message.torque; + return object; + }; + + /** + * Creates a plain object from this ServoCommand message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + ServoCommand.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this ServoCommand to JSON. + * @returns {Object.} JSON object + */ + ServoCommand.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return ServoCommand; + })(); + + behaviour.SoccerObjectPriority = (function() { + + /** + * Properties of a SoccerObjectPriority. + * @typedef message.behaviour.SoccerObjectPriority$Properties + * @type {Object} + * @property {number} [ball] SoccerObjectPriority ball. + * @property {number} [goal] SoccerObjectPriority goal. + * @property {number} [line] SoccerObjectPriority line. + * @property {message.behaviour.SoccerObjectPriority.SearchType} [searchType] SoccerObjectPriority searchType. + */ + + /** + * Constructs a new SoccerObjectPriority. + * @exports message.behaviour.SoccerObjectPriority + * @constructor + * @param {message.behaviour.SoccerObjectPriority$Properties=} [properties] Properties to set + */ + function SoccerObjectPriority(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * SoccerObjectPriority ball. + * @type {number} + */ + SoccerObjectPriority.prototype.ball = 0; + + /** + * SoccerObjectPriority goal. + * @type {number} + */ + SoccerObjectPriority.prototype.goal = 0; + + /** + * SoccerObjectPriority line. + * @type {number} + */ + SoccerObjectPriority.prototype.line = 0; + + /** + * SoccerObjectPriority searchType. + * @type {message.behaviour.SoccerObjectPriority.SearchType} + */ + SoccerObjectPriority.prototype.searchType = 0; + + /** + * Creates a new SoccerObjectPriority instance using the specified properties. + * @param {message.behaviour.SoccerObjectPriority$Properties=} [properties] Properties to set + * @returns {message.behaviour.SoccerObjectPriority} SoccerObjectPriority instance + */ + SoccerObjectPriority.create = function create(properties) { + return new SoccerObjectPriority(properties); + }; + + /** + * Encodes the specified SoccerObjectPriority message. Does not implicitly {@link message.behaviour.SoccerObjectPriority.verify|verify} messages. + * @param {message.behaviour.SoccerObjectPriority$Properties} message SoccerObjectPriority message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + SoccerObjectPriority.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.ball != null && message.hasOwnProperty("ball")) + writer.uint32(/* id 1, wireType 0 =*/8).int32(message.ball); + if (message.goal != null && message.hasOwnProperty("goal")) + writer.uint32(/* id 2, wireType 0 =*/16).int32(message.goal); + if (message.line != null && message.hasOwnProperty("line")) + writer.uint32(/* id 3, wireType 0 =*/24).int32(message.line); + if (message.searchType != null && message.hasOwnProperty("searchType")) + writer.uint32(/* id 4, wireType 0 =*/32).uint32(message.searchType); + return writer; + }; + + /** + * Encodes the specified SoccerObjectPriority message, length delimited. Does not implicitly {@link message.behaviour.SoccerObjectPriority.verify|verify} messages. + * @param {message.behaviour.SoccerObjectPriority$Properties} message SoccerObjectPriority message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + SoccerObjectPriority.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a SoccerObjectPriority message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.behaviour.SoccerObjectPriority} SoccerObjectPriority + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + SoccerObjectPriority.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.behaviour.SoccerObjectPriority(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.ball = reader.int32(); + break; + case 2: + message.goal = reader.int32(); + break; + case 3: + message.line = reader.int32(); + break; + case 4: + message.searchType = reader.uint32(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a SoccerObjectPriority message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.behaviour.SoccerObjectPriority} SoccerObjectPriority + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + SoccerObjectPriority.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a SoccerObjectPriority message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + SoccerObjectPriority.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.ball != null && message.hasOwnProperty("ball")) + if (!$util.isInteger(message.ball)) + return "ball: integer expected"; + if (message.goal != null && message.hasOwnProperty("goal")) + if (!$util.isInteger(message.goal)) + return "goal: integer expected"; + if (message.line != null && message.hasOwnProperty("line")) + if (!$util.isInteger(message.line)) + return "line: integer expected"; + if (message.searchType != null && message.hasOwnProperty("searchType")) + switch (message.searchType) { + default: + return "searchType: enum value expected"; + case 0: + case 1: + case 2: + case 3: + case 4: + case 5: + case 6: + case 7: + break; + } + return null; + }; + + /** + * Creates a SoccerObjectPriority message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.behaviour.SoccerObjectPriority} SoccerObjectPriority + */ + SoccerObjectPriority.fromObject = function fromObject(object) { + if (object instanceof $root.message.behaviour.SoccerObjectPriority) + return object; + var message = new $root.message.behaviour.SoccerObjectPriority(); + if (object.ball != null) + message.ball = object.ball | 0; + if (object.goal != null) + message.goal = object.goal | 0; + if (object.line != null) + message.line = object.line | 0; + switch (object.searchType) { + case "LOST": + case 0: + message.searchType = 0; + break; + case "FIND_ADDITIONAL_OBJECTS": + case 1: + message.searchType = 1; + break; + case "GOAL_SEARCH": + case 2: + message.searchType = 2; + break; + case "GOAL_LEFT": + case 3: + message.searchType = 3; + break; + case "GOAL_RIGHT": + case 4: + message.searchType = 4; + break; + case "GROUND_LEFT": + case 5: + message.searchType = 5; + break; + case "GROUND_RIGHT": + case 6: + message.searchType = 6; + break; + case "OTHE": + case 7: + message.searchType = 7; + break; + } + return message; + }; + + /** + * Creates a SoccerObjectPriority message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.behaviour.SoccerObjectPriority.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.behaviour.SoccerObjectPriority} SoccerObjectPriority + */ + SoccerObjectPriority.from = SoccerObjectPriority.fromObject; + + /** + * Creates a plain object from a SoccerObjectPriority message. Also converts values to other types if specified. + * @param {message.behaviour.SoccerObjectPriority} message SoccerObjectPriority + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + SoccerObjectPriority.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.ball = 0; + object.goal = 0; + object.line = 0; + object.searchType = options.enums === String ? "LOST" : 0; + } + if (message.ball != null && message.hasOwnProperty("ball")) + object.ball = message.ball; + if (message.goal != null && message.hasOwnProperty("goal")) + object.goal = message.goal; + if (message.line != null && message.hasOwnProperty("line")) + object.line = message.line; + if (message.searchType != null && message.hasOwnProperty("searchType")) + object.searchType = options.enums === String ? $root.message.behaviour.SoccerObjectPriority.SearchType[message.searchType] : message.searchType; + return object; + }; + + /** + * Creates a plain object from this SoccerObjectPriority message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + SoccerObjectPriority.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this SoccerObjectPriority to JSON. + * @returns {Object.} JSON object + */ + SoccerObjectPriority.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * SearchType enum. + * @name SearchType + * @memberof message.behaviour.SoccerObjectPriority + * @enum {number} + * @property {number} LOST=0 LOST value + * @property {number} FIND_ADDITIONAL_OBJECTS=1 FIND_ADDITIONAL_OBJECTS value + * @property {number} GOAL_SEARCH=2 GOAL_SEARCH value + * @property {number} GOAL_LEFT=3 GOAL_LEFT value + * @property {number} GOAL_RIGHT=4 GOAL_RIGHT value + * @property {number} GROUND_LEFT=5 GROUND_LEFT value + * @property {number} GROUND_RIGHT=6 GROUND_RIGHT value + * @property {number} OTHE=7 OTHE value + */ + SoccerObjectPriority.SearchType = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "LOST"] = 0; + values[valuesById[1] = "FIND_ADDITIONAL_OBJECTS"] = 1; + values[valuesById[2] = "GOAL_SEARCH"] = 2; + values[valuesById[3] = "GOAL_LEFT"] = 3; + values[valuesById[4] = "GOAL_RIGHT"] = 4; + values[valuesById[5] = "GROUND_LEFT"] = 5; + values[valuesById[6] = "GROUND_RIGHT"] = 6; + values[valuesById[7] = "OTHE"] = 7; + return values; + })(); + + return SoccerObjectPriority; + })(); + + behaviour.Subsumption = (function() { + + /** + * Properties of a Subsumption. + * @typedef message.behaviour.Subsumption$Properties + * @type {Object} + * @property {Array.} [actionRegister] Subsumption actionRegister. + * @property {Array.} [actionStateChange] Subsumption actionStateChange. + * @property {Array.} [actionPriorityChange] Subsumption actionPriorityChange. + */ + + /** + * Constructs a new Subsumption. + * @exports message.behaviour.Subsumption + * @constructor + * @param {message.behaviour.Subsumption$Properties=} [properties] Properties to set + */ + function Subsumption(properties) { + this.actionRegister = []; + this.actionStateChange = []; + this.actionPriorityChange = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Subsumption actionRegister. + * @type {Array.} + */ + Subsumption.prototype.actionRegister = $util.emptyArray; + + /** + * Subsumption actionStateChange. + * @type {Array.} + */ + Subsumption.prototype.actionStateChange = $util.emptyArray; + + /** + * Subsumption actionPriorityChange. + * @type {Array.} + */ + Subsumption.prototype.actionPriorityChange = $util.emptyArray; + + /** + * Creates a new Subsumption instance using the specified properties. + * @param {message.behaviour.Subsumption$Properties=} [properties] Properties to set + * @returns {message.behaviour.Subsumption} Subsumption instance + */ + Subsumption.create = function create(properties) { + return new Subsumption(properties); + }; + + /** + * Encodes the specified Subsumption message. Does not implicitly {@link message.behaviour.Subsumption.verify|verify} messages. + * @param {message.behaviour.Subsumption$Properties} message Subsumption message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Subsumption.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.actionRegister != null && message.actionRegister.length) + for (var i = 0; i < message.actionRegister.length; ++i) + $root.message.behaviour.Subsumption.ActionRegister.encode(message.actionRegister[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.actionStateChange != null && message.actionStateChange.length) + for (var i = 0; i < message.actionStateChange.length; ++i) + $root.message.behaviour.Subsumption.ActionStateChange.encode(message.actionStateChange[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.actionPriorityChange != null && message.actionPriorityChange.length) + for (var i = 0; i < message.actionPriorityChange.length; ++i) + $root.message.behaviour.Subsumption.ActionPriorites.encode(message.actionPriorityChange[i], writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified Subsumption message, length delimited. Does not implicitly {@link message.behaviour.Subsumption.verify|verify} messages. + * @param {message.behaviour.Subsumption$Properties} message Subsumption message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Subsumption.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a Subsumption message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.behaviour.Subsumption} Subsumption + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Subsumption.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.behaviour.Subsumption(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (!(message.actionRegister && message.actionRegister.length)) + message.actionRegister = []; + message.actionRegister.push($root.message.behaviour.Subsumption.ActionRegister.decode(reader, reader.uint32())); + break; + case 2: + if (!(message.actionStateChange && message.actionStateChange.length)) + message.actionStateChange = []; + message.actionStateChange.push($root.message.behaviour.Subsumption.ActionStateChange.decode(reader, reader.uint32())); + break; + case 3: + if (!(message.actionPriorityChange && message.actionPriorityChange.length)) + message.actionPriorityChange = []; + message.actionPriorityChange.push($root.message.behaviour.Subsumption.ActionPriorites.decode(reader, reader.uint32())); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a Subsumption message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.behaviour.Subsumption} Subsumption + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Subsumption.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a Subsumption message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + Subsumption.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.actionRegister != null && message.hasOwnProperty("actionRegister")) { + if (!Array.isArray(message.actionRegister)) + return "actionRegister: array expected"; + for (var i = 0; i < message.actionRegister.length; ++i) { + var error = $root.message.behaviour.Subsumption.ActionRegister.verify(message.actionRegister[i]); + if (error) + return "actionRegister." + error; + } + } + if (message.actionStateChange != null && message.hasOwnProperty("actionStateChange")) { + if (!Array.isArray(message.actionStateChange)) + return "actionStateChange: array expected"; + for (var i = 0; i < message.actionStateChange.length; ++i) { + var error = $root.message.behaviour.Subsumption.ActionStateChange.verify(message.actionStateChange[i]); + if (error) + return "actionStateChange." + error; + } + } + if (message.actionPriorityChange != null && message.hasOwnProperty("actionPriorityChange")) { + if (!Array.isArray(message.actionPriorityChange)) + return "actionPriorityChange: array expected"; + for (var i = 0; i < message.actionPriorityChange.length; ++i) { + var error = $root.message.behaviour.Subsumption.ActionPriorites.verify(message.actionPriorityChange[i]); + if (error) + return "actionPriorityChange." + error; + } + } + return null; + }; + + /** + * Creates a Subsumption message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.behaviour.Subsumption} Subsumption + */ + Subsumption.fromObject = function fromObject(object) { + if (object instanceof $root.message.behaviour.Subsumption) + return object; + var message = new $root.message.behaviour.Subsumption(); + if (object.actionRegister) { + if (!Array.isArray(object.actionRegister)) + throw TypeError(".message.behaviour.Subsumption.actionRegister: array expected"); + message.actionRegister = []; + for (var i = 0; i < object.actionRegister.length; ++i) { + if (typeof object.actionRegister[i] !== "object") + throw TypeError(".message.behaviour.Subsumption.actionRegister: object expected"); + message.actionRegister[i] = $root.message.behaviour.Subsumption.ActionRegister.fromObject(object.actionRegister[i]); + } + } + if (object.actionStateChange) { + if (!Array.isArray(object.actionStateChange)) + throw TypeError(".message.behaviour.Subsumption.actionStateChange: array expected"); + message.actionStateChange = []; + for (var i = 0; i < object.actionStateChange.length; ++i) { + if (typeof object.actionStateChange[i] !== "object") + throw TypeError(".message.behaviour.Subsumption.actionStateChange: object expected"); + message.actionStateChange[i] = $root.message.behaviour.Subsumption.ActionStateChange.fromObject(object.actionStateChange[i]); + } + } + if (object.actionPriorityChange) { + if (!Array.isArray(object.actionPriorityChange)) + throw TypeError(".message.behaviour.Subsumption.actionPriorityChange: array expected"); + message.actionPriorityChange = []; + for (var i = 0; i < object.actionPriorityChange.length; ++i) { + if (typeof object.actionPriorityChange[i] !== "object") + throw TypeError(".message.behaviour.Subsumption.actionPriorityChange: object expected"); + message.actionPriorityChange[i] = $root.message.behaviour.Subsumption.ActionPriorites.fromObject(object.actionPriorityChange[i]); + } + } + return message; + }; + + /** + * Creates a Subsumption message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.behaviour.Subsumption.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.behaviour.Subsumption} Subsumption + */ + Subsumption.from = Subsumption.fromObject; + + /** + * Creates a plain object from a Subsumption message. Also converts values to other types if specified. + * @param {message.behaviour.Subsumption} message Subsumption + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Subsumption.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) { + object.actionRegister = []; + object.actionStateChange = []; + object.actionPriorityChange = []; + } + if (message.actionRegister && message.actionRegister.length) { + object.actionRegister = []; + for (var j = 0; j < message.actionRegister.length; ++j) + object.actionRegister[j] = $root.message.behaviour.Subsumption.ActionRegister.toObject(message.actionRegister[j], options); + } + if (message.actionStateChange && message.actionStateChange.length) { + object.actionStateChange = []; + for (var j = 0; j < message.actionStateChange.length; ++j) + object.actionStateChange[j] = $root.message.behaviour.Subsumption.ActionStateChange.toObject(message.actionStateChange[j], options); + } + if (message.actionPriorityChange && message.actionPriorityChange.length) { + object.actionPriorityChange = []; + for (var j = 0; j < message.actionPriorityChange.length; ++j) + object.actionPriorityChange[j] = $root.message.behaviour.Subsumption.ActionPriorites.toObject(message.actionPriorityChange[j], options); + } + return object; + }; + + /** + * Creates a plain object from this Subsumption message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Subsumption.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this Subsumption to JSON. + * @returns {Object.} JSON object + */ + Subsumption.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + Subsumption.LimbSet = (function() { + + /** + * Properties of a LimbSet. + * @typedef message.behaviour.Subsumption.LimbSet$Properties + * @type {Object} + * @property {number} [priority] LimbSet priority. + * @property {Array.} [limbs] LimbSet limbs. + */ + + /** + * Constructs a new LimbSet. + * @exports message.behaviour.Subsumption.LimbSet + * @constructor + * @param {message.behaviour.Subsumption.LimbSet$Properties=} [properties] Properties to set + */ + function LimbSet(properties) { + this.limbs = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * LimbSet priority. + * @type {number} + */ + LimbSet.prototype.priority = 0; + + /** + * LimbSet limbs. + * @type {Array.} + */ + LimbSet.prototype.limbs = $util.emptyArray; + + /** + * Creates a new LimbSet instance using the specified properties. + * @param {message.behaviour.Subsumption.LimbSet$Properties=} [properties] Properties to set + * @returns {message.behaviour.Subsumption.LimbSet} LimbSet instance + */ + LimbSet.create = function create(properties) { + return new LimbSet(properties); + }; + + /** + * Encodes the specified LimbSet message. Does not implicitly {@link message.behaviour.Subsumption.LimbSet.verify|verify} messages. + * @param {message.behaviour.Subsumption.LimbSet$Properties} message LimbSet message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + LimbSet.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.priority != null && message.hasOwnProperty("priority")) + writer.uint32(/* id 1, wireType 5 =*/13).float(message.priority); + if (message.limbs != null && message.limbs.length) { + writer.uint32(/* id 2, wireType 2 =*/18).fork(); + for (var i = 0; i < message.limbs.length; ++i) + writer.uint32(message.limbs[i]); + writer.ldelim(); + } + return writer; + }; + + /** + * Encodes the specified LimbSet message, length delimited. Does not implicitly {@link message.behaviour.Subsumption.LimbSet.verify|verify} messages. + * @param {message.behaviour.Subsumption.LimbSet$Properties} message LimbSet message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + LimbSet.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a LimbSet message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.behaviour.Subsumption.LimbSet} LimbSet + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + LimbSet.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.behaviour.Subsumption.LimbSet(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.priority = reader.float(); + break; + case 2: + if (!(message.limbs && message.limbs.length)) + message.limbs = []; + if ((tag & 7) === 2) { + var end2 = reader.uint32() + reader.pos; + while (reader.pos < end2) + message.limbs.push(reader.uint32()); + } else + message.limbs.push(reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a LimbSet message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.behaviour.Subsumption.LimbSet} LimbSet + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + LimbSet.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a LimbSet message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + LimbSet.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.priority != null && message.hasOwnProperty("priority")) + if (typeof message.priority !== "number") + return "priority: number expected"; + if (message.limbs != null && message.hasOwnProperty("limbs")) { + if (!Array.isArray(message.limbs)) + return "limbs: array expected"; + for (var i = 0; i < message.limbs.length; ++i) + if (!$util.isInteger(message.limbs[i])) + return "limbs: integer[] expected"; + } + return null; + }; + + /** + * Creates a LimbSet message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.behaviour.Subsumption.LimbSet} LimbSet + */ + LimbSet.fromObject = function fromObject(object) { + if (object instanceof $root.message.behaviour.Subsumption.LimbSet) + return object; + var message = new $root.message.behaviour.Subsumption.LimbSet(); + if (object.priority != null) + message.priority = Number(object.priority); + if (object.limbs) { + if (!Array.isArray(object.limbs)) + throw TypeError(".message.behaviour.Subsumption.LimbSet.limbs: array expected"); + message.limbs = []; + for (var i = 0; i < object.limbs.length; ++i) + message.limbs[i] = object.limbs[i] >>> 0; + } + return message; + }; + + /** + * Creates a LimbSet message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.behaviour.Subsumption.LimbSet.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.behaviour.Subsumption.LimbSet} LimbSet + */ + LimbSet.from = LimbSet.fromObject; + + /** + * Creates a plain object from a LimbSet message. Also converts values to other types if specified. + * @param {message.behaviour.Subsumption.LimbSet} message LimbSet + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + LimbSet.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.limbs = []; + if (options.defaults) + object.priority = 0; + if (message.priority != null && message.hasOwnProperty("priority")) + object.priority = message.priority; + if (message.limbs && message.limbs.length) { + object.limbs = []; + for (var j = 0; j < message.limbs.length; ++j) + object.limbs[j] = message.limbs[j]; + } + return object; + }; + + /** + * Creates a plain object from this LimbSet message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + LimbSet.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this LimbSet to JSON. + * @returns {Object.} JSON object + */ + LimbSet.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return LimbSet; + })(); + + Subsumption.ActionRegister = (function() { + + /** + * Properties of an ActionRegister. + * @typedef message.behaviour.Subsumption.ActionRegister$Properties + * @type {Object} + * @property {number} [id] ActionRegister id. + * @property {string} [name] ActionRegister name. + * @property {Array.} [limbSet] ActionRegister limbSet. + */ + + /** + * Constructs a new ActionRegister. + * @exports message.behaviour.Subsumption.ActionRegister + * @constructor + * @param {message.behaviour.Subsumption.ActionRegister$Properties=} [properties] Properties to set + */ + function ActionRegister(properties) { + this.limbSet = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * ActionRegister id. + * @type {number} + */ + ActionRegister.prototype.id = 0; + + /** + * ActionRegister name. + * @type {string} + */ + ActionRegister.prototype.name = ""; + + /** + * ActionRegister limbSet. + * @type {Array.} + */ + ActionRegister.prototype.limbSet = $util.emptyArray; + + /** + * Creates a new ActionRegister instance using the specified properties. + * @param {message.behaviour.Subsumption.ActionRegister$Properties=} [properties] Properties to set + * @returns {message.behaviour.Subsumption.ActionRegister} ActionRegister instance + */ + ActionRegister.create = function create(properties) { + return new ActionRegister(properties); + }; + + /** + * Encodes the specified ActionRegister message. Does not implicitly {@link message.behaviour.Subsumption.ActionRegister.verify|verify} messages. + * @param {message.behaviour.Subsumption.ActionRegister$Properties} message ActionRegister message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ActionRegister.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.id != null && message.hasOwnProperty("id")) + writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.id); + if (message.name != null && message.hasOwnProperty("name")) + writer.uint32(/* id 2, wireType 2 =*/18).string(message.name); + if (message.limbSet != null && message.limbSet.length) + for (var i = 0; i < message.limbSet.length; ++i) + $root.message.behaviour.Subsumption.LimbSet.encode(message.limbSet[i], writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified ActionRegister message, length delimited. Does not implicitly {@link message.behaviour.Subsumption.ActionRegister.verify|verify} messages. + * @param {message.behaviour.Subsumption.ActionRegister$Properties} message ActionRegister message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ActionRegister.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes an ActionRegister message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.behaviour.Subsumption.ActionRegister} ActionRegister + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ActionRegister.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.behaviour.Subsumption.ActionRegister(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.id = reader.uint32(); + break; + case 2: + message.name = reader.string(); + break; + case 3: + if (!(message.limbSet && message.limbSet.length)) + message.limbSet = []; + message.limbSet.push($root.message.behaviour.Subsumption.LimbSet.decode(reader, reader.uint32())); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes an ActionRegister message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.behaviour.Subsumption.ActionRegister} ActionRegister + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ActionRegister.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies an ActionRegister message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + ActionRegister.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.id != null && message.hasOwnProperty("id")) + if (!$util.isInteger(message.id)) + return "id: integer expected"; + if (message.name != null && message.hasOwnProperty("name")) + if (!$util.isString(message.name)) + return "name: string expected"; + if (message.limbSet != null && message.hasOwnProperty("limbSet")) { + if (!Array.isArray(message.limbSet)) + return "limbSet: array expected"; + for (var i = 0; i < message.limbSet.length; ++i) { + var error = $root.message.behaviour.Subsumption.LimbSet.verify(message.limbSet[i]); + if (error) + return "limbSet." + error; + } + } + return null; + }; + + /** + * Creates an ActionRegister message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.behaviour.Subsumption.ActionRegister} ActionRegister + */ + ActionRegister.fromObject = function fromObject(object) { + if (object instanceof $root.message.behaviour.Subsumption.ActionRegister) + return object; + var message = new $root.message.behaviour.Subsumption.ActionRegister(); + if (object.id != null) + message.id = object.id >>> 0; + if (object.name != null) + message.name = String(object.name); + if (object.limbSet) { + if (!Array.isArray(object.limbSet)) + throw TypeError(".message.behaviour.Subsumption.ActionRegister.limbSet: array expected"); + message.limbSet = []; + for (var i = 0; i < object.limbSet.length; ++i) { + if (typeof object.limbSet[i] !== "object") + throw TypeError(".message.behaviour.Subsumption.ActionRegister.limbSet: object expected"); + message.limbSet[i] = $root.message.behaviour.Subsumption.LimbSet.fromObject(object.limbSet[i]); + } + } + return message; + }; + + /** + * Creates an ActionRegister message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.behaviour.Subsumption.ActionRegister.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.behaviour.Subsumption.ActionRegister} ActionRegister + */ + ActionRegister.from = ActionRegister.fromObject; + + /** + * Creates a plain object from an ActionRegister message. Also converts values to other types if specified. + * @param {message.behaviour.Subsumption.ActionRegister} message ActionRegister + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + ActionRegister.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.limbSet = []; + if (options.defaults) { + object.id = 0; + object.name = ""; + } + if (message.id != null && message.hasOwnProperty("id")) + object.id = message.id; + if (message.name != null && message.hasOwnProperty("name")) + object.name = message.name; + if (message.limbSet && message.limbSet.length) { + object.limbSet = []; + for (var j = 0; j < message.limbSet.length; ++j) + object.limbSet[j] = $root.message.behaviour.Subsumption.LimbSet.toObject(message.limbSet[j], options); + } + return object; + }; + + /** + * Creates a plain object from this ActionRegister message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + ActionRegister.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this ActionRegister to JSON. + * @returns {Object.} JSON object + */ + ActionRegister.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return ActionRegister; + })(); + + Subsumption.ActionStateChange = (function() { + + /** + * Properties of an ActionStateChange. + * @typedef message.behaviour.Subsumption.ActionStateChange$Properties + * @type {Object} + * @property {message.behaviour.Subsumption.ActionStateChange.State} [state] ActionStateChange state. + * @property {string} [name] ActionStateChange name. + * @property {Array.} [limbs] ActionStateChange limbs. + */ + + /** + * Constructs a new ActionStateChange. + * @exports message.behaviour.Subsumption.ActionStateChange + * @constructor + * @param {message.behaviour.Subsumption.ActionStateChange$Properties=} [properties] Properties to set + */ + function ActionStateChange(properties) { + this.limbs = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * ActionStateChange state. + * @type {message.behaviour.Subsumption.ActionStateChange.State} + */ + ActionStateChange.prototype.state = 0; + + /** + * ActionStateChange name. + * @type {string} + */ + ActionStateChange.prototype.name = ""; + + /** + * ActionStateChange limbs. + * @type {Array.} + */ + ActionStateChange.prototype.limbs = $util.emptyArray; + + /** + * Creates a new ActionStateChange instance using the specified properties. + * @param {message.behaviour.Subsumption.ActionStateChange$Properties=} [properties] Properties to set + * @returns {message.behaviour.Subsumption.ActionStateChange} ActionStateChange instance + */ + ActionStateChange.create = function create(properties) { + return new ActionStateChange(properties); + }; + + /** + * Encodes the specified ActionStateChange message. Does not implicitly {@link message.behaviour.Subsumption.ActionStateChange.verify|verify} messages. + * @param {message.behaviour.Subsumption.ActionStateChange$Properties} message ActionStateChange message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ActionStateChange.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.state != null && message.hasOwnProperty("state")) + writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.state); + if (message.name != null && message.hasOwnProperty("name")) + writer.uint32(/* id 2, wireType 2 =*/18).string(message.name); + if (message.limbs != null && message.limbs.length) { + writer.uint32(/* id 3, wireType 2 =*/26).fork(); + for (var i = 0; i < message.limbs.length; ++i) + writer.uint32(message.limbs[i]); + writer.ldelim(); + } + return writer; + }; + + /** + * Encodes the specified ActionStateChange message, length delimited. Does not implicitly {@link message.behaviour.Subsumption.ActionStateChange.verify|verify} messages. + * @param {message.behaviour.Subsumption.ActionStateChange$Properties} message ActionStateChange message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ActionStateChange.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes an ActionStateChange message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.behaviour.Subsumption.ActionStateChange} ActionStateChange + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ActionStateChange.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.behaviour.Subsumption.ActionStateChange(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.state = reader.uint32(); + break; + case 2: + message.name = reader.string(); + break; + case 3: + if (!(message.limbs && message.limbs.length)) + message.limbs = []; + if ((tag & 7) === 2) { + var end2 = reader.uint32() + reader.pos; + while (reader.pos < end2) + message.limbs.push(reader.uint32()); + } else + message.limbs.push(reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes an ActionStateChange message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.behaviour.Subsumption.ActionStateChange} ActionStateChange + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ActionStateChange.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies an ActionStateChange message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + ActionStateChange.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.state != null && message.hasOwnProperty("state")) + switch (message.state) { + default: + return "state: enum value expected"; + case 0: + case 1: + case 2: + break; + } + if (message.name != null && message.hasOwnProperty("name")) + if (!$util.isString(message.name)) + return "name: string expected"; + if (message.limbs != null && message.hasOwnProperty("limbs")) { + if (!Array.isArray(message.limbs)) + return "limbs: array expected"; + for (var i = 0; i < message.limbs.length; ++i) + if (!$util.isInteger(message.limbs[i])) + return "limbs: integer[] expected"; + } + return null; + }; + + /** + * Creates an ActionStateChange message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.behaviour.Subsumption.ActionStateChange} ActionStateChange + */ + ActionStateChange.fromObject = function fromObject(object) { + if (object instanceof $root.message.behaviour.Subsumption.ActionStateChange) + return object; + var message = new $root.message.behaviour.Subsumption.ActionStateChange(); + switch (object.state) { + case "UNKNOWN": + case 0: + message.state = 0; + break; + case "START": + case 1: + message.state = 1; + break; + case "KILL": + case 2: + message.state = 2; + break; + } + if (object.name != null) + message.name = String(object.name); + if (object.limbs) { + if (!Array.isArray(object.limbs)) + throw TypeError(".message.behaviour.Subsumption.ActionStateChange.limbs: array expected"); + message.limbs = []; + for (var i = 0; i < object.limbs.length; ++i) + message.limbs[i] = object.limbs[i] >>> 0; + } + return message; + }; + + /** + * Creates an ActionStateChange message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.behaviour.Subsumption.ActionStateChange.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.behaviour.Subsumption.ActionStateChange} ActionStateChange + */ + ActionStateChange.from = ActionStateChange.fromObject; + + /** + * Creates a plain object from an ActionStateChange message. Also converts values to other types if specified. + * @param {message.behaviour.Subsumption.ActionStateChange} message ActionStateChange + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + ActionStateChange.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.limbs = []; + if (options.defaults) { + object.state = options.enums === String ? "UNKNOWN" : 0; + object.name = ""; + } + if (message.state != null && message.hasOwnProperty("state")) + object.state = options.enums === String ? $root.message.behaviour.Subsumption.ActionStateChange.State[message.state] : message.state; + if (message.name != null && message.hasOwnProperty("name")) + object.name = message.name; + if (message.limbs && message.limbs.length) { + object.limbs = []; + for (var j = 0; j < message.limbs.length; ++j) + object.limbs[j] = message.limbs[j]; + } + return object; + }; + + /** + * Creates a plain object from this ActionStateChange message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + ActionStateChange.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this ActionStateChange to JSON. + * @returns {Object.} JSON object + */ + ActionStateChange.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * State enum. + * @name State + * @memberof message.behaviour.Subsumption.ActionStateChange + * @enum {number} + * @property {number} UNKNOWN=0 UNKNOWN value + * @property {number} START=1 START value + * @property {number} KILL=2 KILL value + */ + ActionStateChange.State = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "UNKNOWN"] = 0; + values[valuesById[1] = "START"] = 1; + values[valuesById[2] = "KILL"] = 2; + return values; + })(); + + return ActionStateChange; + })(); + + Subsumption.ActionPriorites = (function() { + + /** + * Properties of an ActionPriorites. + * @typedef message.behaviour.Subsumption.ActionPriorites$Properties + * @type {Object} + * @property {number} [id] ActionPriorites id. + * @property {Array.} [priorities] ActionPriorites priorities. + */ + + /** + * Constructs a new ActionPriorites. + * @exports message.behaviour.Subsumption.ActionPriorites + * @constructor + * @param {message.behaviour.Subsumption.ActionPriorites$Properties=} [properties] Properties to set + */ + function ActionPriorites(properties) { + this.priorities = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * ActionPriorites id. + * @type {number} + */ + ActionPriorites.prototype.id = 0; + + /** + * ActionPriorites priorities. + * @type {Array.} + */ + ActionPriorites.prototype.priorities = $util.emptyArray; + + /** + * Creates a new ActionPriorites instance using the specified properties. + * @param {message.behaviour.Subsumption.ActionPriorites$Properties=} [properties] Properties to set + * @returns {message.behaviour.Subsumption.ActionPriorites} ActionPriorites instance + */ + ActionPriorites.create = function create(properties) { + return new ActionPriorites(properties); + }; + + /** + * Encodes the specified ActionPriorites message. Does not implicitly {@link message.behaviour.Subsumption.ActionPriorites.verify|verify} messages. + * @param {message.behaviour.Subsumption.ActionPriorites$Properties} message ActionPriorites message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ActionPriorites.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.id != null && message.hasOwnProperty("id")) + writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.id); + if (message.priorities != null && message.priorities.length) { + writer.uint32(/* id 2, wireType 2 =*/18).fork(); + for (var i = 0; i < message.priorities.length; ++i) + writer.float(message.priorities[i]); + writer.ldelim(); + } + return writer; + }; + + /** + * Encodes the specified ActionPriorites message, length delimited. Does not implicitly {@link message.behaviour.Subsumption.ActionPriorites.verify|verify} messages. + * @param {message.behaviour.Subsumption.ActionPriorites$Properties} message ActionPriorites message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ActionPriorites.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes an ActionPriorites message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.behaviour.Subsumption.ActionPriorites} ActionPriorites + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ActionPriorites.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.behaviour.Subsumption.ActionPriorites(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.id = reader.uint32(); + break; + case 2: + if (!(message.priorities && message.priorities.length)) + message.priorities = []; + if ((tag & 7) === 2) { + var end2 = reader.uint32() + reader.pos; + while (reader.pos < end2) + message.priorities.push(reader.float()); + } else + message.priorities.push(reader.float()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes an ActionPriorites message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.behaviour.Subsumption.ActionPriorites} ActionPriorites + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ActionPriorites.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies an ActionPriorites message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + ActionPriorites.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.id != null && message.hasOwnProperty("id")) + if (!$util.isInteger(message.id)) + return "id: integer expected"; + if (message.priorities != null && message.hasOwnProperty("priorities")) { + if (!Array.isArray(message.priorities)) + return "priorities: array expected"; + for (var i = 0; i < message.priorities.length; ++i) + if (typeof message.priorities[i] !== "number") + return "priorities: number[] expected"; + } + return null; + }; + + /** + * Creates an ActionPriorites message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.behaviour.Subsumption.ActionPriorites} ActionPriorites + */ + ActionPriorites.fromObject = function fromObject(object) { + if (object instanceof $root.message.behaviour.Subsumption.ActionPriorites) + return object; + var message = new $root.message.behaviour.Subsumption.ActionPriorites(); + if (object.id != null) + message.id = object.id >>> 0; + if (object.priorities) { + if (!Array.isArray(object.priorities)) + throw TypeError(".message.behaviour.Subsumption.ActionPriorites.priorities: array expected"); + message.priorities = []; + for (var i = 0; i < object.priorities.length; ++i) + message.priorities[i] = Number(object.priorities[i]); + } + return message; + }; + + /** + * Creates an ActionPriorites message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.behaviour.Subsumption.ActionPriorites.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.behaviour.Subsumption.ActionPriorites} ActionPriorites + */ + ActionPriorites.from = ActionPriorites.fromObject; + + /** + * Creates a plain object from an ActionPriorites message. Also converts values to other types if specified. + * @param {message.behaviour.Subsumption.ActionPriorites} message ActionPriorites + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + ActionPriorites.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.priorities = []; + if (options.defaults) + object.id = 0; + if (message.id != null && message.hasOwnProperty("id")) + object.id = message.id; + if (message.priorities && message.priorities.length) { + object.priorities = []; + for (var j = 0; j < message.priorities.length; ++j) + object.priorities[j] = message.priorities[j]; + } + return object; + }; + + /** + * Creates a plain object from this ActionPriorites message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + ActionPriorites.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this ActionPriorites to JSON. + * @returns {Object.} JSON object + */ + ActionPriorites.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return ActionPriorites; + })(); + + return Subsumption; + })(); + + behaviour.WalkPath = (function() { + + /** + * Properties of a WalkPath. + * @typedef message.behaviour.WalkPath$Properties + * @type {Object} + * @property {Array.} [states] WalkPath states. + * @property {vec3$Properties} [ballSpace] WalkPath ballSpace. + * @property {vec3$Properties} [start] WalkPath start. + * @property {vec3$Properties} [goal] WalkPath goal. + * @property {message.behaviour.MotionCommand$Properties} [command] WalkPath command. + */ + + /** + * Constructs a new WalkPath. + * @exports message.behaviour.WalkPath + * @constructor + * @param {message.behaviour.WalkPath$Properties=} [properties] Properties to set + */ + function WalkPath(properties) { + this.states = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * WalkPath states. + * @type {Array.} + */ + WalkPath.prototype.states = $util.emptyArray; + + /** + * WalkPath ballSpace. + * @type {(vec3$Properties|null)} + */ + WalkPath.prototype.ballSpace = null; + + /** + * WalkPath start. + * @type {(vec3$Properties|null)} + */ + WalkPath.prototype.start = null; + + /** + * WalkPath goal. + * @type {(vec3$Properties|null)} + */ + WalkPath.prototype.goal = null; + + /** + * WalkPath command. + * @type {(message.behaviour.MotionCommand$Properties|null)} + */ + WalkPath.prototype.command = null; + + /** + * Creates a new WalkPath instance using the specified properties. + * @param {message.behaviour.WalkPath$Properties=} [properties] Properties to set + * @returns {message.behaviour.WalkPath} WalkPath instance + */ + WalkPath.create = function create(properties) { + return new WalkPath(properties); + }; + + /** + * Encodes the specified WalkPath message. Does not implicitly {@link message.behaviour.WalkPath.verify|verify} messages. + * @param {message.behaviour.WalkPath$Properties} message WalkPath message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + WalkPath.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.states != null && message.states.length) + for (var i = 0; i < message.states.length; ++i) + $root.vec3.encode(message.states[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.ballSpace != null && message.hasOwnProperty("ballSpace")) + $root.vec3.encode(message.ballSpace, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.start != null && message.hasOwnProperty("start")) + $root.vec3.encode(message.start, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + if (message.goal != null && message.hasOwnProperty("goal")) + $root.vec3.encode(message.goal, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); + if (message.command != null && message.hasOwnProperty("command")) + $root.message.behaviour.MotionCommand.encode(message.command, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified WalkPath message, length delimited. Does not implicitly {@link message.behaviour.WalkPath.verify|verify} messages. + * @param {message.behaviour.WalkPath$Properties} message WalkPath message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + WalkPath.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a WalkPath message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.behaviour.WalkPath} WalkPath + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + WalkPath.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.behaviour.WalkPath(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (!(message.states && message.states.length)) + message.states = []; + message.states.push($root.vec3.decode(reader, reader.uint32())); + break; + case 2: + message.ballSpace = $root.vec3.decode(reader, reader.uint32()); + break; + case 3: + message.start = $root.vec3.decode(reader, reader.uint32()); + break; + case 4: + message.goal = $root.vec3.decode(reader, reader.uint32()); + break; + case 5: + message.command = $root.message.behaviour.MotionCommand.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a WalkPath message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.behaviour.WalkPath} WalkPath + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + WalkPath.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a WalkPath message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + WalkPath.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.states != null && message.hasOwnProperty("states")) { + if (!Array.isArray(message.states)) + return "states: array expected"; + for (var i = 0; i < message.states.length; ++i) { + var error = $root.vec3.verify(message.states[i]); + if (error) + return "states." + error; + } + } + if (message.ballSpace != null && message.hasOwnProperty("ballSpace")) { + var error = $root.vec3.verify(message.ballSpace); + if (error) + return "ballSpace." + error; + } + if (message.start != null && message.hasOwnProperty("start")) { + var error = $root.vec3.verify(message.start); + if (error) + return "start." + error; + } + if (message.goal != null && message.hasOwnProperty("goal")) { + var error = $root.vec3.verify(message.goal); + if (error) + return "goal." + error; + } + if (message.command != null && message.hasOwnProperty("command")) { + var error = $root.message.behaviour.MotionCommand.verify(message.command); + if (error) + return "command." + error; + } + return null; + }; + + /** + * Creates a WalkPath message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.behaviour.WalkPath} WalkPath + */ + WalkPath.fromObject = function fromObject(object) { + if (object instanceof $root.message.behaviour.WalkPath) + return object; + var message = new $root.message.behaviour.WalkPath(); + if (object.states) { + if (!Array.isArray(object.states)) + throw TypeError(".message.behaviour.WalkPath.states: array expected"); + message.states = []; + for (var i = 0; i < object.states.length; ++i) { + if (typeof object.states[i] !== "object") + throw TypeError(".message.behaviour.WalkPath.states: object expected"); + message.states[i] = $root.vec3.fromObject(object.states[i]); + } + } + if (object.ballSpace != null) { + if (typeof object.ballSpace !== "object") + throw TypeError(".message.behaviour.WalkPath.ballSpace: object expected"); + message.ballSpace = $root.vec3.fromObject(object.ballSpace); + } + if (object.start != null) { + if (typeof object.start !== "object") + throw TypeError(".message.behaviour.WalkPath.start: object expected"); + message.start = $root.vec3.fromObject(object.start); + } + if (object.goal != null) { + if (typeof object.goal !== "object") + throw TypeError(".message.behaviour.WalkPath.goal: object expected"); + message.goal = $root.vec3.fromObject(object.goal); + } + if (object.command != null) { + if (typeof object.command !== "object") + throw TypeError(".message.behaviour.WalkPath.command: object expected"); + message.command = $root.message.behaviour.MotionCommand.fromObject(object.command); + } + return message; + }; + + /** + * Creates a WalkPath message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.behaviour.WalkPath.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.behaviour.WalkPath} WalkPath + */ + WalkPath.from = WalkPath.fromObject; + + /** + * Creates a plain object from a WalkPath message. Also converts values to other types if specified. + * @param {message.behaviour.WalkPath} message WalkPath + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + WalkPath.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.states = []; + if (options.defaults) { + object.ballSpace = null; + object.start = null; + object.goal = null; + object.command = null; + } + if (message.states && message.states.length) { + object.states = []; + for (var j = 0; j < message.states.length; ++j) + object.states[j] = $root.vec3.toObject(message.states[j], options); + } + if (message.ballSpace != null && message.hasOwnProperty("ballSpace")) + object.ballSpace = $root.vec3.toObject(message.ballSpace, options); + if (message.start != null && message.hasOwnProperty("start")) + object.start = $root.vec3.toObject(message.start, options); + if (message.goal != null && message.hasOwnProperty("goal")) + object.goal = $root.vec3.toObject(message.goal, options); + if (message.command != null && message.hasOwnProperty("command")) + object.command = $root.message.behaviour.MotionCommand.toObject(message.command, options); + return object; + }; + + /** + * Creates a plain object from this WalkPath message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + WalkPath.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this WalkPath to JSON. + * @returns {Object.} JSON object + */ + WalkPath.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return WalkPath; + })(); + + return behaviour; + })(); + + message.input = (function() { + + /** + * Namespace input. + * @exports message.input + * @namespace + */ + var input = {}; + + input.CameraParameters = (function() { + + /** + * Properties of a CameraParameters. + * @typedef message.input.CameraParameters$Properties + * @type {Object} + * @property {uvec2$Properties} [imageSizePixels] CameraParameters imageSizePixels. + * @property {vec2$Properties} [FOV] CameraParameters FOV. + * @property {vec2$Properties} [pixelsToTanThetaFactor] CameraParameters pixelsToTanThetaFactor. + * @property {number} [focalLengthPixels] CameraParameters focalLengthPixels. + * @property {number} [distortionFactor] CameraParameters distortionFactor. + */ + + /** + * Constructs a new CameraParameters. + * @exports message.input.CameraParameters + * @constructor + * @param {message.input.CameraParameters$Properties=} [properties] Properties to set + */ + function CameraParameters(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * CameraParameters imageSizePixels. + * @type {(uvec2$Properties|null)} + */ + CameraParameters.prototype.imageSizePixels = null; + + /** + * CameraParameters FOV. + * @type {(vec2$Properties|null)} + */ + CameraParameters.prototype.FOV = null; + + /** + * CameraParameters pixelsToTanThetaFactor. + * @type {(vec2$Properties|null)} + */ + CameraParameters.prototype.pixelsToTanThetaFactor = null; + + /** + * CameraParameters focalLengthPixels. + * @type {number} + */ + CameraParameters.prototype.focalLengthPixels = 0; + + /** + * CameraParameters distortionFactor. + * @type {number} + */ + CameraParameters.prototype.distortionFactor = 0; + + /** + * Creates a new CameraParameters instance using the specified properties. + * @param {message.input.CameraParameters$Properties=} [properties] Properties to set + * @returns {message.input.CameraParameters} CameraParameters instance + */ + CameraParameters.create = function create(properties) { + return new CameraParameters(properties); + }; + + /** + * Encodes the specified CameraParameters message. Does not implicitly {@link message.input.CameraParameters.verify|verify} messages. + * @param {message.input.CameraParameters$Properties} message CameraParameters message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + CameraParameters.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.imageSizePixels != null && message.hasOwnProperty("imageSizePixels")) + $root.uvec2.encode(message.imageSizePixels, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.FOV != null && message.hasOwnProperty("FOV")) + $root.vec2.encode(message.FOV, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.pixelsToTanThetaFactor != null && message.hasOwnProperty("pixelsToTanThetaFactor")) + $root.vec2.encode(message.pixelsToTanThetaFactor, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + if (message.focalLengthPixels != null && message.hasOwnProperty("focalLengthPixels")) + writer.uint32(/* id 4, wireType 1 =*/33).double(message.focalLengthPixels); + if (message.distortionFactor != null && message.hasOwnProperty("distortionFactor")) + writer.uint32(/* id 5, wireType 1 =*/41).double(message.distortionFactor); + return writer; + }; + + /** + * Encodes the specified CameraParameters message, length delimited. Does not implicitly {@link message.input.CameraParameters.verify|verify} messages. + * @param {message.input.CameraParameters$Properties} message CameraParameters message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + CameraParameters.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a CameraParameters message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.input.CameraParameters} CameraParameters + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + CameraParameters.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.input.CameraParameters(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.imageSizePixels = $root.uvec2.decode(reader, reader.uint32()); + break; + case 2: + message.FOV = $root.vec2.decode(reader, reader.uint32()); + break; + case 3: + message.pixelsToTanThetaFactor = $root.vec2.decode(reader, reader.uint32()); + break; + case 4: + message.focalLengthPixels = reader.double(); + break; + case 5: + message.distortionFactor = reader.double(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a CameraParameters message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.input.CameraParameters} CameraParameters + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + CameraParameters.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a CameraParameters message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + CameraParameters.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.imageSizePixels != null && message.hasOwnProperty("imageSizePixels")) { + var error = $root.uvec2.verify(message.imageSizePixels); + if (error) + return "imageSizePixels." + error; + } + if (message.FOV != null && message.hasOwnProperty("FOV")) { + var error = $root.vec2.verify(message.FOV); + if (error) + return "FOV." + error; + } + if (message.pixelsToTanThetaFactor != null && message.hasOwnProperty("pixelsToTanThetaFactor")) { + var error = $root.vec2.verify(message.pixelsToTanThetaFactor); + if (error) + return "pixelsToTanThetaFactor." + error; + } + if (message.focalLengthPixels != null && message.hasOwnProperty("focalLengthPixels")) + if (typeof message.focalLengthPixels !== "number") + return "focalLengthPixels: number expected"; + if (message.distortionFactor != null && message.hasOwnProperty("distortionFactor")) + if (typeof message.distortionFactor !== "number") + return "distortionFactor: number expected"; + return null; + }; + + /** + * Creates a CameraParameters message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.input.CameraParameters} CameraParameters + */ + CameraParameters.fromObject = function fromObject(object) { + if (object instanceof $root.message.input.CameraParameters) + return object; + var message = new $root.message.input.CameraParameters(); + if (object.imageSizePixels != null) { + if (typeof object.imageSizePixels !== "object") + throw TypeError(".message.input.CameraParameters.imageSizePixels: object expected"); + message.imageSizePixels = $root.uvec2.fromObject(object.imageSizePixels); + } + if (object.FOV != null) { + if (typeof object.FOV !== "object") + throw TypeError(".message.input.CameraParameters.FOV: object expected"); + message.FOV = $root.vec2.fromObject(object.FOV); + } + if (object.pixelsToTanThetaFactor != null) { + if (typeof object.pixelsToTanThetaFactor !== "object") + throw TypeError(".message.input.CameraParameters.pixelsToTanThetaFactor: object expected"); + message.pixelsToTanThetaFactor = $root.vec2.fromObject(object.pixelsToTanThetaFactor); + } + if (object.focalLengthPixels != null) + message.focalLengthPixels = Number(object.focalLengthPixels); + if (object.distortionFactor != null) + message.distortionFactor = Number(object.distortionFactor); + return message; + }; + + /** + * Creates a CameraParameters message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.input.CameraParameters.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.input.CameraParameters} CameraParameters + */ + CameraParameters.from = CameraParameters.fromObject; + + /** + * Creates a plain object from a CameraParameters message. Also converts values to other types if specified. + * @param {message.input.CameraParameters} message CameraParameters + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + CameraParameters.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.imageSizePixels = null; + object.FOV = null; + object.pixelsToTanThetaFactor = null; + object.focalLengthPixels = 0; + object.distortionFactor = 0; + } + if (message.imageSizePixels != null && message.hasOwnProperty("imageSizePixels")) + object.imageSizePixels = $root.uvec2.toObject(message.imageSizePixels, options); + if (message.FOV != null && message.hasOwnProperty("FOV")) + object.FOV = $root.vec2.toObject(message.FOV, options); + if (message.pixelsToTanThetaFactor != null && message.hasOwnProperty("pixelsToTanThetaFactor")) + object.pixelsToTanThetaFactor = $root.vec2.toObject(message.pixelsToTanThetaFactor, options); + if (message.focalLengthPixels != null && message.hasOwnProperty("focalLengthPixels")) + object.focalLengthPixels = message.focalLengthPixels; + if (message.distortionFactor != null && message.hasOwnProperty("distortionFactor")) + object.distortionFactor = message.distortionFactor; + return object; + }; + + /** + * Creates a plain object from this CameraParameters message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + CameraParameters.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this CameraParameters to JSON. + * @returns {Object.} JSON object + */ + CameraParameters.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return CameraParameters; + })(); + + input.GameEvents = (function() { + + /** + * Properties of a GameEvents. + * @typedef message.input.GameEvents$Properties + * @type {Object} + */ + + /** + * Constructs a new GameEvents. + * @exports message.input.GameEvents + * @constructor + * @param {message.input.GameEvents$Properties=} [properties] Properties to set + */ + function GameEvents(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Creates a new GameEvents instance using the specified properties. + * @param {message.input.GameEvents$Properties=} [properties] Properties to set + * @returns {message.input.GameEvents} GameEvents instance + */ + GameEvents.create = function create(properties) { + return new GameEvents(properties); + }; + + /** + * Encodes the specified GameEvents message. Does not implicitly {@link message.input.GameEvents.verify|verify} messages. + * @param {message.input.GameEvents$Properties} message GameEvents message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + GameEvents.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + return writer; + }; + + /** + * Encodes the specified GameEvents message, length delimited. Does not implicitly {@link message.input.GameEvents.verify|verify} messages. + * @param {message.input.GameEvents$Properties} message GameEvents message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + GameEvents.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a GameEvents message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.input.GameEvents} GameEvents + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + GameEvents.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.input.GameEvents(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a GameEvents message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.input.GameEvents} GameEvents + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + GameEvents.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a GameEvents message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + GameEvents.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + return null; + }; + + /** + * Creates a GameEvents message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.input.GameEvents} GameEvents + */ + GameEvents.fromObject = function fromObject(object) { + if (object instanceof $root.message.input.GameEvents) + return object; + return new $root.message.input.GameEvents(); + }; + + /** + * Creates a GameEvents message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.input.GameEvents.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.input.GameEvents} GameEvents + */ + GameEvents.from = GameEvents.fromObject; + + /** + * Creates a plain object from a GameEvents message. Also converts values to other types if specified. + * @param {message.input.GameEvents} message GameEvents + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + GameEvents.toObject = function toObject() { + return {}; + }; + + /** + * Creates a plain object from this GameEvents message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + GameEvents.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this GameEvents to JSON. + * @returns {Object.} JSON object + */ + GameEvents.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Context enum. + * @name Context + * @memberof message.input.GameEvents + * @enum {number} + * @property {number} UNKNOWN_CONTEXT=0 UNKNOWN_CONTEXT value + * @property {number} SELF=1 SELF value + * @property {number} TEAM=2 TEAM value + * @property {number} OPPONENT=3 OPPONENT value + * @property {number} UNKNOWN=4 UNKNOWN value + */ + GameEvents.Context = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "UNKNOWN_CONTEXT"] = 0; + values[valuesById[1] = "SELF"] = 1; + values[valuesById[2] = "TEAM"] = 2; + values[valuesById[3] = "OPPONENT"] = 3; + values[valuesById[4] = "UNKNOWN"] = 4; + return values; + })(); + + /** + * TeamColour enum. + * @name TeamColour + * @memberof message.input.GameEvents + * @enum {number} + * @property {number} UNKNOWN_TEAM_COLOUR=0 UNKNOWN_TEAM_COLOUR value + * @property {number} CYAN=1 CYAN value + * @property {number} MAGENTA=2 MAGENTA value + */ + GameEvents.TeamColour = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "UNKNOWN_TEAM_COLOUR"] = 0; + values[valuesById[1] = "CYAN"] = 1; + values[valuesById[2] = "MAGENTA"] = 2; + return values; + })(); + + GameEvents.Score = (function() { + + /** + * Properties of a Score. + * @typedef message.input.GameEvents.Score$Properties + * @type {Object} + * @property {number} [ownScore] Score ownScore. + * @property {number} [opponentScore] Score opponentScore. + */ + + /** + * Constructs a new Score. + * @exports message.input.GameEvents.Score + * @constructor + * @param {message.input.GameEvents.Score$Properties=} [properties] Properties to set + */ + function Score(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Score ownScore. + * @type {number} + */ + Score.prototype.ownScore = 0; + + /** + * Score opponentScore. + * @type {number} + */ + Score.prototype.opponentScore = 0; + + /** + * Creates a new Score instance using the specified properties. + * @param {message.input.GameEvents.Score$Properties=} [properties] Properties to set + * @returns {message.input.GameEvents.Score} Score instance + */ + Score.create = function create(properties) { + return new Score(properties); + }; + + /** + * Encodes the specified Score message. Does not implicitly {@link message.input.GameEvents.Score.verify|verify} messages. + * @param {message.input.GameEvents.Score$Properties} message Score message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Score.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.ownScore != null && message.hasOwnProperty("ownScore")) + writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.ownScore); + if (message.opponentScore != null && message.hasOwnProperty("opponentScore")) + writer.uint32(/* id 2, wireType 0 =*/16).uint32(message.opponentScore); + return writer; + }; + + /** + * Encodes the specified Score message, length delimited. Does not implicitly {@link message.input.GameEvents.Score.verify|verify} messages. + * @param {message.input.GameEvents.Score$Properties} message Score message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Score.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a Score message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.input.GameEvents.Score} Score + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Score.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.input.GameEvents.Score(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.ownScore = reader.uint32(); + break; + case 2: + message.opponentScore = reader.uint32(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a Score message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.input.GameEvents.Score} Score + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Score.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a Score message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + Score.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.ownScore != null && message.hasOwnProperty("ownScore")) + if (!$util.isInteger(message.ownScore)) + return "ownScore: integer expected"; + if (message.opponentScore != null && message.hasOwnProperty("opponentScore")) + if (!$util.isInteger(message.opponentScore)) + return "opponentScore: integer expected"; + return null; + }; + + /** + * Creates a Score message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.input.GameEvents.Score} Score + */ + Score.fromObject = function fromObject(object) { + if (object instanceof $root.message.input.GameEvents.Score) + return object; + var message = new $root.message.input.GameEvents.Score(); + if (object.ownScore != null) + message.ownScore = object.ownScore >>> 0; + if (object.opponentScore != null) + message.opponentScore = object.opponentScore >>> 0; + return message; + }; + + /** + * Creates a Score message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.input.GameEvents.Score.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.input.GameEvents.Score} Score + */ + Score.from = Score.fromObject; + + /** + * Creates a plain object from a Score message. Also converts values to other types if specified. + * @param {message.input.GameEvents.Score} message Score + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Score.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.ownScore = 0; + object.opponentScore = 0; + } + if (message.ownScore != null && message.hasOwnProperty("ownScore")) + object.ownScore = message.ownScore; + if (message.opponentScore != null && message.hasOwnProperty("opponentScore")) + object.opponentScore = message.opponentScore; + return object; + }; + + /** + * Creates a plain object from this Score message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Score.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this Score to JSON. + * @returns {Object.} JSON object + */ + Score.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return Score; + })(); + + GameEvents.GoalScored = (function() { + + /** + * Properties of a GoalScored. + * @typedef message.input.GameEvents.GoalScored$Properties + * @type {Object} + * @property {message.input.GameEvents.Context} [context] GoalScored context. + * @property {number} [totalScore] GoalScored totalScore. + */ + + /** + * Constructs a new GoalScored. + * @exports message.input.GameEvents.GoalScored + * @constructor + * @param {message.input.GameEvents.GoalScored$Properties=} [properties] Properties to set + */ + function GoalScored(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * GoalScored context. + * @type {message.input.GameEvents.Context} + */ + GoalScored.prototype.context = 0; + + /** + * GoalScored totalScore. + * @type {number} + */ + GoalScored.prototype.totalScore = 0; + + /** + * Creates a new GoalScored instance using the specified properties. + * @param {message.input.GameEvents.GoalScored$Properties=} [properties] Properties to set + * @returns {message.input.GameEvents.GoalScored} GoalScored instance + */ + GoalScored.create = function create(properties) { + return new GoalScored(properties); + }; + + /** + * Encodes the specified GoalScored message. Does not implicitly {@link message.input.GameEvents.GoalScored.verify|verify} messages. + * @param {message.input.GameEvents.GoalScored$Properties} message GoalScored message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + GoalScored.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.context != null && message.hasOwnProperty("context")) + writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.context); + if (message.totalScore != null && message.hasOwnProperty("totalScore")) + writer.uint32(/* id 2, wireType 0 =*/16).uint32(message.totalScore); + return writer; + }; + + /** + * Encodes the specified GoalScored message, length delimited. Does not implicitly {@link message.input.GameEvents.GoalScored.verify|verify} messages. + * @param {message.input.GameEvents.GoalScored$Properties} message GoalScored message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + GoalScored.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a GoalScored message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.input.GameEvents.GoalScored} GoalScored + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + GoalScored.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.input.GameEvents.GoalScored(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.context = reader.uint32(); + break; + case 2: + message.totalScore = reader.uint32(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a GoalScored message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.input.GameEvents.GoalScored} GoalScored + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + GoalScored.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a GoalScored message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + GoalScored.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.context != null && message.hasOwnProperty("context")) + switch (message.context) { + default: + return "context: enum value expected"; + case 0: + case 1: + case 2: + case 3: + case 4: + break; + } + if (message.totalScore != null && message.hasOwnProperty("totalScore")) + if (!$util.isInteger(message.totalScore)) + return "totalScore: integer expected"; + return null; + }; + + /** + * Creates a GoalScored message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.input.GameEvents.GoalScored} GoalScored + */ + GoalScored.fromObject = function fromObject(object) { + if (object instanceof $root.message.input.GameEvents.GoalScored) + return object; + var message = new $root.message.input.GameEvents.GoalScored(); + switch (object.context) { + case "UNKNOWN_CONTEXT": + case 0: + message.context = 0; + break; + case "SELF": + case 1: + message.context = 1; + break; + case "TEAM": + case 2: + message.context = 2; + break; + case "OPPONENT": + case 3: + message.context = 3; + break; + case "UNKNOWN": + case 4: + message.context = 4; + break; + } + if (object.totalScore != null) + message.totalScore = object.totalScore >>> 0; + return message; + }; + + /** + * Creates a GoalScored message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.input.GameEvents.GoalScored.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.input.GameEvents.GoalScored} GoalScored + */ + GoalScored.from = GoalScored.fromObject; + + /** + * Creates a plain object from a GoalScored message. Also converts values to other types if specified. + * @param {message.input.GameEvents.GoalScored} message GoalScored + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + GoalScored.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.context = options.enums === String ? "UNKNOWN_CONTEXT" : 0; + object.totalScore = 0; + } + if (message.context != null && message.hasOwnProperty("context")) + object.context = options.enums === String ? $root.message.input.GameEvents.Context[message.context] : message.context; + if (message.totalScore != null && message.hasOwnProperty("totalScore")) + object.totalScore = message.totalScore; + return object; + }; + + /** + * Creates a plain object from this GoalScored message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + GoalScored.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this GoalScored to JSON. + * @returns {Object.} JSON object + */ + GoalScored.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return GoalScored; + })(); + + GameEvents.Penalisation = (function() { + + /** + * Properties of a Penalisation. + * @typedef message.input.GameEvents.Penalisation$Properties + * @type {Object} + * @property {message.input.GameEvents.Context} [context] Penalisation context. + * @property {number} [robotId] Penalisation robotId. + * @property {google.protobuf.Timestamp$Properties} [ends] Penalisation ends. + * @property {message.input.GameState.Data.PenaltyReason} [reason] Penalisation reason. + */ + + /** + * Constructs a new Penalisation. + * @exports message.input.GameEvents.Penalisation + * @constructor + * @param {message.input.GameEvents.Penalisation$Properties=} [properties] Properties to set + */ + function Penalisation(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Penalisation context. + * @type {message.input.GameEvents.Context} + */ + Penalisation.prototype.context = 0; + + /** + * Penalisation robotId. + * @type {number} + */ + Penalisation.prototype.robotId = 0; + + /** + * Penalisation ends. + * @type {(google.protobuf.Timestamp$Properties|null)} + */ + Penalisation.prototype.ends = null; + + /** + * Penalisation reason. + * @type {message.input.GameState.Data.PenaltyReason} + */ + Penalisation.prototype.reason = 0; + + /** + * Creates a new Penalisation instance using the specified properties. + * @param {message.input.GameEvents.Penalisation$Properties=} [properties] Properties to set + * @returns {message.input.GameEvents.Penalisation} Penalisation instance + */ + Penalisation.create = function create(properties) { + return new Penalisation(properties); + }; + + /** + * Encodes the specified Penalisation message. Does not implicitly {@link message.input.GameEvents.Penalisation.verify|verify} messages. + * @param {message.input.GameEvents.Penalisation$Properties} message Penalisation message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Penalisation.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.context != null && message.hasOwnProperty("context")) + writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.context); + if (message.robotId != null && message.hasOwnProperty("robotId")) + writer.uint32(/* id 2, wireType 0 =*/16).uint32(message.robotId); + if (message.ends != null && message.hasOwnProperty("ends")) + $root.google.protobuf.Timestamp.encode(message.ends, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + if (message.reason != null && message.hasOwnProperty("reason")) + writer.uint32(/* id 4, wireType 0 =*/32).uint32(message.reason); + return writer; + }; + + /** + * Encodes the specified Penalisation message, length delimited. Does not implicitly {@link message.input.GameEvents.Penalisation.verify|verify} messages. + * @param {message.input.GameEvents.Penalisation$Properties} message Penalisation message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Penalisation.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a Penalisation message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.input.GameEvents.Penalisation} Penalisation + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Penalisation.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.input.GameEvents.Penalisation(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.context = reader.uint32(); + break; + case 2: + message.robotId = reader.uint32(); + break; + case 3: + message.ends = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); + break; + case 4: + message.reason = reader.uint32(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a Penalisation message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.input.GameEvents.Penalisation} Penalisation + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Penalisation.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a Penalisation message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + Penalisation.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.context != null && message.hasOwnProperty("context")) + switch (message.context) { + default: + return "context: enum value expected"; + case 0: + case 1: + case 2: + case 3: + case 4: + break; + } + if (message.robotId != null && message.hasOwnProperty("robotId")) + if (!$util.isInteger(message.robotId)) + return "robotId: integer expected"; + if (message.ends != null && message.hasOwnProperty("ends")) { + var error = $root.google.protobuf.Timestamp.verify(message.ends); + if (error) + return "ends." + error; + } + if (message.reason != null && message.hasOwnProperty("reason")) + switch (message.reason) { + default: + return "reason: enum value expected"; + case 0: + case 1: + case 2: + case 3: + case 4: + case 5: + case 6: + case 7: + case 8: + case 9: + case 10: + break; + } + return null; + }; + + /** + * Creates a Penalisation message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.input.GameEvents.Penalisation} Penalisation + */ + Penalisation.fromObject = function fromObject(object) { + if (object instanceof $root.message.input.GameEvents.Penalisation) + return object; + var message = new $root.message.input.GameEvents.Penalisation(); + switch (object.context) { + case "UNKNOWN_CONTEXT": + case 0: + message.context = 0; + break; + case "SELF": + case 1: + message.context = 1; + break; + case "TEAM": + case 2: + message.context = 2; + break; + case "OPPONENT": + case 3: + message.context = 3; + break; + case "UNKNOWN": + case 4: + message.context = 4; + break; + } + if (object.robotId != null) + message.robotId = object.robotId >>> 0; + if (object.ends != null) { + if (typeof object.ends !== "object") + throw TypeError(".message.input.GameEvents.Penalisation.ends: object expected"); + message.ends = $root.google.protobuf.Timestamp.fromObject(object.ends); + } + switch (object.reason) { + case "UNKNOWN_PENALTY_REASON": + case 0: + message.reason = 0; + break; + case "UNPENALISED": + case 1: + message.reason = 1; + break; + case "BALL_MANIPULATION": + case 2: + message.reason = 2; + break; + case "PHYSICAL_CONTACT": + case 3: + message.reason = 3; + break; + case "ILLEGAL_ATTACK": + case 4: + message.reason = 4; + break; + case "ILLEGAL_DEFENSE": + case 5: + message.reason = 5; + break; + case "REQUEST_FOR_PICKUP": + case 6: + message.reason = 6; + break; + case "REQUEST_FOR_SERVICE": + case 7: + message.reason = 7; + break; + case "REQUEST_FOR_PICKUP_TO_SERVICE": + case 8: + message.reason = 8; + break; + case "SUBSTITUTE": + case 9: + message.reason = 9; + break; + case "MANUAL": + case 10: + message.reason = 10; + break; + } + return message; + }; + + /** + * Creates a Penalisation message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.input.GameEvents.Penalisation.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.input.GameEvents.Penalisation} Penalisation + */ + Penalisation.from = Penalisation.fromObject; + + /** + * Creates a plain object from a Penalisation message. Also converts values to other types if specified. + * @param {message.input.GameEvents.Penalisation} message Penalisation + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Penalisation.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.context = options.enums === String ? "UNKNOWN_CONTEXT" : 0; + object.robotId = 0; + object.ends = null; + object.reason = options.enums === String ? "UNKNOWN_PENALTY_REASON" : 0; + } + if (message.context != null && message.hasOwnProperty("context")) + object.context = options.enums === String ? $root.message.input.GameEvents.Context[message.context] : message.context; + if (message.robotId != null && message.hasOwnProperty("robotId")) + object.robotId = message.robotId; + if (message.ends != null && message.hasOwnProperty("ends")) + object.ends = $root.google.protobuf.Timestamp.toObject(message.ends, options); + if (message.reason != null && message.hasOwnProperty("reason")) + object.reason = options.enums === String ? $root.message.input.GameState.Data.PenaltyReason[message.reason] : message.reason; + return object; + }; + + /** + * Creates a plain object from this Penalisation message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Penalisation.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this Penalisation to JSON. + * @returns {Object.} JSON object + */ + Penalisation.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return Penalisation; + })(); + + GameEvents.Unpenalisation = (function() { + + /** + * Properties of an Unpenalisation. + * @typedef message.input.GameEvents.Unpenalisation$Properties + * @type {Object} + * @property {message.input.GameEvents.Context} [context] Unpenalisation context. + * @property {number} [robotId] Unpenalisation robotId. + */ + + /** + * Constructs a new Unpenalisation. + * @exports message.input.GameEvents.Unpenalisation + * @constructor + * @param {message.input.GameEvents.Unpenalisation$Properties=} [properties] Properties to set + */ + function Unpenalisation(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Unpenalisation context. + * @type {message.input.GameEvents.Context} + */ + Unpenalisation.prototype.context = 0; + + /** + * Unpenalisation robotId. + * @type {number} + */ + Unpenalisation.prototype.robotId = 0; + + /** + * Creates a new Unpenalisation instance using the specified properties. + * @param {message.input.GameEvents.Unpenalisation$Properties=} [properties] Properties to set + * @returns {message.input.GameEvents.Unpenalisation} Unpenalisation instance + */ + Unpenalisation.create = function create(properties) { + return new Unpenalisation(properties); + }; + + /** + * Encodes the specified Unpenalisation message. Does not implicitly {@link message.input.GameEvents.Unpenalisation.verify|verify} messages. + * @param {message.input.GameEvents.Unpenalisation$Properties} message Unpenalisation message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Unpenalisation.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.context != null && message.hasOwnProperty("context")) + writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.context); + if (message.robotId != null && message.hasOwnProperty("robotId")) + writer.uint32(/* id 2, wireType 0 =*/16).uint32(message.robotId); + return writer; + }; + + /** + * Encodes the specified Unpenalisation message, length delimited. Does not implicitly {@link message.input.GameEvents.Unpenalisation.verify|verify} messages. + * @param {message.input.GameEvents.Unpenalisation$Properties} message Unpenalisation message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Unpenalisation.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes an Unpenalisation message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.input.GameEvents.Unpenalisation} Unpenalisation + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Unpenalisation.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.input.GameEvents.Unpenalisation(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.context = reader.uint32(); + break; + case 2: + message.robotId = reader.uint32(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes an Unpenalisation message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.input.GameEvents.Unpenalisation} Unpenalisation + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Unpenalisation.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies an Unpenalisation message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + Unpenalisation.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.context != null && message.hasOwnProperty("context")) + switch (message.context) { + default: + return "context: enum value expected"; + case 0: + case 1: + case 2: + case 3: + case 4: + break; + } + if (message.robotId != null && message.hasOwnProperty("robotId")) + if (!$util.isInteger(message.robotId)) + return "robotId: integer expected"; + return null; + }; + + /** + * Creates an Unpenalisation message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.input.GameEvents.Unpenalisation} Unpenalisation + */ + Unpenalisation.fromObject = function fromObject(object) { + if (object instanceof $root.message.input.GameEvents.Unpenalisation) + return object; + var message = new $root.message.input.GameEvents.Unpenalisation(); + switch (object.context) { + case "UNKNOWN_CONTEXT": + case 0: + message.context = 0; + break; + case "SELF": + case 1: + message.context = 1; + break; + case "TEAM": + case 2: + message.context = 2; + break; + case "OPPONENT": + case 3: + message.context = 3; + break; + case "UNKNOWN": + case 4: + message.context = 4; + break; + } + if (object.robotId != null) + message.robotId = object.robotId >>> 0; + return message; + }; + + /** + * Creates an Unpenalisation message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.input.GameEvents.Unpenalisation.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.input.GameEvents.Unpenalisation} Unpenalisation + */ + Unpenalisation.from = Unpenalisation.fromObject; + + /** + * Creates a plain object from an Unpenalisation message. Also converts values to other types if specified. + * @param {message.input.GameEvents.Unpenalisation} message Unpenalisation + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Unpenalisation.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.context = options.enums === String ? "UNKNOWN_CONTEXT" : 0; + object.robotId = 0; + } + if (message.context != null && message.hasOwnProperty("context")) + object.context = options.enums === String ? $root.message.input.GameEvents.Context[message.context] : message.context; + if (message.robotId != null && message.hasOwnProperty("robotId")) + object.robotId = message.robotId; + return object; + }; + + /** + * Creates a plain object from this Unpenalisation message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Unpenalisation.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this Unpenalisation to JSON. + * @returns {Object.} JSON object + */ + Unpenalisation.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return Unpenalisation; + })(); + + GameEvents.CoachMessage = (function() { + + /** + * Properties of a CoachMessage. + * @typedef message.input.GameEvents.CoachMessage$Properties + * @type {Object} + * @property {message.input.GameEvents.Context} [context] CoachMessage context. + * @property {string} [message] CoachMessage message. + */ + + /** + * Constructs a new CoachMessage. + * @exports message.input.GameEvents.CoachMessage + * @constructor + * @param {message.input.GameEvents.CoachMessage$Properties=} [properties] Properties to set + */ + function CoachMessage(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * CoachMessage context. + * @type {message.input.GameEvents.Context} + */ + CoachMessage.prototype.context = 0; + + /** + * CoachMessage message. + * @type {string} + */ + CoachMessage.prototype.message = ""; + + /** + * Creates a new CoachMessage instance using the specified properties. + * @param {message.input.GameEvents.CoachMessage$Properties=} [properties] Properties to set + * @returns {message.input.GameEvents.CoachMessage} CoachMessage instance + */ + CoachMessage.create = function create(properties) { + return new CoachMessage(properties); + }; + + /** + * Encodes the specified CoachMessage message. Does not implicitly {@link message.input.GameEvents.CoachMessage.verify|verify} messages. + * @param {message.input.GameEvents.CoachMessage$Properties} message CoachMessage message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + CoachMessage.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.context != null && message.hasOwnProperty("context")) + writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.context); + if (message.message != null && message.hasOwnProperty("message")) + writer.uint32(/* id 2, wireType 2 =*/18).string(message.message); + return writer; + }; + + /** + * Encodes the specified CoachMessage message, length delimited. Does not implicitly {@link message.input.GameEvents.CoachMessage.verify|verify} messages. + * @param {message.input.GameEvents.CoachMessage$Properties} message CoachMessage message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + CoachMessage.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a CoachMessage message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.input.GameEvents.CoachMessage} CoachMessage + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + CoachMessage.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.input.GameEvents.CoachMessage(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.context = reader.uint32(); + break; + case 2: + message.message = reader.string(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a CoachMessage message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.input.GameEvents.CoachMessage} CoachMessage + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + CoachMessage.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a CoachMessage message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + CoachMessage.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.context != null && message.hasOwnProperty("context")) + switch (message.context) { + default: + return "context: enum value expected"; + case 0: + case 1: + case 2: + case 3: + case 4: + break; + } + if (message.message != null && message.hasOwnProperty("message")) + if (!$util.isString(message.message)) + return "message: string expected"; + return null; + }; + + /** + * Creates a CoachMessage message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.input.GameEvents.CoachMessage} CoachMessage + */ + CoachMessage.fromObject = function fromObject(object) { + if (object instanceof $root.message.input.GameEvents.CoachMessage) + return object; + var message = new $root.message.input.GameEvents.CoachMessage(); + switch (object.context) { + case "UNKNOWN_CONTEXT": + case 0: + message.context = 0; + break; + case "SELF": + case 1: + message.context = 1; + break; + case "TEAM": + case 2: + message.context = 2; + break; + case "OPPONENT": + case 3: + message.context = 3; + break; + case "UNKNOWN": + case 4: + message.context = 4; + break; + } + if (object.message != null) + message.message = String(object.message); + return message; + }; + + /** + * Creates a CoachMessage message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.input.GameEvents.CoachMessage.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.input.GameEvents.CoachMessage} CoachMessage + */ + CoachMessage.from = CoachMessage.fromObject; + + /** + * Creates a plain object from a CoachMessage message. Also converts values to other types if specified. + * @param {message.input.GameEvents.CoachMessage} message CoachMessage + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + CoachMessage.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.context = options.enums === String ? "UNKNOWN_CONTEXT" : 0; + object.message = ""; + } + if (message.context != null && message.hasOwnProperty("context")) + object.context = options.enums === String ? $root.message.input.GameEvents.Context[message.context] : message.context; + if (message.message != null && message.hasOwnProperty("message")) + object.message = message.message; + return object; + }; + + /** + * Creates a plain object from this CoachMessage message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + CoachMessage.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this CoachMessage to JSON. + * @returns {Object.} JSON object + */ + CoachMessage.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return CoachMessage; + })(); + + GameEvents.HalfTime = (function() { + + /** + * Properties of a HalfTime. + * @typedef message.input.GameEvents.HalfTime$Properties + * @type {Object} + * @property {boolean} [firstHalf] HalfTime firstHalf. + */ + + /** + * Constructs a new HalfTime. + * @exports message.input.GameEvents.HalfTime + * @constructor + * @param {message.input.GameEvents.HalfTime$Properties=} [properties] Properties to set + */ + function HalfTime(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * HalfTime firstHalf. + * @type {boolean} + */ + HalfTime.prototype.firstHalf = false; + + /** + * Creates a new HalfTime instance using the specified properties. + * @param {message.input.GameEvents.HalfTime$Properties=} [properties] Properties to set + * @returns {message.input.GameEvents.HalfTime} HalfTime instance + */ + HalfTime.create = function create(properties) { + return new HalfTime(properties); + }; + + /** + * Encodes the specified HalfTime message. Does not implicitly {@link message.input.GameEvents.HalfTime.verify|verify} messages. + * @param {message.input.GameEvents.HalfTime$Properties} message HalfTime message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + HalfTime.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.firstHalf != null && message.hasOwnProperty("firstHalf")) + writer.uint32(/* id 1, wireType 0 =*/8).bool(message.firstHalf); + return writer; + }; + + /** + * Encodes the specified HalfTime message, length delimited. Does not implicitly {@link message.input.GameEvents.HalfTime.verify|verify} messages. + * @param {message.input.GameEvents.HalfTime$Properties} message HalfTime message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + HalfTime.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a HalfTime message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.input.GameEvents.HalfTime} HalfTime + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + HalfTime.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.input.GameEvents.HalfTime(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.firstHalf = reader.bool(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a HalfTime message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.input.GameEvents.HalfTime} HalfTime + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + HalfTime.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a HalfTime message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + HalfTime.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.firstHalf != null && message.hasOwnProperty("firstHalf")) + if (typeof message.firstHalf !== "boolean") + return "firstHalf: boolean expected"; + return null; + }; + + /** + * Creates a HalfTime message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.input.GameEvents.HalfTime} HalfTime + */ + HalfTime.fromObject = function fromObject(object) { + if (object instanceof $root.message.input.GameEvents.HalfTime) + return object; + var message = new $root.message.input.GameEvents.HalfTime(); + if (object.firstHalf != null) + message.firstHalf = Boolean(object.firstHalf); + return message; + }; + + /** + * Creates a HalfTime message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.input.GameEvents.HalfTime.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.input.GameEvents.HalfTime} HalfTime + */ + HalfTime.from = HalfTime.fromObject; + + /** + * Creates a plain object from a HalfTime message. Also converts values to other types if specified. + * @param {message.input.GameEvents.HalfTime} message HalfTime + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + HalfTime.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) + object.firstHalf = false; + if (message.firstHalf != null && message.hasOwnProperty("firstHalf")) + object.firstHalf = message.firstHalf; + return object; + }; + + /** + * Creates a plain object from this HalfTime message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + HalfTime.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this HalfTime to JSON. + * @returns {Object.} JSON object + */ + HalfTime.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return HalfTime; + })(); + + GameEvents.BallKickedOut = (function() { + + /** + * Properties of a BallKickedOut. + * @typedef message.input.GameEvents.BallKickedOut$Properties + * @type {Object} + * @property {message.input.GameEvents.Context} [context] BallKickedOut context. + * @property {google.protobuf.Timestamp$Properties} [time] BallKickedOut time. + */ + + /** + * Constructs a new BallKickedOut. + * @exports message.input.GameEvents.BallKickedOut + * @constructor + * @param {message.input.GameEvents.BallKickedOut$Properties=} [properties] Properties to set + */ + function BallKickedOut(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * BallKickedOut context. + * @type {message.input.GameEvents.Context} + */ + BallKickedOut.prototype.context = 0; + + /** + * BallKickedOut time. + * @type {(google.protobuf.Timestamp$Properties|null)} + */ + BallKickedOut.prototype.time = null; + + /** + * Creates a new BallKickedOut instance using the specified properties. + * @param {message.input.GameEvents.BallKickedOut$Properties=} [properties] Properties to set + * @returns {message.input.GameEvents.BallKickedOut} BallKickedOut instance + */ + BallKickedOut.create = function create(properties) { + return new BallKickedOut(properties); + }; + + /** + * Encodes the specified BallKickedOut message. Does not implicitly {@link message.input.GameEvents.BallKickedOut.verify|verify} messages. + * @param {message.input.GameEvents.BallKickedOut$Properties} message BallKickedOut message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + BallKickedOut.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.context != null && message.hasOwnProperty("context")) + writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.context); + if (message.time != null && message.hasOwnProperty("time")) + $root.google.protobuf.Timestamp.encode(message.time, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified BallKickedOut message, length delimited. Does not implicitly {@link message.input.GameEvents.BallKickedOut.verify|verify} messages. + * @param {message.input.GameEvents.BallKickedOut$Properties} message BallKickedOut message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + BallKickedOut.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a BallKickedOut message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.input.GameEvents.BallKickedOut} BallKickedOut + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + BallKickedOut.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.input.GameEvents.BallKickedOut(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.context = reader.uint32(); + break; + case 3: + message.time = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a BallKickedOut message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.input.GameEvents.BallKickedOut} BallKickedOut + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + BallKickedOut.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a BallKickedOut message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + BallKickedOut.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.context != null && message.hasOwnProperty("context")) + switch (message.context) { + default: + return "context: enum value expected"; + case 0: + case 1: + case 2: + case 3: + case 4: + break; + } + if (message.time != null && message.hasOwnProperty("time")) { + var error = $root.google.protobuf.Timestamp.verify(message.time); + if (error) + return "time." + error; + } + return null; + }; + + /** + * Creates a BallKickedOut message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.input.GameEvents.BallKickedOut} BallKickedOut + */ + BallKickedOut.fromObject = function fromObject(object) { + if (object instanceof $root.message.input.GameEvents.BallKickedOut) + return object; + var message = new $root.message.input.GameEvents.BallKickedOut(); + switch (object.context) { + case "UNKNOWN_CONTEXT": + case 0: + message.context = 0; + break; + case "SELF": + case 1: + message.context = 1; + break; + case "TEAM": + case 2: + message.context = 2; + break; + case "OPPONENT": + case 3: + message.context = 3; + break; + case "UNKNOWN": + case 4: + message.context = 4; + break; + } + if (object.time != null) { + if (typeof object.time !== "object") + throw TypeError(".message.input.GameEvents.BallKickedOut.time: object expected"); + message.time = $root.google.protobuf.Timestamp.fromObject(object.time); + } + return message; + }; + + /** + * Creates a BallKickedOut message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.input.GameEvents.BallKickedOut.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.input.GameEvents.BallKickedOut} BallKickedOut + */ + BallKickedOut.from = BallKickedOut.fromObject; + + /** + * Creates a plain object from a BallKickedOut message. Also converts values to other types if specified. + * @param {message.input.GameEvents.BallKickedOut} message BallKickedOut + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + BallKickedOut.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.context = options.enums === String ? "UNKNOWN_CONTEXT" : 0; + object.time = null; + } + if (message.context != null && message.hasOwnProperty("context")) + object.context = options.enums === String ? $root.message.input.GameEvents.Context[message.context] : message.context; + if (message.time != null && message.hasOwnProperty("time")) + object.time = $root.google.protobuf.Timestamp.toObject(message.time, options); + return object; + }; + + /** + * Creates a plain object from this BallKickedOut message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + BallKickedOut.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this BallKickedOut to JSON. + * @returns {Object.} JSON object + */ + BallKickedOut.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return BallKickedOut; + })(); + + GameEvents.KickOffTeam = (function() { + + /** + * Properties of a KickOffTeam. + * @typedef message.input.GameEvents.KickOffTeam$Properties + * @type {Object} + * @property {message.input.GameEvents.Context} [context] KickOffTeam context. + */ + + /** + * Constructs a new KickOffTeam. + * @exports message.input.GameEvents.KickOffTeam + * @constructor + * @param {message.input.GameEvents.KickOffTeam$Properties=} [properties] Properties to set + */ + function KickOffTeam(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * KickOffTeam context. + * @type {message.input.GameEvents.Context} + */ + KickOffTeam.prototype.context = 0; + + /** + * Creates a new KickOffTeam instance using the specified properties. + * @param {message.input.GameEvents.KickOffTeam$Properties=} [properties] Properties to set + * @returns {message.input.GameEvents.KickOffTeam} KickOffTeam instance + */ + KickOffTeam.create = function create(properties) { + return new KickOffTeam(properties); + }; + + /** + * Encodes the specified KickOffTeam message. Does not implicitly {@link message.input.GameEvents.KickOffTeam.verify|verify} messages. + * @param {message.input.GameEvents.KickOffTeam$Properties} message KickOffTeam message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + KickOffTeam.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.context != null && message.hasOwnProperty("context")) + writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.context); + return writer; + }; + + /** + * Encodes the specified KickOffTeam message, length delimited. Does not implicitly {@link message.input.GameEvents.KickOffTeam.verify|verify} messages. + * @param {message.input.GameEvents.KickOffTeam$Properties} message KickOffTeam message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + KickOffTeam.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a KickOffTeam message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.input.GameEvents.KickOffTeam} KickOffTeam + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + KickOffTeam.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.input.GameEvents.KickOffTeam(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.context = reader.uint32(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a KickOffTeam message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.input.GameEvents.KickOffTeam} KickOffTeam + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + KickOffTeam.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a KickOffTeam message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + KickOffTeam.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.context != null && message.hasOwnProperty("context")) + switch (message.context) { + default: + return "context: enum value expected"; + case 0: + case 1: + case 2: + case 3: + case 4: + break; + } + return null; + }; + + /** + * Creates a KickOffTeam message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.input.GameEvents.KickOffTeam} KickOffTeam + */ + KickOffTeam.fromObject = function fromObject(object) { + if (object instanceof $root.message.input.GameEvents.KickOffTeam) + return object; + var message = new $root.message.input.GameEvents.KickOffTeam(); + switch (object.context) { + case "UNKNOWN_CONTEXT": + case 0: + message.context = 0; + break; + case "SELF": + case 1: + message.context = 1; + break; + case "TEAM": + case 2: + message.context = 2; + break; + case "OPPONENT": + case 3: + message.context = 3; + break; + case "UNKNOWN": + case 4: + message.context = 4; + break; + } + return message; + }; + + /** + * Creates a KickOffTeam message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.input.GameEvents.KickOffTeam.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.input.GameEvents.KickOffTeam} KickOffTeam + */ + KickOffTeam.from = KickOffTeam.fromObject; + + /** + * Creates a plain object from a KickOffTeam message. Also converts values to other types if specified. + * @param {message.input.GameEvents.KickOffTeam} message KickOffTeam + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + KickOffTeam.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) + object.context = options.enums === String ? "UNKNOWN_CONTEXT" : 0; + if (message.context != null && message.hasOwnProperty("context")) + object.context = options.enums === String ? $root.message.input.GameEvents.Context[message.context] : message.context; + return object; + }; + + /** + * Creates a plain object from this KickOffTeam message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + KickOffTeam.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this KickOffTeam to JSON. + * @returns {Object.} JSON object + */ + KickOffTeam.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return KickOffTeam; + })(); + + GameEvents.GamePhase = (function() { + + /** + * Properties of a GamePhase. + * @typedef message.input.GameEvents.GamePhase$Properties + * @type {Object} + * @property {message.input.GameState.Data.Phase} [phase] GamePhase phase. + * @property {google.protobuf.Timestamp$Properties} [readyTime] GamePhase readyTime. + * @property {google.protobuf.Timestamp$Properties} [endHalf] GamePhase endHalf. + * @property {google.protobuf.Timestamp$Properties} [ballFree] GamePhase ballFree. + * @property {google.protobuf.Timestamp$Properties} [ends] GamePhase ends. + * @property {google.protobuf.Timestamp$Properties} [nextHalf] GamePhase nextHalf. + */ + + /** + * Constructs a new GamePhase. + * @exports message.input.GameEvents.GamePhase + * @constructor + * @param {message.input.GameEvents.GamePhase$Properties=} [properties] Properties to set + */ + function GamePhase(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * GamePhase phase. + * @type {message.input.GameState.Data.Phase} + */ + GamePhase.prototype.phase = 0; + + /** + * GamePhase readyTime. + * @type {(google.protobuf.Timestamp$Properties|null)} + */ + GamePhase.prototype.readyTime = null; + + /** + * GamePhase endHalf. + * @type {(google.protobuf.Timestamp$Properties|null)} + */ + GamePhase.prototype.endHalf = null; + + /** + * GamePhase ballFree. + * @type {(google.protobuf.Timestamp$Properties|null)} + */ + GamePhase.prototype.ballFree = null; + + /** + * GamePhase ends. + * @type {(google.protobuf.Timestamp$Properties|null)} + */ + GamePhase.prototype.ends = null; + + /** + * GamePhase nextHalf. + * @type {(google.protobuf.Timestamp$Properties|null)} + */ + GamePhase.prototype.nextHalf = null; + + /** + * Creates a new GamePhase instance using the specified properties. + * @param {message.input.GameEvents.GamePhase$Properties=} [properties] Properties to set + * @returns {message.input.GameEvents.GamePhase} GamePhase instance + */ + GamePhase.create = function create(properties) { + return new GamePhase(properties); + }; + + /** + * Encodes the specified GamePhase message. Does not implicitly {@link message.input.GameEvents.GamePhase.verify|verify} messages. + * @param {message.input.GameEvents.GamePhase$Properties} message GamePhase message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + GamePhase.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.phase != null && message.hasOwnProperty("phase")) + writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.phase); + if (message.readyTime != null && message.hasOwnProperty("readyTime")) + $root.google.protobuf.Timestamp.encode(message.readyTime, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.endHalf != null && message.hasOwnProperty("endHalf")) + $root.google.protobuf.Timestamp.encode(message.endHalf, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + if (message.ballFree != null && message.hasOwnProperty("ballFree")) + $root.google.protobuf.Timestamp.encode(message.ballFree, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); + if (message.ends != null && message.hasOwnProperty("ends")) + $root.google.protobuf.Timestamp.encode(message.ends, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); + if (message.nextHalf != null && message.hasOwnProperty("nextHalf")) + $root.google.protobuf.Timestamp.encode(message.nextHalf, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified GamePhase message, length delimited. Does not implicitly {@link message.input.GameEvents.GamePhase.verify|verify} messages. + * @param {message.input.GameEvents.GamePhase$Properties} message GamePhase message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + GamePhase.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a GamePhase message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.input.GameEvents.GamePhase} GamePhase + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + GamePhase.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.input.GameEvents.GamePhase(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.phase = reader.uint32(); + break; + case 2: + message.readyTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); + break; + case 3: + message.endHalf = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); + break; + case 4: + message.ballFree = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); + break; + case 5: + message.ends = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); + break; + case 6: + message.nextHalf = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a GamePhase message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.input.GameEvents.GamePhase} GamePhase + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + GamePhase.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a GamePhase message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + GamePhase.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.phase != null && message.hasOwnProperty("phase")) + switch (message.phase) { + default: + return "phase: enum value expected"; + case 0: + case 1: + case 2: + case 3: + case 4: + case 5: + case 6: + break; + } + if (message.readyTime != null && message.hasOwnProperty("readyTime")) { + var error = $root.google.protobuf.Timestamp.verify(message.readyTime); + if (error) + return "readyTime." + error; + } + if (message.endHalf != null && message.hasOwnProperty("endHalf")) { + var error = $root.google.protobuf.Timestamp.verify(message.endHalf); + if (error) + return "endHalf." + error; + } + if (message.ballFree != null && message.hasOwnProperty("ballFree")) { + var error = $root.google.protobuf.Timestamp.verify(message.ballFree); + if (error) + return "ballFree." + error; + } + if (message.ends != null && message.hasOwnProperty("ends")) { + var error = $root.google.protobuf.Timestamp.verify(message.ends); + if (error) + return "ends." + error; + } + if (message.nextHalf != null && message.hasOwnProperty("nextHalf")) { + var error = $root.google.protobuf.Timestamp.verify(message.nextHalf); + if (error) + return "nextHalf." + error; + } + return null; + }; + + /** + * Creates a GamePhase message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.input.GameEvents.GamePhase} GamePhase + */ + GamePhase.fromObject = function fromObject(object) { + if (object instanceof $root.message.input.GameEvents.GamePhase) + return object; + var message = new $root.message.input.GameEvents.GamePhase(); + switch (object.phase) { + case "UNKNOWN_PHASE": + case 0: + message.phase = 0; + break; + case "INITIAL": + case 1: + message.phase = 1; + break; + case "READY": + case 2: + message.phase = 2; + break; + case "SET": + case 3: + message.phase = 3; + break; + case "PLAYING": + case 4: + message.phase = 4; + break; + case "TIMEOUT": + case 5: + message.phase = 5; + break; + case "FINISHED": + case 6: + message.phase = 6; + break; + } + if (object.readyTime != null) { + if (typeof object.readyTime !== "object") + throw TypeError(".message.input.GameEvents.GamePhase.readyTime: object expected"); + message.readyTime = $root.google.protobuf.Timestamp.fromObject(object.readyTime); + } + if (object.endHalf != null) { + if (typeof object.endHalf !== "object") + throw TypeError(".message.input.GameEvents.GamePhase.endHalf: object expected"); + message.endHalf = $root.google.protobuf.Timestamp.fromObject(object.endHalf); + } + if (object.ballFree != null) { + if (typeof object.ballFree !== "object") + throw TypeError(".message.input.GameEvents.GamePhase.ballFree: object expected"); + message.ballFree = $root.google.protobuf.Timestamp.fromObject(object.ballFree); + } + if (object.ends != null) { + if (typeof object.ends !== "object") + throw TypeError(".message.input.GameEvents.GamePhase.ends: object expected"); + message.ends = $root.google.protobuf.Timestamp.fromObject(object.ends); + } + if (object.nextHalf != null) { + if (typeof object.nextHalf !== "object") + throw TypeError(".message.input.GameEvents.GamePhase.nextHalf: object expected"); + message.nextHalf = $root.google.protobuf.Timestamp.fromObject(object.nextHalf); + } + return message; + }; + + /** + * Creates a GamePhase message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.input.GameEvents.GamePhase.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.input.GameEvents.GamePhase} GamePhase + */ + GamePhase.from = GamePhase.fromObject; + + /** + * Creates a plain object from a GamePhase message. Also converts values to other types if specified. + * @param {message.input.GameEvents.GamePhase} message GamePhase + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + GamePhase.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.phase = options.enums === String ? "UNKNOWN_PHASE" : 0; + object.readyTime = null; + object.endHalf = null; + object.ballFree = null; + object.ends = null; + object.nextHalf = null; + } + if (message.phase != null && message.hasOwnProperty("phase")) + object.phase = options.enums === String ? $root.message.input.GameState.Data.Phase[message.phase] : message.phase; + if (message.readyTime != null && message.hasOwnProperty("readyTime")) + object.readyTime = $root.google.protobuf.Timestamp.toObject(message.readyTime, options); + if (message.endHalf != null && message.hasOwnProperty("endHalf")) + object.endHalf = $root.google.protobuf.Timestamp.toObject(message.endHalf, options); + if (message.ballFree != null && message.hasOwnProperty("ballFree")) + object.ballFree = $root.google.protobuf.Timestamp.toObject(message.ballFree, options); + if (message.ends != null && message.hasOwnProperty("ends")) + object.ends = $root.google.protobuf.Timestamp.toObject(message.ends, options); + if (message.nextHalf != null && message.hasOwnProperty("nextHalf")) + object.nextHalf = $root.google.protobuf.Timestamp.toObject(message.nextHalf, options); + return object; + }; + + /** + * Creates a plain object from this GamePhase message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + GamePhase.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this GamePhase to JSON. + * @returns {Object.} JSON object + */ + GamePhase.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return GamePhase; + })(); + + GameEvents.GameMode = (function() { + + /** + * Properties of a GameMode. + * @typedef message.input.GameEvents.GameMode$Properties + * @type {Object} + * @property {message.input.GameState.Data.Mode} [mode] GameMode mode. + */ + + /** + * Constructs a new GameMode. + * @exports message.input.GameEvents.GameMode + * @constructor + * @param {message.input.GameEvents.GameMode$Properties=} [properties] Properties to set + */ + function GameMode(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * GameMode mode. + * @type {message.input.GameState.Data.Mode} + */ + GameMode.prototype.mode = 0; + + /** + * Creates a new GameMode instance using the specified properties. + * @param {message.input.GameEvents.GameMode$Properties=} [properties] Properties to set + * @returns {message.input.GameEvents.GameMode} GameMode instance + */ + GameMode.create = function create(properties) { + return new GameMode(properties); + }; + + /** + * Encodes the specified GameMode message. Does not implicitly {@link message.input.GameEvents.GameMode.verify|verify} messages. + * @param {message.input.GameEvents.GameMode$Properties} message GameMode message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + GameMode.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.mode != null && message.hasOwnProperty("mode")) + writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.mode); + return writer; + }; + + /** + * Encodes the specified GameMode message, length delimited. Does not implicitly {@link message.input.GameEvents.GameMode.verify|verify} messages. + * @param {message.input.GameEvents.GameMode$Properties} message GameMode message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + GameMode.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a GameMode message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.input.GameEvents.GameMode} GameMode + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + GameMode.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.input.GameEvents.GameMode(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.mode = reader.uint32(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a GameMode message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.input.GameEvents.GameMode} GameMode + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + GameMode.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a GameMode message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + GameMode.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.mode != null && message.hasOwnProperty("mode")) + switch (message.mode) { + default: + return "mode: enum value expected"; + case 0: + case 1: + case 2: + case 3: + break; + } + return null; + }; + + /** + * Creates a GameMode message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.input.GameEvents.GameMode} GameMode + */ + GameMode.fromObject = function fromObject(object) { + if (object instanceof $root.message.input.GameEvents.GameMode) + return object; + var message = new $root.message.input.GameEvents.GameMode(); + switch (object.mode) { + case "UNKNOWN_MODE": + case 0: + message.mode = 0; + break; + case "NORMAL": + case 1: + message.mode = 1; + break; + case "PENALTY_SHOOTOUT": + case 2: + message.mode = 2; + break; + case "OVERTIME": + case 3: + message.mode = 3; + break; + } + return message; + }; + + /** + * Creates a GameMode message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.input.GameEvents.GameMode.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.input.GameEvents.GameMode} GameMode + */ + GameMode.from = GameMode.fromObject; + + /** + * Creates a plain object from a GameMode message. Also converts values to other types if specified. + * @param {message.input.GameEvents.GameMode} message GameMode + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + GameMode.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) + object.mode = options.enums === String ? "UNKNOWN_MODE" : 0; + if (message.mode != null && message.hasOwnProperty("mode")) + object.mode = options.enums === String ? $root.message.input.GameState.Data.Mode[message.mode] : message.mode; + return object; + }; + + /** + * Creates a plain object from this GameMode message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + GameMode.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this GameMode to JSON. + * @returns {Object.} JSON object + */ + GameMode.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return GameMode; + })(); + + return GameEvents; + })(); + + input.GameState = (function() { + + /** + * Properties of a GameState. + * @typedef message.input.GameState$Properties + * @type {Object} + * @property {message.input.GameState.Data$Properties} [data] GameState data. + * @property {string} [event] GameState event. + */ + + /** + * Constructs a new GameState. + * @exports message.input.GameState + * @constructor + * @param {message.input.GameState$Properties=} [properties] Properties to set + */ + function GameState(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * GameState data. + * @type {(message.input.GameState.Data$Properties|null)} + */ + GameState.prototype.data = null; + + /** + * GameState event. + * @type {string} + */ + GameState.prototype.event = ""; + + /** + * Creates a new GameState instance using the specified properties. + * @param {message.input.GameState$Properties=} [properties] Properties to set + * @returns {message.input.GameState} GameState instance + */ + GameState.create = function create(properties) { + return new GameState(properties); + }; + + /** + * Encodes the specified GameState message. Does not implicitly {@link message.input.GameState.verify|verify} messages. + * @param {message.input.GameState$Properties} message GameState message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + GameState.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.data != null && message.hasOwnProperty("data")) + $root.message.input.GameState.Data.encode(message.data, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.event != null && message.hasOwnProperty("event")) + writer.uint32(/* id 2, wireType 2 =*/18).string(message.event); + return writer; + }; + + /** + * Encodes the specified GameState message, length delimited. Does not implicitly {@link message.input.GameState.verify|verify} messages. + * @param {message.input.GameState$Properties} message GameState message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + GameState.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a GameState message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.input.GameState} GameState + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + GameState.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.input.GameState(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.data = $root.message.input.GameState.Data.decode(reader, reader.uint32()); + break; + case 2: + message.event = reader.string(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a GameState message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.input.GameState} GameState + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + GameState.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a GameState message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + GameState.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.data != null && message.hasOwnProperty("data")) { + var error = $root.message.input.GameState.Data.verify(message.data); + if (error) + return "data." + error; + } + if (message.event != null && message.hasOwnProperty("event")) + if (!$util.isString(message.event)) + return "event: string expected"; + return null; + }; + + /** + * Creates a GameState message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.input.GameState} GameState + */ + GameState.fromObject = function fromObject(object) { + if (object instanceof $root.message.input.GameState) + return object; + var message = new $root.message.input.GameState(); + if (object.data != null) { + if (typeof object.data !== "object") + throw TypeError(".message.input.GameState.data: object expected"); + message.data = $root.message.input.GameState.Data.fromObject(object.data); + } + if (object.event != null) + message.event = String(object.event); + return message; + }; + + /** + * Creates a GameState message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.input.GameState.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.input.GameState} GameState + */ + GameState.from = GameState.fromObject; + + /** + * Creates a plain object from a GameState message. Also converts values to other types if specified. + * @param {message.input.GameState} message GameState + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + GameState.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.data = null; + object.event = ""; + } + if (message.data != null && message.hasOwnProperty("data")) + object.data = $root.message.input.GameState.Data.toObject(message.data, options); + if (message.event != null && message.hasOwnProperty("event")) + object.event = message.event; + return object; + }; + + /** + * Creates a plain object from this GameState message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + GameState.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this GameState to JSON. + * @returns {Object.} JSON object + */ + GameState.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + GameState.Data = (function() { + + /** + * Properties of a Data. + * @typedef message.input.GameState.Data$Properties + * @type {Object} + * @property {message.input.GameState.Data.Phase} [phase] Data phase. + * @property {message.input.GameState.Data.Mode} [mode] Data mode. + * @property {boolean} [firstHalf] Data firstHalf. + * @property {boolean} [kickedOutByUs] Data kickedOutByUs. + * @property {google.protobuf.Timestamp$Properties} [kickedOutTime] Data kickedOutTime. + * @property {boolean} [ourKickOff] Data ourKickOff. + * @property {google.protobuf.Timestamp$Properties} [primaryTime] Data primaryTime. + * @property {google.protobuf.Timestamp$Properties} [secondaryTime] Data secondaryTime. + * @property {message.input.GameState.Data.Team$Properties} [team] Data team. + * @property {message.input.GameState.Data.Team$Properties} [opponent] Data opponent. + * @property {message.input.GameState.Data.Robot$Properties} [self] Data self. + */ + + /** + * Constructs a new Data. + * @exports message.input.GameState.Data + * @constructor + * @param {message.input.GameState.Data$Properties=} [properties] Properties to set + */ + function Data(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Data phase. + * @type {message.input.GameState.Data.Phase} + */ + Data.prototype.phase = 0; + + /** + * Data mode. + * @type {message.input.GameState.Data.Mode} + */ + Data.prototype.mode = 0; + + /** + * Data firstHalf. + * @type {boolean} + */ + Data.prototype.firstHalf = false; + + /** + * Data kickedOutByUs. + * @type {boolean} + */ + Data.prototype.kickedOutByUs = false; + + /** + * Data kickedOutTime. + * @type {(google.protobuf.Timestamp$Properties|null)} + */ + Data.prototype.kickedOutTime = null; + + /** + * Data ourKickOff. + * @type {boolean} + */ + Data.prototype.ourKickOff = false; + + /** + * Data primaryTime. + * @type {(google.protobuf.Timestamp$Properties|null)} + */ + Data.prototype.primaryTime = null; + + /** + * Data secondaryTime. + * @type {(google.protobuf.Timestamp$Properties|null)} + */ + Data.prototype.secondaryTime = null; + + /** + * Data team. + * @type {(message.input.GameState.Data.Team$Properties|null)} + */ + Data.prototype.team = null; + + /** + * Data opponent. + * @type {(message.input.GameState.Data.Team$Properties|null)} + */ + Data.prototype.opponent = null; + + /** + * Data self. + * @type {(message.input.GameState.Data.Robot$Properties|null)} + */ + Data.prototype.self = null; + + /** + * Creates a new Data instance using the specified properties. + * @param {message.input.GameState.Data$Properties=} [properties] Properties to set + * @returns {message.input.GameState.Data} Data instance + */ + Data.create = function create(properties) { + return new Data(properties); + }; + + /** + * Encodes the specified Data message. Does not implicitly {@link message.input.GameState.Data.verify|verify} messages. + * @param {message.input.GameState.Data$Properties} message Data message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Data.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.phase != null && message.hasOwnProperty("phase")) + writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.phase); + if (message.mode != null && message.hasOwnProperty("mode")) + writer.uint32(/* id 2, wireType 0 =*/16).uint32(message.mode); + if (message.firstHalf != null && message.hasOwnProperty("firstHalf")) + writer.uint32(/* id 3, wireType 0 =*/24).bool(message.firstHalf); + if (message.kickedOutByUs != null && message.hasOwnProperty("kickedOutByUs")) + writer.uint32(/* id 4, wireType 0 =*/32).bool(message.kickedOutByUs); + if (message.kickedOutTime != null && message.hasOwnProperty("kickedOutTime")) + $root.google.protobuf.Timestamp.encode(message.kickedOutTime, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); + if (message.ourKickOff != null && message.hasOwnProperty("ourKickOff")) + writer.uint32(/* id 6, wireType 0 =*/48).bool(message.ourKickOff); + if (message.primaryTime != null && message.hasOwnProperty("primaryTime")) + $root.google.protobuf.Timestamp.encode(message.primaryTime, writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim(); + if (message.secondaryTime != null && message.hasOwnProperty("secondaryTime")) + $root.google.protobuf.Timestamp.encode(message.secondaryTime, writer.uint32(/* id 8, wireType 2 =*/66).fork()).ldelim(); + if (message.team != null && message.hasOwnProperty("team")) + $root.message.input.GameState.Data.Team.encode(message.team, writer.uint32(/* id 9, wireType 2 =*/74).fork()).ldelim(); + if (message.opponent != null && message.hasOwnProperty("opponent")) + $root.message.input.GameState.Data.Team.encode(message.opponent, writer.uint32(/* id 10, wireType 2 =*/82).fork()).ldelim(); + if (message.self != null && message.hasOwnProperty("self")) + $root.message.input.GameState.Data.Robot.encode(message.self, writer.uint32(/* id 11, wireType 2 =*/90).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified Data message, length delimited. Does not implicitly {@link message.input.GameState.Data.verify|verify} messages. + * @param {message.input.GameState.Data$Properties} message Data message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Data.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a Data message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.input.GameState.Data} Data + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Data.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.input.GameState.Data(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.phase = reader.uint32(); + break; + case 2: + message.mode = reader.uint32(); + break; + case 3: + message.firstHalf = reader.bool(); + break; + case 4: + message.kickedOutByUs = reader.bool(); + break; + case 5: + message.kickedOutTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); + break; + case 6: + message.ourKickOff = reader.bool(); + break; + case 7: + message.primaryTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); + break; + case 8: + message.secondaryTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); + break; + case 9: + message.team = $root.message.input.GameState.Data.Team.decode(reader, reader.uint32()); + break; + case 10: + message.opponent = $root.message.input.GameState.Data.Team.decode(reader, reader.uint32()); + break; + case 11: + message.self = $root.message.input.GameState.Data.Robot.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a Data message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.input.GameState.Data} Data + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Data.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a Data message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + Data.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.phase != null && message.hasOwnProperty("phase")) + switch (message.phase) { + default: + return "phase: enum value expected"; + case 0: + case 1: + case 2: + case 3: + case 4: + case 5: + case 6: + break; + } + if (message.mode != null && message.hasOwnProperty("mode")) + switch (message.mode) { + default: + return "mode: enum value expected"; + case 0: + case 1: + case 2: + case 3: + break; + } + if (message.firstHalf != null && message.hasOwnProperty("firstHalf")) + if (typeof message.firstHalf !== "boolean") + return "firstHalf: boolean expected"; + if (message.kickedOutByUs != null && message.hasOwnProperty("kickedOutByUs")) + if (typeof message.kickedOutByUs !== "boolean") + return "kickedOutByUs: boolean expected"; + if (message.kickedOutTime != null && message.hasOwnProperty("kickedOutTime")) { + var error = $root.google.protobuf.Timestamp.verify(message.kickedOutTime); + if (error) + return "kickedOutTime." + error; + } + if (message.ourKickOff != null && message.hasOwnProperty("ourKickOff")) + if (typeof message.ourKickOff !== "boolean") + return "ourKickOff: boolean expected"; + if (message.primaryTime != null && message.hasOwnProperty("primaryTime")) { + var error = $root.google.protobuf.Timestamp.verify(message.primaryTime); + if (error) + return "primaryTime." + error; + } + if (message.secondaryTime != null && message.hasOwnProperty("secondaryTime")) { + var error = $root.google.protobuf.Timestamp.verify(message.secondaryTime); + if (error) + return "secondaryTime." + error; + } + if (message.team != null && message.hasOwnProperty("team")) { + var error = $root.message.input.GameState.Data.Team.verify(message.team); + if (error) + return "team." + error; + } + if (message.opponent != null && message.hasOwnProperty("opponent")) { + var error = $root.message.input.GameState.Data.Team.verify(message.opponent); + if (error) + return "opponent." + error; + } + if (message.self != null && message.hasOwnProperty("self")) { + var error = $root.message.input.GameState.Data.Robot.verify(message.self); + if (error) + return "self." + error; + } + return null; + }; + + /** + * Creates a Data message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.input.GameState.Data} Data + */ + Data.fromObject = function fromObject(object) { + if (object instanceof $root.message.input.GameState.Data) + return object; + var message = new $root.message.input.GameState.Data(); + switch (object.phase) { + case "UNKNOWN_PHASE": + case 0: + message.phase = 0; + break; + case "INITIAL": + case 1: + message.phase = 1; + break; + case "READY": + case 2: + message.phase = 2; + break; + case "SET": + case 3: + message.phase = 3; + break; + case "PLAYING": + case 4: + message.phase = 4; + break; + case "TIMEOUT": + case 5: + message.phase = 5; + break; + case "FINISHED": + case 6: + message.phase = 6; + break; + } + switch (object.mode) { + case "UNKNOWN_MODE": + case 0: + message.mode = 0; + break; + case "NORMAL": + case 1: + message.mode = 1; + break; + case "PENALTY_SHOOTOUT": + case 2: + message.mode = 2; + break; + case "OVERTIME": + case 3: + message.mode = 3; + break; + } + if (object.firstHalf != null) + message.firstHalf = Boolean(object.firstHalf); + if (object.kickedOutByUs != null) + message.kickedOutByUs = Boolean(object.kickedOutByUs); + if (object.kickedOutTime != null) { + if (typeof object.kickedOutTime !== "object") + throw TypeError(".message.input.GameState.Data.kickedOutTime: object expected"); + message.kickedOutTime = $root.google.protobuf.Timestamp.fromObject(object.kickedOutTime); + } + if (object.ourKickOff != null) + message.ourKickOff = Boolean(object.ourKickOff); + if (object.primaryTime != null) { + if (typeof object.primaryTime !== "object") + throw TypeError(".message.input.GameState.Data.primaryTime: object expected"); + message.primaryTime = $root.google.protobuf.Timestamp.fromObject(object.primaryTime); + } + if (object.secondaryTime != null) { + if (typeof object.secondaryTime !== "object") + throw TypeError(".message.input.GameState.Data.secondaryTime: object expected"); + message.secondaryTime = $root.google.protobuf.Timestamp.fromObject(object.secondaryTime); + } + if (object.team != null) { + if (typeof object.team !== "object") + throw TypeError(".message.input.GameState.Data.team: object expected"); + message.team = $root.message.input.GameState.Data.Team.fromObject(object.team); + } + if (object.opponent != null) { + if (typeof object.opponent !== "object") + throw TypeError(".message.input.GameState.Data.opponent: object expected"); + message.opponent = $root.message.input.GameState.Data.Team.fromObject(object.opponent); + } + if (object.self != null) { + if (typeof object.self !== "object") + throw TypeError(".message.input.GameState.Data.self: object expected"); + message.self = $root.message.input.GameState.Data.Robot.fromObject(object.self); + } + return message; + }; + + /** + * Creates a Data message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.input.GameState.Data.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.input.GameState.Data} Data + */ + Data.from = Data.fromObject; + + /** + * Creates a plain object from a Data message. Also converts values to other types if specified. + * @param {message.input.GameState.Data} message Data + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Data.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.phase = options.enums === String ? "UNKNOWN_PHASE" : 0; + object.mode = options.enums === String ? "UNKNOWN_MODE" : 0; + object.firstHalf = false; + object.kickedOutByUs = false; + object.kickedOutTime = null; + object.ourKickOff = false; + object.primaryTime = null; + object.secondaryTime = null; + object.team = null; + object.opponent = null; + object.self = null; + } + if (message.phase != null && message.hasOwnProperty("phase")) + object.phase = options.enums === String ? $root.message.input.GameState.Data.Phase[message.phase] : message.phase; + if (message.mode != null && message.hasOwnProperty("mode")) + object.mode = options.enums === String ? $root.message.input.GameState.Data.Mode[message.mode] : message.mode; + if (message.firstHalf != null && message.hasOwnProperty("firstHalf")) + object.firstHalf = message.firstHalf; + if (message.kickedOutByUs != null && message.hasOwnProperty("kickedOutByUs")) + object.kickedOutByUs = message.kickedOutByUs; + if (message.kickedOutTime != null && message.hasOwnProperty("kickedOutTime")) + object.kickedOutTime = $root.google.protobuf.Timestamp.toObject(message.kickedOutTime, options); + if (message.ourKickOff != null && message.hasOwnProperty("ourKickOff")) + object.ourKickOff = message.ourKickOff; + if (message.primaryTime != null && message.hasOwnProperty("primaryTime")) + object.primaryTime = $root.google.protobuf.Timestamp.toObject(message.primaryTime, options); + if (message.secondaryTime != null && message.hasOwnProperty("secondaryTime")) + object.secondaryTime = $root.google.protobuf.Timestamp.toObject(message.secondaryTime, options); + if (message.team != null && message.hasOwnProperty("team")) + object.team = $root.message.input.GameState.Data.Team.toObject(message.team, options); + if (message.opponent != null && message.hasOwnProperty("opponent")) + object.opponent = $root.message.input.GameState.Data.Team.toObject(message.opponent, options); + if (message.self != null && message.hasOwnProperty("self")) + object.self = $root.message.input.GameState.Data.Robot.toObject(message.self, options); + return object; + }; + + /** + * Creates a plain object from this Data message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Data.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this Data to JSON. + * @returns {Object.} JSON object + */ + Data.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Mode enum. + * @name Mode + * @memberof message.input.GameState.Data + * @enum {number} + * @property {number} UNKNOWN_MODE=0 UNKNOWN_MODE value + * @property {number} NORMAL=1 NORMAL value + * @property {number} PENALTY_SHOOTOUT=2 PENALTY_SHOOTOUT value + * @property {number} OVERTIME=3 OVERTIME value + */ + Data.Mode = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "UNKNOWN_MODE"] = 0; + values[valuesById[1] = "NORMAL"] = 1; + values[valuesById[2] = "PENALTY_SHOOTOUT"] = 2; + values[valuesById[3] = "OVERTIME"] = 3; + return values; + })(); + + /** + * Phase enum. + * @name Phase + * @memberof message.input.GameState.Data + * @enum {number} + * @property {number} UNKNOWN_PHASE=0 UNKNOWN_PHASE value + * @property {number} INITIAL=1 INITIAL value + * @property {number} READY=2 READY value + * @property {number} SET=3 SET value + * @property {number} PLAYING=4 PLAYING value + * @property {number} TIMEOUT=5 TIMEOUT value + * @property {number} FINISHED=6 FINISHED value + */ + Data.Phase = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "UNKNOWN_PHASE"] = 0; + values[valuesById[1] = "INITIAL"] = 1; + values[valuesById[2] = "READY"] = 2; + values[valuesById[3] = "SET"] = 3; + values[valuesById[4] = "PLAYING"] = 4; + values[valuesById[5] = "TIMEOUT"] = 5; + values[valuesById[6] = "FINISHED"] = 6; + return values; + })(); + + /** + * PenaltyReason enum. + * @name PenaltyReason + * @memberof message.input.GameState.Data + * @enum {number} + * @property {number} UNKNOWN_PENALTY_REASON=0 UNKNOWN_PENALTY_REASON value + * @property {number} UNPENALISED=1 UNPENALISED value + * @property {number} BALL_MANIPULATION=2 BALL_MANIPULATION value + * @property {number} PHYSICAL_CONTACT=3 PHYSICAL_CONTACT value + * @property {number} ILLEGAL_ATTACK=4 ILLEGAL_ATTACK value + * @property {number} ILLEGAL_DEFENSE=5 ILLEGAL_DEFENSE value + * @property {number} REQUEST_FOR_PICKUP=6 REQUEST_FOR_PICKUP value + * @property {number} REQUEST_FOR_SERVICE=7 REQUEST_FOR_SERVICE value + * @property {number} REQUEST_FOR_PICKUP_TO_SERVICE=8 REQUEST_FOR_PICKUP_TO_SERVICE value + * @property {number} SUBSTITUTE=9 SUBSTITUTE value + * @property {number} MANUAL=10 MANUAL value + */ + Data.PenaltyReason = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "UNKNOWN_PENALTY_REASON"] = 0; + values[valuesById[1] = "UNPENALISED"] = 1; + values[valuesById[2] = "BALL_MANIPULATION"] = 2; + values[valuesById[3] = "PHYSICAL_CONTACT"] = 3; + values[valuesById[4] = "ILLEGAL_ATTACK"] = 4; + values[valuesById[5] = "ILLEGAL_DEFENSE"] = 5; + values[valuesById[6] = "REQUEST_FOR_PICKUP"] = 6; + values[valuesById[7] = "REQUEST_FOR_SERVICE"] = 7; + values[valuesById[8] = "REQUEST_FOR_PICKUP_TO_SERVICE"] = 8; + values[valuesById[9] = "SUBSTITUTE"] = 9; + values[valuesById[10] = "MANUAL"] = 10; + return values; + })(); + + Data.Robot = (function() { + + /** + * Properties of a Robot. + * @typedef message.input.GameState.Data.Robot$Properties + * @type {Object} + * @property {number} [id] Robot id. + * @property {message.input.GameState.Data.PenaltyReason} [penaltyReason] Robot penaltyReason. + * @property {google.protobuf.Timestamp$Properties} [unpenalised] Robot unpenalised. + */ + + /** + * Constructs a new Robot. + * @exports message.input.GameState.Data.Robot + * @constructor + * @param {message.input.GameState.Data.Robot$Properties=} [properties] Properties to set + */ + function Robot(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Robot id. + * @type {number} + */ + Robot.prototype.id = 0; + + /** + * Robot penaltyReason. + * @type {message.input.GameState.Data.PenaltyReason} + */ + Robot.prototype.penaltyReason = 0; + + /** + * Robot unpenalised. + * @type {(google.protobuf.Timestamp$Properties|null)} + */ + Robot.prototype.unpenalised = null; + + /** + * Creates a new Robot instance using the specified properties. + * @param {message.input.GameState.Data.Robot$Properties=} [properties] Properties to set + * @returns {message.input.GameState.Data.Robot} Robot instance + */ + Robot.create = function create(properties) { + return new Robot(properties); + }; + + /** + * Encodes the specified Robot message. Does not implicitly {@link message.input.GameState.Data.Robot.verify|verify} messages. + * @param {message.input.GameState.Data.Robot$Properties} message Robot message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Robot.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.id != null && message.hasOwnProperty("id")) + writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.id); + if (message.penaltyReason != null && message.hasOwnProperty("penaltyReason")) + writer.uint32(/* id 2, wireType 0 =*/16).uint32(message.penaltyReason); + if (message.unpenalised != null && message.hasOwnProperty("unpenalised")) + $root.google.protobuf.Timestamp.encode(message.unpenalised, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified Robot message, length delimited. Does not implicitly {@link message.input.GameState.Data.Robot.verify|verify} messages. + * @param {message.input.GameState.Data.Robot$Properties} message Robot message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Robot.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a Robot message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.input.GameState.Data.Robot} Robot + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Robot.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.input.GameState.Data.Robot(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.id = reader.uint32(); + break; + case 2: + message.penaltyReason = reader.uint32(); + break; + case 3: + message.unpenalised = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a Robot message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.input.GameState.Data.Robot} Robot + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Robot.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a Robot message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + Robot.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.id != null && message.hasOwnProperty("id")) + if (!$util.isInteger(message.id)) + return "id: integer expected"; + if (message.penaltyReason != null && message.hasOwnProperty("penaltyReason")) + switch (message.penaltyReason) { + default: + return "penaltyReason: enum value expected"; + case 0: + case 1: + case 2: + case 3: + case 4: + case 5: + case 6: + case 7: + case 8: + case 9: + case 10: + break; + } + if (message.unpenalised != null && message.hasOwnProperty("unpenalised")) { + var error = $root.google.protobuf.Timestamp.verify(message.unpenalised); + if (error) + return "unpenalised." + error; + } + return null; + }; + + /** + * Creates a Robot message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.input.GameState.Data.Robot} Robot + */ + Robot.fromObject = function fromObject(object) { + if (object instanceof $root.message.input.GameState.Data.Robot) + return object; + var message = new $root.message.input.GameState.Data.Robot(); + if (object.id != null) + message.id = object.id >>> 0; + switch (object.penaltyReason) { + case "UNKNOWN_PENALTY_REASON": + case 0: + message.penaltyReason = 0; + break; + case "UNPENALISED": + case 1: + message.penaltyReason = 1; + break; + case "BALL_MANIPULATION": + case 2: + message.penaltyReason = 2; + break; + case "PHYSICAL_CONTACT": + case 3: + message.penaltyReason = 3; + break; + case "ILLEGAL_ATTACK": + case 4: + message.penaltyReason = 4; + break; + case "ILLEGAL_DEFENSE": + case 5: + message.penaltyReason = 5; + break; + case "REQUEST_FOR_PICKUP": + case 6: + message.penaltyReason = 6; + break; + case "REQUEST_FOR_SERVICE": + case 7: + message.penaltyReason = 7; + break; + case "REQUEST_FOR_PICKUP_TO_SERVICE": + case 8: + message.penaltyReason = 8; + break; + case "SUBSTITUTE": + case 9: + message.penaltyReason = 9; + break; + case "MANUAL": + case 10: + message.penaltyReason = 10; + break; + } + if (object.unpenalised != null) { + if (typeof object.unpenalised !== "object") + throw TypeError(".message.input.GameState.Data.Robot.unpenalised: object expected"); + message.unpenalised = $root.google.protobuf.Timestamp.fromObject(object.unpenalised); + } + return message; + }; + + /** + * Creates a Robot message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.input.GameState.Data.Robot.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.input.GameState.Data.Robot} Robot + */ + Robot.from = Robot.fromObject; + + /** + * Creates a plain object from a Robot message. Also converts values to other types if specified. + * @param {message.input.GameState.Data.Robot} message Robot + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Robot.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.id = 0; + object.penaltyReason = options.enums === String ? "UNKNOWN_PENALTY_REASON" : 0; + object.unpenalised = null; + } + if (message.id != null && message.hasOwnProperty("id")) + object.id = message.id; + if (message.penaltyReason != null && message.hasOwnProperty("penaltyReason")) + object.penaltyReason = options.enums === String ? $root.message.input.GameState.Data.PenaltyReason[message.penaltyReason] : message.penaltyReason; + if (message.unpenalised != null && message.hasOwnProperty("unpenalised")) + object.unpenalised = $root.google.protobuf.Timestamp.toObject(message.unpenalised, options); + return object; + }; + + /** + * Creates a plain object from this Robot message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Robot.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this Robot to JSON. + * @returns {Object.} JSON object + */ + Robot.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return Robot; + })(); + + Data.Team = (function() { + + /** + * Properties of a Team. + * @typedef message.input.GameState.Data.Team$Properties + * @type {Object} + * @property {number} [teamId] Team teamId. + * @property {number} [score] Team score. + * @property {string} [coachMessage] Team coachMessage. + * @property {Array.} [players] Team players. + */ + + /** + * Constructs a new Team. + * @exports message.input.GameState.Data.Team + * @constructor + * @param {message.input.GameState.Data.Team$Properties=} [properties] Properties to set + */ + function Team(properties) { + this.players = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Team teamId. + * @type {number} + */ + Team.prototype.teamId = 0; + + /** + * Team score. + * @type {number} + */ + Team.prototype.score = 0; + + /** + * Team coachMessage. + * @type {string} + */ + Team.prototype.coachMessage = ""; + + /** + * Team players. + * @type {Array.} + */ + Team.prototype.players = $util.emptyArray; + + /** + * Creates a new Team instance using the specified properties. + * @param {message.input.GameState.Data.Team$Properties=} [properties] Properties to set + * @returns {message.input.GameState.Data.Team} Team instance + */ + Team.create = function create(properties) { + return new Team(properties); + }; + + /** + * Encodes the specified Team message. Does not implicitly {@link message.input.GameState.Data.Team.verify|verify} messages. + * @param {message.input.GameState.Data.Team$Properties} message Team message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Team.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.teamId != null && message.hasOwnProperty("teamId")) + writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.teamId); + if (message.score != null && message.hasOwnProperty("score")) + writer.uint32(/* id 2, wireType 0 =*/16).uint32(message.score); + if (message.coachMessage != null && message.hasOwnProperty("coachMessage")) + writer.uint32(/* id 3, wireType 2 =*/26).string(message.coachMessage); + if (message.players != null && message.players.length) + for (var i = 0; i < message.players.length; ++i) + $root.message.input.GameState.Data.Robot.encode(message.players[i], writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified Team message, length delimited. Does not implicitly {@link message.input.GameState.Data.Team.verify|verify} messages. + * @param {message.input.GameState.Data.Team$Properties} message Team message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Team.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a Team message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.input.GameState.Data.Team} Team + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Team.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.input.GameState.Data.Team(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.teamId = reader.uint32(); + break; + case 2: + message.score = reader.uint32(); + break; + case 3: + message.coachMessage = reader.string(); + break; + case 4: + if (!(message.players && message.players.length)) + message.players = []; + message.players.push($root.message.input.GameState.Data.Robot.decode(reader, reader.uint32())); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a Team message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.input.GameState.Data.Team} Team + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Team.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a Team message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + Team.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.teamId != null && message.hasOwnProperty("teamId")) + if (!$util.isInteger(message.teamId)) + return "teamId: integer expected"; + if (message.score != null && message.hasOwnProperty("score")) + if (!$util.isInteger(message.score)) + return "score: integer expected"; + if (message.coachMessage != null && message.hasOwnProperty("coachMessage")) + if (!$util.isString(message.coachMessage)) + return "coachMessage: string expected"; + if (message.players != null && message.hasOwnProperty("players")) { + if (!Array.isArray(message.players)) + return "players: array expected"; + for (var i = 0; i < message.players.length; ++i) { + var error = $root.message.input.GameState.Data.Robot.verify(message.players[i]); + if (error) + return "players." + error; + } + } + return null; + }; + + /** + * Creates a Team message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.input.GameState.Data.Team} Team + */ + Team.fromObject = function fromObject(object) { + if (object instanceof $root.message.input.GameState.Data.Team) + return object; + var message = new $root.message.input.GameState.Data.Team(); + if (object.teamId != null) + message.teamId = object.teamId >>> 0; + if (object.score != null) + message.score = object.score >>> 0; + if (object.coachMessage != null) + message.coachMessage = String(object.coachMessage); + if (object.players) { + if (!Array.isArray(object.players)) + throw TypeError(".message.input.GameState.Data.Team.players: array expected"); + message.players = []; + for (var i = 0; i < object.players.length; ++i) { + if (typeof object.players[i] !== "object") + throw TypeError(".message.input.GameState.Data.Team.players: object expected"); + message.players[i] = $root.message.input.GameState.Data.Robot.fromObject(object.players[i]); + } + } + return message; + }; + + /** + * Creates a Team message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.input.GameState.Data.Team.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.input.GameState.Data.Team} Team + */ + Team.from = Team.fromObject; + + /** + * Creates a plain object from a Team message. Also converts values to other types if specified. + * @param {message.input.GameState.Data.Team} message Team + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Team.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.players = []; + if (options.defaults) { + object.teamId = 0; + object.score = 0; + object.coachMessage = ""; + } + if (message.teamId != null && message.hasOwnProperty("teamId")) + object.teamId = message.teamId; + if (message.score != null && message.hasOwnProperty("score")) + object.score = message.score; + if (message.coachMessage != null && message.hasOwnProperty("coachMessage")) + object.coachMessage = message.coachMessage; + if (message.players && message.players.length) { + object.players = []; + for (var j = 0; j < message.players.length; ++j) + object.players[j] = $root.message.input.GameState.Data.Robot.toObject(message.players[j], options); + } + return object; + }; + + /** + * Creates a plain object from this Team message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Team.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this Team to JSON. + * @returns {Object.} JSON object + */ + Team.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return Team; + })(); + + return Data; + })(); + + return GameState; + })(); + + input.Image = (function() { + + /** + * Properties of an Image. + * @typedef message.input.Image$Properties + * @type {Object} + * @property {number} [format] Image format. + * @property {uvec2$Properties} [dimensions] Image dimensions. + * @property {Uint8Array} [data] Image data. + * @property {number} [cameraId] Image cameraId. + * @property {string} [serialNumber] Image serialNumber. + * @property {google.protobuf.Timestamp$Properties} [timestamp] Image timestamp. + */ + + /** + * Constructs a new Image. + * @exports message.input.Image + * @constructor + * @param {message.input.Image$Properties=} [properties] Properties to set + */ + function Image(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Image format. + * @type {number} + */ + Image.prototype.format = 0; + + /** + * Image dimensions. + * @type {(uvec2$Properties|null)} + */ + Image.prototype.dimensions = null; + + /** + * Image data. + * @type {Uint8Array} + */ + Image.prototype.data = $util.newBuffer([]); + + /** + * Image cameraId. + * @type {number} + */ + Image.prototype.cameraId = 0; + + /** + * Image serialNumber. + * @type {string} + */ + Image.prototype.serialNumber = ""; + + /** + * Image timestamp. + * @type {(google.protobuf.Timestamp$Properties|null)} + */ + Image.prototype.timestamp = null; + + /** + * Creates a new Image instance using the specified properties. + * @param {message.input.Image$Properties=} [properties] Properties to set + * @returns {message.input.Image} Image instance + */ + Image.create = function create(properties) { + return new Image(properties); + }; + + /** + * Encodes the specified Image message. Does not implicitly {@link message.input.Image.verify|verify} messages. + * @param {message.input.Image$Properties} message Image message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Image.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.format != null && message.hasOwnProperty("format")) + writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.format); + if (message.dimensions != null && message.hasOwnProperty("dimensions")) + $root.uvec2.encode(message.dimensions, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.data != null && message.hasOwnProperty("data")) + writer.uint32(/* id 3, wireType 2 =*/26).bytes(message.data); + if (message.cameraId != null && message.hasOwnProperty("cameraId")) + writer.uint32(/* id 4, wireType 0 =*/32).uint32(message.cameraId); + if (message.serialNumber != null && message.hasOwnProperty("serialNumber")) + writer.uint32(/* id 5, wireType 2 =*/42).string(message.serialNumber); + if (message.timestamp != null && message.hasOwnProperty("timestamp")) + $root.google.protobuf.Timestamp.encode(message.timestamp, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified Image message, length delimited. Does not implicitly {@link message.input.Image.verify|verify} messages. + * @param {message.input.Image$Properties} message Image message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Image.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes an Image message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.input.Image} Image + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Image.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.input.Image(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.format = reader.uint32(); + break; + case 2: + message.dimensions = $root.uvec2.decode(reader, reader.uint32()); + break; + case 3: + message.data = reader.bytes(); + break; + case 4: + message.cameraId = reader.uint32(); + break; + case 5: + message.serialNumber = reader.string(); + break; + case 6: + message.timestamp = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes an Image message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.input.Image} Image + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Image.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies an Image message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + Image.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.format != null && message.hasOwnProperty("format")) + if (!$util.isInteger(message.format)) + return "format: integer expected"; + if (message.dimensions != null && message.hasOwnProperty("dimensions")) { + var error = $root.uvec2.verify(message.dimensions); + if (error) + return "dimensions." + error; + } + if (message.data != null && message.hasOwnProperty("data")) + if (!(message.data && typeof message.data.length === "number" || $util.isString(message.data))) + return "data: buffer expected"; + if (message.cameraId != null && message.hasOwnProperty("cameraId")) + if (!$util.isInteger(message.cameraId)) + return "cameraId: integer expected"; + if (message.serialNumber != null && message.hasOwnProperty("serialNumber")) + if (!$util.isString(message.serialNumber)) + return "serialNumber: string expected"; + if (message.timestamp != null && message.hasOwnProperty("timestamp")) { + var error = $root.google.protobuf.Timestamp.verify(message.timestamp); + if (error) + return "timestamp." + error; + } + return null; + }; + + /** + * Creates an Image message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.input.Image} Image + */ + Image.fromObject = function fromObject(object) { + if (object instanceof $root.message.input.Image) + return object; + var message = new $root.message.input.Image(); + if (object.format != null) + message.format = object.format >>> 0; + if (object.dimensions != null) { + if (typeof object.dimensions !== "object") + throw TypeError(".message.input.Image.dimensions: object expected"); + message.dimensions = $root.uvec2.fromObject(object.dimensions); + } + if (object.data != null) + if (typeof object.data === "string") + $util.base64.decode(object.data, message.data = $util.newBuffer($util.base64.length(object.data)), 0); + else if (object.data.length) + message.data = object.data; + if (object.cameraId != null) + message.cameraId = object.cameraId >>> 0; + if (object.serialNumber != null) + message.serialNumber = String(object.serialNumber); + if (object.timestamp != null) { + if (typeof object.timestamp !== "object") + throw TypeError(".message.input.Image.timestamp: object expected"); + message.timestamp = $root.google.protobuf.Timestamp.fromObject(object.timestamp); + } + return message; + }; + + /** + * Creates an Image message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.input.Image.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.input.Image} Image + */ + Image.from = Image.fromObject; + + /** + * Creates a plain object from an Image message. Also converts values to other types if specified. + * @param {message.input.Image} message Image + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Image.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.format = 0; + object.dimensions = null; + object.data = options.bytes === String ? "" : []; + object.cameraId = 0; + object.serialNumber = ""; + object.timestamp = null; + } + if (message.format != null && message.hasOwnProperty("format")) + object.format = message.format; + if (message.dimensions != null && message.hasOwnProperty("dimensions")) + object.dimensions = $root.uvec2.toObject(message.dimensions, options); + if (message.data != null && message.hasOwnProperty("data")) + object.data = options.bytes === String ? $util.base64.encode(message.data, 0, message.data.length) : options.bytes === Array ? Array.prototype.slice.call(message.data) : message.data; + if (message.cameraId != null && message.hasOwnProperty("cameraId")) + object.cameraId = message.cameraId; + if (message.serialNumber != null && message.hasOwnProperty("serialNumber")) + object.serialNumber = message.serialNumber; + if (message.timestamp != null && message.hasOwnProperty("timestamp")) + object.timestamp = $root.google.protobuf.Timestamp.toObject(message.timestamp, options); + return object; + }; + + /** + * Creates a plain object from this Image message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Image.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this Image to JSON. + * @returns {Object.} JSON object + */ + Image.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return Image; + })(); + + input.ImageFragment = (function() { + + /** + * Properties of an ImageFragment. + * @typedef message.input.ImageFragment$Properties + * @type {Object} + * @property {message.input.Image$Properties} [image] ImageFragment image. + * @property {number} [start] ImageFragment start. + * @property {number} [end] ImageFragment end. + * @property {fmat44$Properties} [camToFeet] ImageFragment camToFeet. + */ + + /** + * Constructs a new ImageFragment. + * @exports message.input.ImageFragment + * @constructor + * @param {message.input.ImageFragment$Properties=} [properties] Properties to set + */ + function ImageFragment(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * ImageFragment image. + * @type {(message.input.Image$Properties|null)} + */ + ImageFragment.prototype.image = null; + + /** + * ImageFragment start. + * @type {number} + */ + ImageFragment.prototype.start = 0; + + /** + * ImageFragment end. + * @type {number} + */ + ImageFragment.prototype.end = 0; + + /** + * ImageFragment camToFeet. + * @type {(fmat44$Properties|null)} + */ + ImageFragment.prototype.camToFeet = null; + + /** + * Creates a new ImageFragment instance using the specified properties. + * @param {message.input.ImageFragment$Properties=} [properties] Properties to set + * @returns {message.input.ImageFragment} ImageFragment instance + */ + ImageFragment.create = function create(properties) { + return new ImageFragment(properties); + }; + + /** + * Encodes the specified ImageFragment message. Does not implicitly {@link message.input.ImageFragment.verify|verify} messages. + * @param {message.input.ImageFragment$Properties} message ImageFragment message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ImageFragment.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.image != null && message.hasOwnProperty("image")) + $root.message.input.Image.encode(message.image, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.start != null && message.hasOwnProperty("start")) + writer.uint32(/* id 5, wireType 0 =*/40).uint32(message.start); + if (message.end != null && message.hasOwnProperty("end")) + writer.uint32(/* id 6, wireType 0 =*/48).uint32(message.end); + if (message.camToFeet != null && message.hasOwnProperty("camToFeet")) + $root.fmat44.encode(message.camToFeet, writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified ImageFragment message, length delimited. Does not implicitly {@link message.input.ImageFragment.verify|verify} messages. + * @param {message.input.ImageFragment$Properties} message ImageFragment message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ImageFragment.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes an ImageFragment message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.input.ImageFragment} ImageFragment + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ImageFragment.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.input.ImageFragment(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.image = $root.message.input.Image.decode(reader, reader.uint32()); + break; + case 5: + message.start = reader.uint32(); + break; + case 6: + message.end = reader.uint32(); + break; + case 7: + message.camToFeet = $root.fmat44.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes an ImageFragment message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.input.ImageFragment} ImageFragment + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ImageFragment.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies an ImageFragment message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + ImageFragment.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.image != null && message.hasOwnProperty("image")) { + var error = $root.message.input.Image.verify(message.image); + if (error) + return "image." + error; + } + if (message.start != null && message.hasOwnProperty("start")) + if (!$util.isInteger(message.start)) + return "start: integer expected"; + if (message.end != null && message.hasOwnProperty("end")) + if (!$util.isInteger(message.end)) + return "end: integer expected"; + if (message.camToFeet != null && message.hasOwnProperty("camToFeet")) { + var error = $root.fmat44.verify(message.camToFeet); + if (error) + return "camToFeet." + error; + } + return null; + }; + + /** + * Creates an ImageFragment message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.input.ImageFragment} ImageFragment + */ + ImageFragment.fromObject = function fromObject(object) { + if (object instanceof $root.message.input.ImageFragment) + return object; + var message = new $root.message.input.ImageFragment(); + if (object.image != null) { + if (typeof object.image !== "object") + throw TypeError(".message.input.ImageFragment.image: object expected"); + message.image = $root.message.input.Image.fromObject(object.image); + } + if (object.start != null) + message.start = object.start >>> 0; + if (object.end != null) + message.end = object.end >>> 0; + if (object.camToFeet != null) { + if (typeof object.camToFeet !== "object") + throw TypeError(".message.input.ImageFragment.camToFeet: object expected"); + message.camToFeet = $root.fmat44.fromObject(object.camToFeet); + } + return message; + }; + + /** + * Creates an ImageFragment message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.input.ImageFragment.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.input.ImageFragment} ImageFragment + */ + ImageFragment.from = ImageFragment.fromObject; + + /** + * Creates a plain object from an ImageFragment message. Also converts values to other types if specified. + * @param {message.input.ImageFragment} message ImageFragment + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + ImageFragment.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.image = null; + object.start = 0; + object.end = 0; + object.camToFeet = null; + } + if (message.image != null && message.hasOwnProperty("image")) + object.image = $root.message.input.Image.toObject(message.image, options); + if (message.start != null && message.hasOwnProperty("start")) + object.start = message.start; + if (message.end != null && message.hasOwnProperty("end")) + object.end = message.end; + if (message.camToFeet != null && message.hasOwnProperty("camToFeet")) + object.camToFeet = $root.fmat44.toObject(message.camToFeet, options); + return object; + }; + + /** + * Creates a plain object from this ImageFragment message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + ImageFragment.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this ImageFragment to JSON. + * @returns {Object.} JSON object + */ + ImageFragment.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return ImageFragment; + })(); + + input.MotionCapture = (function() { + + /** + * Properties of a MotionCapture. + * @typedef message.input.MotionCapture$Properties + * @type {Object} + * @property {number} [frameNumber] MotionCapture frameNumber. + * @property {number} [latency] MotionCapture latency. + * @property {number} [timecode] MotionCapture timecode. + * @property {number} [timecodeSub] MotionCapture timecodeSub. + * @property {number} [timestamp] MotionCapture timestamp. + * @property {boolean} [recording] MotionCapture recording. + * @property {boolean} [trackedModelsChanged] MotionCapture trackedModelsChanged. + * @property {Array.} [markerSets] MotionCapture markerSets. + * @property {Array.} [markers] MotionCapture markers. + * @property {Array.} [rigidBodies] MotionCapture rigidBodies. + * @property {Array.} [skeletons] MotionCapture skeletons. + * @property {Array.} [labeledMarkers] MotionCapture labeledMarkers. + * @property {Array.} [forcePlates] MotionCapture forcePlates. + */ + + /** + * Constructs a new MotionCapture. + * @exports message.input.MotionCapture + * @constructor + * @param {message.input.MotionCapture$Properties=} [properties] Properties to set + */ + function MotionCapture(properties) { + this.markerSets = []; + this.markers = []; + this.rigidBodies = []; + this.skeletons = []; + this.labeledMarkers = []; + this.forcePlates = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * MotionCapture frameNumber. + * @type {number} + */ + MotionCapture.prototype.frameNumber = 0; + + /** + * MotionCapture latency. + * @type {number} + */ + MotionCapture.prototype.latency = 0; + + /** + * MotionCapture timecode. + * @type {number} + */ + MotionCapture.prototype.timecode = 0; + + /** + * MotionCapture timecodeSub. + * @type {number} + */ + MotionCapture.prototype.timecodeSub = 0; + + /** + * MotionCapture timestamp. + * @type {number} + */ + MotionCapture.prototype.timestamp = 0; + + /** + * MotionCapture recording. + * @type {boolean} + */ + MotionCapture.prototype.recording = false; + + /** + * MotionCapture trackedModelsChanged. + * @type {boolean} + */ + MotionCapture.prototype.trackedModelsChanged = false; + + /** + * MotionCapture markerSets. + * @type {Array.} + */ + MotionCapture.prototype.markerSets = $util.emptyArray; + + /** + * MotionCapture markers. + * @type {Array.} + */ + MotionCapture.prototype.markers = $util.emptyArray; + + /** + * MotionCapture rigidBodies. + * @type {Array.} + */ + MotionCapture.prototype.rigidBodies = $util.emptyArray; + + /** + * MotionCapture skeletons. + * @type {Array.} + */ + MotionCapture.prototype.skeletons = $util.emptyArray; + + /** + * MotionCapture labeledMarkers. + * @type {Array.} + */ + MotionCapture.prototype.labeledMarkers = $util.emptyArray; + + /** + * MotionCapture forcePlates. + * @type {Array.} + */ + MotionCapture.prototype.forcePlates = $util.emptyArray; + + /** + * Creates a new MotionCapture instance using the specified properties. + * @param {message.input.MotionCapture$Properties=} [properties] Properties to set + * @returns {message.input.MotionCapture} MotionCapture instance + */ + MotionCapture.create = function create(properties) { + return new MotionCapture(properties); + }; + + /** + * Encodes the specified MotionCapture message. Does not implicitly {@link message.input.MotionCapture.verify|verify} messages. + * @param {message.input.MotionCapture$Properties} message MotionCapture message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + MotionCapture.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.frameNumber != null && message.hasOwnProperty("frameNumber")) + writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.frameNumber); + if (message.latency != null && message.hasOwnProperty("latency")) + writer.uint32(/* id 2, wireType 5 =*/21).float(message.latency); + if (message.timecode != null && message.hasOwnProperty("timecode")) + writer.uint32(/* id 3, wireType 0 =*/24).uint32(message.timecode); + if (message.timecodeSub != null && message.hasOwnProperty("timecodeSub")) + writer.uint32(/* id 4, wireType 0 =*/32).uint32(message.timecodeSub); + if (message.timestamp != null && message.hasOwnProperty("timestamp")) + writer.uint32(/* id 5, wireType 1 =*/41).double(message.timestamp); + if (message.recording != null && message.hasOwnProperty("recording")) + writer.uint32(/* id 6, wireType 0 =*/48).bool(message.recording); + if (message.trackedModelsChanged != null && message.hasOwnProperty("trackedModelsChanged")) + writer.uint32(/* id 7, wireType 0 =*/56).bool(message.trackedModelsChanged); + if (message.markerSets != null && message.markerSets.length) + for (var i = 0; i < message.markerSets.length; ++i) + $root.message.input.MotionCapture.MarkerSet.encode(message.markerSets[i], writer.uint32(/* id 8, wireType 2 =*/66).fork()).ldelim(); + if (message.markers != null && message.markers.length) + for (var i = 0; i < message.markers.length; ++i) + $root.message.input.MotionCapture.Marker.encode(message.markers[i], writer.uint32(/* id 9, wireType 2 =*/74).fork()).ldelim(); + if (message.rigidBodies != null && message.rigidBodies.length) + for (var i = 0; i < message.rigidBodies.length; ++i) + $root.message.input.MotionCapture.RigidBody.encode(message.rigidBodies[i], writer.uint32(/* id 10, wireType 2 =*/82).fork()).ldelim(); + if (message.skeletons != null && message.skeletons.length) + for (var i = 0; i < message.skeletons.length; ++i) + $root.message.input.MotionCapture.Skeleton.encode(message.skeletons[i], writer.uint32(/* id 11, wireType 2 =*/90).fork()).ldelim(); + if (message.labeledMarkers != null && message.labeledMarkers.length) + for (var i = 0; i < message.labeledMarkers.length; ++i) + $root.message.input.MotionCapture.LabeledMarker.encode(message.labeledMarkers[i], writer.uint32(/* id 12, wireType 2 =*/98).fork()).ldelim(); + if (message.forcePlates != null && message.forcePlates.length) + for (var i = 0; i < message.forcePlates.length; ++i) + $root.message.input.MotionCapture.ForcePlate.encode(message.forcePlates[i], writer.uint32(/* id 13, wireType 2 =*/106).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified MotionCapture message, length delimited. Does not implicitly {@link message.input.MotionCapture.verify|verify} messages. + * @param {message.input.MotionCapture$Properties} message MotionCapture message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + MotionCapture.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a MotionCapture message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.input.MotionCapture} MotionCapture + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + MotionCapture.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.input.MotionCapture(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.frameNumber = reader.uint32(); + break; + case 2: + message.latency = reader.float(); + break; + case 3: + message.timecode = reader.uint32(); + break; + case 4: + message.timecodeSub = reader.uint32(); + break; + case 5: + message.timestamp = reader.double(); + break; + case 6: + message.recording = reader.bool(); + break; + case 7: + message.trackedModelsChanged = reader.bool(); + break; + case 8: + if (!(message.markerSets && message.markerSets.length)) + message.markerSets = []; + message.markerSets.push($root.message.input.MotionCapture.MarkerSet.decode(reader, reader.uint32())); + break; + case 9: + if (!(message.markers && message.markers.length)) + message.markers = []; + message.markers.push($root.message.input.MotionCapture.Marker.decode(reader, reader.uint32())); + break; + case 10: + if (!(message.rigidBodies && message.rigidBodies.length)) + message.rigidBodies = []; + message.rigidBodies.push($root.message.input.MotionCapture.RigidBody.decode(reader, reader.uint32())); + break; + case 11: + if (!(message.skeletons && message.skeletons.length)) + message.skeletons = []; + message.skeletons.push($root.message.input.MotionCapture.Skeleton.decode(reader, reader.uint32())); + break; + case 12: + if (!(message.labeledMarkers && message.labeledMarkers.length)) + message.labeledMarkers = []; + message.labeledMarkers.push($root.message.input.MotionCapture.LabeledMarker.decode(reader, reader.uint32())); + break; + case 13: + if (!(message.forcePlates && message.forcePlates.length)) + message.forcePlates = []; + message.forcePlates.push($root.message.input.MotionCapture.ForcePlate.decode(reader, reader.uint32())); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a MotionCapture message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.input.MotionCapture} MotionCapture + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + MotionCapture.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a MotionCapture message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + MotionCapture.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.frameNumber != null && message.hasOwnProperty("frameNumber")) + if (!$util.isInteger(message.frameNumber)) + return "frameNumber: integer expected"; + if (message.latency != null && message.hasOwnProperty("latency")) + if (typeof message.latency !== "number") + return "latency: number expected"; + if (message.timecode != null && message.hasOwnProperty("timecode")) + if (!$util.isInteger(message.timecode)) + return "timecode: integer expected"; + if (message.timecodeSub != null && message.hasOwnProperty("timecodeSub")) + if (!$util.isInteger(message.timecodeSub)) + return "timecodeSub: integer expected"; + if (message.timestamp != null && message.hasOwnProperty("timestamp")) + if (typeof message.timestamp !== "number") + return "timestamp: number expected"; + if (message.recording != null && message.hasOwnProperty("recording")) + if (typeof message.recording !== "boolean") + return "recording: boolean expected"; + if (message.trackedModelsChanged != null && message.hasOwnProperty("trackedModelsChanged")) + if (typeof message.trackedModelsChanged !== "boolean") + return "trackedModelsChanged: boolean expected"; + if (message.markerSets != null && message.hasOwnProperty("markerSets")) { + if (!Array.isArray(message.markerSets)) + return "markerSets: array expected"; + for (var i = 0; i < message.markerSets.length; ++i) { + var error = $root.message.input.MotionCapture.MarkerSet.verify(message.markerSets[i]); + if (error) + return "markerSets." + error; + } + } + if (message.markers != null && message.hasOwnProperty("markers")) { + if (!Array.isArray(message.markers)) + return "markers: array expected"; + for (var i = 0; i < message.markers.length; ++i) { + var error = $root.message.input.MotionCapture.Marker.verify(message.markers[i]); + if (error) + return "markers." + error; + } + } + if (message.rigidBodies != null && message.hasOwnProperty("rigidBodies")) { + if (!Array.isArray(message.rigidBodies)) + return "rigidBodies: array expected"; + for (var i = 0; i < message.rigidBodies.length; ++i) { + var error = $root.message.input.MotionCapture.RigidBody.verify(message.rigidBodies[i]); + if (error) + return "rigidBodies." + error; + } + } + if (message.skeletons != null && message.hasOwnProperty("skeletons")) { + if (!Array.isArray(message.skeletons)) + return "skeletons: array expected"; + for (var i = 0; i < message.skeletons.length; ++i) { + var error = $root.message.input.MotionCapture.Skeleton.verify(message.skeletons[i]); + if (error) + return "skeletons." + error; + } + } + if (message.labeledMarkers != null && message.hasOwnProperty("labeledMarkers")) { + if (!Array.isArray(message.labeledMarkers)) + return "labeledMarkers: array expected"; + for (var i = 0; i < message.labeledMarkers.length; ++i) { + var error = $root.message.input.MotionCapture.LabeledMarker.verify(message.labeledMarkers[i]); + if (error) + return "labeledMarkers." + error; + } + } + if (message.forcePlates != null && message.hasOwnProperty("forcePlates")) { + if (!Array.isArray(message.forcePlates)) + return "forcePlates: array expected"; + for (var i = 0; i < message.forcePlates.length; ++i) { + var error = $root.message.input.MotionCapture.ForcePlate.verify(message.forcePlates[i]); + if (error) + return "forcePlates." + error; + } + } + return null; + }; + + /** + * Creates a MotionCapture message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.input.MotionCapture} MotionCapture + */ + MotionCapture.fromObject = function fromObject(object) { + if (object instanceof $root.message.input.MotionCapture) + return object; + var message = new $root.message.input.MotionCapture(); + if (object.frameNumber != null) + message.frameNumber = object.frameNumber >>> 0; + if (object.latency != null) + message.latency = Number(object.latency); + if (object.timecode != null) + message.timecode = object.timecode >>> 0; + if (object.timecodeSub != null) + message.timecodeSub = object.timecodeSub >>> 0; + if (object.timestamp != null) + message.timestamp = Number(object.timestamp); + if (object.recording != null) + message.recording = Boolean(object.recording); + if (object.trackedModelsChanged != null) + message.trackedModelsChanged = Boolean(object.trackedModelsChanged); + if (object.markerSets) { + if (!Array.isArray(object.markerSets)) + throw TypeError(".message.input.MotionCapture.markerSets: array expected"); + message.markerSets = []; + for (var i = 0; i < object.markerSets.length; ++i) { + if (typeof object.markerSets[i] !== "object") + throw TypeError(".message.input.MotionCapture.markerSets: object expected"); + message.markerSets[i] = $root.message.input.MotionCapture.MarkerSet.fromObject(object.markerSets[i]); + } + } + if (object.markers) { + if (!Array.isArray(object.markers)) + throw TypeError(".message.input.MotionCapture.markers: array expected"); + message.markers = []; + for (var i = 0; i < object.markers.length; ++i) { + if (typeof object.markers[i] !== "object") + throw TypeError(".message.input.MotionCapture.markers: object expected"); + message.markers[i] = $root.message.input.MotionCapture.Marker.fromObject(object.markers[i]); + } + } + if (object.rigidBodies) { + if (!Array.isArray(object.rigidBodies)) + throw TypeError(".message.input.MotionCapture.rigidBodies: array expected"); + message.rigidBodies = []; + for (var i = 0; i < object.rigidBodies.length; ++i) { + if (typeof object.rigidBodies[i] !== "object") + throw TypeError(".message.input.MotionCapture.rigidBodies: object expected"); + message.rigidBodies[i] = $root.message.input.MotionCapture.RigidBody.fromObject(object.rigidBodies[i]); + } + } + if (object.skeletons) { + if (!Array.isArray(object.skeletons)) + throw TypeError(".message.input.MotionCapture.skeletons: array expected"); + message.skeletons = []; + for (var i = 0; i < object.skeletons.length; ++i) { + if (typeof object.skeletons[i] !== "object") + throw TypeError(".message.input.MotionCapture.skeletons: object expected"); + message.skeletons[i] = $root.message.input.MotionCapture.Skeleton.fromObject(object.skeletons[i]); + } + } + if (object.labeledMarkers) { + if (!Array.isArray(object.labeledMarkers)) + throw TypeError(".message.input.MotionCapture.labeledMarkers: array expected"); + message.labeledMarkers = []; + for (var i = 0; i < object.labeledMarkers.length; ++i) { + if (typeof object.labeledMarkers[i] !== "object") + throw TypeError(".message.input.MotionCapture.labeledMarkers: object expected"); + message.labeledMarkers[i] = $root.message.input.MotionCapture.LabeledMarker.fromObject(object.labeledMarkers[i]); + } + } + if (object.forcePlates) { + if (!Array.isArray(object.forcePlates)) + throw TypeError(".message.input.MotionCapture.forcePlates: array expected"); + message.forcePlates = []; + for (var i = 0; i < object.forcePlates.length; ++i) { + if (typeof object.forcePlates[i] !== "object") + throw TypeError(".message.input.MotionCapture.forcePlates: object expected"); + message.forcePlates[i] = $root.message.input.MotionCapture.ForcePlate.fromObject(object.forcePlates[i]); + } + } + return message; + }; + + /** + * Creates a MotionCapture message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.input.MotionCapture.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.input.MotionCapture} MotionCapture + */ + MotionCapture.from = MotionCapture.fromObject; + + /** + * Creates a plain object from a MotionCapture message. Also converts values to other types if specified. + * @param {message.input.MotionCapture} message MotionCapture + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + MotionCapture.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) { + object.markerSets = []; + object.markers = []; + object.rigidBodies = []; + object.skeletons = []; + object.labeledMarkers = []; + object.forcePlates = []; + } + if (options.defaults) { + object.frameNumber = 0; + object.latency = 0; + object.timecode = 0; + object.timecodeSub = 0; + object.timestamp = 0; + object.recording = false; + object.trackedModelsChanged = false; + } + if (message.frameNumber != null && message.hasOwnProperty("frameNumber")) + object.frameNumber = message.frameNumber; + if (message.latency != null && message.hasOwnProperty("latency")) + object.latency = message.latency; + if (message.timecode != null && message.hasOwnProperty("timecode")) + object.timecode = message.timecode; + if (message.timecodeSub != null && message.hasOwnProperty("timecodeSub")) + object.timecodeSub = message.timecodeSub; + if (message.timestamp != null && message.hasOwnProperty("timestamp")) + object.timestamp = message.timestamp; + if (message.recording != null && message.hasOwnProperty("recording")) + object.recording = message.recording; + if (message.trackedModelsChanged != null && message.hasOwnProperty("trackedModelsChanged")) + object.trackedModelsChanged = message.trackedModelsChanged; + if (message.markerSets && message.markerSets.length) { + object.markerSets = []; + for (var j = 0; j < message.markerSets.length; ++j) + object.markerSets[j] = $root.message.input.MotionCapture.MarkerSet.toObject(message.markerSets[j], options); + } + if (message.markers && message.markers.length) { + object.markers = []; + for (var j = 0; j < message.markers.length; ++j) + object.markers[j] = $root.message.input.MotionCapture.Marker.toObject(message.markers[j], options); + } + if (message.rigidBodies && message.rigidBodies.length) { + object.rigidBodies = []; + for (var j = 0; j < message.rigidBodies.length; ++j) + object.rigidBodies[j] = $root.message.input.MotionCapture.RigidBody.toObject(message.rigidBodies[j], options); + } + if (message.skeletons && message.skeletons.length) { + object.skeletons = []; + for (var j = 0; j < message.skeletons.length; ++j) + object.skeletons[j] = $root.message.input.MotionCapture.Skeleton.toObject(message.skeletons[j], options); + } + if (message.labeledMarkers && message.labeledMarkers.length) { + object.labeledMarkers = []; + for (var j = 0; j < message.labeledMarkers.length; ++j) + object.labeledMarkers[j] = $root.message.input.MotionCapture.LabeledMarker.toObject(message.labeledMarkers[j], options); + } + if (message.forcePlates && message.forcePlates.length) { + object.forcePlates = []; + for (var j = 0; j < message.forcePlates.length; ++j) + object.forcePlates[j] = $root.message.input.MotionCapture.ForcePlate.toObject(message.forcePlates[j], options); + } + return object; + }; + + /** + * Creates a plain object from this MotionCapture message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + MotionCapture.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this MotionCapture to JSON. + * @returns {Object.} JSON object + */ + MotionCapture.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + MotionCapture.Marker = (function() { + + /** + * Properties of a Marker. + * @typedef message.input.MotionCapture.Marker$Properties + * @type {Object} + * @property {number} [id] Marker id. + * @property {fvec3$Properties} [position] Marker position. + * @property {number} [size] Marker size. + */ + + /** + * Constructs a new Marker. + * @exports message.input.MotionCapture.Marker + * @constructor + * @param {message.input.MotionCapture.Marker$Properties=} [properties] Properties to set + */ + function Marker(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Marker id. + * @type {number} + */ + Marker.prototype.id = 0; + + /** + * Marker position. + * @type {(fvec3$Properties|null)} + */ + Marker.prototype.position = null; + + /** + * Marker size. + * @type {number} + */ + Marker.prototype.size = 0; + + /** + * Creates a new Marker instance using the specified properties. + * @param {message.input.MotionCapture.Marker$Properties=} [properties] Properties to set + * @returns {message.input.MotionCapture.Marker} Marker instance + */ + Marker.create = function create(properties) { + return new Marker(properties); + }; + + /** + * Encodes the specified Marker message. Does not implicitly {@link message.input.MotionCapture.Marker.verify|verify} messages. + * @param {message.input.MotionCapture.Marker$Properties} message Marker message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Marker.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.id != null && message.hasOwnProperty("id")) + writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.id); + if (message.position != null && message.hasOwnProperty("position")) + $root.fvec3.encode(message.position, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.size != null && message.hasOwnProperty("size")) + writer.uint32(/* id 3, wireType 5 =*/29).float(message.size); + return writer; + }; + + /** + * Encodes the specified Marker message, length delimited. Does not implicitly {@link message.input.MotionCapture.Marker.verify|verify} messages. + * @param {message.input.MotionCapture.Marker$Properties} message Marker message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Marker.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a Marker message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.input.MotionCapture.Marker} Marker + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Marker.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.input.MotionCapture.Marker(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.id = reader.uint32(); + break; + case 2: + message.position = $root.fvec3.decode(reader, reader.uint32()); + break; + case 3: + message.size = reader.float(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a Marker message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.input.MotionCapture.Marker} Marker + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Marker.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a Marker message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + Marker.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.id != null && message.hasOwnProperty("id")) + if (!$util.isInteger(message.id)) + return "id: integer expected"; + if (message.position != null && message.hasOwnProperty("position")) { + var error = $root.fvec3.verify(message.position); + if (error) + return "position." + error; + } + if (message.size != null && message.hasOwnProperty("size")) + if (typeof message.size !== "number") + return "size: number expected"; + return null; + }; + + /** + * Creates a Marker message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.input.MotionCapture.Marker} Marker + */ + Marker.fromObject = function fromObject(object) { + if (object instanceof $root.message.input.MotionCapture.Marker) + return object; + var message = new $root.message.input.MotionCapture.Marker(); + if (object.id != null) + message.id = object.id >>> 0; + if (object.position != null) { + if (typeof object.position !== "object") + throw TypeError(".message.input.MotionCapture.Marker.position: object expected"); + message.position = $root.fvec3.fromObject(object.position); + } + if (object.size != null) + message.size = Number(object.size); + return message; + }; + + /** + * Creates a Marker message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.input.MotionCapture.Marker.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.input.MotionCapture.Marker} Marker + */ + Marker.from = Marker.fromObject; + + /** + * Creates a plain object from a Marker message. Also converts values to other types if specified. + * @param {message.input.MotionCapture.Marker} message Marker + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Marker.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.id = 0; + object.position = null; + object.size = 0; + } + if (message.id != null && message.hasOwnProperty("id")) + object.id = message.id; + if (message.position != null && message.hasOwnProperty("position")) + object.position = $root.fvec3.toObject(message.position, options); + if (message.size != null && message.hasOwnProperty("size")) + object.size = message.size; + return object; + }; + + /** + * Creates a plain object from this Marker message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Marker.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this Marker to JSON. + * @returns {Object.} JSON object + */ + Marker.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return Marker; + })(); + + MotionCapture.MarkerSet = (function() { + + /** + * Properties of a MarkerSet. + * @typedef message.input.MotionCapture.MarkerSet$Properties + * @type {Object} + * @property {string} [name] MarkerSet name. + * @property {Array.} [markers] MarkerSet markers. + */ + + /** + * Constructs a new MarkerSet. + * @exports message.input.MotionCapture.MarkerSet + * @constructor + * @param {message.input.MotionCapture.MarkerSet$Properties=} [properties] Properties to set + */ + function MarkerSet(properties) { + this.markers = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * MarkerSet name. + * @type {string} + */ + MarkerSet.prototype.name = ""; + + /** + * MarkerSet markers. + * @type {Array.} + */ + MarkerSet.prototype.markers = $util.emptyArray; + + /** + * Creates a new MarkerSet instance using the specified properties. + * @param {message.input.MotionCapture.MarkerSet$Properties=} [properties] Properties to set + * @returns {message.input.MotionCapture.MarkerSet} MarkerSet instance + */ + MarkerSet.create = function create(properties) { + return new MarkerSet(properties); + }; + + /** + * Encodes the specified MarkerSet message. Does not implicitly {@link message.input.MotionCapture.MarkerSet.verify|verify} messages. + * @param {message.input.MotionCapture.MarkerSet$Properties} message MarkerSet message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + MarkerSet.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.name != null && message.hasOwnProperty("name")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.name); + if (message.markers != null && message.markers.length) + for (var i = 0; i < message.markers.length; ++i) + $root.message.input.MotionCapture.Marker.encode(message.markers[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified MarkerSet message, length delimited. Does not implicitly {@link message.input.MotionCapture.MarkerSet.verify|verify} messages. + * @param {message.input.MotionCapture.MarkerSet$Properties} message MarkerSet message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + MarkerSet.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a MarkerSet message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.input.MotionCapture.MarkerSet} MarkerSet + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + MarkerSet.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.input.MotionCapture.MarkerSet(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.name = reader.string(); + break; + case 2: + if (!(message.markers && message.markers.length)) + message.markers = []; + message.markers.push($root.message.input.MotionCapture.Marker.decode(reader, reader.uint32())); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a MarkerSet message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.input.MotionCapture.MarkerSet} MarkerSet + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + MarkerSet.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a MarkerSet message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + MarkerSet.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.name != null && message.hasOwnProperty("name")) + if (!$util.isString(message.name)) + return "name: string expected"; + if (message.markers != null && message.hasOwnProperty("markers")) { + if (!Array.isArray(message.markers)) + return "markers: array expected"; + for (var i = 0; i < message.markers.length; ++i) { + var error = $root.message.input.MotionCapture.Marker.verify(message.markers[i]); + if (error) + return "markers." + error; + } + } + return null; + }; + + /** + * Creates a MarkerSet message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.input.MotionCapture.MarkerSet} MarkerSet + */ + MarkerSet.fromObject = function fromObject(object) { + if (object instanceof $root.message.input.MotionCapture.MarkerSet) + return object; + var message = new $root.message.input.MotionCapture.MarkerSet(); + if (object.name != null) + message.name = String(object.name); + if (object.markers) { + if (!Array.isArray(object.markers)) + throw TypeError(".message.input.MotionCapture.MarkerSet.markers: array expected"); + message.markers = []; + for (var i = 0; i < object.markers.length; ++i) { + if (typeof object.markers[i] !== "object") + throw TypeError(".message.input.MotionCapture.MarkerSet.markers: object expected"); + message.markers[i] = $root.message.input.MotionCapture.Marker.fromObject(object.markers[i]); + } + } + return message; + }; + + /** + * Creates a MarkerSet message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.input.MotionCapture.MarkerSet.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.input.MotionCapture.MarkerSet} MarkerSet + */ + MarkerSet.from = MarkerSet.fromObject; + + /** + * Creates a plain object from a MarkerSet message. Also converts values to other types if specified. + * @param {message.input.MotionCapture.MarkerSet} message MarkerSet + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + MarkerSet.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.markers = []; + if (options.defaults) + object.name = ""; + if (message.name != null && message.hasOwnProperty("name")) + object.name = message.name; + if (message.markers && message.markers.length) { + object.markers = []; + for (var j = 0; j < message.markers.length; ++j) + object.markers[j] = $root.message.input.MotionCapture.Marker.toObject(message.markers[j], options); + } + return object; + }; + + /** + * Creates a plain object from this MarkerSet message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + MarkerSet.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this MarkerSet to JSON. + * @returns {Object.} JSON object + */ + MarkerSet.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return MarkerSet; + })(); + + MotionCapture.RigidBody = (function() { + + /** + * Properties of a RigidBody. + * @typedef message.input.MotionCapture.RigidBody$Properties + * @type {Object} + * @property {number} [id] RigidBody id. + * @property {fvec3$Properties} [position] RigidBody position. + * @property {fvec4$Properties} [rotation] RigidBody rotation. + * @property {Array.} [markers] RigidBody markers. + * @property {number} [error] RigidBody error. + * @property {boolean} [trackingValid] RigidBody trackingValid. + * @property {string} [name] RigidBody name. + * @property {fvec3$Properties} [offset] RigidBody offset. + * @property {number} [parent] RigidBody parent. + * @property {Array.} [children] RigidBody children. + */ + + /** + * Constructs a new RigidBody. + * @exports message.input.MotionCapture.RigidBody + * @constructor + * @param {message.input.MotionCapture.RigidBody$Properties=} [properties] Properties to set + */ + function RigidBody(properties) { + this.markers = []; + this.children = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * RigidBody id. + * @type {number} + */ + RigidBody.prototype.id = 0; + + /** + * RigidBody position. + * @type {(fvec3$Properties|null)} + */ + RigidBody.prototype.position = null; + + /** + * RigidBody rotation. + * @type {(fvec4$Properties|null)} + */ + RigidBody.prototype.rotation = null; + + /** + * RigidBody markers. + * @type {Array.} + */ + RigidBody.prototype.markers = $util.emptyArray; + + /** + * RigidBody error. + * @type {number} + */ + RigidBody.prototype.error = 0; + + /** + * RigidBody trackingValid. + * @type {boolean} + */ + RigidBody.prototype.trackingValid = false; + + /** + * RigidBody name. + * @type {string} + */ + RigidBody.prototype.name = ""; + + /** + * RigidBody offset. + * @type {(fvec3$Properties|null)} + */ + RigidBody.prototype.offset = null; + + /** + * RigidBody parent. + * @type {number} + */ + RigidBody.prototype.parent = 0; + + /** + * RigidBody children. + * @type {Array.} + */ + RigidBody.prototype.children = $util.emptyArray; + + /** + * Creates a new RigidBody instance using the specified properties. + * @param {message.input.MotionCapture.RigidBody$Properties=} [properties] Properties to set + * @returns {message.input.MotionCapture.RigidBody} RigidBody instance + */ + RigidBody.create = function create(properties) { + return new RigidBody(properties); + }; + + /** + * Encodes the specified RigidBody message. Does not implicitly {@link message.input.MotionCapture.RigidBody.verify|verify} messages. + * @param {message.input.MotionCapture.RigidBody$Properties} message RigidBody message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + RigidBody.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.id != null && message.hasOwnProperty("id")) + writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.id); + if (message.position != null && message.hasOwnProperty("position")) + $root.fvec3.encode(message.position, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.rotation != null && message.hasOwnProperty("rotation")) + $root.fvec4.encode(message.rotation, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + if (message.markers != null && message.markers.length) + for (var i = 0; i < message.markers.length; ++i) + $root.message.input.MotionCapture.Marker.encode(message.markers[i], writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); + if (message.error != null && message.hasOwnProperty("error")) + writer.uint32(/* id 5, wireType 5 =*/45).float(message.error); + if (message.trackingValid != null && message.hasOwnProperty("trackingValid")) + writer.uint32(/* id 6, wireType 0 =*/48).bool(message.trackingValid); + if (message.name != null && message.hasOwnProperty("name")) + writer.uint32(/* id 7, wireType 2 =*/58).string(message.name); + if (message.offset != null && message.hasOwnProperty("offset")) + $root.fvec3.encode(message.offset, writer.uint32(/* id 8, wireType 2 =*/66).fork()).ldelim(); + if (message.parent != null && message.hasOwnProperty("parent")) + writer.uint32(/* id 9, wireType 0 =*/72).uint32(message.parent); + if (message.children != null && message.children.length) { + writer.uint32(/* id 10, wireType 2 =*/82).fork(); + for (var i = 0; i < message.children.length; ++i) + writer.uint32(message.children[i]); + writer.ldelim(); + } + return writer; + }; + + /** + * Encodes the specified RigidBody message, length delimited. Does not implicitly {@link message.input.MotionCapture.RigidBody.verify|verify} messages. + * @param {message.input.MotionCapture.RigidBody$Properties} message RigidBody message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + RigidBody.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a RigidBody message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.input.MotionCapture.RigidBody} RigidBody + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + RigidBody.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.input.MotionCapture.RigidBody(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.id = reader.uint32(); + break; + case 2: + message.position = $root.fvec3.decode(reader, reader.uint32()); + break; + case 3: + message.rotation = $root.fvec4.decode(reader, reader.uint32()); + break; + case 4: + if (!(message.markers && message.markers.length)) + message.markers = []; + message.markers.push($root.message.input.MotionCapture.Marker.decode(reader, reader.uint32())); + break; + case 5: + message.error = reader.float(); + break; + case 6: + message.trackingValid = reader.bool(); + break; + case 7: + message.name = reader.string(); + break; + case 8: + message.offset = $root.fvec3.decode(reader, reader.uint32()); + break; + case 9: + message.parent = reader.uint32(); + break; + case 10: + if (!(message.children && message.children.length)) + message.children = []; + if ((tag & 7) === 2) { + var end2 = reader.uint32() + reader.pos; + while (reader.pos < end2) + message.children.push(reader.uint32()); + } else + message.children.push(reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a RigidBody message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.input.MotionCapture.RigidBody} RigidBody + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + RigidBody.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a RigidBody message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + RigidBody.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.id != null && message.hasOwnProperty("id")) + if (!$util.isInteger(message.id)) + return "id: integer expected"; + if (message.position != null && message.hasOwnProperty("position")) { + var error = $root.fvec3.verify(message.position); + if (error) + return "position." + error; + } + if (message.rotation != null && message.hasOwnProperty("rotation")) { + var error = $root.fvec4.verify(message.rotation); + if (error) + return "rotation." + error; + } + if (message.markers != null && message.hasOwnProperty("markers")) { + if (!Array.isArray(message.markers)) + return "markers: array expected"; + for (var i = 0; i < message.markers.length; ++i) { + var error = $root.message.input.MotionCapture.Marker.verify(message.markers[i]); + if (error) + return "markers." + error; + } + } + if (message.error != null && message.hasOwnProperty("error")) + if (typeof message.error !== "number") + return "error: number expected"; + if (message.trackingValid != null && message.hasOwnProperty("trackingValid")) + if (typeof message.trackingValid !== "boolean") + return "trackingValid: boolean expected"; + if (message.name != null && message.hasOwnProperty("name")) + if (!$util.isString(message.name)) + return "name: string expected"; + if (message.offset != null && message.hasOwnProperty("offset")) { + var error = $root.fvec3.verify(message.offset); + if (error) + return "offset." + error; + } + if (message.parent != null && message.hasOwnProperty("parent")) + if (!$util.isInteger(message.parent)) + return "parent: integer expected"; + if (message.children != null && message.hasOwnProperty("children")) { + if (!Array.isArray(message.children)) + return "children: array expected"; + for (var i = 0; i < message.children.length; ++i) + if (!$util.isInteger(message.children[i])) + return "children: integer[] expected"; + } + return null; + }; + + /** + * Creates a RigidBody message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.input.MotionCapture.RigidBody} RigidBody + */ + RigidBody.fromObject = function fromObject(object) { + if (object instanceof $root.message.input.MotionCapture.RigidBody) + return object; + var message = new $root.message.input.MotionCapture.RigidBody(); + if (object.id != null) + message.id = object.id >>> 0; + if (object.position != null) { + if (typeof object.position !== "object") + throw TypeError(".message.input.MotionCapture.RigidBody.position: object expected"); + message.position = $root.fvec3.fromObject(object.position); + } + if (object.rotation != null) { + if (typeof object.rotation !== "object") + throw TypeError(".message.input.MotionCapture.RigidBody.rotation: object expected"); + message.rotation = $root.fvec4.fromObject(object.rotation); + } + if (object.markers) { + if (!Array.isArray(object.markers)) + throw TypeError(".message.input.MotionCapture.RigidBody.markers: array expected"); + message.markers = []; + for (var i = 0; i < object.markers.length; ++i) { + if (typeof object.markers[i] !== "object") + throw TypeError(".message.input.MotionCapture.RigidBody.markers: object expected"); + message.markers[i] = $root.message.input.MotionCapture.Marker.fromObject(object.markers[i]); + } + } + if (object.error != null) + message.error = Number(object.error); + if (object.trackingValid != null) + message.trackingValid = Boolean(object.trackingValid); + if (object.name != null) + message.name = String(object.name); + if (object.offset != null) { + if (typeof object.offset !== "object") + throw TypeError(".message.input.MotionCapture.RigidBody.offset: object expected"); + message.offset = $root.fvec3.fromObject(object.offset); + } + if (object.parent != null) + message.parent = object.parent >>> 0; + if (object.children) { + if (!Array.isArray(object.children)) + throw TypeError(".message.input.MotionCapture.RigidBody.children: array expected"); + message.children = []; + for (var i = 0; i < object.children.length; ++i) + message.children[i] = object.children[i] >>> 0; + } + return message; + }; + + /** + * Creates a RigidBody message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.input.MotionCapture.RigidBody.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.input.MotionCapture.RigidBody} RigidBody + */ + RigidBody.from = RigidBody.fromObject; + + /** + * Creates a plain object from a RigidBody message. Also converts values to other types if specified. + * @param {message.input.MotionCapture.RigidBody} message RigidBody + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + RigidBody.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) { + object.markers = []; + object.children = []; + } + if (options.defaults) { + object.id = 0; + object.position = null; + object.rotation = null; + object.error = 0; + object.trackingValid = false; + object.name = ""; + object.offset = null; + object.parent = 0; + } + if (message.id != null && message.hasOwnProperty("id")) + object.id = message.id; + if (message.position != null && message.hasOwnProperty("position")) + object.position = $root.fvec3.toObject(message.position, options); + if (message.rotation != null && message.hasOwnProperty("rotation")) + object.rotation = $root.fvec4.toObject(message.rotation, options); + if (message.markers && message.markers.length) { + object.markers = []; + for (var j = 0; j < message.markers.length; ++j) + object.markers[j] = $root.message.input.MotionCapture.Marker.toObject(message.markers[j], options); + } + if (message.error != null && message.hasOwnProperty("error")) + object.error = message.error; + if (message.trackingValid != null && message.hasOwnProperty("trackingValid")) + object.trackingValid = message.trackingValid; + if (message.name != null && message.hasOwnProperty("name")) + object.name = message.name; + if (message.offset != null && message.hasOwnProperty("offset")) + object.offset = $root.fvec3.toObject(message.offset, options); + if (message.parent != null && message.hasOwnProperty("parent")) + object.parent = message.parent; + if (message.children && message.children.length) { + object.children = []; + for (var j = 0; j < message.children.length; ++j) + object.children[j] = message.children[j]; + } + return object; + }; + + /** + * Creates a plain object from this RigidBody message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + RigidBody.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this RigidBody to JSON. + * @returns {Object.} JSON object + */ + RigidBody.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return RigidBody; + })(); + + MotionCapture.Skeleton = (function() { + + /** + * Properties of a Skeleton. + * @typedef message.input.MotionCapture.Skeleton$Properties + * @type {Object} + * @property {number} [id] Skeleton id. + * @property {Array.} [bones] Skeleton bones. + * @property {string} [name] Skeleton name. + */ + + /** + * Constructs a new Skeleton. + * @exports message.input.MotionCapture.Skeleton + * @constructor + * @param {message.input.MotionCapture.Skeleton$Properties=} [properties] Properties to set + */ + function Skeleton(properties) { + this.bones = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Skeleton id. + * @type {number} + */ + Skeleton.prototype.id = 0; + + /** + * Skeleton bones. + * @type {Array.} + */ + Skeleton.prototype.bones = $util.emptyArray; + + /** + * Skeleton name. + * @type {string} + */ + Skeleton.prototype.name = ""; + + /** + * Creates a new Skeleton instance using the specified properties. + * @param {message.input.MotionCapture.Skeleton$Properties=} [properties] Properties to set + * @returns {message.input.MotionCapture.Skeleton} Skeleton instance + */ + Skeleton.create = function create(properties) { + return new Skeleton(properties); + }; + + /** + * Encodes the specified Skeleton message. Does not implicitly {@link message.input.MotionCapture.Skeleton.verify|verify} messages. + * @param {message.input.MotionCapture.Skeleton$Properties} message Skeleton message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Skeleton.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.id != null && message.hasOwnProperty("id")) + writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.id); + if (message.bones != null && message.bones.length) + for (var i = 0; i < message.bones.length; ++i) + $root.message.input.MotionCapture.RigidBody.encode(message.bones[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.name != null && message.hasOwnProperty("name")) + writer.uint32(/* id 3, wireType 2 =*/26).string(message.name); + return writer; + }; + + /** + * Encodes the specified Skeleton message, length delimited. Does not implicitly {@link message.input.MotionCapture.Skeleton.verify|verify} messages. + * @param {message.input.MotionCapture.Skeleton$Properties} message Skeleton message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Skeleton.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a Skeleton message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.input.MotionCapture.Skeleton} Skeleton + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Skeleton.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.input.MotionCapture.Skeleton(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.id = reader.uint32(); + break; + case 2: + if (!(message.bones && message.bones.length)) + message.bones = []; + message.bones.push($root.message.input.MotionCapture.RigidBody.decode(reader, reader.uint32())); + break; + case 3: + message.name = reader.string(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a Skeleton message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.input.MotionCapture.Skeleton} Skeleton + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Skeleton.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a Skeleton message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + Skeleton.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.id != null && message.hasOwnProperty("id")) + if (!$util.isInteger(message.id)) + return "id: integer expected"; + if (message.bones != null && message.hasOwnProperty("bones")) { + if (!Array.isArray(message.bones)) + return "bones: array expected"; + for (var i = 0; i < message.bones.length; ++i) { + var error = $root.message.input.MotionCapture.RigidBody.verify(message.bones[i]); + if (error) + return "bones." + error; + } + } + if (message.name != null && message.hasOwnProperty("name")) + if (!$util.isString(message.name)) + return "name: string expected"; + return null; + }; + + /** + * Creates a Skeleton message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.input.MotionCapture.Skeleton} Skeleton + */ + Skeleton.fromObject = function fromObject(object) { + if (object instanceof $root.message.input.MotionCapture.Skeleton) + return object; + var message = new $root.message.input.MotionCapture.Skeleton(); + if (object.id != null) + message.id = object.id >>> 0; + if (object.bones) { + if (!Array.isArray(object.bones)) + throw TypeError(".message.input.MotionCapture.Skeleton.bones: array expected"); + message.bones = []; + for (var i = 0; i < object.bones.length; ++i) { + if (typeof object.bones[i] !== "object") + throw TypeError(".message.input.MotionCapture.Skeleton.bones: object expected"); + message.bones[i] = $root.message.input.MotionCapture.RigidBody.fromObject(object.bones[i]); + } + } + if (object.name != null) + message.name = String(object.name); + return message; + }; + + /** + * Creates a Skeleton message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.input.MotionCapture.Skeleton.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.input.MotionCapture.Skeleton} Skeleton + */ + Skeleton.from = Skeleton.fromObject; + + /** + * Creates a plain object from a Skeleton message. Also converts values to other types if specified. + * @param {message.input.MotionCapture.Skeleton} message Skeleton + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Skeleton.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.bones = []; + if (options.defaults) { + object.id = 0; + object.name = ""; + } + if (message.id != null && message.hasOwnProperty("id")) + object.id = message.id; + if (message.bones && message.bones.length) { + object.bones = []; + for (var j = 0; j < message.bones.length; ++j) + object.bones[j] = $root.message.input.MotionCapture.RigidBody.toObject(message.bones[j], options); + } + if (message.name != null && message.hasOwnProperty("name")) + object.name = message.name; + return object; + }; + + /** + * Creates a plain object from this Skeleton message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Skeleton.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this Skeleton to JSON. + * @returns {Object.} JSON object + */ + Skeleton.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return Skeleton; + })(); + + MotionCapture.LabeledMarker = (function() { + + /** + * Properties of a LabeledMarker. + * @typedef message.input.MotionCapture.LabeledMarker$Properties + * @type {Object} + * @property {message.input.MotionCapture.Marker$Properties} [marker] LabeledMarker marker. + * @property {boolean} [occluded] LabeledMarker occluded. + * @property {boolean} [pointCloudSolved] LabeledMarker pointCloudSolved. + * @property {boolean} [modelSolved] LabeledMarker modelSolved. + */ + + /** + * Constructs a new LabeledMarker. + * @exports message.input.MotionCapture.LabeledMarker + * @constructor + * @param {message.input.MotionCapture.LabeledMarker$Properties=} [properties] Properties to set + */ + function LabeledMarker(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * LabeledMarker marker. + * @type {(message.input.MotionCapture.Marker$Properties|null)} + */ + LabeledMarker.prototype.marker = null; + + /** + * LabeledMarker occluded. + * @type {boolean} + */ + LabeledMarker.prototype.occluded = false; + + /** + * LabeledMarker pointCloudSolved. + * @type {boolean} + */ + LabeledMarker.prototype.pointCloudSolved = false; + + /** + * LabeledMarker modelSolved. + * @type {boolean} + */ + LabeledMarker.prototype.modelSolved = false; + + /** + * Creates a new LabeledMarker instance using the specified properties. + * @param {message.input.MotionCapture.LabeledMarker$Properties=} [properties] Properties to set + * @returns {message.input.MotionCapture.LabeledMarker} LabeledMarker instance + */ + LabeledMarker.create = function create(properties) { + return new LabeledMarker(properties); + }; + + /** + * Encodes the specified LabeledMarker message. Does not implicitly {@link message.input.MotionCapture.LabeledMarker.verify|verify} messages. + * @param {message.input.MotionCapture.LabeledMarker$Properties} message LabeledMarker message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + LabeledMarker.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.marker != null && message.hasOwnProperty("marker")) + $root.message.input.MotionCapture.Marker.encode(message.marker, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.occluded != null && message.hasOwnProperty("occluded")) + writer.uint32(/* id 2, wireType 0 =*/16).bool(message.occluded); + if (message.pointCloudSolved != null && message.hasOwnProperty("pointCloudSolved")) + writer.uint32(/* id 3, wireType 0 =*/24).bool(message.pointCloudSolved); + if (message.modelSolved != null && message.hasOwnProperty("modelSolved")) + writer.uint32(/* id 4, wireType 0 =*/32).bool(message.modelSolved); + return writer; + }; + + /** + * Encodes the specified LabeledMarker message, length delimited. Does not implicitly {@link message.input.MotionCapture.LabeledMarker.verify|verify} messages. + * @param {message.input.MotionCapture.LabeledMarker$Properties} message LabeledMarker message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + LabeledMarker.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a LabeledMarker message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.input.MotionCapture.LabeledMarker} LabeledMarker + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + LabeledMarker.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.input.MotionCapture.LabeledMarker(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.marker = $root.message.input.MotionCapture.Marker.decode(reader, reader.uint32()); + break; + case 2: + message.occluded = reader.bool(); + break; + case 3: + message.pointCloudSolved = reader.bool(); + break; + case 4: + message.modelSolved = reader.bool(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a LabeledMarker message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.input.MotionCapture.LabeledMarker} LabeledMarker + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + LabeledMarker.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a LabeledMarker message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + LabeledMarker.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.marker != null && message.hasOwnProperty("marker")) { + var error = $root.message.input.MotionCapture.Marker.verify(message.marker); + if (error) + return "marker." + error; + } + if (message.occluded != null && message.hasOwnProperty("occluded")) + if (typeof message.occluded !== "boolean") + return "occluded: boolean expected"; + if (message.pointCloudSolved != null && message.hasOwnProperty("pointCloudSolved")) + if (typeof message.pointCloudSolved !== "boolean") + return "pointCloudSolved: boolean expected"; + if (message.modelSolved != null && message.hasOwnProperty("modelSolved")) + if (typeof message.modelSolved !== "boolean") + return "modelSolved: boolean expected"; + return null; + }; + + /** + * Creates a LabeledMarker message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.input.MotionCapture.LabeledMarker} LabeledMarker + */ + LabeledMarker.fromObject = function fromObject(object) { + if (object instanceof $root.message.input.MotionCapture.LabeledMarker) + return object; + var message = new $root.message.input.MotionCapture.LabeledMarker(); + if (object.marker != null) { + if (typeof object.marker !== "object") + throw TypeError(".message.input.MotionCapture.LabeledMarker.marker: object expected"); + message.marker = $root.message.input.MotionCapture.Marker.fromObject(object.marker); + } + if (object.occluded != null) + message.occluded = Boolean(object.occluded); + if (object.pointCloudSolved != null) + message.pointCloudSolved = Boolean(object.pointCloudSolved); + if (object.modelSolved != null) + message.modelSolved = Boolean(object.modelSolved); + return message; + }; + + /** + * Creates a LabeledMarker message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.input.MotionCapture.LabeledMarker.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.input.MotionCapture.LabeledMarker} LabeledMarker + */ + LabeledMarker.from = LabeledMarker.fromObject; + + /** + * Creates a plain object from a LabeledMarker message. Also converts values to other types if specified. + * @param {message.input.MotionCapture.LabeledMarker} message LabeledMarker + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + LabeledMarker.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.marker = null; + object.occluded = false; + object.pointCloudSolved = false; + object.modelSolved = false; + } + if (message.marker != null && message.hasOwnProperty("marker")) + object.marker = $root.message.input.MotionCapture.Marker.toObject(message.marker, options); + if (message.occluded != null && message.hasOwnProperty("occluded")) + object.occluded = message.occluded; + if (message.pointCloudSolved != null && message.hasOwnProperty("pointCloudSolved")) + object.pointCloudSolved = message.pointCloudSolved; + if (message.modelSolved != null && message.hasOwnProperty("modelSolved")) + object.modelSolved = message.modelSolved; + return object; + }; + + /** + * Creates a plain object from this LabeledMarker message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + LabeledMarker.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this LabeledMarker to JSON. + * @returns {Object.} JSON object + */ + LabeledMarker.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return LabeledMarker; + })(); + + MotionCapture.Channel = (function() { + + /** + * Properties of a Channel. + * @typedef message.input.MotionCapture.Channel$Properties + * @type {Object} + * @property {Array.} [channel] Channel channel. + */ + + /** + * Constructs a new Channel. + * @exports message.input.MotionCapture.Channel + * @constructor + * @param {message.input.MotionCapture.Channel$Properties=} [properties] Properties to set + */ + function Channel(properties) { + this.channel = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Channel channel. + * @type {Array.} + */ + Channel.prototype.channel = $util.emptyArray; + + /** + * Creates a new Channel instance using the specified properties. + * @param {message.input.MotionCapture.Channel$Properties=} [properties] Properties to set + * @returns {message.input.MotionCapture.Channel} Channel instance + */ + Channel.create = function create(properties) { + return new Channel(properties); + }; + + /** + * Encodes the specified Channel message. Does not implicitly {@link message.input.MotionCapture.Channel.verify|verify} messages. + * @param {message.input.MotionCapture.Channel$Properties} message Channel message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Channel.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.channel != null && message.channel.length) { + writer.uint32(/* id 1, wireType 2 =*/10).fork(); + for (var i = 0; i < message.channel.length; ++i) + writer.float(message.channel[i]); + writer.ldelim(); + } + return writer; + }; + + /** + * Encodes the specified Channel message, length delimited. Does not implicitly {@link message.input.MotionCapture.Channel.verify|verify} messages. + * @param {message.input.MotionCapture.Channel$Properties} message Channel message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Channel.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a Channel message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.input.MotionCapture.Channel} Channel + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Channel.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.input.MotionCapture.Channel(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (!(message.channel && message.channel.length)) + message.channel = []; + if ((tag & 7) === 2) { + var end2 = reader.uint32() + reader.pos; + while (reader.pos < end2) + message.channel.push(reader.float()); + } else + message.channel.push(reader.float()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a Channel message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.input.MotionCapture.Channel} Channel + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Channel.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a Channel message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + Channel.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.channel != null && message.hasOwnProperty("channel")) { + if (!Array.isArray(message.channel)) + return "channel: array expected"; + for (var i = 0; i < message.channel.length; ++i) + if (typeof message.channel[i] !== "number") + return "channel: number[] expected"; + } + return null; + }; + + /** + * Creates a Channel message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.input.MotionCapture.Channel} Channel + */ + Channel.fromObject = function fromObject(object) { + if (object instanceof $root.message.input.MotionCapture.Channel) + return object; + var message = new $root.message.input.MotionCapture.Channel(); + if (object.channel) { + if (!Array.isArray(object.channel)) + throw TypeError(".message.input.MotionCapture.Channel.channel: array expected"); + message.channel = []; + for (var i = 0; i < object.channel.length; ++i) + message.channel[i] = Number(object.channel[i]); + } + return message; + }; + + /** + * Creates a Channel message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.input.MotionCapture.Channel.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.input.MotionCapture.Channel} Channel + */ + Channel.from = Channel.fromObject; + + /** + * Creates a plain object from a Channel message. Also converts values to other types if specified. + * @param {message.input.MotionCapture.Channel} message Channel + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Channel.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.channel = []; + if (message.channel && message.channel.length) { + object.channel = []; + for (var j = 0; j < message.channel.length; ++j) + object.channel[j] = message.channel[j]; + } + return object; + }; + + /** + * Creates a plain object from this Channel message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Channel.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this Channel to JSON. + * @returns {Object.} JSON object + */ + Channel.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return Channel; + })(); + + MotionCapture.ForcePlate = (function() { + + /** + * Properties of a ForcePlate. + * @typedef message.input.MotionCapture.ForcePlate$Properties + * @type {Object} + * @property {number} [id] ForcePlate id. + * @property {Array.} [channels] ForcePlate channels. + */ + + /** + * Constructs a new ForcePlate. + * @exports message.input.MotionCapture.ForcePlate + * @constructor + * @param {message.input.MotionCapture.ForcePlate$Properties=} [properties] Properties to set + */ + function ForcePlate(properties) { + this.channels = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * ForcePlate id. + * @type {number} + */ + ForcePlate.prototype.id = 0; + + /** + * ForcePlate channels. + * @type {Array.} + */ + ForcePlate.prototype.channels = $util.emptyArray; + + /** + * Creates a new ForcePlate instance using the specified properties. + * @param {message.input.MotionCapture.ForcePlate$Properties=} [properties] Properties to set + * @returns {message.input.MotionCapture.ForcePlate} ForcePlate instance + */ + ForcePlate.create = function create(properties) { + return new ForcePlate(properties); + }; + + /** + * Encodes the specified ForcePlate message. Does not implicitly {@link message.input.MotionCapture.ForcePlate.verify|verify} messages. + * @param {message.input.MotionCapture.ForcePlate$Properties} message ForcePlate message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ForcePlate.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.id != null && message.hasOwnProperty("id")) + writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.id); + if (message.channels != null && message.channels.length) + for (var i = 0; i < message.channels.length; ++i) + $root.message.input.MotionCapture.Channel.encode(message.channels[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified ForcePlate message, length delimited. Does not implicitly {@link message.input.MotionCapture.ForcePlate.verify|verify} messages. + * @param {message.input.MotionCapture.ForcePlate$Properties} message ForcePlate message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ForcePlate.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a ForcePlate message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.input.MotionCapture.ForcePlate} ForcePlate + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ForcePlate.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.input.MotionCapture.ForcePlate(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.id = reader.uint32(); + break; + case 2: + if (!(message.channels && message.channels.length)) + message.channels = []; + message.channels.push($root.message.input.MotionCapture.Channel.decode(reader, reader.uint32())); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a ForcePlate message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.input.MotionCapture.ForcePlate} ForcePlate + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ForcePlate.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a ForcePlate message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + ForcePlate.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.id != null && message.hasOwnProperty("id")) + if (!$util.isInteger(message.id)) + return "id: integer expected"; + if (message.channels != null && message.hasOwnProperty("channels")) { + if (!Array.isArray(message.channels)) + return "channels: array expected"; + for (var i = 0; i < message.channels.length; ++i) { + var error = $root.message.input.MotionCapture.Channel.verify(message.channels[i]); + if (error) + return "channels." + error; + } + } + return null; + }; + + /** + * Creates a ForcePlate message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.input.MotionCapture.ForcePlate} ForcePlate + */ + ForcePlate.fromObject = function fromObject(object) { + if (object instanceof $root.message.input.MotionCapture.ForcePlate) + return object; + var message = new $root.message.input.MotionCapture.ForcePlate(); + if (object.id != null) + message.id = object.id >>> 0; + if (object.channels) { + if (!Array.isArray(object.channels)) + throw TypeError(".message.input.MotionCapture.ForcePlate.channels: array expected"); + message.channels = []; + for (var i = 0; i < object.channels.length; ++i) { + if (typeof object.channels[i] !== "object") + throw TypeError(".message.input.MotionCapture.ForcePlate.channels: object expected"); + message.channels[i] = $root.message.input.MotionCapture.Channel.fromObject(object.channels[i]); + } + } + return message; + }; + + /** + * Creates a ForcePlate message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.input.MotionCapture.ForcePlate.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.input.MotionCapture.ForcePlate} ForcePlate + */ + ForcePlate.from = ForcePlate.fromObject; + + /** + * Creates a plain object from a ForcePlate message. Also converts values to other types if specified. + * @param {message.input.MotionCapture.ForcePlate} message ForcePlate + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + ForcePlate.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.channels = []; + if (options.defaults) + object.id = 0; + if (message.id != null && message.hasOwnProperty("id")) + object.id = message.id; + if (message.channels && message.channels.length) { + object.channels = []; + for (var j = 0; j < message.channels.length; ++j) + object.channels[j] = $root.message.input.MotionCapture.Channel.toObject(message.channels[j], options); + } + return object; + }; + + /** + * Creates a plain object from this ForcePlate message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + ForcePlate.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this ForcePlate to JSON. + * @returns {Object.} JSON object + */ + ForcePlate.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return ForcePlate; + })(); + + return MotionCapture; + })(); + + input.WalkingDetected = (function() { + + /** + * Properties of a WalkingDetected. + * @typedef message.input.WalkingDetected$Properties + * @type {Object} + */ + + /** + * Constructs a new WalkingDetected. + * @exports message.input.WalkingDetected + * @constructor + * @param {message.input.WalkingDetected$Properties=} [properties] Properties to set + */ + function WalkingDetected(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Creates a new WalkingDetected instance using the specified properties. + * @param {message.input.WalkingDetected$Properties=} [properties] Properties to set + * @returns {message.input.WalkingDetected} WalkingDetected instance + */ + WalkingDetected.create = function create(properties) { + return new WalkingDetected(properties); + }; + + /** + * Encodes the specified WalkingDetected message. Does not implicitly {@link message.input.WalkingDetected.verify|verify} messages. + * @param {message.input.WalkingDetected$Properties} message WalkingDetected message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + WalkingDetected.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + return writer; + }; + + /** + * Encodes the specified WalkingDetected message, length delimited. Does not implicitly {@link message.input.WalkingDetected.verify|verify} messages. + * @param {message.input.WalkingDetected$Properties} message WalkingDetected message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + WalkingDetected.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a WalkingDetected message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.input.WalkingDetected} WalkingDetected + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + WalkingDetected.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.input.WalkingDetected(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a WalkingDetected message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.input.WalkingDetected} WalkingDetected + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + WalkingDetected.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a WalkingDetected message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + WalkingDetected.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + return null; + }; + + /** + * Creates a WalkingDetected message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.input.WalkingDetected} WalkingDetected + */ + WalkingDetected.fromObject = function fromObject(object) { + if (object instanceof $root.message.input.WalkingDetected) + return object; + return new $root.message.input.WalkingDetected(); + }; + + /** + * Creates a WalkingDetected message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.input.WalkingDetected.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.input.WalkingDetected} WalkingDetected + */ + WalkingDetected.from = WalkingDetected.fromObject; + + /** + * Creates a plain object from a WalkingDetected message. Also converts values to other types if specified. + * @param {message.input.WalkingDetected} message WalkingDetected + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + WalkingDetected.toObject = function toObject() { + return {}; + }; + + /** + * Creates a plain object from this WalkingDetected message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + WalkingDetected.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this WalkingDetected to JSON. + * @returns {Object.} JSON object + */ + WalkingDetected.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return WalkingDetected; + })(); + + input.BendingDetected = (function() { + + /** + * Properties of a BendingDetected. + * @typedef message.input.BendingDetected$Properties + * @type {Object} + */ + + /** + * Constructs a new BendingDetected. + * @exports message.input.BendingDetected + * @constructor + * @param {message.input.BendingDetected$Properties=} [properties] Properties to set + */ + function BendingDetected(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Creates a new BendingDetected instance using the specified properties. + * @param {message.input.BendingDetected$Properties=} [properties] Properties to set + * @returns {message.input.BendingDetected} BendingDetected instance + */ + BendingDetected.create = function create(properties) { + return new BendingDetected(properties); + }; + + /** + * Encodes the specified BendingDetected message. Does not implicitly {@link message.input.BendingDetected.verify|verify} messages. + * @param {message.input.BendingDetected$Properties} message BendingDetected message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + BendingDetected.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + return writer; + }; + + /** + * Encodes the specified BendingDetected message, length delimited. Does not implicitly {@link message.input.BendingDetected.verify|verify} messages. + * @param {message.input.BendingDetected$Properties} message BendingDetected message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + BendingDetected.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a BendingDetected message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.input.BendingDetected} BendingDetected + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + BendingDetected.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.input.BendingDetected(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a BendingDetected message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.input.BendingDetected} BendingDetected + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + BendingDetected.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a BendingDetected message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + BendingDetected.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + return null; + }; + + /** + * Creates a BendingDetected message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.input.BendingDetected} BendingDetected + */ + BendingDetected.fromObject = function fromObject(object) { + if (object instanceof $root.message.input.BendingDetected) + return object; + return new $root.message.input.BendingDetected(); + }; + + /** + * Creates a BendingDetected message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.input.BendingDetected.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.input.BendingDetected} BendingDetected + */ + BendingDetected.from = BendingDetected.fromObject; + + /** + * Creates a plain object from a BendingDetected message. Also converts values to other types if specified. + * @param {message.input.BendingDetected} message BendingDetected + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + BendingDetected.toObject = function toObject() { + return {}; + }; + + /** + * Creates a plain object from this BendingDetected message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + BendingDetected.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this BendingDetected to JSON. + * @returns {Object.} JSON object + */ + BendingDetected.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return BendingDetected; + })(); + + input.KickingDetected = (function() { + + /** + * Properties of a KickingDetected. + * @typedef message.input.KickingDetected$Properties + * @type {Object} + */ + + /** + * Constructs a new KickingDetected. + * @exports message.input.KickingDetected + * @constructor + * @param {message.input.KickingDetected$Properties=} [properties] Properties to set + */ + function KickingDetected(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Creates a new KickingDetected instance using the specified properties. + * @param {message.input.KickingDetected$Properties=} [properties] Properties to set + * @returns {message.input.KickingDetected} KickingDetected instance + */ + KickingDetected.create = function create(properties) { + return new KickingDetected(properties); + }; + + /** + * Encodes the specified KickingDetected message. Does not implicitly {@link message.input.KickingDetected.verify|verify} messages. + * @param {message.input.KickingDetected$Properties} message KickingDetected message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + KickingDetected.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + return writer; + }; + + /** + * Encodes the specified KickingDetected message, length delimited. Does not implicitly {@link message.input.KickingDetected.verify|verify} messages. + * @param {message.input.KickingDetected$Properties} message KickingDetected message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + KickingDetected.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a KickingDetected message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.input.KickingDetected} KickingDetected + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + KickingDetected.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.input.KickingDetected(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a KickingDetected message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.input.KickingDetected} KickingDetected + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + KickingDetected.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a KickingDetected message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + KickingDetected.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + return null; + }; + + /** + * Creates a KickingDetected message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.input.KickingDetected} KickingDetected + */ + KickingDetected.fromObject = function fromObject(object) { + if (object instanceof $root.message.input.KickingDetected) + return object; + return new $root.message.input.KickingDetected(); + }; + + /** + * Creates a KickingDetected message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.input.KickingDetected.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.input.KickingDetected} KickingDetected + */ + KickingDetected.from = KickingDetected.fromObject; + + /** + * Creates a plain object from a KickingDetected message. Also converts values to other types if specified. + * @param {message.input.KickingDetected} message KickingDetected + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + KickingDetected.toObject = function toObject() { + return {}; + }; + + /** + * Creates a plain object from this KickingDetected message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + KickingDetected.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this KickingDetected to JSON. + * @returns {Object.} JSON object + */ + KickingDetected.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return KickingDetected; + })(); + + input.SittingDetected = (function() { + + /** + * Properties of a SittingDetected. + * @typedef message.input.SittingDetected$Properties + * @type {Object} + */ + + /** + * Constructs a new SittingDetected. + * @exports message.input.SittingDetected + * @constructor + * @param {message.input.SittingDetected$Properties=} [properties] Properties to set + */ + function SittingDetected(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Creates a new SittingDetected instance using the specified properties. + * @param {message.input.SittingDetected$Properties=} [properties] Properties to set + * @returns {message.input.SittingDetected} SittingDetected instance + */ + SittingDetected.create = function create(properties) { + return new SittingDetected(properties); + }; + + /** + * Encodes the specified SittingDetected message. Does not implicitly {@link message.input.SittingDetected.verify|verify} messages. + * @param {message.input.SittingDetected$Properties} message SittingDetected message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + SittingDetected.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + return writer; + }; + + /** + * Encodes the specified SittingDetected message, length delimited. Does not implicitly {@link message.input.SittingDetected.verify|verify} messages. + * @param {message.input.SittingDetected$Properties} message SittingDetected message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + SittingDetected.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a SittingDetected message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.input.SittingDetected} SittingDetected + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + SittingDetected.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.input.SittingDetected(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a SittingDetected message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.input.SittingDetected} SittingDetected + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + SittingDetected.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a SittingDetected message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + SittingDetected.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + return null; + }; + + /** + * Creates a SittingDetected message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.input.SittingDetected} SittingDetected + */ + SittingDetected.fromObject = function fromObject(object) { + if (object instanceof $root.message.input.SittingDetected) + return object; + return new $root.message.input.SittingDetected(); + }; + + /** + * Creates a SittingDetected message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.input.SittingDetected.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.input.SittingDetected} SittingDetected + */ + SittingDetected.from = SittingDetected.fromObject; + + /** + * Creates a plain object from a SittingDetected message. Also converts values to other types if specified. + * @param {message.input.SittingDetected} message SittingDetected + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + SittingDetected.toObject = function toObject() { + return {}; + }; + + /** + * Creates a plain object from this SittingDetected message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + SittingDetected.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this SittingDetected to JSON. + * @returns {Object.} JSON object + */ + SittingDetected.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return SittingDetected; + })(); + + input.StandingDetected = (function() { + + /** + * Properties of a StandingDetected. + * @typedef message.input.StandingDetected$Properties + * @type {Object} + */ + + /** + * Constructs a new StandingDetected. + * @exports message.input.StandingDetected + * @constructor + * @param {message.input.StandingDetected$Properties=} [properties] Properties to set + */ + function StandingDetected(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Creates a new StandingDetected instance using the specified properties. + * @param {message.input.StandingDetected$Properties=} [properties] Properties to set + * @returns {message.input.StandingDetected} StandingDetected instance + */ + StandingDetected.create = function create(properties) { + return new StandingDetected(properties); + }; + + /** + * Encodes the specified StandingDetected message. Does not implicitly {@link message.input.StandingDetected.verify|verify} messages. + * @param {message.input.StandingDetected$Properties} message StandingDetected message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + StandingDetected.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + return writer; + }; + + /** + * Encodes the specified StandingDetected message, length delimited. Does not implicitly {@link message.input.StandingDetected.verify|verify} messages. + * @param {message.input.StandingDetected$Properties} message StandingDetected message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + StandingDetected.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a StandingDetected message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.input.StandingDetected} StandingDetected + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + StandingDetected.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.input.StandingDetected(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a StandingDetected message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.input.StandingDetected} StandingDetected + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + StandingDetected.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a StandingDetected message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + StandingDetected.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + return null; + }; + + /** + * Creates a StandingDetected message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.input.StandingDetected} StandingDetected + */ + StandingDetected.fromObject = function fromObject(object) { + if (object instanceof $root.message.input.StandingDetected) + return object; + return new $root.message.input.StandingDetected(); + }; + + /** + * Creates a StandingDetected message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.input.StandingDetected.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.input.StandingDetected} StandingDetected + */ + StandingDetected.from = StandingDetected.fromObject; + + /** + * Creates a plain object from a StandingDetected message. Also converts values to other types if specified. + * @param {message.input.StandingDetected} message StandingDetected + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + StandingDetected.toObject = function toObject() { + return {}; + }; + + /** + * Creates a plain object from this StandingDetected message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + StandingDetected.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this StandingDetected to JSON. + * @returns {Object.} JSON object + */ + StandingDetected.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return StandingDetected; + })(); + + input.FallingDetected = (function() { + + /** + * Properties of a FallingDetected. + * @typedef message.input.FallingDetected$Properties + * @type {Object} + * @property {number} [x] FallingDetected x. + * @property {number} [y] FallingDetected y. + * @property {number} [z] FallingDetected z. + */ + + /** + * Constructs a new FallingDetected. + * @exports message.input.FallingDetected + * @constructor + * @param {message.input.FallingDetected$Properties=} [properties] Properties to set + */ + function FallingDetected(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * FallingDetected x. + * @type {number} + */ + FallingDetected.prototype.x = 0; + + /** + * FallingDetected y. + * @type {number} + */ + FallingDetected.prototype.y = 0; + + /** + * FallingDetected z. + * @type {number} + */ + FallingDetected.prototype.z = 0; + + /** + * Creates a new FallingDetected instance using the specified properties. + * @param {message.input.FallingDetected$Properties=} [properties] Properties to set + * @returns {message.input.FallingDetected} FallingDetected instance + */ + FallingDetected.create = function create(properties) { + return new FallingDetected(properties); + }; + + /** + * Encodes the specified FallingDetected message. Does not implicitly {@link message.input.FallingDetected.verify|verify} messages. + * @param {message.input.FallingDetected$Properties} message FallingDetected message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + FallingDetected.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.x != null && message.hasOwnProperty("x")) + writer.uint32(/* id 1, wireType 1 =*/9).double(message.x); + if (message.y != null && message.hasOwnProperty("y")) + writer.uint32(/* id 2, wireType 1 =*/17).double(message.y); + if (message.z != null && message.hasOwnProperty("z")) + writer.uint32(/* id 3, wireType 1 =*/25).double(message.z); + return writer; + }; + + /** + * Encodes the specified FallingDetected message, length delimited. Does not implicitly {@link message.input.FallingDetected.verify|verify} messages. + * @param {message.input.FallingDetected$Properties} message FallingDetected message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + FallingDetected.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a FallingDetected message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.input.FallingDetected} FallingDetected + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + FallingDetected.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.input.FallingDetected(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.x = reader.double(); + break; + case 2: + message.y = reader.double(); + break; + case 3: + message.z = reader.double(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a FallingDetected message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.input.FallingDetected} FallingDetected + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + FallingDetected.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a FallingDetected message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + FallingDetected.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.x != null && message.hasOwnProperty("x")) + if (typeof message.x !== "number") + return "x: number expected"; + if (message.y != null && message.hasOwnProperty("y")) + if (typeof message.y !== "number") + return "y: number expected"; + if (message.z != null && message.hasOwnProperty("z")) + if (typeof message.z !== "number") + return "z: number expected"; + return null; + }; + + /** + * Creates a FallingDetected message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.input.FallingDetected} FallingDetected + */ + FallingDetected.fromObject = function fromObject(object) { + if (object instanceof $root.message.input.FallingDetected) + return object; + var message = new $root.message.input.FallingDetected(); + if (object.x != null) + message.x = Number(object.x); + if (object.y != null) + message.y = Number(object.y); + if (object.z != null) + message.z = Number(object.z); + return message; + }; + + /** + * Creates a FallingDetected message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.input.FallingDetected.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.input.FallingDetected} FallingDetected + */ + FallingDetected.from = FallingDetected.fromObject; + + /** + * Creates a plain object from a FallingDetected message. Also converts values to other types if specified. + * @param {message.input.FallingDetected} message FallingDetected + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + FallingDetected.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.x = 0; + object.y = 0; + object.z = 0; + } + if (message.x != null && message.hasOwnProperty("x")) + object.x = message.x; + if (message.y != null && message.hasOwnProperty("y")) + object.y = message.y; + if (message.z != null && message.hasOwnProperty("z")) + object.z = message.z; + return object; + }; + + /** + * Creates a plain object from this FallingDetected message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + FallingDetected.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this FallingDetected to JSON. + * @returns {Object.} JSON object + */ + FallingDetected.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return FallingDetected; + })(); + + input.PresenceUserState = (function() { + + /** + * Properties of a PresenceUserState. + * @typedef message.input.PresenceUserState$Properties + * @type {Object} + * @property {fmat44$Properties} [headPose] PresenceUserState headPose. + */ + + /** + * Constructs a new PresenceUserState. + * @exports message.input.PresenceUserState + * @constructor + * @param {message.input.PresenceUserState$Properties=} [properties] Properties to set + */ + function PresenceUserState(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * PresenceUserState headPose. + * @type {(fmat44$Properties|null)} + */ + PresenceUserState.prototype.headPose = null; + + /** + * Creates a new PresenceUserState instance using the specified properties. + * @param {message.input.PresenceUserState$Properties=} [properties] Properties to set + * @returns {message.input.PresenceUserState} PresenceUserState instance + */ + PresenceUserState.create = function create(properties) { + return new PresenceUserState(properties); + }; + + /** + * Encodes the specified PresenceUserState message. Does not implicitly {@link message.input.PresenceUserState.verify|verify} messages. + * @param {message.input.PresenceUserState$Properties} message PresenceUserState message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + PresenceUserState.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.headPose != null && message.hasOwnProperty("headPose")) + $root.fmat44.encode(message.headPose, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified PresenceUserState message, length delimited. Does not implicitly {@link message.input.PresenceUserState.verify|verify} messages. + * @param {message.input.PresenceUserState$Properties} message PresenceUserState message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + PresenceUserState.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a PresenceUserState message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.input.PresenceUserState} PresenceUserState + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + PresenceUserState.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.input.PresenceUserState(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.headPose = $root.fmat44.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a PresenceUserState message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.input.PresenceUserState} PresenceUserState + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + PresenceUserState.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a PresenceUserState message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + PresenceUserState.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.headPose != null && message.hasOwnProperty("headPose")) { + var error = $root.fmat44.verify(message.headPose); + if (error) + return "headPose." + error; + } + return null; + }; + + /** + * Creates a PresenceUserState message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.input.PresenceUserState} PresenceUserState + */ + PresenceUserState.fromObject = function fromObject(object) { + if (object instanceof $root.message.input.PresenceUserState) + return object; + var message = new $root.message.input.PresenceUserState(); + if (object.headPose != null) { + if (typeof object.headPose !== "object") + throw TypeError(".message.input.PresenceUserState.headPose: object expected"); + message.headPose = $root.fmat44.fromObject(object.headPose); + } + return message; + }; + + /** + * Creates a PresenceUserState message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.input.PresenceUserState.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.input.PresenceUserState} PresenceUserState + */ + PresenceUserState.from = PresenceUserState.fromObject; + + /** + * Creates a plain object from a PresenceUserState message. Also converts values to other types if specified. + * @param {message.input.PresenceUserState} message PresenceUserState + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + PresenceUserState.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) + object.headPose = null; + if (message.headPose != null && message.hasOwnProperty("headPose")) + object.headPose = $root.fmat44.toObject(message.headPose, options); + return object; + }; + + /** + * Creates a plain object from this PresenceUserState message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + PresenceUserState.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this PresenceUserState to JSON. + * @returns {Object.} JSON object + */ + PresenceUserState.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return PresenceUserState; + })(); + + input.PushDetection = (function() { + + /** + * Properties of a PushDetection. + * @typedef message.input.PushDetection$Properties + * @type {Object} + * @property {boolean} [forward] PushDetection forward. + */ + + /** + * Constructs a new PushDetection. + * @exports message.input.PushDetection + * @constructor + * @param {message.input.PushDetection$Properties=} [properties] Properties to set + */ + function PushDetection(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * PushDetection forward. + * @type {boolean} + */ + PushDetection.prototype.forward = false; + + /** + * Creates a new PushDetection instance using the specified properties. + * @param {message.input.PushDetection$Properties=} [properties] Properties to set + * @returns {message.input.PushDetection} PushDetection instance + */ + PushDetection.create = function create(properties) { + return new PushDetection(properties); + }; + + /** + * Encodes the specified PushDetection message. Does not implicitly {@link message.input.PushDetection.verify|verify} messages. + * @param {message.input.PushDetection$Properties} message PushDetection message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + PushDetection.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.forward != null && message.hasOwnProperty("forward")) + writer.uint32(/* id 1, wireType 0 =*/8).bool(message.forward); + return writer; + }; + + /** + * Encodes the specified PushDetection message, length delimited. Does not implicitly {@link message.input.PushDetection.verify|verify} messages. + * @param {message.input.PushDetection$Properties} message PushDetection message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + PushDetection.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a PushDetection message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.input.PushDetection} PushDetection + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + PushDetection.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.input.PushDetection(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.forward = reader.bool(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a PushDetection message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.input.PushDetection} PushDetection + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + PushDetection.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a PushDetection message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + PushDetection.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.forward != null && message.hasOwnProperty("forward")) + if (typeof message.forward !== "boolean") + return "forward: boolean expected"; + return null; + }; + + /** + * Creates a PushDetection message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.input.PushDetection} PushDetection + */ + PushDetection.fromObject = function fromObject(object) { + if (object instanceof $root.message.input.PushDetection) + return object; + var message = new $root.message.input.PushDetection(); + if (object.forward != null) + message.forward = Boolean(object.forward); + return message; + }; + + /** + * Creates a PushDetection message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.input.PushDetection.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.input.PushDetection} PushDetection + */ + PushDetection.from = PushDetection.fromObject; + + /** + * Creates a plain object from a PushDetection message. Also converts values to other types if specified. + * @param {message.input.PushDetection} message PushDetection + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + PushDetection.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) + object.forward = false; + if (message.forward != null && message.hasOwnProperty("forward")) + object.forward = message.forward; + return object; + }; + + /** + * Creates a plain object from this PushDetection message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + PushDetection.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this PushDetection to JSON. + * @returns {Object.} JSON object + */ + PushDetection.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return PushDetection; + })(); + + input.Sensors = (function() { + + /** + * Properties of a Sensors. + * @typedef message.input.Sensors$Properties + * @type {Object} + * @property {google.protobuf.Timestamp$Properties} [timestamp] Sensors timestamp. + * @property {vec3$Properties} [accelerometer] Sensors accelerometer. + * @property {vec3$Properties} [gyroscope] Sensors gyroscope. + * @property {mat44$Properties} [world] Sensors world. + * @property {Array.} [fsr] Sensors fsr. + * @property {Array.} [servo] Sensors servo. + * @property {Array.} [button] Sensors button. + * @property {Array.} [led] Sensors led. + * @property {number} [voltage] Sensors voltage. + * @property {number} [battery] Sensors battery. + * @property {vec3$Properties} [centreOfPressure] Sensors centreOfPressure. + * @property {mat22$Properties} [robotToIMU] Sensors robotToIMU. + * @property {boolean} [leftFootDown] Sensors leftFootDown. + * @property {boolean} [rightFootDown] Sensors rightFootDown. + * @property {Object.} [forwardKinematics] Sensors forwardKinematics. + * @property {number} [bodyCentreHeight] Sensors bodyCentreHeight. + * @property {vec4$Properties} [centreOfMass] Sensors centreOfMass. + * @property {mat44$Properties} [bodyToGround] Sensors bodyToGround. + * @property {mat44$Properties} [camToGround] Sensors camToGround. + */ + + /** + * Constructs a new Sensors. + * @exports message.input.Sensors + * @constructor + * @param {message.input.Sensors$Properties=} [properties] Properties to set + */ + function Sensors(properties) { + this.fsr = []; + this.servo = []; + this.button = []; + this.led = []; + this.forwardKinematics = {}; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Sensors timestamp. + * @type {(google.protobuf.Timestamp$Properties|null)} + */ + Sensors.prototype.timestamp = null; + + /** + * Sensors accelerometer. + * @type {(vec3$Properties|null)} + */ + Sensors.prototype.accelerometer = null; + + /** + * Sensors gyroscope. + * @type {(vec3$Properties|null)} + */ + Sensors.prototype.gyroscope = null; + + /** + * Sensors world. + * @type {(mat44$Properties|null)} + */ + Sensors.prototype.world = null; + + /** + * Sensors fsr. + * @type {Array.} + */ + Sensors.prototype.fsr = $util.emptyArray; + + /** + * Sensors servo. + * @type {Array.} + */ + Sensors.prototype.servo = $util.emptyArray; + + /** + * Sensors button. + * @type {Array.} + */ + Sensors.prototype.button = $util.emptyArray; + + /** + * Sensors led. + * @type {Array.} + */ + Sensors.prototype.led = $util.emptyArray; + + /** + * Sensors voltage. + * @type {number} + */ + Sensors.prototype.voltage = 0; + + /** + * Sensors battery. + * @type {number} + */ + Sensors.prototype.battery = 0; + + /** + * Sensors centreOfPressure. + * @type {(vec3$Properties|null)} + */ + Sensors.prototype.centreOfPressure = null; + + /** + * Sensors robotToIMU. + * @type {(mat22$Properties|null)} + */ + Sensors.prototype.robotToIMU = null; + + /** + * Sensors leftFootDown. + * @type {boolean} + */ + Sensors.prototype.leftFootDown = false; + + /** + * Sensors rightFootDown. + * @type {boolean} + */ + Sensors.prototype.rightFootDown = false; + + /** + * Sensors forwardKinematics. + * @type {Object.} + */ + Sensors.prototype.forwardKinematics = $util.emptyObject; + + /** + * Sensors bodyCentreHeight. + * @type {number} + */ + Sensors.prototype.bodyCentreHeight = 0; + + /** + * Sensors centreOfMass. + * @type {(vec4$Properties|null)} + */ + Sensors.prototype.centreOfMass = null; + + /** + * Sensors bodyToGround. + * @type {(mat44$Properties|null)} + */ + Sensors.prototype.bodyToGround = null; + + /** + * Sensors camToGround. + * @type {(mat44$Properties|null)} + */ + Sensors.prototype.camToGround = null; + + /** + * Creates a new Sensors instance using the specified properties. + * @param {message.input.Sensors$Properties=} [properties] Properties to set + * @returns {message.input.Sensors} Sensors instance + */ + Sensors.create = function create(properties) { + return new Sensors(properties); + }; + + /** + * Encodes the specified Sensors message. Does not implicitly {@link message.input.Sensors.verify|verify} messages. + * @param {message.input.Sensors$Properties} message Sensors message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Sensors.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.timestamp != null && message.hasOwnProperty("timestamp")) + $root.google.protobuf.Timestamp.encode(message.timestamp, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.accelerometer != null && message.hasOwnProperty("accelerometer")) + $root.vec3.encode(message.accelerometer, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.gyroscope != null && message.hasOwnProperty("gyroscope")) + $root.vec3.encode(message.gyroscope, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + if (message.world != null && message.hasOwnProperty("world")) + $root.mat44.encode(message.world, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); + if (message.fsr != null && message.fsr.length) + for (var i = 0; i < message.fsr.length; ++i) + $root.message.input.Sensors.FSR.encode(message.fsr[i], writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); + if (message.servo != null && message.servo.length) + for (var i = 0; i < message.servo.length; ++i) + $root.message.input.Sensors.Servo.encode(message.servo[i], writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim(); + if (message.button != null && message.button.length) + for (var i = 0; i < message.button.length; ++i) + $root.message.input.Sensors.Button.encode(message.button[i], writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim(); + if (message.led != null && message.led.length) + for (var i = 0; i < message.led.length; ++i) + $root.message.input.Sensors.LED.encode(message.led[i], writer.uint32(/* id 8, wireType 2 =*/66).fork()).ldelim(); + if (message.voltage != null && message.hasOwnProperty("voltage")) + writer.uint32(/* id 9, wireType 5 =*/77).float(message.voltage); + if (message.battery != null && message.hasOwnProperty("battery")) + writer.uint32(/* id 10, wireType 5 =*/85).float(message.battery); + if (message.centreOfPressure != null && message.hasOwnProperty("centreOfPressure")) + $root.vec3.encode(message.centreOfPressure, writer.uint32(/* id 11, wireType 2 =*/90).fork()).ldelim(); + if (message.robotToIMU != null && message.hasOwnProperty("robotToIMU")) + $root.mat22.encode(message.robotToIMU, writer.uint32(/* id 12, wireType 2 =*/98).fork()).ldelim(); + if (message.leftFootDown != null && message.hasOwnProperty("leftFootDown")) + writer.uint32(/* id 13, wireType 0 =*/104).bool(message.leftFootDown); + if (message.rightFootDown != null && message.hasOwnProperty("rightFootDown")) + writer.uint32(/* id 14, wireType 0 =*/112).bool(message.rightFootDown); + if (message.forwardKinematics != null && message.hasOwnProperty("forwardKinematics")) + for (var keys = Object.keys(message.forwardKinematics), i = 0; i < keys.length; ++i) { + writer.uint32(/* id 15, wireType 2 =*/122).fork().uint32(/* id 1, wireType 0 =*/8).uint32(keys[i]); + $root.mat44.encode(message.forwardKinematics[keys[i]], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim().ldelim(); + } + if (message.bodyCentreHeight != null && message.hasOwnProperty("bodyCentreHeight")) + writer.uint32(/* id 16, wireType 5 =*/133).float(message.bodyCentreHeight); + if (message.centreOfMass != null && message.hasOwnProperty("centreOfMass")) + $root.vec4.encode(message.centreOfMass, writer.uint32(/* id 17, wireType 2 =*/138).fork()).ldelim(); + if (message.bodyToGround != null && message.hasOwnProperty("bodyToGround")) + $root.mat44.encode(message.bodyToGround, writer.uint32(/* id 18, wireType 2 =*/146).fork()).ldelim(); + if (message.camToGround != null && message.hasOwnProperty("camToGround")) + $root.mat44.encode(message.camToGround, writer.uint32(/* id 19, wireType 2 =*/154).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified Sensors message, length delimited. Does not implicitly {@link message.input.Sensors.verify|verify} messages. + * @param {message.input.Sensors$Properties} message Sensors message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Sensors.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a Sensors message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.input.Sensors} Sensors + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Sensors.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.input.Sensors(), key; + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.timestamp = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); + break; + case 2: + message.accelerometer = $root.vec3.decode(reader, reader.uint32()); + break; + case 3: + message.gyroscope = $root.vec3.decode(reader, reader.uint32()); + break; + case 4: + message.world = $root.mat44.decode(reader, reader.uint32()); + break; + case 5: + if (!(message.fsr && message.fsr.length)) + message.fsr = []; + message.fsr.push($root.message.input.Sensors.FSR.decode(reader, reader.uint32())); + break; + case 6: + if (!(message.servo && message.servo.length)) + message.servo = []; + message.servo.push($root.message.input.Sensors.Servo.decode(reader, reader.uint32())); + break; + case 7: + if (!(message.button && message.button.length)) + message.button = []; + message.button.push($root.message.input.Sensors.Button.decode(reader, reader.uint32())); + break; + case 8: + if (!(message.led && message.led.length)) + message.led = []; + message.led.push($root.message.input.Sensors.LED.decode(reader, reader.uint32())); + break; + case 9: + message.voltage = reader.float(); + break; + case 10: + message.battery = reader.float(); + break; + case 11: + message.centreOfPressure = $root.vec3.decode(reader, reader.uint32()); + break; + case 12: + message.robotToIMU = $root.mat22.decode(reader, reader.uint32()); + break; + case 13: + message.leftFootDown = reader.bool(); + break; + case 14: + message.rightFootDown = reader.bool(); + break; + case 15: + reader.skip().pos++; + if (message.forwardKinematics === $util.emptyObject) + message.forwardKinematics = {}; + key = reader.uint32(); + reader.pos++; + message.forwardKinematics[key] = $root.mat44.decode(reader, reader.uint32()); + break; + case 16: + message.bodyCentreHeight = reader.float(); + break; + case 17: + message.centreOfMass = $root.vec4.decode(reader, reader.uint32()); + break; + case 18: + message.bodyToGround = $root.mat44.decode(reader, reader.uint32()); + break; + case 19: + message.camToGround = $root.mat44.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a Sensors message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.input.Sensors} Sensors + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Sensors.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a Sensors message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + Sensors.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.timestamp != null && message.hasOwnProperty("timestamp")) { + var error = $root.google.protobuf.Timestamp.verify(message.timestamp); + if (error) + return "timestamp." + error; + } + if (message.accelerometer != null && message.hasOwnProperty("accelerometer")) { + var error = $root.vec3.verify(message.accelerometer); + if (error) + return "accelerometer." + error; + } + if (message.gyroscope != null && message.hasOwnProperty("gyroscope")) { + var error = $root.vec3.verify(message.gyroscope); + if (error) + return "gyroscope." + error; + } + if (message.world != null && message.hasOwnProperty("world")) { + var error = $root.mat44.verify(message.world); + if (error) + return "world." + error; + } + if (message.fsr != null && message.hasOwnProperty("fsr")) { + if (!Array.isArray(message.fsr)) + return "fsr: array expected"; + for (var i = 0; i < message.fsr.length; ++i) { + var error = $root.message.input.Sensors.FSR.verify(message.fsr[i]); + if (error) + return "fsr." + error; + } + } + if (message.servo != null && message.hasOwnProperty("servo")) { + if (!Array.isArray(message.servo)) + return "servo: array expected"; + for (var i = 0; i < message.servo.length; ++i) { + var error = $root.message.input.Sensors.Servo.verify(message.servo[i]); + if (error) + return "servo." + error; + } + } + if (message.button != null && message.hasOwnProperty("button")) { + if (!Array.isArray(message.button)) + return "button: array expected"; + for (var i = 0; i < message.button.length; ++i) { + var error = $root.message.input.Sensors.Button.verify(message.button[i]); + if (error) + return "button." + error; + } + } + if (message.led != null && message.hasOwnProperty("led")) { + if (!Array.isArray(message.led)) + return "led: array expected"; + for (var i = 0; i < message.led.length; ++i) { + var error = $root.message.input.Sensors.LED.verify(message.led[i]); + if (error) + return "led." + error; + } + } + if (message.voltage != null && message.hasOwnProperty("voltage")) + if (typeof message.voltage !== "number") + return "voltage: number expected"; + if (message.battery != null && message.hasOwnProperty("battery")) + if (typeof message.battery !== "number") + return "battery: number expected"; + if (message.centreOfPressure != null && message.hasOwnProperty("centreOfPressure")) { + var error = $root.vec3.verify(message.centreOfPressure); + if (error) + return "centreOfPressure." + error; + } + if (message.robotToIMU != null && message.hasOwnProperty("robotToIMU")) { + var error = $root.mat22.verify(message.robotToIMU); + if (error) + return "robotToIMU." + error; + } + if (message.leftFootDown != null && message.hasOwnProperty("leftFootDown")) + if (typeof message.leftFootDown !== "boolean") + return "leftFootDown: boolean expected"; + if (message.rightFootDown != null && message.hasOwnProperty("rightFootDown")) + if (typeof message.rightFootDown !== "boolean") + return "rightFootDown: boolean expected"; + if (message.forwardKinematics != null && message.hasOwnProperty("forwardKinematics")) { + if (!$util.isObject(message.forwardKinematics)) + return "forwardKinematics: object expected"; + var key = Object.keys(message.forwardKinematics); + for (var i = 0; i < key.length; ++i) { + if (!$util.key32Re.test(key[i])) + return "forwardKinematics: integer key{k:uint32} expected"; + var error = $root.mat44.verify(message.forwardKinematics[key[i]]); + if (error) + return "forwardKinematics." + error; + } + } + if (message.bodyCentreHeight != null && message.hasOwnProperty("bodyCentreHeight")) + if (typeof message.bodyCentreHeight !== "number") + return "bodyCentreHeight: number expected"; + if (message.centreOfMass != null && message.hasOwnProperty("centreOfMass")) { + var error = $root.vec4.verify(message.centreOfMass); + if (error) + return "centreOfMass." + error; + } + if (message.bodyToGround != null && message.hasOwnProperty("bodyToGround")) { + var error = $root.mat44.verify(message.bodyToGround); + if (error) + return "bodyToGround." + error; + } + if (message.camToGround != null && message.hasOwnProperty("camToGround")) { + var error = $root.mat44.verify(message.camToGround); + if (error) + return "camToGround." + error; + } + return null; + }; + + /** + * Creates a Sensors message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.input.Sensors} Sensors + */ + Sensors.fromObject = function fromObject(object) { + if (object instanceof $root.message.input.Sensors) + return object; + var message = new $root.message.input.Sensors(); + if (object.timestamp != null) { + if (typeof object.timestamp !== "object") + throw TypeError(".message.input.Sensors.timestamp: object expected"); + message.timestamp = $root.google.protobuf.Timestamp.fromObject(object.timestamp); + } + if (object.accelerometer != null) { + if (typeof object.accelerometer !== "object") + throw TypeError(".message.input.Sensors.accelerometer: object expected"); + message.accelerometer = $root.vec3.fromObject(object.accelerometer); + } + if (object.gyroscope != null) { + if (typeof object.gyroscope !== "object") + throw TypeError(".message.input.Sensors.gyroscope: object expected"); + message.gyroscope = $root.vec3.fromObject(object.gyroscope); + } + if (object.world != null) { + if (typeof object.world !== "object") + throw TypeError(".message.input.Sensors.world: object expected"); + message.world = $root.mat44.fromObject(object.world); + } + if (object.fsr) { + if (!Array.isArray(object.fsr)) + throw TypeError(".message.input.Sensors.fsr: array expected"); + message.fsr = []; + for (var i = 0; i < object.fsr.length; ++i) { + if (typeof object.fsr[i] !== "object") + throw TypeError(".message.input.Sensors.fsr: object expected"); + message.fsr[i] = $root.message.input.Sensors.FSR.fromObject(object.fsr[i]); + } + } + if (object.servo) { + if (!Array.isArray(object.servo)) + throw TypeError(".message.input.Sensors.servo: array expected"); + message.servo = []; + for (var i = 0; i < object.servo.length; ++i) { + if (typeof object.servo[i] !== "object") + throw TypeError(".message.input.Sensors.servo: object expected"); + message.servo[i] = $root.message.input.Sensors.Servo.fromObject(object.servo[i]); + } + } + if (object.button) { + if (!Array.isArray(object.button)) + throw TypeError(".message.input.Sensors.button: array expected"); + message.button = []; + for (var i = 0; i < object.button.length; ++i) { + if (typeof object.button[i] !== "object") + throw TypeError(".message.input.Sensors.button: object expected"); + message.button[i] = $root.message.input.Sensors.Button.fromObject(object.button[i]); + } + } + if (object.led) { + if (!Array.isArray(object.led)) + throw TypeError(".message.input.Sensors.led: array expected"); + message.led = []; + for (var i = 0; i < object.led.length; ++i) { + if (typeof object.led[i] !== "object") + throw TypeError(".message.input.Sensors.led: object expected"); + message.led[i] = $root.message.input.Sensors.LED.fromObject(object.led[i]); + } + } + if (object.voltage != null) + message.voltage = Number(object.voltage); + if (object.battery != null) + message.battery = Number(object.battery); + if (object.centreOfPressure != null) { + if (typeof object.centreOfPressure !== "object") + throw TypeError(".message.input.Sensors.centreOfPressure: object expected"); + message.centreOfPressure = $root.vec3.fromObject(object.centreOfPressure); + } + if (object.robotToIMU != null) { + if (typeof object.robotToIMU !== "object") + throw TypeError(".message.input.Sensors.robotToIMU: object expected"); + message.robotToIMU = $root.mat22.fromObject(object.robotToIMU); + } + if (object.leftFootDown != null) + message.leftFootDown = Boolean(object.leftFootDown); + if (object.rightFootDown != null) + message.rightFootDown = Boolean(object.rightFootDown); + if (object.forwardKinematics) { + if (typeof object.forwardKinematics !== "object") + throw TypeError(".message.input.Sensors.forwardKinematics: object expected"); + message.forwardKinematics = {}; + for (var keys = Object.keys(object.forwardKinematics), i = 0; i < keys.length; ++i) { + if (typeof object.forwardKinematics[keys[i]] !== "object") + throw TypeError(".message.input.Sensors.forwardKinematics: object expected"); + message.forwardKinematics[keys[i]] = $root.mat44.fromObject(object.forwardKinematics[keys[i]]); + } + } + if (object.bodyCentreHeight != null) + message.bodyCentreHeight = Number(object.bodyCentreHeight); + if (object.centreOfMass != null) { + if (typeof object.centreOfMass !== "object") + throw TypeError(".message.input.Sensors.centreOfMass: object expected"); + message.centreOfMass = $root.vec4.fromObject(object.centreOfMass); + } + if (object.bodyToGround != null) { + if (typeof object.bodyToGround !== "object") + throw TypeError(".message.input.Sensors.bodyToGround: object expected"); + message.bodyToGround = $root.mat44.fromObject(object.bodyToGround); + } + if (object.camToGround != null) { + if (typeof object.camToGround !== "object") + throw TypeError(".message.input.Sensors.camToGround: object expected"); + message.camToGround = $root.mat44.fromObject(object.camToGround); + } + return message; + }; + + /** + * Creates a Sensors message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.input.Sensors.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.input.Sensors} Sensors + */ + Sensors.from = Sensors.fromObject; + + /** + * Creates a plain object from a Sensors message. Also converts values to other types if specified. + * @param {message.input.Sensors} message Sensors + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Sensors.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) { + object.fsr = []; + object.servo = []; + object.button = []; + object.led = []; + } + if (options.objects || options.defaults) + object.forwardKinematics = {}; + if (options.defaults) { + object.timestamp = null; + object.accelerometer = null; + object.gyroscope = null; + object.world = null; + object.voltage = 0; + object.battery = 0; + object.centreOfPressure = null; + object.robotToIMU = null; + object.leftFootDown = false; + object.rightFootDown = false; + object.bodyCentreHeight = 0; + object.centreOfMass = null; + object.bodyToGround = null; + object.camToGround = null; + } + if (message.timestamp != null && message.hasOwnProperty("timestamp")) + object.timestamp = $root.google.protobuf.Timestamp.toObject(message.timestamp, options); + if (message.accelerometer != null && message.hasOwnProperty("accelerometer")) + object.accelerometer = $root.vec3.toObject(message.accelerometer, options); + if (message.gyroscope != null && message.hasOwnProperty("gyroscope")) + object.gyroscope = $root.vec3.toObject(message.gyroscope, options); + if (message.world != null && message.hasOwnProperty("world")) + object.world = $root.mat44.toObject(message.world, options); + if (message.fsr && message.fsr.length) { + object.fsr = []; + for (var j = 0; j < message.fsr.length; ++j) + object.fsr[j] = $root.message.input.Sensors.FSR.toObject(message.fsr[j], options); + } + if (message.servo && message.servo.length) { + object.servo = []; + for (var j = 0; j < message.servo.length; ++j) + object.servo[j] = $root.message.input.Sensors.Servo.toObject(message.servo[j], options); + } + if (message.button && message.button.length) { + object.button = []; + for (var j = 0; j < message.button.length; ++j) + object.button[j] = $root.message.input.Sensors.Button.toObject(message.button[j], options); + } + if (message.led && message.led.length) { + object.led = []; + for (var j = 0; j < message.led.length; ++j) + object.led[j] = $root.message.input.Sensors.LED.toObject(message.led[j], options); + } + if (message.voltage != null && message.hasOwnProperty("voltage")) + object.voltage = message.voltage; + if (message.battery != null && message.hasOwnProperty("battery")) + object.battery = message.battery; + if (message.centreOfPressure != null && message.hasOwnProperty("centreOfPressure")) + object.centreOfPressure = $root.vec3.toObject(message.centreOfPressure, options); + if (message.robotToIMU != null && message.hasOwnProperty("robotToIMU")) + object.robotToIMU = $root.mat22.toObject(message.robotToIMU, options); + if (message.leftFootDown != null && message.hasOwnProperty("leftFootDown")) + object.leftFootDown = message.leftFootDown; + if (message.rightFootDown != null && message.hasOwnProperty("rightFootDown")) + object.rightFootDown = message.rightFootDown; + var keys2; + if (message.forwardKinematics && (keys2 = Object.keys(message.forwardKinematics)).length) { + object.forwardKinematics = {}; + for (var j = 0; j < keys2.length; ++j) + object.forwardKinematics[keys2[j]] = $root.mat44.toObject(message.forwardKinematics[keys2[j]], options); + } + if (message.bodyCentreHeight != null && message.hasOwnProperty("bodyCentreHeight")) + object.bodyCentreHeight = message.bodyCentreHeight; + if (message.centreOfMass != null && message.hasOwnProperty("centreOfMass")) + object.centreOfMass = $root.vec4.toObject(message.centreOfMass, options); + if (message.bodyToGround != null && message.hasOwnProperty("bodyToGround")) + object.bodyToGround = $root.mat44.toObject(message.bodyToGround, options); + if (message.camToGround != null && message.hasOwnProperty("camToGround")) + object.camToGround = $root.mat44.toObject(message.camToGround, options); + return object; + }; + + /** + * Creates a plain object from this Sensors message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Sensors.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this Sensors to JSON. + * @returns {Object.} JSON object + */ + Sensors.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + Sensors.Servo = (function() { + + /** + * Properties of a Servo. + * @typedef message.input.Sensors.Servo$Properties + * @type {Object} + * @property {number} [errorFlags] Servo errorFlags. + * @property {number} [id] Servo id. + * @property {boolean} [enabled] Servo enabled. + * @property {number} [pGain] Servo pGain. + * @property {number} [iGain] Servo iGain. + * @property {number} [dGain] Servo dGain. + * @property {number} [goalPosition] Servo goalPosition. + * @property {number} [goalVelocity] Servo goalVelocity. + * @property {number} [presentPosition] Servo presentPosition. + * @property {number} [presentVelocity] Servo presentVelocity. + * @property {number} [load] Servo load. + * @property {number} [voltage] Servo voltage. + * @property {number} [temperature] Servo temperature. + */ + + /** + * Constructs a new Servo. + * @exports message.input.Sensors.Servo + * @constructor + * @param {message.input.Sensors.Servo$Properties=} [properties] Properties to set + */ + function Servo(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Servo errorFlags. + * @type {number} + */ + Servo.prototype.errorFlags = 0; + + /** + * Servo id. + * @type {number} + */ + Servo.prototype.id = 0; + + /** + * Servo enabled. + * @type {boolean} + */ + Servo.prototype.enabled = false; + + /** + * Servo pGain. + * @type {number} + */ + Servo.prototype.pGain = 0; + + /** + * Servo iGain. + * @type {number} + */ + Servo.prototype.iGain = 0; + + /** + * Servo dGain. + * @type {number} + */ + Servo.prototype.dGain = 0; + + /** + * Servo goalPosition. + * @type {number} + */ + Servo.prototype.goalPosition = 0; + + /** + * Servo goalVelocity. + * @type {number} + */ + Servo.prototype.goalVelocity = 0; + + /** + * Servo presentPosition. + * @type {number} + */ + Servo.prototype.presentPosition = 0; + + /** + * Servo presentVelocity. + * @type {number} + */ + Servo.prototype.presentVelocity = 0; + + /** + * Servo load. + * @type {number} + */ + Servo.prototype.load = 0; + + /** + * Servo voltage. + * @type {number} + */ + Servo.prototype.voltage = 0; + + /** + * Servo temperature. + * @type {number} + */ + Servo.prototype.temperature = 0; + + /** + * Creates a new Servo instance using the specified properties. + * @param {message.input.Sensors.Servo$Properties=} [properties] Properties to set + * @returns {message.input.Sensors.Servo} Servo instance + */ + Servo.create = function create(properties) { + return new Servo(properties); + }; + + /** + * Encodes the specified Servo message. Does not implicitly {@link message.input.Sensors.Servo.verify|verify} messages. + * @param {message.input.Sensors.Servo$Properties} message Servo message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Servo.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.errorFlags != null && message.hasOwnProperty("errorFlags")) + writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.errorFlags); + if (message.id != null && message.hasOwnProperty("id")) + writer.uint32(/* id 2, wireType 0 =*/16).uint32(message.id); + if (message.enabled != null && message.hasOwnProperty("enabled")) + writer.uint32(/* id 3, wireType 0 =*/24).bool(message.enabled); + if (message.pGain != null && message.hasOwnProperty("pGain")) + writer.uint32(/* id 4, wireType 5 =*/37).float(message.pGain); + if (message.iGain != null && message.hasOwnProperty("iGain")) + writer.uint32(/* id 5, wireType 5 =*/45).float(message.iGain); + if (message.dGain != null && message.hasOwnProperty("dGain")) + writer.uint32(/* id 6, wireType 5 =*/53).float(message.dGain); + if (message.goalPosition != null && message.hasOwnProperty("goalPosition")) + writer.uint32(/* id 7, wireType 5 =*/61).float(message.goalPosition); + if (message.goalVelocity != null && message.hasOwnProperty("goalVelocity")) + writer.uint32(/* id 8, wireType 5 =*/69).float(message.goalVelocity); + if (message.presentPosition != null && message.hasOwnProperty("presentPosition")) + writer.uint32(/* id 9, wireType 5 =*/77).float(message.presentPosition); + if (message.presentVelocity != null && message.hasOwnProperty("presentVelocity")) + writer.uint32(/* id 10, wireType 5 =*/85).float(message.presentVelocity); + if (message.load != null && message.hasOwnProperty("load")) + writer.uint32(/* id 11, wireType 5 =*/93).float(message.load); + if (message.voltage != null && message.hasOwnProperty("voltage")) + writer.uint32(/* id 12, wireType 5 =*/101).float(message.voltage); + if (message.temperature != null && message.hasOwnProperty("temperature")) + writer.uint32(/* id 13, wireType 5 =*/109).float(message.temperature); + return writer; + }; + + /** + * Encodes the specified Servo message, length delimited. Does not implicitly {@link message.input.Sensors.Servo.verify|verify} messages. + * @param {message.input.Sensors.Servo$Properties} message Servo message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Servo.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a Servo message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.input.Sensors.Servo} Servo + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Servo.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.input.Sensors.Servo(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.errorFlags = reader.uint32(); + break; + case 2: + message.id = reader.uint32(); + break; + case 3: + message.enabled = reader.bool(); + break; + case 4: + message.pGain = reader.float(); + break; + case 5: + message.iGain = reader.float(); + break; + case 6: + message.dGain = reader.float(); + break; + case 7: + message.goalPosition = reader.float(); + break; + case 8: + message.goalVelocity = reader.float(); + break; + case 9: + message.presentPosition = reader.float(); + break; + case 10: + message.presentVelocity = reader.float(); + break; + case 11: + message.load = reader.float(); + break; + case 12: + message.voltage = reader.float(); + break; + case 13: + message.temperature = reader.float(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a Servo message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.input.Sensors.Servo} Servo + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Servo.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a Servo message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + Servo.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.errorFlags != null && message.hasOwnProperty("errorFlags")) + if (!$util.isInteger(message.errorFlags)) + return "errorFlags: integer expected"; + if (message.id != null && message.hasOwnProperty("id")) + if (!$util.isInteger(message.id)) + return "id: integer expected"; + if (message.enabled != null && message.hasOwnProperty("enabled")) + if (typeof message.enabled !== "boolean") + return "enabled: boolean expected"; + if (message.pGain != null && message.hasOwnProperty("pGain")) + if (typeof message.pGain !== "number") + return "pGain: number expected"; + if (message.iGain != null && message.hasOwnProperty("iGain")) + if (typeof message.iGain !== "number") + return "iGain: number expected"; + if (message.dGain != null && message.hasOwnProperty("dGain")) + if (typeof message.dGain !== "number") + return "dGain: number expected"; + if (message.goalPosition != null && message.hasOwnProperty("goalPosition")) + if (typeof message.goalPosition !== "number") + return "goalPosition: number expected"; + if (message.goalVelocity != null && message.hasOwnProperty("goalVelocity")) + if (typeof message.goalVelocity !== "number") + return "goalVelocity: number expected"; + if (message.presentPosition != null && message.hasOwnProperty("presentPosition")) + if (typeof message.presentPosition !== "number") + return "presentPosition: number expected"; + if (message.presentVelocity != null && message.hasOwnProperty("presentVelocity")) + if (typeof message.presentVelocity !== "number") + return "presentVelocity: number expected"; + if (message.load != null && message.hasOwnProperty("load")) + if (typeof message.load !== "number") + return "load: number expected"; + if (message.voltage != null && message.hasOwnProperty("voltage")) + if (typeof message.voltage !== "number") + return "voltage: number expected"; + if (message.temperature != null && message.hasOwnProperty("temperature")) + if (typeof message.temperature !== "number") + return "temperature: number expected"; + return null; + }; + + /** + * Creates a Servo message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.input.Sensors.Servo} Servo + */ + Servo.fromObject = function fromObject(object) { + if (object instanceof $root.message.input.Sensors.Servo) + return object; + var message = new $root.message.input.Sensors.Servo(); + if (object.errorFlags != null) + message.errorFlags = object.errorFlags >>> 0; + if (object.id != null) + message.id = object.id >>> 0; + if (object.enabled != null) + message.enabled = Boolean(object.enabled); + if (object.pGain != null) + message.pGain = Number(object.pGain); + if (object.iGain != null) + message.iGain = Number(object.iGain); + if (object.dGain != null) + message.dGain = Number(object.dGain); + if (object.goalPosition != null) + message.goalPosition = Number(object.goalPosition); + if (object.goalVelocity != null) + message.goalVelocity = Number(object.goalVelocity); + if (object.presentPosition != null) + message.presentPosition = Number(object.presentPosition); + if (object.presentVelocity != null) + message.presentVelocity = Number(object.presentVelocity); + if (object.load != null) + message.load = Number(object.load); + if (object.voltage != null) + message.voltage = Number(object.voltage); + if (object.temperature != null) + message.temperature = Number(object.temperature); + return message; + }; + + /** + * Creates a Servo message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.input.Sensors.Servo.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.input.Sensors.Servo} Servo + */ + Servo.from = Servo.fromObject; + + /** + * Creates a plain object from a Servo message. Also converts values to other types if specified. + * @param {message.input.Sensors.Servo} message Servo + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Servo.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.errorFlags = 0; + object.id = 0; + object.enabled = false; + object.pGain = 0; + object.iGain = 0; + object.dGain = 0; + object.goalPosition = 0; + object.goalVelocity = 0; + object.presentPosition = 0; + object.presentVelocity = 0; + object.load = 0; + object.voltage = 0; + object.temperature = 0; + } + if (message.errorFlags != null && message.hasOwnProperty("errorFlags")) + object.errorFlags = message.errorFlags; + if (message.id != null && message.hasOwnProperty("id")) + object.id = message.id; + if (message.enabled != null && message.hasOwnProperty("enabled")) + object.enabled = message.enabled; + if (message.pGain != null && message.hasOwnProperty("pGain")) + object.pGain = message.pGain; + if (message.iGain != null && message.hasOwnProperty("iGain")) + object.iGain = message.iGain; + if (message.dGain != null && message.hasOwnProperty("dGain")) + object.dGain = message.dGain; + if (message.goalPosition != null && message.hasOwnProperty("goalPosition")) + object.goalPosition = message.goalPosition; + if (message.goalVelocity != null && message.hasOwnProperty("goalVelocity")) + object.goalVelocity = message.goalVelocity; + if (message.presentPosition != null && message.hasOwnProperty("presentPosition")) + object.presentPosition = message.presentPosition; + if (message.presentVelocity != null && message.hasOwnProperty("presentVelocity")) + object.presentVelocity = message.presentVelocity; + if (message.load != null && message.hasOwnProperty("load")) + object.load = message.load; + if (message.voltage != null && message.hasOwnProperty("voltage")) + object.voltage = message.voltage; + if (message.temperature != null && message.hasOwnProperty("temperature")) + object.temperature = message.temperature; + return object; + }; + + /** + * Creates a plain object from this Servo message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Servo.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this Servo to JSON. + * @returns {Object.} JSON object + */ + Servo.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return Servo; + })(); + + Sensors.Button = (function() { + + /** + * Properties of a Button. + * @typedef message.input.Sensors.Button$Properties + * @type {Object} + * @property {number} [id] Button id. + * @property {boolean} [value] Button value. + */ + + /** + * Constructs a new Button. + * @exports message.input.Sensors.Button + * @constructor + * @param {message.input.Sensors.Button$Properties=} [properties] Properties to set + */ + function Button(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Button id. + * @type {number} + */ + Button.prototype.id = 0; + + /** + * Button value. + * @type {boolean} + */ + Button.prototype.value = false; + + /** + * Creates a new Button instance using the specified properties. + * @param {message.input.Sensors.Button$Properties=} [properties] Properties to set + * @returns {message.input.Sensors.Button} Button instance + */ + Button.create = function create(properties) { + return new Button(properties); + }; + + /** + * Encodes the specified Button message. Does not implicitly {@link message.input.Sensors.Button.verify|verify} messages. + * @param {message.input.Sensors.Button$Properties} message Button message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Button.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.id != null && message.hasOwnProperty("id")) + writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.id); + if (message.value != null && message.hasOwnProperty("value")) + writer.uint32(/* id 2, wireType 0 =*/16).bool(message.value); + return writer; + }; + + /** + * Encodes the specified Button message, length delimited. Does not implicitly {@link message.input.Sensors.Button.verify|verify} messages. + * @param {message.input.Sensors.Button$Properties} message Button message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Button.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a Button message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.input.Sensors.Button} Button + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Button.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.input.Sensors.Button(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.id = reader.uint32(); + break; + case 2: + message.value = reader.bool(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a Button message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.input.Sensors.Button} Button + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Button.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a Button message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + Button.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.id != null && message.hasOwnProperty("id")) + if (!$util.isInteger(message.id)) + return "id: integer expected"; + if (message.value != null && message.hasOwnProperty("value")) + if (typeof message.value !== "boolean") + return "value: boolean expected"; + return null; + }; + + /** + * Creates a Button message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.input.Sensors.Button} Button + */ + Button.fromObject = function fromObject(object) { + if (object instanceof $root.message.input.Sensors.Button) + return object; + var message = new $root.message.input.Sensors.Button(); + if (object.id != null) + message.id = object.id >>> 0; + if (object.value != null) + message.value = Boolean(object.value); + return message; + }; + + /** + * Creates a Button message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.input.Sensors.Button.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.input.Sensors.Button} Button + */ + Button.from = Button.fromObject; + + /** + * Creates a plain object from a Button message. Also converts values to other types if specified. + * @param {message.input.Sensors.Button} message Button + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Button.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.id = 0; + object.value = false; + } + if (message.id != null && message.hasOwnProperty("id")) + object.id = message.id; + if (message.value != null && message.hasOwnProperty("value")) + object.value = message.value; + return object; + }; + + /** + * Creates a plain object from this Button message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Button.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this Button to JSON. + * @returns {Object.} JSON object + */ + Button.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return Button; + })(); + + Sensors.LED = (function() { + + /** + * Properties of a LED. + * @typedef message.input.Sensors.LED$Properties + * @type {Object} + * @property {number} [id] LED id. + * @property {number} [colour] LED colour. + */ + + /** + * Constructs a new LED. + * @exports message.input.Sensors.LED + * @constructor + * @param {message.input.Sensors.LED$Properties=} [properties] Properties to set + */ + function LED(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * LED id. + * @type {number} + */ + LED.prototype.id = 0; + + /** + * LED colour. + * @type {number} + */ + LED.prototype.colour = 0; + + /** + * Creates a new LED instance using the specified properties. + * @param {message.input.Sensors.LED$Properties=} [properties] Properties to set + * @returns {message.input.Sensors.LED} LED instance + */ + LED.create = function create(properties) { + return new LED(properties); + }; + + /** + * Encodes the specified LED message. Does not implicitly {@link message.input.Sensors.LED.verify|verify} messages. + * @param {message.input.Sensors.LED$Properties} message LED message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + LED.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.id != null && message.hasOwnProperty("id")) + writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.id); + if (message.colour != null && message.hasOwnProperty("colour")) + writer.uint32(/* id 2, wireType 0 =*/16).uint32(message.colour); + return writer; + }; + + /** + * Encodes the specified LED message, length delimited. Does not implicitly {@link message.input.Sensors.LED.verify|verify} messages. + * @param {message.input.Sensors.LED$Properties} message LED message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + LED.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a LED message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.input.Sensors.LED} LED + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + LED.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.input.Sensors.LED(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.id = reader.uint32(); + break; + case 2: + message.colour = reader.uint32(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a LED message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.input.Sensors.LED} LED + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + LED.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a LED message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + LED.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.id != null && message.hasOwnProperty("id")) + if (!$util.isInteger(message.id)) + return "id: integer expected"; + if (message.colour != null && message.hasOwnProperty("colour")) + if (!$util.isInteger(message.colour)) + return "colour: integer expected"; + return null; + }; + + /** + * Creates a LED message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.input.Sensors.LED} LED + */ + LED.fromObject = function fromObject(object) { + if (object instanceof $root.message.input.Sensors.LED) + return object; + var message = new $root.message.input.Sensors.LED(); + if (object.id != null) + message.id = object.id >>> 0; + if (object.colour != null) + message.colour = object.colour >>> 0; + return message; + }; + + /** + * Creates a LED message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.input.Sensors.LED.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.input.Sensors.LED} LED + */ + LED.from = LED.fromObject; + + /** + * Creates a plain object from a LED message. Also converts values to other types if specified. + * @param {message.input.Sensors.LED} message LED + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + LED.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.id = 0; + object.colour = 0; + } + if (message.id != null && message.hasOwnProperty("id")) + object.id = message.id; + if (message.colour != null && message.hasOwnProperty("colour")) + object.colour = message.colour; + return object; + }; + + /** + * Creates a plain object from this LED message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + LED.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this LED to JSON. + * @returns {Object.} JSON object + */ + LED.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return LED; + })(); + + Sensors.FSR = (function() { + + /** + * Properties of a FSR. + * @typedef message.input.Sensors.FSR$Properties + * @type {Object} + * @property {Array.} [value] FSR value. + * @property {vec2$Properties} [centre] FSR centre. + */ + + /** + * Constructs a new FSR. + * @exports message.input.Sensors.FSR + * @constructor + * @param {message.input.Sensors.FSR$Properties=} [properties] Properties to set + */ + function FSR(properties) { + this.value = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * FSR value. + * @type {Array.} + */ + FSR.prototype.value = $util.emptyArray; + + /** + * FSR centre. + * @type {(vec2$Properties|null)} + */ + FSR.prototype.centre = null; + + /** + * Creates a new FSR instance using the specified properties. + * @param {message.input.Sensors.FSR$Properties=} [properties] Properties to set + * @returns {message.input.Sensors.FSR} FSR instance + */ + FSR.create = function create(properties) { + return new FSR(properties); + }; + + /** + * Encodes the specified FSR message. Does not implicitly {@link message.input.Sensors.FSR.verify|verify} messages. + * @param {message.input.Sensors.FSR$Properties} message FSR message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + FSR.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.value != null && message.value.length) { + writer.uint32(/* id 1, wireType 2 =*/10).fork(); + for (var i = 0; i < message.value.length; ++i) + writer.float(message.value[i]); + writer.ldelim(); + } + if (message.centre != null && message.hasOwnProperty("centre")) + $root.vec2.encode(message.centre, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified FSR message, length delimited. Does not implicitly {@link message.input.Sensors.FSR.verify|verify} messages. + * @param {message.input.Sensors.FSR$Properties} message FSR message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + FSR.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a FSR message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.input.Sensors.FSR} FSR + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + FSR.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.input.Sensors.FSR(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (!(message.value && message.value.length)) + message.value = []; + if ((tag & 7) === 2) { + var end2 = reader.uint32() + reader.pos; + while (reader.pos < end2) + message.value.push(reader.float()); + } else + message.value.push(reader.float()); + break; + case 2: + message.centre = $root.vec2.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a FSR message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.input.Sensors.FSR} FSR + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + FSR.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a FSR message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + FSR.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.value != null && message.hasOwnProperty("value")) { + if (!Array.isArray(message.value)) + return "value: array expected"; + for (var i = 0; i < message.value.length; ++i) + if (typeof message.value[i] !== "number") + return "value: number[] expected"; + } + if (message.centre != null && message.hasOwnProperty("centre")) { + var error = $root.vec2.verify(message.centre); + if (error) + return "centre." + error; + } + return null; + }; + + /** + * Creates a FSR message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.input.Sensors.FSR} FSR + */ + FSR.fromObject = function fromObject(object) { + if (object instanceof $root.message.input.Sensors.FSR) + return object; + var message = new $root.message.input.Sensors.FSR(); + if (object.value) { + if (!Array.isArray(object.value)) + throw TypeError(".message.input.Sensors.FSR.value: array expected"); + message.value = []; + for (var i = 0; i < object.value.length; ++i) + message.value[i] = Number(object.value[i]); + } + if (object.centre != null) { + if (typeof object.centre !== "object") + throw TypeError(".message.input.Sensors.FSR.centre: object expected"); + message.centre = $root.vec2.fromObject(object.centre); + } + return message; + }; + + /** + * Creates a FSR message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.input.Sensors.FSR.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.input.Sensors.FSR} FSR + */ + FSR.from = FSR.fromObject; + + /** + * Creates a plain object from a FSR message. Also converts values to other types if specified. + * @param {message.input.Sensors.FSR} message FSR + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + FSR.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.value = []; + if (options.defaults) + object.centre = null; + if (message.value && message.value.length) { + object.value = []; + for (var j = 0; j < message.value.length; ++j) + object.value[j] = message.value[j]; + } + if (message.centre != null && message.hasOwnProperty("centre")) + object.centre = $root.vec2.toObject(message.centre, options); + return object; + }; + + /** + * Creates a plain object from this FSR message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + FSR.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this FSR to JSON. + * @returns {Object.} JSON object + */ + FSR.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return FSR; + })(); + + return Sensors; + })(); + + input.SoundChunkSettings = (function() { + + /** + * Properties of a SoundChunkSettings. + * @typedef message.input.SoundChunkSettings$Properties + * @type {Object} + * @property {number|Long} [sampleRate] The number of samples that are taken each second for the sound chunks + * @property {number|Long} [channels] The number of channels that the sound chunks will have + * @property {number|Long} [chunkSize] The number of frames (a frame is a single sample for all channels) that each emitted chunk will have + */ + + /** + * Constructs a new SoundChunkSettings. + * @classdesc TODO document + * + * @author Trent Houliston + * @exports message.input.SoundChunkSettings + * @constructor + * @param {message.input.SoundChunkSettings$Properties=} [properties] Properties to set + */ + function SoundChunkSettings(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * The number of samples that are taken each second for the sound chunks + * @type {number|Long} + */ + SoundChunkSettings.prototype.sampleRate = $util.Long ? $util.Long.fromBits(0,0,true) : 0; + + /** + * The number of channels that the sound chunks will have + * @type {number|Long} + */ + SoundChunkSettings.prototype.channels = $util.Long ? $util.Long.fromBits(0,0,true) : 0; + + /** + * The number of frames (a frame is a single sample for all channels) that each emitted chunk will have + * @type {number|Long} + */ + SoundChunkSettings.prototype.chunkSize = $util.Long ? $util.Long.fromBits(0,0,true) : 0; + + /** + * Creates a new SoundChunkSettings instance using the specified properties. + * @param {message.input.SoundChunkSettings$Properties=} [properties] Properties to set + * @returns {message.input.SoundChunkSettings} SoundChunkSettings instance + */ + SoundChunkSettings.create = function create(properties) { + return new SoundChunkSettings(properties); + }; + + /** + * Encodes the specified SoundChunkSettings message. Does not implicitly {@link message.input.SoundChunkSettings.verify|verify} messages. + * @param {message.input.SoundChunkSettings$Properties} message SoundChunkSettings message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + SoundChunkSettings.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.sampleRate != null && message.hasOwnProperty("sampleRate")) + writer.uint32(/* id 1, wireType 0 =*/8).uint64(message.sampleRate); + if (message.channels != null && message.hasOwnProperty("channels")) + writer.uint32(/* id 2, wireType 0 =*/16).uint64(message.channels); + if (message.chunkSize != null && message.hasOwnProperty("chunkSize")) + writer.uint32(/* id 3, wireType 0 =*/24).uint64(message.chunkSize); + return writer; + }; + + /** + * Encodes the specified SoundChunkSettings message, length delimited. Does not implicitly {@link message.input.SoundChunkSettings.verify|verify} messages. + * @param {message.input.SoundChunkSettings$Properties} message SoundChunkSettings message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + SoundChunkSettings.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a SoundChunkSettings message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.input.SoundChunkSettings} SoundChunkSettings + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + SoundChunkSettings.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.input.SoundChunkSettings(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.sampleRate = reader.uint64(); + break; + case 2: + message.channels = reader.uint64(); + break; + case 3: + message.chunkSize = reader.uint64(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a SoundChunkSettings message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.input.SoundChunkSettings} SoundChunkSettings + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + SoundChunkSettings.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a SoundChunkSettings message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + SoundChunkSettings.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.sampleRate != null && message.hasOwnProperty("sampleRate")) + if (!$util.isInteger(message.sampleRate) && !(message.sampleRate && $util.isInteger(message.sampleRate.low) && $util.isInteger(message.sampleRate.high))) + return "sampleRate: integer|Long expected"; + if (message.channels != null && message.hasOwnProperty("channels")) + if (!$util.isInteger(message.channels) && !(message.channels && $util.isInteger(message.channels.low) && $util.isInteger(message.channels.high))) + return "channels: integer|Long expected"; + if (message.chunkSize != null && message.hasOwnProperty("chunkSize")) + if (!$util.isInteger(message.chunkSize) && !(message.chunkSize && $util.isInteger(message.chunkSize.low) && $util.isInteger(message.chunkSize.high))) + return "chunkSize: integer|Long expected"; + return null; + }; + + /** + * Creates a SoundChunkSettings message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.input.SoundChunkSettings} SoundChunkSettings + */ + SoundChunkSettings.fromObject = function fromObject(object) { + if (object instanceof $root.message.input.SoundChunkSettings) + return object; + var message = new $root.message.input.SoundChunkSettings(); + if (object.sampleRate != null) + if ($util.Long) + (message.sampleRate = $util.Long.fromValue(object.sampleRate)).unsigned = true; + else if (typeof object.sampleRate === "string") + message.sampleRate = parseInt(object.sampleRate, 10); + else if (typeof object.sampleRate === "number") + message.sampleRate = object.sampleRate; + else if (typeof object.sampleRate === "object") + message.sampleRate = new $util.LongBits(object.sampleRate.low >>> 0, object.sampleRate.high >>> 0).toNumber(true); + if (object.channels != null) + if ($util.Long) + (message.channels = $util.Long.fromValue(object.channels)).unsigned = true; + else if (typeof object.channels === "string") + message.channels = parseInt(object.channels, 10); + else if (typeof object.channels === "number") + message.channels = object.channels; + else if (typeof object.channels === "object") + message.channels = new $util.LongBits(object.channels.low >>> 0, object.channels.high >>> 0).toNumber(true); + if (object.chunkSize != null) + if ($util.Long) + (message.chunkSize = $util.Long.fromValue(object.chunkSize)).unsigned = true; + else if (typeof object.chunkSize === "string") + message.chunkSize = parseInt(object.chunkSize, 10); + else if (typeof object.chunkSize === "number") + message.chunkSize = object.chunkSize; + else if (typeof object.chunkSize === "object") + message.chunkSize = new $util.LongBits(object.chunkSize.low >>> 0, object.chunkSize.high >>> 0).toNumber(true); + return message; + }; + + /** + * Creates a SoundChunkSettings message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.input.SoundChunkSettings.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.input.SoundChunkSettings} SoundChunkSettings + */ + SoundChunkSettings.from = SoundChunkSettings.fromObject; + + /** + * Creates a plain object from a SoundChunkSettings message. Also converts values to other types if specified. + * @param {message.input.SoundChunkSettings} message SoundChunkSettings + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + SoundChunkSettings.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + if ($util.Long) { + var long = new $util.Long(0, 0, true); + object.sampleRate = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; + } else + object.sampleRate = options.longs === String ? "0" : 0; + if ($util.Long) { + var long = new $util.Long(0, 0, true); + object.channels = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; + } else + object.channels = options.longs === String ? "0" : 0; + if ($util.Long) { + var long = new $util.Long(0, 0, true); + object.chunkSize = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; + } else + object.chunkSize = options.longs === String ? "0" : 0; + } + if (message.sampleRate != null && message.hasOwnProperty("sampleRate")) + if (typeof message.sampleRate === "number") + object.sampleRate = options.longs === String ? String(message.sampleRate) : message.sampleRate; + else + object.sampleRate = options.longs === String ? $util.Long.prototype.toString.call(message.sampleRate) : options.longs === Number ? new $util.LongBits(message.sampleRate.low >>> 0, message.sampleRate.high >>> 0).toNumber(true) : message.sampleRate; + if (message.channels != null && message.hasOwnProperty("channels")) + if (typeof message.channels === "number") + object.channels = options.longs === String ? String(message.channels) : message.channels; + else + object.channels = options.longs === String ? $util.Long.prototype.toString.call(message.channels) : options.longs === Number ? new $util.LongBits(message.channels.low >>> 0, message.channels.high >>> 0).toNumber(true) : message.channels; + if (message.chunkSize != null && message.hasOwnProperty("chunkSize")) + if (typeof message.chunkSize === "number") + object.chunkSize = options.longs === String ? String(message.chunkSize) : message.chunkSize; + else + object.chunkSize = options.longs === String ? $util.Long.prototype.toString.call(message.chunkSize) : options.longs === Number ? new $util.LongBits(message.chunkSize.low >>> 0, message.chunkSize.high >>> 0).toNumber(true) : message.chunkSize; + return object; + }; + + /** + * Creates a plain object from this SoundChunkSettings message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + SoundChunkSettings.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this SoundChunkSettings to JSON. + * @returns {Object.} JSON object + */ + SoundChunkSettings.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return SoundChunkSettings; + })(); + + input.SoundFileStart = (function() { + + /** + * Properties of a SoundFileStart. + * @typedef message.input.SoundFileStart$Properties + * @type {Object} + * @property {string} [fileName] SoundFileStart fileName. + * @property {google.protobuf.Timestamp$Properties} [time] SoundFileStart time. + */ + + /** + * Constructs a new SoundFileStart. + * @exports message.input.SoundFileStart + * @constructor + * @param {message.input.SoundFileStart$Properties=} [properties] Properties to set + */ + function SoundFileStart(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * SoundFileStart fileName. + * @type {string} + */ + SoundFileStart.prototype.fileName = ""; + + /** + * SoundFileStart time. + * @type {(google.protobuf.Timestamp$Properties|null)} + */ + SoundFileStart.prototype.time = null; + + /** + * Creates a new SoundFileStart instance using the specified properties. + * @param {message.input.SoundFileStart$Properties=} [properties] Properties to set + * @returns {message.input.SoundFileStart} SoundFileStart instance + */ + SoundFileStart.create = function create(properties) { + return new SoundFileStart(properties); + }; + + /** + * Encodes the specified SoundFileStart message. Does not implicitly {@link message.input.SoundFileStart.verify|verify} messages. + * @param {message.input.SoundFileStart$Properties} message SoundFileStart message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + SoundFileStart.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.fileName != null && message.hasOwnProperty("fileName")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.fileName); + if (message.time != null && message.hasOwnProperty("time")) + $root.google.protobuf.Timestamp.encode(message.time, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified SoundFileStart message, length delimited. Does not implicitly {@link message.input.SoundFileStart.verify|verify} messages. + * @param {message.input.SoundFileStart$Properties} message SoundFileStart message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + SoundFileStart.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a SoundFileStart message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.input.SoundFileStart} SoundFileStart + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + SoundFileStart.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.input.SoundFileStart(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.fileName = reader.string(); + break; + case 2: + message.time = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a SoundFileStart message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.input.SoundFileStart} SoundFileStart + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + SoundFileStart.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a SoundFileStart message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + SoundFileStart.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.fileName != null && message.hasOwnProperty("fileName")) + if (!$util.isString(message.fileName)) + return "fileName: string expected"; + if (message.time != null && message.hasOwnProperty("time")) { + var error = $root.google.protobuf.Timestamp.verify(message.time); + if (error) + return "time." + error; + } + return null; + }; + + /** + * Creates a SoundFileStart message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.input.SoundFileStart} SoundFileStart + */ + SoundFileStart.fromObject = function fromObject(object) { + if (object instanceof $root.message.input.SoundFileStart) + return object; + var message = new $root.message.input.SoundFileStart(); + if (object.fileName != null) + message.fileName = String(object.fileName); + if (object.time != null) { + if (typeof object.time !== "object") + throw TypeError(".message.input.SoundFileStart.time: object expected"); + message.time = $root.google.protobuf.Timestamp.fromObject(object.time); + } + return message; + }; + + /** + * Creates a SoundFileStart message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.input.SoundFileStart.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.input.SoundFileStart} SoundFileStart + */ + SoundFileStart.from = SoundFileStart.fromObject; + + /** + * Creates a plain object from a SoundFileStart message. Also converts values to other types if specified. + * @param {message.input.SoundFileStart} message SoundFileStart + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + SoundFileStart.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.fileName = ""; + object.time = null; + } + if (message.fileName != null && message.hasOwnProperty("fileName")) + object.fileName = message.fileName; + if (message.time != null && message.hasOwnProperty("time")) + object.time = $root.google.protobuf.Timestamp.toObject(message.time, options); + return object; + }; + + /** + * Creates a plain object from this SoundFileStart message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + SoundFileStart.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this SoundFileStart to JSON. + * @returns {Object.} JSON object + */ + SoundFileStart.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return SoundFileStart; + })(); + + input.SoundChunk = (function() { + + /** + * Properties of a SoundChunk. + * @typedef message.input.SoundChunk$Properties + * @type {Object} + * @property {google.protobuf.Timestamp$Properties} [endTime] SoundChunk endTime. + * @property {Array.} [data] SoundChunk data. + */ + + /** + * Constructs a new SoundChunk. + * @classdesc TODO document + * + * @author Jake Woods + * @exports message.input.SoundChunk + * @constructor + * @param {message.input.SoundChunk$Properties=} [properties] Properties to set + */ + function SoundChunk(properties) { + this.data = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * SoundChunk endTime. + * @type {(google.protobuf.Timestamp$Properties|null)} + */ + SoundChunk.prototype.endTime = null; + + /** + * SoundChunk data. + * @type {Array.} + */ + SoundChunk.prototype.data = $util.emptyArray; + + /** + * Creates a new SoundChunk instance using the specified properties. + * @param {message.input.SoundChunk$Properties=} [properties] Properties to set + * @returns {message.input.SoundChunk} SoundChunk instance + */ + SoundChunk.create = function create(properties) { + return new SoundChunk(properties); + }; + + /** + * Encodes the specified SoundChunk message. Does not implicitly {@link message.input.SoundChunk.verify|verify} messages. + * @param {message.input.SoundChunk$Properties} message SoundChunk message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + SoundChunk.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.endTime != null && message.hasOwnProperty("endTime")) + $root.google.protobuf.Timestamp.encode(message.endTime, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.data != null && message.data.length) { + writer.uint32(/* id 2, wireType 2 =*/18).fork(); + for (var i = 0; i < message.data.length; ++i) + writer.int32(message.data[i]); + writer.ldelim(); + } + return writer; + }; + + /** + * Encodes the specified SoundChunk message, length delimited. Does not implicitly {@link message.input.SoundChunk.verify|verify} messages. + * @param {message.input.SoundChunk$Properties} message SoundChunk message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + SoundChunk.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a SoundChunk message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.input.SoundChunk} SoundChunk + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + SoundChunk.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.input.SoundChunk(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.endTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); + break; + case 2: + if (!(message.data && message.data.length)) + message.data = []; + if ((tag & 7) === 2) { + var end2 = reader.uint32() + reader.pos; + while (reader.pos < end2) + message.data.push(reader.int32()); + } else + message.data.push(reader.int32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a SoundChunk message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.input.SoundChunk} SoundChunk + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + SoundChunk.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a SoundChunk message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + SoundChunk.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.endTime != null && message.hasOwnProperty("endTime")) { + var error = $root.google.protobuf.Timestamp.verify(message.endTime); + if (error) + return "endTime." + error; + } + if (message.data != null && message.hasOwnProperty("data")) { + if (!Array.isArray(message.data)) + return "data: array expected"; + for (var i = 0; i < message.data.length; ++i) + if (!$util.isInteger(message.data[i])) + return "data: integer[] expected"; + } + return null; + }; + + /** + * Creates a SoundChunk message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.input.SoundChunk} SoundChunk + */ + SoundChunk.fromObject = function fromObject(object) { + if (object instanceof $root.message.input.SoundChunk) + return object; + var message = new $root.message.input.SoundChunk(); + if (object.endTime != null) { + if (typeof object.endTime !== "object") + throw TypeError(".message.input.SoundChunk.endTime: object expected"); + message.endTime = $root.google.protobuf.Timestamp.fromObject(object.endTime); + } + if (object.data) { + if (!Array.isArray(object.data)) + throw TypeError(".message.input.SoundChunk.data: array expected"); + message.data = []; + for (var i = 0; i < object.data.length; ++i) + message.data[i] = object.data[i] | 0; + } + return message; + }; + + /** + * Creates a SoundChunk message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.input.SoundChunk.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.input.SoundChunk} SoundChunk + */ + SoundChunk.from = SoundChunk.fromObject; + + /** + * Creates a plain object from a SoundChunk message. Also converts values to other types if specified. + * @param {message.input.SoundChunk} message SoundChunk + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + SoundChunk.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.data = []; + if (options.defaults) + object.endTime = null; + if (message.endTime != null && message.hasOwnProperty("endTime")) + object.endTime = $root.google.protobuf.Timestamp.toObject(message.endTime, options); + if (message.data && message.data.length) { + object.data = []; + for (var j = 0; j < message.data.length; ++j) + object.data[j] = message.data[j]; + } + return object; + }; + + /** + * Creates a plain object from this SoundChunk message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + SoundChunk.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this SoundChunk to JSON. + * @returns {Object.} JSON object + */ + SoundChunk.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return SoundChunk; + })(); + + return input; + })(); + + message.localisation = (function() { + + /** + * Namespace localisation. + * @exports message.localisation + * @namespace + */ + var localisation = {}; + + localisation.FieldObject = (function() { + + /** + * Properties of a FieldObject. + * @typedef message.localisation.FieldObject$Properties + * @type {Object} + * @property {string} [name] FieldObject name. + * @property {Array.} [models] FieldObject models. + */ + + /** + * Constructs a new FieldObject. + * @exports message.localisation.FieldObject + * @constructor + * @param {message.localisation.FieldObject$Properties=} [properties] Properties to set + */ + function FieldObject(properties) { + this.models = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * FieldObject name. + * @type {string} + */ + FieldObject.prototype.name = ""; + + /** + * FieldObject models. + * @type {Array.} + */ + FieldObject.prototype.models = $util.emptyArray; + + /** + * Creates a new FieldObject instance using the specified properties. + * @param {message.localisation.FieldObject$Properties=} [properties] Properties to set + * @returns {message.localisation.FieldObject} FieldObject instance + */ + FieldObject.create = function create(properties) { + return new FieldObject(properties); + }; + + /** + * Encodes the specified FieldObject message. Does not implicitly {@link message.localisation.FieldObject.verify|verify} messages. + * @param {message.localisation.FieldObject$Properties} message FieldObject message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + FieldObject.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.name != null && message.hasOwnProperty("name")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.name); + if (message.models != null && message.models.length) + for (var i = 0; i < message.models.length; ++i) + $root.message.localisation.Model.encode(message.models[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified FieldObject message, length delimited. Does not implicitly {@link message.localisation.FieldObject.verify|verify} messages. + * @param {message.localisation.FieldObject$Properties} message FieldObject message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + FieldObject.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a FieldObject message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.localisation.FieldObject} FieldObject + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + FieldObject.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.localisation.FieldObject(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.name = reader.string(); + break; + case 2: + if (!(message.models && message.models.length)) + message.models = []; + message.models.push($root.message.localisation.Model.decode(reader, reader.uint32())); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a FieldObject message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.localisation.FieldObject} FieldObject + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + FieldObject.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a FieldObject message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + FieldObject.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.name != null && message.hasOwnProperty("name")) + if (!$util.isString(message.name)) + return "name: string expected"; + if (message.models != null && message.hasOwnProperty("models")) { + if (!Array.isArray(message.models)) + return "models: array expected"; + for (var i = 0; i < message.models.length; ++i) { + var error = $root.message.localisation.Model.verify(message.models[i]); + if (error) + return "models." + error; + } + } + return null; + }; + + /** + * Creates a FieldObject message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.localisation.FieldObject} FieldObject + */ + FieldObject.fromObject = function fromObject(object) { + if (object instanceof $root.message.localisation.FieldObject) + return object; + var message = new $root.message.localisation.FieldObject(); + if (object.name != null) + message.name = String(object.name); + if (object.models) { + if (!Array.isArray(object.models)) + throw TypeError(".message.localisation.FieldObject.models: array expected"); + message.models = []; + for (var i = 0; i < object.models.length; ++i) { + if (typeof object.models[i] !== "object") + throw TypeError(".message.localisation.FieldObject.models: object expected"); + message.models[i] = $root.message.localisation.Model.fromObject(object.models[i]); + } + } + return message; + }; + + /** + * Creates a FieldObject message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.localisation.FieldObject.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.localisation.FieldObject} FieldObject + */ + FieldObject.from = FieldObject.fromObject; + + /** + * Creates a plain object from a FieldObject message. Also converts values to other types if specified. + * @param {message.localisation.FieldObject} message FieldObject + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + FieldObject.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.models = []; + if (options.defaults) + object.name = ""; + if (message.name != null && message.hasOwnProperty("name")) + object.name = message.name; + if (message.models && message.models.length) { + object.models = []; + for (var j = 0; j < message.models.length; ++j) + object.models[j] = $root.message.localisation.Model.toObject(message.models[j], options); + } + return object; + }; + + /** + * Creates a plain object from this FieldObject message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + FieldObject.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this FieldObject to JSON. + * @returns {Object.} JSON object + */ + FieldObject.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return FieldObject; + })(); + + localisation.LocalisationObject = (function() { + + /** + * Properties of a LocalisationObject. + * @typedef message.localisation.LocalisationObject$Properties + * @type {Object} + * @property {vec2$Properties} [position] LocalisationObject position. + * @property {mat22$Properties} [positionCov] LocalisationObject positionCov. + * @property {google.protobuf.Timestamp$Properties} [lastMeasurementTime] LocalisationObject lastMeasurementTime. + */ + + /** + * Constructs a new LocalisationObject. + * @exports message.localisation.LocalisationObject + * @constructor + * @param {message.localisation.LocalisationObject$Properties=} [properties] Properties to set + */ + function LocalisationObject(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * LocalisationObject position. + * @type {(vec2$Properties|null)} + */ + LocalisationObject.prototype.position = null; + + /** + * LocalisationObject positionCov. + * @type {(mat22$Properties|null)} + */ + LocalisationObject.prototype.positionCov = null; + + /** + * LocalisationObject lastMeasurementTime. + * @type {(google.protobuf.Timestamp$Properties|null)} + */ + LocalisationObject.prototype.lastMeasurementTime = null; + + /** + * Creates a new LocalisationObject instance using the specified properties. + * @param {message.localisation.LocalisationObject$Properties=} [properties] Properties to set + * @returns {message.localisation.LocalisationObject} LocalisationObject instance + */ + LocalisationObject.create = function create(properties) { + return new LocalisationObject(properties); + }; + + /** + * Encodes the specified LocalisationObject message. Does not implicitly {@link message.localisation.LocalisationObject.verify|verify} messages. + * @param {message.localisation.LocalisationObject$Properties} message LocalisationObject message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + LocalisationObject.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.position != null && message.hasOwnProperty("position")) + $root.vec2.encode(message.position, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.positionCov != null && message.hasOwnProperty("positionCov")) + $root.mat22.encode(message.positionCov, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.lastMeasurementTime != null && message.hasOwnProperty("lastMeasurementTime")) + $root.google.protobuf.Timestamp.encode(message.lastMeasurementTime, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified LocalisationObject message, length delimited. Does not implicitly {@link message.localisation.LocalisationObject.verify|verify} messages. + * @param {message.localisation.LocalisationObject$Properties} message LocalisationObject message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + LocalisationObject.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a LocalisationObject message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.localisation.LocalisationObject} LocalisationObject + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + LocalisationObject.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.localisation.LocalisationObject(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.position = $root.vec2.decode(reader, reader.uint32()); + break; + case 2: + message.positionCov = $root.mat22.decode(reader, reader.uint32()); + break; + case 3: + message.lastMeasurementTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a LocalisationObject message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.localisation.LocalisationObject} LocalisationObject + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + LocalisationObject.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a LocalisationObject message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + LocalisationObject.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.position != null && message.hasOwnProperty("position")) { + var error = $root.vec2.verify(message.position); + if (error) + return "position." + error; + } + if (message.positionCov != null && message.hasOwnProperty("positionCov")) { + var error = $root.mat22.verify(message.positionCov); + if (error) + return "positionCov." + error; + } + if (message.lastMeasurementTime != null && message.hasOwnProperty("lastMeasurementTime")) { + var error = $root.google.protobuf.Timestamp.verify(message.lastMeasurementTime); + if (error) + return "lastMeasurementTime." + error; + } + return null; + }; + + /** + * Creates a LocalisationObject message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.localisation.LocalisationObject} LocalisationObject + */ + LocalisationObject.fromObject = function fromObject(object) { + if (object instanceof $root.message.localisation.LocalisationObject) + return object; + var message = new $root.message.localisation.LocalisationObject(); + if (object.position != null) { + if (typeof object.position !== "object") + throw TypeError(".message.localisation.LocalisationObject.position: object expected"); + message.position = $root.vec2.fromObject(object.position); + } + if (object.positionCov != null) { + if (typeof object.positionCov !== "object") + throw TypeError(".message.localisation.LocalisationObject.positionCov: object expected"); + message.positionCov = $root.mat22.fromObject(object.positionCov); + } + if (object.lastMeasurementTime != null) { + if (typeof object.lastMeasurementTime !== "object") + throw TypeError(".message.localisation.LocalisationObject.lastMeasurementTime: object expected"); + message.lastMeasurementTime = $root.google.protobuf.Timestamp.fromObject(object.lastMeasurementTime); + } + return message; + }; + + /** + * Creates a LocalisationObject message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.localisation.LocalisationObject.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.localisation.LocalisationObject} LocalisationObject + */ + LocalisationObject.from = LocalisationObject.fromObject; + + /** + * Creates a plain object from a LocalisationObject message. Also converts values to other types if specified. + * @param {message.localisation.LocalisationObject} message LocalisationObject + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + LocalisationObject.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.position = null; + object.positionCov = null; + object.lastMeasurementTime = null; + } + if (message.position != null && message.hasOwnProperty("position")) + object.position = $root.vec2.toObject(message.position, options); + if (message.positionCov != null && message.hasOwnProperty("positionCov")) + object.positionCov = $root.mat22.toObject(message.positionCov, options); + if (message.lastMeasurementTime != null && message.hasOwnProperty("lastMeasurementTime")) + object.lastMeasurementTime = $root.google.protobuf.Timestamp.toObject(message.lastMeasurementTime, options); + return object; + }; + + /** + * Creates a plain object from this LocalisationObject message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + LocalisationObject.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this LocalisationObject to JSON. + * @returns {Object.} JSON object + */ + LocalisationObject.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return LocalisationObject; + })(); + + localisation.Ball = (function() { + + /** + * Properties of a Ball. + * @typedef message.localisation.Ball$Properties + * @type {Object} + * @property {message.localisation.LocalisationObject$Properties} [locObject] Ball locObject. + * @property {vec2$Properties} [velocity] Ball velocity. + * @property {boolean} [worldSpace] Ball worldSpace. + */ + + /** + * Constructs a new Ball. + * @exports message.localisation.Ball + * @constructor + * @param {message.localisation.Ball$Properties=} [properties] Properties to set + */ + function Ball(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Ball locObject. + * @type {(message.localisation.LocalisationObject$Properties|null)} + */ + Ball.prototype.locObject = null; + + /** + * Ball velocity. + * @type {(vec2$Properties|null)} + */ + Ball.prototype.velocity = null; + + /** + * Ball worldSpace. + * @type {boolean} + */ + Ball.prototype.worldSpace = false; + + /** + * Creates a new Ball instance using the specified properties. + * @param {message.localisation.Ball$Properties=} [properties] Properties to set + * @returns {message.localisation.Ball} Ball instance + */ + Ball.create = function create(properties) { + return new Ball(properties); + }; + + /** + * Encodes the specified Ball message. Does not implicitly {@link message.localisation.Ball.verify|verify} messages. + * @param {message.localisation.Ball$Properties} message Ball message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Ball.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.locObject != null && message.hasOwnProperty("locObject")) + $root.message.localisation.LocalisationObject.encode(message.locObject, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.velocity != null && message.hasOwnProperty("velocity")) + $root.vec2.encode(message.velocity, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.worldSpace != null && message.hasOwnProperty("worldSpace")) + writer.uint32(/* id 3, wireType 0 =*/24).bool(message.worldSpace); + return writer; + }; + + /** + * Encodes the specified Ball message, length delimited. Does not implicitly {@link message.localisation.Ball.verify|verify} messages. + * @param {message.localisation.Ball$Properties} message Ball message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Ball.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a Ball message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.localisation.Ball} Ball + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Ball.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.localisation.Ball(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.locObject = $root.message.localisation.LocalisationObject.decode(reader, reader.uint32()); + break; + case 2: + message.velocity = $root.vec2.decode(reader, reader.uint32()); + break; + case 3: + message.worldSpace = reader.bool(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a Ball message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.localisation.Ball} Ball + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Ball.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a Ball message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + Ball.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.locObject != null && message.hasOwnProperty("locObject")) { + var error = $root.message.localisation.LocalisationObject.verify(message.locObject); + if (error) + return "locObject." + error; + } + if (message.velocity != null && message.hasOwnProperty("velocity")) { + var error = $root.vec2.verify(message.velocity); + if (error) + return "velocity." + error; + } + if (message.worldSpace != null && message.hasOwnProperty("worldSpace")) + if (typeof message.worldSpace !== "boolean") + return "worldSpace: boolean expected"; + return null; + }; + + /** + * Creates a Ball message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.localisation.Ball} Ball + */ + Ball.fromObject = function fromObject(object) { + if (object instanceof $root.message.localisation.Ball) + return object; + var message = new $root.message.localisation.Ball(); + if (object.locObject != null) { + if (typeof object.locObject !== "object") + throw TypeError(".message.localisation.Ball.locObject: object expected"); + message.locObject = $root.message.localisation.LocalisationObject.fromObject(object.locObject); + } + if (object.velocity != null) { + if (typeof object.velocity !== "object") + throw TypeError(".message.localisation.Ball.velocity: object expected"); + message.velocity = $root.vec2.fromObject(object.velocity); + } + if (object.worldSpace != null) + message.worldSpace = Boolean(object.worldSpace); + return message; + }; + + /** + * Creates a Ball message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.localisation.Ball.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.localisation.Ball} Ball + */ + Ball.from = Ball.fromObject; + + /** + * Creates a plain object from a Ball message. Also converts values to other types if specified. + * @param {message.localisation.Ball} message Ball + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Ball.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.locObject = null; + object.velocity = null; + object.worldSpace = false; + } + if (message.locObject != null && message.hasOwnProperty("locObject")) + object.locObject = $root.message.localisation.LocalisationObject.toObject(message.locObject, options); + if (message.velocity != null && message.hasOwnProperty("velocity")) + object.velocity = $root.vec2.toObject(message.velocity, options); + if (message.worldSpace != null && message.hasOwnProperty("worldSpace")) + object.worldSpace = message.worldSpace; + return object; + }; + + /** + * Creates a plain object from this Ball message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Ball.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this Ball to JSON. + * @returns {Object.} JSON object + */ + Ball.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return Ball; + })(); + + localisation.Self = (function() { + + /** + * Properties of a Self. + * @typedef message.localisation.Self$Properties + * @type {Object} + * @property {message.localisation.LocalisationObject$Properties} [locObject] Self locObject. + * @property {vec2$Properties} [heading] Self heading. + * @property {vec2$Properties} [velocity] Self velocity. + * @property {mat22$Properties} [robotToWorldRotation] Self robotToWorldRotation. + */ + + /** + * Constructs a new Self. + * @exports message.localisation.Self + * @constructor + * @param {message.localisation.Self$Properties=} [properties] Properties to set + */ + function Self(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Self locObject. + * @type {(message.localisation.LocalisationObject$Properties|null)} + */ + Self.prototype.locObject = null; + + /** + * Self heading. + * @type {(vec2$Properties|null)} + */ + Self.prototype.heading = null; + + /** + * Self velocity. + * @type {(vec2$Properties|null)} + */ + Self.prototype.velocity = null; + + /** + * Self robotToWorldRotation. + * @type {(mat22$Properties|null)} + */ + Self.prototype.robotToWorldRotation = null; + + /** + * Creates a new Self instance using the specified properties. + * @param {message.localisation.Self$Properties=} [properties] Properties to set + * @returns {message.localisation.Self} Self instance + */ + Self.create = function create(properties) { + return new Self(properties); + }; + + /** + * Encodes the specified Self message. Does not implicitly {@link message.localisation.Self.verify|verify} messages. + * @param {message.localisation.Self$Properties} message Self message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Self.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.locObject != null && message.hasOwnProperty("locObject")) + $root.message.localisation.LocalisationObject.encode(message.locObject, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.heading != null && message.hasOwnProperty("heading")) + $root.vec2.encode(message.heading, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.velocity != null && message.hasOwnProperty("velocity")) + $root.vec2.encode(message.velocity, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + if (message.robotToWorldRotation != null && message.hasOwnProperty("robotToWorldRotation")) + $root.mat22.encode(message.robotToWorldRotation, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified Self message, length delimited. Does not implicitly {@link message.localisation.Self.verify|verify} messages. + * @param {message.localisation.Self$Properties} message Self message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Self.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a Self message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.localisation.Self} Self + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Self.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.localisation.Self(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.locObject = $root.message.localisation.LocalisationObject.decode(reader, reader.uint32()); + break; + case 2: + message.heading = $root.vec2.decode(reader, reader.uint32()); + break; + case 3: + message.velocity = $root.vec2.decode(reader, reader.uint32()); + break; + case 4: + message.robotToWorldRotation = $root.mat22.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a Self message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.localisation.Self} Self + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Self.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a Self message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + Self.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.locObject != null && message.hasOwnProperty("locObject")) { + var error = $root.message.localisation.LocalisationObject.verify(message.locObject); + if (error) + return "locObject." + error; + } + if (message.heading != null && message.hasOwnProperty("heading")) { + var error = $root.vec2.verify(message.heading); + if (error) + return "heading." + error; + } + if (message.velocity != null && message.hasOwnProperty("velocity")) { + var error = $root.vec2.verify(message.velocity); + if (error) + return "velocity." + error; + } + if (message.robotToWorldRotation != null && message.hasOwnProperty("robotToWorldRotation")) { + var error = $root.mat22.verify(message.robotToWorldRotation); + if (error) + return "robotToWorldRotation." + error; + } + return null; + }; + + /** + * Creates a Self message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.localisation.Self} Self + */ + Self.fromObject = function fromObject(object) { + if (object instanceof $root.message.localisation.Self) + return object; + var message = new $root.message.localisation.Self(); + if (object.locObject != null) { + if (typeof object.locObject !== "object") + throw TypeError(".message.localisation.Self.locObject: object expected"); + message.locObject = $root.message.localisation.LocalisationObject.fromObject(object.locObject); + } + if (object.heading != null) { + if (typeof object.heading !== "object") + throw TypeError(".message.localisation.Self.heading: object expected"); + message.heading = $root.vec2.fromObject(object.heading); + } + if (object.velocity != null) { + if (typeof object.velocity !== "object") + throw TypeError(".message.localisation.Self.velocity: object expected"); + message.velocity = $root.vec2.fromObject(object.velocity); + } + if (object.robotToWorldRotation != null) { + if (typeof object.robotToWorldRotation !== "object") + throw TypeError(".message.localisation.Self.robotToWorldRotation: object expected"); + message.robotToWorldRotation = $root.mat22.fromObject(object.robotToWorldRotation); + } + return message; + }; + + /** + * Creates a Self message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.localisation.Self.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.localisation.Self} Self + */ + Self.from = Self.fromObject; + + /** + * Creates a plain object from a Self message. Also converts values to other types if specified. + * @param {message.localisation.Self} message Self + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Self.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.locObject = null; + object.heading = null; + object.velocity = null; + object.robotToWorldRotation = null; + } + if (message.locObject != null && message.hasOwnProperty("locObject")) + object.locObject = $root.message.localisation.LocalisationObject.toObject(message.locObject, options); + if (message.heading != null && message.hasOwnProperty("heading")) + object.heading = $root.vec2.toObject(message.heading, options); + if (message.velocity != null && message.hasOwnProperty("velocity")) + object.velocity = $root.vec2.toObject(message.velocity, options); + if (message.robotToWorldRotation != null && message.hasOwnProperty("robotToWorldRotation")) + object.robotToWorldRotation = $root.mat22.toObject(message.robotToWorldRotation, options); + return object; + }; + + /** + * Creates a plain object from this Self message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Self.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this Self to JSON. + * @returns {Object.} JSON object + */ + Self.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return Self; + })(); + + localisation.Model = (function() { + + /** + * Properties of a Model. + * @typedef message.localisation.Model$Properties + * @type {Object} + * @property {number} [modelId] Model modelId. + * @property {number} [wmX] Model wmX. + * @property {number} [wmY] Model wmY. + * @property {number} [sdX] Model sdX. + * @property {number} [sdY] Model sdY. + * @property {number} [srXx] Model srXx. + * @property {number} [srXy] Model srXy. + * @property {number} [srYy] Model srYy. + * @property {number} [heading] Model heading. + * @property {number} [sdHeading] Model sdHeading. + * @property {boolean} [lost] Model lost. + */ + + /** + * Constructs a new Model. + * @exports message.localisation.Model + * @constructor + * @param {message.localisation.Model$Properties=} [properties] Properties to set + */ + function Model(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Model modelId. + * @type {number} + */ + Model.prototype.modelId = 0; + + /** + * Model wmX. + * @type {number} + */ + Model.prototype.wmX = 0; + + /** + * Model wmY. + * @type {number} + */ + Model.prototype.wmY = 0; + + /** + * Model sdX. + * @type {number} + */ + Model.prototype.sdX = 0; + + /** + * Model sdY. + * @type {number} + */ + Model.prototype.sdY = 0; + + /** + * Model srXx. + * @type {number} + */ + Model.prototype.srXx = 0; + + /** + * Model srXy. + * @type {number} + */ + Model.prototype.srXy = 0; + + /** + * Model srYy. + * @type {number} + */ + Model.prototype.srYy = 0; + + /** + * Model heading. + * @type {number} + */ + Model.prototype.heading = 0; + + /** + * Model sdHeading. + * @type {number} + */ + Model.prototype.sdHeading = 0; + + /** + * Model lost. + * @type {boolean} + */ + Model.prototype.lost = false; + + /** + * Creates a new Model instance using the specified properties. + * @param {message.localisation.Model$Properties=} [properties] Properties to set + * @returns {message.localisation.Model} Model instance + */ + Model.create = function create(properties) { + return new Model(properties); + }; + + /** + * Encodes the specified Model message. Does not implicitly {@link message.localisation.Model.verify|verify} messages. + * @param {message.localisation.Model$Properties} message Model message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Model.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.modelId != null && message.hasOwnProperty("modelId")) + writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.modelId); + if (message.wmX != null && message.hasOwnProperty("wmX")) + writer.uint32(/* id 2, wireType 5 =*/21).float(message.wmX); + if (message.wmY != null && message.hasOwnProperty("wmY")) + writer.uint32(/* id 3, wireType 5 =*/29).float(message.wmY); + if (message.sdX != null && message.hasOwnProperty("sdX")) + writer.uint32(/* id 4, wireType 5 =*/37).float(message.sdX); + if (message.sdY != null && message.hasOwnProperty("sdY")) + writer.uint32(/* id 5, wireType 5 =*/45).float(message.sdY); + if (message.srXx != null && message.hasOwnProperty("srXx")) + writer.uint32(/* id 6, wireType 5 =*/53).float(message.srXx); + if (message.srXy != null && message.hasOwnProperty("srXy")) + writer.uint32(/* id 7, wireType 5 =*/61).float(message.srXy); + if (message.srYy != null && message.hasOwnProperty("srYy")) + writer.uint32(/* id 8, wireType 5 =*/69).float(message.srYy); + if (message.heading != null && message.hasOwnProperty("heading")) + writer.uint32(/* id 9, wireType 5 =*/77).float(message.heading); + if (message.sdHeading != null && message.hasOwnProperty("sdHeading")) + writer.uint32(/* id 10, wireType 5 =*/85).float(message.sdHeading); + if (message.lost != null && message.hasOwnProperty("lost")) + writer.uint32(/* id 11, wireType 0 =*/88).bool(message.lost); + return writer; + }; + + /** + * Encodes the specified Model message, length delimited. Does not implicitly {@link message.localisation.Model.verify|verify} messages. + * @param {message.localisation.Model$Properties} message Model message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Model.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a Model message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.localisation.Model} Model + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Model.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.localisation.Model(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.modelId = reader.uint32(); + break; + case 2: + message.wmX = reader.float(); + break; + case 3: + message.wmY = reader.float(); + break; + case 4: + message.sdX = reader.float(); + break; + case 5: + message.sdY = reader.float(); + break; + case 6: + message.srXx = reader.float(); + break; + case 7: + message.srXy = reader.float(); + break; + case 8: + message.srYy = reader.float(); + break; + case 9: + message.heading = reader.float(); + break; + case 10: + message.sdHeading = reader.float(); + break; + case 11: + message.lost = reader.bool(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a Model message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.localisation.Model} Model + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Model.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a Model message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + Model.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.modelId != null && message.hasOwnProperty("modelId")) + if (!$util.isInteger(message.modelId)) + return "modelId: integer expected"; + if (message.wmX != null && message.hasOwnProperty("wmX")) + if (typeof message.wmX !== "number") + return "wmX: number expected"; + if (message.wmY != null && message.hasOwnProperty("wmY")) + if (typeof message.wmY !== "number") + return "wmY: number expected"; + if (message.sdX != null && message.hasOwnProperty("sdX")) + if (typeof message.sdX !== "number") + return "sdX: number expected"; + if (message.sdY != null && message.hasOwnProperty("sdY")) + if (typeof message.sdY !== "number") + return "sdY: number expected"; + if (message.srXx != null && message.hasOwnProperty("srXx")) + if (typeof message.srXx !== "number") + return "srXx: number expected"; + if (message.srXy != null && message.hasOwnProperty("srXy")) + if (typeof message.srXy !== "number") + return "srXy: number expected"; + if (message.srYy != null && message.hasOwnProperty("srYy")) + if (typeof message.srYy !== "number") + return "srYy: number expected"; + if (message.heading != null && message.hasOwnProperty("heading")) + if (typeof message.heading !== "number") + return "heading: number expected"; + if (message.sdHeading != null && message.hasOwnProperty("sdHeading")) + if (typeof message.sdHeading !== "number") + return "sdHeading: number expected"; + if (message.lost != null && message.hasOwnProperty("lost")) + if (typeof message.lost !== "boolean") + return "lost: boolean expected"; + return null; + }; + + /** + * Creates a Model message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.localisation.Model} Model + */ + Model.fromObject = function fromObject(object) { + if (object instanceof $root.message.localisation.Model) + return object; + var message = new $root.message.localisation.Model(); + if (object.modelId != null) + message.modelId = object.modelId >>> 0; + if (object.wmX != null) + message.wmX = Number(object.wmX); + if (object.wmY != null) + message.wmY = Number(object.wmY); + if (object.sdX != null) + message.sdX = Number(object.sdX); + if (object.sdY != null) + message.sdY = Number(object.sdY); + if (object.srXx != null) + message.srXx = Number(object.srXx); + if (object.srXy != null) + message.srXy = Number(object.srXy); + if (object.srYy != null) + message.srYy = Number(object.srYy); + if (object.heading != null) + message.heading = Number(object.heading); + if (object.sdHeading != null) + message.sdHeading = Number(object.sdHeading); + if (object.lost != null) + message.lost = Boolean(object.lost); + return message; + }; + + /** + * Creates a Model message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.localisation.Model.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.localisation.Model} Model + */ + Model.from = Model.fromObject; + + /** + * Creates a plain object from a Model message. Also converts values to other types if specified. + * @param {message.localisation.Model} message Model + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Model.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.modelId = 0; + object.wmX = 0; + object.wmY = 0; + object.sdX = 0; + object.sdY = 0; + object.srXx = 0; + object.srXy = 0; + object.srYy = 0; + object.heading = 0; + object.sdHeading = 0; + object.lost = false; + } + if (message.modelId != null && message.hasOwnProperty("modelId")) + object.modelId = message.modelId; + if (message.wmX != null && message.hasOwnProperty("wmX")) + object.wmX = message.wmX; + if (message.wmY != null && message.hasOwnProperty("wmY")) + object.wmY = message.wmY; + if (message.sdX != null && message.hasOwnProperty("sdX")) + object.sdX = message.sdX; + if (message.sdY != null && message.hasOwnProperty("sdY")) + object.sdY = message.sdY; + if (message.srXx != null && message.hasOwnProperty("srXx")) + object.srXx = message.srXx; + if (message.srXy != null && message.hasOwnProperty("srXy")) + object.srXy = message.srXy; + if (message.srYy != null && message.hasOwnProperty("srYy")) + object.srYy = message.srYy; + if (message.heading != null && message.hasOwnProperty("heading")) + object.heading = message.heading; + if (message.sdHeading != null && message.hasOwnProperty("sdHeading")) + object.sdHeading = message.sdHeading; + if (message.lost != null && message.hasOwnProperty("lost")) + object.lost = message.lost; + return object; + }; + + /** + * Creates a plain object from this Model message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Model.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this Model to JSON. + * @returns {Object.} JSON object + */ + Model.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return Model; + })(); + + localisation.LocalisationFieldObject = (function() { + + /** + * Properties of a LocalisationFieldObject. + * @typedef message.localisation.LocalisationFieldObject$Properties + * @type {Object} + * @property {string} [name] LocalisationFieldObject name. + * @property {Array.} [models] LocalisationFieldObject models. + */ + + /** + * Constructs a new LocalisationFieldObject. + * @exports message.localisation.LocalisationFieldObject + * @constructor + * @param {message.localisation.LocalisationFieldObject$Properties=} [properties] Properties to set + */ + function LocalisationFieldObject(properties) { + this.models = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * LocalisationFieldObject name. + * @type {string} + */ + LocalisationFieldObject.prototype.name = ""; + + /** + * LocalisationFieldObject models. + * @type {Array.} + */ + LocalisationFieldObject.prototype.models = $util.emptyArray; + + /** + * Creates a new LocalisationFieldObject instance using the specified properties. + * @param {message.localisation.LocalisationFieldObject$Properties=} [properties] Properties to set + * @returns {message.localisation.LocalisationFieldObject} LocalisationFieldObject instance + */ + LocalisationFieldObject.create = function create(properties) { + return new LocalisationFieldObject(properties); + }; + + /** + * Encodes the specified LocalisationFieldObject message. Does not implicitly {@link message.localisation.LocalisationFieldObject.verify|verify} messages. + * @param {message.localisation.LocalisationFieldObject$Properties} message LocalisationFieldObject message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + LocalisationFieldObject.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.name != null && message.hasOwnProperty("name")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.name); + if (message.models != null && message.models.length) + for (var i = 0; i < message.models.length; ++i) + $root.message.localisation.Model.encode(message.models[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified LocalisationFieldObject message, length delimited. Does not implicitly {@link message.localisation.LocalisationFieldObject.verify|verify} messages. + * @param {message.localisation.LocalisationFieldObject$Properties} message LocalisationFieldObject message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + LocalisationFieldObject.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a LocalisationFieldObject message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.localisation.LocalisationFieldObject} LocalisationFieldObject + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + LocalisationFieldObject.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.localisation.LocalisationFieldObject(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.name = reader.string(); + break; + case 2: + if (!(message.models && message.models.length)) + message.models = []; + message.models.push($root.message.localisation.Model.decode(reader, reader.uint32())); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a LocalisationFieldObject message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.localisation.LocalisationFieldObject} LocalisationFieldObject + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + LocalisationFieldObject.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a LocalisationFieldObject message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + LocalisationFieldObject.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.name != null && message.hasOwnProperty("name")) + if (!$util.isString(message.name)) + return "name: string expected"; + if (message.models != null && message.hasOwnProperty("models")) { + if (!Array.isArray(message.models)) + return "models: array expected"; + for (var i = 0; i < message.models.length; ++i) { + var error = $root.message.localisation.Model.verify(message.models[i]); + if (error) + return "models." + error; + } + } + return null; + }; + + /** + * Creates a LocalisationFieldObject message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.localisation.LocalisationFieldObject} LocalisationFieldObject + */ + LocalisationFieldObject.fromObject = function fromObject(object) { + if (object instanceof $root.message.localisation.LocalisationFieldObject) + return object; + var message = new $root.message.localisation.LocalisationFieldObject(); + if (object.name != null) + message.name = String(object.name); + if (object.models) { + if (!Array.isArray(object.models)) + throw TypeError(".message.localisation.LocalisationFieldObject.models: array expected"); + message.models = []; + for (var i = 0; i < object.models.length; ++i) { + if (typeof object.models[i] !== "object") + throw TypeError(".message.localisation.LocalisationFieldObject.models: object expected"); + message.models[i] = $root.message.localisation.Model.fromObject(object.models[i]); + } + } + return message; + }; + + /** + * Creates a LocalisationFieldObject message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.localisation.LocalisationFieldObject.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.localisation.LocalisationFieldObject} LocalisationFieldObject + */ + LocalisationFieldObject.from = LocalisationFieldObject.fromObject; + + /** + * Creates a plain object from a LocalisationFieldObject message. Also converts values to other types if specified. + * @param {message.localisation.LocalisationFieldObject} message LocalisationFieldObject + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + LocalisationFieldObject.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.models = []; + if (options.defaults) + object.name = ""; + if (message.name != null && message.hasOwnProperty("name")) + object.name = message.name; + if (message.models && message.models.length) { + object.models = []; + for (var j = 0; j < message.models.length; ++j) + object.models[j] = $root.message.localisation.Model.toObject(message.models[j], options); + } + return object; + }; + + /** + * Creates a plain object from this LocalisationFieldObject message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + LocalisationFieldObject.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this LocalisationFieldObject to JSON. + * @returns {Object.} JSON object + */ + LocalisationFieldObject.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return LocalisationFieldObject; + })(); + + localisation.Localisation = (function() { + + /** + * Properties of a Localisation. + * @typedef message.localisation.Localisation$Properties + * @type {Object} + * @property {Array.} [fieldObject] Localisation fieldObject. + */ + + /** + * Constructs a new Localisation. + * @exports message.localisation.Localisation + * @constructor + * @param {message.localisation.Localisation$Properties=} [properties] Properties to set + */ + function Localisation(properties) { + this.fieldObject = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Localisation fieldObject. + * @type {Array.} + */ + Localisation.prototype.fieldObject = $util.emptyArray; + + /** + * Creates a new Localisation instance using the specified properties. + * @param {message.localisation.Localisation$Properties=} [properties] Properties to set + * @returns {message.localisation.Localisation} Localisation instance + */ + Localisation.create = function create(properties) { + return new Localisation(properties); + }; + + /** + * Encodes the specified Localisation message. Does not implicitly {@link message.localisation.Localisation.verify|verify} messages. + * @param {message.localisation.Localisation$Properties} message Localisation message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Localisation.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.fieldObject != null && message.fieldObject.length) + for (var i = 0; i < message.fieldObject.length; ++i) + $root.message.localisation.LocalisationFieldObject.encode(message.fieldObject[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified Localisation message, length delimited. Does not implicitly {@link message.localisation.Localisation.verify|verify} messages. + * @param {message.localisation.Localisation$Properties} message Localisation message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Localisation.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a Localisation message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.localisation.Localisation} Localisation + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Localisation.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.localisation.Localisation(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (!(message.fieldObject && message.fieldObject.length)) + message.fieldObject = []; + message.fieldObject.push($root.message.localisation.LocalisationFieldObject.decode(reader, reader.uint32())); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a Localisation message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.localisation.Localisation} Localisation + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Localisation.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a Localisation message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + Localisation.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.fieldObject != null && message.hasOwnProperty("fieldObject")) { + if (!Array.isArray(message.fieldObject)) + return "fieldObject: array expected"; + for (var i = 0; i < message.fieldObject.length; ++i) { + var error = $root.message.localisation.LocalisationFieldObject.verify(message.fieldObject[i]); + if (error) + return "fieldObject." + error; + } + } + return null; + }; + + /** + * Creates a Localisation message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.localisation.Localisation} Localisation + */ + Localisation.fromObject = function fromObject(object) { + if (object instanceof $root.message.localisation.Localisation) + return object; + var message = new $root.message.localisation.Localisation(); + if (object.fieldObject) { + if (!Array.isArray(object.fieldObject)) + throw TypeError(".message.localisation.Localisation.fieldObject: array expected"); + message.fieldObject = []; + for (var i = 0; i < object.fieldObject.length; ++i) { + if (typeof object.fieldObject[i] !== "object") + throw TypeError(".message.localisation.Localisation.fieldObject: object expected"); + message.fieldObject[i] = $root.message.localisation.LocalisationFieldObject.fromObject(object.fieldObject[i]); + } + } + return message; + }; + + /** + * Creates a Localisation message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.localisation.Localisation.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.localisation.Localisation} Localisation + */ + Localisation.from = Localisation.fromObject; + + /** + * Creates a plain object from a Localisation message. Also converts values to other types if specified. + * @param {message.localisation.Localisation} message Localisation + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Localisation.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.fieldObject = []; + if (message.fieldObject && message.fieldObject.length) { + object.fieldObject = []; + for (var j = 0; j < message.fieldObject.length; ++j) + object.fieldObject[j] = $root.message.localisation.LocalisationFieldObject.toObject(message.fieldObject[j], options); + } + return object; + }; + + /** + * Creates a plain object from this Localisation message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Localisation.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this Localisation to JSON. + * @returns {Object.} JSON object + */ + Localisation.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return Localisation; + })(); + + localisation.ResetRobotHypotheses = (function() { + + /** + * Properties of a ResetRobotHypotheses. + * @typedef message.localisation.ResetRobotHypotheses$Properties + * @type {Object} + * @property {Array.} [hypotheses] ResetRobotHypotheses hypotheses. + */ + + /** + * Constructs a new ResetRobotHypotheses. + * @exports message.localisation.ResetRobotHypotheses + * @constructor + * @param {message.localisation.ResetRobotHypotheses$Properties=} [properties] Properties to set + */ + function ResetRobotHypotheses(properties) { + this.hypotheses = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * ResetRobotHypotheses hypotheses. + * @type {Array.} + */ + ResetRobotHypotheses.prototype.hypotheses = $util.emptyArray; + + /** + * Creates a new ResetRobotHypotheses instance using the specified properties. + * @param {message.localisation.ResetRobotHypotheses$Properties=} [properties] Properties to set + * @returns {message.localisation.ResetRobotHypotheses} ResetRobotHypotheses instance + */ + ResetRobotHypotheses.create = function create(properties) { + return new ResetRobotHypotheses(properties); + }; + + /** + * Encodes the specified ResetRobotHypotheses message. Does not implicitly {@link message.localisation.ResetRobotHypotheses.verify|verify} messages. + * @param {message.localisation.ResetRobotHypotheses$Properties} message ResetRobotHypotheses message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ResetRobotHypotheses.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.hypotheses != null && message.hypotheses.length) + for (var i = 0; i < message.hypotheses.length; ++i) + $root.message.localisation.ResetRobotHypotheses.Self.encode(message.hypotheses[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified ResetRobotHypotheses message, length delimited. Does not implicitly {@link message.localisation.ResetRobotHypotheses.verify|verify} messages. + * @param {message.localisation.ResetRobotHypotheses$Properties} message ResetRobotHypotheses message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ResetRobotHypotheses.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a ResetRobotHypotheses message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.localisation.ResetRobotHypotheses} ResetRobotHypotheses + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ResetRobotHypotheses.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.localisation.ResetRobotHypotheses(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (!(message.hypotheses && message.hypotheses.length)) + message.hypotheses = []; + message.hypotheses.push($root.message.localisation.ResetRobotHypotheses.Self.decode(reader, reader.uint32())); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a ResetRobotHypotheses message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.localisation.ResetRobotHypotheses} ResetRobotHypotheses + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ResetRobotHypotheses.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a ResetRobotHypotheses message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + ResetRobotHypotheses.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.hypotheses != null && message.hasOwnProperty("hypotheses")) { + if (!Array.isArray(message.hypotheses)) + return "hypotheses: array expected"; + for (var i = 0; i < message.hypotheses.length; ++i) { + var error = $root.message.localisation.ResetRobotHypotheses.Self.verify(message.hypotheses[i]); + if (error) + return "hypotheses." + error; + } + } + return null; + }; + + /** + * Creates a ResetRobotHypotheses message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.localisation.ResetRobotHypotheses} ResetRobotHypotheses + */ + ResetRobotHypotheses.fromObject = function fromObject(object) { + if (object instanceof $root.message.localisation.ResetRobotHypotheses) + return object; + var message = new $root.message.localisation.ResetRobotHypotheses(); + if (object.hypotheses) { + if (!Array.isArray(object.hypotheses)) + throw TypeError(".message.localisation.ResetRobotHypotheses.hypotheses: array expected"); + message.hypotheses = []; + for (var i = 0; i < object.hypotheses.length; ++i) { + if (typeof object.hypotheses[i] !== "object") + throw TypeError(".message.localisation.ResetRobotHypotheses.hypotheses: object expected"); + message.hypotheses[i] = $root.message.localisation.ResetRobotHypotheses.Self.fromObject(object.hypotheses[i]); + } + } + return message; + }; + + /** + * Creates a ResetRobotHypotheses message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.localisation.ResetRobotHypotheses.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.localisation.ResetRobotHypotheses} ResetRobotHypotheses + */ + ResetRobotHypotheses.from = ResetRobotHypotheses.fromObject; + + /** + * Creates a plain object from a ResetRobotHypotheses message. Also converts values to other types if specified. + * @param {message.localisation.ResetRobotHypotheses} message ResetRobotHypotheses + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + ResetRobotHypotheses.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.hypotheses = []; + if (message.hypotheses && message.hypotheses.length) { + object.hypotheses = []; + for (var j = 0; j < message.hypotheses.length; ++j) + object.hypotheses[j] = $root.message.localisation.ResetRobotHypotheses.Self.toObject(message.hypotheses[j], options); + } + return object; + }; + + /** + * Creates a plain object from this ResetRobotHypotheses message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + ResetRobotHypotheses.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this ResetRobotHypotheses to JSON. + * @returns {Object.} JSON object + */ + ResetRobotHypotheses.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + ResetRobotHypotheses.Self = (function() { + + /** + * Properties of a Self. + * @typedef message.localisation.ResetRobotHypotheses.Self$Properties + * @type {Object} + * @property {vec2$Properties} [position] Self position. + * @property {mat22$Properties} [positionCov] Self positionCov. + * @property {number} [heading] Self heading. + * @property {number} [headingVar] Self headingVar. + * @property {boolean} [absoluteYaw] Self absoluteYaw. + */ + + /** + * Constructs a new Self. + * @exports message.localisation.ResetRobotHypotheses.Self + * @constructor + * @param {message.localisation.ResetRobotHypotheses.Self$Properties=} [properties] Properties to set + */ + function Self(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Self position. + * @type {(vec2$Properties|null)} + */ + Self.prototype.position = null; + + /** + * Self positionCov. + * @type {(mat22$Properties|null)} + */ + Self.prototype.positionCov = null; + + /** + * Self heading. + * @type {number} + */ + Self.prototype.heading = 0; + + /** + * Self headingVar. + * @type {number} + */ + Self.prototype.headingVar = 0; + + /** + * Self absoluteYaw. + * @type {boolean} + */ + Self.prototype.absoluteYaw = false; + + /** + * Creates a new Self instance using the specified properties. + * @param {message.localisation.ResetRobotHypotheses.Self$Properties=} [properties] Properties to set + * @returns {message.localisation.ResetRobotHypotheses.Self} Self instance + */ + Self.create = function create(properties) { + return new Self(properties); + }; + + /** + * Encodes the specified Self message. Does not implicitly {@link message.localisation.ResetRobotHypotheses.Self.verify|verify} messages. + * @param {message.localisation.ResetRobotHypotheses.Self$Properties} message Self message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Self.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.position != null && message.hasOwnProperty("position")) + $root.vec2.encode(message.position, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.positionCov != null && message.hasOwnProperty("positionCov")) + $root.mat22.encode(message.positionCov, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.heading != null && message.hasOwnProperty("heading")) + writer.uint32(/* id 3, wireType 1 =*/25).double(message.heading); + if (message.headingVar != null && message.hasOwnProperty("headingVar")) + writer.uint32(/* id 4, wireType 1 =*/33).double(message.headingVar); + if (message.absoluteYaw != null && message.hasOwnProperty("absoluteYaw")) + writer.uint32(/* id 5, wireType 0 =*/40).bool(message.absoluteYaw); + return writer; + }; + + /** + * Encodes the specified Self message, length delimited. Does not implicitly {@link message.localisation.ResetRobotHypotheses.Self.verify|verify} messages. + * @param {message.localisation.ResetRobotHypotheses.Self$Properties} message Self message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Self.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a Self message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.localisation.ResetRobotHypotheses.Self} Self + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Self.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.localisation.ResetRobotHypotheses.Self(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.position = $root.vec2.decode(reader, reader.uint32()); + break; + case 2: + message.positionCov = $root.mat22.decode(reader, reader.uint32()); + break; + case 3: + message.heading = reader.double(); + break; + case 4: + message.headingVar = reader.double(); + break; + case 5: + message.absoluteYaw = reader.bool(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a Self message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.localisation.ResetRobotHypotheses.Self} Self + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Self.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a Self message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + Self.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.position != null && message.hasOwnProperty("position")) { + var error = $root.vec2.verify(message.position); + if (error) + return "position." + error; + } + if (message.positionCov != null && message.hasOwnProperty("positionCov")) { + var error = $root.mat22.verify(message.positionCov); + if (error) + return "positionCov." + error; + } + if (message.heading != null && message.hasOwnProperty("heading")) + if (typeof message.heading !== "number") + return "heading: number expected"; + if (message.headingVar != null && message.hasOwnProperty("headingVar")) + if (typeof message.headingVar !== "number") + return "headingVar: number expected"; + if (message.absoluteYaw != null && message.hasOwnProperty("absoluteYaw")) + if (typeof message.absoluteYaw !== "boolean") + return "absoluteYaw: boolean expected"; + return null; + }; + + /** + * Creates a Self message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.localisation.ResetRobotHypotheses.Self} Self + */ + Self.fromObject = function fromObject(object) { + if (object instanceof $root.message.localisation.ResetRobotHypotheses.Self) + return object; + var message = new $root.message.localisation.ResetRobotHypotheses.Self(); + if (object.position != null) { + if (typeof object.position !== "object") + throw TypeError(".message.localisation.ResetRobotHypotheses.Self.position: object expected"); + message.position = $root.vec2.fromObject(object.position); + } + if (object.positionCov != null) { + if (typeof object.positionCov !== "object") + throw TypeError(".message.localisation.ResetRobotHypotheses.Self.positionCov: object expected"); + message.positionCov = $root.mat22.fromObject(object.positionCov); + } + if (object.heading != null) + message.heading = Number(object.heading); + if (object.headingVar != null) + message.headingVar = Number(object.headingVar); + if (object.absoluteYaw != null) + message.absoluteYaw = Boolean(object.absoluteYaw); + return message; + }; + + /** + * Creates a Self message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.localisation.ResetRobotHypotheses.Self.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.localisation.ResetRobotHypotheses.Self} Self + */ + Self.from = Self.fromObject; + + /** + * Creates a plain object from a Self message. Also converts values to other types if specified. + * @param {message.localisation.ResetRobotHypotheses.Self} message Self + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Self.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.position = null; + object.positionCov = null; + object.heading = 0; + object.headingVar = 0; + object.absoluteYaw = false; + } + if (message.position != null && message.hasOwnProperty("position")) + object.position = $root.vec2.toObject(message.position, options); + if (message.positionCov != null && message.hasOwnProperty("positionCov")) + object.positionCov = $root.mat22.toObject(message.positionCov, options); + if (message.heading != null && message.hasOwnProperty("heading")) + object.heading = message.heading; + if (message.headingVar != null && message.hasOwnProperty("headingVar")) + object.headingVar = message.headingVar; + if (message.absoluteYaw != null && message.hasOwnProperty("absoluteYaw")) + object.absoluteYaw = message.absoluteYaw; + return object; + }; + + /** + * Creates a plain object from this Self message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Self.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this Self to JSON. + * @returns {Object.} JSON object + */ + Self.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return Self; + })(); + + return ResetRobotHypotheses; + })(); + + localisation.SideCheckingComplete = (function() { + + /** + * Properties of a SideCheckingComplete. + * @typedef message.localisation.SideCheckingComplete$Properties + * @type {Object} + */ + + /** + * Constructs a new SideCheckingComplete. + * @exports message.localisation.SideCheckingComplete + * @constructor + * @param {message.localisation.SideCheckingComplete$Properties=} [properties] Properties to set + */ + function SideCheckingComplete(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Creates a new SideCheckingComplete instance using the specified properties. + * @param {message.localisation.SideCheckingComplete$Properties=} [properties] Properties to set + * @returns {message.localisation.SideCheckingComplete} SideCheckingComplete instance + */ + SideCheckingComplete.create = function create(properties) { + return new SideCheckingComplete(properties); + }; + + /** + * Encodes the specified SideCheckingComplete message. Does not implicitly {@link message.localisation.SideCheckingComplete.verify|verify} messages. + * @param {message.localisation.SideCheckingComplete$Properties} message SideCheckingComplete message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + SideCheckingComplete.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + return writer; + }; + + /** + * Encodes the specified SideCheckingComplete message, length delimited. Does not implicitly {@link message.localisation.SideCheckingComplete.verify|verify} messages. + * @param {message.localisation.SideCheckingComplete$Properties} message SideCheckingComplete message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + SideCheckingComplete.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a SideCheckingComplete message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.localisation.SideCheckingComplete} SideCheckingComplete + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + SideCheckingComplete.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.localisation.SideCheckingComplete(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a SideCheckingComplete message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.localisation.SideCheckingComplete} SideCheckingComplete + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + SideCheckingComplete.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a SideCheckingComplete message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + SideCheckingComplete.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + return null; + }; + + /** + * Creates a SideCheckingComplete message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.localisation.SideCheckingComplete} SideCheckingComplete + */ + SideCheckingComplete.fromObject = function fromObject(object) { + if (object instanceof $root.message.localisation.SideCheckingComplete) + return object; + return new $root.message.localisation.SideCheckingComplete(); + }; + + /** + * Creates a SideCheckingComplete message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.localisation.SideCheckingComplete.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.localisation.SideCheckingComplete} SideCheckingComplete + */ + SideCheckingComplete.from = SideCheckingComplete.fromObject; + + /** + * Creates a plain object from a SideCheckingComplete message. Also converts values to other types if specified. + * @param {message.localisation.SideCheckingComplete} message SideCheckingComplete + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + SideCheckingComplete.toObject = function toObject() { + return {}; + }; + + /** + * Creates a plain object from this SideCheckingComplete message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + SideCheckingComplete.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this SideCheckingComplete to JSON. + * @returns {Object.} JSON object + */ + SideCheckingComplete.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return SideCheckingComplete; + })(); + + return localisation; + })(); + + message.motion = (function() { + + /** + * Namespace motion. + * @exports message.motion + * @namespace + */ + var motion = {}; + + motion.BalanceBodyUpdate = (function() { + + /** + * Properties of a BalanceBodyUpdate. + * @typedef message.motion.BalanceBodyUpdate$Properties + * @type {Object} + * @property {number} [phase] BalanceBodyUpdate phase. + * @property {mat44$Properties} [leftFoot] BalanceBodyUpdate leftFoot. + * @property {mat44$Properties} [rightFoot] BalanceBodyUpdate rightFoot. + * @property {vec3$Properties} [armLPosition] BalanceBodyUpdate armLPosition. + * @property {vec3$Properties} [armRPosition] BalanceBodyUpdate armRPosition. + */ + + /** + * Constructs a new BalanceBodyUpdate. + * @exports message.motion.BalanceBodyUpdate + * @constructor + * @param {message.motion.BalanceBodyUpdate$Properties=} [properties] Properties to set + */ + function BalanceBodyUpdate(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * BalanceBodyUpdate phase. + * @type {number} + */ + BalanceBodyUpdate.prototype.phase = 0; + + /** + * BalanceBodyUpdate leftFoot. + * @type {(mat44$Properties|null)} + */ + BalanceBodyUpdate.prototype.leftFoot = null; + + /** + * BalanceBodyUpdate rightFoot. + * @type {(mat44$Properties|null)} + */ + BalanceBodyUpdate.prototype.rightFoot = null; + + /** + * BalanceBodyUpdate armLPosition. + * @type {(vec3$Properties|null)} + */ + BalanceBodyUpdate.prototype.armLPosition = null; + + /** + * BalanceBodyUpdate armRPosition. + * @type {(vec3$Properties|null)} + */ + BalanceBodyUpdate.prototype.armRPosition = null; + + /** + * Creates a new BalanceBodyUpdate instance using the specified properties. + * @param {message.motion.BalanceBodyUpdate$Properties=} [properties] Properties to set + * @returns {message.motion.BalanceBodyUpdate} BalanceBodyUpdate instance + */ + BalanceBodyUpdate.create = function create(properties) { + return new BalanceBodyUpdate(properties); + }; + + /** + * Encodes the specified BalanceBodyUpdate message. Does not implicitly {@link message.motion.BalanceBodyUpdate.verify|verify} messages. + * @param {message.motion.BalanceBodyUpdate$Properties} message BalanceBodyUpdate message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + BalanceBodyUpdate.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.phase != null && message.hasOwnProperty("phase")) + writer.uint32(/* id 1, wireType 1 =*/9).double(message.phase); + if (message.leftFoot != null && message.hasOwnProperty("leftFoot")) + $root.mat44.encode(message.leftFoot, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.rightFoot != null && message.hasOwnProperty("rightFoot")) + $root.mat44.encode(message.rightFoot, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + if (message.armLPosition != null && message.hasOwnProperty("armLPosition")) + $root.vec3.encode(message.armLPosition, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); + if (message.armRPosition != null && message.hasOwnProperty("armRPosition")) + $root.vec3.encode(message.armRPosition, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified BalanceBodyUpdate message, length delimited. Does not implicitly {@link message.motion.BalanceBodyUpdate.verify|verify} messages. + * @param {message.motion.BalanceBodyUpdate$Properties} message BalanceBodyUpdate message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + BalanceBodyUpdate.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a BalanceBodyUpdate message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.motion.BalanceBodyUpdate} BalanceBodyUpdate + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + BalanceBodyUpdate.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.motion.BalanceBodyUpdate(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.phase = reader.double(); + break; + case 2: + message.leftFoot = $root.mat44.decode(reader, reader.uint32()); + break; + case 3: + message.rightFoot = $root.mat44.decode(reader, reader.uint32()); + break; + case 4: + message.armLPosition = $root.vec3.decode(reader, reader.uint32()); + break; + case 5: + message.armRPosition = $root.vec3.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a BalanceBodyUpdate message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.motion.BalanceBodyUpdate} BalanceBodyUpdate + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + BalanceBodyUpdate.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a BalanceBodyUpdate message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + BalanceBodyUpdate.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.phase != null && message.hasOwnProperty("phase")) + if (typeof message.phase !== "number") + return "phase: number expected"; + if (message.leftFoot != null && message.hasOwnProperty("leftFoot")) { + var error = $root.mat44.verify(message.leftFoot); + if (error) + return "leftFoot." + error; + } + if (message.rightFoot != null && message.hasOwnProperty("rightFoot")) { + var error = $root.mat44.verify(message.rightFoot); + if (error) + return "rightFoot." + error; + } + if (message.armLPosition != null && message.hasOwnProperty("armLPosition")) { + var error = $root.vec3.verify(message.armLPosition); + if (error) + return "armLPosition." + error; + } + if (message.armRPosition != null && message.hasOwnProperty("armRPosition")) { + var error = $root.vec3.verify(message.armRPosition); + if (error) + return "armRPosition." + error; + } + return null; + }; + + /** + * Creates a BalanceBodyUpdate message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.motion.BalanceBodyUpdate} BalanceBodyUpdate + */ + BalanceBodyUpdate.fromObject = function fromObject(object) { + if (object instanceof $root.message.motion.BalanceBodyUpdate) + return object; + var message = new $root.message.motion.BalanceBodyUpdate(); + if (object.phase != null) + message.phase = Number(object.phase); + if (object.leftFoot != null) { + if (typeof object.leftFoot !== "object") + throw TypeError(".message.motion.BalanceBodyUpdate.leftFoot: object expected"); + message.leftFoot = $root.mat44.fromObject(object.leftFoot); + } + if (object.rightFoot != null) { + if (typeof object.rightFoot !== "object") + throw TypeError(".message.motion.BalanceBodyUpdate.rightFoot: object expected"); + message.rightFoot = $root.mat44.fromObject(object.rightFoot); + } + if (object.armLPosition != null) { + if (typeof object.armLPosition !== "object") + throw TypeError(".message.motion.BalanceBodyUpdate.armLPosition: object expected"); + message.armLPosition = $root.vec3.fromObject(object.armLPosition); + } + if (object.armRPosition != null) { + if (typeof object.armRPosition !== "object") + throw TypeError(".message.motion.BalanceBodyUpdate.armRPosition: object expected"); + message.armRPosition = $root.vec3.fromObject(object.armRPosition); + } + return message; + }; + + /** + * Creates a BalanceBodyUpdate message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.motion.BalanceBodyUpdate.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.motion.BalanceBodyUpdate} BalanceBodyUpdate + */ + BalanceBodyUpdate.from = BalanceBodyUpdate.fromObject; + + /** + * Creates a plain object from a BalanceBodyUpdate message. Also converts values to other types if specified. + * @param {message.motion.BalanceBodyUpdate} message BalanceBodyUpdate + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + BalanceBodyUpdate.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.phase = 0; + object.leftFoot = null; + object.rightFoot = null; + object.armLPosition = null; + object.armRPosition = null; + } + if (message.phase != null && message.hasOwnProperty("phase")) + object.phase = message.phase; + if (message.leftFoot != null && message.hasOwnProperty("leftFoot")) + object.leftFoot = $root.mat44.toObject(message.leftFoot, options); + if (message.rightFoot != null && message.hasOwnProperty("rightFoot")) + object.rightFoot = $root.mat44.toObject(message.rightFoot, options); + if (message.armLPosition != null && message.hasOwnProperty("armLPosition")) + object.armLPosition = $root.vec3.toObject(message.armLPosition, options); + if (message.armRPosition != null && message.hasOwnProperty("armRPosition")) + object.armRPosition = $root.vec3.toObject(message.armRPosition, options); + return object; + }; + + /** + * Creates a plain object from this BalanceBodyUpdate message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + BalanceBodyUpdate.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this BalanceBodyUpdate to JSON. + * @returns {Object.} JSON object + */ + BalanceBodyUpdate.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return BalanceBodyUpdate; + })(); + + motion.EnableBalanceResponse = (function() { + + /** + * Properties of an EnableBalanceResponse. + * @typedef message.motion.EnableBalanceResponse$Properties + * @type {Object} + */ + + /** + * Constructs a new EnableBalanceResponse. + * @exports message.motion.EnableBalanceResponse + * @constructor + * @param {message.motion.EnableBalanceResponse$Properties=} [properties] Properties to set + */ + function EnableBalanceResponse(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Creates a new EnableBalanceResponse instance using the specified properties. + * @param {message.motion.EnableBalanceResponse$Properties=} [properties] Properties to set + * @returns {message.motion.EnableBalanceResponse} EnableBalanceResponse instance + */ + EnableBalanceResponse.create = function create(properties) { + return new EnableBalanceResponse(properties); + }; + + /** + * Encodes the specified EnableBalanceResponse message. Does not implicitly {@link message.motion.EnableBalanceResponse.verify|verify} messages. + * @param {message.motion.EnableBalanceResponse$Properties} message EnableBalanceResponse message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + EnableBalanceResponse.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + return writer; + }; + + /** + * Encodes the specified EnableBalanceResponse message, length delimited. Does not implicitly {@link message.motion.EnableBalanceResponse.verify|verify} messages. + * @param {message.motion.EnableBalanceResponse$Properties} message EnableBalanceResponse message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + EnableBalanceResponse.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes an EnableBalanceResponse message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.motion.EnableBalanceResponse} EnableBalanceResponse + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + EnableBalanceResponse.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.motion.EnableBalanceResponse(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes an EnableBalanceResponse message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.motion.EnableBalanceResponse} EnableBalanceResponse + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + EnableBalanceResponse.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies an EnableBalanceResponse message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + EnableBalanceResponse.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + return null; + }; + + /** + * Creates an EnableBalanceResponse message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.motion.EnableBalanceResponse} EnableBalanceResponse + */ + EnableBalanceResponse.fromObject = function fromObject(object) { + if (object instanceof $root.message.motion.EnableBalanceResponse) + return object; + return new $root.message.motion.EnableBalanceResponse(); + }; + + /** + * Creates an EnableBalanceResponse message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.motion.EnableBalanceResponse.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.motion.EnableBalanceResponse} EnableBalanceResponse + */ + EnableBalanceResponse.from = EnableBalanceResponse.fromObject; + + /** + * Creates a plain object from an EnableBalanceResponse message. Also converts values to other types if specified. + * @param {message.motion.EnableBalanceResponse} message EnableBalanceResponse + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + EnableBalanceResponse.toObject = function toObject() { + return {}; + }; + + /** + * Creates a plain object from this EnableBalanceResponse message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + EnableBalanceResponse.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this EnableBalanceResponse to JSON. + * @returns {Object.} JSON object + */ + EnableBalanceResponse.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return EnableBalanceResponse; + })(); + + motion.DisableBalanceResponse = (function() { + + /** + * Properties of a DisableBalanceResponse. + * @typedef message.motion.DisableBalanceResponse$Properties + * @type {Object} + */ + + /** + * Constructs a new DisableBalanceResponse. + * @exports message.motion.DisableBalanceResponse + * @constructor + * @param {message.motion.DisableBalanceResponse$Properties=} [properties] Properties to set + */ + function DisableBalanceResponse(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Creates a new DisableBalanceResponse instance using the specified properties. + * @param {message.motion.DisableBalanceResponse$Properties=} [properties] Properties to set + * @returns {message.motion.DisableBalanceResponse} DisableBalanceResponse instance + */ + DisableBalanceResponse.create = function create(properties) { + return new DisableBalanceResponse(properties); + }; + + /** + * Encodes the specified DisableBalanceResponse message. Does not implicitly {@link message.motion.DisableBalanceResponse.verify|verify} messages. + * @param {message.motion.DisableBalanceResponse$Properties} message DisableBalanceResponse message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + DisableBalanceResponse.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + return writer; + }; + + /** + * Encodes the specified DisableBalanceResponse message, length delimited. Does not implicitly {@link message.motion.DisableBalanceResponse.verify|verify} messages. + * @param {message.motion.DisableBalanceResponse$Properties} message DisableBalanceResponse message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + DisableBalanceResponse.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a DisableBalanceResponse message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.motion.DisableBalanceResponse} DisableBalanceResponse + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + DisableBalanceResponse.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.motion.DisableBalanceResponse(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a DisableBalanceResponse message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.motion.DisableBalanceResponse} DisableBalanceResponse + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + DisableBalanceResponse.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a DisableBalanceResponse message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + DisableBalanceResponse.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + return null; + }; + + /** + * Creates a DisableBalanceResponse message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.motion.DisableBalanceResponse} DisableBalanceResponse + */ + DisableBalanceResponse.fromObject = function fromObject(object) { + if (object instanceof $root.message.motion.DisableBalanceResponse) + return object; + return new $root.message.motion.DisableBalanceResponse(); + }; + + /** + * Creates a DisableBalanceResponse message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.motion.DisableBalanceResponse.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.motion.DisableBalanceResponse} DisableBalanceResponse + */ + DisableBalanceResponse.from = DisableBalanceResponse.fromObject; + + /** + * Creates a plain object from a DisableBalanceResponse message. Also converts values to other types if specified. + * @param {message.motion.DisableBalanceResponse} message DisableBalanceResponse + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + DisableBalanceResponse.toObject = function toObject() { + return {}; + }; + + /** + * Creates a plain object from this DisableBalanceResponse message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + DisableBalanceResponse.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this DisableBalanceResponse to JSON. + * @returns {Object.} JSON object + */ + DisableBalanceResponse.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return DisableBalanceResponse; + })(); + + motion.DiveCommand = (function() { + + /** + * Properties of a DiveCommand. + * @typedef message.motion.DiveCommand$Properties + * @type {Object} + * @property {vec2$Properties} [direction] DiveCommand direction. + */ + + /** + * Constructs a new DiveCommand. + * @exports message.motion.DiveCommand + * @constructor + * @param {message.motion.DiveCommand$Properties=} [properties] Properties to set + */ + function DiveCommand(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * DiveCommand direction. + * @type {(vec2$Properties|null)} + */ + DiveCommand.prototype.direction = null; + + /** + * Creates a new DiveCommand instance using the specified properties. + * @param {message.motion.DiveCommand$Properties=} [properties] Properties to set + * @returns {message.motion.DiveCommand} DiveCommand instance + */ + DiveCommand.create = function create(properties) { + return new DiveCommand(properties); + }; + + /** + * Encodes the specified DiveCommand message. Does not implicitly {@link message.motion.DiveCommand.verify|verify} messages. + * @param {message.motion.DiveCommand$Properties} message DiveCommand message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + DiveCommand.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.direction != null && message.hasOwnProperty("direction")) + $root.vec2.encode(message.direction, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified DiveCommand message, length delimited. Does not implicitly {@link message.motion.DiveCommand.verify|verify} messages. + * @param {message.motion.DiveCommand$Properties} message DiveCommand message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + DiveCommand.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a DiveCommand message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.motion.DiveCommand} DiveCommand + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + DiveCommand.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.motion.DiveCommand(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.direction = $root.vec2.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a DiveCommand message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.motion.DiveCommand} DiveCommand + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + DiveCommand.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a DiveCommand message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + DiveCommand.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.direction != null && message.hasOwnProperty("direction")) { + var error = $root.vec2.verify(message.direction); + if (error) + return "direction." + error; + } + return null; + }; + + /** + * Creates a DiveCommand message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.motion.DiveCommand} DiveCommand + */ + DiveCommand.fromObject = function fromObject(object) { + if (object instanceof $root.message.motion.DiveCommand) + return object; + var message = new $root.message.motion.DiveCommand(); + if (object.direction != null) { + if (typeof object.direction !== "object") + throw TypeError(".message.motion.DiveCommand.direction: object expected"); + message.direction = $root.vec2.fromObject(object.direction); + } + return message; + }; + + /** + * Creates a DiveCommand message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.motion.DiveCommand.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.motion.DiveCommand} DiveCommand + */ + DiveCommand.from = DiveCommand.fromObject; + + /** + * Creates a plain object from a DiveCommand message. Also converts values to other types if specified. + * @param {message.motion.DiveCommand} message DiveCommand + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + DiveCommand.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) + object.direction = null; + if (message.direction != null && message.hasOwnProperty("direction")) + object.direction = $root.vec2.toObject(message.direction, options); + return object; + }; + + /** + * Creates a plain object from this DiveCommand message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + DiveCommand.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this DiveCommand to JSON. + * @returns {Object.} JSON object + */ + DiveCommand.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return DiveCommand; + })(); + + motion.DiveFinished = (function() { + + /** + * Properties of a DiveFinished. + * @typedef message.motion.DiveFinished$Properties + * @type {Object} + */ + + /** + * Constructs a new DiveFinished. + * @exports message.motion.DiveFinished + * @constructor + * @param {message.motion.DiveFinished$Properties=} [properties] Properties to set + */ + function DiveFinished(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Creates a new DiveFinished instance using the specified properties. + * @param {message.motion.DiveFinished$Properties=} [properties] Properties to set + * @returns {message.motion.DiveFinished} DiveFinished instance + */ + DiveFinished.create = function create(properties) { + return new DiveFinished(properties); + }; + + /** + * Encodes the specified DiveFinished message. Does not implicitly {@link message.motion.DiveFinished.verify|verify} messages. + * @param {message.motion.DiveFinished$Properties} message DiveFinished message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + DiveFinished.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + return writer; + }; + + /** + * Encodes the specified DiveFinished message, length delimited. Does not implicitly {@link message.motion.DiveFinished.verify|verify} messages. + * @param {message.motion.DiveFinished$Properties} message DiveFinished message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + DiveFinished.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a DiveFinished message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.motion.DiveFinished} DiveFinished + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + DiveFinished.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.motion.DiveFinished(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a DiveFinished message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.motion.DiveFinished} DiveFinished + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + DiveFinished.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a DiveFinished message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + DiveFinished.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + return null; + }; + + /** + * Creates a DiveFinished message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.motion.DiveFinished} DiveFinished + */ + DiveFinished.fromObject = function fromObject(object) { + if (object instanceof $root.message.motion.DiveFinished) + return object; + return new $root.message.motion.DiveFinished(); + }; + + /** + * Creates a DiveFinished message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.motion.DiveFinished.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.motion.DiveFinished} DiveFinished + */ + DiveFinished.from = DiveFinished.fromObject; + + /** + * Creates a plain object from a DiveFinished message. Also converts values to other types if specified. + * @param {message.motion.DiveFinished} message DiveFinished + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + DiveFinished.toObject = function toObject() { + return {}; + }; + + /** + * Creates a plain object from this DiveFinished message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + DiveFinished.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this DiveFinished to JSON. + * @returns {Object.} JSON object + */ + DiveFinished.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return DiveFinished; + })(); + + motion.FootMotionStopped = (function() { + + /** + * Properties of a FootMotionStopped. + * @typedef message.motion.FootMotionStopped$Properties + * @type {Object} + */ + + /** + * Constructs a new FootMotionStopped. + * @exports message.motion.FootMotionStopped + * @constructor + * @param {message.motion.FootMotionStopped$Properties=} [properties] Properties to set + */ + function FootMotionStopped(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Creates a new FootMotionStopped instance using the specified properties. + * @param {message.motion.FootMotionStopped$Properties=} [properties] Properties to set + * @returns {message.motion.FootMotionStopped} FootMotionStopped instance + */ + FootMotionStopped.create = function create(properties) { + return new FootMotionStopped(properties); + }; + + /** + * Encodes the specified FootMotionStopped message. Does not implicitly {@link message.motion.FootMotionStopped.verify|verify} messages. + * @param {message.motion.FootMotionStopped$Properties} message FootMotionStopped message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + FootMotionStopped.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + return writer; + }; + + /** + * Encodes the specified FootMotionStopped message, length delimited. Does not implicitly {@link message.motion.FootMotionStopped.verify|verify} messages. + * @param {message.motion.FootMotionStopped$Properties} message FootMotionStopped message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + FootMotionStopped.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a FootMotionStopped message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.motion.FootMotionStopped} FootMotionStopped + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + FootMotionStopped.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.motion.FootMotionStopped(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a FootMotionStopped message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.motion.FootMotionStopped} FootMotionStopped + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + FootMotionStopped.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a FootMotionStopped message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + FootMotionStopped.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + return null; + }; + + /** + * Creates a FootMotionStopped message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.motion.FootMotionStopped} FootMotionStopped + */ + FootMotionStopped.fromObject = function fromObject(object) { + if (object instanceof $root.message.motion.FootMotionStopped) + return object; + return new $root.message.motion.FootMotionStopped(); + }; + + /** + * Creates a FootMotionStopped message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.motion.FootMotionStopped.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.motion.FootMotionStopped} FootMotionStopped + */ + FootMotionStopped.from = FootMotionStopped.fromObject; + + /** + * Creates a plain object from a FootMotionStopped message. Also converts values to other types if specified. + * @param {message.motion.FootMotionStopped} message FootMotionStopped + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + FootMotionStopped.toObject = function toObject() { + return {}; + }; + + /** + * Creates a plain object from this FootMotionStopped message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + FootMotionStopped.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this FootMotionStopped to JSON. + * @returns {Object.} JSON object + */ + FootMotionStopped.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return FootMotionStopped; + })(); + + motion.FootMotionUpdate = (function() { + + /** + * Properties of a FootMotionUpdate. + * @typedef message.motion.FootMotionUpdate$Properties + * @type {Object} + * @property {number} [phase] FootMotionUpdate phase. + * @property {number} [activeForwardLimb] FootMotionUpdate activeForwardLimb. + * @property {vec3$Properties} [leftFoot2D] FootMotionUpdate leftFoot2D. + * @property {vec3$Properties} [rightFoot2D] FootMotionUpdate rightFoot2D. + * @property {mat44$Properties} [leftFoot3D] FootMotionUpdate leftFoot3D. + * @property {mat44$Properties} [rightFoot3D] FootMotionUpdate rightFoot3D. + */ + + /** + * Constructs a new FootMotionUpdate. + * @exports message.motion.FootMotionUpdate + * @constructor + * @param {message.motion.FootMotionUpdate$Properties=} [properties] Properties to set + */ + function FootMotionUpdate(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * FootMotionUpdate phase. + * @type {number} + */ + FootMotionUpdate.prototype.phase = 0; + + /** + * FootMotionUpdate activeForwardLimb. + * @type {number} + */ + FootMotionUpdate.prototype.activeForwardLimb = 0; + + /** + * FootMotionUpdate leftFoot2D. + * @type {(vec3$Properties|null)} + */ + FootMotionUpdate.prototype.leftFoot2D = null; + + /** + * FootMotionUpdate rightFoot2D. + * @type {(vec3$Properties|null)} + */ + FootMotionUpdate.prototype.rightFoot2D = null; + + /** + * FootMotionUpdate leftFoot3D. + * @type {(mat44$Properties|null)} + */ + FootMotionUpdate.prototype.leftFoot3D = null; + + /** + * FootMotionUpdate rightFoot3D. + * @type {(mat44$Properties|null)} + */ + FootMotionUpdate.prototype.rightFoot3D = null; + + /** + * Creates a new FootMotionUpdate instance using the specified properties. + * @param {message.motion.FootMotionUpdate$Properties=} [properties] Properties to set + * @returns {message.motion.FootMotionUpdate} FootMotionUpdate instance + */ + FootMotionUpdate.create = function create(properties) { + return new FootMotionUpdate(properties); + }; + + /** + * Encodes the specified FootMotionUpdate message. Does not implicitly {@link message.motion.FootMotionUpdate.verify|verify} messages. + * @param {message.motion.FootMotionUpdate$Properties} message FootMotionUpdate message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + FootMotionUpdate.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.phase != null && message.hasOwnProperty("phase")) + writer.uint32(/* id 1, wireType 1 =*/9).double(message.phase); + if (message.activeForwardLimb != null && message.hasOwnProperty("activeForwardLimb")) + writer.uint32(/* id 2, wireType 0 =*/16).uint32(message.activeForwardLimb); + if (message.leftFoot2D != null && message.hasOwnProperty("leftFoot2D")) + $root.vec3.encode(message.leftFoot2D, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + if (message.rightFoot2D != null && message.hasOwnProperty("rightFoot2D")) + $root.vec3.encode(message.rightFoot2D, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); + if (message.leftFoot3D != null && message.hasOwnProperty("leftFoot3D")) + $root.mat44.encode(message.leftFoot3D, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); + if (message.rightFoot3D != null && message.hasOwnProperty("rightFoot3D")) + $root.mat44.encode(message.rightFoot3D, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified FootMotionUpdate message, length delimited. Does not implicitly {@link message.motion.FootMotionUpdate.verify|verify} messages. + * @param {message.motion.FootMotionUpdate$Properties} message FootMotionUpdate message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + FootMotionUpdate.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a FootMotionUpdate message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.motion.FootMotionUpdate} FootMotionUpdate + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + FootMotionUpdate.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.motion.FootMotionUpdate(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.phase = reader.double(); + break; + case 2: + message.activeForwardLimb = reader.uint32(); + break; + case 3: + message.leftFoot2D = $root.vec3.decode(reader, reader.uint32()); + break; + case 4: + message.rightFoot2D = $root.vec3.decode(reader, reader.uint32()); + break; + case 5: + message.leftFoot3D = $root.mat44.decode(reader, reader.uint32()); + break; + case 6: + message.rightFoot3D = $root.mat44.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a FootMotionUpdate message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.motion.FootMotionUpdate} FootMotionUpdate + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + FootMotionUpdate.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a FootMotionUpdate message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + FootMotionUpdate.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.phase != null && message.hasOwnProperty("phase")) + if (typeof message.phase !== "number") + return "phase: number expected"; + if (message.activeForwardLimb != null && message.hasOwnProperty("activeForwardLimb")) + if (!$util.isInteger(message.activeForwardLimb)) + return "activeForwardLimb: integer expected"; + if (message.leftFoot2D != null && message.hasOwnProperty("leftFoot2D")) { + var error = $root.vec3.verify(message.leftFoot2D); + if (error) + return "leftFoot2D." + error; + } + if (message.rightFoot2D != null && message.hasOwnProperty("rightFoot2D")) { + var error = $root.vec3.verify(message.rightFoot2D); + if (error) + return "rightFoot2D." + error; + } + if (message.leftFoot3D != null && message.hasOwnProperty("leftFoot3D")) { + var error = $root.mat44.verify(message.leftFoot3D); + if (error) + return "leftFoot3D." + error; + } + if (message.rightFoot3D != null && message.hasOwnProperty("rightFoot3D")) { + var error = $root.mat44.verify(message.rightFoot3D); + if (error) + return "rightFoot3D." + error; + } + return null; + }; + + /** + * Creates a FootMotionUpdate message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.motion.FootMotionUpdate} FootMotionUpdate + */ + FootMotionUpdate.fromObject = function fromObject(object) { + if (object instanceof $root.message.motion.FootMotionUpdate) + return object; + var message = new $root.message.motion.FootMotionUpdate(); + if (object.phase != null) + message.phase = Number(object.phase); + if (object.activeForwardLimb != null) + message.activeForwardLimb = object.activeForwardLimb >>> 0; + if (object.leftFoot2D != null) { + if (typeof object.leftFoot2D !== "object") + throw TypeError(".message.motion.FootMotionUpdate.leftFoot2D: object expected"); + message.leftFoot2D = $root.vec3.fromObject(object.leftFoot2D); + } + if (object.rightFoot2D != null) { + if (typeof object.rightFoot2D !== "object") + throw TypeError(".message.motion.FootMotionUpdate.rightFoot2D: object expected"); + message.rightFoot2D = $root.vec3.fromObject(object.rightFoot2D); + } + if (object.leftFoot3D != null) { + if (typeof object.leftFoot3D !== "object") + throw TypeError(".message.motion.FootMotionUpdate.leftFoot3D: object expected"); + message.leftFoot3D = $root.mat44.fromObject(object.leftFoot3D); + } + if (object.rightFoot3D != null) { + if (typeof object.rightFoot3D !== "object") + throw TypeError(".message.motion.FootMotionUpdate.rightFoot3D: object expected"); + message.rightFoot3D = $root.mat44.fromObject(object.rightFoot3D); + } + return message; + }; + + /** + * Creates a FootMotionUpdate message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.motion.FootMotionUpdate.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.motion.FootMotionUpdate} FootMotionUpdate + */ + FootMotionUpdate.from = FootMotionUpdate.fromObject; + + /** + * Creates a plain object from a FootMotionUpdate message. Also converts values to other types if specified. + * @param {message.motion.FootMotionUpdate} message FootMotionUpdate + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + FootMotionUpdate.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.phase = 0; + object.activeForwardLimb = 0; + object.leftFoot2D = null; + object.rightFoot2D = null; + object.leftFoot3D = null; + object.rightFoot3D = null; + } + if (message.phase != null && message.hasOwnProperty("phase")) + object.phase = message.phase; + if (message.activeForwardLimb != null && message.hasOwnProperty("activeForwardLimb")) + object.activeForwardLimb = message.activeForwardLimb; + if (message.leftFoot2D != null && message.hasOwnProperty("leftFoot2D")) + object.leftFoot2D = $root.vec3.toObject(message.leftFoot2D, options); + if (message.rightFoot2D != null && message.hasOwnProperty("rightFoot2D")) + object.rightFoot2D = $root.vec3.toObject(message.rightFoot2D, options); + if (message.leftFoot3D != null && message.hasOwnProperty("leftFoot3D")) + object.leftFoot3D = $root.mat44.toObject(message.leftFoot3D, options); + if (message.rightFoot3D != null && message.hasOwnProperty("rightFoot3D")) + object.rightFoot3D = $root.mat44.toObject(message.rightFoot3D, options); + return object; + }; + + /** + * Creates a plain object from this FootMotionUpdate message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + FootMotionUpdate.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this FootMotionUpdate to JSON. + * @returns {Object.} JSON object + */ + FootMotionUpdate.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return FootMotionUpdate; + })(); + + motion.NextFootTargetInfo = (function() { + + /** + * Properties of a NextFootTargetInfo. + * @typedef message.motion.NextFootTargetInfo$Properties + * @type {Object} + * @property {vec3$Properties} [leftFootSource] NextFootTargetInfo leftFootSource. + * @property {vec3$Properties} [rightFootSource] NextFootTargetInfo rightFootSource. + * @property {vec3$Properties} [supportMass] NextFootTargetInfo supportMass. + * @property {vec3$Properties} [leftFootDestination] NextFootTargetInfo leftFootDestination. + * @property {vec3$Properties} [rightFootDestination] NextFootTargetInfo rightFootDestination. + */ + + /** + * Constructs a new NextFootTargetInfo. + * @exports message.motion.NextFootTargetInfo + * @constructor + * @param {message.motion.NextFootTargetInfo$Properties=} [properties] Properties to set + */ + function NextFootTargetInfo(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * NextFootTargetInfo leftFootSource. + * @type {(vec3$Properties|null)} + */ + NextFootTargetInfo.prototype.leftFootSource = null; + + /** + * NextFootTargetInfo rightFootSource. + * @type {(vec3$Properties|null)} + */ + NextFootTargetInfo.prototype.rightFootSource = null; + + /** + * NextFootTargetInfo supportMass. + * @type {(vec3$Properties|null)} + */ + NextFootTargetInfo.prototype.supportMass = null; + + /** + * NextFootTargetInfo leftFootDestination. + * @type {(vec3$Properties|null)} + */ + NextFootTargetInfo.prototype.leftFootDestination = null; + + /** + * NextFootTargetInfo rightFootDestination. + * @type {(vec3$Properties|null)} + */ + NextFootTargetInfo.prototype.rightFootDestination = null; + + /** + * Creates a new NextFootTargetInfo instance using the specified properties. + * @param {message.motion.NextFootTargetInfo$Properties=} [properties] Properties to set + * @returns {message.motion.NextFootTargetInfo} NextFootTargetInfo instance + */ + NextFootTargetInfo.create = function create(properties) { + return new NextFootTargetInfo(properties); + }; + + /** + * Encodes the specified NextFootTargetInfo message. Does not implicitly {@link message.motion.NextFootTargetInfo.verify|verify} messages. + * @param {message.motion.NextFootTargetInfo$Properties} message NextFootTargetInfo message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + NextFootTargetInfo.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.leftFootSource != null && message.hasOwnProperty("leftFootSource")) + $root.vec3.encode(message.leftFootSource, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.rightFootSource != null && message.hasOwnProperty("rightFootSource")) + $root.vec3.encode(message.rightFootSource, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.supportMass != null && message.hasOwnProperty("supportMass")) + $root.vec3.encode(message.supportMass, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + if (message.leftFootDestination != null && message.hasOwnProperty("leftFootDestination")) + $root.vec3.encode(message.leftFootDestination, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); + if (message.rightFootDestination != null && message.hasOwnProperty("rightFootDestination")) + $root.vec3.encode(message.rightFootDestination, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified NextFootTargetInfo message, length delimited. Does not implicitly {@link message.motion.NextFootTargetInfo.verify|verify} messages. + * @param {message.motion.NextFootTargetInfo$Properties} message NextFootTargetInfo message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + NextFootTargetInfo.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a NextFootTargetInfo message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.motion.NextFootTargetInfo} NextFootTargetInfo + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + NextFootTargetInfo.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.motion.NextFootTargetInfo(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.leftFootSource = $root.vec3.decode(reader, reader.uint32()); + break; + case 2: + message.rightFootSource = $root.vec3.decode(reader, reader.uint32()); + break; + case 3: + message.supportMass = $root.vec3.decode(reader, reader.uint32()); + break; + case 4: + message.leftFootDestination = $root.vec3.decode(reader, reader.uint32()); + break; + case 5: + message.rightFootDestination = $root.vec3.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a NextFootTargetInfo message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.motion.NextFootTargetInfo} NextFootTargetInfo + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + NextFootTargetInfo.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a NextFootTargetInfo message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + NextFootTargetInfo.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.leftFootSource != null && message.hasOwnProperty("leftFootSource")) { + var error = $root.vec3.verify(message.leftFootSource); + if (error) + return "leftFootSource." + error; + } + if (message.rightFootSource != null && message.hasOwnProperty("rightFootSource")) { + var error = $root.vec3.verify(message.rightFootSource); + if (error) + return "rightFootSource." + error; + } + if (message.supportMass != null && message.hasOwnProperty("supportMass")) { + var error = $root.vec3.verify(message.supportMass); + if (error) + return "supportMass." + error; + } + if (message.leftFootDestination != null && message.hasOwnProperty("leftFootDestination")) { + var error = $root.vec3.verify(message.leftFootDestination); + if (error) + return "leftFootDestination." + error; + } + if (message.rightFootDestination != null && message.hasOwnProperty("rightFootDestination")) { + var error = $root.vec3.verify(message.rightFootDestination); + if (error) + return "rightFootDestination." + error; + } + return null; + }; + + /** + * Creates a NextFootTargetInfo message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.motion.NextFootTargetInfo} NextFootTargetInfo + */ + NextFootTargetInfo.fromObject = function fromObject(object) { + if (object instanceof $root.message.motion.NextFootTargetInfo) + return object; + var message = new $root.message.motion.NextFootTargetInfo(); + if (object.leftFootSource != null) { + if (typeof object.leftFootSource !== "object") + throw TypeError(".message.motion.NextFootTargetInfo.leftFootSource: object expected"); + message.leftFootSource = $root.vec3.fromObject(object.leftFootSource); + } + if (object.rightFootSource != null) { + if (typeof object.rightFootSource !== "object") + throw TypeError(".message.motion.NextFootTargetInfo.rightFootSource: object expected"); + message.rightFootSource = $root.vec3.fromObject(object.rightFootSource); + } + if (object.supportMass != null) { + if (typeof object.supportMass !== "object") + throw TypeError(".message.motion.NextFootTargetInfo.supportMass: object expected"); + message.supportMass = $root.vec3.fromObject(object.supportMass); + } + if (object.leftFootDestination != null) { + if (typeof object.leftFootDestination !== "object") + throw TypeError(".message.motion.NextFootTargetInfo.leftFootDestination: object expected"); + message.leftFootDestination = $root.vec3.fromObject(object.leftFootDestination); + } + if (object.rightFootDestination != null) { + if (typeof object.rightFootDestination !== "object") + throw TypeError(".message.motion.NextFootTargetInfo.rightFootDestination: object expected"); + message.rightFootDestination = $root.vec3.fromObject(object.rightFootDestination); + } + return message; + }; + + /** + * Creates a NextFootTargetInfo message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.motion.NextFootTargetInfo.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.motion.NextFootTargetInfo} NextFootTargetInfo + */ + NextFootTargetInfo.from = NextFootTargetInfo.fromObject; + + /** + * Creates a plain object from a NextFootTargetInfo message. Also converts values to other types if specified. + * @param {message.motion.NextFootTargetInfo} message NextFootTargetInfo + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + NextFootTargetInfo.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.leftFootSource = null; + object.rightFootSource = null; + object.supportMass = null; + object.leftFootDestination = null; + object.rightFootDestination = null; + } + if (message.leftFootSource != null && message.hasOwnProperty("leftFootSource")) + object.leftFootSource = $root.vec3.toObject(message.leftFootSource, options); + if (message.rightFootSource != null && message.hasOwnProperty("rightFootSource")) + object.rightFootSource = $root.vec3.toObject(message.rightFootSource, options); + if (message.supportMass != null && message.hasOwnProperty("supportMass")) + object.supportMass = $root.vec3.toObject(message.supportMass, options); + if (message.leftFootDestination != null && message.hasOwnProperty("leftFootDestination")) + object.leftFootDestination = $root.vec3.toObject(message.leftFootDestination, options); + if (message.rightFootDestination != null && message.hasOwnProperty("rightFootDestination")) + object.rightFootDestination = $root.vec3.toObject(message.rightFootDestination, options); + return object; + }; + + /** + * Creates a plain object from this NextFootTargetInfo message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + NextFootTargetInfo.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this NextFootTargetInfo to JSON. + * @returns {Object.} JSON object + */ + NextFootTargetInfo.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return NextFootTargetInfo; + })(); + + motion.FootStepRequested = (function() { + + /** + * Properties of a FootStepRequested. + * @typedef message.motion.FootStepRequested$Properties + * @type {Object} + * @property {boolean} [status] FootStepRequested status. + */ + + /** + * Constructs a new FootStepRequested. + * @exports message.motion.FootStepRequested + * @constructor + * @param {message.motion.FootStepRequested$Properties=} [properties] Properties to set + */ + function FootStepRequested(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * FootStepRequested status. + * @type {boolean} + */ + FootStepRequested.prototype.status = false; + + /** + * Creates a new FootStepRequested instance using the specified properties. + * @param {message.motion.FootStepRequested$Properties=} [properties] Properties to set + * @returns {message.motion.FootStepRequested} FootStepRequested instance + */ + FootStepRequested.create = function create(properties) { + return new FootStepRequested(properties); + }; + + /** + * Encodes the specified FootStepRequested message. Does not implicitly {@link message.motion.FootStepRequested.verify|verify} messages. + * @param {message.motion.FootStepRequested$Properties} message FootStepRequested message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + FootStepRequested.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.status != null && message.hasOwnProperty("status")) + writer.uint32(/* id 1, wireType 0 =*/8).bool(message.status); + return writer; + }; + + /** + * Encodes the specified FootStepRequested message, length delimited. Does not implicitly {@link message.motion.FootStepRequested.verify|verify} messages. + * @param {message.motion.FootStepRequested$Properties} message FootStepRequested message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + FootStepRequested.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a FootStepRequested message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.motion.FootStepRequested} FootStepRequested + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + FootStepRequested.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.motion.FootStepRequested(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.status = reader.bool(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a FootStepRequested message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.motion.FootStepRequested} FootStepRequested + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + FootStepRequested.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a FootStepRequested message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + FootStepRequested.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.status != null && message.hasOwnProperty("status")) + if (typeof message.status !== "boolean") + return "status: boolean expected"; + return null; + }; + + /** + * Creates a FootStepRequested message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.motion.FootStepRequested} FootStepRequested + */ + FootStepRequested.fromObject = function fromObject(object) { + if (object instanceof $root.message.motion.FootStepRequested) + return object; + var message = new $root.message.motion.FootStepRequested(); + if (object.status != null) + message.status = Boolean(object.status); + return message; + }; + + /** + * Creates a FootStepRequested message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.motion.FootStepRequested.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.motion.FootStepRequested} FootStepRequested + */ + FootStepRequested.from = FootStepRequested.fromObject; + + /** + * Creates a plain object from a FootStepRequested message. Also converts values to other types if specified. + * @param {message.motion.FootStepRequested} message FootStepRequested + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + FootStepRequested.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) + object.status = false; + if (message.status != null && message.hasOwnProperty("status")) + object.status = message.status; + return object; + }; + + /** + * Creates a plain object from this FootStepRequested message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + FootStepRequested.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this FootStepRequested to JSON. + * @returns {Object.} JSON object + */ + FootStepRequested.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return FootStepRequested; + })(); + + motion.FootStepCompleted = (function() { + + /** + * Properties of a FootStepCompleted. + * @typedef message.motion.FootStepCompleted$Properties + * @type {Object} + * @property {boolean} [status] FootStepCompleted status. + */ + + /** + * Constructs a new FootStepCompleted. + * @exports message.motion.FootStepCompleted + * @constructor + * @param {message.motion.FootStepCompleted$Properties=} [properties] Properties to set + */ + function FootStepCompleted(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * FootStepCompleted status. + * @type {boolean} + */ + FootStepCompleted.prototype.status = false; + + /** + * Creates a new FootStepCompleted instance using the specified properties. + * @param {message.motion.FootStepCompleted$Properties=} [properties] Properties to set + * @returns {message.motion.FootStepCompleted} FootStepCompleted instance + */ + FootStepCompleted.create = function create(properties) { + return new FootStepCompleted(properties); + }; + + /** + * Encodes the specified FootStepCompleted message. Does not implicitly {@link message.motion.FootStepCompleted.verify|verify} messages. + * @param {message.motion.FootStepCompleted$Properties} message FootStepCompleted message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + FootStepCompleted.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.status != null && message.hasOwnProperty("status")) + writer.uint32(/* id 1, wireType 0 =*/8).bool(message.status); + return writer; + }; + + /** + * Encodes the specified FootStepCompleted message, length delimited. Does not implicitly {@link message.motion.FootStepCompleted.verify|verify} messages. + * @param {message.motion.FootStepCompleted$Properties} message FootStepCompleted message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + FootStepCompleted.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a FootStepCompleted message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.motion.FootStepCompleted} FootStepCompleted + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + FootStepCompleted.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.motion.FootStepCompleted(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.status = reader.bool(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a FootStepCompleted message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.motion.FootStepCompleted} FootStepCompleted + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + FootStepCompleted.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a FootStepCompleted message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + FootStepCompleted.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.status != null && message.hasOwnProperty("status")) + if (typeof message.status !== "boolean") + return "status: boolean expected"; + return null; + }; + + /** + * Creates a FootStepCompleted message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.motion.FootStepCompleted} FootStepCompleted + */ + FootStepCompleted.fromObject = function fromObject(object) { + if (object instanceof $root.message.motion.FootStepCompleted) + return object; + var message = new $root.message.motion.FootStepCompleted(); + if (object.status != null) + message.status = Boolean(object.status); + return message; + }; + + /** + * Creates a FootStepCompleted message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.motion.FootStepCompleted.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.motion.FootStepCompleted} FootStepCompleted + */ + FootStepCompleted.from = FootStepCompleted.fromObject; + + /** + * Creates a plain object from a FootStepCompleted message. Also converts values to other types if specified. + * @param {message.motion.FootStepCompleted} message FootStepCompleted + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + FootStepCompleted.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) + object.status = false; + if (message.status != null && message.hasOwnProperty("status")) + object.status = message.status; + return object; + }; + + /** + * Creates a plain object from this FootStepCompleted message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + FootStepCompleted.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this FootStepCompleted to JSON. + * @returns {Object.} JSON object + */ + FootStepCompleted.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return FootStepCompleted; + })(); + + motion.EnableFootMotion = (function() { + + /** + * Properties of an EnableFootMotion. + * @typedef message.motion.EnableFootMotion$Properties + * @type {Object} + */ + + /** + * Constructs a new EnableFootMotion. + * @exports message.motion.EnableFootMotion + * @constructor + * @param {message.motion.EnableFootMotion$Properties=} [properties] Properties to set + */ + function EnableFootMotion(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Creates a new EnableFootMotion instance using the specified properties. + * @param {message.motion.EnableFootMotion$Properties=} [properties] Properties to set + * @returns {message.motion.EnableFootMotion} EnableFootMotion instance + */ + EnableFootMotion.create = function create(properties) { + return new EnableFootMotion(properties); + }; + + /** + * Encodes the specified EnableFootMotion message. Does not implicitly {@link message.motion.EnableFootMotion.verify|verify} messages. + * @param {message.motion.EnableFootMotion$Properties} message EnableFootMotion message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + EnableFootMotion.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + return writer; + }; + + /** + * Encodes the specified EnableFootMotion message, length delimited. Does not implicitly {@link message.motion.EnableFootMotion.verify|verify} messages. + * @param {message.motion.EnableFootMotion$Properties} message EnableFootMotion message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + EnableFootMotion.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes an EnableFootMotion message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.motion.EnableFootMotion} EnableFootMotion + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + EnableFootMotion.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.motion.EnableFootMotion(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes an EnableFootMotion message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.motion.EnableFootMotion} EnableFootMotion + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + EnableFootMotion.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies an EnableFootMotion message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + EnableFootMotion.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + return null; + }; + + /** + * Creates an EnableFootMotion message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.motion.EnableFootMotion} EnableFootMotion + */ + EnableFootMotion.fromObject = function fromObject(object) { + if (object instanceof $root.message.motion.EnableFootMotion) + return object; + return new $root.message.motion.EnableFootMotion(); + }; + + /** + * Creates an EnableFootMotion message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.motion.EnableFootMotion.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.motion.EnableFootMotion} EnableFootMotion + */ + EnableFootMotion.from = EnableFootMotion.fromObject; + + /** + * Creates a plain object from an EnableFootMotion message. Also converts values to other types if specified. + * @param {message.motion.EnableFootMotion} message EnableFootMotion + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + EnableFootMotion.toObject = function toObject() { + return {}; + }; + + /** + * Creates a plain object from this EnableFootMotion message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + EnableFootMotion.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this EnableFootMotion to JSON. + * @returns {Object.} JSON object + */ + EnableFootMotion.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return EnableFootMotion; + })(); + + motion.DisableFootMotion = (function() { + + /** + * Properties of a DisableFootMotion. + * @typedef message.motion.DisableFootMotion$Properties + * @type {Object} + */ + + /** + * Constructs a new DisableFootMotion. + * @exports message.motion.DisableFootMotion + * @constructor + * @param {message.motion.DisableFootMotion$Properties=} [properties] Properties to set + */ + function DisableFootMotion(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Creates a new DisableFootMotion instance using the specified properties. + * @param {message.motion.DisableFootMotion$Properties=} [properties] Properties to set + * @returns {message.motion.DisableFootMotion} DisableFootMotion instance + */ + DisableFootMotion.create = function create(properties) { + return new DisableFootMotion(properties); + }; + + /** + * Encodes the specified DisableFootMotion message. Does not implicitly {@link message.motion.DisableFootMotion.verify|verify} messages. + * @param {message.motion.DisableFootMotion$Properties} message DisableFootMotion message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + DisableFootMotion.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + return writer; + }; + + /** + * Encodes the specified DisableFootMotion message, length delimited. Does not implicitly {@link message.motion.DisableFootMotion.verify|verify} messages. + * @param {message.motion.DisableFootMotion$Properties} message DisableFootMotion message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + DisableFootMotion.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a DisableFootMotion message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.motion.DisableFootMotion} DisableFootMotion + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + DisableFootMotion.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.motion.DisableFootMotion(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a DisableFootMotion message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.motion.DisableFootMotion} DisableFootMotion + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + DisableFootMotion.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a DisableFootMotion message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + DisableFootMotion.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + return null; + }; + + /** + * Creates a DisableFootMotion message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.motion.DisableFootMotion} DisableFootMotion + */ + DisableFootMotion.fromObject = function fromObject(object) { + if (object instanceof $root.message.motion.DisableFootMotion) + return object; + return new $root.message.motion.DisableFootMotion(); + }; + + /** + * Creates a DisableFootMotion message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.motion.DisableFootMotion.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.motion.DisableFootMotion} DisableFootMotion + */ + DisableFootMotion.from = DisableFootMotion.fromObject; + + /** + * Creates a plain object from a DisableFootMotion message. Also converts values to other types if specified. + * @param {message.motion.DisableFootMotion} message DisableFootMotion + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + DisableFootMotion.toObject = function toObject() { + return {}; + }; + + /** + * Creates a plain object from this DisableFootMotion message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + DisableFootMotion.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this DisableFootMotion to JSON. + * @returns {Object.} JSON object + */ + DisableFootMotion.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return DisableFootMotion; + })(); + + motion.FootPlacementStopped = (function() { + + /** + * Properties of a FootPlacementStopped. + * @typedef message.motion.FootPlacementStopped$Properties + * @type {Object} + */ + + /** + * Constructs a new FootPlacementStopped. + * @exports message.motion.FootPlacementStopped + * @constructor + * @param {message.motion.FootPlacementStopped$Properties=} [properties] Properties to set + */ + function FootPlacementStopped(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Creates a new FootPlacementStopped instance using the specified properties. + * @param {message.motion.FootPlacementStopped$Properties=} [properties] Properties to set + * @returns {message.motion.FootPlacementStopped} FootPlacementStopped instance + */ + FootPlacementStopped.create = function create(properties) { + return new FootPlacementStopped(properties); + }; + + /** + * Encodes the specified FootPlacementStopped message. Does not implicitly {@link message.motion.FootPlacementStopped.verify|verify} messages. + * @param {message.motion.FootPlacementStopped$Properties} message FootPlacementStopped message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + FootPlacementStopped.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + return writer; + }; + + /** + * Encodes the specified FootPlacementStopped message, length delimited. Does not implicitly {@link message.motion.FootPlacementStopped.verify|verify} messages. + * @param {message.motion.FootPlacementStopped$Properties} message FootPlacementStopped message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + FootPlacementStopped.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a FootPlacementStopped message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.motion.FootPlacementStopped} FootPlacementStopped + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + FootPlacementStopped.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.motion.FootPlacementStopped(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a FootPlacementStopped message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.motion.FootPlacementStopped} FootPlacementStopped + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + FootPlacementStopped.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a FootPlacementStopped message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + FootPlacementStopped.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + return null; + }; + + /** + * Creates a FootPlacementStopped message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.motion.FootPlacementStopped} FootPlacementStopped + */ + FootPlacementStopped.fromObject = function fromObject(object) { + if (object instanceof $root.message.motion.FootPlacementStopped) + return object; + return new $root.message.motion.FootPlacementStopped(); + }; + + /** + * Creates a FootPlacementStopped message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.motion.FootPlacementStopped.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.motion.FootPlacementStopped} FootPlacementStopped + */ + FootPlacementStopped.from = FootPlacementStopped.fromObject; + + /** + * Creates a plain object from a FootPlacementStopped message. Also converts values to other types if specified. + * @param {message.motion.FootPlacementStopped} message FootPlacementStopped + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + FootPlacementStopped.toObject = function toObject() { + return {}; + }; + + /** + * Creates a plain object from this FootPlacementStopped message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + FootPlacementStopped.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this FootPlacementStopped to JSON. + * @returns {Object.} JSON object + */ + FootPlacementStopped.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return FootPlacementStopped; + })(); + + motion.NewStepTargetInfo = (function() { + + /** + * Properties of a NewStepTargetInfo. + * @typedef message.motion.NewStepTargetInfo$Properties + * @type {Object} + * @property {number} [targetTime] NewStepTargetInfo targetTime. + * @property {vec3$Properties} [velocityCurrent] NewStepTargetInfo velocityCurrent. + * @property {number} [activeForwardLimb] NewStepTargetInfo activeForwardLimb. + */ + + /** + * Constructs a new NewStepTargetInfo. + * @exports message.motion.NewStepTargetInfo + * @constructor + * @param {message.motion.NewStepTargetInfo$Properties=} [properties] Properties to set + */ + function NewStepTargetInfo(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * NewStepTargetInfo targetTime. + * @type {number} + */ + NewStepTargetInfo.prototype.targetTime = 0; + + /** + * NewStepTargetInfo velocityCurrent. + * @type {(vec3$Properties|null)} + */ + NewStepTargetInfo.prototype.velocityCurrent = null; + + /** + * NewStepTargetInfo activeForwardLimb. + * @type {number} + */ + NewStepTargetInfo.prototype.activeForwardLimb = 0; + + /** + * Creates a new NewStepTargetInfo instance using the specified properties. + * @param {message.motion.NewStepTargetInfo$Properties=} [properties] Properties to set + * @returns {message.motion.NewStepTargetInfo} NewStepTargetInfo instance + */ + NewStepTargetInfo.create = function create(properties) { + return new NewStepTargetInfo(properties); + }; + + /** + * Encodes the specified NewStepTargetInfo message. Does not implicitly {@link message.motion.NewStepTargetInfo.verify|verify} messages. + * @param {message.motion.NewStepTargetInfo$Properties} message NewStepTargetInfo message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + NewStepTargetInfo.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.targetTime != null && message.hasOwnProperty("targetTime")) + writer.uint32(/* id 1, wireType 1 =*/9).double(message.targetTime); + if (message.velocityCurrent != null && message.hasOwnProperty("velocityCurrent")) + $root.vec3.encode(message.velocityCurrent, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.activeForwardLimb != null && message.hasOwnProperty("activeForwardLimb")) + writer.uint32(/* id 3, wireType 0 =*/24).uint32(message.activeForwardLimb); + return writer; + }; + + /** + * Encodes the specified NewStepTargetInfo message, length delimited. Does not implicitly {@link message.motion.NewStepTargetInfo.verify|verify} messages. + * @param {message.motion.NewStepTargetInfo$Properties} message NewStepTargetInfo message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + NewStepTargetInfo.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a NewStepTargetInfo message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.motion.NewStepTargetInfo} NewStepTargetInfo + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + NewStepTargetInfo.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.motion.NewStepTargetInfo(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.targetTime = reader.double(); + break; + case 2: + message.velocityCurrent = $root.vec3.decode(reader, reader.uint32()); + break; + case 3: + message.activeForwardLimb = reader.uint32(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a NewStepTargetInfo message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.motion.NewStepTargetInfo} NewStepTargetInfo + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + NewStepTargetInfo.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a NewStepTargetInfo message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + NewStepTargetInfo.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.targetTime != null && message.hasOwnProperty("targetTime")) + if (typeof message.targetTime !== "number") + return "targetTime: number expected"; + if (message.velocityCurrent != null && message.hasOwnProperty("velocityCurrent")) { + var error = $root.vec3.verify(message.velocityCurrent); + if (error) + return "velocityCurrent." + error; + } + if (message.activeForwardLimb != null && message.hasOwnProperty("activeForwardLimb")) + if (!$util.isInteger(message.activeForwardLimb)) + return "activeForwardLimb: integer expected"; + return null; + }; + + /** + * Creates a NewStepTargetInfo message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.motion.NewStepTargetInfo} NewStepTargetInfo + */ + NewStepTargetInfo.fromObject = function fromObject(object) { + if (object instanceof $root.message.motion.NewStepTargetInfo) + return object; + var message = new $root.message.motion.NewStepTargetInfo(); + if (object.targetTime != null) + message.targetTime = Number(object.targetTime); + if (object.velocityCurrent != null) { + if (typeof object.velocityCurrent !== "object") + throw TypeError(".message.motion.NewStepTargetInfo.velocityCurrent: object expected"); + message.velocityCurrent = $root.vec3.fromObject(object.velocityCurrent); + } + if (object.activeForwardLimb != null) + message.activeForwardLimb = object.activeForwardLimb >>> 0; + return message; + }; + + /** + * Creates a NewStepTargetInfo message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.motion.NewStepTargetInfo.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.motion.NewStepTargetInfo} NewStepTargetInfo + */ + NewStepTargetInfo.from = NewStepTargetInfo.fromObject; + + /** + * Creates a plain object from a NewStepTargetInfo message. Also converts values to other types if specified. + * @param {message.motion.NewStepTargetInfo} message NewStepTargetInfo + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + NewStepTargetInfo.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.targetTime = 0; + object.velocityCurrent = null; + object.activeForwardLimb = 0; + } + if (message.targetTime != null && message.hasOwnProperty("targetTime")) + object.targetTime = message.targetTime; + if (message.velocityCurrent != null && message.hasOwnProperty("velocityCurrent")) + object.velocityCurrent = $root.vec3.toObject(message.velocityCurrent, options); + if (message.activeForwardLimb != null && message.hasOwnProperty("activeForwardLimb")) + object.activeForwardLimb = message.activeForwardLimb; + return object; + }; + + /** + * Creates a plain object from this NewStepTargetInfo message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + NewStepTargetInfo.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this NewStepTargetInfo to JSON. + * @returns {Object.} JSON object + */ + NewStepTargetInfo.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return NewStepTargetInfo; + })(); + + motion.NewFootTargetInfo = (function() { + + /** + * Properties of a NewFootTargetInfo. + * @typedef message.motion.NewFootTargetInfo$Properties + * @type {Object} + * @property {vec3$Properties} [leftFootSource] NewFootTargetInfo leftFootSource. + * @property {vec3$Properties} [rightFootSource] NewFootTargetInfo rightFootSource. + * @property {vec3$Properties} [supportMass] NewFootTargetInfo supportMass. + * @property {vec3$Properties} [leftFootDestination] NewFootTargetInfo leftFootDestination. + * @property {vec3$Properties} [rightFootDestination] NewFootTargetInfo rightFootDestination. + */ + + /** + * Constructs a new NewFootTargetInfo. + * @exports message.motion.NewFootTargetInfo + * @constructor + * @param {message.motion.NewFootTargetInfo$Properties=} [properties] Properties to set + */ + function NewFootTargetInfo(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * NewFootTargetInfo leftFootSource. + * @type {(vec3$Properties|null)} + */ + NewFootTargetInfo.prototype.leftFootSource = null; + + /** + * NewFootTargetInfo rightFootSource. + * @type {(vec3$Properties|null)} + */ + NewFootTargetInfo.prototype.rightFootSource = null; + + /** + * NewFootTargetInfo supportMass. + * @type {(vec3$Properties|null)} + */ + NewFootTargetInfo.prototype.supportMass = null; + + /** + * NewFootTargetInfo leftFootDestination. + * @type {(vec3$Properties|null)} + */ + NewFootTargetInfo.prototype.leftFootDestination = null; + + /** + * NewFootTargetInfo rightFootDestination. + * @type {(vec3$Properties|null)} + */ + NewFootTargetInfo.prototype.rightFootDestination = null; + + /** + * Creates a new NewFootTargetInfo instance using the specified properties. + * @param {message.motion.NewFootTargetInfo$Properties=} [properties] Properties to set + * @returns {message.motion.NewFootTargetInfo} NewFootTargetInfo instance + */ + NewFootTargetInfo.create = function create(properties) { + return new NewFootTargetInfo(properties); + }; + + /** + * Encodes the specified NewFootTargetInfo message. Does not implicitly {@link message.motion.NewFootTargetInfo.verify|verify} messages. + * @param {message.motion.NewFootTargetInfo$Properties} message NewFootTargetInfo message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + NewFootTargetInfo.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.leftFootSource != null && message.hasOwnProperty("leftFootSource")) + $root.vec3.encode(message.leftFootSource, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.rightFootSource != null && message.hasOwnProperty("rightFootSource")) + $root.vec3.encode(message.rightFootSource, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.supportMass != null && message.hasOwnProperty("supportMass")) + $root.vec3.encode(message.supportMass, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + if (message.leftFootDestination != null && message.hasOwnProperty("leftFootDestination")) + $root.vec3.encode(message.leftFootDestination, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); + if (message.rightFootDestination != null && message.hasOwnProperty("rightFootDestination")) + $root.vec3.encode(message.rightFootDestination, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified NewFootTargetInfo message, length delimited. Does not implicitly {@link message.motion.NewFootTargetInfo.verify|verify} messages. + * @param {message.motion.NewFootTargetInfo$Properties} message NewFootTargetInfo message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + NewFootTargetInfo.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a NewFootTargetInfo message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.motion.NewFootTargetInfo} NewFootTargetInfo + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + NewFootTargetInfo.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.motion.NewFootTargetInfo(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.leftFootSource = $root.vec3.decode(reader, reader.uint32()); + break; + case 2: + message.rightFootSource = $root.vec3.decode(reader, reader.uint32()); + break; + case 3: + message.supportMass = $root.vec3.decode(reader, reader.uint32()); + break; + case 4: + message.leftFootDestination = $root.vec3.decode(reader, reader.uint32()); + break; + case 5: + message.rightFootDestination = $root.vec3.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a NewFootTargetInfo message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.motion.NewFootTargetInfo} NewFootTargetInfo + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + NewFootTargetInfo.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a NewFootTargetInfo message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + NewFootTargetInfo.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.leftFootSource != null && message.hasOwnProperty("leftFootSource")) { + var error = $root.vec3.verify(message.leftFootSource); + if (error) + return "leftFootSource." + error; + } + if (message.rightFootSource != null && message.hasOwnProperty("rightFootSource")) { + var error = $root.vec3.verify(message.rightFootSource); + if (error) + return "rightFootSource." + error; + } + if (message.supportMass != null && message.hasOwnProperty("supportMass")) { + var error = $root.vec3.verify(message.supportMass); + if (error) + return "supportMass." + error; + } + if (message.leftFootDestination != null && message.hasOwnProperty("leftFootDestination")) { + var error = $root.vec3.verify(message.leftFootDestination); + if (error) + return "leftFootDestination." + error; + } + if (message.rightFootDestination != null && message.hasOwnProperty("rightFootDestination")) { + var error = $root.vec3.verify(message.rightFootDestination); + if (error) + return "rightFootDestination." + error; + } + return null; + }; + + /** + * Creates a NewFootTargetInfo message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.motion.NewFootTargetInfo} NewFootTargetInfo + */ + NewFootTargetInfo.fromObject = function fromObject(object) { + if (object instanceof $root.message.motion.NewFootTargetInfo) + return object; + var message = new $root.message.motion.NewFootTargetInfo(); + if (object.leftFootSource != null) { + if (typeof object.leftFootSource !== "object") + throw TypeError(".message.motion.NewFootTargetInfo.leftFootSource: object expected"); + message.leftFootSource = $root.vec3.fromObject(object.leftFootSource); + } + if (object.rightFootSource != null) { + if (typeof object.rightFootSource !== "object") + throw TypeError(".message.motion.NewFootTargetInfo.rightFootSource: object expected"); + message.rightFootSource = $root.vec3.fromObject(object.rightFootSource); + } + if (object.supportMass != null) { + if (typeof object.supportMass !== "object") + throw TypeError(".message.motion.NewFootTargetInfo.supportMass: object expected"); + message.supportMass = $root.vec3.fromObject(object.supportMass); + } + if (object.leftFootDestination != null) { + if (typeof object.leftFootDestination !== "object") + throw TypeError(".message.motion.NewFootTargetInfo.leftFootDestination: object expected"); + message.leftFootDestination = $root.vec3.fromObject(object.leftFootDestination); + } + if (object.rightFootDestination != null) { + if (typeof object.rightFootDestination !== "object") + throw TypeError(".message.motion.NewFootTargetInfo.rightFootDestination: object expected"); + message.rightFootDestination = $root.vec3.fromObject(object.rightFootDestination); + } + return message; + }; + + /** + * Creates a NewFootTargetInfo message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.motion.NewFootTargetInfo.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.motion.NewFootTargetInfo} NewFootTargetInfo + */ + NewFootTargetInfo.from = NewFootTargetInfo.fromObject; + + /** + * Creates a plain object from a NewFootTargetInfo message. Also converts values to other types if specified. + * @param {message.motion.NewFootTargetInfo} message NewFootTargetInfo + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + NewFootTargetInfo.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.leftFootSource = null; + object.rightFootSource = null; + object.supportMass = null; + object.leftFootDestination = null; + object.rightFootDestination = null; + } + if (message.leftFootSource != null && message.hasOwnProperty("leftFootSource")) + object.leftFootSource = $root.vec3.toObject(message.leftFootSource, options); + if (message.rightFootSource != null && message.hasOwnProperty("rightFootSource")) + object.rightFootSource = $root.vec3.toObject(message.rightFootSource, options); + if (message.supportMass != null && message.hasOwnProperty("supportMass")) + object.supportMass = $root.vec3.toObject(message.supportMass, options); + if (message.leftFootDestination != null && message.hasOwnProperty("leftFootDestination")) + object.leftFootDestination = $root.vec3.toObject(message.leftFootDestination, options); + if (message.rightFootDestination != null && message.hasOwnProperty("rightFootDestination")) + object.rightFootDestination = $root.vec3.toObject(message.rightFootDestination, options); + return object; + }; + + /** + * Creates a plain object from this NewFootTargetInfo message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + NewFootTargetInfo.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this NewFootTargetInfo to JSON. + * @returns {Object.} JSON object + */ + NewFootTargetInfo.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return NewFootTargetInfo; + })(); + + motion.EnableFootPlacement = (function() { + + /** + * Properties of an EnableFootPlacement. + * @typedef message.motion.EnableFootPlacement$Properties + * @type {Object} + */ + + /** + * Constructs a new EnableFootPlacement. + * @exports message.motion.EnableFootPlacement + * @constructor + * @param {message.motion.EnableFootPlacement$Properties=} [properties] Properties to set + */ + function EnableFootPlacement(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Creates a new EnableFootPlacement instance using the specified properties. + * @param {message.motion.EnableFootPlacement$Properties=} [properties] Properties to set + * @returns {message.motion.EnableFootPlacement} EnableFootPlacement instance + */ + EnableFootPlacement.create = function create(properties) { + return new EnableFootPlacement(properties); + }; + + /** + * Encodes the specified EnableFootPlacement message. Does not implicitly {@link message.motion.EnableFootPlacement.verify|verify} messages. + * @param {message.motion.EnableFootPlacement$Properties} message EnableFootPlacement message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + EnableFootPlacement.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + return writer; + }; + + /** + * Encodes the specified EnableFootPlacement message, length delimited. Does not implicitly {@link message.motion.EnableFootPlacement.verify|verify} messages. + * @param {message.motion.EnableFootPlacement$Properties} message EnableFootPlacement message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + EnableFootPlacement.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes an EnableFootPlacement message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.motion.EnableFootPlacement} EnableFootPlacement + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + EnableFootPlacement.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.motion.EnableFootPlacement(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes an EnableFootPlacement message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.motion.EnableFootPlacement} EnableFootPlacement + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + EnableFootPlacement.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies an EnableFootPlacement message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + EnableFootPlacement.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + return null; + }; + + /** + * Creates an EnableFootPlacement message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.motion.EnableFootPlacement} EnableFootPlacement + */ + EnableFootPlacement.fromObject = function fromObject(object) { + if (object instanceof $root.message.motion.EnableFootPlacement) + return object; + return new $root.message.motion.EnableFootPlacement(); + }; + + /** + * Creates an EnableFootPlacement message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.motion.EnableFootPlacement.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.motion.EnableFootPlacement} EnableFootPlacement + */ + EnableFootPlacement.from = EnableFootPlacement.fromObject; + + /** + * Creates a plain object from an EnableFootPlacement message. Also converts values to other types if specified. + * @param {message.motion.EnableFootPlacement} message EnableFootPlacement + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + EnableFootPlacement.toObject = function toObject() { + return {}; + }; + + /** + * Creates a plain object from this EnableFootPlacement message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + EnableFootPlacement.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this EnableFootPlacement to JSON. + * @returns {Object.} JSON object + */ + EnableFootPlacement.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return EnableFootPlacement; + })(); + + motion.DisableFootPlacement = (function() { + + /** + * Properties of a DisableFootPlacement. + * @typedef message.motion.DisableFootPlacement$Properties + * @type {Object} + */ + + /** + * Constructs a new DisableFootPlacement. + * @exports message.motion.DisableFootPlacement + * @constructor + * @param {message.motion.DisableFootPlacement$Properties=} [properties] Properties to set + */ + function DisableFootPlacement(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Creates a new DisableFootPlacement instance using the specified properties. + * @param {message.motion.DisableFootPlacement$Properties=} [properties] Properties to set + * @returns {message.motion.DisableFootPlacement} DisableFootPlacement instance + */ + DisableFootPlacement.create = function create(properties) { + return new DisableFootPlacement(properties); + }; + + /** + * Encodes the specified DisableFootPlacement message. Does not implicitly {@link message.motion.DisableFootPlacement.verify|verify} messages. + * @param {message.motion.DisableFootPlacement$Properties} message DisableFootPlacement message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + DisableFootPlacement.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + return writer; + }; + + /** + * Encodes the specified DisableFootPlacement message, length delimited. Does not implicitly {@link message.motion.DisableFootPlacement.verify|verify} messages. + * @param {message.motion.DisableFootPlacement$Properties} message DisableFootPlacement message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + DisableFootPlacement.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a DisableFootPlacement message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.motion.DisableFootPlacement} DisableFootPlacement + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + DisableFootPlacement.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.motion.DisableFootPlacement(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a DisableFootPlacement message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.motion.DisableFootPlacement} DisableFootPlacement + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + DisableFootPlacement.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a DisableFootPlacement message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + DisableFootPlacement.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + return null; + }; + + /** + * Creates a DisableFootPlacement message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.motion.DisableFootPlacement} DisableFootPlacement + */ + DisableFootPlacement.fromObject = function fromObject(object) { + if (object instanceof $root.message.motion.DisableFootPlacement) + return object; + return new $root.message.motion.DisableFootPlacement(); + }; + + /** + * Creates a DisableFootPlacement message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.motion.DisableFootPlacement.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.motion.DisableFootPlacement} DisableFootPlacement + */ + DisableFootPlacement.from = DisableFootPlacement.fromObject; + + /** + * Creates a plain object from a DisableFootPlacement message. Also converts values to other types if specified. + * @param {message.motion.DisableFootPlacement} message DisableFootPlacement + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + DisableFootPlacement.toObject = function toObject() { + return {}; + }; + + /** + * Creates a plain object from this DisableFootPlacement message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + DisableFootPlacement.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this DisableFootPlacement to JSON. + * @returns {Object.} JSON object + */ + DisableFootPlacement.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return DisableFootPlacement; + })(); + + motion.ExecuteGetup = (function() { + + /** + * Properties of an ExecuteGetup. + * @typedef message.motion.ExecuteGetup$Properties + * @type {Object} + */ + + /** + * Constructs a new ExecuteGetup. + * @exports message.motion.ExecuteGetup + * @constructor + * @param {message.motion.ExecuteGetup$Properties=} [properties] Properties to set + */ + function ExecuteGetup(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Creates a new ExecuteGetup instance using the specified properties. + * @param {message.motion.ExecuteGetup$Properties=} [properties] Properties to set + * @returns {message.motion.ExecuteGetup} ExecuteGetup instance + */ + ExecuteGetup.create = function create(properties) { + return new ExecuteGetup(properties); + }; + + /** + * Encodes the specified ExecuteGetup message. Does not implicitly {@link message.motion.ExecuteGetup.verify|verify} messages. + * @param {message.motion.ExecuteGetup$Properties} message ExecuteGetup message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ExecuteGetup.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + return writer; + }; + + /** + * Encodes the specified ExecuteGetup message, length delimited. Does not implicitly {@link message.motion.ExecuteGetup.verify|verify} messages. + * @param {message.motion.ExecuteGetup$Properties} message ExecuteGetup message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ExecuteGetup.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes an ExecuteGetup message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.motion.ExecuteGetup} ExecuteGetup + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ExecuteGetup.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.motion.ExecuteGetup(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes an ExecuteGetup message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.motion.ExecuteGetup} ExecuteGetup + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ExecuteGetup.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies an ExecuteGetup message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + ExecuteGetup.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + return null; + }; + + /** + * Creates an ExecuteGetup message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.motion.ExecuteGetup} ExecuteGetup + */ + ExecuteGetup.fromObject = function fromObject(object) { + if (object instanceof $root.message.motion.ExecuteGetup) + return object; + return new $root.message.motion.ExecuteGetup(); + }; + + /** + * Creates an ExecuteGetup message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.motion.ExecuteGetup.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.motion.ExecuteGetup} ExecuteGetup + */ + ExecuteGetup.from = ExecuteGetup.fromObject; + + /** + * Creates a plain object from an ExecuteGetup message. Also converts values to other types if specified. + * @param {message.motion.ExecuteGetup} message ExecuteGetup + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + ExecuteGetup.toObject = function toObject() { + return {}; + }; + + /** + * Creates a plain object from this ExecuteGetup message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + ExecuteGetup.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this ExecuteGetup to JSON. + * @returns {Object.} JSON object + */ + ExecuteGetup.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return ExecuteGetup; + })(); + + motion.KillGetup = (function() { + + /** + * Properties of a KillGetup. + * @typedef message.motion.KillGetup$Properties + * @type {Object} + */ + + /** + * Constructs a new KillGetup. + * @exports message.motion.KillGetup + * @constructor + * @param {message.motion.KillGetup$Properties=} [properties] Properties to set + */ + function KillGetup(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Creates a new KillGetup instance using the specified properties. + * @param {message.motion.KillGetup$Properties=} [properties] Properties to set + * @returns {message.motion.KillGetup} KillGetup instance + */ + KillGetup.create = function create(properties) { + return new KillGetup(properties); + }; + + /** + * Encodes the specified KillGetup message. Does not implicitly {@link message.motion.KillGetup.verify|verify} messages. + * @param {message.motion.KillGetup$Properties} message KillGetup message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + KillGetup.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + return writer; + }; + + /** + * Encodes the specified KillGetup message, length delimited. Does not implicitly {@link message.motion.KillGetup.verify|verify} messages. + * @param {message.motion.KillGetup$Properties} message KillGetup message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + KillGetup.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a KillGetup message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.motion.KillGetup} KillGetup + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + KillGetup.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.motion.KillGetup(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a KillGetup message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.motion.KillGetup} KillGetup + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + KillGetup.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a KillGetup message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + KillGetup.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + return null; + }; + + /** + * Creates a KillGetup message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.motion.KillGetup} KillGetup + */ + KillGetup.fromObject = function fromObject(object) { + if (object instanceof $root.message.motion.KillGetup) + return object; + return new $root.message.motion.KillGetup(); + }; + + /** + * Creates a KillGetup message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.motion.KillGetup.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.motion.KillGetup} KillGetup + */ + KillGetup.from = KillGetup.fromObject; + + /** + * Creates a plain object from a KillGetup message. Also converts values to other types if specified. + * @param {message.motion.KillGetup} message KillGetup + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + KillGetup.toObject = function toObject() { + return {}; + }; + + /** + * Creates a plain object from this KillGetup message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + KillGetup.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this KillGetup to JSON. + * @returns {Object.} JSON object + */ + KillGetup.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return KillGetup; + })(); + + motion.HeadCommand = (function() { + + /** + * Properties of a HeadCommand. + * @typedef message.motion.HeadCommand$Properties + * @type {Object} + * @property {number} [yaw] HeadCommand yaw. + * @property {number} [pitch] HeadCommand pitch. + * @property {boolean} [robotSpace] HeadCommand robotSpace. + */ + + /** + * Constructs a new HeadCommand. + * @classdesc Tell the head where to look in world space. + * This command is interpreted such that the robot will use IMU data to fixate at these angles in the world even when rotating. + * + * @author Jake Fountain + * @exports message.motion.HeadCommand + * @constructor + * @param {message.motion.HeadCommand$Properties=} [properties] Properties to set + */ + function HeadCommand(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * HeadCommand yaw. + * @type {number} + */ + HeadCommand.prototype.yaw = 0; + + /** + * HeadCommand pitch. + * @type {number} + */ + HeadCommand.prototype.pitch = 0; + + /** + * HeadCommand robotSpace. + * @type {boolean} + */ + HeadCommand.prototype.robotSpace = false; + + /** + * Creates a new HeadCommand instance using the specified properties. + * @param {message.motion.HeadCommand$Properties=} [properties] Properties to set + * @returns {message.motion.HeadCommand} HeadCommand instance + */ + HeadCommand.create = function create(properties) { + return new HeadCommand(properties); + }; + + /** + * Encodes the specified HeadCommand message. Does not implicitly {@link message.motion.HeadCommand.verify|verify} messages. + * @param {message.motion.HeadCommand$Properties} message HeadCommand message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + HeadCommand.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.yaw != null && message.hasOwnProperty("yaw")) + writer.uint32(/* id 1, wireType 5 =*/13).float(message.yaw); + if (message.pitch != null && message.hasOwnProperty("pitch")) + writer.uint32(/* id 2, wireType 5 =*/21).float(message.pitch); + if (message.robotSpace != null && message.hasOwnProperty("robotSpace")) + writer.uint32(/* id 3, wireType 0 =*/24).bool(message.robotSpace); + return writer; + }; + + /** + * Encodes the specified HeadCommand message, length delimited. Does not implicitly {@link message.motion.HeadCommand.verify|verify} messages. + * @param {message.motion.HeadCommand$Properties} message HeadCommand message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + HeadCommand.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a HeadCommand message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.motion.HeadCommand} HeadCommand + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + HeadCommand.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.motion.HeadCommand(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.yaw = reader.float(); + break; + case 2: + message.pitch = reader.float(); + break; + case 3: + message.robotSpace = reader.bool(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a HeadCommand message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.motion.HeadCommand} HeadCommand + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + HeadCommand.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a HeadCommand message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + HeadCommand.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.yaw != null && message.hasOwnProperty("yaw")) + if (typeof message.yaw !== "number") + return "yaw: number expected"; + if (message.pitch != null && message.hasOwnProperty("pitch")) + if (typeof message.pitch !== "number") + return "pitch: number expected"; + if (message.robotSpace != null && message.hasOwnProperty("robotSpace")) + if (typeof message.robotSpace !== "boolean") + return "robotSpace: boolean expected"; + return null; + }; + + /** + * Creates a HeadCommand message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.motion.HeadCommand} HeadCommand + */ + HeadCommand.fromObject = function fromObject(object) { + if (object instanceof $root.message.motion.HeadCommand) + return object; + var message = new $root.message.motion.HeadCommand(); + if (object.yaw != null) + message.yaw = Number(object.yaw); + if (object.pitch != null) + message.pitch = Number(object.pitch); + if (object.robotSpace != null) + message.robotSpace = Boolean(object.robotSpace); + return message; + }; + + /** + * Creates a HeadCommand message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.motion.HeadCommand.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.motion.HeadCommand} HeadCommand + */ + HeadCommand.from = HeadCommand.fromObject; + + /** + * Creates a plain object from a HeadCommand message. Also converts values to other types if specified. + * @param {message.motion.HeadCommand} message HeadCommand + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + HeadCommand.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.yaw = 0; + object.pitch = 0; + object.robotSpace = false; + } + if (message.yaw != null && message.hasOwnProperty("yaw")) + object.yaw = message.yaw; + if (message.pitch != null && message.hasOwnProperty("pitch")) + object.pitch = message.pitch; + if (message.robotSpace != null && message.hasOwnProperty("robotSpace")) + object.robotSpace = message.robotSpace; + return object; + }; + + /** + * Creates a plain object from this HeadCommand message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + HeadCommand.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this HeadCommand to JSON. + * @returns {Object.} JSON object + */ + HeadCommand.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return HeadCommand; + })(); + + motion.HeadMotionUpdate = (function() { + + /** + * Properties of a HeadMotionUpdate. + * @typedef message.motion.HeadMotionUpdate$Properties + * @type {Object} + */ + + /** + * Constructs a new HeadMotionUpdate. + * @exports message.motion.HeadMotionUpdate + * @constructor + * @param {message.motion.HeadMotionUpdate$Properties=} [properties] Properties to set + */ + function HeadMotionUpdate(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Creates a new HeadMotionUpdate instance using the specified properties. + * @param {message.motion.HeadMotionUpdate$Properties=} [properties] Properties to set + * @returns {message.motion.HeadMotionUpdate} HeadMotionUpdate instance + */ + HeadMotionUpdate.create = function create(properties) { + return new HeadMotionUpdate(properties); + }; + + /** + * Encodes the specified HeadMotionUpdate message. Does not implicitly {@link message.motion.HeadMotionUpdate.verify|verify} messages. + * @param {message.motion.HeadMotionUpdate$Properties} message HeadMotionUpdate message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + HeadMotionUpdate.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + return writer; + }; + + /** + * Encodes the specified HeadMotionUpdate message, length delimited. Does not implicitly {@link message.motion.HeadMotionUpdate.verify|verify} messages. + * @param {message.motion.HeadMotionUpdate$Properties} message HeadMotionUpdate message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + HeadMotionUpdate.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a HeadMotionUpdate message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.motion.HeadMotionUpdate} HeadMotionUpdate + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + HeadMotionUpdate.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.motion.HeadMotionUpdate(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a HeadMotionUpdate message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.motion.HeadMotionUpdate} HeadMotionUpdate + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + HeadMotionUpdate.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a HeadMotionUpdate message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + HeadMotionUpdate.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + return null; + }; + + /** + * Creates a HeadMotionUpdate message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.motion.HeadMotionUpdate} HeadMotionUpdate + */ + HeadMotionUpdate.fromObject = function fromObject(object) { + if (object instanceof $root.message.motion.HeadMotionUpdate) + return object; + return new $root.message.motion.HeadMotionUpdate(); + }; + + /** + * Creates a HeadMotionUpdate message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.motion.HeadMotionUpdate.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.motion.HeadMotionUpdate} HeadMotionUpdate + */ + HeadMotionUpdate.from = HeadMotionUpdate.fromObject; + + /** + * Creates a plain object from a HeadMotionUpdate message. Also converts values to other types if specified. + * @param {message.motion.HeadMotionUpdate} message HeadMotionUpdate + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + HeadMotionUpdate.toObject = function toObject() { + return {}; + }; + + /** + * Creates a plain object from this HeadMotionUpdate message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + HeadMotionUpdate.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this HeadMotionUpdate to JSON. + * @returns {Object.} JSON object + */ + HeadMotionUpdate.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return HeadMotionUpdate; + })(); + + /** + * TODO document + * + * @author Trent Houliston + * @author Brendan Annable + * @name KickCommandType + * @memberof message.motion + * @enum {number} + * @property {number} NORMAL=0 NORMAL value + * @property {number} POWER=1 POWER value + */ + motion.KickCommandType = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "NORMAL"] = 0; + values[valuesById[1] = "POWER"] = 1; + return values; + })(); + + motion.KickCommand = (function() { + + /** + * Properties of a KickCommand. + * @typedef message.motion.KickCommand$Properties + * @type {Object} + * @property {vec3$Properties} [target] KickCommand target. + * @property {vec3$Properties} [direction] KickCommand direction. + * @property {message.motion.KickCommandType} [kickCommandType] KickCommand kickCommandType. + */ + + /** + * Constructs a new KickCommand. + * @exports message.motion.KickCommand + * @constructor + * @param {message.motion.KickCommand$Properties=} [properties] Properties to set + */ + function KickCommand(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * KickCommand target. + * @type {(vec3$Properties|null)} + */ + KickCommand.prototype.target = null; + + /** + * KickCommand direction. + * @type {(vec3$Properties|null)} + */ + KickCommand.prototype.direction = null; + + /** + * KickCommand kickCommandType. + * @type {message.motion.KickCommandType} + */ + KickCommand.prototype.kickCommandType = 0; + + /** + * Creates a new KickCommand instance using the specified properties. + * @param {message.motion.KickCommand$Properties=} [properties] Properties to set + * @returns {message.motion.KickCommand} KickCommand instance + */ + KickCommand.create = function create(properties) { + return new KickCommand(properties); + }; + + /** + * Encodes the specified KickCommand message. Does not implicitly {@link message.motion.KickCommand.verify|verify} messages. + * @param {message.motion.KickCommand$Properties} message KickCommand message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + KickCommand.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.target != null && message.hasOwnProperty("target")) + $root.vec3.encode(message.target, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.direction != null && message.hasOwnProperty("direction")) + $root.vec3.encode(message.direction, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.kickCommandType != null && message.hasOwnProperty("kickCommandType")) + writer.uint32(/* id 3, wireType 0 =*/24).uint32(message.kickCommandType); + return writer; + }; + + /** + * Encodes the specified KickCommand message, length delimited. Does not implicitly {@link message.motion.KickCommand.verify|verify} messages. + * @param {message.motion.KickCommand$Properties} message KickCommand message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + KickCommand.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a KickCommand message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.motion.KickCommand} KickCommand + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + KickCommand.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.motion.KickCommand(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.target = $root.vec3.decode(reader, reader.uint32()); + break; + case 2: + message.direction = $root.vec3.decode(reader, reader.uint32()); + break; + case 3: + message.kickCommandType = reader.uint32(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a KickCommand message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.motion.KickCommand} KickCommand + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + KickCommand.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a KickCommand message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + KickCommand.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.target != null && message.hasOwnProperty("target")) { + var error = $root.vec3.verify(message.target); + if (error) + return "target." + error; + } + if (message.direction != null && message.hasOwnProperty("direction")) { + var error = $root.vec3.verify(message.direction); + if (error) + return "direction." + error; + } + if (message.kickCommandType != null && message.hasOwnProperty("kickCommandType")) + switch (message.kickCommandType) { + default: + return "kickCommandType: enum value expected"; + case 0: + case 1: + break; + } + return null; + }; + + /** + * Creates a KickCommand message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.motion.KickCommand} KickCommand + */ + KickCommand.fromObject = function fromObject(object) { + if (object instanceof $root.message.motion.KickCommand) + return object; + var message = new $root.message.motion.KickCommand(); + if (object.target != null) { + if (typeof object.target !== "object") + throw TypeError(".message.motion.KickCommand.target: object expected"); + message.target = $root.vec3.fromObject(object.target); + } + if (object.direction != null) { + if (typeof object.direction !== "object") + throw TypeError(".message.motion.KickCommand.direction: object expected"); + message.direction = $root.vec3.fromObject(object.direction); + } + switch (object.kickCommandType) { + case "NORMAL": + case 0: + message.kickCommandType = 0; + break; + case "POWER": + case 1: + message.kickCommandType = 1; + break; + } + return message; + }; + + /** + * Creates a KickCommand message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.motion.KickCommand.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.motion.KickCommand} KickCommand + */ + KickCommand.from = KickCommand.fromObject; + + /** + * Creates a plain object from a KickCommand message. Also converts values to other types if specified. + * @param {message.motion.KickCommand} message KickCommand + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + KickCommand.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.target = null; + object.direction = null; + object.kickCommandType = options.enums === String ? "NORMAL" : 0; + } + if (message.target != null && message.hasOwnProperty("target")) + object.target = $root.vec3.toObject(message.target, options); + if (message.direction != null && message.hasOwnProperty("direction")) + object.direction = $root.vec3.toObject(message.direction, options); + if (message.kickCommandType != null && message.hasOwnProperty("kickCommandType")) + object.kickCommandType = options.enums === String ? $root.message.motion.KickCommandType[message.kickCommandType] : message.kickCommandType; + return object; + }; + + /** + * Creates a plain object from this KickCommand message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + KickCommand.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this KickCommand to JSON. + * @returns {Object.} JSON object + */ + KickCommand.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return KickCommand; + })(); + + motion.KickScriptCommand = (function() { + + /** + * Properties of a KickScriptCommand. + * @typedef message.motion.KickScriptCommand$Properties + * @type {Object} + * @property {vec3$Properties} [direction] KickScriptCommand direction. + * @property {number} [leg] KickScriptCommand leg. + */ + + /** + * Constructs a new KickScriptCommand. + * @classdesc TODO document + * + * @author Trent Houliston + * @author Brendan Annable + * @exports message.motion.KickScriptCommand + * @constructor + * @param {message.motion.KickScriptCommand$Properties=} [properties] Properties to set + */ + function KickScriptCommand(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * KickScriptCommand direction. + * @type {(vec3$Properties|null)} + */ + KickScriptCommand.prototype.direction = null; + + /** + * KickScriptCommand leg. + * @type {number} + */ + KickScriptCommand.prototype.leg = 0; + + /** + * Creates a new KickScriptCommand instance using the specified properties. + * @param {message.motion.KickScriptCommand$Properties=} [properties] Properties to set + * @returns {message.motion.KickScriptCommand} KickScriptCommand instance + */ + KickScriptCommand.create = function create(properties) { + return new KickScriptCommand(properties); + }; + + /** + * Encodes the specified KickScriptCommand message. Does not implicitly {@link message.motion.KickScriptCommand.verify|verify} messages. + * @param {message.motion.KickScriptCommand$Properties} message KickScriptCommand message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + KickScriptCommand.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.direction != null && message.hasOwnProperty("direction")) + $root.vec3.encode(message.direction, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.leg != null && message.hasOwnProperty("leg")) + writer.uint32(/* id 2, wireType 0 =*/16).uint32(message.leg); + return writer; + }; + + /** + * Encodes the specified KickScriptCommand message, length delimited. Does not implicitly {@link message.motion.KickScriptCommand.verify|verify} messages. + * @param {message.motion.KickScriptCommand$Properties} message KickScriptCommand message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + KickScriptCommand.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a KickScriptCommand message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.motion.KickScriptCommand} KickScriptCommand + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + KickScriptCommand.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.motion.KickScriptCommand(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.direction = $root.vec3.decode(reader, reader.uint32()); + break; + case 2: + message.leg = reader.uint32(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a KickScriptCommand message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.motion.KickScriptCommand} KickScriptCommand + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + KickScriptCommand.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a KickScriptCommand message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + KickScriptCommand.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.direction != null && message.hasOwnProperty("direction")) { + var error = $root.vec3.verify(message.direction); + if (error) + return "direction." + error; + } + if (message.leg != null && message.hasOwnProperty("leg")) + if (!$util.isInteger(message.leg)) + return "leg: integer expected"; + return null; + }; + + /** + * Creates a KickScriptCommand message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.motion.KickScriptCommand} KickScriptCommand + */ + KickScriptCommand.fromObject = function fromObject(object) { + if (object instanceof $root.message.motion.KickScriptCommand) + return object; + var message = new $root.message.motion.KickScriptCommand(); + if (object.direction != null) { + if (typeof object.direction !== "object") + throw TypeError(".message.motion.KickScriptCommand.direction: object expected"); + message.direction = $root.vec3.fromObject(object.direction); + } + if (object.leg != null) + message.leg = object.leg >>> 0; + return message; + }; + + /** + * Creates a KickScriptCommand message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.motion.KickScriptCommand.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.motion.KickScriptCommand} KickScriptCommand + */ + KickScriptCommand.from = KickScriptCommand.fromObject; + + /** + * Creates a plain object from a KickScriptCommand message. Also converts values to other types if specified. + * @param {message.motion.KickScriptCommand} message KickScriptCommand + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + KickScriptCommand.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.direction = null; + object.leg = 0; + } + if (message.direction != null && message.hasOwnProperty("direction")) + object.direction = $root.vec3.toObject(message.direction, options); + if (message.leg != null && message.hasOwnProperty("leg")) + object.leg = message.leg; + return object; + }; + + /** + * Creates a plain object from this KickScriptCommand message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + KickScriptCommand.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this KickScriptCommand to JSON. + * @returns {Object.} JSON object + */ + KickScriptCommand.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return KickScriptCommand; + })(); + + motion.KickPlannerConfig = (function() { + + /** + * Properties of a KickPlannerConfig. + * @typedef message.motion.KickPlannerConfig$Properties + * @type {Object} + * @property {number} [maxBallDistance] KickPlannerConfig maxBallDistance. + * @property {number} [kickCorridorWidth] KickPlannerConfig kickCorridorWidth. + * @property {number} [secondsNotSeenLimit] KickPlannerConfig secondsNotSeenLimit. + * @property {number} [kickForwardAngleLimit] KickPlannerConfig kickForwardAngleLimit. + */ + + /** + * Constructs a new KickPlannerConfig. + * @exports message.motion.KickPlannerConfig + * @constructor + * @param {message.motion.KickPlannerConfig$Properties=} [properties] Properties to set + */ + function KickPlannerConfig(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * KickPlannerConfig maxBallDistance. + * @type {number} + */ + KickPlannerConfig.prototype.maxBallDistance = 0; + + /** + * KickPlannerConfig kickCorridorWidth. + * @type {number} + */ + KickPlannerConfig.prototype.kickCorridorWidth = 0; + + /** + * KickPlannerConfig secondsNotSeenLimit. + * @type {number} + */ + KickPlannerConfig.prototype.secondsNotSeenLimit = 0; + + /** + * KickPlannerConfig kickForwardAngleLimit. + * @type {number} + */ + KickPlannerConfig.prototype.kickForwardAngleLimit = 0; + + /** + * Creates a new KickPlannerConfig instance using the specified properties. + * @param {message.motion.KickPlannerConfig$Properties=} [properties] Properties to set + * @returns {message.motion.KickPlannerConfig} KickPlannerConfig instance + */ + KickPlannerConfig.create = function create(properties) { + return new KickPlannerConfig(properties); + }; + + /** + * Encodes the specified KickPlannerConfig message. Does not implicitly {@link message.motion.KickPlannerConfig.verify|verify} messages. + * @param {message.motion.KickPlannerConfig$Properties} message KickPlannerConfig message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + KickPlannerConfig.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.maxBallDistance != null && message.hasOwnProperty("maxBallDistance")) + writer.uint32(/* id 1, wireType 5 =*/13).float(message.maxBallDistance); + if (message.kickCorridorWidth != null && message.hasOwnProperty("kickCorridorWidth")) + writer.uint32(/* id 2, wireType 5 =*/21).float(message.kickCorridorWidth); + if (message.secondsNotSeenLimit != null && message.hasOwnProperty("secondsNotSeenLimit")) + writer.uint32(/* id 3, wireType 5 =*/29).float(message.secondsNotSeenLimit); + if (message.kickForwardAngleLimit != null && message.hasOwnProperty("kickForwardAngleLimit")) + writer.uint32(/* id 4, wireType 5 =*/37).float(message.kickForwardAngleLimit); + return writer; + }; + + /** + * Encodes the specified KickPlannerConfig message, length delimited. Does not implicitly {@link message.motion.KickPlannerConfig.verify|verify} messages. + * @param {message.motion.KickPlannerConfig$Properties} message KickPlannerConfig message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + KickPlannerConfig.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a KickPlannerConfig message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.motion.KickPlannerConfig} KickPlannerConfig + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + KickPlannerConfig.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.motion.KickPlannerConfig(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.maxBallDistance = reader.float(); + break; + case 2: + message.kickCorridorWidth = reader.float(); + break; + case 3: + message.secondsNotSeenLimit = reader.float(); + break; + case 4: + message.kickForwardAngleLimit = reader.float(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a KickPlannerConfig message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.motion.KickPlannerConfig} KickPlannerConfig + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + KickPlannerConfig.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a KickPlannerConfig message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + KickPlannerConfig.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.maxBallDistance != null && message.hasOwnProperty("maxBallDistance")) + if (typeof message.maxBallDistance !== "number") + return "maxBallDistance: number expected"; + if (message.kickCorridorWidth != null && message.hasOwnProperty("kickCorridorWidth")) + if (typeof message.kickCorridorWidth !== "number") + return "kickCorridorWidth: number expected"; + if (message.secondsNotSeenLimit != null && message.hasOwnProperty("secondsNotSeenLimit")) + if (typeof message.secondsNotSeenLimit !== "number") + return "secondsNotSeenLimit: number expected"; + if (message.kickForwardAngleLimit != null && message.hasOwnProperty("kickForwardAngleLimit")) + if (typeof message.kickForwardAngleLimit !== "number") + return "kickForwardAngleLimit: number expected"; + return null; + }; + + /** + * Creates a KickPlannerConfig message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.motion.KickPlannerConfig} KickPlannerConfig + */ + KickPlannerConfig.fromObject = function fromObject(object) { + if (object instanceof $root.message.motion.KickPlannerConfig) + return object; + var message = new $root.message.motion.KickPlannerConfig(); + if (object.maxBallDistance != null) + message.maxBallDistance = Number(object.maxBallDistance); + if (object.kickCorridorWidth != null) + message.kickCorridorWidth = Number(object.kickCorridorWidth); + if (object.secondsNotSeenLimit != null) + message.secondsNotSeenLimit = Number(object.secondsNotSeenLimit); + if (object.kickForwardAngleLimit != null) + message.kickForwardAngleLimit = Number(object.kickForwardAngleLimit); + return message; + }; + + /** + * Creates a KickPlannerConfig message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.motion.KickPlannerConfig.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.motion.KickPlannerConfig} KickPlannerConfig + */ + KickPlannerConfig.from = KickPlannerConfig.fromObject; + + /** + * Creates a plain object from a KickPlannerConfig message. Also converts values to other types if specified. + * @param {message.motion.KickPlannerConfig} message KickPlannerConfig + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + KickPlannerConfig.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.maxBallDistance = 0; + object.kickCorridorWidth = 0; + object.secondsNotSeenLimit = 0; + object.kickForwardAngleLimit = 0; + } + if (message.maxBallDistance != null && message.hasOwnProperty("maxBallDistance")) + object.maxBallDistance = message.maxBallDistance; + if (message.kickCorridorWidth != null && message.hasOwnProperty("kickCorridorWidth")) + object.kickCorridorWidth = message.kickCorridorWidth; + if (message.secondsNotSeenLimit != null && message.hasOwnProperty("secondsNotSeenLimit")) + object.secondsNotSeenLimit = message.secondsNotSeenLimit; + if (message.kickForwardAngleLimit != null && message.hasOwnProperty("kickForwardAngleLimit")) + object.kickForwardAngleLimit = message.kickForwardAngleLimit; + return object; + }; + + /** + * Creates a plain object from this KickPlannerConfig message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + KickPlannerConfig.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this KickPlannerConfig to JSON. + * @returns {Object.} JSON object + */ + KickPlannerConfig.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return KickPlannerConfig; + })(); + + motion.KickFinished = (function() { + + /** + * Properties of a KickFinished. + * @typedef message.motion.KickFinished$Properties + * @type {Object} + */ + + /** + * Constructs a new KickFinished. + * @exports message.motion.KickFinished + * @constructor + * @param {message.motion.KickFinished$Properties=} [properties] Properties to set + */ + function KickFinished(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Creates a new KickFinished instance using the specified properties. + * @param {message.motion.KickFinished$Properties=} [properties] Properties to set + * @returns {message.motion.KickFinished} KickFinished instance + */ + KickFinished.create = function create(properties) { + return new KickFinished(properties); + }; + + /** + * Encodes the specified KickFinished message. Does not implicitly {@link message.motion.KickFinished.verify|verify} messages. + * @param {message.motion.KickFinished$Properties} message KickFinished message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + KickFinished.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + return writer; + }; + + /** + * Encodes the specified KickFinished message, length delimited. Does not implicitly {@link message.motion.KickFinished.verify|verify} messages. + * @param {message.motion.KickFinished$Properties} message KickFinished message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + KickFinished.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a KickFinished message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.motion.KickFinished} KickFinished + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + KickFinished.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.motion.KickFinished(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a KickFinished message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.motion.KickFinished} KickFinished + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + KickFinished.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a KickFinished message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + KickFinished.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + return null; + }; + + /** + * Creates a KickFinished message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.motion.KickFinished} KickFinished + */ + KickFinished.fromObject = function fromObject(object) { + if (object instanceof $root.message.motion.KickFinished) + return object; + return new $root.message.motion.KickFinished(); + }; + + /** + * Creates a KickFinished message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.motion.KickFinished.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.motion.KickFinished} KickFinished + */ + KickFinished.from = KickFinished.fromObject; + + /** + * Creates a plain object from a KickFinished message. Also converts values to other types if specified. + * @param {message.motion.KickFinished} message KickFinished + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + KickFinished.toObject = function toObject() { + return {}; + }; + + /** + * Creates a plain object from this KickFinished message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + KickFinished.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this KickFinished to JSON. + * @returns {Object.} JSON object + */ + KickFinished.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return KickFinished; + })(); + + motion.IKKickParams = (function() { + + /** + * Properties of a IKKickParams. + * @typedef message.motion.IKKickParams$Properties + * @type {Object} + * @property {number} [standHeight] IKKickParams standHeight. + */ + + /** + * Constructs a new IKKickParams. + * @exports message.motion.IKKickParams + * @constructor + * @param {message.motion.IKKickParams$Properties=} [properties] Properties to set + */ + function IKKickParams(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * IKKickParams standHeight. + * @type {number} + */ + IKKickParams.prototype.standHeight = 0; + + /** + * Creates a new IKKickParams instance using the specified properties. + * @param {message.motion.IKKickParams$Properties=} [properties] Properties to set + * @returns {message.motion.IKKickParams} IKKickParams instance + */ + IKKickParams.create = function create(properties) { + return new IKKickParams(properties); + }; + + /** + * Encodes the specified IKKickParams message. Does not implicitly {@link message.motion.IKKickParams.verify|verify} messages. + * @param {message.motion.IKKickParams$Properties} message IKKickParams message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + IKKickParams.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.standHeight != null && message.hasOwnProperty("standHeight")) + writer.uint32(/* id 1, wireType 5 =*/13).float(message.standHeight); + return writer; + }; + + /** + * Encodes the specified IKKickParams message, length delimited. Does not implicitly {@link message.motion.IKKickParams.verify|verify} messages. + * @param {message.motion.IKKickParams$Properties} message IKKickParams message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + IKKickParams.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a IKKickParams message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.motion.IKKickParams} IKKickParams + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + IKKickParams.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.motion.IKKickParams(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.standHeight = reader.float(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a IKKickParams message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.motion.IKKickParams} IKKickParams + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + IKKickParams.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a IKKickParams message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + IKKickParams.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.standHeight != null && message.hasOwnProperty("standHeight")) + if (typeof message.standHeight !== "number") + return "standHeight: number expected"; + return null; + }; + + /** + * Creates a IKKickParams message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.motion.IKKickParams} IKKickParams + */ + IKKickParams.fromObject = function fromObject(object) { + if (object instanceof $root.message.motion.IKKickParams) + return object; + var message = new $root.message.motion.IKKickParams(); + if (object.standHeight != null) + message.standHeight = Number(object.standHeight); + return message; + }; + + /** + * Creates a IKKickParams message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.motion.IKKickParams.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.motion.IKKickParams} IKKickParams + */ + IKKickParams.from = IKKickParams.fromObject; + + /** + * Creates a plain object from a IKKickParams message. Also converts values to other types if specified. + * @param {message.motion.IKKickParams} message IKKickParams + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + IKKickParams.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) + object.standHeight = 0; + if (message.standHeight != null && message.hasOwnProperty("standHeight")) + object.standHeight = message.standHeight; + return object; + }; + + /** + * Creates a plain object from this IKKickParams message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + IKKickParams.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this IKKickParams to JSON. + * @returns {Object.} JSON object + */ + IKKickParams.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return IKKickParams; + })(); + + /** + * BodySide enum. + * @name BodySide + * @memberof message.motion + * @enum {number} + * @property {number} LEFT=0 LEFT value + * @property {number} RIGHT=1 RIGHT value + */ + motion.BodySide = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "LEFT"] = 0; + values[valuesById[1] = "RIGHT"] = 1; + return values; + })(); + + motion.KinematicsModel = (function() { + + /** + * Properties of a KinematicsModel. + * @typedef message.motion.KinematicsModel$Properties + * @type {Object} + * @property {message.motion.KinematicsModel.Leg$Properties} [leg] KinematicsModel leg. + * @property {message.motion.KinematicsModel.Head$Properties} [head] KinematicsModel head. + * @property {message.motion.KinematicsModel.Arm$Properties} [arm] KinematicsModel arm. + * @property {message.motion.KinematicsModel.MassModel$Properties} [massModel] KinematicsModel massModel. + * @property {number} [TEAMDARWINCHEST_TO_ORIGIN] KinematicsModel TEAMDARWINCHEST_TO_ORIGIN. + */ + + /** + * Constructs a new KinematicsModel. + * @exports message.motion.KinematicsModel + * @constructor + * @param {message.motion.KinematicsModel$Properties=} [properties] Properties to set + */ + function KinematicsModel(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * KinematicsModel leg. + * @type {(message.motion.KinematicsModel.Leg$Properties|null)} + */ + KinematicsModel.prototype.leg = null; + + /** + * KinematicsModel head. + * @type {(message.motion.KinematicsModel.Head$Properties|null)} + */ + KinematicsModel.prototype.head = null; + + /** + * KinematicsModel arm. + * @type {(message.motion.KinematicsModel.Arm$Properties|null)} + */ + KinematicsModel.prototype.arm = null; + + /** + * KinematicsModel massModel. + * @type {(message.motion.KinematicsModel.MassModel$Properties|null)} + */ + KinematicsModel.prototype.massModel = null; + + /** + * KinematicsModel TEAMDARWINCHEST_TO_ORIGIN. + * @type {number} + */ + KinematicsModel.prototype.TEAMDARWINCHEST_TO_ORIGIN = 0; + + /** + * Creates a new KinematicsModel instance using the specified properties. + * @param {message.motion.KinematicsModel$Properties=} [properties] Properties to set + * @returns {message.motion.KinematicsModel} KinematicsModel instance + */ + KinematicsModel.create = function create(properties) { + return new KinematicsModel(properties); + }; + + /** + * Encodes the specified KinematicsModel message. Does not implicitly {@link message.motion.KinematicsModel.verify|verify} messages. + * @param {message.motion.KinematicsModel$Properties} message KinematicsModel message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + KinematicsModel.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.leg != null && message.hasOwnProperty("leg")) + $root.message.motion.KinematicsModel.Leg.encode(message.leg, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.head != null && message.hasOwnProperty("head")) + $root.message.motion.KinematicsModel.Head.encode(message.head, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.arm != null && message.hasOwnProperty("arm")) + $root.message.motion.KinematicsModel.Arm.encode(message.arm, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + if (message.massModel != null && message.hasOwnProperty("massModel")) + $root.message.motion.KinematicsModel.MassModel.encode(message.massModel, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); + if (message.TEAMDARWINCHEST_TO_ORIGIN != null && message.hasOwnProperty("TEAMDARWINCHEST_TO_ORIGIN")) + writer.uint32(/* id 5, wireType 5 =*/45).float(message.TEAMDARWINCHEST_TO_ORIGIN); + return writer; + }; + + /** + * Encodes the specified KinematicsModel message, length delimited. Does not implicitly {@link message.motion.KinematicsModel.verify|verify} messages. + * @param {message.motion.KinematicsModel$Properties} message KinematicsModel message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + KinematicsModel.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a KinematicsModel message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.motion.KinematicsModel} KinematicsModel + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + KinematicsModel.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.motion.KinematicsModel(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.leg = $root.message.motion.KinematicsModel.Leg.decode(reader, reader.uint32()); + break; + case 2: + message.head = $root.message.motion.KinematicsModel.Head.decode(reader, reader.uint32()); + break; + case 3: + message.arm = $root.message.motion.KinematicsModel.Arm.decode(reader, reader.uint32()); + break; + case 4: + message.massModel = $root.message.motion.KinematicsModel.MassModel.decode(reader, reader.uint32()); + break; + case 5: + message.TEAMDARWINCHEST_TO_ORIGIN = reader.float(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a KinematicsModel message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.motion.KinematicsModel} KinematicsModel + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + KinematicsModel.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a KinematicsModel message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + KinematicsModel.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.leg != null && message.hasOwnProperty("leg")) { + var error = $root.message.motion.KinematicsModel.Leg.verify(message.leg); + if (error) + return "leg." + error; + } + if (message.head != null && message.hasOwnProperty("head")) { + var error = $root.message.motion.KinematicsModel.Head.verify(message.head); + if (error) + return "head." + error; + } + if (message.arm != null && message.hasOwnProperty("arm")) { + var error = $root.message.motion.KinematicsModel.Arm.verify(message.arm); + if (error) + return "arm." + error; + } + if (message.massModel != null && message.hasOwnProperty("massModel")) { + var error = $root.message.motion.KinematicsModel.MassModel.verify(message.massModel); + if (error) + return "massModel." + error; + } + if (message.TEAMDARWINCHEST_TO_ORIGIN != null && message.hasOwnProperty("TEAMDARWINCHEST_TO_ORIGIN")) + if (typeof message.TEAMDARWINCHEST_TO_ORIGIN !== "number") + return "TEAMDARWINCHEST_TO_ORIGIN: number expected"; + return null; + }; + + /** + * Creates a KinematicsModel message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.motion.KinematicsModel} KinematicsModel + */ + KinematicsModel.fromObject = function fromObject(object) { + if (object instanceof $root.message.motion.KinematicsModel) + return object; + var message = new $root.message.motion.KinematicsModel(); + if (object.leg != null) { + if (typeof object.leg !== "object") + throw TypeError(".message.motion.KinematicsModel.leg: object expected"); + message.leg = $root.message.motion.KinematicsModel.Leg.fromObject(object.leg); + } + if (object.head != null) { + if (typeof object.head !== "object") + throw TypeError(".message.motion.KinematicsModel.head: object expected"); + message.head = $root.message.motion.KinematicsModel.Head.fromObject(object.head); + } + if (object.arm != null) { + if (typeof object.arm !== "object") + throw TypeError(".message.motion.KinematicsModel.arm: object expected"); + message.arm = $root.message.motion.KinematicsModel.Arm.fromObject(object.arm); + } + if (object.massModel != null) { + if (typeof object.massModel !== "object") + throw TypeError(".message.motion.KinematicsModel.massModel: object expected"); + message.massModel = $root.message.motion.KinematicsModel.MassModel.fromObject(object.massModel); + } + if (object.TEAMDARWINCHEST_TO_ORIGIN != null) + message.TEAMDARWINCHEST_TO_ORIGIN = Number(object.TEAMDARWINCHEST_TO_ORIGIN); + return message; + }; + + /** + * Creates a KinematicsModel message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.motion.KinematicsModel.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.motion.KinematicsModel} KinematicsModel + */ + KinematicsModel.from = KinematicsModel.fromObject; + + /** + * Creates a plain object from a KinematicsModel message. Also converts values to other types if specified. + * @param {message.motion.KinematicsModel} message KinematicsModel + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + KinematicsModel.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.leg = null; + object.head = null; + object.arm = null; + object.massModel = null; + object.TEAMDARWINCHEST_TO_ORIGIN = 0; + } + if (message.leg != null && message.hasOwnProperty("leg")) + object.leg = $root.message.motion.KinematicsModel.Leg.toObject(message.leg, options); + if (message.head != null && message.hasOwnProperty("head")) + object.head = $root.message.motion.KinematicsModel.Head.toObject(message.head, options); + if (message.arm != null && message.hasOwnProperty("arm")) + object.arm = $root.message.motion.KinematicsModel.Arm.toObject(message.arm, options); + if (message.massModel != null && message.hasOwnProperty("massModel")) + object.massModel = $root.message.motion.KinematicsModel.MassModel.toObject(message.massModel, options); + if (message.TEAMDARWINCHEST_TO_ORIGIN != null && message.hasOwnProperty("TEAMDARWINCHEST_TO_ORIGIN")) + object.TEAMDARWINCHEST_TO_ORIGIN = message.TEAMDARWINCHEST_TO_ORIGIN; + return object; + }; + + /** + * Creates a plain object from this KinematicsModel message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + KinematicsModel.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this KinematicsModel to JSON. + * @returns {Object.} JSON object + */ + KinematicsModel.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + KinematicsModel.Leg = (function() { + + /** + * Properties of a Leg. + * @typedef message.motion.KinematicsModel.Leg$Properties + * @type {Object} + * @property {number} [HIP_OFFSET_X] Leg HIP_OFFSET_X. + * @property {number} [HIP_OFFSET_Y] Leg HIP_OFFSET_Y. + * @property {number} [HIP_OFFSET_Z] Leg HIP_OFFSET_Z. + * @property {number} [UPPER_LEG_LENGTH] Leg UPPER_LEG_LENGTH. + * @property {number} [LOWER_LEG_LENGTH] Leg LOWER_LEG_LENGTH. + * @property {number} [FOOT_HEIGHT] Leg FOOT_HEIGHT. + * @property {number} [FOOT_LENGTH] Leg FOOT_LENGTH. + * @property {number} [TOE_LENGTH] Leg TOE_LENGTH. + * @property {number} [HEEL_LENGTH] Leg HEEL_LENGTH. + * @property {number} [FOOT_WIDTH] Leg FOOT_WIDTH. + * @property {number} [FOOT_CENTRE_TO_ANKLE_CENTRE] Leg FOOT_CENTRE_TO_ANKLE_CENTRE. + * @property {number} [LENGTH_BETWEEN_LEGS] Leg LENGTH_BETWEEN_LEGS. + * @property {number} [LEFT_TO_RIGHT_HIP_YAW] Leg LEFT_TO_RIGHT_HIP_YAW. + * @property {number} [LEFT_TO_RIGHT_HIP_ROLL] Leg LEFT_TO_RIGHT_HIP_ROLL. + * @property {number} [LEFT_TO_RIGHT_HIP_PITCH] Leg LEFT_TO_RIGHT_HIP_PITCH. + * @property {number} [LEFT_TO_RIGHT_KNEE] Leg LEFT_TO_RIGHT_KNEE. + * @property {number} [LEFT_TO_RIGHT_ANKLE_PITCH] Leg LEFT_TO_RIGHT_ANKLE_PITCH. + * @property {number} [LEFT_TO_RIGHT_ANKLE_ROLL] Leg LEFT_TO_RIGHT_ANKLE_ROLL. + */ + + /** + * Constructs a new Leg. + * @exports message.motion.KinematicsModel.Leg + * @constructor + * @param {message.motion.KinematicsModel.Leg$Properties=} [properties] Properties to set + */ + function Leg(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Leg HIP_OFFSET_X. + * @type {number} + */ + Leg.prototype.HIP_OFFSET_X = 0; + + /** + * Leg HIP_OFFSET_Y. + * @type {number} + */ + Leg.prototype.HIP_OFFSET_Y = 0; + + /** + * Leg HIP_OFFSET_Z. + * @type {number} + */ + Leg.prototype.HIP_OFFSET_Z = 0; + + /** + * Leg UPPER_LEG_LENGTH. + * @type {number} + */ + Leg.prototype.UPPER_LEG_LENGTH = 0; + + /** + * Leg LOWER_LEG_LENGTH. + * @type {number} + */ + Leg.prototype.LOWER_LEG_LENGTH = 0; + + /** + * Leg FOOT_HEIGHT. + * @type {number} + */ + Leg.prototype.FOOT_HEIGHT = 0; + + /** + * Leg FOOT_LENGTH. + * @type {number} + */ + Leg.prototype.FOOT_LENGTH = 0; + + /** + * Leg TOE_LENGTH. + * @type {number} + */ + Leg.prototype.TOE_LENGTH = 0; + + /** + * Leg HEEL_LENGTH. + * @type {number} + */ + Leg.prototype.HEEL_LENGTH = 0; + + /** + * Leg FOOT_WIDTH. + * @type {number} + */ + Leg.prototype.FOOT_WIDTH = 0; + + /** + * Leg FOOT_CENTRE_TO_ANKLE_CENTRE. + * @type {number} + */ + Leg.prototype.FOOT_CENTRE_TO_ANKLE_CENTRE = 0; + + /** + * Leg LENGTH_BETWEEN_LEGS. + * @type {number} + */ + Leg.prototype.LENGTH_BETWEEN_LEGS = 0; + + /** + * Leg LEFT_TO_RIGHT_HIP_YAW. + * @type {number} + */ + Leg.prototype.LEFT_TO_RIGHT_HIP_YAW = 0; + + /** + * Leg LEFT_TO_RIGHT_HIP_ROLL. + * @type {number} + */ + Leg.prototype.LEFT_TO_RIGHT_HIP_ROLL = 0; + + /** + * Leg LEFT_TO_RIGHT_HIP_PITCH. + * @type {number} + */ + Leg.prototype.LEFT_TO_RIGHT_HIP_PITCH = 0; + + /** + * Leg LEFT_TO_RIGHT_KNEE. + * @type {number} + */ + Leg.prototype.LEFT_TO_RIGHT_KNEE = 0; + + /** + * Leg LEFT_TO_RIGHT_ANKLE_PITCH. + * @type {number} + */ + Leg.prototype.LEFT_TO_RIGHT_ANKLE_PITCH = 0; + + /** + * Leg LEFT_TO_RIGHT_ANKLE_ROLL. + * @type {number} + */ + Leg.prototype.LEFT_TO_RIGHT_ANKLE_ROLL = 0; + + /** + * Creates a new Leg instance using the specified properties. + * @param {message.motion.KinematicsModel.Leg$Properties=} [properties] Properties to set + * @returns {message.motion.KinematicsModel.Leg} Leg instance + */ + Leg.create = function create(properties) { + return new Leg(properties); + }; + + /** + * Encodes the specified Leg message. Does not implicitly {@link message.motion.KinematicsModel.Leg.verify|verify} messages. + * @param {message.motion.KinematicsModel.Leg$Properties} message Leg message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Leg.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.HIP_OFFSET_X != null && message.hasOwnProperty("HIP_OFFSET_X")) + writer.uint32(/* id 1, wireType 5 =*/13).float(message.HIP_OFFSET_X); + if (message.HIP_OFFSET_Y != null && message.hasOwnProperty("HIP_OFFSET_Y")) + writer.uint32(/* id 2, wireType 5 =*/21).float(message.HIP_OFFSET_Y); + if (message.HIP_OFFSET_Z != null && message.hasOwnProperty("HIP_OFFSET_Z")) + writer.uint32(/* id 3, wireType 5 =*/29).float(message.HIP_OFFSET_Z); + if (message.UPPER_LEG_LENGTH != null && message.hasOwnProperty("UPPER_LEG_LENGTH")) + writer.uint32(/* id 4, wireType 5 =*/37).float(message.UPPER_LEG_LENGTH); + if (message.LOWER_LEG_LENGTH != null && message.hasOwnProperty("LOWER_LEG_LENGTH")) + writer.uint32(/* id 5, wireType 5 =*/45).float(message.LOWER_LEG_LENGTH); + if (message.FOOT_HEIGHT != null && message.hasOwnProperty("FOOT_HEIGHT")) + writer.uint32(/* id 6, wireType 5 =*/53).float(message.FOOT_HEIGHT); + if (message.FOOT_LENGTH != null && message.hasOwnProperty("FOOT_LENGTH")) + writer.uint32(/* id 7, wireType 5 =*/61).float(message.FOOT_LENGTH); + if (message.TOE_LENGTH != null && message.hasOwnProperty("TOE_LENGTH")) + writer.uint32(/* id 8, wireType 5 =*/69).float(message.TOE_LENGTH); + if (message.HEEL_LENGTH != null && message.hasOwnProperty("HEEL_LENGTH")) + writer.uint32(/* id 9, wireType 5 =*/77).float(message.HEEL_LENGTH); + if (message.FOOT_WIDTH != null && message.hasOwnProperty("FOOT_WIDTH")) + writer.uint32(/* id 10, wireType 5 =*/85).float(message.FOOT_WIDTH); + if (message.FOOT_CENTRE_TO_ANKLE_CENTRE != null && message.hasOwnProperty("FOOT_CENTRE_TO_ANKLE_CENTRE")) + writer.uint32(/* id 11, wireType 5 =*/93).float(message.FOOT_CENTRE_TO_ANKLE_CENTRE); + if (message.LENGTH_BETWEEN_LEGS != null && message.hasOwnProperty("LENGTH_BETWEEN_LEGS")) + writer.uint32(/* id 12, wireType 5 =*/101).float(message.LENGTH_BETWEEN_LEGS); + if (message.LEFT_TO_RIGHT_HIP_YAW != null && message.hasOwnProperty("LEFT_TO_RIGHT_HIP_YAW")) + writer.uint32(/* id 13, wireType 0 =*/104).int32(message.LEFT_TO_RIGHT_HIP_YAW); + if (message.LEFT_TO_RIGHT_HIP_ROLL != null && message.hasOwnProperty("LEFT_TO_RIGHT_HIP_ROLL")) + writer.uint32(/* id 14, wireType 0 =*/112).int32(message.LEFT_TO_RIGHT_HIP_ROLL); + if (message.LEFT_TO_RIGHT_HIP_PITCH != null && message.hasOwnProperty("LEFT_TO_RIGHT_HIP_PITCH")) + writer.uint32(/* id 15, wireType 0 =*/120).int32(message.LEFT_TO_RIGHT_HIP_PITCH); + if (message.LEFT_TO_RIGHT_KNEE != null && message.hasOwnProperty("LEFT_TO_RIGHT_KNEE")) + writer.uint32(/* id 16, wireType 0 =*/128).int32(message.LEFT_TO_RIGHT_KNEE); + if (message.LEFT_TO_RIGHT_ANKLE_PITCH != null && message.hasOwnProperty("LEFT_TO_RIGHT_ANKLE_PITCH")) + writer.uint32(/* id 17, wireType 0 =*/136).int32(message.LEFT_TO_RIGHT_ANKLE_PITCH); + if (message.LEFT_TO_RIGHT_ANKLE_ROLL != null && message.hasOwnProperty("LEFT_TO_RIGHT_ANKLE_ROLL")) + writer.uint32(/* id 18, wireType 0 =*/144).int32(message.LEFT_TO_RIGHT_ANKLE_ROLL); + return writer; + }; + + /** + * Encodes the specified Leg message, length delimited. Does not implicitly {@link message.motion.KinematicsModel.Leg.verify|verify} messages. + * @param {message.motion.KinematicsModel.Leg$Properties} message Leg message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Leg.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a Leg message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.motion.KinematicsModel.Leg} Leg + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Leg.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.motion.KinematicsModel.Leg(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.HIP_OFFSET_X = reader.float(); + break; + case 2: + message.HIP_OFFSET_Y = reader.float(); + break; + case 3: + message.HIP_OFFSET_Z = reader.float(); + break; + case 4: + message.UPPER_LEG_LENGTH = reader.float(); + break; + case 5: + message.LOWER_LEG_LENGTH = reader.float(); + break; + case 6: + message.FOOT_HEIGHT = reader.float(); + break; + case 7: + message.FOOT_LENGTH = reader.float(); + break; + case 8: + message.TOE_LENGTH = reader.float(); + break; + case 9: + message.HEEL_LENGTH = reader.float(); + break; + case 10: + message.FOOT_WIDTH = reader.float(); + break; + case 11: + message.FOOT_CENTRE_TO_ANKLE_CENTRE = reader.float(); + break; + case 12: + message.LENGTH_BETWEEN_LEGS = reader.float(); + break; + case 13: + message.LEFT_TO_RIGHT_HIP_YAW = reader.int32(); + break; + case 14: + message.LEFT_TO_RIGHT_HIP_ROLL = reader.int32(); + break; + case 15: + message.LEFT_TO_RIGHT_HIP_PITCH = reader.int32(); + break; + case 16: + message.LEFT_TO_RIGHT_KNEE = reader.int32(); + break; + case 17: + message.LEFT_TO_RIGHT_ANKLE_PITCH = reader.int32(); + break; + case 18: + message.LEFT_TO_RIGHT_ANKLE_ROLL = reader.int32(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a Leg message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.motion.KinematicsModel.Leg} Leg + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Leg.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a Leg message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + Leg.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.HIP_OFFSET_X != null && message.hasOwnProperty("HIP_OFFSET_X")) + if (typeof message.HIP_OFFSET_X !== "number") + return "HIP_OFFSET_X: number expected"; + if (message.HIP_OFFSET_Y != null && message.hasOwnProperty("HIP_OFFSET_Y")) + if (typeof message.HIP_OFFSET_Y !== "number") + return "HIP_OFFSET_Y: number expected"; + if (message.HIP_OFFSET_Z != null && message.hasOwnProperty("HIP_OFFSET_Z")) + if (typeof message.HIP_OFFSET_Z !== "number") + return "HIP_OFFSET_Z: number expected"; + if (message.UPPER_LEG_LENGTH != null && message.hasOwnProperty("UPPER_LEG_LENGTH")) + if (typeof message.UPPER_LEG_LENGTH !== "number") + return "UPPER_LEG_LENGTH: number expected"; + if (message.LOWER_LEG_LENGTH != null && message.hasOwnProperty("LOWER_LEG_LENGTH")) + if (typeof message.LOWER_LEG_LENGTH !== "number") + return "LOWER_LEG_LENGTH: number expected"; + if (message.FOOT_HEIGHT != null && message.hasOwnProperty("FOOT_HEIGHT")) + if (typeof message.FOOT_HEIGHT !== "number") + return "FOOT_HEIGHT: number expected"; + if (message.FOOT_LENGTH != null && message.hasOwnProperty("FOOT_LENGTH")) + if (typeof message.FOOT_LENGTH !== "number") + return "FOOT_LENGTH: number expected"; + if (message.TOE_LENGTH != null && message.hasOwnProperty("TOE_LENGTH")) + if (typeof message.TOE_LENGTH !== "number") + return "TOE_LENGTH: number expected"; + if (message.HEEL_LENGTH != null && message.hasOwnProperty("HEEL_LENGTH")) + if (typeof message.HEEL_LENGTH !== "number") + return "HEEL_LENGTH: number expected"; + if (message.FOOT_WIDTH != null && message.hasOwnProperty("FOOT_WIDTH")) + if (typeof message.FOOT_WIDTH !== "number") + return "FOOT_WIDTH: number expected"; + if (message.FOOT_CENTRE_TO_ANKLE_CENTRE != null && message.hasOwnProperty("FOOT_CENTRE_TO_ANKLE_CENTRE")) + if (typeof message.FOOT_CENTRE_TO_ANKLE_CENTRE !== "number") + return "FOOT_CENTRE_TO_ANKLE_CENTRE: number expected"; + if (message.LENGTH_BETWEEN_LEGS != null && message.hasOwnProperty("LENGTH_BETWEEN_LEGS")) + if (typeof message.LENGTH_BETWEEN_LEGS !== "number") + return "LENGTH_BETWEEN_LEGS: number expected"; + if (message.LEFT_TO_RIGHT_HIP_YAW != null && message.hasOwnProperty("LEFT_TO_RIGHT_HIP_YAW")) + if (!$util.isInteger(message.LEFT_TO_RIGHT_HIP_YAW)) + return "LEFT_TO_RIGHT_HIP_YAW: integer expected"; + if (message.LEFT_TO_RIGHT_HIP_ROLL != null && message.hasOwnProperty("LEFT_TO_RIGHT_HIP_ROLL")) + if (!$util.isInteger(message.LEFT_TO_RIGHT_HIP_ROLL)) + return "LEFT_TO_RIGHT_HIP_ROLL: integer expected"; + if (message.LEFT_TO_RIGHT_HIP_PITCH != null && message.hasOwnProperty("LEFT_TO_RIGHT_HIP_PITCH")) + if (!$util.isInteger(message.LEFT_TO_RIGHT_HIP_PITCH)) + return "LEFT_TO_RIGHT_HIP_PITCH: integer expected"; + if (message.LEFT_TO_RIGHT_KNEE != null && message.hasOwnProperty("LEFT_TO_RIGHT_KNEE")) + if (!$util.isInteger(message.LEFT_TO_RIGHT_KNEE)) + return "LEFT_TO_RIGHT_KNEE: integer expected"; + if (message.LEFT_TO_RIGHT_ANKLE_PITCH != null && message.hasOwnProperty("LEFT_TO_RIGHT_ANKLE_PITCH")) + if (!$util.isInteger(message.LEFT_TO_RIGHT_ANKLE_PITCH)) + return "LEFT_TO_RIGHT_ANKLE_PITCH: integer expected"; + if (message.LEFT_TO_RIGHT_ANKLE_ROLL != null && message.hasOwnProperty("LEFT_TO_RIGHT_ANKLE_ROLL")) + if (!$util.isInteger(message.LEFT_TO_RIGHT_ANKLE_ROLL)) + return "LEFT_TO_RIGHT_ANKLE_ROLL: integer expected"; + return null; + }; + + /** + * Creates a Leg message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.motion.KinematicsModel.Leg} Leg + */ + Leg.fromObject = function fromObject(object) { + if (object instanceof $root.message.motion.KinematicsModel.Leg) + return object; + var message = new $root.message.motion.KinematicsModel.Leg(); + if (object.HIP_OFFSET_X != null) + message.HIP_OFFSET_X = Number(object.HIP_OFFSET_X); + if (object.HIP_OFFSET_Y != null) + message.HIP_OFFSET_Y = Number(object.HIP_OFFSET_Y); + if (object.HIP_OFFSET_Z != null) + message.HIP_OFFSET_Z = Number(object.HIP_OFFSET_Z); + if (object.UPPER_LEG_LENGTH != null) + message.UPPER_LEG_LENGTH = Number(object.UPPER_LEG_LENGTH); + if (object.LOWER_LEG_LENGTH != null) + message.LOWER_LEG_LENGTH = Number(object.LOWER_LEG_LENGTH); + if (object.FOOT_HEIGHT != null) + message.FOOT_HEIGHT = Number(object.FOOT_HEIGHT); + if (object.FOOT_LENGTH != null) + message.FOOT_LENGTH = Number(object.FOOT_LENGTH); + if (object.TOE_LENGTH != null) + message.TOE_LENGTH = Number(object.TOE_LENGTH); + if (object.HEEL_LENGTH != null) + message.HEEL_LENGTH = Number(object.HEEL_LENGTH); + if (object.FOOT_WIDTH != null) + message.FOOT_WIDTH = Number(object.FOOT_WIDTH); + if (object.FOOT_CENTRE_TO_ANKLE_CENTRE != null) + message.FOOT_CENTRE_TO_ANKLE_CENTRE = Number(object.FOOT_CENTRE_TO_ANKLE_CENTRE); + if (object.LENGTH_BETWEEN_LEGS != null) + message.LENGTH_BETWEEN_LEGS = Number(object.LENGTH_BETWEEN_LEGS); + if (object.LEFT_TO_RIGHT_HIP_YAW != null) + message.LEFT_TO_RIGHT_HIP_YAW = object.LEFT_TO_RIGHT_HIP_YAW | 0; + if (object.LEFT_TO_RIGHT_HIP_ROLL != null) + message.LEFT_TO_RIGHT_HIP_ROLL = object.LEFT_TO_RIGHT_HIP_ROLL | 0; + if (object.LEFT_TO_RIGHT_HIP_PITCH != null) + message.LEFT_TO_RIGHT_HIP_PITCH = object.LEFT_TO_RIGHT_HIP_PITCH | 0; + if (object.LEFT_TO_RIGHT_KNEE != null) + message.LEFT_TO_RIGHT_KNEE = object.LEFT_TO_RIGHT_KNEE | 0; + if (object.LEFT_TO_RIGHT_ANKLE_PITCH != null) + message.LEFT_TO_RIGHT_ANKLE_PITCH = object.LEFT_TO_RIGHT_ANKLE_PITCH | 0; + if (object.LEFT_TO_RIGHT_ANKLE_ROLL != null) + message.LEFT_TO_RIGHT_ANKLE_ROLL = object.LEFT_TO_RIGHT_ANKLE_ROLL | 0; + return message; + }; + + /** + * Creates a Leg message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.motion.KinematicsModel.Leg.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.motion.KinematicsModel.Leg} Leg + */ + Leg.from = Leg.fromObject; + + /** + * Creates a plain object from a Leg message. Also converts values to other types if specified. + * @param {message.motion.KinematicsModel.Leg} message Leg + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Leg.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.HIP_OFFSET_X = 0; + object.HIP_OFFSET_Y = 0; + object.HIP_OFFSET_Z = 0; + object.UPPER_LEG_LENGTH = 0; + object.LOWER_LEG_LENGTH = 0; + object.FOOT_HEIGHT = 0; + object.FOOT_LENGTH = 0; + object.TOE_LENGTH = 0; + object.HEEL_LENGTH = 0; + object.FOOT_WIDTH = 0; + object.FOOT_CENTRE_TO_ANKLE_CENTRE = 0; + object.LENGTH_BETWEEN_LEGS = 0; + object.LEFT_TO_RIGHT_HIP_YAW = 0; + object.LEFT_TO_RIGHT_HIP_ROLL = 0; + object.LEFT_TO_RIGHT_HIP_PITCH = 0; + object.LEFT_TO_RIGHT_KNEE = 0; + object.LEFT_TO_RIGHT_ANKLE_PITCH = 0; + object.LEFT_TO_RIGHT_ANKLE_ROLL = 0; + } + if (message.HIP_OFFSET_X != null && message.hasOwnProperty("HIP_OFFSET_X")) + object.HIP_OFFSET_X = message.HIP_OFFSET_X; + if (message.HIP_OFFSET_Y != null && message.hasOwnProperty("HIP_OFFSET_Y")) + object.HIP_OFFSET_Y = message.HIP_OFFSET_Y; + if (message.HIP_OFFSET_Z != null && message.hasOwnProperty("HIP_OFFSET_Z")) + object.HIP_OFFSET_Z = message.HIP_OFFSET_Z; + if (message.UPPER_LEG_LENGTH != null && message.hasOwnProperty("UPPER_LEG_LENGTH")) + object.UPPER_LEG_LENGTH = message.UPPER_LEG_LENGTH; + if (message.LOWER_LEG_LENGTH != null && message.hasOwnProperty("LOWER_LEG_LENGTH")) + object.LOWER_LEG_LENGTH = message.LOWER_LEG_LENGTH; + if (message.FOOT_HEIGHT != null && message.hasOwnProperty("FOOT_HEIGHT")) + object.FOOT_HEIGHT = message.FOOT_HEIGHT; + if (message.FOOT_LENGTH != null && message.hasOwnProperty("FOOT_LENGTH")) + object.FOOT_LENGTH = message.FOOT_LENGTH; + if (message.TOE_LENGTH != null && message.hasOwnProperty("TOE_LENGTH")) + object.TOE_LENGTH = message.TOE_LENGTH; + if (message.HEEL_LENGTH != null && message.hasOwnProperty("HEEL_LENGTH")) + object.HEEL_LENGTH = message.HEEL_LENGTH; + if (message.FOOT_WIDTH != null && message.hasOwnProperty("FOOT_WIDTH")) + object.FOOT_WIDTH = message.FOOT_WIDTH; + if (message.FOOT_CENTRE_TO_ANKLE_CENTRE != null && message.hasOwnProperty("FOOT_CENTRE_TO_ANKLE_CENTRE")) + object.FOOT_CENTRE_TO_ANKLE_CENTRE = message.FOOT_CENTRE_TO_ANKLE_CENTRE; + if (message.LENGTH_BETWEEN_LEGS != null && message.hasOwnProperty("LENGTH_BETWEEN_LEGS")) + object.LENGTH_BETWEEN_LEGS = message.LENGTH_BETWEEN_LEGS; + if (message.LEFT_TO_RIGHT_HIP_YAW != null && message.hasOwnProperty("LEFT_TO_RIGHT_HIP_YAW")) + object.LEFT_TO_RIGHT_HIP_YAW = message.LEFT_TO_RIGHT_HIP_YAW; + if (message.LEFT_TO_RIGHT_HIP_ROLL != null && message.hasOwnProperty("LEFT_TO_RIGHT_HIP_ROLL")) + object.LEFT_TO_RIGHT_HIP_ROLL = message.LEFT_TO_RIGHT_HIP_ROLL; + if (message.LEFT_TO_RIGHT_HIP_PITCH != null && message.hasOwnProperty("LEFT_TO_RIGHT_HIP_PITCH")) + object.LEFT_TO_RIGHT_HIP_PITCH = message.LEFT_TO_RIGHT_HIP_PITCH; + if (message.LEFT_TO_RIGHT_KNEE != null && message.hasOwnProperty("LEFT_TO_RIGHT_KNEE")) + object.LEFT_TO_RIGHT_KNEE = message.LEFT_TO_RIGHT_KNEE; + if (message.LEFT_TO_RIGHT_ANKLE_PITCH != null && message.hasOwnProperty("LEFT_TO_RIGHT_ANKLE_PITCH")) + object.LEFT_TO_RIGHT_ANKLE_PITCH = message.LEFT_TO_RIGHT_ANKLE_PITCH; + if (message.LEFT_TO_RIGHT_ANKLE_ROLL != null && message.hasOwnProperty("LEFT_TO_RIGHT_ANKLE_ROLL")) + object.LEFT_TO_RIGHT_ANKLE_ROLL = message.LEFT_TO_RIGHT_ANKLE_ROLL; + return object; + }; + + /** + * Creates a plain object from this Leg message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Leg.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this Leg to JSON. + * @returns {Object.} JSON object + */ + Leg.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return Leg; + })(); + + KinematicsModel.Head = (function() { + + /** + * Properties of a Head. + * @typedef message.motion.KinematicsModel.Head$Properties + * @type {Object} + * @property {number} [NECK_BASE_POS_FROM_ORIGIN_X] Head NECK_BASE_POS_FROM_ORIGIN_X. + * @property {number} [NECK_BASE_POS_FROM_ORIGIN_Y] Head NECK_BASE_POS_FROM_ORIGIN_Y. + * @property {number} [NECK_BASE_POS_FROM_ORIGIN_Z] Head NECK_BASE_POS_FROM_ORIGIN_Z. + * @property {number} [NECK_LENGTH] Head NECK_LENGTH. + * @property {number} [NECK_TO_CAMERA_X] Head NECK_TO_CAMERA_X. + * @property {number} [NECK_TO_CAMERA_Y] Head NECK_TO_CAMERA_Y. + * @property {number} [NECK_TO_CAMERA_Z] Head NECK_TO_CAMERA_Z. + * @property {number} [CAMERA_DECLINATION_ANGLE_OFFSET] Head CAMERA_DECLINATION_ANGLE_OFFSET. + * @property {number} [MAX_YAW] Head MAX_YAW. + * @property {number} [MIN_YAW] Head MIN_YAW. + * @property {number} [MAX_PITCH] Head MAX_PITCH. + * @property {number} [MIN_PITCH] Head MIN_PITCH. + */ + + /** + * Constructs a new Head. + * @exports message.motion.KinematicsModel.Head + * @constructor + * @param {message.motion.KinematicsModel.Head$Properties=} [properties] Properties to set + */ + function Head(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Head NECK_BASE_POS_FROM_ORIGIN_X. + * @type {number} + */ + Head.prototype.NECK_BASE_POS_FROM_ORIGIN_X = 0; + + /** + * Head NECK_BASE_POS_FROM_ORIGIN_Y. + * @type {number} + */ + Head.prototype.NECK_BASE_POS_FROM_ORIGIN_Y = 0; + + /** + * Head NECK_BASE_POS_FROM_ORIGIN_Z. + * @type {number} + */ + Head.prototype.NECK_BASE_POS_FROM_ORIGIN_Z = 0; + + /** + * Head NECK_LENGTH. + * @type {number} + */ + Head.prototype.NECK_LENGTH = 0; + + /** + * Head NECK_TO_CAMERA_X. + * @type {number} + */ + Head.prototype.NECK_TO_CAMERA_X = 0; + + /** + * Head NECK_TO_CAMERA_Y. + * @type {number} + */ + Head.prototype.NECK_TO_CAMERA_Y = 0; + + /** + * Head NECK_TO_CAMERA_Z. + * @type {number} + */ + Head.prototype.NECK_TO_CAMERA_Z = 0; + + /** + * Head CAMERA_DECLINATION_ANGLE_OFFSET. + * @type {number} + */ + Head.prototype.CAMERA_DECLINATION_ANGLE_OFFSET = 0; + + /** + * Head MAX_YAW. + * @type {number} + */ + Head.prototype.MAX_YAW = 0; + + /** + * Head MIN_YAW. + * @type {number} + */ + Head.prototype.MIN_YAW = 0; + + /** + * Head MAX_PITCH. + * @type {number} + */ + Head.prototype.MAX_PITCH = 0; + + /** + * Head MIN_PITCH. + * @type {number} + */ + Head.prototype.MIN_PITCH = 0; + + /** + * Creates a new Head instance using the specified properties. + * @param {message.motion.KinematicsModel.Head$Properties=} [properties] Properties to set + * @returns {message.motion.KinematicsModel.Head} Head instance + */ + Head.create = function create(properties) { + return new Head(properties); + }; + + /** + * Encodes the specified Head message. Does not implicitly {@link message.motion.KinematicsModel.Head.verify|verify} messages. + * @param {message.motion.KinematicsModel.Head$Properties} message Head message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Head.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.NECK_BASE_POS_FROM_ORIGIN_X != null && message.hasOwnProperty("NECK_BASE_POS_FROM_ORIGIN_X")) + writer.uint32(/* id 1, wireType 5 =*/13).float(message.NECK_BASE_POS_FROM_ORIGIN_X); + if (message.NECK_BASE_POS_FROM_ORIGIN_Y != null && message.hasOwnProperty("NECK_BASE_POS_FROM_ORIGIN_Y")) + writer.uint32(/* id 2, wireType 5 =*/21).float(message.NECK_BASE_POS_FROM_ORIGIN_Y); + if (message.NECK_BASE_POS_FROM_ORIGIN_Z != null && message.hasOwnProperty("NECK_BASE_POS_FROM_ORIGIN_Z")) + writer.uint32(/* id 3, wireType 5 =*/29).float(message.NECK_BASE_POS_FROM_ORIGIN_Z); + if (message.NECK_LENGTH != null && message.hasOwnProperty("NECK_LENGTH")) + writer.uint32(/* id 4, wireType 5 =*/37).float(message.NECK_LENGTH); + if (message.NECK_TO_CAMERA_X != null && message.hasOwnProperty("NECK_TO_CAMERA_X")) + writer.uint32(/* id 5, wireType 5 =*/45).float(message.NECK_TO_CAMERA_X); + if (message.NECK_TO_CAMERA_Y != null && message.hasOwnProperty("NECK_TO_CAMERA_Y")) + writer.uint32(/* id 6, wireType 5 =*/53).float(message.NECK_TO_CAMERA_Y); + if (message.NECK_TO_CAMERA_Z != null && message.hasOwnProperty("NECK_TO_CAMERA_Z")) + writer.uint32(/* id 7, wireType 5 =*/61).float(message.NECK_TO_CAMERA_Z); + if (message.CAMERA_DECLINATION_ANGLE_OFFSET != null && message.hasOwnProperty("CAMERA_DECLINATION_ANGLE_OFFSET")) + writer.uint32(/* id 8, wireType 5 =*/69).float(message.CAMERA_DECLINATION_ANGLE_OFFSET); + if (message.MAX_YAW != null && message.hasOwnProperty("MAX_YAW")) + writer.uint32(/* id 9, wireType 5 =*/77).float(message.MAX_YAW); + if (message.MIN_YAW != null && message.hasOwnProperty("MIN_YAW")) + writer.uint32(/* id 10, wireType 5 =*/85).float(message.MIN_YAW); + if (message.MAX_PITCH != null && message.hasOwnProperty("MAX_PITCH")) + writer.uint32(/* id 11, wireType 5 =*/93).float(message.MAX_PITCH); + if (message.MIN_PITCH != null && message.hasOwnProperty("MIN_PITCH")) + writer.uint32(/* id 12, wireType 5 =*/101).float(message.MIN_PITCH); + return writer; + }; + + /** + * Encodes the specified Head message, length delimited. Does not implicitly {@link message.motion.KinematicsModel.Head.verify|verify} messages. + * @param {message.motion.KinematicsModel.Head$Properties} message Head message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Head.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a Head message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.motion.KinematicsModel.Head} Head + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Head.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.motion.KinematicsModel.Head(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.NECK_BASE_POS_FROM_ORIGIN_X = reader.float(); + break; + case 2: + message.NECK_BASE_POS_FROM_ORIGIN_Y = reader.float(); + break; + case 3: + message.NECK_BASE_POS_FROM_ORIGIN_Z = reader.float(); + break; + case 4: + message.NECK_LENGTH = reader.float(); + break; + case 5: + message.NECK_TO_CAMERA_X = reader.float(); + break; + case 6: + message.NECK_TO_CAMERA_Y = reader.float(); + break; + case 7: + message.NECK_TO_CAMERA_Z = reader.float(); + break; + case 8: + message.CAMERA_DECLINATION_ANGLE_OFFSET = reader.float(); + break; + case 9: + message.MAX_YAW = reader.float(); + break; + case 10: + message.MIN_YAW = reader.float(); + break; + case 11: + message.MAX_PITCH = reader.float(); + break; + case 12: + message.MIN_PITCH = reader.float(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a Head message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.motion.KinematicsModel.Head} Head + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Head.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a Head message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + Head.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.NECK_BASE_POS_FROM_ORIGIN_X != null && message.hasOwnProperty("NECK_BASE_POS_FROM_ORIGIN_X")) + if (typeof message.NECK_BASE_POS_FROM_ORIGIN_X !== "number") + return "NECK_BASE_POS_FROM_ORIGIN_X: number expected"; + if (message.NECK_BASE_POS_FROM_ORIGIN_Y != null && message.hasOwnProperty("NECK_BASE_POS_FROM_ORIGIN_Y")) + if (typeof message.NECK_BASE_POS_FROM_ORIGIN_Y !== "number") + return "NECK_BASE_POS_FROM_ORIGIN_Y: number expected"; + if (message.NECK_BASE_POS_FROM_ORIGIN_Z != null && message.hasOwnProperty("NECK_BASE_POS_FROM_ORIGIN_Z")) + if (typeof message.NECK_BASE_POS_FROM_ORIGIN_Z !== "number") + return "NECK_BASE_POS_FROM_ORIGIN_Z: number expected"; + if (message.NECK_LENGTH != null && message.hasOwnProperty("NECK_LENGTH")) + if (typeof message.NECK_LENGTH !== "number") + return "NECK_LENGTH: number expected"; + if (message.NECK_TO_CAMERA_X != null && message.hasOwnProperty("NECK_TO_CAMERA_X")) + if (typeof message.NECK_TO_CAMERA_X !== "number") + return "NECK_TO_CAMERA_X: number expected"; + if (message.NECK_TO_CAMERA_Y != null && message.hasOwnProperty("NECK_TO_CAMERA_Y")) + if (typeof message.NECK_TO_CAMERA_Y !== "number") + return "NECK_TO_CAMERA_Y: number expected"; + if (message.NECK_TO_CAMERA_Z != null && message.hasOwnProperty("NECK_TO_CAMERA_Z")) + if (typeof message.NECK_TO_CAMERA_Z !== "number") + return "NECK_TO_CAMERA_Z: number expected"; + if (message.CAMERA_DECLINATION_ANGLE_OFFSET != null && message.hasOwnProperty("CAMERA_DECLINATION_ANGLE_OFFSET")) + if (typeof message.CAMERA_DECLINATION_ANGLE_OFFSET !== "number") + return "CAMERA_DECLINATION_ANGLE_OFFSET: number expected"; + if (message.MAX_YAW != null && message.hasOwnProperty("MAX_YAW")) + if (typeof message.MAX_YAW !== "number") + return "MAX_YAW: number expected"; + if (message.MIN_YAW != null && message.hasOwnProperty("MIN_YAW")) + if (typeof message.MIN_YAW !== "number") + return "MIN_YAW: number expected"; + if (message.MAX_PITCH != null && message.hasOwnProperty("MAX_PITCH")) + if (typeof message.MAX_PITCH !== "number") + return "MAX_PITCH: number expected"; + if (message.MIN_PITCH != null && message.hasOwnProperty("MIN_PITCH")) + if (typeof message.MIN_PITCH !== "number") + return "MIN_PITCH: number expected"; + return null; + }; + + /** + * Creates a Head message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.motion.KinematicsModel.Head} Head + */ + Head.fromObject = function fromObject(object) { + if (object instanceof $root.message.motion.KinematicsModel.Head) + return object; + var message = new $root.message.motion.KinematicsModel.Head(); + if (object.NECK_BASE_POS_FROM_ORIGIN_X != null) + message.NECK_BASE_POS_FROM_ORIGIN_X = Number(object.NECK_BASE_POS_FROM_ORIGIN_X); + if (object.NECK_BASE_POS_FROM_ORIGIN_Y != null) + message.NECK_BASE_POS_FROM_ORIGIN_Y = Number(object.NECK_BASE_POS_FROM_ORIGIN_Y); + if (object.NECK_BASE_POS_FROM_ORIGIN_Z != null) + message.NECK_BASE_POS_FROM_ORIGIN_Z = Number(object.NECK_BASE_POS_FROM_ORIGIN_Z); + if (object.NECK_LENGTH != null) + message.NECK_LENGTH = Number(object.NECK_LENGTH); + if (object.NECK_TO_CAMERA_X != null) + message.NECK_TO_CAMERA_X = Number(object.NECK_TO_CAMERA_X); + if (object.NECK_TO_CAMERA_Y != null) + message.NECK_TO_CAMERA_Y = Number(object.NECK_TO_CAMERA_Y); + if (object.NECK_TO_CAMERA_Z != null) + message.NECK_TO_CAMERA_Z = Number(object.NECK_TO_CAMERA_Z); + if (object.CAMERA_DECLINATION_ANGLE_OFFSET != null) + message.CAMERA_DECLINATION_ANGLE_OFFSET = Number(object.CAMERA_DECLINATION_ANGLE_OFFSET); + if (object.MAX_YAW != null) + message.MAX_YAW = Number(object.MAX_YAW); + if (object.MIN_YAW != null) + message.MIN_YAW = Number(object.MIN_YAW); + if (object.MAX_PITCH != null) + message.MAX_PITCH = Number(object.MAX_PITCH); + if (object.MIN_PITCH != null) + message.MIN_PITCH = Number(object.MIN_PITCH); + return message; + }; + + /** + * Creates a Head message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.motion.KinematicsModel.Head.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.motion.KinematicsModel.Head} Head + */ + Head.from = Head.fromObject; + + /** + * Creates a plain object from a Head message. Also converts values to other types if specified. + * @param {message.motion.KinematicsModel.Head} message Head + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Head.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.NECK_BASE_POS_FROM_ORIGIN_X = 0; + object.NECK_BASE_POS_FROM_ORIGIN_Y = 0; + object.NECK_BASE_POS_FROM_ORIGIN_Z = 0; + object.NECK_LENGTH = 0; + object.NECK_TO_CAMERA_X = 0; + object.NECK_TO_CAMERA_Y = 0; + object.NECK_TO_CAMERA_Z = 0; + object.CAMERA_DECLINATION_ANGLE_OFFSET = 0; + object.MAX_YAW = 0; + object.MIN_YAW = 0; + object.MAX_PITCH = 0; + object.MIN_PITCH = 0; + } + if (message.NECK_BASE_POS_FROM_ORIGIN_X != null && message.hasOwnProperty("NECK_BASE_POS_FROM_ORIGIN_X")) + object.NECK_BASE_POS_FROM_ORIGIN_X = message.NECK_BASE_POS_FROM_ORIGIN_X; + if (message.NECK_BASE_POS_FROM_ORIGIN_Y != null && message.hasOwnProperty("NECK_BASE_POS_FROM_ORIGIN_Y")) + object.NECK_BASE_POS_FROM_ORIGIN_Y = message.NECK_BASE_POS_FROM_ORIGIN_Y; + if (message.NECK_BASE_POS_FROM_ORIGIN_Z != null && message.hasOwnProperty("NECK_BASE_POS_FROM_ORIGIN_Z")) + object.NECK_BASE_POS_FROM_ORIGIN_Z = message.NECK_BASE_POS_FROM_ORIGIN_Z; + if (message.NECK_LENGTH != null && message.hasOwnProperty("NECK_LENGTH")) + object.NECK_LENGTH = message.NECK_LENGTH; + if (message.NECK_TO_CAMERA_X != null && message.hasOwnProperty("NECK_TO_CAMERA_X")) + object.NECK_TO_CAMERA_X = message.NECK_TO_CAMERA_X; + if (message.NECK_TO_CAMERA_Y != null && message.hasOwnProperty("NECK_TO_CAMERA_Y")) + object.NECK_TO_CAMERA_Y = message.NECK_TO_CAMERA_Y; + if (message.NECK_TO_CAMERA_Z != null && message.hasOwnProperty("NECK_TO_CAMERA_Z")) + object.NECK_TO_CAMERA_Z = message.NECK_TO_CAMERA_Z; + if (message.CAMERA_DECLINATION_ANGLE_OFFSET != null && message.hasOwnProperty("CAMERA_DECLINATION_ANGLE_OFFSET")) + object.CAMERA_DECLINATION_ANGLE_OFFSET = message.CAMERA_DECLINATION_ANGLE_OFFSET; + if (message.MAX_YAW != null && message.hasOwnProperty("MAX_YAW")) + object.MAX_YAW = message.MAX_YAW; + if (message.MIN_YAW != null && message.hasOwnProperty("MIN_YAW")) + object.MIN_YAW = message.MIN_YAW; + if (message.MAX_PITCH != null && message.hasOwnProperty("MAX_PITCH")) + object.MAX_PITCH = message.MAX_PITCH; + if (message.MIN_PITCH != null && message.hasOwnProperty("MIN_PITCH")) + object.MIN_PITCH = message.MIN_PITCH; + return object; + }; + + /** + * Creates a plain object from this Head message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Head.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this Head to JSON. + * @returns {Object.} JSON object + */ + Head.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return Head; + })(); + + KinematicsModel.Arm = (function() { + + /** + * Properties of an Arm. + * @typedef message.motion.KinematicsModel.Arm$Properties + * @type {Object} + * @property {number} [DISTANCE_BETWEEN_SHOULDERS] Arm DISTANCE_BETWEEN_SHOULDERS. + * @property {number} [SHOULDER_Z_OFFSET] Arm SHOULDER_Z_OFFSET. + * @property {number} [SHOULDER_X_OFFSET] Arm SHOULDER_X_OFFSET. + * @property {number} [SHOULDER_LENGTH] Arm SHOULDER_LENGTH. + * @property {number} [SHOULDER_WIDTH] Arm SHOULDER_WIDTH. + * @property {number} [SHOULDER_HEIGHT] Arm SHOULDER_HEIGHT. + * @property {number} [UPPER_ARM_LENGTH] Arm UPPER_ARM_LENGTH. + * @property {number} [UPPER_ARM_Y_OFFSET] Arm UPPER_ARM_Y_OFFSET. + * @property {number} [UPPER_ARM_X_OFFSET] Arm UPPER_ARM_X_OFFSET. + * @property {number} [LOWER_ARM_LENGTH] Arm LOWER_ARM_LENGTH. + * @property {number} [LOWER_ARM_Y_OFFSET] Arm LOWER_ARM_Y_OFFSET. + * @property {number} [LOWER_ARM_Z_OFFSET] Arm LOWER_ARM_Z_OFFSET. + */ + + /** + * Constructs a new Arm. + * @exports message.motion.KinematicsModel.Arm + * @constructor + * @param {message.motion.KinematicsModel.Arm$Properties=} [properties] Properties to set + */ + function Arm(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Arm DISTANCE_BETWEEN_SHOULDERS. + * @type {number} + */ + Arm.prototype.DISTANCE_BETWEEN_SHOULDERS = 0; + + /** + * Arm SHOULDER_Z_OFFSET. + * @type {number} + */ + Arm.prototype.SHOULDER_Z_OFFSET = 0; + + /** + * Arm SHOULDER_X_OFFSET. + * @type {number} + */ + Arm.prototype.SHOULDER_X_OFFSET = 0; + + /** + * Arm SHOULDER_LENGTH. + * @type {number} + */ + Arm.prototype.SHOULDER_LENGTH = 0; + + /** + * Arm SHOULDER_WIDTH. + * @type {number} + */ + Arm.prototype.SHOULDER_WIDTH = 0; + + /** + * Arm SHOULDER_HEIGHT. + * @type {number} + */ + Arm.prototype.SHOULDER_HEIGHT = 0; + + /** + * Arm UPPER_ARM_LENGTH. + * @type {number} + */ + Arm.prototype.UPPER_ARM_LENGTH = 0; + + /** + * Arm UPPER_ARM_Y_OFFSET. + * @type {number} + */ + Arm.prototype.UPPER_ARM_Y_OFFSET = 0; + + /** + * Arm UPPER_ARM_X_OFFSET. + * @type {number} + */ + Arm.prototype.UPPER_ARM_X_OFFSET = 0; + + /** + * Arm LOWER_ARM_LENGTH. + * @type {number} + */ + Arm.prototype.LOWER_ARM_LENGTH = 0; + + /** + * Arm LOWER_ARM_Y_OFFSET. + * @type {number} + */ + Arm.prototype.LOWER_ARM_Y_OFFSET = 0; + + /** + * Arm LOWER_ARM_Z_OFFSET. + * @type {number} + */ + Arm.prototype.LOWER_ARM_Z_OFFSET = 0; + + /** + * Creates a new Arm instance using the specified properties. + * @param {message.motion.KinematicsModel.Arm$Properties=} [properties] Properties to set + * @returns {message.motion.KinematicsModel.Arm} Arm instance + */ + Arm.create = function create(properties) { + return new Arm(properties); + }; + + /** + * Encodes the specified Arm message. Does not implicitly {@link message.motion.KinematicsModel.Arm.verify|verify} messages. + * @param {message.motion.KinematicsModel.Arm$Properties} message Arm message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Arm.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.DISTANCE_BETWEEN_SHOULDERS != null && message.hasOwnProperty("DISTANCE_BETWEEN_SHOULDERS")) + writer.uint32(/* id 1, wireType 5 =*/13).float(message.DISTANCE_BETWEEN_SHOULDERS); + if (message.SHOULDER_Z_OFFSET != null && message.hasOwnProperty("SHOULDER_Z_OFFSET")) + writer.uint32(/* id 2, wireType 5 =*/21).float(message.SHOULDER_Z_OFFSET); + if (message.SHOULDER_X_OFFSET != null && message.hasOwnProperty("SHOULDER_X_OFFSET")) + writer.uint32(/* id 3, wireType 5 =*/29).float(message.SHOULDER_X_OFFSET); + if (message.SHOULDER_LENGTH != null && message.hasOwnProperty("SHOULDER_LENGTH")) + writer.uint32(/* id 4, wireType 5 =*/37).float(message.SHOULDER_LENGTH); + if (message.SHOULDER_WIDTH != null && message.hasOwnProperty("SHOULDER_WIDTH")) + writer.uint32(/* id 5, wireType 5 =*/45).float(message.SHOULDER_WIDTH); + if (message.SHOULDER_HEIGHT != null && message.hasOwnProperty("SHOULDER_HEIGHT")) + writer.uint32(/* id 6, wireType 5 =*/53).float(message.SHOULDER_HEIGHT); + if (message.UPPER_ARM_LENGTH != null && message.hasOwnProperty("UPPER_ARM_LENGTH")) + writer.uint32(/* id 7, wireType 5 =*/61).float(message.UPPER_ARM_LENGTH); + if (message.UPPER_ARM_Y_OFFSET != null && message.hasOwnProperty("UPPER_ARM_Y_OFFSET")) + writer.uint32(/* id 8, wireType 5 =*/69).float(message.UPPER_ARM_Y_OFFSET); + if (message.UPPER_ARM_X_OFFSET != null && message.hasOwnProperty("UPPER_ARM_X_OFFSET")) + writer.uint32(/* id 9, wireType 5 =*/77).float(message.UPPER_ARM_X_OFFSET); + if (message.LOWER_ARM_LENGTH != null && message.hasOwnProperty("LOWER_ARM_LENGTH")) + writer.uint32(/* id 10, wireType 5 =*/85).float(message.LOWER_ARM_LENGTH); + if (message.LOWER_ARM_Y_OFFSET != null && message.hasOwnProperty("LOWER_ARM_Y_OFFSET")) + writer.uint32(/* id 11, wireType 5 =*/93).float(message.LOWER_ARM_Y_OFFSET); + if (message.LOWER_ARM_Z_OFFSET != null && message.hasOwnProperty("LOWER_ARM_Z_OFFSET")) + writer.uint32(/* id 12, wireType 5 =*/101).float(message.LOWER_ARM_Z_OFFSET); + return writer; + }; + + /** + * Encodes the specified Arm message, length delimited. Does not implicitly {@link message.motion.KinematicsModel.Arm.verify|verify} messages. + * @param {message.motion.KinematicsModel.Arm$Properties} message Arm message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Arm.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes an Arm message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.motion.KinematicsModel.Arm} Arm + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Arm.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.motion.KinematicsModel.Arm(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.DISTANCE_BETWEEN_SHOULDERS = reader.float(); + break; + case 2: + message.SHOULDER_Z_OFFSET = reader.float(); + break; + case 3: + message.SHOULDER_X_OFFSET = reader.float(); + break; + case 4: + message.SHOULDER_LENGTH = reader.float(); + break; + case 5: + message.SHOULDER_WIDTH = reader.float(); + break; + case 6: + message.SHOULDER_HEIGHT = reader.float(); + break; + case 7: + message.UPPER_ARM_LENGTH = reader.float(); + break; + case 8: + message.UPPER_ARM_Y_OFFSET = reader.float(); + break; + case 9: + message.UPPER_ARM_X_OFFSET = reader.float(); + break; + case 10: + message.LOWER_ARM_LENGTH = reader.float(); + break; + case 11: + message.LOWER_ARM_Y_OFFSET = reader.float(); + break; + case 12: + message.LOWER_ARM_Z_OFFSET = reader.float(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes an Arm message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.motion.KinematicsModel.Arm} Arm + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Arm.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies an Arm message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + Arm.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.DISTANCE_BETWEEN_SHOULDERS != null && message.hasOwnProperty("DISTANCE_BETWEEN_SHOULDERS")) + if (typeof message.DISTANCE_BETWEEN_SHOULDERS !== "number") + return "DISTANCE_BETWEEN_SHOULDERS: number expected"; + if (message.SHOULDER_Z_OFFSET != null && message.hasOwnProperty("SHOULDER_Z_OFFSET")) + if (typeof message.SHOULDER_Z_OFFSET !== "number") + return "SHOULDER_Z_OFFSET: number expected"; + if (message.SHOULDER_X_OFFSET != null && message.hasOwnProperty("SHOULDER_X_OFFSET")) + if (typeof message.SHOULDER_X_OFFSET !== "number") + return "SHOULDER_X_OFFSET: number expected"; + if (message.SHOULDER_LENGTH != null && message.hasOwnProperty("SHOULDER_LENGTH")) + if (typeof message.SHOULDER_LENGTH !== "number") + return "SHOULDER_LENGTH: number expected"; + if (message.SHOULDER_WIDTH != null && message.hasOwnProperty("SHOULDER_WIDTH")) + if (typeof message.SHOULDER_WIDTH !== "number") + return "SHOULDER_WIDTH: number expected"; + if (message.SHOULDER_HEIGHT != null && message.hasOwnProperty("SHOULDER_HEIGHT")) + if (typeof message.SHOULDER_HEIGHT !== "number") + return "SHOULDER_HEIGHT: number expected"; + if (message.UPPER_ARM_LENGTH != null && message.hasOwnProperty("UPPER_ARM_LENGTH")) + if (typeof message.UPPER_ARM_LENGTH !== "number") + return "UPPER_ARM_LENGTH: number expected"; + if (message.UPPER_ARM_Y_OFFSET != null && message.hasOwnProperty("UPPER_ARM_Y_OFFSET")) + if (typeof message.UPPER_ARM_Y_OFFSET !== "number") + return "UPPER_ARM_Y_OFFSET: number expected"; + if (message.UPPER_ARM_X_OFFSET != null && message.hasOwnProperty("UPPER_ARM_X_OFFSET")) + if (typeof message.UPPER_ARM_X_OFFSET !== "number") + return "UPPER_ARM_X_OFFSET: number expected"; + if (message.LOWER_ARM_LENGTH != null && message.hasOwnProperty("LOWER_ARM_LENGTH")) + if (typeof message.LOWER_ARM_LENGTH !== "number") + return "LOWER_ARM_LENGTH: number expected"; + if (message.LOWER_ARM_Y_OFFSET != null && message.hasOwnProperty("LOWER_ARM_Y_OFFSET")) + if (typeof message.LOWER_ARM_Y_OFFSET !== "number") + return "LOWER_ARM_Y_OFFSET: number expected"; + if (message.LOWER_ARM_Z_OFFSET != null && message.hasOwnProperty("LOWER_ARM_Z_OFFSET")) + if (typeof message.LOWER_ARM_Z_OFFSET !== "number") + return "LOWER_ARM_Z_OFFSET: number expected"; + return null; + }; + + /** + * Creates an Arm message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.motion.KinematicsModel.Arm} Arm + */ + Arm.fromObject = function fromObject(object) { + if (object instanceof $root.message.motion.KinematicsModel.Arm) + return object; + var message = new $root.message.motion.KinematicsModel.Arm(); + if (object.DISTANCE_BETWEEN_SHOULDERS != null) + message.DISTANCE_BETWEEN_SHOULDERS = Number(object.DISTANCE_BETWEEN_SHOULDERS); + if (object.SHOULDER_Z_OFFSET != null) + message.SHOULDER_Z_OFFSET = Number(object.SHOULDER_Z_OFFSET); + if (object.SHOULDER_X_OFFSET != null) + message.SHOULDER_X_OFFSET = Number(object.SHOULDER_X_OFFSET); + if (object.SHOULDER_LENGTH != null) + message.SHOULDER_LENGTH = Number(object.SHOULDER_LENGTH); + if (object.SHOULDER_WIDTH != null) + message.SHOULDER_WIDTH = Number(object.SHOULDER_WIDTH); + if (object.SHOULDER_HEIGHT != null) + message.SHOULDER_HEIGHT = Number(object.SHOULDER_HEIGHT); + if (object.UPPER_ARM_LENGTH != null) + message.UPPER_ARM_LENGTH = Number(object.UPPER_ARM_LENGTH); + if (object.UPPER_ARM_Y_OFFSET != null) + message.UPPER_ARM_Y_OFFSET = Number(object.UPPER_ARM_Y_OFFSET); + if (object.UPPER_ARM_X_OFFSET != null) + message.UPPER_ARM_X_OFFSET = Number(object.UPPER_ARM_X_OFFSET); + if (object.LOWER_ARM_LENGTH != null) + message.LOWER_ARM_LENGTH = Number(object.LOWER_ARM_LENGTH); + if (object.LOWER_ARM_Y_OFFSET != null) + message.LOWER_ARM_Y_OFFSET = Number(object.LOWER_ARM_Y_OFFSET); + if (object.LOWER_ARM_Z_OFFSET != null) + message.LOWER_ARM_Z_OFFSET = Number(object.LOWER_ARM_Z_OFFSET); + return message; + }; + + /** + * Creates an Arm message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.motion.KinematicsModel.Arm.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.motion.KinematicsModel.Arm} Arm + */ + Arm.from = Arm.fromObject; + + /** + * Creates a plain object from an Arm message. Also converts values to other types if specified. + * @param {message.motion.KinematicsModel.Arm} message Arm + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Arm.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.DISTANCE_BETWEEN_SHOULDERS = 0; + object.SHOULDER_Z_OFFSET = 0; + object.SHOULDER_X_OFFSET = 0; + object.SHOULDER_LENGTH = 0; + object.SHOULDER_WIDTH = 0; + object.SHOULDER_HEIGHT = 0; + object.UPPER_ARM_LENGTH = 0; + object.UPPER_ARM_Y_OFFSET = 0; + object.UPPER_ARM_X_OFFSET = 0; + object.LOWER_ARM_LENGTH = 0; + object.LOWER_ARM_Y_OFFSET = 0; + object.LOWER_ARM_Z_OFFSET = 0; + } + if (message.DISTANCE_BETWEEN_SHOULDERS != null && message.hasOwnProperty("DISTANCE_BETWEEN_SHOULDERS")) + object.DISTANCE_BETWEEN_SHOULDERS = message.DISTANCE_BETWEEN_SHOULDERS; + if (message.SHOULDER_Z_OFFSET != null && message.hasOwnProperty("SHOULDER_Z_OFFSET")) + object.SHOULDER_Z_OFFSET = message.SHOULDER_Z_OFFSET; + if (message.SHOULDER_X_OFFSET != null && message.hasOwnProperty("SHOULDER_X_OFFSET")) + object.SHOULDER_X_OFFSET = message.SHOULDER_X_OFFSET; + if (message.SHOULDER_LENGTH != null && message.hasOwnProperty("SHOULDER_LENGTH")) + object.SHOULDER_LENGTH = message.SHOULDER_LENGTH; + if (message.SHOULDER_WIDTH != null && message.hasOwnProperty("SHOULDER_WIDTH")) + object.SHOULDER_WIDTH = message.SHOULDER_WIDTH; + if (message.SHOULDER_HEIGHT != null && message.hasOwnProperty("SHOULDER_HEIGHT")) + object.SHOULDER_HEIGHT = message.SHOULDER_HEIGHT; + if (message.UPPER_ARM_LENGTH != null && message.hasOwnProperty("UPPER_ARM_LENGTH")) + object.UPPER_ARM_LENGTH = message.UPPER_ARM_LENGTH; + if (message.UPPER_ARM_Y_OFFSET != null && message.hasOwnProperty("UPPER_ARM_Y_OFFSET")) + object.UPPER_ARM_Y_OFFSET = message.UPPER_ARM_Y_OFFSET; + if (message.UPPER_ARM_X_OFFSET != null && message.hasOwnProperty("UPPER_ARM_X_OFFSET")) + object.UPPER_ARM_X_OFFSET = message.UPPER_ARM_X_OFFSET; + if (message.LOWER_ARM_LENGTH != null && message.hasOwnProperty("LOWER_ARM_LENGTH")) + object.LOWER_ARM_LENGTH = message.LOWER_ARM_LENGTH; + if (message.LOWER_ARM_Y_OFFSET != null && message.hasOwnProperty("LOWER_ARM_Y_OFFSET")) + object.LOWER_ARM_Y_OFFSET = message.LOWER_ARM_Y_OFFSET; + if (message.LOWER_ARM_Z_OFFSET != null && message.hasOwnProperty("LOWER_ARM_Z_OFFSET")) + object.LOWER_ARM_Z_OFFSET = message.LOWER_ARM_Z_OFFSET; + return object; + }; + + /** + * Creates a plain object from this Arm message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Arm.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this Arm to JSON. + * @returns {Object.} JSON object + */ + Arm.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return Arm; + })(); + + KinematicsModel.MassModel = (function() { + + /** + * Properties of a MassModel. + * @typedef message.motion.KinematicsModel.MassModel$Properties + * @type {Object} + * @property {Array.} [masses] MassModel masses. + */ + + /** + * Constructs a new MassModel. + * @exports message.motion.KinematicsModel.MassModel + * @constructor + * @param {message.motion.KinematicsModel.MassModel$Properties=} [properties] Properties to set + */ + function MassModel(properties) { + this.masses = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * MassModel masses. + * @type {Array.} + */ + MassModel.prototype.masses = $util.emptyArray; + + /** + * Creates a new MassModel instance using the specified properties. + * @param {message.motion.KinematicsModel.MassModel$Properties=} [properties] Properties to set + * @returns {message.motion.KinematicsModel.MassModel} MassModel instance + */ + MassModel.create = function create(properties) { + return new MassModel(properties); + }; + + /** + * Encodes the specified MassModel message. Does not implicitly {@link message.motion.KinematicsModel.MassModel.verify|verify} messages. + * @param {message.motion.KinematicsModel.MassModel$Properties} message MassModel message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + MassModel.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.masses != null && message.masses.length) + for (var i = 0; i < message.masses.length; ++i) + $root.vec4.encode(message.masses[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified MassModel message, length delimited. Does not implicitly {@link message.motion.KinematicsModel.MassModel.verify|verify} messages. + * @param {message.motion.KinematicsModel.MassModel$Properties} message MassModel message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + MassModel.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a MassModel message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.motion.KinematicsModel.MassModel} MassModel + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + MassModel.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.motion.KinematicsModel.MassModel(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (!(message.masses && message.masses.length)) + message.masses = []; + message.masses.push($root.vec4.decode(reader, reader.uint32())); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a MassModel message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.motion.KinematicsModel.MassModel} MassModel + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + MassModel.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a MassModel message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + MassModel.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.masses != null && message.hasOwnProperty("masses")) { + if (!Array.isArray(message.masses)) + return "masses: array expected"; + for (var i = 0; i < message.masses.length; ++i) { + var error = $root.vec4.verify(message.masses[i]); + if (error) + return "masses." + error; + } + } + return null; + }; + + /** + * Creates a MassModel message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.motion.KinematicsModel.MassModel} MassModel + */ + MassModel.fromObject = function fromObject(object) { + if (object instanceof $root.message.motion.KinematicsModel.MassModel) + return object; + var message = new $root.message.motion.KinematicsModel.MassModel(); + if (object.masses) { + if (!Array.isArray(object.masses)) + throw TypeError(".message.motion.KinematicsModel.MassModel.masses: array expected"); + message.masses = []; + for (var i = 0; i < object.masses.length; ++i) { + if (typeof object.masses[i] !== "object") + throw TypeError(".message.motion.KinematicsModel.MassModel.masses: object expected"); + message.masses[i] = $root.vec4.fromObject(object.masses[i]); + } + } + return message; + }; + + /** + * Creates a MassModel message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.motion.KinematicsModel.MassModel.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.motion.KinematicsModel.MassModel} MassModel + */ + MassModel.from = MassModel.fromObject; + + /** + * Creates a plain object from a MassModel message. Also converts values to other types if specified. + * @param {message.motion.KinematicsModel.MassModel} message MassModel + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + MassModel.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.masses = []; + if (message.masses && message.masses.length) { + object.masses = []; + for (var j = 0; j < message.masses.length; ++j) + object.masses[j] = $root.vec4.toObject(message.masses[j], options); + } + return object; + }; + + /** + * Creates a plain object from this MassModel message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + MassModel.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this MassModel to JSON. + * @returns {Object.} JSON object + */ + MassModel.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return MassModel; + })(); + + return KinematicsModel; + })(); + + motion.ServoTarget = (function() { + + /** + * Properties of a ServoTarget. + * @typedef message.motion.ServoTarget$Properties + * @type {Object} + * @property {google.protobuf.Timestamp$Properties} [time] ServoTarget time. + * @property {number} [id] ServoTarget id. + * @property {number} [position] ServoTarget position. + * @property {number} [gain] ServoTarget gain. + * @property {number} [torque] ServoTarget torque. + */ + + /** + * Constructs a new ServoTarget. + * @classdesc TODO document + * + * @author Trent Houliston + * @exports message.motion.ServoTarget + * @constructor + * @param {message.motion.ServoTarget$Properties=} [properties] Properties to set + */ + function ServoTarget(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * ServoTarget time. + * @type {(google.protobuf.Timestamp$Properties|null)} + */ + ServoTarget.prototype.time = null; + + /** + * ServoTarget id. + * @type {number} + */ + ServoTarget.prototype.id = 0; + + /** + * ServoTarget position. + * @type {number} + */ + ServoTarget.prototype.position = 0; + + /** + * ServoTarget gain. + * @type {number} + */ + ServoTarget.prototype.gain = 0; + + /** + * ServoTarget torque. + * @type {number} + */ + ServoTarget.prototype.torque = 0; + + /** + * Creates a new ServoTarget instance using the specified properties. + * @param {message.motion.ServoTarget$Properties=} [properties] Properties to set + * @returns {message.motion.ServoTarget} ServoTarget instance + */ + ServoTarget.create = function create(properties) { + return new ServoTarget(properties); + }; + + /** + * Encodes the specified ServoTarget message. Does not implicitly {@link message.motion.ServoTarget.verify|verify} messages. + * @param {message.motion.ServoTarget$Properties} message ServoTarget message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ServoTarget.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.time != null && message.hasOwnProperty("time")) + $root.google.protobuf.Timestamp.encode(message.time, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.id != null && message.hasOwnProperty("id")) + writer.uint32(/* id 2, wireType 0 =*/16).uint32(message.id); + if (message.position != null && message.hasOwnProperty("position")) + writer.uint32(/* id 3, wireType 5 =*/29).float(message.position); + if (message.gain != null && message.hasOwnProperty("gain")) + writer.uint32(/* id 4, wireType 5 =*/37).float(message.gain); + if (message.torque != null && message.hasOwnProperty("torque")) + writer.uint32(/* id 5, wireType 5 =*/45).float(message.torque); + return writer; + }; + + /** + * Encodes the specified ServoTarget message, length delimited. Does not implicitly {@link message.motion.ServoTarget.verify|verify} messages. + * @param {message.motion.ServoTarget$Properties} message ServoTarget message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ServoTarget.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a ServoTarget message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.motion.ServoTarget} ServoTarget + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ServoTarget.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.motion.ServoTarget(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.time = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); + break; + case 2: + message.id = reader.uint32(); + break; + case 3: + message.position = reader.float(); + break; + case 4: + message.gain = reader.float(); + break; + case 5: + message.torque = reader.float(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a ServoTarget message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.motion.ServoTarget} ServoTarget + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ServoTarget.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a ServoTarget message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + ServoTarget.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.time != null && message.hasOwnProperty("time")) { + var error = $root.google.protobuf.Timestamp.verify(message.time); + if (error) + return "time." + error; + } + if (message.id != null && message.hasOwnProperty("id")) + if (!$util.isInteger(message.id)) + return "id: integer expected"; + if (message.position != null && message.hasOwnProperty("position")) + if (typeof message.position !== "number") + return "position: number expected"; + if (message.gain != null && message.hasOwnProperty("gain")) + if (typeof message.gain !== "number") + return "gain: number expected"; + if (message.torque != null && message.hasOwnProperty("torque")) + if (typeof message.torque !== "number") + return "torque: number expected"; + return null; + }; + + /** + * Creates a ServoTarget message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.motion.ServoTarget} ServoTarget + */ + ServoTarget.fromObject = function fromObject(object) { + if (object instanceof $root.message.motion.ServoTarget) + return object; + var message = new $root.message.motion.ServoTarget(); + if (object.time != null) { + if (typeof object.time !== "object") + throw TypeError(".message.motion.ServoTarget.time: object expected"); + message.time = $root.google.protobuf.Timestamp.fromObject(object.time); + } + if (object.id != null) + message.id = object.id >>> 0; + if (object.position != null) + message.position = Number(object.position); + if (object.gain != null) + message.gain = Number(object.gain); + if (object.torque != null) + message.torque = Number(object.torque); + return message; + }; + + /** + * Creates a ServoTarget message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.motion.ServoTarget.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.motion.ServoTarget} ServoTarget + */ + ServoTarget.from = ServoTarget.fromObject; + + /** + * Creates a plain object from a ServoTarget message. Also converts values to other types if specified. + * @param {message.motion.ServoTarget} message ServoTarget + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + ServoTarget.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.time = null; + object.id = 0; + object.position = 0; + object.gain = 0; + object.torque = 0; + } + if (message.time != null && message.hasOwnProperty("time")) + object.time = $root.google.protobuf.Timestamp.toObject(message.time, options); + if (message.id != null && message.hasOwnProperty("id")) + object.id = message.id; + if (message.position != null && message.hasOwnProperty("position")) + object.position = message.position; + if (message.gain != null && message.hasOwnProperty("gain")) + object.gain = message.gain; + if (message.torque != null && message.hasOwnProperty("torque")) + object.torque = message.torque; + return object; + }; + + /** + * Creates a plain object from this ServoTarget message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + ServoTarget.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this ServoTarget to JSON. + * @returns {Object.} JSON object + */ + ServoTarget.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return ServoTarget; + })(); + + motion.TorsoMotionUpdate = (function() { + + /** + * Properties of a TorsoMotionUpdate. + * @typedef message.motion.TorsoMotionUpdate$Properties + * @type {Object} + * @property {vec3$Properties} [frameArms] TorsoMotionUpdate frameArms. + * @property {vec3$Properties} [frameLegs] TorsoMotionUpdate frameLegs. + * @property {mat44$Properties} [frame3D] TorsoMotionUpdate frame3D. + */ + + /** + * Constructs a new TorsoMotionUpdate. + * @exports message.motion.TorsoMotionUpdate + * @constructor + * @param {message.motion.TorsoMotionUpdate$Properties=} [properties] Properties to set + */ + function TorsoMotionUpdate(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * TorsoMotionUpdate frameArms. + * @type {(vec3$Properties|null)} + */ + TorsoMotionUpdate.prototype.frameArms = null; + + /** + * TorsoMotionUpdate frameLegs. + * @type {(vec3$Properties|null)} + */ + TorsoMotionUpdate.prototype.frameLegs = null; + + /** + * TorsoMotionUpdate frame3D. + * @type {(mat44$Properties|null)} + */ + TorsoMotionUpdate.prototype.frame3D = null; + + /** + * Creates a new TorsoMotionUpdate instance using the specified properties. + * @param {message.motion.TorsoMotionUpdate$Properties=} [properties] Properties to set + * @returns {message.motion.TorsoMotionUpdate} TorsoMotionUpdate instance + */ + TorsoMotionUpdate.create = function create(properties) { + return new TorsoMotionUpdate(properties); + }; + + /** + * Encodes the specified TorsoMotionUpdate message. Does not implicitly {@link message.motion.TorsoMotionUpdate.verify|verify} messages. + * @param {message.motion.TorsoMotionUpdate$Properties} message TorsoMotionUpdate message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + TorsoMotionUpdate.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.frameArms != null && message.hasOwnProperty("frameArms")) + $root.vec3.encode(message.frameArms, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.frameLegs != null && message.hasOwnProperty("frameLegs")) + $root.vec3.encode(message.frameLegs, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.frame3D != null && message.hasOwnProperty("frame3D")) + $root.mat44.encode(message.frame3D, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified TorsoMotionUpdate message, length delimited. Does not implicitly {@link message.motion.TorsoMotionUpdate.verify|verify} messages. + * @param {message.motion.TorsoMotionUpdate$Properties} message TorsoMotionUpdate message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + TorsoMotionUpdate.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a TorsoMotionUpdate message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.motion.TorsoMotionUpdate} TorsoMotionUpdate + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + TorsoMotionUpdate.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.motion.TorsoMotionUpdate(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.frameArms = $root.vec3.decode(reader, reader.uint32()); + break; + case 2: + message.frameLegs = $root.vec3.decode(reader, reader.uint32()); + break; + case 3: + message.frame3D = $root.mat44.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a TorsoMotionUpdate message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.motion.TorsoMotionUpdate} TorsoMotionUpdate + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + TorsoMotionUpdate.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a TorsoMotionUpdate message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + TorsoMotionUpdate.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.frameArms != null && message.hasOwnProperty("frameArms")) { + var error = $root.vec3.verify(message.frameArms); + if (error) + return "frameArms." + error; + } + if (message.frameLegs != null && message.hasOwnProperty("frameLegs")) { + var error = $root.vec3.verify(message.frameLegs); + if (error) + return "frameLegs." + error; + } + if (message.frame3D != null && message.hasOwnProperty("frame3D")) { + var error = $root.mat44.verify(message.frame3D); + if (error) + return "frame3D." + error; + } + return null; + }; + + /** + * Creates a TorsoMotionUpdate message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.motion.TorsoMotionUpdate} TorsoMotionUpdate + */ + TorsoMotionUpdate.fromObject = function fromObject(object) { + if (object instanceof $root.message.motion.TorsoMotionUpdate) + return object; + var message = new $root.message.motion.TorsoMotionUpdate(); + if (object.frameArms != null) { + if (typeof object.frameArms !== "object") + throw TypeError(".message.motion.TorsoMotionUpdate.frameArms: object expected"); + message.frameArms = $root.vec3.fromObject(object.frameArms); + } + if (object.frameLegs != null) { + if (typeof object.frameLegs !== "object") + throw TypeError(".message.motion.TorsoMotionUpdate.frameLegs: object expected"); + message.frameLegs = $root.vec3.fromObject(object.frameLegs); + } + if (object.frame3D != null) { + if (typeof object.frame3D !== "object") + throw TypeError(".message.motion.TorsoMotionUpdate.frame3D: object expected"); + message.frame3D = $root.mat44.fromObject(object.frame3D); + } + return message; + }; + + /** + * Creates a TorsoMotionUpdate message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.motion.TorsoMotionUpdate.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.motion.TorsoMotionUpdate} TorsoMotionUpdate + */ + TorsoMotionUpdate.from = TorsoMotionUpdate.fromObject; + + /** + * Creates a plain object from a TorsoMotionUpdate message. Also converts values to other types if specified. + * @param {message.motion.TorsoMotionUpdate} message TorsoMotionUpdate + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + TorsoMotionUpdate.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.frameArms = null; + object.frameLegs = null; + object.frame3D = null; + } + if (message.frameArms != null && message.hasOwnProperty("frameArms")) + object.frameArms = $root.vec3.toObject(message.frameArms, options); + if (message.frameLegs != null && message.hasOwnProperty("frameLegs")) + object.frameLegs = $root.vec3.toObject(message.frameLegs, options); + if (message.frame3D != null && message.hasOwnProperty("frame3D")) + object.frame3D = $root.mat44.toObject(message.frame3D, options); + return object; + }; + + /** + * Creates a plain object from this TorsoMotionUpdate message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + TorsoMotionUpdate.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this TorsoMotionUpdate to JSON. + * @returns {Object.} JSON object + */ + TorsoMotionUpdate.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return TorsoMotionUpdate; + })(); + + motion.TorsoPositionUpdate = (function() { + + /** + * Properties of a TorsoPositionUpdate. + * @typedef message.motion.TorsoPositionUpdate$Properties + * @type {Object} + * @property {vec3$Properties} [position] TorsoPositionUpdate position. + * @property {vec3$Properties} [destination] TorsoPositionUpdate destination. + */ + + /** + * Constructs a new TorsoPositionUpdate. + * @exports message.motion.TorsoPositionUpdate + * @constructor + * @param {message.motion.TorsoPositionUpdate$Properties=} [properties] Properties to set + */ + function TorsoPositionUpdate(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * TorsoPositionUpdate position. + * @type {(vec3$Properties|null)} + */ + TorsoPositionUpdate.prototype.position = null; + + /** + * TorsoPositionUpdate destination. + * @type {(vec3$Properties|null)} + */ + TorsoPositionUpdate.prototype.destination = null; + + /** + * Creates a new TorsoPositionUpdate instance using the specified properties. + * @param {message.motion.TorsoPositionUpdate$Properties=} [properties] Properties to set + * @returns {message.motion.TorsoPositionUpdate} TorsoPositionUpdate instance + */ + TorsoPositionUpdate.create = function create(properties) { + return new TorsoPositionUpdate(properties); + }; + + /** + * Encodes the specified TorsoPositionUpdate message. Does not implicitly {@link message.motion.TorsoPositionUpdate.verify|verify} messages. + * @param {message.motion.TorsoPositionUpdate$Properties} message TorsoPositionUpdate message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + TorsoPositionUpdate.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.position != null && message.hasOwnProperty("position")) + $root.vec3.encode(message.position, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.destination != null && message.hasOwnProperty("destination")) + $root.vec3.encode(message.destination, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified TorsoPositionUpdate message, length delimited. Does not implicitly {@link message.motion.TorsoPositionUpdate.verify|verify} messages. + * @param {message.motion.TorsoPositionUpdate$Properties} message TorsoPositionUpdate message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + TorsoPositionUpdate.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a TorsoPositionUpdate message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.motion.TorsoPositionUpdate} TorsoPositionUpdate + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + TorsoPositionUpdate.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.motion.TorsoPositionUpdate(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.position = $root.vec3.decode(reader, reader.uint32()); + break; + case 2: + message.destination = $root.vec3.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a TorsoPositionUpdate message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.motion.TorsoPositionUpdate} TorsoPositionUpdate + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + TorsoPositionUpdate.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a TorsoPositionUpdate message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + TorsoPositionUpdate.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.position != null && message.hasOwnProperty("position")) { + var error = $root.vec3.verify(message.position); + if (error) + return "position." + error; + } + if (message.destination != null && message.hasOwnProperty("destination")) { + var error = $root.vec3.verify(message.destination); + if (error) + return "destination." + error; + } + return null; + }; + + /** + * Creates a TorsoPositionUpdate message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.motion.TorsoPositionUpdate} TorsoPositionUpdate + */ + TorsoPositionUpdate.fromObject = function fromObject(object) { + if (object instanceof $root.message.motion.TorsoPositionUpdate) + return object; + var message = new $root.message.motion.TorsoPositionUpdate(); + if (object.position != null) { + if (typeof object.position !== "object") + throw TypeError(".message.motion.TorsoPositionUpdate.position: object expected"); + message.position = $root.vec3.fromObject(object.position); + } + if (object.destination != null) { + if (typeof object.destination !== "object") + throw TypeError(".message.motion.TorsoPositionUpdate.destination: object expected"); + message.destination = $root.vec3.fromObject(object.destination); + } + return message; + }; + + /** + * Creates a TorsoPositionUpdate message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.motion.TorsoPositionUpdate.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.motion.TorsoPositionUpdate} TorsoPositionUpdate + */ + TorsoPositionUpdate.from = TorsoPositionUpdate.fromObject; + + /** + * Creates a plain object from a TorsoPositionUpdate message. Also converts values to other types if specified. + * @param {message.motion.TorsoPositionUpdate} message TorsoPositionUpdate + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + TorsoPositionUpdate.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.position = null; + object.destination = null; + } + if (message.position != null && message.hasOwnProperty("position")) + object.position = $root.vec3.toObject(message.position, options); + if (message.destination != null && message.hasOwnProperty("destination")) + object.destination = $root.vec3.toObject(message.destination, options); + return object; + }; + + /** + * Creates a plain object from this TorsoPositionUpdate message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + TorsoPositionUpdate.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this TorsoPositionUpdate to JSON. + * @returns {Object.} JSON object + */ + TorsoPositionUpdate.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return TorsoPositionUpdate; + })(); + + motion.EnableTorsoMotion = (function() { + + /** + * Properties of an EnableTorsoMotion. + * @typedef message.motion.EnableTorsoMotion$Properties + * @type {Object} + */ + + /** + * Constructs a new EnableTorsoMotion. + * @exports message.motion.EnableTorsoMotion + * @constructor + * @param {message.motion.EnableTorsoMotion$Properties=} [properties] Properties to set + */ + function EnableTorsoMotion(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Creates a new EnableTorsoMotion instance using the specified properties. + * @param {message.motion.EnableTorsoMotion$Properties=} [properties] Properties to set + * @returns {message.motion.EnableTorsoMotion} EnableTorsoMotion instance + */ + EnableTorsoMotion.create = function create(properties) { + return new EnableTorsoMotion(properties); + }; + + /** + * Encodes the specified EnableTorsoMotion message. Does not implicitly {@link message.motion.EnableTorsoMotion.verify|verify} messages. + * @param {message.motion.EnableTorsoMotion$Properties} message EnableTorsoMotion message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + EnableTorsoMotion.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + return writer; + }; + + /** + * Encodes the specified EnableTorsoMotion message, length delimited. Does not implicitly {@link message.motion.EnableTorsoMotion.verify|verify} messages. + * @param {message.motion.EnableTorsoMotion$Properties} message EnableTorsoMotion message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + EnableTorsoMotion.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes an EnableTorsoMotion message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.motion.EnableTorsoMotion} EnableTorsoMotion + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + EnableTorsoMotion.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.motion.EnableTorsoMotion(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes an EnableTorsoMotion message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.motion.EnableTorsoMotion} EnableTorsoMotion + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + EnableTorsoMotion.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies an EnableTorsoMotion message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + EnableTorsoMotion.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + return null; + }; + + /** + * Creates an EnableTorsoMotion message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.motion.EnableTorsoMotion} EnableTorsoMotion + */ + EnableTorsoMotion.fromObject = function fromObject(object) { + if (object instanceof $root.message.motion.EnableTorsoMotion) + return object; + return new $root.message.motion.EnableTorsoMotion(); + }; + + /** + * Creates an EnableTorsoMotion message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.motion.EnableTorsoMotion.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.motion.EnableTorsoMotion} EnableTorsoMotion + */ + EnableTorsoMotion.from = EnableTorsoMotion.fromObject; + + /** + * Creates a plain object from an EnableTorsoMotion message. Also converts values to other types if specified. + * @param {message.motion.EnableTorsoMotion} message EnableTorsoMotion + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + EnableTorsoMotion.toObject = function toObject() { + return {}; + }; + + /** + * Creates a plain object from this EnableTorsoMotion message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + EnableTorsoMotion.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this EnableTorsoMotion to JSON. + * @returns {Object.} JSON object + */ + EnableTorsoMotion.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return EnableTorsoMotion; + })(); + + motion.DisableTorsoMotion = (function() { + + /** + * Properties of a DisableTorsoMotion. + * @typedef message.motion.DisableTorsoMotion$Properties + * @type {Object} + */ + + /** + * Constructs a new DisableTorsoMotion. + * @exports message.motion.DisableTorsoMotion + * @constructor + * @param {message.motion.DisableTorsoMotion$Properties=} [properties] Properties to set + */ + function DisableTorsoMotion(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Creates a new DisableTorsoMotion instance using the specified properties. + * @param {message.motion.DisableTorsoMotion$Properties=} [properties] Properties to set + * @returns {message.motion.DisableTorsoMotion} DisableTorsoMotion instance + */ + DisableTorsoMotion.create = function create(properties) { + return new DisableTorsoMotion(properties); + }; + + /** + * Encodes the specified DisableTorsoMotion message. Does not implicitly {@link message.motion.DisableTorsoMotion.verify|verify} messages. + * @param {message.motion.DisableTorsoMotion$Properties} message DisableTorsoMotion message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + DisableTorsoMotion.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + return writer; + }; + + /** + * Encodes the specified DisableTorsoMotion message, length delimited. Does not implicitly {@link message.motion.DisableTorsoMotion.verify|verify} messages. + * @param {message.motion.DisableTorsoMotion$Properties} message DisableTorsoMotion message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + DisableTorsoMotion.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a DisableTorsoMotion message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.motion.DisableTorsoMotion} DisableTorsoMotion + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + DisableTorsoMotion.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.motion.DisableTorsoMotion(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a DisableTorsoMotion message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.motion.DisableTorsoMotion} DisableTorsoMotion + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + DisableTorsoMotion.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a DisableTorsoMotion message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + DisableTorsoMotion.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + return null; + }; + + /** + * Creates a DisableTorsoMotion message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.motion.DisableTorsoMotion} DisableTorsoMotion + */ + DisableTorsoMotion.fromObject = function fromObject(object) { + if (object instanceof $root.message.motion.DisableTorsoMotion) + return object; + return new $root.message.motion.DisableTorsoMotion(); + }; + + /** + * Creates a DisableTorsoMotion message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.motion.DisableTorsoMotion.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.motion.DisableTorsoMotion} DisableTorsoMotion + */ + DisableTorsoMotion.from = DisableTorsoMotion.fromObject; + + /** + * Creates a plain object from a DisableTorsoMotion message. Also converts values to other types if specified. + * @param {message.motion.DisableTorsoMotion} message DisableTorsoMotion + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + DisableTorsoMotion.toObject = function toObject() { + return {}; + }; + + /** + * Creates a plain object from this DisableTorsoMotion message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + DisableTorsoMotion.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this DisableTorsoMotion to JSON. + * @returns {Object.} JSON object + */ + DisableTorsoMotion.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return DisableTorsoMotion; + })(); + + motion.WalkStarted = (function() { + + /** + * Properties of a WalkStarted. + * @typedef message.motion.WalkStarted$Properties + * @type {Object} + */ + + /** + * Constructs a new WalkStarted. + * @exports message.motion.WalkStarted + * @constructor + * @param {message.motion.WalkStarted$Properties=} [properties] Properties to set + */ + function WalkStarted(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Creates a new WalkStarted instance using the specified properties. + * @param {message.motion.WalkStarted$Properties=} [properties] Properties to set + * @returns {message.motion.WalkStarted} WalkStarted instance + */ + WalkStarted.create = function create(properties) { + return new WalkStarted(properties); + }; + + /** + * Encodes the specified WalkStarted message. Does not implicitly {@link message.motion.WalkStarted.verify|verify} messages. + * @param {message.motion.WalkStarted$Properties} message WalkStarted message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + WalkStarted.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + return writer; + }; + + /** + * Encodes the specified WalkStarted message, length delimited. Does not implicitly {@link message.motion.WalkStarted.verify|verify} messages. + * @param {message.motion.WalkStarted$Properties} message WalkStarted message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + WalkStarted.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a WalkStarted message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.motion.WalkStarted} WalkStarted + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + WalkStarted.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.motion.WalkStarted(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a WalkStarted message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.motion.WalkStarted} WalkStarted + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + WalkStarted.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a WalkStarted message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + WalkStarted.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + return null; + }; + + /** + * Creates a WalkStarted message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.motion.WalkStarted} WalkStarted + */ + WalkStarted.fromObject = function fromObject(object) { + if (object instanceof $root.message.motion.WalkStarted) + return object; + return new $root.message.motion.WalkStarted(); + }; + + /** + * Creates a WalkStarted message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.motion.WalkStarted.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.motion.WalkStarted} WalkStarted + */ + WalkStarted.from = WalkStarted.fromObject; + + /** + * Creates a plain object from a WalkStarted message. Also converts values to other types if specified. + * @param {message.motion.WalkStarted} message WalkStarted + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + WalkStarted.toObject = function toObject() { + return {}; + }; + + /** + * Creates a plain object from this WalkStarted message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + WalkStarted.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this WalkStarted to JSON. + * @returns {Object.} JSON object + */ + WalkStarted.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return WalkStarted; + })(); + + motion.WalkStopped = (function() { + + /** + * Properties of a WalkStopped. + * @typedef message.motion.WalkStopped$Properties + * @type {Object} + */ + + /** + * Constructs a new WalkStopped. + * @exports message.motion.WalkStopped + * @constructor + * @param {message.motion.WalkStopped$Properties=} [properties] Properties to set + */ + function WalkStopped(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Creates a new WalkStopped instance using the specified properties. + * @param {message.motion.WalkStopped$Properties=} [properties] Properties to set + * @returns {message.motion.WalkStopped} WalkStopped instance + */ + WalkStopped.create = function create(properties) { + return new WalkStopped(properties); + }; + + /** + * Encodes the specified WalkStopped message. Does not implicitly {@link message.motion.WalkStopped.verify|verify} messages. + * @param {message.motion.WalkStopped$Properties} message WalkStopped message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + WalkStopped.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + return writer; + }; + + /** + * Encodes the specified WalkStopped message, length delimited. Does not implicitly {@link message.motion.WalkStopped.verify|verify} messages. + * @param {message.motion.WalkStopped$Properties} message WalkStopped message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + WalkStopped.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a WalkStopped message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.motion.WalkStopped} WalkStopped + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + WalkStopped.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.motion.WalkStopped(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a WalkStopped message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.motion.WalkStopped} WalkStopped + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + WalkStopped.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a WalkStopped message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + WalkStopped.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + return null; + }; + + /** + * Creates a WalkStopped message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.motion.WalkStopped} WalkStopped + */ + WalkStopped.fromObject = function fromObject(object) { + if (object instanceof $root.message.motion.WalkStopped) + return object; + return new $root.message.motion.WalkStopped(); + }; + + /** + * Creates a WalkStopped message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.motion.WalkStopped.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.motion.WalkStopped} WalkStopped + */ + WalkStopped.from = WalkStopped.fromObject; + + /** + * Creates a plain object from a WalkStopped message. Also converts values to other types if specified. + * @param {message.motion.WalkStopped} message WalkStopped + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + WalkStopped.toObject = function toObject() { + return {}; + }; + + /** + * Creates a plain object from this WalkStopped message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + WalkStopped.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this WalkStopped to JSON. + * @returns {Object.} JSON object + */ + WalkStopped.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return WalkStopped; + })(); + + motion.WalkCommand = (function() { + + /** + * Properties of a WalkCommand. + * @typedef message.motion.WalkCommand$Properties + * @type {Object} + * @property {number|Long} [subsumptionId] WalkCommand subsumptionId. + * @property {vec3$Properties} [command] WalkCommand command. + */ + + /** + * Constructs a new WalkCommand. + * @exports message.motion.WalkCommand + * @constructor + * @param {message.motion.WalkCommand$Properties=} [properties] Properties to set + */ + function WalkCommand(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * WalkCommand subsumptionId. + * @type {number|Long} + */ + WalkCommand.prototype.subsumptionId = $util.Long ? $util.Long.fromBits(0,0,true) : 0; + + /** + * WalkCommand command. + * @type {(vec3$Properties|null)} + */ + WalkCommand.prototype.command = null; + + /** + * Creates a new WalkCommand instance using the specified properties. + * @param {message.motion.WalkCommand$Properties=} [properties] Properties to set + * @returns {message.motion.WalkCommand} WalkCommand instance + */ + WalkCommand.create = function create(properties) { + return new WalkCommand(properties); + }; + + /** + * Encodes the specified WalkCommand message. Does not implicitly {@link message.motion.WalkCommand.verify|verify} messages. + * @param {message.motion.WalkCommand$Properties} message WalkCommand message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + WalkCommand.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.subsumptionId != null && message.hasOwnProperty("subsumptionId")) + writer.uint32(/* id 1, wireType 0 =*/8).uint64(message.subsumptionId); + if (message.command != null && message.hasOwnProperty("command")) + $root.vec3.encode(message.command, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified WalkCommand message, length delimited. Does not implicitly {@link message.motion.WalkCommand.verify|verify} messages. + * @param {message.motion.WalkCommand$Properties} message WalkCommand message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + WalkCommand.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a WalkCommand message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.motion.WalkCommand} WalkCommand + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + WalkCommand.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.motion.WalkCommand(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.subsumptionId = reader.uint64(); + break; + case 2: + message.command = $root.vec3.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a WalkCommand message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.motion.WalkCommand} WalkCommand + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + WalkCommand.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a WalkCommand message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + WalkCommand.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.subsumptionId != null && message.hasOwnProperty("subsumptionId")) + if (!$util.isInteger(message.subsumptionId) && !(message.subsumptionId && $util.isInteger(message.subsumptionId.low) && $util.isInteger(message.subsumptionId.high))) + return "subsumptionId: integer|Long expected"; + if (message.command != null && message.hasOwnProperty("command")) { + var error = $root.vec3.verify(message.command); + if (error) + return "command." + error; + } + return null; + }; + + /** + * Creates a WalkCommand message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.motion.WalkCommand} WalkCommand + */ + WalkCommand.fromObject = function fromObject(object) { + if (object instanceof $root.message.motion.WalkCommand) + return object; + var message = new $root.message.motion.WalkCommand(); + if (object.subsumptionId != null) + if ($util.Long) + (message.subsumptionId = $util.Long.fromValue(object.subsumptionId)).unsigned = true; + else if (typeof object.subsumptionId === "string") + message.subsumptionId = parseInt(object.subsumptionId, 10); + else if (typeof object.subsumptionId === "number") + message.subsumptionId = object.subsumptionId; + else if (typeof object.subsumptionId === "object") + message.subsumptionId = new $util.LongBits(object.subsumptionId.low >>> 0, object.subsumptionId.high >>> 0).toNumber(true); + if (object.command != null) { + if (typeof object.command !== "object") + throw TypeError(".message.motion.WalkCommand.command: object expected"); + message.command = $root.vec3.fromObject(object.command); + } + return message; + }; + + /** + * Creates a WalkCommand message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.motion.WalkCommand.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.motion.WalkCommand} WalkCommand + */ + WalkCommand.from = WalkCommand.fromObject; + + /** + * Creates a plain object from a WalkCommand message. Also converts values to other types if specified. + * @param {message.motion.WalkCommand} message WalkCommand + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + WalkCommand.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + if ($util.Long) { + var long = new $util.Long(0, 0, true); + object.subsumptionId = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; + } else + object.subsumptionId = options.longs === String ? "0" : 0; + object.command = null; + } + if (message.subsumptionId != null && message.hasOwnProperty("subsumptionId")) + if (typeof message.subsumptionId === "number") + object.subsumptionId = options.longs === String ? String(message.subsumptionId) : message.subsumptionId; + else + object.subsumptionId = options.longs === String ? $util.Long.prototype.toString.call(message.subsumptionId) : options.longs === Number ? new $util.LongBits(message.subsumptionId.low >>> 0, message.subsumptionId.high >>> 0).toNumber(true) : message.subsumptionId; + if (message.command != null && message.hasOwnProperty("command")) + object.command = $root.vec3.toObject(message.command, options); + return object; + }; + + /** + * Creates a plain object from this WalkCommand message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + WalkCommand.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this WalkCommand to JSON. + * @returns {Object.} JSON object + */ + WalkCommand.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return WalkCommand; + })(); + + motion.StopCommand = (function() { + + /** + * Properties of a StopCommand. + * @typedef message.motion.StopCommand$Properties + * @type {Object} + * @property {number|Long} [subsumptionId] StopCommand subsumptionId. + */ + + /** + * Constructs a new StopCommand. + * @exports message.motion.StopCommand + * @constructor + * @param {message.motion.StopCommand$Properties=} [properties] Properties to set + */ + function StopCommand(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * StopCommand subsumptionId. + * @type {number|Long} + */ + StopCommand.prototype.subsumptionId = $util.Long ? $util.Long.fromBits(0,0,true) : 0; + + /** + * Creates a new StopCommand instance using the specified properties. + * @param {message.motion.StopCommand$Properties=} [properties] Properties to set + * @returns {message.motion.StopCommand} StopCommand instance + */ + StopCommand.create = function create(properties) { + return new StopCommand(properties); + }; + + /** + * Encodes the specified StopCommand message. Does not implicitly {@link message.motion.StopCommand.verify|verify} messages. + * @param {message.motion.StopCommand$Properties} message StopCommand message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + StopCommand.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.subsumptionId != null && message.hasOwnProperty("subsumptionId")) + writer.uint32(/* id 1, wireType 0 =*/8).uint64(message.subsumptionId); + return writer; + }; + + /** + * Encodes the specified StopCommand message, length delimited. Does not implicitly {@link message.motion.StopCommand.verify|verify} messages. + * @param {message.motion.StopCommand$Properties} message StopCommand message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + StopCommand.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a StopCommand message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.motion.StopCommand} StopCommand + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + StopCommand.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.motion.StopCommand(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.subsumptionId = reader.uint64(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a StopCommand message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.motion.StopCommand} StopCommand + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + StopCommand.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a StopCommand message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + StopCommand.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.subsumptionId != null && message.hasOwnProperty("subsumptionId")) + if (!$util.isInteger(message.subsumptionId) && !(message.subsumptionId && $util.isInteger(message.subsumptionId.low) && $util.isInteger(message.subsumptionId.high))) + return "subsumptionId: integer|Long expected"; + return null; + }; + + /** + * Creates a StopCommand message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.motion.StopCommand} StopCommand + */ + StopCommand.fromObject = function fromObject(object) { + if (object instanceof $root.message.motion.StopCommand) + return object; + var message = new $root.message.motion.StopCommand(); + if (object.subsumptionId != null) + if ($util.Long) + (message.subsumptionId = $util.Long.fromValue(object.subsumptionId)).unsigned = true; + else if (typeof object.subsumptionId === "string") + message.subsumptionId = parseInt(object.subsumptionId, 10); + else if (typeof object.subsumptionId === "number") + message.subsumptionId = object.subsumptionId; + else if (typeof object.subsumptionId === "object") + message.subsumptionId = new $util.LongBits(object.subsumptionId.low >>> 0, object.subsumptionId.high >>> 0).toNumber(true); + return message; + }; + + /** + * Creates a StopCommand message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.motion.StopCommand.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.motion.StopCommand} StopCommand + */ + StopCommand.from = StopCommand.fromObject; + + /** + * Creates a plain object from a StopCommand message. Also converts values to other types if specified. + * @param {message.motion.StopCommand} message StopCommand + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + StopCommand.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) + if ($util.Long) { + var long = new $util.Long(0, 0, true); + object.subsumptionId = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; + } else + object.subsumptionId = options.longs === String ? "0" : 0; + if (message.subsumptionId != null && message.hasOwnProperty("subsumptionId")) + if (typeof message.subsumptionId === "number") + object.subsumptionId = options.longs === String ? String(message.subsumptionId) : message.subsumptionId; + else + object.subsumptionId = options.longs === String ? $util.Long.prototype.toString.call(message.subsumptionId) : options.longs === Number ? new $util.LongBits(message.subsumptionId.low >>> 0, message.subsumptionId.high >>> 0).toNumber(true) : message.subsumptionId; + return object; + }; + + /** + * Creates a plain object from this StopCommand message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + StopCommand.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this StopCommand to JSON. + * @returns {Object.} JSON object + */ + StopCommand.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return StopCommand; + })(); + + motion.NewWalkCommand = (function() { + + /** + * Properties of a NewWalkCommand. + * @typedef message.motion.NewWalkCommand$Properties + * @type {Object} + * @property {vec3$Properties} [velocityTarget] NewWalkCommand velocityTarget. + */ + + /** + * Constructs a new NewWalkCommand. + * @exports message.motion.NewWalkCommand + * @constructor + * @param {message.motion.NewWalkCommand$Properties=} [properties] Properties to set + */ + function NewWalkCommand(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * NewWalkCommand velocityTarget. + * @type {(vec3$Properties|null)} + */ + NewWalkCommand.prototype.velocityTarget = null; + + /** + * Creates a new NewWalkCommand instance using the specified properties. + * @param {message.motion.NewWalkCommand$Properties=} [properties] Properties to set + * @returns {message.motion.NewWalkCommand} NewWalkCommand instance + */ + NewWalkCommand.create = function create(properties) { + return new NewWalkCommand(properties); + }; + + /** + * Encodes the specified NewWalkCommand message. Does not implicitly {@link message.motion.NewWalkCommand.verify|verify} messages. + * @param {message.motion.NewWalkCommand$Properties} message NewWalkCommand message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + NewWalkCommand.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.velocityTarget != null && message.hasOwnProperty("velocityTarget")) + $root.vec3.encode(message.velocityTarget, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified NewWalkCommand message, length delimited. Does not implicitly {@link message.motion.NewWalkCommand.verify|verify} messages. + * @param {message.motion.NewWalkCommand$Properties} message NewWalkCommand message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + NewWalkCommand.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a NewWalkCommand message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.motion.NewWalkCommand} NewWalkCommand + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + NewWalkCommand.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.motion.NewWalkCommand(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.velocityTarget = $root.vec3.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a NewWalkCommand message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.motion.NewWalkCommand} NewWalkCommand + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + NewWalkCommand.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a NewWalkCommand message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + NewWalkCommand.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.velocityTarget != null && message.hasOwnProperty("velocityTarget")) { + var error = $root.vec3.verify(message.velocityTarget); + if (error) + return "velocityTarget." + error; + } + return null; + }; + + /** + * Creates a NewWalkCommand message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.motion.NewWalkCommand} NewWalkCommand + */ + NewWalkCommand.fromObject = function fromObject(object) { + if (object instanceof $root.message.motion.NewWalkCommand) + return object; + var message = new $root.message.motion.NewWalkCommand(); + if (object.velocityTarget != null) { + if (typeof object.velocityTarget !== "object") + throw TypeError(".message.motion.NewWalkCommand.velocityTarget: object expected"); + message.velocityTarget = $root.vec3.fromObject(object.velocityTarget); + } + return message; + }; + + /** + * Creates a NewWalkCommand message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.motion.NewWalkCommand.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.motion.NewWalkCommand} NewWalkCommand + */ + NewWalkCommand.from = NewWalkCommand.fromObject; + + /** + * Creates a plain object from a NewWalkCommand message. Also converts values to other types if specified. + * @param {message.motion.NewWalkCommand} message NewWalkCommand + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + NewWalkCommand.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) + object.velocityTarget = null; + if (message.velocityTarget != null && message.hasOwnProperty("velocityTarget")) + object.velocityTarget = $root.vec3.toObject(message.velocityTarget, options); + return object; + }; + + /** + * Creates a plain object from this NewWalkCommand message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + NewWalkCommand.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this NewWalkCommand to JSON. + * @returns {Object.} JSON object + */ + NewWalkCommand.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return NewWalkCommand; + })(); + + motion.EnableWalkEngineCommand = (function() { + + /** + * Properties of an EnableWalkEngineCommand. + * @typedef message.motion.EnableWalkEngineCommand$Properties + * @type {Object} + * @property {number|Long} [subsumptionId] EnableWalkEngineCommand subsumptionId. + */ + + /** + * Constructs a new EnableWalkEngineCommand. + * @exports message.motion.EnableWalkEngineCommand + * @constructor + * @param {message.motion.EnableWalkEngineCommand$Properties=} [properties] Properties to set + */ + function EnableWalkEngineCommand(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * EnableWalkEngineCommand subsumptionId. + * @type {number|Long} + */ + EnableWalkEngineCommand.prototype.subsumptionId = $util.Long ? $util.Long.fromBits(0,0,true) : 0; + + /** + * Creates a new EnableWalkEngineCommand instance using the specified properties. + * @param {message.motion.EnableWalkEngineCommand$Properties=} [properties] Properties to set + * @returns {message.motion.EnableWalkEngineCommand} EnableWalkEngineCommand instance + */ + EnableWalkEngineCommand.create = function create(properties) { + return new EnableWalkEngineCommand(properties); + }; + + /** + * Encodes the specified EnableWalkEngineCommand message. Does not implicitly {@link message.motion.EnableWalkEngineCommand.verify|verify} messages. + * @param {message.motion.EnableWalkEngineCommand$Properties} message EnableWalkEngineCommand message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + EnableWalkEngineCommand.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.subsumptionId != null && message.hasOwnProperty("subsumptionId")) + writer.uint32(/* id 1, wireType 0 =*/8).uint64(message.subsumptionId); + return writer; + }; + + /** + * Encodes the specified EnableWalkEngineCommand message, length delimited. Does not implicitly {@link message.motion.EnableWalkEngineCommand.verify|verify} messages. + * @param {message.motion.EnableWalkEngineCommand$Properties} message EnableWalkEngineCommand message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + EnableWalkEngineCommand.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes an EnableWalkEngineCommand message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.motion.EnableWalkEngineCommand} EnableWalkEngineCommand + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + EnableWalkEngineCommand.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.motion.EnableWalkEngineCommand(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.subsumptionId = reader.uint64(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes an EnableWalkEngineCommand message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.motion.EnableWalkEngineCommand} EnableWalkEngineCommand + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + EnableWalkEngineCommand.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies an EnableWalkEngineCommand message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + EnableWalkEngineCommand.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.subsumptionId != null && message.hasOwnProperty("subsumptionId")) + if (!$util.isInteger(message.subsumptionId) && !(message.subsumptionId && $util.isInteger(message.subsumptionId.low) && $util.isInteger(message.subsumptionId.high))) + return "subsumptionId: integer|Long expected"; + return null; + }; + + /** + * Creates an EnableWalkEngineCommand message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.motion.EnableWalkEngineCommand} EnableWalkEngineCommand + */ + EnableWalkEngineCommand.fromObject = function fromObject(object) { + if (object instanceof $root.message.motion.EnableWalkEngineCommand) + return object; + var message = new $root.message.motion.EnableWalkEngineCommand(); + if (object.subsumptionId != null) + if ($util.Long) + (message.subsumptionId = $util.Long.fromValue(object.subsumptionId)).unsigned = true; + else if (typeof object.subsumptionId === "string") + message.subsumptionId = parseInt(object.subsumptionId, 10); + else if (typeof object.subsumptionId === "number") + message.subsumptionId = object.subsumptionId; + else if (typeof object.subsumptionId === "object") + message.subsumptionId = new $util.LongBits(object.subsumptionId.low >>> 0, object.subsumptionId.high >>> 0).toNumber(true); + return message; + }; + + /** + * Creates an EnableWalkEngineCommand message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.motion.EnableWalkEngineCommand.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.motion.EnableWalkEngineCommand} EnableWalkEngineCommand + */ + EnableWalkEngineCommand.from = EnableWalkEngineCommand.fromObject; + + /** + * Creates a plain object from an EnableWalkEngineCommand message. Also converts values to other types if specified. + * @param {message.motion.EnableWalkEngineCommand} message EnableWalkEngineCommand + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + EnableWalkEngineCommand.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) + if ($util.Long) { + var long = new $util.Long(0, 0, true); + object.subsumptionId = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; + } else + object.subsumptionId = options.longs === String ? "0" : 0; + if (message.subsumptionId != null && message.hasOwnProperty("subsumptionId")) + if (typeof message.subsumptionId === "number") + object.subsumptionId = options.longs === String ? String(message.subsumptionId) : message.subsumptionId; + else + object.subsumptionId = options.longs === String ? $util.Long.prototype.toString.call(message.subsumptionId) : options.longs === Number ? new $util.LongBits(message.subsumptionId.low >>> 0, message.subsumptionId.high >>> 0).toNumber(true) : message.subsumptionId; + return object; + }; + + /** + * Creates a plain object from this EnableWalkEngineCommand message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + EnableWalkEngineCommand.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this EnableWalkEngineCommand to JSON. + * @returns {Object.} JSON object + */ + EnableWalkEngineCommand.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return EnableWalkEngineCommand; + })(); + + motion.DisableWalkEngineCommand = (function() { + + /** + * Properties of a DisableWalkEngineCommand. + * @typedef message.motion.DisableWalkEngineCommand$Properties + * @type {Object} + * @property {number|Long} [subsumptionId] DisableWalkEngineCommand subsumptionId. + */ + + /** + * Constructs a new DisableWalkEngineCommand. + * @exports message.motion.DisableWalkEngineCommand + * @constructor + * @param {message.motion.DisableWalkEngineCommand$Properties=} [properties] Properties to set + */ + function DisableWalkEngineCommand(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * DisableWalkEngineCommand subsumptionId. + * @type {number|Long} + */ + DisableWalkEngineCommand.prototype.subsumptionId = $util.Long ? $util.Long.fromBits(0,0,true) : 0; + + /** + * Creates a new DisableWalkEngineCommand instance using the specified properties. + * @param {message.motion.DisableWalkEngineCommand$Properties=} [properties] Properties to set + * @returns {message.motion.DisableWalkEngineCommand} DisableWalkEngineCommand instance + */ + DisableWalkEngineCommand.create = function create(properties) { + return new DisableWalkEngineCommand(properties); + }; + + /** + * Encodes the specified DisableWalkEngineCommand message. Does not implicitly {@link message.motion.DisableWalkEngineCommand.verify|verify} messages. + * @param {message.motion.DisableWalkEngineCommand$Properties} message DisableWalkEngineCommand message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + DisableWalkEngineCommand.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.subsumptionId != null && message.hasOwnProperty("subsumptionId")) + writer.uint32(/* id 1, wireType 0 =*/8).uint64(message.subsumptionId); + return writer; + }; + + /** + * Encodes the specified DisableWalkEngineCommand message, length delimited. Does not implicitly {@link message.motion.DisableWalkEngineCommand.verify|verify} messages. + * @param {message.motion.DisableWalkEngineCommand$Properties} message DisableWalkEngineCommand message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + DisableWalkEngineCommand.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a DisableWalkEngineCommand message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.motion.DisableWalkEngineCommand} DisableWalkEngineCommand + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + DisableWalkEngineCommand.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.motion.DisableWalkEngineCommand(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.subsumptionId = reader.uint64(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a DisableWalkEngineCommand message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.motion.DisableWalkEngineCommand} DisableWalkEngineCommand + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + DisableWalkEngineCommand.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a DisableWalkEngineCommand message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + DisableWalkEngineCommand.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.subsumptionId != null && message.hasOwnProperty("subsumptionId")) + if (!$util.isInteger(message.subsumptionId) && !(message.subsumptionId && $util.isInteger(message.subsumptionId.low) && $util.isInteger(message.subsumptionId.high))) + return "subsumptionId: integer|Long expected"; + return null; + }; + + /** + * Creates a DisableWalkEngineCommand message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.motion.DisableWalkEngineCommand} DisableWalkEngineCommand + */ + DisableWalkEngineCommand.fromObject = function fromObject(object) { + if (object instanceof $root.message.motion.DisableWalkEngineCommand) + return object; + var message = new $root.message.motion.DisableWalkEngineCommand(); + if (object.subsumptionId != null) + if ($util.Long) + (message.subsumptionId = $util.Long.fromValue(object.subsumptionId)).unsigned = true; + else if (typeof object.subsumptionId === "string") + message.subsumptionId = parseInt(object.subsumptionId, 10); + else if (typeof object.subsumptionId === "number") + message.subsumptionId = object.subsumptionId; + else if (typeof object.subsumptionId === "object") + message.subsumptionId = new $util.LongBits(object.subsumptionId.low >>> 0, object.subsumptionId.high >>> 0).toNumber(true); + return message; + }; + + /** + * Creates a DisableWalkEngineCommand message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.motion.DisableWalkEngineCommand.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.motion.DisableWalkEngineCommand} DisableWalkEngineCommand + */ + DisableWalkEngineCommand.from = DisableWalkEngineCommand.fromObject; + + /** + * Creates a plain object from a DisableWalkEngineCommand message. Also converts values to other types if specified. + * @param {message.motion.DisableWalkEngineCommand} message DisableWalkEngineCommand + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + DisableWalkEngineCommand.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) + if ($util.Long) { + var long = new $util.Long(0, 0, true); + object.subsumptionId = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; + } else + object.subsumptionId = options.longs === String ? "0" : 0; + if (message.subsumptionId != null && message.hasOwnProperty("subsumptionId")) + if (typeof message.subsumptionId === "number") + object.subsumptionId = options.longs === String ? String(message.subsumptionId) : message.subsumptionId; + else + object.subsumptionId = options.longs === String ? $util.Long.prototype.toString.call(message.subsumptionId) : options.longs === Number ? new $util.LongBits(message.subsumptionId.low >>> 0, message.subsumptionId.high >>> 0).toNumber(true) : message.subsumptionId; + return object; + }; + + /** + * Creates a plain object from this DisableWalkEngineCommand message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + DisableWalkEngineCommand.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this DisableWalkEngineCommand to JSON. + * @returns {Object.} JSON object + */ + DisableWalkEngineCommand.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return DisableWalkEngineCommand; + })(); + + return motion; + })(); + + message.output = (function() { + + /** + * Namespace output. + * @exports message.output + * @namespace + */ + var output = {}; + + output.Say = (function() { + + /** + * Properties of a Say. + * @typedef message.output.Say$Properties + * @type {Object} + * @property {string} [message] Say message. + */ + + /** + * Constructs a new Say. + * @classdesc TODO document + * + * @author Trent Houliston + * @exports message.output.Say + * @constructor + * @param {message.output.Say$Properties=} [properties] Properties to set + */ + function Say(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Say message. + * @type {string} + */ + Say.prototype.message = ""; + + /** + * Creates a new Say instance using the specified properties. + * @param {message.output.Say$Properties=} [properties] Properties to set + * @returns {message.output.Say} Say instance + */ + Say.create = function create(properties) { + return new Say(properties); + }; + + /** + * Encodes the specified Say message. Does not implicitly {@link message.output.Say.verify|verify} messages. + * @param {message.output.Say$Properties} message Say message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Say.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.message != null && message.hasOwnProperty("message")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.message); + return writer; + }; + + /** + * Encodes the specified Say message, length delimited. Does not implicitly {@link message.output.Say.verify|verify} messages. + * @param {message.output.Say$Properties} message Say message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Say.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a Say message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.output.Say} Say + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Say.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.output.Say(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.message = reader.string(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a Say message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.output.Say} Say + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Say.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a Say message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + Say.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.message != null && message.hasOwnProperty("message")) + if (!$util.isString(message.message)) + return "message: string expected"; + return null; + }; + + /** + * Creates a Say message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.output.Say} Say + */ + Say.fromObject = function fromObject(object) { + if (object instanceof $root.message.output.Say) + return object; + var message = new $root.message.output.Say(); + if (object.message != null) + message.message = String(object.message); + return message; + }; + + /** + * Creates a Say message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.output.Say.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.output.Say} Say + */ + Say.from = Say.fromObject; + + /** + * Creates a plain object from a Say message. Also converts values to other types if specified. + * @param {message.output.Say} message Say + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Say.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) + object.message = ""; + if (message.message != null && message.hasOwnProperty("message")) + object.message = message.message; + return object; + }; + + /** + * Creates a plain object from this Say message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Say.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this Say to JSON. + * @returns {Object.} JSON object + */ + Say.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return Say; + })(); + + return output; + })(); + + message.platform = (function() { + + /** + * Namespace platform. + * @exports message.platform + * @namespace + */ + var platform = {}; + + platform.darwin = (function() { + + /** + * Namespace darwin. + * @exports message.platform.darwin + * @namespace + */ + var darwin = {}; + + darwin.DarwinSensors = (function() { + + /** + * Properties of a DarwinSensors. + * @typedef message.platform.darwin.DarwinSensors$Properties + * @type {Object} + * @property {google.protobuf.Timestamp$Properties} [timestamp] DarwinSensors timestamp. + * @property {number} [cm730ErrorFlags] DarwinSensors cm730ErrorFlags. + * @property {message.platform.darwin.DarwinSensors.LEDPanel$Properties} [ledPanel] DarwinSensors ledPanel. + * @property {message.platform.darwin.DarwinSensors.HeadLED$Properties} [headLED] DarwinSensors headLED. + * @property {message.platform.darwin.DarwinSensors.EyeLED$Properties} [eyeLED] DarwinSensors eyeLED. + * @property {message.platform.darwin.DarwinSensors.Buttons$Properties} [buttons] DarwinSensors buttons. + * @property {number} [voltage] DarwinSensors voltage. + * @property {message.platform.darwin.DarwinSensors.Accelerometer$Properties} [accelerometer] DarwinSensors accelerometer. + * @property {message.platform.darwin.DarwinSensors.Gyroscope$Properties} [gyroscope] DarwinSensors gyroscope. + * @property {message.platform.darwin.DarwinSensors.FSRs$Properties} [fsr] DarwinSensors fsr. + * @property {message.platform.darwin.DarwinSensors.Servos$Properties} [servo] DarwinSensors servo. + */ + + /** + * Constructs a new DarwinSensors. + * @classdesc TODO document + * + * @author Trent Houliston + * @exports message.platform.darwin.DarwinSensors + * @constructor + * @param {message.platform.darwin.DarwinSensors$Properties=} [properties] Properties to set + */ + function DarwinSensors(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * DarwinSensors timestamp. + * @type {(google.protobuf.Timestamp$Properties|null)} + */ + DarwinSensors.prototype.timestamp = null; + + /** + * DarwinSensors cm730ErrorFlags. + * @type {number} + */ + DarwinSensors.prototype.cm730ErrorFlags = 0; + + /** + * DarwinSensors ledPanel. + * @type {(message.platform.darwin.DarwinSensors.LEDPanel$Properties|null)} + */ + DarwinSensors.prototype.ledPanel = null; + + /** + * DarwinSensors headLED. + * @type {(message.platform.darwin.DarwinSensors.HeadLED$Properties|null)} + */ + DarwinSensors.prototype.headLED = null; + + /** + * DarwinSensors eyeLED. + * @type {(message.platform.darwin.DarwinSensors.EyeLED$Properties|null)} + */ + DarwinSensors.prototype.eyeLED = null; + + /** + * DarwinSensors buttons. + * @type {(message.platform.darwin.DarwinSensors.Buttons$Properties|null)} + */ + DarwinSensors.prototype.buttons = null; + + /** + * DarwinSensors voltage. + * @type {number} + */ + DarwinSensors.prototype.voltage = 0; + + /** + * DarwinSensors accelerometer. + * @type {(message.platform.darwin.DarwinSensors.Accelerometer$Properties|null)} + */ + DarwinSensors.prototype.accelerometer = null; + + /** + * DarwinSensors gyroscope. + * @type {(message.platform.darwin.DarwinSensors.Gyroscope$Properties|null)} + */ + DarwinSensors.prototype.gyroscope = null; + + /** + * DarwinSensors fsr. + * @type {(message.platform.darwin.DarwinSensors.FSRs$Properties|null)} + */ + DarwinSensors.prototype.fsr = null; + + /** + * DarwinSensors servo. + * @type {(message.platform.darwin.DarwinSensors.Servos$Properties|null)} + */ + DarwinSensors.prototype.servo = null; + + /** + * Creates a new DarwinSensors instance using the specified properties. + * @param {message.platform.darwin.DarwinSensors$Properties=} [properties] Properties to set + * @returns {message.platform.darwin.DarwinSensors} DarwinSensors instance + */ + DarwinSensors.create = function create(properties) { + return new DarwinSensors(properties); + }; + + /** + * Encodes the specified DarwinSensors message. Does not implicitly {@link message.platform.darwin.DarwinSensors.verify|verify} messages. + * @param {message.platform.darwin.DarwinSensors$Properties} message DarwinSensors message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + DarwinSensors.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.timestamp != null && message.hasOwnProperty("timestamp")) + $root.google.protobuf.Timestamp.encode(message.timestamp, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.cm730ErrorFlags != null && message.hasOwnProperty("cm730ErrorFlags")) + writer.uint32(/* id 2, wireType 0 =*/16).uint32(message.cm730ErrorFlags); + if (message.ledPanel != null && message.hasOwnProperty("ledPanel")) + $root.message.platform.darwin.DarwinSensors.LEDPanel.encode(message.ledPanel, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + if (message.headLED != null && message.hasOwnProperty("headLED")) + $root.message.platform.darwin.DarwinSensors.HeadLED.encode(message.headLED, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); + if (message.eyeLED != null && message.hasOwnProperty("eyeLED")) + $root.message.platform.darwin.DarwinSensors.EyeLED.encode(message.eyeLED, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); + if (message.buttons != null && message.hasOwnProperty("buttons")) + $root.message.platform.darwin.DarwinSensors.Buttons.encode(message.buttons, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim(); + if (message.voltage != null && message.hasOwnProperty("voltage")) + writer.uint32(/* id 7, wireType 5 =*/61).float(message.voltage); + if (message.accelerometer != null && message.hasOwnProperty("accelerometer")) + $root.message.platform.darwin.DarwinSensors.Accelerometer.encode(message.accelerometer, writer.uint32(/* id 8, wireType 2 =*/66).fork()).ldelim(); + if (message.gyroscope != null && message.hasOwnProperty("gyroscope")) + $root.message.platform.darwin.DarwinSensors.Gyroscope.encode(message.gyroscope, writer.uint32(/* id 9, wireType 2 =*/74).fork()).ldelim(); + if (message.fsr != null && message.hasOwnProperty("fsr")) + $root.message.platform.darwin.DarwinSensors.FSRs.encode(message.fsr, writer.uint32(/* id 10, wireType 2 =*/82).fork()).ldelim(); + if (message.servo != null && message.hasOwnProperty("servo")) + $root.message.platform.darwin.DarwinSensors.Servos.encode(message.servo, writer.uint32(/* id 11, wireType 2 =*/90).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified DarwinSensors message, length delimited. Does not implicitly {@link message.platform.darwin.DarwinSensors.verify|verify} messages. + * @param {message.platform.darwin.DarwinSensors$Properties} message DarwinSensors message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + DarwinSensors.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a DarwinSensors message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.platform.darwin.DarwinSensors} DarwinSensors + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + DarwinSensors.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.platform.darwin.DarwinSensors(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.timestamp = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); + break; + case 2: + message.cm730ErrorFlags = reader.uint32(); + break; + case 3: + message.ledPanel = $root.message.platform.darwin.DarwinSensors.LEDPanel.decode(reader, reader.uint32()); + break; + case 4: + message.headLED = $root.message.platform.darwin.DarwinSensors.HeadLED.decode(reader, reader.uint32()); + break; + case 5: + message.eyeLED = $root.message.platform.darwin.DarwinSensors.EyeLED.decode(reader, reader.uint32()); + break; + case 6: + message.buttons = $root.message.platform.darwin.DarwinSensors.Buttons.decode(reader, reader.uint32()); + break; + case 7: + message.voltage = reader.float(); + break; + case 8: + message.accelerometer = $root.message.platform.darwin.DarwinSensors.Accelerometer.decode(reader, reader.uint32()); + break; + case 9: + message.gyroscope = $root.message.platform.darwin.DarwinSensors.Gyroscope.decode(reader, reader.uint32()); + break; + case 10: + message.fsr = $root.message.platform.darwin.DarwinSensors.FSRs.decode(reader, reader.uint32()); + break; + case 11: + message.servo = $root.message.platform.darwin.DarwinSensors.Servos.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a DarwinSensors message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.platform.darwin.DarwinSensors} DarwinSensors + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + DarwinSensors.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a DarwinSensors message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + DarwinSensors.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.timestamp != null && message.hasOwnProperty("timestamp")) { + var error = $root.google.protobuf.Timestamp.verify(message.timestamp); + if (error) + return "timestamp." + error; + } + if (message.cm730ErrorFlags != null && message.hasOwnProperty("cm730ErrorFlags")) + if (!$util.isInteger(message.cm730ErrorFlags)) + return "cm730ErrorFlags: integer expected"; + if (message.ledPanel != null && message.hasOwnProperty("ledPanel")) { + var error = $root.message.platform.darwin.DarwinSensors.LEDPanel.verify(message.ledPanel); + if (error) + return "ledPanel." + error; + } + if (message.headLED != null && message.hasOwnProperty("headLED")) { + var error = $root.message.platform.darwin.DarwinSensors.HeadLED.verify(message.headLED); + if (error) + return "headLED." + error; + } + if (message.eyeLED != null && message.hasOwnProperty("eyeLED")) { + var error = $root.message.platform.darwin.DarwinSensors.EyeLED.verify(message.eyeLED); + if (error) + return "eyeLED." + error; + } + if (message.buttons != null && message.hasOwnProperty("buttons")) { + var error = $root.message.platform.darwin.DarwinSensors.Buttons.verify(message.buttons); + if (error) + return "buttons." + error; + } + if (message.voltage != null && message.hasOwnProperty("voltage")) + if (typeof message.voltage !== "number") + return "voltage: number expected"; + if (message.accelerometer != null && message.hasOwnProperty("accelerometer")) { + var error = $root.message.platform.darwin.DarwinSensors.Accelerometer.verify(message.accelerometer); + if (error) + return "accelerometer." + error; + } + if (message.gyroscope != null && message.hasOwnProperty("gyroscope")) { + var error = $root.message.platform.darwin.DarwinSensors.Gyroscope.verify(message.gyroscope); + if (error) + return "gyroscope." + error; + } + if (message.fsr != null && message.hasOwnProperty("fsr")) { + var error = $root.message.platform.darwin.DarwinSensors.FSRs.verify(message.fsr); + if (error) + return "fsr." + error; + } + if (message.servo != null && message.hasOwnProperty("servo")) { + var error = $root.message.platform.darwin.DarwinSensors.Servos.verify(message.servo); + if (error) + return "servo." + error; + } + return null; + }; + + /** + * Creates a DarwinSensors message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.platform.darwin.DarwinSensors} DarwinSensors + */ + DarwinSensors.fromObject = function fromObject(object) { + if (object instanceof $root.message.platform.darwin.DarwinSensors) + return object; + var message = new $root.message.platform.darwin.DarwinSensors(); + if (object.timestamp != null) { + if (typeof object.timestamp !== "object") + throw TypeError(".message.platform.darwin.DarwinSensors.timestamp: object expected"); + message.timestamp = $root.google.protobuf.Timestamp.fromObject(object.timestamp); + } + if (object.cm730ErrorFlags != null) + message.cm730ErrorFlags = object.cm730ErrorFlags >>> 0; + if (object.ledPanel != null) { + if (typeof object.ledPanel !== "object") + throw TypeError(".message.platform.darwin.DarwinSensors.ledPanel: object expected"); + message.ledPanel = $root.message.platform.darwin.DarwinSensors.LEDPanel.fromObject(object.ledPanel); + } + if (object.headLED != null) { + if (typeof object.headLED !== "object") + throw TypeError(".message.platform.darwin.DarwinSensors.headLED: object expected"); + message.headLED = $root.message.platform.darwin.DarwinSensors.HeadLED.fromObject(object.headLED); + } + if (object.eyeLED != null) { + if (typeof object.eyeLED !== "object") + throw TypeError(".message.platform.darwin.DarwinSensors.eyeLED: object expected"); + message.eyeLED = $root.message.platform.darwin.DarwinSensors.EyeLED.fromObject(object.eyeLED); + } + if (object.buttons != null) { + if (typeof object.buttons !== "object") + throw TypeError(".message.platform.darwin.DarwinSensors.buttons: object expected"); + message.buttons = $root.message.platform.darwin.DarwinSensors.Buttons.fromObject(object.buttons); + } + if (object.voltage != null) + message.voltage = Number(object.voltage); + if (object.accelerometer != null) { + if (typeof object.accelerometer !== "object") + throw TypeError(".message.platform.darwin.DarwinSensors.accelerometer: object expected"); + message.accelerometer = $root.message.platform.darwin.DarwinSensors.Accelerometer.fromObject(object.accelerometer); + } + if (object.gyroscope != null) { + if (typeof object.gyroscope !== "object") + throw TypeError(".message.platform.darwin.DarwinSensors.gyroscope: object expected"); + message.gyroscope = $root.message.platform.darwin.DarwinSensors.Gyroscope.fromObject(object.gyroscope); + } + if (object.fsr != null) { + if (typeof object.fsr !== "object") + throw TypeError(".message.platform.darwin.DarwinSensors.fsr: object expected"); + message.fsr = $root.message.platform.darwin.DarwinSensors.FSRs.fromObject(object.fsr); + } + if (object.servo != null) { + if (typeof object.servo !== "object") + throw TypeError(".message.platform.darwin.DarwinSensors.servo: object expected"); + message.servo = $root.message.platform.darwin.DarwinSensors.Servos.fromObject(object.servo); + } + return message; + }; + + /** + * Creates a DarwinSensors message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.platform.darwin.DarwinSensors.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.platform.darwin.DarwinSensors} DarwinSensors + */ + DarwinSensors.from = DarwinSensors.fromObject; + + /** + * Creates a plain object from a DarwinSensors message. Also converts values to other types if specified. + * @param {message.platform.darwin.DarwinSensors} message DarwinSensors + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + DarwinSensors.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.timestamp = null; + object.cm730ErrorFlags = 0; + object.ledPanel = null; + object.headLED = null; + object.eyeLED = null; + object.buttons = null; + object.voltage = 0; + object.accelerometer = null; + object.gyroscope = null; + object.fsr = null; + object.servo = null; + } + if (message.timestamp != null && message.hasOwnProperty("timestamp")) + object.timestamp = $root.google.protobuf.Timestamp.toObject(message.timestamp, options); + if (message.cm730ErrorFlags != null && message.hasOwnProperty("cm730ErrorFlags")) + object.cm730ErrorFlags = message.cm730ErrorFlags; + if (message.ledPanel != null && message.hasOwnProperty("ledPanel")) + object.ledPanel = $root.message.platform.darwin.DarwinSensors.LEDPanel.toObject(message.ledPanel, options); + if (message.headLED != null && message.hasOwnProperty("headLED")) + object.headLED = $root.message.platform.darwin.DarwinSensors.HeadLED.toObject(message.headLED, options); + if (message.eyeLED != null && message.hasOwnProperty("eyeLED")) + object.eyeLED = $root.message.platform.darwin.DarwinSensors.EyeLED.toObject(message.eyeLED, options); + if (message.buttons != null && message.hasOwnProperty("buttons")) + object.buttons = $root.message.platform.darwin.DarwinSensors.Buttons.toObject(message.buttons, options); + if (message.voltage != null && message.hasOwnProperty("voltage")) + object.voltage = message.voltage; + if (message.accelerometer != null && message.hasOwnProperty("accelerometer")) + object.accelerometer = $root.message.platform.darwin.DarwinSensors.Accelerometer.toObject(message.accelerometer, options); + if (message.gyroscope != null && message.hasOwnProperty("gyroscope")) + object.gyroscope = $root.message.platform.darwin.DarwinSensors.Gyroscope.toObject(message.gyroscope, options); + if (message.fsr != null && message.hasOwnProperty("fsr")) + object.fsr = $root.message.platform.darwin.DarwinSensors.FSRs.toObject(message.fsr, options); + if (message.servo != null && message.hasOwnProperty("servo")) + object.servo = $root.message.platform.darwin.DarwinSensors.Servos.toObject(message.servo, options); + return object; + }; + + /** + * Creates a plain object from this DarwinSensors message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + DarwinSensors.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this DarwinSensors to JSON. + * @returns {Object.} JSON object + */ + DarwinSensors.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Error enum. + * @name Error + * @memberof message.platform.darwin.DarwinSensors + * @enum {number} + * @property {number} OK=0 OK value + * @property {number} INPUT_VOLTAGE=1 INPUT_VOLTAGE value + * @property {number} ANGLE_LIMIT=2 ANGLE_LIMIT value + * @property {number} OVERHEATING=4 OVERHEATING value + * @property {number} RANGE=8 RANGE value + * @property {number} CHECKSUM=16 CHECKSUM value + * @property {number} OVERLOAD=32 OVERLOAD value + * @property {number} INSTRUCTION=64 INSTRUCTION value + * @property {number} CORRUPT_DATA=128 CORRUPT_DATA value + * @property {number} TIMEOUT=256 TIMEOUT value + * @property {number} TIMEOUT_VICTIM=512 TIMEOUT_VICTIM value + */ + DarwinSensors.Error = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "OK"] = 0; + values[valuesById[1] = "INPUT_VOLTAGE"] = 1; + values[valuesById[2] = "ANGLE_LIMIT"] = 2; + values[valuesById[4] = "OVERHEATING"] = 4; + values[valuesById[8] = "RANGE"] = 8; + values[valuesById[16] = "CHECKSUM"] = 16; + values[valuesById[32] = "OVERLOAD"] = 32; + values[valuesById[64] = "INSTRUCTION"] = 64; + values[valuesById[128] = "CORRUPT_DATA"] = 128; + values[valuesById[256] = "TIMEOUT"] = 256; + values[valuesById[512] = "TIMEOUT_VICTIM"] = 512; + return values; + })(); + + DarwinSensors.LEDPanel = (function() { + + /** + * Properties of a LEDPanel. + * @typedef message.platform.darwin.DarwinSensors.LEDPanel$Properties + * @type {Object} + * @property {boolean} [led2] LEDPanel led2. + * @property {boolean} [led3] LEDPanel led3. + * @property {boolean} [led4] LEDPanel led4. + */ + + /** + * Constructs a new LEDPanel. + * @exports message.platform.darwin.DarwinSensors.LEDPanel + * @constructor + * @param {message.platform.darwin.DarwinSensors.LEDPanel$Properties=} [properties] Properties to set + */ + function LEDPanel(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * LEDPanel led2. + * @type {boolean} + */ + LEDPanel.prototype.led2 = false; + + /** + * LEDPanel led3. + * @type {boolean} + */ + LEDPanel.prototype.led3 = false; + + /** + * LEDPanel led4. + * @type {boolean} + */ + LEDPanel.prototype.led4 = false; + + /** + * Creates a new LEDPanel instance using the specified properties. + * @param {message.platform.darwin.DarwinSensors.LEDPanel$Properties=} [properties] Properties to set + * @returns {message.platform.darwin.DarwinSensors.LEDPanel} LEDPanel instance + */ + LEDPanel.create = function create(properties) { + return new LEDPanel(properties); + }; + + /** + * Encodes the specified LEDPanel message. Does not implicitly {@link message.platform.darwin.DarwinSensors.LEDPanel.verify|verify} messages. + * @param {message.platform.darwin.DarwinSensors.LEDPanel$Properties} message LEDPanel message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + LEDPanel.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.led2 != null && message.hasOwnProperty("led2")) + writer.uint32(/* id 1, wireType 0 =*/8).bool(message.led2); + if (message.led3 != null && message.hasOwnProperty("led3")) + writer.uint32(/* id 2, wireType 0 =*/16).bool(message.led3); + if (message.led4 != null && message.hasOwnProperty("led4")) + writer.uint32(/* id 3, wireType 0 =*/24).bool(message.led4); + return writer; + }; + + /** + * Encodes the specified LEDPanel message, length delimited. Does not implicitly {@link message.platform.darwin.DarwinSensors.LEDPanel.verify|verify} messages. + * @param {message.platform.darwin.DarwinSensors.LEDPanel$Properties} message LEDPanel message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + LEDPanel.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a LEDPanel message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.platform.darwin.DarwinSensors.LEDPanel} LEDPanel + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + LEDPanel.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.platform.darwin.DarwinSensors.LEDPanel(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.led2 = reader.bool(); + break; + case 2: + message.led3 = reader.bool(); + break; + case 3: + message.led4 = reader.bool(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a LEDPanel message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.platform.darwin.DarwinSensors.LEDPanel} LEDPanel + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + LEDPanel.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a LEDPanel message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + LEDPanel.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.led2 != null && message.hasOwnProperty("led2")) + if (typeof message.led2 !== "boolean") + return "led2: boolean expected"; + if (message.led3 != null && message.hasOwnProperty("led3")) + if (typeof message.led3 !== "boolean") + return "led3: boolean expected"; + if (message.led4 != null && message.hasOwnProperty("led4")) + if (typeof message.led4 !== "boolean") + return "led4: boolean expected"; + return null; + }; + + /** + * Creates a LEDPanel message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.platform.darwin.DarwinSensors.LEDPanel} LEDPanel + */ + LEDPanel.fromObject = function fromObject(object) { + if (object instanceof $root.message.platform.darwin.DarwinSensors.LEDPanel) + return object; + var message = new $root.message.platform.darwin.DarwinSensors.LEDPanel(); + if (object.led2 != null) + message.led2 = Boolean(object.led2); + if (object.led3 != null) + message.led3 = Boolean(object.led3); + if (object.led4 != null) + message.led4 = Boolean(object.led4); + return message; + }; + + /** + * Creates a LEDPanel message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.platform.darwin.DarwinSensors.LEDPanel.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.platform.darwin.DarwinSensors.LEDPanel} LEDPanel + */ + LEDPanel.from = LEDPanel.fromObject; + + /** + * Creates a plain object from a LEDPanel message. Also converts values to other types if specified. + * @param {message.platform.darwin.DarwinSensors.LEDPanel} message LEDPanel + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + LEDPanel.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.led2 = false; + object.led3 = false; + object.led4 = false; + } + if (message.led2 != null && message.hasOwnProperty("led2")) + object.led2 = message.led2; + if (message.led3 != null && message.hasOwnProperty("led3")) + object.led3 = message.led3; + if (message.led4 != null && message.hasOwnProperty("led4")) + object.led4 = message.led4; + return object; + }; + + /** + * Creates a plain object from this LEDPanel message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + LEDPanel.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this LEDPanel to JSON. + * @returns {Object.} JSON object + */ + LEDPanel.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return LEDPanel; + })(); + + DarwinSensors.HeadLED = (function() { + + /** + * Properties of a HeadLED. + * @typedef message.platform.darwin.DarwinSensors.HeadLED$Properties + * @type {Object} + * @property {number} [RGB] HeadLED RGB. + */ + + /** + * Constructs a new HeadLED. + * @exports message.platform.darwin.DarwinSensors.HeadLED + * @constructor + * @param {message.platform.darwin.DarwinSensors.HeadLED$Properties=} [properties] Properties to set + */ + function HeadLED(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * HeadLED RGB. + * @type {number} + */ + HeadLED.prototype.RGB = 0; + + /** + * Creates a new HeadLED instance using the specified properties. + * @param {message.platform.darwin.DarwinSensors.HeadLED$Properties=} [properties] Properties to set + * @returns {message.platform.darwin.DarwinSensors.HeadLED} HeadLED instance + */ + HeadLED.create = function create(properties) { + return new HeadLED(properties); + }; + + /** + * Encodes the specified HeadLED message. Does not implicitly {@link message.platform.darwin.DarwinSensors.HeadLED.verify|verify} messages. + * @param {message.platform.darwin.DarwinSensors.HeadLED$Properties} message HeadLED message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + HeadLED.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.RGB != null && message.hasOwnProperty("RGB")) + writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.RGB); + return writer; + }; + + /** + * Encodes the specified HeadLED message, length delimited. Does not implicitly {@link message.platform.darwin.DarwinSensors.HeadLED.verify|verify} messages. + * @param {message.platform.darwin.DarwinSensors.HeadLED$Properties} message HeadLED message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + HeadLED.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a HeadLED message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.platform.darwin.DarwinSensors.HeadLED} HeadLED + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + HeadLED.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.platform.darwin.DarwinSensors.HeadLED(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.RGB = reader.uint32(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a HeadLED message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.platform.darwin.DarwinSensors.HeadLED} HeadLED + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + HeadLED.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a HeadLED message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + HeadLED.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.RGB != null && message.hasOwnProperty("RGB")) + if (!$util.isInteger(message.RGB)) + return "RGB: integer expected"; + return null; + }; + + /** + * Creates a HeadLED message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.platform.darwin.DarwinSensors.HeadLED} HeadLED + */ + HeadLED.fromObject = function fromObject(object) { + if (object instanceof $root.message.platform.darwin.DarwinSensors.HeadLED) + return object; + var message = new $root.message.platform.darwin.DarwinSensors.HeadLED(); + if (object.RGB != null) + message.RGB = object.RGB >>> 0; + return message; + }; + + /** + * Creates a HeadLED message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.platform.darwin.DarwinSensors.HeadLED.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.platform.darwin.DarwinSensors.HeadLED} HeadLED + */ + HeadLED.from = HeadLED.fromObject; + + /** + * Creates a plain object from a HeadLED message. Also converts values to other types if specified. + * @param {message.platform.darwin.DarwinSensors.HeadLED} message HeadLED + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + HeadLED.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) + object.RGB = 0; + if (message.RGB != null && message.hasOwnProperty("RGB")) + object.RGB = message.RGB; + return object; + }; + + /** + * Creates a plain object from this HeadLED message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + HeadLED.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this HeadLED to JSON. + * @returns {Object.} JSON object + */ + HeadLED.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return HeadLED; + })(); + + DarwinSensors.EyeLED = (function() { + + /** + * Properties of an EyeLED. + * @typedef message.platform.darwin.DarwinSensors.EyeLED$Properties + * @type {Object} + * @property {number} [RGB] EyeLED RGB. + */ + + /** + * Constructs a new EyeLED. + * @exports message.platform.darwin.DarwinSensors.EyeLED + * @constructor + * @param {message.platform.darwin.DarwinSensors.EyeLED$Properties=} [properties] Properties to set + */ + function EyeLED(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * EyeLED RGB. + * @type {number} + */ + EyeLED.prototype.RGB = 0; + + /** + * Creates a new EyeLED instance using the specified properties. + * @param {message.platform.darwin.DarwinSensors.EyeLED$Properties=} [properties] Properties to set + * @returns {message.platform.darwin.DarwinSensors.EyeLED} EyeLED instance + */ + EyeLED.create = function create(properties) { + return new EyeLED(properties); + }; + + /** + * Encodes the specified EyeLED message. Does not implicitly {@link message.platform.darwin.DarwinSensors.EyeLED.verify|verify} messages. + * @param {message.platform.darwin.DarwinSensors.EyeLED$Properties} message EyeLED message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + EyeLED.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.RGB != null && message.hasOwnProperty("RGB")) + writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.RGB); + return writer; + }; + + /** + * Encodes the specified EyeLED message, length delimited. Does not implicitly {@link message.platform.darwin.DarwinSensors.EyeLED.verify|verify} messages. + * @param {message.platform.darwin.DarwinSensors.EyeLED$Properties} message EyeLED message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + EyeLED.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes an EyeLED message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.platform.darwin.DarwinSensors.EyeLED} EyeLED + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + EyeLED.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.platform.darwin.DarwinSensors.EyeLED(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.RGB = reader.uint32(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes an EyeLED message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.platform.darwin.DarwinSensors.EyeLED} EyeLED + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + EyeLED.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies an EyeLED message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + EyeLED.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.RGB != null && message.hasOwnProperty("RGB")) + if (!$util.isInteger(message.RGB)) + return "RGB: integer expected"; + return null; + }; + + /** + * Creates an EyeLED message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.platform.darwin.DarwinSensors.EyeLED} EyeLED + */ + EyeLED.fromObject = function fromObject(object) { + if (object instanceof $root.message.platform.darwin.DarwinSensors.EyeLED) + return object; + var message = new $root.message.platform.darwin.DarwinSensors.EyeLED(); + if (object.RGB != null) + message.RGB = object.RGB >>> 0; + return message; + }; + + /** + * Creates an EyeLED message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.platform.darwin.DarwinSensors.EyeLED.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.platform.darwin.DarwinSensors.EyeLED} EyeLED + */ + EyeLED.from = EyeLED.fromObject; + + /** + * Creates a plain object from an EyeLED message. Also converts values to other types if specified. + * @param {message.platform.darwin.DarwinSensors.EyeLED} message EyeLED + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + EyeLED.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) + object.RGB = 0; + if (message.RGB != null && message.hasOwnProperty("RGB")) + object.RGB = message.RGB; + return object; + }; + + /** + * Creates a plain object from this EyeLED message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + EyeLED.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this EyeLED to JSON. + * @returns {Object.} JSON object + */ + EyeLED.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return EyeLED; + })(); + + DarwinSensors.Buttons = (function() { + + /** + * Properties of a Buttons. + * @typedef message.platform.darwin.DarwinSensors.Buttons$Properties + * @type {Object} + * @property {boolean} [left] Buttons left. + * @property {boolean} [middle] Buttons middle. + */ + + /** + * Constructs a new Buttons. + * @exports message.platform.darwin.DarwinSensors.Buttons + * @constructor + * @param {message.platform.darwin.DarwinSensors.Buttons$Properties=} [properties] Properties to set + */ + function Buttons(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Buttons left. + * @type {boolean} + */ + Buttons.prototype.left = false; + + /** + * Buttons middle. + * @type {boolean} + */ + Buttons.prototype.middle = false; + + /** + * Creates a new Buttons instance using the specified properties. + * @param {message.platform.darwin.DarwinSensors.Buttons$Properties=} [properties] Properties to set + * @returns {message.platform.darwin.DarwinSensors.Buttons} Buttons instance + */ + Buttons.create = function create(properties) { + return new Buttons(properties); + }; + + /** + * Encodes the specified Buttons message. Does not implicitly {@link message.platform.darwin.DarwinSensors.Buttons.verify|verify} messages. + * @param {message.platform.darwin.DarwinSensors.Buttons$Properties} message Buttons message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Buttons.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.left != null && message.hasOwnProperty("left")) + writer.uint32(/* id 1, wireType 0 =*/8).bool(message.left); + if (message.middle != null && message.hasOwnProperty("middle")) + writer.uint32(/* id 2, wireType 0 =*/16).bool(message.middle); + return writer; + }; + + /** + * Encodes the specified Buttons message, length delimited. Does not implicitly {@link message.platform.darwin.DarwinSensors.Buttons.verify|verify} messages. + * @param {message.platform.darwin.DarwinSensors.Buttons$Properties} message Buttons message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Buttons.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a Buttons message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.platform.darwin.DarwinSensors.Buttons} Buttons + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Buttons.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.platform.darwin.DarwinSensors.Buttons(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.left = reader.bool(); + break; + case 2: + message.middle = reader.bool(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a Buttons message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.platform.darwin.DarwinSensors.Buttons} Buttons + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Buttons.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a Buttons message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + Buttons.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.left != null && message.hasOwnProperty("left")) + if (typeof message.left !== "boolean") + return "left: boolean expected"; + if (message.middle != null && message.hasOwnProperty("middle")) + if (typeof message.middle !== "boolean") + return "middle: boolean expected"; + return null; + }; + + /** + * Creates a Buttons message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.platform.darwin.DarwinSensors.Buttons} Buttons + */ + Buttons.fromObject = function fromObject(object) { + if (object instanceof $root.message.platform.darwin.DarwinSensors.Buttons) + return object; + var message = new $root.message.platform.darwin.DarwinSensors.Buttons(); + if (object.left != null) + message.left = Boolean(object.left); + if (object.middle != null) + message.middle = Boolean(object.middle); + return message; + }; + + /** + * Creates a Buttons message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.platform.darwin.DarwinSensors.Buttons.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.platform.darwin.DarwinSensors.Buttons} Buttons + */ + Buttons.from = Buttons.fromObject; + + /** + * Creates a plain object from a Buttons message. Also converts values to other types if specified. + * @param {message.platform.darwin.DarwinSensors.Buttons} message Buttons + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Buttons.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.left = false; + object.middle = false; + } + if (message.left != null && message.hasOwnProperty("left")) + object.left = message.left; + if (message.middle != null && message.hasOwnProperty("middle")) + object.middle = message.middle; + return object; + }; + + /** + * Creates a plain object from this Buttons message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Buttons.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this Buttons to JSON. + * @returns {Object.} JSON object + */ + Buttons.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return Buttons; + })(); + + DarwinSensors.Accelerometer = (function() { + + /** + * Properties of an Accelerometer. + * @typedef message.platform.darwin.DarwinSensors.Accelerometer$Properties + * @type {Object} + * @property {number} [x] Accelerometer x. + * @property {number} [y] Accelerometer y. + * @property {number} [z] Accelerometer z. + */ + + /** + * Constructs a new Accelerometer. + * @exports message.platform.darwin.DarwinSensors.Accelerometer + * @constructor + * @param {message.platform.darwin.DarwinSensors.Accelerometer$Properties=} [properties] Properties to set + */ + function Accelerometer(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Accelerometer x. + * @type {number} + */ + Accelerometer.prototype.x = 0; + + /** + * Accelerometer y. + * @type {number} + */ + Accelerometer.prototype.y = 0; + + /** + * Accelerometer z. + * @type {number} + */ + Accelerometer.prototype.z = 0; + + /** + * Creates a new Accelerometer instance using the specified properties. + * @param {message.platform.darwin.DarwinSensors.Accelerometer$Properties=} [properties] Properties to set + * @returns {message.platform.darwin.DarwinSensors.Accelerometer} Accelerometer instance + */ + Accelerometer.create = function create(properties) { + return new Accelerometer(properties); + }; + + /** + * Encodes the specified Accelerometer message. Does not implicitly {@link message.platform.darwin.DarwinSensors.Accelerometer.verify|verify} messages. + * @param {message.platform.darwin.DarwinSensors.Accelerometer$Properties} message Accelerometer message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Accelerometer.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.x != null && message.hasOwnProperty("x")) + writer.uint32(/* id 1, wireType 5 =*/13).float(message.x); + if (message.y != null && message.hasOwnProperty("y")) + writer.uint32(/* id 2, wireType 5 =*/21).float(message.y); + if (message.z != null && message.hasOwnProperty("z")) + writer.uint32(/* id 3, wireType 5 =*/29).float(message.z); + return writer; + }; + + /** + * Encodes the specified Accelerometer message, length delimited. Does not implicitly {@link message.platform.darwin.DarwinSensors.Accelerometer.verify|verify} messages. + * @param {message.platform.darwin.DarwinSensors.Accelerometer$Properties} message Accelerometer message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Accelerometer.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes an Accelerometer message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.platform.darwin.DarwinSensors.Accelerometer} Accelerometer + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Accelerometer.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.platform.darwin.DarwinSensors.Accelerometer(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.x = reader.float(); + break; + case 2: + message.y = reader.float(); + break; + case 3: + message.z = reader.float(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes an Accelerometer message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.platform.darwin.DarwinSensors.Accelerometer} Accelerometer + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Accelerometer.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies an Accelerometer message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + Accelerometer.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.x != null && message.hasOwnProperty("x")) + if (typeof message.x !== "number") + return "x: number expected"; + if (message.y != null && message.hasOwnProperty("y")) + if (typeof message.y !== "number") + return "y: number expected"; + if (message.z != null && message.hasOwnProperty("z")) + if (typeof message.z !== "number") + return "z: number expected"; + return null; + }; + + /** + * Creates an Accelerometer message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.platform.darwin.DarwinSensors.Accelerometer} Accelerometer + */ + Accelerometer.fromObject = function fromObject(object) { + if (object instanceof $root.message.platform.darwin.DarwinSensors.Accelerometer) + return object; + var message = new $root.message.platform.darwin.DarwinSensors.Accelerometer(); + if (object.x != null) + message.x = Number(object.x); + if (object.y != null) + message.y = Number(object.y); + if (object.z != null) + message.z = Number(object.z); + return message; + }; + + /** + * Creates an Accelerometer message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.platform.darwin.DarwinSensors.Accelerometer.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.platform.darwin.DarwinSensors.Accelerometer} Accelerometer + */ + Accelerometer.from = Accelerometer.fromObject; + + /** + * Creates a plain object from an Accelerometer message. Also converts values to other types if specified. + * @param {message.platform.darwin.DarwinSensors.Accelerometer} message Accelerometer + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Accelerometer.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.x = 0; + object.y = 0; + object.z = 0; + } + if (message.x != null && message.hasOwnProperty("x")) + object.x = message.x; + if (message.y != null && message.hasOwnProperty("y")) + object.y = message.y; + if (message.z != null && message.hasOwnProperty("z")) + object.z = message.z; + return object; + }; + + /** + * Creates a plain object from this Accelerometer message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Accelerometer.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this Accelerometer to JSON. + * @returns {Object.} JSON object + */ + Accelerometer.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return Accelerometer; + })(); + + DarwinSensors.Gyroscope = (function() { + + /** + * Properties of a Gyroscope. + * @typedef message.platform.darwin.DarwinSensors.Gyroscope$Properties + * @type {Object} + * @property {number} [x] Gyroscope x. + * @property {number} [y] Gyroscope y. + * @property {number} [z] Gyroscope z. + */ + + /** + * Constructs a new Gyroscope. + * @exports message.platform.darwin.DarwinSensors.Gyroscope + * @constructor + * @param {message.platform.darwin.DarwinSensors.Gyroscope$Properties=} [properties] Properties to set + */ + function Gyroscope(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Gyroscope x. + * @type {number} + */ + Gyroscope.prototype.x = 0; + + /** + * Gyroscope y. + * @type {number} + */ + Gyroscope.prototype.y = 0; + + /** + * Gyroscope z. + * @type {number} + */ + Gyroscope.prototype.z = 0; + + /** + * Creates a new Gyroscope instance using the specified properties. + * @param {message.platform.darwin.DarwinSensors.Gyroscope$Properties=} [properties] Properties to set + * @returns {message.platform.darwin.DarwinSensors.Gyroscope} Gyroscope instance + */ + Gyroscope.create = function create(properties) { + return new Gyroscope(properties); + }; + + /** + * Encodes the specified Gyroscope message. Does not implicitly {@link message.platform.darwin.DarwinSensors.Gyroscope.verify|verify} messages. + * @param {message.platform.darwin.DarwinSensors.Gyroscope$Properties} message Gyroscope message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Gyroscope.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.x != null && message.hasOwnProperty("x")) + writer.uint32(/* id 1, wireType 5 =*/13).float(message.x); + if (message.y != null && message.hasOwnProperty("y")) + writer.uint32(/* id 2, wireType 5 =*/21).float(message.y); + if (message.z != null && message.hasOwnProperty("z")) + writer.uint32(/* id 3, wireType 5 =*/29).float(message.z); + return writer; + }; + + /** + * Encodes the specified Gyroscope message, length delimited. Does not implicitly {@link message.platform.darwin.DarwinSensors.Gyroscope.verify|verify} messages. + * @param {message.platform.darwin.DarwinSensors.Gyroscope$Properties} message Gyroscope message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Gyroscope.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a Gyroscope message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.platform.darwin.DarwinSensors.Gyroscope} Gyroscope + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Gyroscope.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.platform.darwin.DarwinSensors.Gyroscope(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.x = reader.float(); + break; + case 2: + message.y = reader.float(); + break; + case 3: + message.z = reader.float(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a Gyroscope message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.platform.darwin.DarwinSensors.Gyroscope} Gyroscope + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Gyroscope.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a Gyroscope message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + Gyroscope.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.x != null && message.hasOwnProperty("x")) + if (typeof message.x !== "number") + return "x: number expected"; + if (message.y != null && message.hasOwnProperty("y")) + if (typeof message.y !== "number") + return "y: number expected"; + if (message.z != null && message.hasOwnProperty("z")) + if (typeof message.z !== "number") + return "z: number expected"; + return null; + }; + + /** + * Creates a Gyroscope message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.platform.darwin.DarwinSensors.Gyroscope} Gyroscope + */ + Gyroscope.fromObject = function fromObject(object) { + if (object instanceof $root.message.platform.darwin.DarwinSensors.Gyroscope) + return object; + var message = new $root.message.platform.darwin.DarwinSensors.Gyroscope(); + if (object.x != null) + message.x = Number(object.x); + if (object.y != null) + message.y = Number(object.y); + if (object.z != null) + message.z = Number(object.z); + return message; + }; + + /** + * Creates a Gyroscope message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.platform.darwin.DarwinSensors.Gyroscope.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.platform.darwin.DarwinSensors.Gyroscope} Gyroscope + */ + Gyroscope.from = Gyroscope.fromObject; + + /** + * Creates a plain object from a Gyroscope message. Also converts values to other types if specified. + * @param {message.platform.darwin.DarwinSensors.Gyroscope} message Gyroscope + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Gyroscope.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.x = 0; + object.y = 0; + object.z = 0; + } + if (message.x != null && message.hasOwnProperty("x")) + object.x = message.x; + if (message.y != null && message.hasOwnProperty("y")) + object.y = message.y; + if (message.z != null && message.hasOwnProperty("z")) + object.z = message.z; + return object; + }; + + /** + * Creates a plain object from this Gyroscope message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Gyroscope.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this Gyroscope to JSON. + * @returns {Object.} JSON object + */ + Gyroscope.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return Gyroscope; + })(); + + DarwinSensors.FSR = (function() { + + /** + * Properties of a FSR. + * @typedef message.platform.darwin.DarwinSensors.FSR$Properties + * @type {Object} + * @property {number} [fsr1] FSR fsr1. + * @property {number} [fsr2] FSR fsr2. + * @property {number} [fsr3] FSR fsr3. + * @property {number} [fsr4] FSR fsr4. + * @property {number} [centreX] FSR centreX. + * @property {number} [centreY] FSR centreY. + * @property {number} [errorFlags] FSR errorFlags. + */ + + /** + * Constructs a new FSR. + * @exports message.platform.darwin.DarwinSensors.FSR + * @constructor + * @param {message.platform.darwin.DarwinSensors.FSR$Properties=} [properties] Properties to set + */ + function FSR(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * FSR fsr1. + * @type {number} + */ + FSR.prototype.fsr1 = 0; + + /** + * FSR fsr2. + * @type {number} + */ + FSR.prototype.fsr2 = 0; + + /** + * FSR fsr3. + * @type {number} + */ + FSR.prototype.fsr3 = 0; + + /** + * FSR fsr4. + * @type {number} + */ + FSR.prototype.fsr4 = 0; + + /** + * FSR centreX. + * @type {number} + */ + FSR.prototype.centreX = 0; + + /** + * FSR centreY. + * @type {number} + */ + FSR.prototype.centreY = 0; + + /** + * FSR errorFlags. + * @type {number} + */ + FSR.prototype.errorFlags = 0; + + /** + * Creates a new FSR instance using the specified properties. + * @param {message.platform.darwin.DarwinSensors.FSR$Properties=} [properties] Properties to set + * @returns {message.platform.darwin.DarwinSensors.FSR} FSR instance + */ + FSR.create = function create(properties) { + return new FSR(properties); + }; + + /** + * Encodes the specified FSR message. Does not implicitly {@link message.platform.darwin.DarwinSensors.FSR.verify|verify} messages. + * @param {message.platform.darwin.DarwinSensors.FSR$Properties} message FSR message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + FSR.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.fsr1 != null && message.hasOwnProperty("fsr1")) + writer.uint32(/* id 1, wireType 5 =*/13).float(message.fsr1); + if (message.fsr2 != null && message.hasOwnProperty("fsr2")) + writer.uint32(/* id 2, wireType 5 =*/21).float(message.fsr2); + if (message.fsr3 != null && message.hasOwnProperty("fsr3")) + writer.uint32(/* id 3, wireType 5 =*/29).float(message.fsr3); + if (message.fsr4 != null && message.hasOwnProperty("fsr4")) + writer.uint32(/* id 4, wireType 5 =*/37).float(message.fsr4); + if (message.centreX != null && message.hasOwnProperty("centreX")) + writer.uint32(/* id 5, wireType 5 =*/45).float(message.centreX); + if (message.centreY != null && message.hasOwnProperty("centreY")) + writer.uint32(/* id 6, wireType 5 =*/53).float(message.centreY); + if (message.errorFlags != null && message.hasOwnProperty("errorFlags")) + writer.uint32(/* id 7, wireType 0 =*/56).uint32(message.errorFlags); + return writer; + }; + + /** + * Encodes the specified FSR message, length delimited. Does not implicitly {@link message.platform.darwin.DarwinSensors.FSR.verify|verify} messages. + * @param {message.platform.darwin.DarwinSensors.FSR$Properties} message FSR message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + FSR.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a FSR message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.platform.darwin.DarwinSensors.FSR} FSR + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + FSR.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.platform.darwin.DarwinSensors.FSR(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.fsr1 = reader.float(); + break; + case 2: + message.fsr2 = reader.float(); + break; + case 3: + message.fsr3 = reader.float(); + break; + case 4: + message.fsr4 = reader.float(); + break; + case 5: + message.centreX = reader.float(); + break; + case 6: + message.centreY = reader.float(); + break; + case 7: + message.errorFlags = reader.uint32(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a FSR message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.platform.darwin.DarwinSensors.FSR} FSR + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + FSR.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a FSR message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + FSR.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.fsr1 != null && message.hasOwnProperty("fsr1")) + if (typeof message.fsr1 !== "number") + return "fsr1: number expected"; + if (message.fsr2 != null && message.hasOwnProperty("fsr2")) + if (typeof message.fsr2 !== "number") + return "fsr2: number expected"; + if (message.fsr3 != null && message.hasOwnProperty("fsr3")) + if (typeof message.fsr3 !== "number") + return "fsr3: number expected"; + if (message.fsr4 != null && message.hasOwnProperty("fsr4")) + if (typeof message.fsr4 !== "number") + return "fsr4: number expected"; + if (message.centreX != null && message.hasOwnProperty("centreX")) + if (typeof message.centreX !== "number") + return "centreX: number expected"; + if (message.centreY != null && message.hasOwnProperty("centreY")) + if (typeof message.centreY !== "number") + return "centreY: number expected"; + if (message.errorFlags != null && message.hasOwnProperty("errorFlags")) + if (!$util.isInteger(message.errorFlags)) + return "errorFlags: integer expected"; + return null; + }; + + /** + * Creates a FSR message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.platform.darwin.DarwinSensors.FSR} FSR + */ + FSR.fromObject = function fromObject(object) { + if (object instanceof $root.message.platform.darwin.DarwinSensors.FSR) + return object; + var message = new $root.message.platform.darwin.DarwinSensors.FSR(); + if (object.fsr1 != null) + message.fsr1 = Number(object.fsr1); + if (object.fsr2 != null) + message.fsr2 = Number(object.fsr2); + if (object.fsr3 != null) + message.fsr3 = Number(object.fsr3); + if (object.fsr4 != null) + message.fsr4 = Number(object.fsr4); + if (object.centreX != null) + message.centreX = Number(object.centreX); + if (object.centreY != null) + message.centreY = Number(object.centreY); + if (object.errorFlags != null) + message.errorFlags = object.errorFlags >>> 0; + return message; + }; + + /** + * Creates a FSR message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.platform.darwin.DarwinSensors.FSR.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.platform.darwin.DarwinSensors.FSR} FSR + */ + FSR.from = FSR.fromObject; + + /** + * Creates a plain object from a FSR message. Also converts values to other types if specified. + * @param {message.platform.darwin.DarwinSensors.FSR} message FSR + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + FSR.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.fsr1 = 0; + object.fsr2 = 0; + object.fsr3 = 0; + object.fsr4 = 0; + object.centreX = 0; + object.centreY = 0; + object.errorFlags = 0; + } + if (message.fsr1 != null && message.hasOwnProperty("fsr1")) + object.fsr1 = message.fsr1; + if (message.fsr2 != null && message.hasOwnProperty("fsr2")) + object.fsr2 = message.fsr2; + if (message.fsr3 != null && message.hasOwnProperty("fsr3")) + object.fsr3 = message.fsr3; + if (message.fsr4 != null && message.hasOwnProperty("fsr4")) + object.fsr4 = message.fsr4; + if (message.centreX != null && message.hasOwnProperty("centreX")) + object.centreX = message.centreX; + if (message.centreY != null && message.hasOwnProperty("centreY")) + object.centreY = message.centreY; + if (message.errorFlags != null && message.hasOwnProperty("errorFlags")) + object.errorFlags = message.errorFlags; + return object; + }; + + /** + * Creates a plain object from this FSR message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + FSR.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this FSR to JSON. + * @returns {Object.} JSON object + */ + FSR.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return FSR; + })(); + + DarwinSensors.FSRs = (function() { + + /** + * Properties of a FSRs. + * @typedef message.platform.darwin.DarwinSensors.FSRs$Properties + * @type {Object} + * @property {message.platform.darwin.DarwinSensors.FSR$Properties} [left] FSRs left. + * @property {message.platform.darwin.DarwinSensors.FSR$Properties} [right] FSRs right. + */ + + /** + * Constructs a new FSRs. + * @exports message.platform.darwin.DarwinSensors.FSRs + * @constructor + * @param {message.platform.darwin.DarwinSensors.FSRs$Properties=} [properties] Properties to set + */ + function FSRs(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * FSRs left. + * @type {(message.platform.darwin.DarwinSensors.FSR$Properties|null)} + */ + FSRs.prototype.left = null; + + /** + * FSRs right. + * @type {(message.platform.darwin.DarwinSensors.FSR$Properties|null)} + */ + FSRs.prototype.right = null; + + /** + * Creates a new FSRs instance using the specified properties. + * @param {message.platform.darwin.DarwinSensors.FSRs$Properties=} [properties] Properties to set + * @returns {message.platform.darwin.DarwinSensors.FSRs} FSRs instance + */ + FSRs.create = function create(properties) { + return new FSRs(properties); + }; + + /** + * Encodes the specified FSRs message. Does not implicitly {@link message.platform.darwin.DarwinSensors.FSRs.verify|verify} messages. + * @param {message.platform.darwin.DarwinSensors.FSRs$Properties} message FSRs message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + FSRs.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.left != null && message.hasOwnProperty("left")) + $root.message.platform.darwin.DarwinSensors.FSR.encode(message.left, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.right != null && message.hasOwnProperty("right")) + $root.message.platform.darwin.DarwinSensors.FSR.encode(message.right, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified FSRs message, length delimited. Does not implicitly {@link message.platform.darwin.DarwinSensors.FSRs.verify|verify} messages. + * @param {message.platform.darwin.DarwinSensors.FSRs$Properties} message FSRs message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + FSRs.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a FSRs message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.platform.darwin.DarwinSensors.FSRs} FSRs + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + FSRs.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.platform.darwin.DarwinSensors.FSRs(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.left = $root.message.platform.darwin.DarwinSensors.FSR.decode(reader, reader.uint32()); + break; + case 2: + message.right = $root.message.platform.darwin.DarwinSensors.FSR.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a FSRs message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.platform.darwin.DarwinSensors.FSRs} FSRs + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + FSRs.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a FSRs message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + FSRs.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.left != null && message.hasOwnProperty("left")) { + var error = $root.message.platform.darwin.DarwinSensors.FSR.verify(message.left); + if (error) + return "left." + error; + } + if (message.right != null && message.hasOwnProperty("right")) { + var error = $root.message.platform.darwin.DarwinSensors.FSR.verify(message.right); + if (error) + return "right." + error; + } + return null; + }; + + /** + * Creates a FSRs message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.platform.darwin.DarwinSensors.FSRs} FSRs + */ + FSRs.fromObject = function fromObject(object) { + if (object instanceof $root.message.platform.darwin.DarwinSensors.FSRs) + return object; + var message = new $root.message.platform.darwin.DarwinSensors.FSRs(); + if (object.left != null) { + if (typeof object.left !== "object") + throw TypeError(".message.platform.darwin.DarwinSensors.FSRs.left: object expected"); + message.left = $root.message.platform.darwin.DarwinSensors.FSR.fromObject(object.left); + } + if (object.right != null) { + if (typeof object.right !== "object") + throw TypeError(".message.platform.darwin.DarwinSensors.FSRs.right: object expected"); + message.right = $root.message.platform.darwin.DarwinSensors.FSR.fromObject(object.right); + } + return message; + }; + + /** + * Creates a FSRs message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.platform.darwin.DarwinSensors.FSRs.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.platform.darwin.DarwinSensors.FSRs} FSRs + */ + FSRs.from = FSRs.fromObject; + + /** + * Creates a plain object from a FSRs message. Also converts values to other types if specified. + * @param {message.platform.darwin.DarwinSensors.FSRs} message FSRs + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + FSRs.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.left = null; + object.right = null; + } + if (message.left != null && message.hasOwnProperty("left")) + object.left = $root.message.platform.darwin.DarwinSensors.FSR.toObject(message.left, options); + if (message.right != null && message.hasOwnProperty("right")) + object.right = $root.message.platform.darwin.DarwinSensors.FSR.toObject(message.right, options); + return object; + }; + + /** + * Creates a plain object from this FSRs message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + FSRs.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this FSRs to JSON. + * @returns {Object.} JSON object + */ + FSRs.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return FSRs; + })(); + + DarwinSensors.Servo = (function() { + + /** + * Properties of a Servo. + * @typedef message.platform.darwin.DarwinSensors.Servo$Properties + * @type {Object} + * @property {number} [errorFlags] Servo errorFlags. + * @property {boolean} [torqueEnabled] Servo torqueEnabled. + * @property {number} [pGain] Servo pGain. + * @property {number} [iGain] Servo iGain. + * @property {number} [dGain] Servo dGain. + * @property {number} [goalPosition] Servo goalPosition. + * @property {number} [movingSpeed] Servo movingSpeed. + * @property {number} [torque] Servo torque. + * @property {number} [presentPosition] Servo presentPosition. + * @property {number} [presentSpeed] Servo presentSpeed. + * @property {number} [load] Servo load. + * @property {number} [voltage] Servo voltage. + * @property {number} [temperature] Servo temperature. + */ + + /** + * Constructs a new Servo. + * @exports message.platform.darwin.DarwinSensors.Servo + * @constructor + * @param {message.platform.darwin.DarwinSensors.Servo$Properties=} [properties] Properties to set + */ + function Servo(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Servo errorFlags. + * @type {number} + */ + Servo.prototype.errorFlags = 0; + + /** + * Servo torqueEnabled. + * @type {boolean} + */ + Servo.prototype.torqueEnabled = false; + + /** + * Servo pGain. + * @type {number} + */ + Servo.prototype.pGain = 0; + + /** + * Servo iGain. + * @type {number} + */ + Servo.prototype.iGain = 0; + + /** + * Servo dGain. + * @type {number} + */ + Servo.prototype.dGain = 0; + + /** + * Servo goalPosition. + * @type {number} + */ + Servo.prototype.goalPosition = 0; + + /** + * Servo movingSpeed. + * @type {number} + */ + Servo.prototype.movingSpeed = 0; + + /** + * Servo torque. + * @type {number} + */ + Servo.prototype.torque = 0; + + /** + * Servo presentPosition. + * @type {number} + */ + Servo.prototype.presentPosition = 0; + + /** + * Servo presentSpeed. + * @type {number} + */ + Servo.prototype.presentSpeed = 0; + + /** + * Servo load. + * @type {number} + */ + Servo.prototype.load = 0; + + /** + * Servo voltage. + * @type {number} + */ + Servo.prototype.voltage = 0; + + /** + * Servo temperature. + * @type {number} + */ + Servo.prototype.temperature = 0; + + /** + * Creates a new Servo instance using the specified properties. + * @param {message.platform.darwin.DarwinSensors.Servo$Properties=} [properties] Properties to set + * @returns {message.platform.darwin.DarwinSensors.Servo} Servo instance + */ + Servo.create = function create(properties) { + return new Servo(properties); + }; + + /** + * Encodes the specified Servo message. Does not implicitly {@link message.platform.darwin.DarwinSensors.Servo.verify|verify} messages. + * @param {message.platform.darwin.DarwinSensors.Servo$Properties} message Servo message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Servo.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.errorFlags != null && message.hasOwnProperty("errorFlags")) + writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.errorFlags); + if (message.torqueEnabled != null && message.hasOwnProperty("torqueEnabled")) + writer.uint32(/* id 2, wireType 0 =*/16).bool(message.torqueEnabled); + if (message.pGain != null && message.hasOwnProperty("pGain")) + writer.uint32(/* id 3, wireType 5 =*/29).float(message.pGain); + if (message.iGain != null && message.hasOwnProperty("iGain")) + writer.uint32(/* id 4, wireType 5 =*/37).float(message.iGain); + if (message.dGain != null && message.hasOwnProperty("dGain")) + writer.uint32(/* id 5, wireType 5 =*/45).float(message.dGain); + if (message.goalPosition != null && message.hasOwnProperty("goalPosition")) + writer.uint32(/* id 6, wireType 5 =*/53).float(message.goalPosition); + if (message.movingSpeed != null && message.hasOwnProperty("movingSpeed")) + writer.uint32(/* id 7, wireType 5 =*/61).float(message.movingSpeed); + if (message.torque != null && message.hasOwnProperty("torque")) + writer.uint32(/* id 8, wireType 5 =*/69).float(message.torque); + if (message.presentPosition != null && message.hasOwnProperty("presentPosition")) + writer.uint32(/* id 9, wireType 5 =*/77).float(message.presentPosition); + if (message.presentSpeed != null && message.hasOwnProperty("presentSpeed")) + writer.uint32(/* id 10, wireType 5 =*/85).float(message.presentSpeed); + if (message.load != null && message.hasOwnProperty("load")) + writer.uint32(/* id 11, wireType 5 =*/93).float(message.load); + if (message.voltage != null && message.hasOwnProperty("voltage")) + writer.uint32(/* id 12, wireType 5 =*/101).float(message.voltage); + if (message.temperature != null && message.hasOwnProperty("temperature")) + writer.uint32(/* id 13, wireType 0 =*/104).uint32(message.temperature); + return writer; + }; + + /** + * Encodes the specified Servo message, length delimited. Does not implicitly {@link message.platform.darwin.DarwinSensors.Servo.verify|verify} messages. + * @param {message.platform.darwin.DarwinSensors.Servo$Properties} message Servo message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Servo.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a Servo message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.platform.darwin.DarwinSensors.Servo} Servo + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Servo.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.platform.darwin.DarwinSensors.Servo(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.errorFlags = reader.uint32(); + break; + case 2: + message.torqueEnabled = reader.bool(); + break; + case 3: + message.pGain = reader.float(); + break; + case 4: + message.iGain = reader.float(); + break; + case 5: + message.dGain = reader.float(); + break; + case 6: + message.goalPosition = reader.float(); + break; + case 7: + message.movingSpeed = reader.float(); + break; + case 8: + message.torque = reader.float(); + break; + case 9: + message.presentPosition = reader.float(); + break; + case 10: + message.presentSpeed = reader.float(); + break; + case 11: + message.load = reader.float(); + break; + case 12: + message.voltage = reader.float(); + break; + case 13: + message.temperature = reader.uint32(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a Servo message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.platform.darwin.DarwinSensors.Servo} Servo + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Servo.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a Servo message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + Servo.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.errorFlags != null && message.hasOwnProperty("errorFlags")) + if (!$util.isInteger(message.errorFlags)) + return "errorFlags: integer expected"; + if (message.torqueEnabled != null && message.hasOwnProperty("torqueEnabled")) + if (typeof message.torqueEnabled !== "boolean") + return "torqueEnabled: boolean expected"; + if (message.pGain != null && message.hasOwnProperty("pGain")) + if (typeof message.pGain !== "number") + return "pGain: number expected"; + if (message.iGain != null && message.hasOwnProperty("iGain")) + if (typeof message.iGain !== "number") + return "iGain: number expected"; + if (message.dGain != null && message.hasOwnProperty("dGain")) + if (typeof message.dGain !== "number") + return "dGain: number expected"; + if (message.goalPosition != null && message.hasOwnProperty("goalPosition")) + if (typeof message.goalPosition !== "number") + return "goalPosition: number expected"; + if (message.movingSpeed != null && message.hasOwnProperty("movingSpeed")) + if (typeof message.movingSpeed !== "number") + return "movingSpeed: number expected"; + if (message.torque != null && message.hasOwnProperty("torque")) + if (typeof message.torque !== "number") + return "torque: number expected"; + if (message.presentPosition != null && message.hasOwnProperty("presentPosition")) + if (typeof message.presentPosition !== "number") + return "presentPosition: number expected"; + if (message.presentSpeed != null && message.hasOwnProperty("presentSpeed")) + if (typeof message.presentSpeed !== "number") + return "presentSpeed: number expected"; + if (message.load != null && message.hasOwnProperty("load")) + if (typeof message.load !== "number") + return "load: number expected"; + if (message.voltage != null && message.hasOwnProperty("voltage")) + if (typeof message.voltage !== "number") + return "voltage: number expected"; + if (message.temperature != null && message.hasOwnProperty("temperature")) + if (!$util.isInteger(message.temperature)) + return "temperature: integer expected"; + return null; + }; + + /** + * Creates a Servo message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.platform.darwin.DarwinSensors.Servo} Servo + */ + Servo.fromObject = function fromObject(object) { + if (object instanceof $root.message.platform.darwin.DarwinSensors.Servo) + return object; + var message = new $root.message.platform.darwin.DarwinSensors.Servo(); + if (object.errorFlags != null) + message.errorFlags = object.errorFlags >>> 0; + if (object.torqueEnabled != null) + message.torqueEnabled = Boolean(object.torqueEnabled); + if (object.pGain != null) + message.pGain = Number(object.pGain); + if (object.iGain != null) + message.iGain = Number(object.iGain); + if (object.dGain != null) + message.dGain = Number(object.dGain); + if (object.goalPosition != null) + message.goalPosition = Number(object.goalPosition); + if (object.movingSpeed != null) + message.movingSpeed = Number(object.movingSpeed); + if (object.torque != null) + message.torque = Number(object.torque); + if (object.presentPosition != null) + message.presentPosition = Number(object.presentPosition); + if (object.presentSpeed != null) + message.presentSpeed = Number(object.presentSpeed); + if (object.load != null) + message.load = Number(object.load); + if (object.voltage != null) + message.voltage = Number(object.voltage); + if (object.temperature != null) + message.temperature = object.temperature >>> 0; + return message; + }; + + /** + * Creates a Servo message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.platform.darwin.DarwinSensors.Servo.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.platform.darwin.DarwinSensors.Servo} Servo + */ + Servo.from = Servo.fromObject; + + /** + * Creates a plain object from a Servo message. Also converts values to other types if specified. + * @param {message.platform.darwin.DarwinSensors.Servo} message Servo + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Servo.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.errorFlags = 0; + object.torqueEnabled = false; + object.pGain = 0; + object.iGain = 0; + object.dGain = 0; + object.goalPosition = 0; + object.movingSpeed = 0; + object.torque = 0; + object.presentPosition = 0; + object.presentSpeed = 0; + object.load = 0; + object.voltage = 0; + object.temperature = 0; + } + if (message.errorFlags != null && message.hasOwnProperty("errorFlags")) + object.errorFlags = message.errorFlags; + if (message.torqueEnabled != null && message.hasOwnProperty("torqueEnabled")) + object.torqueEnabled = message.torqueEnabled; + if (message.pGain != null && message.hasOwnProperty("pGain")) + object.pGain = message.pGain; + if (message.iGain != null && message.hasOwnProperty("iGain")) + object.iGain = message.iGain; + if (message.dGain != null && message.hasOwnProperty("dGain")) + object.dGain = message.dGain; + if (message.goalPosition != null && message.hasOwnProperty("goalPosition")) + object.goalPosition = message.goalPosition; + if (message.movingSpeed != null && message.hasOwnProperty("movingSpeed")) + object.movingSpeed = message.movingSpeed; + if (message.torque != null && message.hasOwnProperty("torque")) + object.torque = message.torque; + if (message.presentPosition != null && message.hasOwnProperty("presentPosition")) + object.presentPosition = message.presentPosition; + if (message.presentSpeed != null && message.hasOwnProperty("presentSpeed")) + object.presentSpeed = message.presentSpeed; + if (message.load != null && message.hasOwnProperty("load")) + object.load = message.load; + if (message.voltage != null && message.hasOwnProperty("voltage")) + object.voltage = message.voltage; + if (message.temperature != null && message.hasOwnProperty("temperature")) + object.temperature = message.temperature; + return object; + }; + + /** + * Creates a plain object from this Servo message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Servo.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this Servo to JSON. + * @returns {Object.} JSON object + */ + Servo.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return Servo; + })(); + + DarwinSensors.Servos = (function() { + + /** + * Properties of a Servos. + * @typedef message.platform.darwin.DarwinSensors.Servos$Properties + * @type {Object} + * @property {message.platform.darwin.DarwinSensors.Servo$Properties} [rShoulderPitch] Servos rShoulderPitch. + * @property {message.platform.darwin.DarwinSensors.Servo$Properties} [lShoulderPitch] Servos lShoulderPitch. + * @property {message.platform.darwin.DarwinSensors.Servo$Properties} [rShoulderRoll] Servos rShoulderRoll. + * @property {message.platform.darwin.DarwinSensors.Servo$Properties} [lShoulderRoll] Servos lShoulderRoll. + * @property {message.platform.darwin.DarwinSensors.Servo$Properties} [rElbow] Servos rElbow. + * @property {message.platform.darwin.DarwinSensors.Servo$Properties} [lElbow] Servos lElbow. + * @property {message.platform.darwin.DarwinSensors.Servo$Properties} [rHipYaw] Servos rHipYaw. + * @property {message.platform.darwin.DarwinSensors.Servo$Properties} [lHipYaw] Servos lHipYaw. + * @property {message.platform.darwin.DarwinSensors.Servo$Properties} [rHipRoll] Servos rHipRoll. + * @property {message.platform.darwin.DarwinSensors.Servo$Properties} [lHipRoll] Servos lHipRoll. + * @property {message.platform.darwin.DarwinSensors.Servo$Properties} [rHipPitch] Servos rHipPitch. + * @property {message.platform.darwin.DarwinSensors.Servo$Properties} [lHipPitch] Servos lHipPitch. + * @property {message.platform.darwin.DarwinSensors.Servo$Properties} [rKnee] Servos rKnee. + * @property {message.platform.darwin.DarwinSensors.Servo$Properties} [lKnee] Servos lKnee. + * @property {message.platform.darwin.DarwinSensors.Servo$Properties} [rAnklePitch] Servos rAnklePitch. + * @property {message.platform.darwin.DarwinSensors.Servo$Properties} [lAnklePitch] Servos lAnklePitch. + * @property {message.platform.darwin.DarwinSensors.Servo$Properties} [rAnkleRoll] Servos rAnkleRoll. + * @property {message.platform.darwin.DarwinSensors.Servo$Properties} [lAnkleRoll] Servos lAnkleRoll. + * @property {message.platform.darwin.DarwinSensors.Servo$Properties} [headPan] Servos headPan. + * @property {message.platform.darwin.DarwinSensors.Servo$Properties} [headTilt] Servos headTilt. + */ + + /** + * Constructs a new Servos. + * @exports message.platform.darwin.DarwinSensors.Servos + * @constructor + * @param {message.platform.darwin.DarwinSensors.Servos$Properties=} [properties] Properties to set + */ + function Servos(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Servos rShoulderPitch. + * @type {(message.platform.darwin.DarwinSensors.Servo$Properties|null)} + */ + Servos.prototype.rShoulderPitch = null; + + /** + * Servos lShoulderPitch. + * @type {(message.platform.darwin.DarwinSensors.Servo$Properties|null)} + */ + Servos.prototype.lShoulderPitch = null; + + /** + * Servos rShoulderRoll. + * @type {(message.platform.darwin.DarwinSensors.Servo$Properties|null)} + */ + Servos.prototype.rShoulderRoll = null; + + /** + * Servos lShoulderRoll. + * @type {(message.platform.darwin.DarwinSensors.Servo$Properties|null)} + */ + Servos.prototype.lShoulderRoll = null; + + /** + * Servos rElbow. + * @type {(message.platform.darwin.DarwinSensors.Servo$Properties|null)} + */ + Servos.prototype.rElbow = null; + + /** + * Servos lElbow. + * @type {(message.platform.darwin.DarwinSensors.Servo$Properties|null)} + */ + Servos.prototype.lElbow = null; + + /** + * Servos rHipYaw. + * @type {(message.platform.darwin.DarwinSensors.Servo$Properties|null)} + */ + Servos.prototype.rHipYaw = null; + + /** + * Servos lHipYaw. + * @type {(message.platform.darwin.DarwinSensors.Servo$Properties|null)} + */ + Servos.prototype.lHipYaw = null; + + /** + * Servos rHipRoll. + * @type {(message.platform.darwin.DarwinSensors.Servo$Properties|null)} + */ + Servos.prototype.rHipRoll = null; + + /** + * Servos lHipRoll. + * @type {(message.platform.darwin.DarwinSensors.Servo$Properties|null)} + */ + Servos.prototype.lHipRoll = null; + + /** + * Servos rHipPitch. + * @type {(message.platform.darwin.DarwinSensors.Servo$Properties|null)} + */ + Servos.prototype.rHipPitch = null; + + /** + * Servos lHipPitch. + * @type {(message.platform.darwin.DarwinSensors.Servo$Properties|null)} + */ + Servos.prototype.lHipPitch = null; + + /** + * Servos rKnee. + * @type {(message.platform.darwin.DarwinSensors.Servo$Properties|null)} + */ + Servos.prototype.rKnee = null; + + /** + * Servos lKnee. + * @type {(message.platform.darwin.DarwinSensors.Servo$Properties|null)} + */ + Servos.prototype.lKnee = null; + + /** + * Servos rAnklePitch. + * @type {(message.platform.darwin.DarwinSensors.Servo$Properties|null)} + */ + Servos.prototype.rAnklePitch = null; + + /** + * Servos lAnklePitch. + * @type {(message.platform.darwin.DarwinSensors.Servo$Properties|null)} + */ + Servos.prototype.lAnklePitch = null; + + /** + * Servos rAnkleRoll. + * @type {(message.platform.darwin.DarwinSensors.Servo$Properties|null)} + */ + Servos.prototype.rAnkleRoll = null; + + /** + * Servos lAnkleRoll. + * @type {(message.platform.darwin.DarwinSensors.Servo$Properties|null)} + */ + Servos.prototype.lAnkleRoll = null; + + /** + * Servos headPan. + * @type {(message.platform.darwin.DarwinSensors.Servo$Properties|null)} + */ + Servos.prototype.headPan = null; + + /** + * Servos headTilt. + * @type {(message.platform.darwin.DarwinSensors.Servo$Properties|null)} + */ + Servos.prototype.headTilt = null; + + /** + * Creates a new Servos instance using the specified properties. + * @param {message.platform.darwin.DarwinSensors.Servos$Properties=} [properties] Properties to set + * @returns {message.platform.darwin.DarwinSensors.Servos} Servos instance + */ + Servos.create = function create(properties) { + return new Servos(properties); + }; + + /** + * Encodes the specified Servos message. Does not implicitly {@link message.platform.darwin.DarwinSensors.Servos.verify|verify} messages. + * @param {message.platform.darwin.DarwinSensors.Servos$Properties} message Servos message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Servos.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.rShoulderPitch != null && message.hasOwnProperty("rShoulderPitch")) + $root.message.platform.darwin.DarwinSensors.Servo.encode(message.rShoulderPitch, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.lShoulderPitch != null && message.hasOwnProperty("lShoulderPitch")) + $root.message.platform.darwin.DarwinSensors.Servo.encode(message.lShoulderPitch, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.rShoulderRoll != null && message.hasOwnProperty("rShoulderRoll")) + $root.message.platform.darwin.DarwinSensors.Servo.encode(message.rShoulderRoll, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + if (message.lShoulderRoll != null && message.hasOwnProperty("lShoulderRoll")) + $root.message.platform.darwin.DarwinSensors.Servo.encode(message.lShoulderRoll, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); + if (message.rElbow != null && message.hasOwnProperty("rElbow")) + $root.message.platform.darwin.DarwinSensors.Servo.encode(message.rElbow, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); + if (message.lElbow != null && message.hasOwnProperty("lElbow")) + $root.message.platform.darwin.DarwinSensors.Servo.encode(message.lElbow, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim(); + if (message.rHipYaw != null && message.hasOwnProperty("rHipYaw")) + $root.message.platform.darwin.DarwinSensors.Servo.encode(message.rHipYaw, writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim(); + if (message.lHipYaw != null && message.hasOwnProperty("lHipYaw")) + $root.message.platform.darwin.DarwinSensors.Servo.encode(message.lHipYaw, writer.uint32(/* id 8, wireType 2 =*/66).fork()).ldelim(); + if (message.rHipRoll != null && message.hasOwnProperty("rHipRoll")) + $root.message.platform.darwin.DarwinSensors.Servo.encode(message.rHipRoll, writer.uint32(/* id 9, wireType 2 =*/74).fork()).ldelim(); + if (message.lHipRoll != null && message.hasOwnProperty("lHipRoll")) + $root.message.platform.darwin.DarwinSensors.Servo.encode(message.lHipRoll, writer.uint32(/* id 10, wireType 2 =*/82).fork()).ldelim(); + if (message.rHipPitch != null && message.hasOwnProperty("rHipPitch")) + $root.message.platform.darwin.DarwinSensors.Servo.encode(message.rHipPitch, writer.uint32(/* id 11, wireType 2 =*/90).fork()).ldelim(); + if (message.lHipPitch != null && message.hasOwnProperty("lHipPitch")) + $root.message.platform.darwin.DarwinSensors.Servo.encode(message.lHipPitch, writer.uint32(/* id 12, wireType 2 =*/98).fork()).ldelim(); + if (message.rKnee != null && message.hasOwnProperty("rKnee")) + $root.message.platform.darwin.DarwinSensors.Servo.encode(message.rKnee, writer.uint32(/* id 13, wireType 2 =*/106).fork()).ldelim(); + if (message.lKnee != null && message.hasOwnProperty("lKnee")) + $root.message.platform.darwin.DarwinSensors.Servo.encode(message.lKnee, writer.uint32(/* id 14, wireType 2 =*/114).fork()).ldelim(); + if (message.rAnklePitch != null && message.hasOwnProperty("rAnklePitch")) + $root.message.platform.darwin.DarwinSensors.Servo.encode(message.rAnklePitch, writer.uint32(/* id 15, wireType 2 =*/122).fork()).ldelim(); + if (message.lAnklePitch != null && message.hasOwnProperty("lAnklePitch")) + $root.message.platform.darwin.DarwinSensors.Servo.encode(message.lAnklePitch, writer.uint32(/* id 16, wireType 2 =*/130).fork()).ldelim(); + if (message.rAnkleRoll != null && message.hasOwnProperty("rAnkleRoll")) + $root.message.platform.darwin.DarwinSensors.Servo.encode(message.rAnkleRoll, writer.uint32(/* id 17, wireType 2 =*/138).fork()).ldelim(); + if (message.lAnkleRoll != null && message.hasOwnProperty("lAnkleRoll")) + $root.message.platform.darwin.DarwinSensors.Servo.encode(message.lAnkleRoll, writer.uint32(/* id 18, wireType 2 =*/146).fork()).ldelim(); + if (message.headPan != null && message.hasOwnProperty("headPan")) + $root.message.platform.darwin.DarwinSensors.Servo.encode(message.headPan, writer.uint32(/* id 19, wireType 2 =*/154).fork()).ldelim(); + if (message.headTilt != null && message.hasOwnProperty("headTilt")) + $root.message.platform.darwin.DarwinSensors.Servo.encode(message.headTilt, writer.uint32(/* id 20, wireType 2 =*/162).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified Servos message, length delimited. Does not implicitly {@link message.platform.darwin.DarwinSensors.Servos.verify|verify} messages. + * @param {message.platform.darwin.DarwinSensors.Servos$Properties} message Servos message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Servos.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a Servos message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.platform.darwin.DarwinSensors.Servos} Servos + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Servos.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.platform.darwin.DarwinSensors.Servos(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.rShoulderPitch = $root.message.platform.darwin.DarwinSensors.Servo.decode(reader, reader.uint32()); + break; + case 2: + message.lShoulderPitch = $root.message.platform.darwin.DarwinSensors.Servo.decode(reader, reader.uint32()); + break; + case 3: + message.rShoulderRoll = $root.message.platform.darwin.DarwinSensors.Servo.decode(reader, reader.uint32()); + break; + case 4: + message.lShoulderRoll = $root.message.platform.darwin.DarwinSensors.Servo.decode(reader, reader.uint32()); + break; + case 5: + message.rElbow = $root.message.platform.darwin.DarwinSensors.Servo.decode(reader, reader.uint32()); + break; + case 6: + message.lElbow = $root.message.platform.darwin.DarwinSensors.Servo.decode(reader, reader.uint32()); + break; + case 7: + message.rHipYaw = $root.message.platform.darwin.DarwinSensors.Servo.decode(reader, reader.uint32()); + break; + case 8: + message.lHipYaw = $root.message.platform.darwin.DarwinSensors.Servo.decode(reader, reader.uint32()); + break; + case 9: + message.rHipRoll = $root.message.platform.darwin.DarwinSensors.Servo.decode(reader, reader.uint32()); + break; + case 10: + message.lHipRoll = $root.message.platform.darwin.DarwinSensors.Servo.decode(reader, reader.uint32()); + break; + case 11: + message.rHipPitch = $root.message.platform.darwin.DarwinSensors.Servo.decode(reader, reader.uint32()); + break; + case 12: + message.lHipPitch = $root.message.platform.darwin.DarwinSensors.Servo.decode(reader, reader.uint32()); + break; + case 13: + message.rKnee = $root.message.platform.darwin.DarwinSensors.Servo.decode(reader, reader.uint32()); + break; + case 14: + message.lKnee = $root.message.platform.darwin.DarwinSensors.Servo.decode(reader, reader.uint32()); + break; + case 15: + message.rAnklePitch = $root.message.platform.darwin.DarwinSensors.Servo.decode(reader, reader.uint32()); + break; + case 16: + message.lAnklePitch = $root.message.platform.darwin.DarwinSensors.Servo.decode(reader, reader.uint32()); + break; + case 17: + message.rAnkleRoll = $root.message.platform.darwin.DarwinSensors.Servo.decode(reader, reader.uint32()); + break; + case 18: + message.lAnkleRoll = $root.message.platform.darwin.DarwinSensors.Servo.decode(reader, reader.uint32()); + break; + case 19: + message.headPan = $root.message.platform.darwin.DarwinSensors.Servo.decode(reader, reader.uint32()); + break; + case 20: + message.headTilt = $root.message.platform.darwin.DarwinSensors.Servo.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a Servos message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.platform.darwin.DarwinSensors.Servos} Servos + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Servos.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a Servos message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + Servos.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.rShoulderPitch != null && message.hasOwnProperty("rShoulderPitch")) { + var error = $root.message.platform.darwin.DarwinSensors.Servo.verify(message.rShoulderPitch); + if (error) + return "rShoulderPitch." + error; + } + if (message.lShoulderPitch != null && message.hasOwnProperty("lShoulderPitch")) { + var error = $root.message.platform.darwin.DarwinSensors.Servo.verify(message.lShoulderPitch); + if (error) + return "lShoulderPitch." + error; + } + if (message.rShoulderRoll != null && message.hasOwnProperty("rShoulderRoll")) { + var error = $root.message.platform.darwin.DarwinSensors.Servo.verify(message.rShoulderRoll); + if (error) + return "rShoulderRoll." + error; + } + if (message.lShoulderRoll != null && message.hasOwnProperty("lShoulderRoll")) { + var error = $root.message.platform.darwin.DarwinSensors.Servo.verify(message.lShoulderRoll); + if (error) + return "lShoulderRoll." + error; + } + if (message.rElbow != null && message.hasOwnProperty("rElbow")) { + var error = $root.message.platform.darwin.DarwinSensors.Servo.verify(message.rElbow); + if (error) + return "rElbow." + error; + } + if (message.lElbow != null && message.hasOwnProperty("lElbow")) { + var error = $root.message.platform.darwin.DarwinSensors.Servo.verify(message.lElbow); + if (error) + return "lElbow." + error; + } + if (message.rHipYaw != null && message.hasOwnProperty("rHipYaw")) { + var error = $root.message.platform.darwin.DarwinSensors.Servo.verify(message.rHipYaw); + if (error) + return "rHipYaw." + error; + } + if (message.lHipYaw != null && message.hasOwnProperty("lHipYaw")) { + var error = $root.message.platform.darwin.DarwinSensors.Servo.verify(message.lHipYaw); + if (error) + return "lHipYaw." + error; + } + if (message.rHipRoll != null && message.hasOwnProperty("rHipRoll")) { + var error = $root.message.platform.darwin.DarwinSensors.Servo.verify(message.rHipRoll); + if (error) + return "rHipRoll." + error; + } + if (message.lHipRoll != null && message.hasOwnProperty("lHipRoll")) { + var error = $root.message.platform.darwin.DarwinSensors.Servo.verify(message.lHipRoll); + if (error) + return "lHipRoll." + error; + } + if (message.rHipPitch != null && message.hasOwnProperty("rHipPitch")) { + var error = $root.message.platform.darwin.DarwinSensors.Servo.verify(message.rHipPitch); + if (error) + return "rHipPitch." + error; + } + if (message.lHipPitch != null && message.hasOwnProperty("lHipPitch")) { + var error = $root.message.platform.darwin.DarwinSensors.Servo.verify(message.lHipPitch); + if (error) + return "lHipPitch." + error; + } + if (message.rKnee != null && message.hasOwnProperty("rKnee")) { + var error = $root.message.platform.darwin.DarwinSensors.Servo.verify(message.rKnee); + if (error) + return "rKnee." + error; + } + if (message.lKnee != null && message.hasOwnProperty("lKnee")) { + var error = $root.message.platform.darwin.DarwinSensors.Servo.verify(message.lKnee); + if (error) + return "lKnee." + error; + } + if (message.rAnklePitch != null && message.hasOwnProperty("rAnklePitch")) { + var error = $root.message.platform.darwin.DarwinSensors.Servo.verify(message.rAnklePitch); + if (error) + return "rAnklePitch." + error; + } + if (message.lAnklePitch != null && message.hasOwnProperty("lAnklePitch")) { + var error = $root.message.platform.darwin.DarwinSensors.Servo.verify(message.lAnklePitch); + if (error) + return "lAnklePitch." + error; + } + if (message.rAnkleRoll != null && message.hasOwnProperty("rAnkleRoll")) { + var error = $root.message.platform.darwin.DarwinSensors.Servo.verify(message.rAnkleRoll); + if (error) + return "rAnkleRoll." + error; + } + if (message.lAnkleRoll != null && message.hasOwnProperty("lAnkleRoll")) { + var error = $root.message.platform.darwin.DarwinSensors.Servo.verify(message.lAnkleRoll); + if (error) + return "lAnkleRoll." + error; + } + if (message.headPan != null && message.hasOwnProperty("headPan")) { + var error = $root.message.platform.darwin.DarwinSensors.Servo.verify(message.headPan); + if (error) + return "headPan." + error; + } + if (message.headTilt != null && message.hasOwnProperty("headTilt")) { + var error = $root.message.platform.darwin.DarwinSensors.Servo.verify(message.headTilt); + if (error) + return "headTilt." + error; + } + return null; + }; + + /** + * Creates a Servos message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.platform.darwin.DarwinSensors.Servos} Servos + */ + Servos.fromObject = function fromObject(object) { + if (object instanceof $root.message.platform.darwin.DarwinSensors.Servos) + return object; + var message = new $root.message.platform.darwin.DarwinSensors.Servos(); + if (object.rShoulderPitch != null) { + if (typeof object.rShoulderPitch !== "object") + throw TypeError(".message.platform.darwin.DarwinSensors.Servos.rShoulderPitch: object expected"); + message.rShoulderPitch = $root.message.platform.darwin.DarwinSensors.Servo.fromObject(object.rShoulderPitch); + } + if (object.lShoulderPitch != null) { + if (typeof object.lShoulderPitch !== "object") + throw TypeError(".message.platform.darwin.DarwinSensors.Servos.lShoulderPitch: object expected"); + message.lShoulderPitch = $root.message.platform.darwin.DarwinSensors.Servo.fromObject(object.lShoulderPitch); + } + if (object.rShoulderRoll != null) { + if (typeof object.rShoulderRoll !== "object") + throw TypeError(".message.platform.darwin.DarwinSensors.Servos.rShoulderRoll: object expected"); + message.rShoulderRoll = $root.message.platform.darwin.DarwinSensors.Servo.fromObject(object.rShoulderRoll); + } + if (object.lShoulderRoll != null) { + if (typeof object.lShoulderRoll !== "object") + throw TypeError(".message.platform.darwin.DarwinSensors.Servos.lShoulderRoll: object expected"); + message.lShoulderRoll = $root.message.platform.darwin.DarwinSensors.Servo.fromObject(object.lShoulderRoll); + } + if (object.rElbow != null) { + if (typeof object.rElbow !== "object") + throw TypeError(".message.platform.darwin.DarwinSensors.Servos.rElbow: object expected"); + message.rElbow = $root.message.platform.darwin.DarwinSensors.Servo.fromObject(object.rElbow); + } + if (object.lElbow != null) { + if (typeof object.lElbow !== "object") + throw TypeError(".message.platform.darwin.DarwinSensors.Servos.lElbow: object expected"); + message.lElbow = $root.message.platform.darwin.DarwinSensors.Servo.fromObject(object.lElbow); + } + if (object.rHipYaw != null) { + if (typeof object.rHipYaw !== "object") + throw TypeError(".message.platform.darwin.DarwinSensors.Servos.rHipYaw: object expected"); + message.rHipYaw = $root.message.platform.darwin.DarwinSensors.Servo.fromObject(object.rHipYaw); + } + if (object.lHipYaw != null) { + if (typeof object.lHipYaw !== "object") + throw TypeError(".message.platform.darwin.DarwinSensors.Servos.lHipYaw: object expected"); + message.lHipYaw = $root.message.platform.darwin.DarwinSensors.Servo.fromObject(object.lHipYaw); + } + if (object.rHipRoll != null) { + if (typeof object.rHipRoll !== "object") + throw TypeError(".message.platform.darwin.DarwinSensors.Servos.rHipRoll: object expected"); + message.rHipRoll = $root.message.platform.darwin.DarwinSensors.Servo.fromObject(object.rHipRoll); + } + if (object.lHipRoll != null) { + if (typeof object.lHipRoll !== "object") + throw TypeError(".message.platform.darwin.DarwinSensors.Servos.lHipRoll: object expected"); + message.lHipRoll = $root.message.platform.darwin.DarwinSensors.Servo.fromObject(object.lHipRoll); + } + if (object.rHipPitch != null) { + if (typeof object.rHipPitch !== "object") + throw TypeError(".message.platform.darwin.DarwinSensors.Servos.rHipPitch: object expected"); + message.rHipPitch = $root.message.platform.darwin.DarwinSensors.Servo.fromObject(object.rHipPitch); + } + if (object.lHipPitch != null) { + if (typeof object.lHipPitch !== "object") + throw TypeError(".message.platform.darwin.DarwinSensors.Servos.lHipPitch: object expected"); + message.lHipPitch = $root.message.platform.darwin.DarwinSensors.Servo.fromObject(object.lHipPitch); + } + if (object.rKnee != null) { + if (typeof object.rKnee !== "object") + throw TypeError(".message.platform.darwin.DarwinSensors.Servos.rKnee: object expected"); + message.rKnee = $root.message.platform.darwin.DarwinSensors.Servo.fromObject(object.rKnee); + } + if (object.lKnee != null) { + if (typeof object.lKnee !== "object") + throw TypeError(".message.platform.darwin.DarwinSensors.Servos.lKnee: object expected"); + message.lKnee = $root.message.platform.darwin.DarwinSensors.Servo.fromObject(object.lKnee); + } + if (object.rAnklePitch != null) { + if (typeof object.rAnklePitch !== "object") + throw TypeError(".message.platform.darwin.DarwinSensors.Servos.rAnklePitch: object expected"); + message.rAnklePitch = $root.message.platform.darwin.DarwinSensors.Servo.fromObject(object.rAnklePitch); + } + if (object.lAnklePitch != null) { + if (typeof object.lAnklePitch !== "object") + throw TypeError(".message.platform.darwin.DarwinSensors.Servos.lAnklePitch: object expected"); + message.lAnklePitch = $root.message.platform.darwin.DarwinSensors.Servo.fromObject(object.lAnklePitch); + } + if (object.rAnkleRoll != null) { + if (typeof object.rAnkleRoll !== "object") + throw TypeError(".message.platform.darwin.DarwinSensors.Servos.rAnkleRoll: object expected"); + message.rAnkleRoll = $root.message.platform.darwin.DarwinSensors.Servo.fromObject(object.rAnkleRoll); + } + if (object.lAnkleRoll != null) { + if (typeof object.lAnkleRoll !== "object") + throw TypeError(".message.platform.darwin.DarwinSensors.Servos.lAnkleRoll: object expected"); + message.lAnkleRoll = $root.message.platform.darwin.DarwinSensors.Servo.fromObject(object.lAnkleRoll); + } + if (object.headPan != null) { + if (typeof object.headPan !== "object") + throw TypeError(".message.platform.darwin.DarwinSensors.Servos.headPan: object expected"); + message.headPan = $root.message.platform.darwin.DarwinSensors.Servo.fromObject(object.headPan); + } + if (object.headTilt != null) { + if (typeof object.headTilt !== "object") + throw TypeError(".message.platform.darwin.DarwinSensors.Servos.headTilt: object expected"); + message.headTilt = $root.message.platform.darwin.DarwinSensors.Servo.fromObject(object.headTilt); + } + return message; + }; + + /** + * Creates a Servos message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.platform.darwin.DarwinSensors.Servos.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.platform.darwin.DarwinSensors.Servos} Servos + */ + Servos.from = Servos.fromObject; + + /** + * Creates a plain object from a Servos message. Also converts values to other types if specified. + * @param {message.platform.darwin.DarwinSensors.Servos} message Servos + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Servos.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.rShoulderPitch = null; + object.lShoulderPitch = null; + object.rShoulderRoll = null; + object.lShoulderRoll = null; + object.rElbow = null; + object.lElbow = null; + object.rHipYaw = null; + object.lHipYaw = null; + object.rHipRoll = null; + object.lHipRoll = null; + object.rHipPitch = null; + object.lHipPitch = null; + object.rKnee = null; + object.lKnee = null; + object.rAnklePitch = null; + object.lAnklePitch = null; + object.rAnkleRoll = null; + object.lAnkleRoll = null; + object.headPan = null; + object.headTilt = null; + } + if (message.rShoulderPitch != null && message.hasOwnProperty("rShoulderPitch")) + object.rShoulderPitch = $root.message.platform.darwin.DarwinSensors.Servo.toObject(message.rShoulderPitch, options); + if (message.lShoulderPitch != null && message.hasOwnProperty("lShoulderPitch")) + object.lShoulderPitch = $root.message.platform.darwin.DarwinSensors.Servo.toObject(message.lShoulderPitch, options); + if (message.rShoulderRoll != null && message.hasOwnProperty("rShoulderRoll")) + object.rShoulderRoll = $root.message.platform.darwin.DarwinSensors.Servo.toObject(message.rShoulderRoll, options); + if (message.lShoulderRoll != null && message.hasOwnProperty("lShoulderRoll")) + object.lShoulderRoll = $root.message.platform.darwin.DarwinSensors.Servo.toObject(message.lShoulderRoll, options); + if (message.rElbow != null && message.hasOwnProperty("rElbow")) + object.rElbow = $root.message.platform.darwin.DarwinSensors.Servo.toObject(message.rElbow, options); + if (message.lElbow != null && message.hasOwnProperty("lElbow")) + object.lElbow = $root.message.platform.darwin.DarwinSensors.Servo.toObject(message.lElbow, options); + if (message.rHipYaw != null && message.hasOwnProperty("rHipYaw")) + object.rHipYaw = $root.message.platform.darwin.DarwinSensors.Servo.toObject(message.rHipYaw, options); + if (message.lHipYaw != null && message.hasOwnProperty("lHipYaw")) + object.lHipYaw = $root.message.platform.darwin.DarwinSensors.Servo.toObject(message.lHipYaw, options); + if (message.rHipRoll != null && message.hasOwnProperty("rHipRoll")) + object.rHipRoll = $root.message.platform.darwin.DarwinSensors.Servo.toObject(message.rHipRoll, options); + if (message.lHipRoll != null && message.hasOwnProperty("lHipRoll")) + object.lHipRoll = $root.message.platform.darwin.DarwinSensors.Servo.toObject(message.lHipRoll, options); + if (message.rHipPitch != null && message.hasOwnProperty("rHipPitch")) + object.rHipPitch = $root.message.platform.darwin.DarwinSensors.Servo.toObject(message.rHipPitch, options); + if (message.lHipPitch != null && message.hasOwnProperty("lHipPitch")) + object.lHipPitch = $root.message.platform.darwin.DarwinSensors.Servo.toObject(message.lHipPitch, options); + if (message.rKnee != null && message.hasOwnProperty("rKnee")) + object.rKnee = $root.message.platform.darwin.DarwinSensors.Servo.toObject(message.rKnee, options); + if (message.lKnee != null && message.hasOwnProperty("lKnee")) + object.lKnee = $root.message.platform.darwin.DarwinSensors.Servo.toObject(message.lKnee, options); + if (message.rAnklePitch != null && message.hasOwnProperty("rAnklePitch")) + object.rAnklePitch = $root.message.platform.darwin.DarwinSensors.Servo.toObject(message.rAnklePitch, options); + if (message.lAnklePitch != null && message.hasOwnProperty("lAnklePitch")) + object.lAnklePitch = $root.message.platform.darwin.DarwinSensors.Servo.toObject(message.lAnklePitch, options); + if (message.rAnkleRoll != null && message.hasOwnProperty("rAnkleRoll")) + object.rAnkleRoll = $root.message.platform.darwin.DarwinSensors.Servo.toObject(message.rAnkleRoll, options); + if (message.lAnkleRoll != null && message.hasOwnProperty("lAnkleRoll")) + object.lAnkleRoll = $root.message.platform.darwin.DarwinSensors.Servo.toObject(message.lAnkleRoll, options); + if (message.headPan != null && message.hasOwnProperty("headPan")) + object.headPan = $root.message.platform.darwin.DarwinSensors.Servo.toObject(message.headPan, options); + if (message.headTilt != null && message.hasOwnProperty("headTilt")) + object.headTilt = $root.message.platform.darwin.DarwinSensors.Servo.toObject(message.headTilt, options); + return object; + }; + + /** + * Creates a plain object from this Servos message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Servos.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this Servos to JSON. + * @returns {Object.} JSON object + */ + Servos.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return Servos; + })(); + + return DarwinSensors; + })(); + + darwin.ButtonLeftDown = (function() { + + /** + * Properties of a ButtonLeftDown. + * @typedef message.platform.darwin.ButtonLeftDown$Properties + * @type {Object} + */ + + /** + * Constructs a new ButtonLeftDown. + * @exports message.platform.darwin.ButtonLeftDown + * @constructor + * @param {message.platform.darwin.ButtonLeftDown$Properties=} [properties] Properties to set + */ + function ButtonLeftDown(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Creates a new ButtonLeftDown instance using the specified properties. + * @param {message.platform.darwin.ButtonLeftDown$Properties=} [properties] Properties to set + * @returns {message.platform.darwin.ButtonLeftDown} ButtonLeftDown instance + */ + ButtonLeftDown.create = function create(properties) { + return new ButtonLeftDown(properties); + }; + + /** + * Encodes the specified ButtonLeftDown message. Does not implicitly {@link message.platform.darwin.ButtonLeftDown.verify|verify} messages. + * @param {message.platform.darwin.ButtonLeftDown$Properties} message ButtonLeftDown message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ButtonLeftDown.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + return writer; + }; + + /** + * Encodes the specified ButtonLeftDown message, length delimited. Does not implicitly {@link message.platform.darwin.ButtonLeftDown.verify|verify} messages. + * @param {message.platform.darwin.ButtonLeftDown$Properties} message ButtonLeftDown message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ButtonLeftDown.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a ButtonLeftDown message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.platform.darwin.ButtonLeftDown} ButtonLeftDown + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ButtonLeftDown.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.platform.darwin.ButtonLeftDown(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a ButtonLeftDown message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.platform.darwin.ButtonLeftDown} ButtonLeftDown + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ButtonLeftDown.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a ButtonLeftDown message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + ButtonLeftDown.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + return null; + }; + + /** + * Creates a ButtonLeftDown message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.platform.darwin.ButtonLeftDown} ButtonLeftDown + */ + ButtonLeftDown.fromObject = function fromObject(object) { + if (object instanceof $root.message.platform.darwin.ButtonLeftDown) + return object; + return new $root.message.platform.darwin.ButtonLeftDown(); + }; + + /** + * Creates a ButtonLeftDown message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.platform.darwin.ButtonLeftDown.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.platform.darwin.ButtonLeftDown} ButtonLeftDown + */ + ButtonLeftDown.from = ButtonLeftDown.fromObject; + + /** + * Creates a plain object from a ButtonLeftDown message. Also converts values to other types if specified. + * @param {message.platform.darwin.ButtonLeftDown} message ButtonLeftDown + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + ButtonLeftDown.toObject = function toObject() { + return {}; + }; + + /** + * Creates a plain object from this ButtonLeftDown message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + ButtonLeftDown.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this ButtonLeftDown to JSON. + * @returns {Object.} JSON object + */ + ButtonLeftDown.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return ButtonLeftDown; + })(); + + darwin.ButtonLeftUp = (function() { + + /** + * Properties of a ButtonLeftUp. + * @typedef message.platform.darwin.ButtonLeftUp$Properties + * @type {Object} + */ + + /** + * Constructs a new ButtonLeftUp. + * @exports message.platform.darwin.ButtonLeftUp + * @constructor + * @param {message.platform.darwin.ButtonLeftUp$Properties=} [properties] Properties to set + */ + function ButtonLeftUp(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Creates a new ButtonLeftUp instance using the specified properties. + * @param {message.platform.darwin.ButtonLeftUp$Properties=} [properties] Properties to set + * @returns {message.platform.darwin.ButtonLeftUp} ButtonLeftUp instance + */ + ButtonLeftUp.create = function create(properties) { + return new ButtonLeftUp(properties); + }; + + /** + * Encodes the specified ButtonLeftUp message. Does not implicitly {@link message.platform.darwin.ButtonLeftUp.verify|verify} messages. + * @param {message.platform.darwin.ButtonLeftUp$Properties} message ButtonLeftUp message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ButtonLeftUp.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + return writer; + }; + + /** + * Encodes the specified ButtonLeftUp message, length delimited. Does not implicitly {@link message.platform.darwin.ButtonLeftUp.verify|verify} messages. + * @param {message.platform.darwin.ButtonLeftUp$Properties} message ButtonLeftUp message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ButtonLeftUp.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a ButtonLeftUp message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.platform.darwin.ButtonLeftUp} ButtonLeftUp + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ButtonLeftUp.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.platform.darwin.ButtonLeftUp(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a ButtonLeftUp message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.platform.darwin.ButtonLeftUp} ButtonLeftUp + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ButtonLeftUp.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a ButtonLeftUp message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + ButtonLeftUp.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + return null; + }; + + /** + * Creates a ButtonLeftUp message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.platform.darwin.ButtonLeftUp} ButtonLeftUp + */ + ButtonLeftUp.fromObject = function fromObject(object) { + if (object instanceof $root.message.platform.darwin.ButtonLeftUp) + return object; + return new $root.message.platform.darwin.ButtonLeftUp(); + }; + + /** + * Creates a ButtonLeftUp message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.platform.darwin.ButtonLeftUp.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.platform.darwin.ButtonLeftUp} ButtonLeftUp + */ + ButtonLeftUp.from = ButtonLeftUp.fromObject; + + /** + * Creates a plain object from a ButtonLeftUp message. Also converts values to other types if specified. + * @param {message.platform.darwin.ButtonLeftUp} message ButtonLeftUp + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + ButtonLeftUp.toObject = function toObject() { + return {}; + }; + + /** + * Creates a plain object from this ButtonLeftUp message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + ButtonLeftUp.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this ButtonLeftUp to JSON. + * @returns {Object.} JSON object + */ + ButtonLeftUp.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return ButtonLeftUp; + })(); + + darwin.ButtonMiddleDown = (function() { + + /** + * Properties of a ButtonMiddleDown. + * @typedef message.platform.darwin.ButtonMiddleDown$Properties + * @type {Object} + */ + + /** + * Constructs a new ButtonMiddleDown. + * @exports message.platform.darwin.ButtonMiddleDown + * @constructor + * @param {message.platform.darwin.ButtonMiddleDown$Properties=} [properties] Properties to set + */ + function ButtonMiddleDown(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Creates a new ButtonMiddleDown instance using the specified properties. + * @param {message.platform.darwin.ButtonMiddleDown$Properties=} [properties] Properties to set + * @returns {message.platform.darwin.ButtonMiddleDown} ButtonMiddleDown instance + */ + ButtonMiddleDown.create = function create(properties) { + return new ButtonMiddleDown(properties); + }; + + /** + * Encodes the specified ButtonMiddleDown message. Does not implicitly {@link message.platform.darwin.ButtonMiddleDown.verify|verify} messages. + * @param {message.platform.darwin.ButtonMiddleDown$Properties} message ButtonMiddleDown message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ButtonMiddleDown.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + return writer; + }; + + /** + * Encodes the specified ButtonMiddleDown message, length delimited. Does not implicitly {@link message.platform.darwin.ButtonMiddleDown.verify|verify} messages. + * @param {message.platform.darwin.ButtonMiddleDown$Properties} message ButtonMiddleDown message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ButtonMiddleDown.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a ButtonMiddleDown message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.platform.darwin.ButtonMiddleDown} ButtonMiddleDown + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ButtonMiddleDown.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.platform.darwin.ButtonMiddleDown(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a ButtonMiddleDown message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.platform.darwin.ButtonMiddleDown} ButtonMiddleDown + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ButtonMiddleDown.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a ButtonMiddleDown message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + ButtonMiddleDown.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + return null; + }; + + /** + * Creates a ButtonMiddleDown message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.platform.darwin.ButtonMiddleDown} ButtonMiddleDown + */ + ButtonMiddleDown.fromObject = function fromObject(object) { + if (object instanceof $root.message.platform.darwin.ButtonMiddleDown) + return object; + return new $root.message.platform.darwin.ButtonMiddleDown(); + }; + + /** + * Creates a ButtonMiddleDown message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.platform.darwin.ButtonMiddleDown.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.platform.darwin.ButtonMiddleDown} ButtonMiddleDown + */ + ButtonMiddleDown.from = ButtonMiddleDown.fromObject; + + /** + * Creates a plain object from a ButtonMiddleDown message. Also converts values to other types if specified. + * @param {message.platform.darwin.ButtonMiddleDown} message ButtonMiddleDown + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + ButtonMiddleDown.toObject = function toObject() { + return {}; + }; + + /** + * Creates a plain object from this ButtonMiddleDown message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + ButtonMiddleDown.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this ButtonMiddleDown to JSON. + * @returns {Object.} JSON object + */ + ButtonMiddleDown.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return ButtonMiddleDown; + })(); + + darwin.ButtonMiddleUp = (function() { + + /** + * Properties of a ButtonMiddleUp. + * @typedef message.platform.darwin.ButtonMiddleUp$Properties + * @type {Object} + */ + + /** + * Constructs a new ButtonMiddleUp. + * @exports message.platform.darwin.ButtonMiddleUp + * @constructor + * @param {message.platform.darwin.ButtonMiddleUp$Properties=} [properties] Properties to set + */ + function ButtonMiddleUp(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Creates a new ButtonMiddleUp instance using the specified properties. + * @param {message.platform.darwin.ButtonMiddleUp$Properties=} [properties] Properties to set + * @returns {message.platform.darwin.ButtonMiddleUp} ButtonMiddleUp instance + */ + ButtonMiddleUp.create = function create(properties) { + return new ButtonMiddleUp(properties); + }; + + /** + * Encodes the specified ButtonMiddleUp message. Does not implicitly {@link message.platform.darwin.ButtonMiddleUp.verify|verify} messages. + * @param {message.platform.darwin.ButtonMiddleUp$Properties} message ButtonMiddleUp message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ButtonMiddleUp.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + return writer; + }; + + /** + * Encodes the specified ButtonMiddleUp message, length delimited. Does not implicitly {@link message.platform.darwin.ButtonMiddleUp.verify|verify} messages. + * @param {message.platform.darwin.ButtonMiddleUp$Properties} message ButtonMiddleUp message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ButtonMiddleUp.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a ButtonMiddleUp message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.platform.darwin.ButtonMiddleUp} ButtonMiddleUp + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ButtonMiddleUp.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.platform.darwin.ButtonMiddleUp(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a ButtonMiddleUp message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.platform.darwin.ButtonMiddleUp} ButtonMiddleUp + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ButtonMiddleUp.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a ButtonMiddleUp message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + ButtonMiddleUp.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + return null; + }; + + /** + * Creates a ButtonMiddleUp message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.platform.darwin.ButtonMiddleUp} ButtonMiddleUp + */ + ButtonMiddleUp.fromObject = function fromObject(object) { + if (object instanceof $root.message.platform.darwin.ButtonMiddleUp) + return object; + return new $root.message.platform.darwin.ButtonMiddleUp(); + }; + + /** + * Creates a ButtonMiddleUp message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.platform.darwin.ButtonMiddleUp.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.platform.darwin.ButtonMiddleUp} ButtonMiddleUp + */ + ButtonMiddleUp.from = ButtonMiddleUp.fromObject; + + /** + * Creates a plain object from a ButtonMiddleUp message. Also converts values to other types if specified. + * @param {message.platform.darwin.ButtonMiddleUp} message ButtonMiddleUp + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + ButtonMiddleUp.toObject = function toObject() { + return {}; + }; + + /** + * Creates a plain object from this ButtonMiddleUp message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + ButtonMiddleUp.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this ButtonMiddleUp to JSON. + * @returns {Object.} JSON object + */ + ButtonMiddleUp.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return ButtonMiddleUp; + })(); + + return darwin; + })(); + + return platform; + })(); + + message.research = (function() { + + /** + * Namespace research. + * @exports message.research + * @namespace + */ + var research = {}; + + research.AutoClassifierPixels = (function() { + + /** + * Properties of an AutoClassifierPixels. + * @typedef message.research.AutoClassifierPixels$Properties + * @type {Object} + * @property {Array.} [pixels] AutoClassifierPixels pixels. + * @property {number} [classification] AutoClassifierPixels classification. + */ + + /** + * Constructs a new AutoClassifierPixels. + * @exports message.research.AutoClassifierPixels + * @constructor + * @param {message.research.AutoClassifierPixels$Properties=} [properties] Properties to set + */ + function AutoClassifierPixels(properties) { + this.pixels = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * AutoClassifierPixels pixels. + * @type {Array.} + */ + AutoClassifierPixels.prototype.pixels = $util.emptyArray; + + /** + * AutoClassifierPixels classification. + * @type {number} + */ + AutoClassifierPixels.prototype.classification = 0; + + /** + * Creates a new AutoClassifierPixels instance using the specified properties. + * @param {message.research.AutoClassifierPixels$Properties=} [properties] Properties to set + * @returns {message.research.AutoClassifierPixels} AutoClassifierPixels instance + */ + AutoClassifierPixels.create = function create(properties) { + return new AutoClassifierPixels(properties); + }; + + /** + * Encodes the specified AutoClassifierPixels message. Does not implicitly {@link message.research.AutoClassifierPixels.verify|verify} messages. + * @param {message.research.AutoClassifierPixels$Properties} message AutoClassifierPixels message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + AutoClassifierPixels.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.pixels != null && message.pixels.length) { + writer.uint32(/* id 1, wireType 2 =*/10).fork(); + for (var i = 0; i < message.pixels.length; ++i) + writer.uint32(message.pixels[i]); + writer.ldelim(); + } + if (message.classification != null && message.hasOwnProperty("classification")) + writer.uint32(/* id 2, wireType 0 =*/16).uint32(message.classification); + return writer; + }; + + /** + * Encodes the specified AutoClassifierPixels message, length delimited. Does not implicitly {@link message.research.AutoClassifierPixels.verify|verify} messages. + * @param {message.research.AutoClassifierPixels$Properties} message AutoClassifierPixels message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + AutoClassifierPixels.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes an AutoClassifierPixels message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.research.AutoClassifierPixels} AutoClassifierPixels + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + AutoClassifierPixels.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.research.AutoClassifierPixels(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (!(message.pixels && message.pixels.length)) + message.pixels = []; + if ((tag & 7) === 2) { + var end2 = reader.uint32() + reader.pos; + while (reader.pos < end2) + message.pixels.push(reader.uint32()); + } else + message.pixels.push(reader.uint32()); + break; + case 2: + message.classification = reader.uint32(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes an AutoClassifierPixels message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.research.AutoClassifierPixels} AutoClassifierPixels + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + AutoClassifierPixels.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies an AutoClassifierPixels message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + AutoClassifierPixels.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.pixels != null && message.hasOwnProperty("pixels")) { + if (!Array.isArray(message.pixels)) + return "pixels: array expected"; + for (var i = 0; i < message.pixels.length; ++i) + if (!$util.isInteger(message.pixels[i])) + return "pixels: integer[] expected"; + } + if (message.classification != null && message.hasOwnProperty("classification")) + if (!$util.isInteger(message.classification)) + return "classification: integer expected"; + return null; + }; + + /** + * Creates an AutoClassifierPixels message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.research.AutoClassifierPixels} AutoClassifierPixels + */ + AutoClassifierPixels.fromObject = function fromObject(object) { + if (object instanceof $root.message.research.AutoClassifierPixels) + return object; + var message = new $root.message.research.AutoClassifierPixels(); + if (object.pixels) { + if (!Array.isArray(object.pixels)) + throw TypeError(".message.research.AutoClassifierPixels.pixels: array expected"); + message.pixels = []; + for (var i = 0; i < object.pixels.length; ++i) + message.pixels[i] = object.pixels[i] >>> 0; + } + if (object.classification != null) + message.classification = object.classification >>> 0; + return message; + }; + + /** + * Creates an AutoClassifierPixels message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.research.AutoClassifierPixels.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.research.AutoClassifierPixels} AutoClassifierPixels + */ + AutoClassifierPixels.from = AutoClassifierPixels.fromObject; + + /** + * Creates a plain object from an AutoClassifierPixels message. Also converts values to other types if specified. + * @param {message.research.AutoClassifierPixels} message AutoClassifierPixels + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + AutoClassifierPixels.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.pixels = []; + if (options.defaults) + object.classification = 0; + if (message.pixels && message.pixels.length) { + object.pixels = []; + for (var j = 0; j < message.pixels.length; ++j) + object.pixels[j] = message.pixels[j]; + } + if (message.classification != null && message.hasOwnProperty("classification")) + object.classification = message.classification; + return object; + }; + + /** + * Creates a plain object from this AutoClassifierPixels message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + AutoClassifierPixels.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this AutoClassifierPixels to JSON. + * @returns {Object.} JSON object + */ + AutoClassifierPixels.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return AutoClassifierPixels; + })(); + + research.scriptoptimizer = (function() { + + /** + * Namespace scriptoptimizer. + * @exports message.research.scriptoptimizer + * @namespace + */ + var scriptoptimizer = {}; + + scriptoptimizer.OptimizeScript = (function() { + + /** + * Properties of an OptimizeScript. + * @typedef message.research.scriptoptimizer.OptimizeScript$Properties + * @type {Object} + * @property {string} [target] OptimizeScript target. + * @property {number} [iteration] OptimizeScript iteration. + * @property {string} [metadata] OptimizeScript metadata. + * @property {Array.} [frames] OptimizeScript frames. + */ + + /** + * Constructs a new OptimizeScript. + * @exports message.research.scriptoptimizer.OptimizeScript + * @constructor + * @param {message.research.scriptoptimizer.OptimizeScript$Properties=} [properties] Properties to set + */ + function OptimizeScript(properties) { + this.frames = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * OptimizeScript target. + * @type {string} + */ + OptimizeScript.prototype.target = ""; + + /** + * OptimizeScript iteration. + * @type {number} + */ + OptimizeScript.prototype.iteration = 0; + + /** + * OptimizeScript metadata. + * @type {string} + */ + OptimizeScript.prototype.metadata = ""; + + /** + * OptimizeScript frames. + * @type {Array.} + */ + OptimizeScript.prototype.frames = $util.emptyArray; + + /** + * Creates a new OptimizeScript instance using the specified properties. + * @param {message.research.scriptoptimizer.OptimizeScript$Properties=} [properties] Properties to set + * @returns {message.research.scriptoptimizer.OptimizeScript} OptimizeScript instance + */ + OptimizeScript.create = function create(properties) { + return new OptimizeScript(properties); + }; + + /** + * Encodes the specified OptimizeScript message. Does not implicitly {@link message.research.scriptoptimizer.OptimizeScript.verify|verify} messages. + * @param {message.research.scriptoptimizer.OptimizeScript$Properties} message OptimizeScript message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + OptimizeScript.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.target != null && message.hasOwnProperty("target")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.target); + if (message.iteration != null && message.hasOwnProperty("iteration")) + writer.uint32(/* id 2, wireType 0 =*/16).uint32(message.iteration); + if (message.metadata != null && message.hasOwnProperty("metadata")) + writer.uint32(/* id 3, wireType 2 =*/26).string(message.metadata); + if (message.frames != null && message.frames.length) + for (var i = 0; i < message.frames.length; ++i) + $root.message.research.scriptoptimizer.OptimizeScript.Frame.encode(message.frames[i], writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified OptimizeScript message, length delimited. Does not implicitly {@link message.research.scriptoptimizer.OptimizeScript.verify|verify} messages. + * @param {message.research.scriptoptimizer.OptimizeScript$Properties} message OptimizeScript message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + OptimizeScript.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes an OptimizeScript message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.research.scriptoptimizer.OptimizeScript} OptimizeScript + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + OptimizeScript.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.research.scriptoptimizer.OptimizeScript(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.target = reader.string(); + break; + case 2: + message.iteration = reader.uint32(); + break; + case 3: + message.metadata = reader.string(); + break; + case 4: + if (!(message.frames && message.frames.length)) + message.frames = []; + message.frames.push($root.message.research.scriptoptimizer.OptimizeScript.Frame.decode(reader, reader.uint32())); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes an OptimizeScript message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.research.scriptoptimizer.OptimizeScript} OptimizeScript + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + OptimizeScript.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies an OptimizeScript message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + OptimizeScript.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.target != null && message.hasOwnProperty("target")) + if (!$util.isString(message.target)) + return "target: string expected"; + if (message.iteration != null && message.hasOwnProperty("iteration")) + if (!$util.isInteger(message.iteration)) + return "iteration: integer expected"; + if (message.metadata != null && message.hasOwnProperty("metadata")) + if (!$util.isString(message.metadata)) + return "metadata: string expected"; + if (message.frames != null && message.hasOwnProperty("frames")) { + if (!Array.isArray(message.frames)) + return "frames: array expected"; + for (var i = 0; i < message.frames.length; ++i) { + var error = $root.message.research.scriptoptimizer.OptimizeScript.Frame.verify(message.frames[i]); + if (error) + return "frames." + error; + } + } + return null; + }; + + /** + * Creates an OptimizeScript message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.research.scriptoptimizer.OptimizeScript} OptimizeScript + */ + OptimizeScript.fromObject = function fromObject(object) { + if (object instanceof $root.message.research.scriptoptimizer.OptimizeScript) + return object; + var message = new $root.message.research.scriptoptimizer.OptimizeScript(); + if (object.target != null) + message.target = String(object.target); + if (object.iteration != null) + message.iteration = object.iteration >>> 0; + if (object.metadata != null) + message.metadata = String(object.metadata); + if (object.frames) { + if (!Array.isArray(object.frames)) + throw TypeError(".message.research.scriptoptimizer.OptimizeScript.frames: array expected"); + message.frames = []; + for (var i = 0; i < object.frames.length; ++i) { + if (typeof object.frames[i] !== "object") + throw TypeError(".message.research.scriptoptimizer.OptimizeScript.frames: object expected"); + message.frames[i] = $root.message.research.scriptoptimizer.OptimizeScript.Frame.fromObject(object.frames[i]); + } + } + return message; + }; + + /** + * Creates an OptimizeScript message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.research.scriptoptimizer.OptimizeScript.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.research.scriptoptimizer.OptimizeScript} OptimizeScript + */ + OptimizeScript.from = OptimizeScript.fromObject; + + /** + * Creates a plain object from an OptimizeScript message. Also converts values to other types if specified. + * @param {message.research.scriptoptimizer.OptimizeScript} message OptimizeScript + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + OptimizeScript.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.frames = []; + if (options.defaults) { + object.target = ""; + object.iteration = 0; + object.metadata = ""; + } + if (message.target != null && message.hasOwnProperty("target")) + object.target = message.target; + if (message.iteration != null && message.hasOwnProperty("iteration")) + object.iteration = message.iteration; + if (message.metadata != null && message.hasOwnProperty("metadata")) + object.metadata = message.metadata; + if (message.frames && message.frames.length) { + object.frames = []; + for (var j = 0; j < message.frames.length; ++j) + object.frames[j] = $root.message.research.scriptoptimizer.OptimizeScript.Frame.toObject(message.frames[j], options); + } + return object; + }; + + /** + * Creates a plain object from this OptimizeScript message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + OptimizeScript.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this OptimizeScript to JSON. + * @returns {Object.} JSON object + */ + OptimizeScript.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + OptimizeScript.Target = (function() { + + /** + * Properties of a Target. + * @typedef message.research.scriptoptimizer.OptimizeScript.Target$Properties + * @type {Object} + * @property {number} [id] Target id. + * @property {number} [position] Target position. + * @property {number} [gain] Target gain. + */ + + /** + * Constructs a new Target. + * @exports message.research.scriptoptimizer.OptimizeScript.Target + * @constructor + * @param {message.research.scriptoptimizer.OptimizeScript.Target$Properties=} [properties] Properties to set + */ + function Target(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Target id. + * @type {number} + */ + Target.prototype.id = 0; + + /** + * Target position. + * @type {number} + */ + Target.prototype.position = 0; + + /** + * Target gain. + * @type {number} + */ + Target.prototype.gain = 0; + + /** + * Creates a new Target instance using the specified properties. + * @param {message.research.scriptoptimizer.OptimizeScript.Target$Properties=} [properties] Properties to set + * @returns {message.research.scriptoptimizer.OptimizeScript.Target} Target instance + */ + Target.create = function create(properties) { + return new Target(properties); + }; + + /** + * Encodes the specified Target message. Does not implicitly {@link message.research.scriptoptimizer.OptimizeScript.Target.verify|verify} messages. + * @param {message.research.scriptoptimizer.OptimizeScript.Target$Properties} message Target message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Target.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.id != null && message.hasOwnProperty("id")) + writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.id); + if (message.position != null && message.hasOwnProperty("position")) + writer.uint32(/* id 2, wireType 5 =*/21).float(message.position); + if (message.gain != null && message.hasOwnProperty("gain")) + writer.uint32(/* id 3, wireType 5 =*/29).float(message.gain); + return writer; + }; + + /** + * Encodes the specified Target message, length delimited. Does not implicitly {@link message.research.scriptoptimizer.OptimizeScript.Target.verify|verify} messages. + * @param {message.research.scriptoptimizer.OptimizeScript.Target$Properties} message Target message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Target.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a Target message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.research.scriptoptimizer.OptimizeScript.Target} Target + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Target.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.research.scriptoptimizer.OptimizeScript.Target(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.id = reader.uint32(); + break; + case 2: + message.position = reader.float(); + break; + case 3: + message.gain = reader.float(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a Target message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.research.scriptoptimizer.OptimizeScript.Target} Target + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Target.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a Target message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + Target.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.id != null && message.hasOwnProperty("id")) + if (!$util.isInteger(message.id)) + return "id: integer expected"; + if (message.position != null && message.hasOwnProperty("position")) + if (typeof message.position !== "number") + return "position: number expected"; + if (message.gain != null && message.hasOwnProperty("gain")) + if (typeof message.gain !== "number") + return "gain: number expected"; + return null; + }; + + /** + * Creates a Target message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.research.scriptoptimizer.OptimizeScript.Target} Target + */ + Target.fromObject = function fromObject(object) { + if (object instanceof $root.message.research.scriptoptimizer.OptimizeScript.Target) + return object; + var message = new $root.message.research.scriptoptimizer.OptimizeScript.Target(); + if (object.id != null) + message.id = object.id >>> 0; + if (object.position != null) + message.position = Number(object.position); + if (object.gain != null) + message.gain = Number(object.gain); + return message; + }; + + /** + * Creates a Target message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.research.scriptoptimizer.OptimizeScript.Target.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.research.scriptoptimizer.OptimizeScript.Target} Target + */ + Target.from = Target.fromObject; + + /** + * Creates a plain object from a Target message. Also converts values to other types if specified. + * @param {message.research.scriptoptimizer.OptimizeScript.Target} message Target + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Target.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.id = 0; + object.position = 0; + object.gain = 0; + } + if (message.id != null && message.hasOwnProperty("id")) + object.id = message.id; + if (message.position != null && message.hasOwnProperty("position")) + object.position = message.position; + if (message.gain != null && message.hasOwnProperty("gain")) + object.gain = message.gain; + return object; + }; + + /** + * Creates a plain object from this Target message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Target.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this Target to JSON. + * @returns {Object.} JSON object + */ + Target.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return Target; + })(); + + OptimizeScript.Frame = (function() { + + /** + * Properties of a Frame. + * @typedef message.research.scriptoptimizer.OptimizeScript.Frame$Properties + * @type {Object} + * @property {number} [duration] Frame duration. + * @property {Array.} [targets] Frame targets. + */ + + /** + * Constructs a new Frame. + * @exports message.research.scriptoptimizer.OptimizeScript.Frame + * @constructor + * @param {message.research.scriptoptimizer.OptimizeScript.Frame$Properties=} [properties] Properties to set + */ + function Frame(properties) { + this.targets = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Frame duration. + * @type {number} + */ + Frame.prototype.duration = 0; + + /** + * Frame targets. + * @type {Array.} + */ + Frame.prototype.targets = $util.emptyArray; + + /** + * Creates a new Frame instance using the specified properties. + * @param {message.research.scriptoptimizer.OptimizeScript.Frame$Properties=} [properties] Properties to set + * @returns {message.research.scriptoptimizer.OptimizeScript.Frame} Frame instance + */ + Frame.create = function create(properties) { + return new Frame(properties); + }; + + /** + * Encodes the specified Frame message. Does not implicitly {@link message.research.scriptoptimizer.OptimizeScript.Frame.verify|verify} messages. + * @param {message.research.scriptoptimizer.OptimizeScript.Frame$Properties} message Frame message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Frame.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.duration != null && message.hasOwnProperty("duration")) + writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.duration); + if (message.targets != null && message.targets.length) + for (var i = 0; i < message.targets.length; ++i) + $root.message.research.scriptoptimizer.OptimizeScript.Target.encode(message.targets[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified Frame message, length delimited. Does not implicitly {@link message.research.scriptoptimizer.OptimizeScript.Frame.verify|verify} messages. + * @param {message.research.scriptoptimizer.OptimizeScript.Frame$Properties} message Frame message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Frame.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a Frame message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.research.scriptoptimizer.OptimizeScript.Frame} Frame + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Frame.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.research.scriptoptimizer.OptimizeScript.Frame(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.duration = reader.uint32(); + break; + case 2: + if (!(message.targets && message.targets.length)) + message.targets = []; + message.targets.push($root.message.research.scriptoptimizer.OptimizeScript.Target.decode(reader, reader.uint32())); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a Frame message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.research.scriptoptimizer.OptimizeScript.Frame} Frame + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Frame.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a Frame message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + Frame.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.duration != null && message.hasOwnProperty("duration")) + if (!$util.isInteger(message.duration)) + return "duration: integer expected"; + if (message.targets != null && message.hasOwnProperty("targets")) { + if (!Array.isArray(message.targets)) + return "targets: array expected"; + for (var i = 0; i < message.targets.length; ++i) { + var error = $root.message.research.scriptoptimizer.OptimizeScript.Target.verify(message.targets[i]); + if (error) + return "targets." + error; + } + } + return null; + }; + + /** + * Creates a Frame message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.research.scriptoptimizer.OptimizeScript.Frame} Frame + */ + Frame.fromObject = function fromObject(object) { + if (object instanceof $root.message.research.scriptoptimizer.OptimizeScript.Frame) + return object; + var message = new $root.message.research.scriptoptimizer.OptimizeScript.Frame(); + if (object.duration != null) + message.duration = object.duration >>> 0; + if (object.targets) { + if (!Array.isArray(object.targets)) + throw TypeError(".message.research.scriptoptimizer.OptimizeScript.Frame.targets: array expected"); + message.targets = []; + for (var i = 0; i < object.targets.length; ++i) { + if (typeof object.targets[i] !== "object") + throw TypeError(".message.research.scriptoptimizer.OptimizeScript.Frame.targets: object expected"); + message.targets[i] = $root.message.research.scriptoptimizer.OptimizeScript.Target.fromObject(object.targets[i]); + } + } + return message; + }; + + /** + * Creates a Frame message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.research.scriptoptimizer.OptimizeScript.Frame.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.research.scriptoptimizer.OptimizeScript.Frame} Frame + */ + Frame.from = Frame.fromObject; + + /** + * Creates a plain object from a Frame message. Also converts values to other types if specified. + * @param {message.research.scriptoptimizer.OptimizeScript.Frame} message Frame + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Frame.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.targets = []; + if (options.defaults) + object.duration = 0; + if (message.duration != null && message.hasOwnProperty("duration")) + object.duration = message.duration; + if (message.targets && message.targets.length) { + object.targets = []; + for (var j = 0; j < message.targets.length; ++j) + object.targets[j] = $root.message.research.scriptoptimizer.OptimizeScript.Target.toObject(message.targets[j], options); + } + return object; + }; + + /** + * Creates a plain object from this Frame message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Frame.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this Frame to JSON. + * @returns {Object.} JSON object + */ + Frame.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return Frame; + })(); + + return OptimizeScript; + })(); + + scriptoptimizer.OptimizeScriptResult = (function() { + + /** + * Properties of an OptimizeScriptResult. + * @typedef message.research.scriptoptimizer.OptimizeScriptResult$Properties + * @type {Object} + * @property {number} [iteration] OptimizeScriptResult iteration. + * @property {string} [metadata] OptimizeScriptResult metadata. + * @property {Array.} [sensors] OptimizeScriptResult sensors. + */ + + /** + * Constructs a new OptimizeScriptResult. + * @exports message.research.scriptoptimizer.OptimizeScriptResult + * @constructor + * @param {message.research.scriptoptimizer.OptimizeScriptResult$Properties=} [properties] Properties to set + */ + function OptimizeScriptResult(properties) { + this.sensors = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * OptimizeScriptResult iteration. + * @type {number} + */ + OptimizeScriptResult.prototype.iteration = 0; + + /** + * OptimizeScriptResult metadata. + * @type {string} + */ + OptimizeScriptResult.prototype.metadata = ""; + + /** + * OptimizeScriptResult sensors. + * @type {Array.} + */ + OptimizeScriptResult.prototype.sensors = $util.emptyArray; + + /** + * Creates a new OptimizeScriptResult instance using the specified properties. + * @param {message.research.scriptoptimizer.OptimizeScriptResult$Properties=} [properties] Properties to set + * @returns {message.research.scriptoptimizer.OptimizeScriptResult} OptimizeScriptResult instance + */ + OptimizeScriptResult.create = function create(properties) { + return new OptimizeScriptResult(properties); + }; + + /** + * Encodes the specified OptimizeScriptResult message. Does not implicitly {@link message.research.scriptoptimizer.OptimizeScriptResult.verify|verify} messages. + * @param {message.research.scriptoptimizer.OptimizeScriptResult$Properties} message OptimizeScriptResult message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + OptimizeScriptResult.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.iteration != null && message.hasOwnProperty("iteration")) + writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.iteration); + if (message.metadata != null && message.hasOwnProperty("metadata")) + writer.uint32(/* id 2, wireType 2 =*/18).string(message.metadata); + if (message.sensors != null && message.sensors.length) + for (var i = 0; i < message.sensors.length; ++i) + $root.message.input.Sensors.encode(message.sensors[i], writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified OptimizeScriptResult message, length delimited. Does not implicitly {@link message.research.scriptoptimizer.OptimizeScriptResult.verify|verify} messages. + * @param {message.research.scriptoptimizer.OptimizeScriptResult$Properties} message OptimizeScriptResult message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + OptimizeScriptResult.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes an OptimizeScriptResult message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.research.scriptoptimizer.OptimizeScriptResult} OptimizeScriptResult + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + OptimizeScriptResult.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.research.scriptoptimizer.OptimizeScriptResult(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.iteration = reader.uint32(); + break; + case 2: + message.metadata = reader.string(); + break; + case 3: + if (!(message.sensors && message.sensors.length)) + message.sensors = []; + message.sensors.push($root.message.input.Sensors.decode(reader, reader.uint32())); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes an OptimizeScriptResult message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.research.scriptoptimizer.OptimizeScriptResult} OptimizeScriptResult + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + OptimizeScriptResult.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies an OptimizeScriptResult message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + OptimizeScriptResult.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.iteration != null && message.hasOwnProperty("iteration")) + if (!$util.isInteger(message.iteration)) + return "iteration: integer expected"; + if (message.metadata != null && message.hasOwnProperty("metadata")) + if (!$util.isString(message.metadata)) + return "metadata: string expected"; + if (message.sensors != null && message.hasOwnProperty("sensors")) { + if (!Array.isArray(message.sensors)) + return "sensors: array expected"; + for (var i = 0; i < message.sensors.length; ++i) { + var error = $root.message.input.Sensors.verify(message.sensors[i]); + if (error) + return "sensors." + error; + } + } + return null; + }; + + /** + * Creates an OptimizeScriptResult message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.research.scriptoptimizer.OptimizeScriptResult} OptimizeScriptResult + */ + OptimizeScriptResult.fromObject = function fromObject(object) { + if (object instanceof $root.message.research.scriptoptimizer.OptimizeScriptResult) + return object; + var message = new $root.message.research.scriptoptimizer.OptimizeScriptResult(); + if (object.iteration != null) + message.iteration = object.iteration >>> 0; + if (object.metadata != null) + message.metadata = String(object.metadata); + if (object.sensors) { + if (!Array.isArray(object.sensors)) + throw TypeError(".message.research.scriptoptimizer.OptimizeScriptResult.sensors: array expected"); + message.sensors = []; + for (var i = 0; i < object.sensors.length; ++i) { + if (typeof object.sensors[i] !== "object") + throw TypeError(".message.research.scriptoptimizer.OptimizeScriptResult.sensors: object expected"); + message.sensors[i] = $root.message.input.Sensors.fromObject(object.sensors[i]); + } + } + return message; + }; + + /** + * Creates an OptimizeScriptResult message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.research.scriptoptimizer.OptimizeScriptResult.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.research.scriptoptimizer.OptimizeScriptResult} OptimizeScriptResult + */ + OptimizeScriptResult.from = OptimizeScriptResult.fromObject; + + /** + * Creates a plain object from an OptimizeScriptResult message. Also converts values to other types if specified. + * @param {message.research.scriptoptimizer.OptimizeScriptResult} message OptimizeScriptResult + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + OptimizeScriptResult.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.sensors = []; + if (options.defaults) { + object.iteration = 0; + object.metadata = ""; + } + if (message.iteration != null && message.hasOwnProperty("iteration")) + object.iteration = message.iteration; + if (message.metadata != null && message.hasOwnProperty("metadata")) + object.metadata = message.metadata; + if (message.sensors && message.sensors.length) { + object.sensors = []; + for (var j = 0; j < message.sensors.length; ++j) + object.sensors[j] = $root.message.input.Sensors.toObject(message.sensors[j], options); + } + return object; + }; + + /** + * Creates a plain object from this OptimizeScriptResult message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + OptimizeScriptResult.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this OptimizeScriptResult to JSON. + * @returns {Object.} JSON object + */ + OptimizeScriptResult.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return OptimizeScriptResult; + })(); + + return scriptoptimizer; + })(); + + return research; + })(); + + message.support = (function() { + + /** + * Namespace support. + * @exports message.support + * @namespace + */ + var support = {}; + + support.FieldDescription = (function() { + + /** + * Properties of a FieldDescription. + * @typedef message.support.FieldDescription$Properties + * @type {Object} + * @property {number} [ballRadius] FieldDescription ballRadius. + * @property {number} [goalpostTopHeight] FieldDescription goalpostTopHeight. + * @property {number} [penaltyRobotStart] FieldDescription penaltyRobotStart. + * @property {vec2$Properties} [goalpostOwnL] FieldDescription goalpostOwnL. + * @property {vec2$Properties} [goalpostOwnR] FieldDescription goalpostOwnR. + * @property {vec2$Properties} [goalpostOppL] FieldDescription goalpostOppL. + * @property {vec2$Properties} [goalpostOppR] FieldDescription goalpostOppR. + * @property {message.support.FieldDescription.FieldDimensions$Properties} [dimensions] FieldDescription dimensions. + */ + + /** + * Constructs a new FieldDescription. + * @exports message.support.FieldDescription + * @constructor + * @param {message.support.FieldDescription$Properties=} [properties] Properties to set + */ + function FieldDescription(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * FieldDescription ballRadius. + * @type {number} + */ + FieldDescription.prototype.ballRadius = 0; + + /** + * FieldDescription goalpostTopHeight. + * @type {number} + */ + FieldDescription.prototype.goalpostTopHeight = 0; + + /** + * FieldDescription penaltyRobotStart. + * @type {number} + */ + FieldDescription.prototype.penaltyRobotStart = 0; + + /** + * FieldDescription goalpostOwnL. + * @type {(vec2$Properties|null)} + */ + FieldDescription.prototype.goalpostOwnL = null; + + /** + * FieldDescription goalpostOwnR. + * @type {(vec2$Properties|null)} + */ + FieldDescription.prototype.goalpostOwnR = null; + + /** + * FieldDescription goalpostOppL. + * @type {(vec2$Properties|null)} + */ + FieldDescription.prototype.goalpostOppL = null; + + /** + * FieldDescription goalpostOppR. + * @type {(vec2$Properties|null)} + */ + FieldDescription.prototype.goalpostOppR = null; + + /** + * FieldDescription dimensions. + * @type {(message.support.FieldDescription.FieldDimensions$Properties|null)} + */ + FieldDescription.prototype.dimensions = null; + + /** + * Creates a new FieldDescription instance using the specified properties. + * @param {message.support.FieldDescription$Properties=} [properties] Properties to set + * @returns {message.support.FieldDescription} FieldDescription instance + */ + FieldDescription.create = function create(properties) { + return new FieldDescription(properties); + }; + + /** + * Encodes the specified FieldDescription message. Does not implicitly {@link message.support.FieldDescription.verify|verify} messages. + * @param {message.support.FieldDescription$Properties} message FieldDescription message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + FieldDescription.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.ballRadius != null && message.hasOwnProperty("ballRadius")) + writer.uint32(/* id 1, wireType 1 =*/9).double(message.ballRadius); + if (message.goalpostTopHeight != null && message.hasOwnProperty("goalpostTopHeight")) + writer.uint32(/* id 2, wireType 1 =*/17).double(message.goalpostTopHeight); + if (message.penaltyRobotStart != null && message.hasOwnProperty("penaltyRobotStart")) + writer.uint32(/* id 3, wireType 1 =*/25).double(message.penaltyRobotStart); + if (message.goalpostOwnL != null && message.hasOwnProperty("goalpostOwnL")) + $root.vec2.encode(message.goalpostOwnL, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); + if (message.goalpostOwnR != null && message.hasOwnProperty("goalpostOwnR")) + $root.vec2.encode(message.goalpostOwnR, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); + if (message.goalpostOppL != null && message.hasOwnProperty("goalpostOppL")) + $root.vec2.encode(message.goalpostOppL, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim(); + if (message.goalpostOppR != null && message.hasOwnProperty("goalpostOppR")) + $root.vec2.encode(message.goalpostOppR, writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim(); + if (message.dimensions != null && message.hasOwnProperty("dimensions")) + $root.message.support.FieldDescription.FieldDimensions.encode(message.dimensions, writer.uint32(/* id 8, wireType 2 =*/66).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified FieldDescription message, length delimited. Does not implicitly {@link message.support.FieldDescription.verify|verify} messages. + * @param {message.support.FieldDescription$Properties} message FieldDescription message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + FieldDescription.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a FieldDescription message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.support.FieldDescription} FieldDescription + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + FieldDescription.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.support.FieldDescription(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.ballRadius = reader.double(); + break; + case 2: + message.goalpostTopHeight = reader.double(); + break; + case 3: + message.penaltyRobotStart = reader.double(); + break; + case 4: + message.goalpostOwnL = $root.vec2.decode(reader, reader.uint32()); + break; + case 5: + message.goalpostOwnR = $root.vec2.decode(reader, reader.uint32()); + break; + case 6: + message.goalpostOppL = $root.vec2.decode(reader, reader.uint32()); + break; + case 7: + message.goalpostOppR = $root.vec2.decode(reader, reader.uint32()); + break; + case 8: + message.dimensions = $root.message.support.FieldDescription.FieldDimensions.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a FieldDescription message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.support.FieldDescription} FieldDescription + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + FieldDescription.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a FieldDescription message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + FieldDescription.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.ballRadius != null && message.hasOwnProperty("ballRadius")) + if (typeof message.ballRadius !== "number") + return "ballRadius: number expected"; + if (message.goalpostTopHeight != null && message.hasOwnProperty("goalpostTopHeight")) + if (typeof message.goalpostTopHeight !== "number") + return "goalpostTopHeight: number expected"; + if (message.penaltyRobotStart != null && message.hasOwnProperty("penaltyRobotStart")) + if (typeof message.penaltyRobotStart !== "number") + return "penaltyRobotStart: number expected"; + if (message.goalpostOwnL != null && message.hasOwnProperty("goalpostOwnL")) { + var error = $root.vec2.verify(message.goalpostOwnL); + if (error) + return "goalpostOwnL." + error; + } + if (message.goalpostOwnR != null && message.hasOwnProperty("goalpostOwnR")) { + var error = $root.vec2.verify(message.goalpostOwnR); + if (error) + return "goalpostOwnR." + error; + } + if (message.goalpostOppL != null && message.hasOwnProperty("goalpostOppL")) { + var error = $root.vec2.verify(message.goalpostOppL); + if (error) + return "goalpostOppL." + error; + } + if (message.goalpostOppR != null && message.hasOwnProperty("goalpostOppR")) { + var error = $root.vec2.verify(message.goalpostOppR); + if (error) + return "goalpostOppR." + error; + } + if (message.dimensions != null && message.hasOwnProperty("dimensions")) { + var error = $root.message.support.FieldDescription.FieldDimensions.verify(message.dimensions); + if (error) + return "dimensions." + error; + } + return null; + }; + + /** + * Creates a FieldDescription message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.support.FieldDescription} FieldDescription + */ + FieldDescription.fromObject = function fromObject(object) { + if (object instanceof $root.message.support.FieldDescription) + return object; + var message = new $root.message.support.FieldDescription(); + if (object.ballRadius != null) + message.ballRadius = Number(object.ballRadius); + if (object.goalpostTopHeight != null) + message.goalpostTopHeight = Number(object.goalpostTopHeight); + if (object.penaltyRobotStart != null) + message.penaltyRobotStart = Number(object.penaltyRobotStart); + if (object.goalpostOwnL != null) { + if (typeof object.goalpostOwnL !== "object") + throw TypeError(".message.support.FieldDescription.goalpostOwnL: object expected"); + message.goalpostOwnL = $root.vec2.fromObject(object.goalpostOwnL); + } + if (object.goalpostOwnR != null) { + if (typeof object.goalpostOwnR !== "object") + throw TypeError(".message.support.FieldDescription.goalpostOwnR: object expected"); + message.goalpostOwnR = $root.vec2.fromObject(object.goalpostOwnR); + } + if (object.goalpostOppL != null) { + if (typeof object.goalpostOppL !== "object") + throw TypeError(".message.support.FieldDescription.goalpostOppL: object expected"); + message.goalpostOppL = $root.vec2.fromObject(object.goalpostOppL); + } + if (object.goalpostOppR != null) { + if (typeof object.goalpostOppR !== "object") + throw TypeError(".message.support.FieldDescription.goalpostOppR: object expected"); + message.goalpostOppR = $root.vec2.fromObject(object.goalpostOppR); + } + if (object.dimensions != null) { + if (typeof object.dimensions !== "object") + throw TypeError(".message.support.FieldDescription.dimensions: object expected"); + message.dimensions = $root.message.support.FieldDescription.FieldDimensions.fromObject(object.dimensions); + } + return message; + }; + + /** + * Creates a FieldDescription message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.support.FieldDescription.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.support.FieldDescription} FieldDescription + */ + FieldDescription.from = FieldDescription.fromObject; + + /** + * Creates a plain object from a FieldDescription message. Also converts values to other types if specified. + * @param {message.support.FieldDescription} message FieldDescription + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + FieldDescription.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.ballRadius = 0; + object.goalpostTopHeight = 0; + object.penaltyRobotStart = 0; + object.goalpostOwnL = null; + object.goalpostOwnR = null; + object.goalpostOppL = null; + object.goalpostOppR = null; + object.dimensions = null; + } + if (message.ballRadius != null && message.hasOwnProperty("ballRadius")) + object.ballRadius = message.ballRadius; + if (message.goalpostTopHeight != null && message.hasOwnProperty("goalpostTopHeight")) + object.goalpostTopHeight = message.goalpostTopHeight; + if (message.penaltyRobotStart != null && message.hasOwnProperty("penaltyRobotStart")) + object.penaltyRobotStart = message.penaltyRobotStart; + if (message.goalpostOwnL != null && message.hasOwnProperty("goalpostOwnL")) + object.goalpostOwnL = $root.vec2.toObject(message.goalpostOwnL, options); + if (message.goalpostOwnR != null && message.hasOwnProperty("goalpostOwnR")) + object.goalpostOwnR = $root.vec2.toObject(message.goalpostOwnR, options); + if (message.goalpostOppL != null && message.hasOwnProperty("goalpostOppL")) + object.goalpostOppL = $root.vec2.toObject(message.goalpostOppL, options); + if (message.goalpostOppR != null && message.hasOwnProperty("goalpostOppR")) + object.goalpostOppR = $root.vec2.toObject(message.goalpostOppR, options); + if (message.dimensions != null && message.hasOwnProperty("dimensions")) + object.dimensions = $root.message.support.FieldDescription.FieldDimensions.toObject(message.dimensions, options); + return object; + }; + + /** + * Creates a plain object from this FieldDescription message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + FieldDescription.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this FieldDescription to JSON. + * @returns {Object.} JSON object + */ + FieldDescription.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + FieldDescription.FieldDimensions = (function() { + + /** + * Properties of a FieldDimensions. + * @typedef message.support.FieldDescription.FieldDimensions$Properties + * @type {Object} + * @property {number} [lineWidth] FieldDimensions lineWidth. + * @property {number} [markWidth] FieldDimensions markWidth. + * @property {number} [fieldLength] FieldDimensions fieldLength. + * @property {number} [fieldWidth] FieldDimensions fieldWidth. + * @property {number} [goalDepth] FieldDimensions goalDepth. + * @property {number} [goalWidth] FieldDimensions goalWidth. + * @property {number} [goalAreaLength] FieldDimensions goalAreaLength. + * @property {number} [goalAreaWidth] FieldDimensions goalAreaWidth. + * @property {number} [goalCrossbarHeight] FieldDimensions goalCrossbarHeight. + * @property {number} [goalpostDiameter] FieldDimensions goalpostDiameter. + * @property {number} [goalCrossbarDiameter] FieldDimensions goalCrossbarDiameter. + * @property {number} [goalNetHeight] FieldDimensions goalNetHeight. + * @property {number} [penaltyMarkDistance] FieldDimensions penaltyMarkDistance. + * @property {number} [centerCircleDiameter] FieldDimensions centerCircleDiameter. + * @property {number} [borderStripMinWidth] FieldDimensions borderStripMinWidth. + */ + + /** + * Constructs a new FieldDimensions. + * @exports message.support.FieldDescription.FieldDimensions + * @constructor + * @param {message.support.FieldDescription.FieldDimensions$Properties=} [properties] Properties to set + */ + function FieldDimensions(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * FieldDimensions lineWidth. + * @type {number} + */ + FieldDimensions.prototype.lineWidth = 0; + + /** + * FieldDimensions markWidth. + * @type {number} + */ + FieldDimensions.prototype.markWidth = 0; + + /** + * FieldDimensions fieldLength. + * @type {number} + */ + FieldDimensions.prototype.fieldLength = 0; + + /** + * FieldDimensions fieldWidth. + * @type {number} + */ + FieldDimensions.prototype.fieldWidth = 0; + + /** + * FieldDimensions goalDepth. + * @type {number} + */ + FieldDimensions.prototype.goalDepth = 0; + + /** + * FieldDimensions goalWidth. + * @type {number} + */ + FieldDimensions.prototype.goalWidth = 0; + + /** + * FieldDimensions goalAreaLength. + * @type {number} + */ + FieldDimensions.prototype.goalAreaLength = 0; + + /** + * FieldDimensions goalAreaWidth. + * @type {number} + */ + FieldDimensions.prototype.goalAreaWidth = 0; + + /** + * FieldDimensions goalCrossbarHeight. + * @type {number} + */ + FieldDimensions.prototype.goalCrossbarHeight = 0; + + /** + * FieldDimensions goalpostDiameter. + * @type {number} + */ + FieldDimensions.prototype.goalpostDiameter = 0; + + /** + * FieldDimensions goalCrossbarDiameter. + * @type {number} + */ + FieldDimensions.prototype.goalCrossbarDiameter = 0; + + /** + * FieldDimensions goalNetHeight. + * @type {number} + */ + FieldDimensions.prototype.goalNetHeight = 0; + + /** + * FieldDimensions penaltyMarkDistance. + * @type {number} + */ + FieldDimensions.prototype.penaltyMarkDistance = 0; + + /** + * FieldDimensions centerCircleDiameter. + * @type {number} + */ + FieldDimensions.prototype.centerCircleDiameter = 0; + + /** + * FieldDimensions borderStripMinWidth. + * @type {number} + */ + FieldDimensions.prototype.borderStripMinWidth = 0; + + /** + * Creates a new FieldDimensions instance using the specified properties. + * @param {message.support.FieldDescription.FieldDimensions$Properties=} [properties] Properties to set + * @returns {message.support.FieldDescription.FieldDimensions} FieldDimensions instance + */ + FieldDimensions.create = function create(properties) { + return new FieldDimensions(properties); + }; + + /** + * Encodes the specified FieldDimensions message. Does not implicitly {@link message.support.FieldDescription.FieldDimensions.verify|verify} messages. + * @param {message.support.FieldDescription.FieldDimensions$Properties} message FieldDimensions message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + FieldDimensions.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.lineWidth != null && message.hasOwnProperty("lineWidth")) + writer.uint32(/* id 1, wireType 1 =*/9).double(message.lineWidth); + if (message.markWidth != null && message.hasOwnProperty("markWidth")) + writer.uint32(/* id 2, wireType 1 =*/17).double(message.markWidth); + if (message.fieldLength != null && message.hasOwnProperty("fieldLength")) + writer.uint32(/* id 3, wireType 1 =*/25).double(message.fieldLength); + if (message.fieldWidth != null && message.hasOwnProperty("fieldWidth")) + writer.uint32(/* id 4, wireType 1 =*/33).double(message.fieldWidth); + if (message.goalDepth != null && message.hasOwnProperty("goalDepth")) + writer.uint32(/* id 5, wireType 1 =*/41).double(message.goalDepth); + if (message.goalWidth != null && message.hasOwnProperty("goalWidth")) + writer.uint32(/* id 6, wireType 1 =*/49).double(message.goalWidth); + if (message.goalAreaLength != null && message.hasOwnProperty("goalAreaLength")) + writer.uint32(/* id 7, wireType 1 =*/57).double(message.goalAreaLength); + if (message.goalAreaWidth != null && message.hasOwnProperty("goalAreaWidth")) + writer.uint32(/* id 8, wireType 1 =*/65).double(message.goalAreaWidth); + if (message.goalCrossbarHeight != null && message.hasOwnProperty("goalCrossbarHeight")) + writer.uint32(/* id 9, wireType 1 =*/73).double(message.goalCrossbarHeight); + if (message.goalpostDiameter != null && message.hasOwnProperty("goalpostDiameter")) + writer.uint32(/* id 10, wireType 1 =*/81).double(message.goalpostDiameter); + if (message.goalCrossbarDiameter != null && message.hasOwnProperty("goalCrossbarDiameter")) + writer.uint32(/* id 11, wireType 1 =*/89).double(message.goalCrossbarDiameter); + if (message.goalNetHeight != null && message.hasOwnProperty("goalNetHeight")) + writer.uint32(/* id 12, wireType 1 =*/97).double(message.goalNetHeight); + if (message.penaltyMarkDistance != null && message.hasOwnProperty("penaltyMarkDistance")) + writer.uint32(/* id 13, wireType 1 =*/105).double(message.penaltyMarkDistance); + if (message.centerCircleDiameter != null && message.hasOwnProperty("centerCircleDiameter")) + writer.uint32(/* id 14, wireType 1 =*/113).double(message.centerCircleDiameter); + if (message.borderStripMinWidth != null && message.hasOwnProperty("borderStripMinWidth")) + writer.uint32(/* id 15, wireType 1 =*/121).double(message.borderStripMinWidth); + return writer; + }; + + /** + * Encodes the specified FieldDimensions message, length delimited. Does not implicitly {@link message.support.FieldDescription.FieldDimensions.verify|verify} messages. + * @param {message.support.FieldDescription.FieldDimensions$Properties} message FieldDimensions message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + FieldDimensions.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a FieldDimensions message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.support.FieldDescription.FieldDimensions} FieldDimensions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + FieldDimensions.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.support.FieldDescription.FieldDimensions(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.lineWidth = reader.double(); + break; + case 2: + message.markWidth = reader.double(); + break; + case 3: + message.fieldLength = reader.double(); + break; + case 4: + message.fieldWidth = reader.double(); + break; + case 5: + message.goalDepth = reader.double(); + break; + case 6: + message.goalWidth = reader.double(); + break; + case 7: + message.goalAreaLength = reader.double(); + break; + case 8: + message.goalAreaWidth = reader.double(); + break; + case 9: + message.goalCrossbarHeight = reader.double(); + break; + case 10: + message.goalpostDiameter = reader.double(); + break; + case 11: + message.goalCrossbarDiameter = reader.double(); + break; + case 12: + message.goalNetHeight = reader.double(); + break; + case 13: + message.penaltyMarkDistance = reader.double(); + break; + case 14: + message.centerCircleDiameter = reader.double(); + break; + case 15: + message.borderStripMinWidth = reader.double(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a FieldDimensions message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.support.FieldDescription.FieldDimensions} FieldDimensions + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + FieldDimensions.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a FieldDimensions message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + FieldDimensions.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.lineWidth != null && message.hasOwnProperty("lineWidth")) + if (typeof message.lineWidth !== "number") + return "lineWidth: number expected"; + if (message.markWidth != null && message.hasOwnProperty("markWidth")) + if (typeof message.markWidth !== "number") + return "markWidth: number expected"; + if (message.fieldLength != null && message.hasOwnProperty("fieldLength")) + if (typeof message.fieldLength !== "number") + return "fieldLength: number expected"; + if (message.fieldWidth != null && message.hasOwnProperty("fieldWidth")) + if (typeof message.fieldWidth !== "number") + return "fieldWidth: number expected"; + if (message.goalDepth != null && message.hasOwnProperty("goalDepth")) + if (typeof message.goalDepth !== "number") + return "goalDepth: number expected"; + if (message.goalWidth != null && message.hasOwnProperty("goalWidth")) + if (typeof message.goalWidth !== "number") + return "goalWidth: number expected"; + if (message.goalAreaLength != null && message.hasOwnProperty("goalAreaLength")) + if (typeof message.goalAreaLength !== "number") + return "goalAreaLength: number expected"; + if (message.goalAreaWidth != null && message.hasOwnProperty("goalAreaWidth")) + if (typeof message.goalAreaWidth !== "number") + return "goalAreaWidth: number expected"; + if (message.goalCrossbarHeight != null && message.hasOwnProperty("goalCrossbarHeight")) + if (typeof message.goalCrossbarHeight !== "number") + return "goalCrossbarHeight: number expected"; + if (message.goalpostDiameter != null && message.hasOwnProperty("goalpostDiameter")) + if (typeof message.goalpostDiameter !== "number") + return "goalpostDiameter: number expected"; + if (message.goalCrossbarDiameter != null && message.hasOwnProperty("goalCrossbarDiameter")) + if (typeof message.goalCrossbarDiameter !== "number") + return "goalCrossbarDiameter: number expected"; + if (message.goalNetHeight != null && message.hasOwnProperty("goalNetHeight")) + if (typeof message.goalNetHeight !== "number") + return "goalNetHeight: number expected"; + if (message.penaltyMarkDistance != null && message.hasOwnProperty("penaltyMarkDistance")) + if (typeof message.penaltyMarkDistance !== "number") + return "penaltyMarkDistance: number expected"; + if (message.centerCircleDiameter != null && message.hasOwnProperty("centerCircleDiameter")) + if (typeof message.centerCircleDiameter !== "number") + return "centerCircleDiameter: number expected"; + if (message.borderStripMinWidth != null && message.hasOwnProperty("borderStripMinWidth")) + if (typeof message.borderStripMinWidth !== "number") + return "borderStripMinWidth: number expected"; + return null; + }; + + /** + * Creates a FieldDimensions message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.support.FieldDescription.FieldDimensions} FieldDimensions + */ + FieldDimensions.fromObject = function fromObject(object) { + if (object instanceof $root.message.support.FieldDescription.FieldDimensions) + return object; + var message = new $root.message.support.FieldDescription.FieldDimensions(); + if (object.lineWidth != null) + message.lineWidth = Number(object.lineWidth); + if (object.markWidth != null) + message.markWidth = Number(object.markWidth); + if (object.fieldLength != null) + message.fieldLength = Number(object.fieldLength); + if (object.fieldWidth != null) + message.fieldWidth = Number(object.fieldWidth); + if (object.goalDepth != null) + message.goalDepth = Number(object.goalDepth); + if (object.goalWidth != null) + message.goalWidth = Number(object.goalWidth); + if (object.goalAreaLength != null) + message.goalAreaLength = Number(object.goalAreaLength); + if (object.goalAreaWidth != null) + message.goalAreaWidth = Number(object.goalAreaWidth); + if (object.goalCrossbarHeight != null) + message.goalCrossbarHeight = Number(object.goalCrossbarHeight); + if (object.goalpostDiameter != null) + message.goalpostDiameter = Number(object.goalpostDiameter); + if (object.goalCrossbarDiameter != null) + message.goalCrossbarDiameter = Number(object.goalCrossbarDiameter); + if (object.goalNetHeight != null) + message.goalNetHeight = Number(object.goalNetHeight); + if (object.penaltyMarkDistance != null) + message.penaltyMarkDistance = Number(object.penaltyMarkDistance); + if (object.centerCircleDiameter != null) + message.centerCircleDiameter = Number(object.centerCircleDiameter); + if (object.borderStripMinWidth != null) + message.borderStripMinWidth = Number(object.borderStripMinWidth); + return message; + }; + + /** + * Creates a FieldDimensions message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.support.FieldDescription.FieldDimensions.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.support.FieldDescription.FieldDimensions} FieldDimensions + */ + FieldDimensions.from = FieldDimensions.fromObject; + + /** + * Creates a plain object from a FieldDimensions message. Also converts values to other types if specified. + * @param {message.support.FieldDescription.FieldDimensions} message FieldDimensions + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + FieldDimensions.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.lineWidth = 0; + object.markWidth = 0; + object.fieldLength = 0; + object.fieldWidth = 0; + object.goalDepth = 0; + object.goalWidth = 0; + object.goalAreaLength = 0; + object.goalAreaWidth = 0; + object.goalCrossbarHeight = 0; + object.goalpostDiameter = 0; + object.goalCrossbarDiameter = 0; + object.goalNetHeight = 0; + object.penaltyMarkDistance = 0; + object.centerCircleDiameter = 0; + object.borderStripMinWidth = 0; + } + if (message.lineWidth != null && message.hasOwnProperty("lineWidth")) + object.lineWidth = message.lineWidth; + if (message.markWidth != null && message.hasOwnProperty("markWidth")) + object.markWidth = message.markWidth; + if (message.fieldLength != null && message.hasOwnProperty("fieldLength")) + object.fieldLength = message.fieldLength; + if (message.fieldWidth != null && message.hasOwnProperty("fieldWidth")) + object.fieldWidth = message.fieldWidth; + if (message.goalDepth != null && message.hasOwnProperty("goalDepth")) + object.goalDepth = message.goalDepth; + if (message.goalWidth != null && message.hasOwnProperty("goalWidth")) + object.goalWidth = message.goalWidth; + if (message.goalAreaLength != null && message.hasOwnProperty("goalAreaLength")) + object.goalAreaLength = message.goalAreaLength; + if (message.goalAreaWidth != null && message.hasOwnProperty("goalAreaWidth")) + object.goalAreaWidth = message.goalAreaWidth; + if (message.goalCrossbarHeight != null && message.hasOwnProperty("goalCrossbarHeight")) + object.goalCrossbarHeight = message.goalCrossbarHeight; + if (message.goalpostDiameter != null && message.hasOwnProperty("goalpostDiameter")) + object.goalpostDiameter = message.goalpostDiameter; + if (message.goalCrossbarDiameter != null && message.hasOwnProperty("goalCrossbarDiameter")) + object.goalCrossbarDiameter = message.goalCrossbarDiameter; + if (message.goalNetHeight != null && message.hasOwnProperty("goalNetHeight")) + object.goalNetHeight = message.goalNetHeight; + if (message.penaltyMarkDistance != null && message.hasOwnProperty("penaltyMarkDistance")) + object.penaltyMarkDistance = message.penaltyMarkDistance; + if (message.centerCircleDiameter != null && message.hasOwnProperty("centerCircleDiameter")) + object.centerCircleDiameter = message.centerCircleDiameter; + if (message.borderStripMinWidth != null && message.hasOwnProperty("borderStripMinWidth")) + object.borderStripMinWidth = message.borderStripMinWidth; + return object; + }; + + /** + * Creates a plain object from this FieldDimensions message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + FieldDimensions.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this FieldDimensions to JSON. + * @returns {Object.} JSON object + */ + FieldDimensions.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return FieldDimensions; + })(); + + return FieldDescription; + })(); + + support.GlobalConfig = (function() { + + /** + * Properties of a GlobalConfig. + * @typedef message.support.GlobalConfig$Properties + * @type {Object} + * @property {number} [playerId] GlobalConfig playerId. + * @property {number} [teamId] GlobalConfig teamId. + */ + + /** + * Constructs a new GlobalConfig. + * @exports message.support.GlobalConfig + * @constructor + * @param {message.support.GlobalConfig$Properties=} [properties] Properties to set + */ + function GlobalConfig(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * GlobalConfig playerId. + * @type {number} + */ + GlobalConfig.prototype.playerId = 0; + + /** + * GlobalConfig teamId. + * @type {number} + */ + GlobalConfig.prototype.teamId = 0; + + /** + * Creates a new GlobalConfig instance using the specified properties. + * @param {message.support.GlobalConfig$Properties=} [properties] Properties to set + * @returns {message.support.GlobalConfig} GlobalConfig instance + */ + GlobalConfig.create = function create(properties) { + return new GlobalConfig(properties); + }; + + /** + * Encodes the specified GlobalConfig message. Does not implicitly {@link message.support.GlobalConfig.verify|verify} messages. + * @param {message.support.GlobalConfig$Properties} message GlobalConfig message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + GlobalConfig.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.playerId != null && message.hasOwnProperty("playerId")) + writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.playerId); + if (message.teamId != null && message.hasOwnProperty("teamId")) + writer.uint32(/* id 2, wireType 0 =*/16).uint32(message.teamId); + return writer; + }; + + /** + * Encodes the specified GlobalConfig message, length delimited. Does not implicitly {@link message.support.GlobalConfig.verify|verify} messages. + * @param {message.support.GlobalConfig$Properties} message GlobalConfig message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + GlobalConfig.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a GlobalConfig message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.support.GlobalConfig} GlobalConfig + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + GlobalConfig.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.support.GlobalConfig(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.playerId = reader.uint32(); + break; + case 2: + message.teamId = reader.uint32(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a GlobalConfig message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.support.GlobalConfig} GlobalConfig + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + GlobalConfig.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a GlobalConfig message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + GlobalConfig.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.playerId != null && message.hasOwnProperty("playerId")) + if (!$util.isInteger(message.playerId)) + return "playerId: integer expected"; + if (message.teamId != null && message.hasOwnProperty("teamId")) + if (!$util.isInteger(message.teamId)) + return "teamId: integer expected"; + return null; + }; + + /** + * Creates a GlobalConfig message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.support.GlobalConfig} GlobalConfig + */ + GlobalConfig.fromObject = function fromObject(object) { + if (object instanceof $root.message.support.GlobalConfig) + return object; + var message = new $root.message.support.GlobalConfig(); + if (object.playerId != null) + message.playerId = object.playerId >>> 0; + if (object.teamId != null) + message.teamId = object.teamId >>> 0; + return message; + }; + + /** + * Creates a GlobalConfig message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.support.GlobalConfig.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.support.GlobalConfig} GlobalConfig + */ + GlobalConfig.from = GlobalConfig.fromObject; + + /** + * Creates a plain object from a GlobalConfig message. Also converts values to other types if specified. + * @param {message.support.GlobalConfig} message GlobalConfig + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + GlobalConfig.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.playerId = 0; + object.teamId = 0; + } + if (message.playerId != null && message.hasOwnProperty("playerId")) + object.playerId = message.playerId; + if (message.teamId != null && message.hasOwnProperty("teamId")) + object.teamId = message.teamId; + return object; + }; + + /** + * Creates a plain object from this GlobalConfig message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + GlobalConfig.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this GlobalConfig to JSON. + * @returns {Object.} JSON object + */ + GlobalConfig.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return GlobalConfig; + })(); + + support.SaveConfiguration = (function() { + + /** + * Properties of a SaveConfiguration. + * @typedef message.support.SaveConfiguration$Properties + * @type {Object} + * @property {string} [path] SaveConfiguration path. + * @property {string} [config] SaveConfiguration config. + */ + + /** + * Constructs a new SaveConfiguration. + * @exports message.support.SaveConfiguration + * @constructor + * @param {message.support.SaveConfiguration$Properties=} [properties] Properties to set + */ + function SaveConfiguration(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * SaveConfiguration path. + * @type {string} + */ + SaveConfiguration.prototype.path = ""; + + /** + * SaveConfiguration config. + * @type {string} + */ + SaveConfiguration.prototype.config = ""; + + /** + * Creates a new SaveConfiguration instance using the specified properties. + * @param {message.support.SaveConfiguration$Properties=} [properties] Properties to set + * @returns {message.support.SaveConfiguration} SaveConfiguration instance + */ + SaveConfiguration.create = function create(properties) { + return new SaveConfiguration(properties); + }; + + /** + * Encodes the specified SaveConfiguration message. Does not implicitly {@link message.support.SaveConfiguration.verify|verify} messages. + * @param {message.support.SaveConfiguration$Properties} message SaveConfiguration message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + SaveConfiguration.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.path != null && message.hasOwnProperty("path")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.path); + if (message.config != null && message.hasOwnProperty("config")) + writer.uint32(/* id 2, wireType 2 =*/18).string(message.config); + return writer; + }; + + /** + * Encodes the specified SaveConfiguration message, length delimited. Does not implicitly {@link message.support.SaveConfiguration.verify|verify} messages. + * @param {message.support.SaveConfiguration$Properties} message SaveConfiguration message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + SaveConfiguration.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a SaveConfiguration message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.support.SaveConfiguration} SaveConfiguration + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + SaveConfiguration.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.support.SaveConfiguration(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.path = reader.string(); + break; + case 2: + message.config = reader.string(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a SaveConfiguration message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.support.SaveConfiguration} SaveConfiguration + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + SaveConfiguration.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a SaveConfiguration message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + SaveConfiguration.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.path != null && message.hasOwnProperty("path")) + if (!$util.isString(message.path)) + return "path: string expected"; + if (message.config != null && message.hasOwnProperty("config")) + if (!$util.isString(message.config)) + return "config: string expected"; + return null; + }; + + /** + * Creates a SaveConfiguration message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.support.SaveConfiguration} SaveConfiguration + */ + SaveConfiguration.fromObject = function fromObject(object) { + if (object instanceof $root.message.support.SaveConfiguration) + return object; + var message = new $root.message.support.SaveConfiguration(); + if (object.path != null) + message.path = String(object.path); + if (object.config != null) + message.config = String(object.config); + return message; + }; + + /** + * Creates a SaveConfiguration message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.support.SaveConfiguration.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.support.SaveConfiguration} SaveConfiguration + */ + SaveConfiguration.from = SaveConfiguration.fromObject; + + /** + * Creates a plain object from a SaveConfiguration message. Also converts values to other types if specified. + * @param {message.support.SaveConfiguration} message SaveConfiguration + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + SaveConfiguration.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.path = ""; + object.config = ""; + } + if (message.path != null && message.hasOwnProperty("path")) + object.path = message.path; + if (message.config != null && message.hasOwnProperty("config")) + object.config = message.config; + return object; + }; + + /** + * Creates a plain object from this SaveConfiguration message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + SaveConfiguration.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this SaveConfiguration to JSON. + * @returns {Object.} JSON object + */ + SaveConfiguration.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return SaveConfiguration; + })(); + + support.ServoHealthTestData = (function() { + + /** + * Properties of a ServoHealthTestData. + * @typedef message.support.ServoHealthTestData$Properties + * @type {Object} + * @property {message.support.ServoHealthTestData.State} [state] ServoHealthTestData state. + * @property {message.platform.darwin.DarwinSensors$Properties} [sensors] ServoHealthTestData sensors. + */ + + /** + * Constructs a new ServoHealthTestData. + * @exports message.support.ServoHealthTestData + * @constructor + * @param {message.support.ServoHealthTestData$Properties=} [properties] Properties to set + */ + function ServoHealthTestData(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * ServoHealthTestData state. + * @type {message.support.ServoHealthTestData.State} + */ + ServoHealthTestData.prototype.state = 0; + + /** + * ServoHealthTestData sensors. + * @type {(message.platform.darwin.DarwinSensors$Properties|null)} + */ + ServoHealthTestData.prototype.sensors = null; + + /** + * Creates a new ServoHealthTestData instance using the specified properties. + * @param {message.support.ServoHealthTestData$Properties=} [properties] Properties to set + * @returns {message.support.ServoHealthTestData} ServoHealthTestData instance + */ + ServoHealthTestData.create = function create(properties) { + return new ServoHealthTestData(properties); + }; + + /** + * Encodes the specified ServoHealthTestData message. Does not implicitly {@link message.support.ServoHealthTestData.verify|verify} messages. + * @param {message.support.ServoHealthTestData$Properties} message ServoHealthTestData message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ServoHealthTestData.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.state != null && message.hasOwnProperty("state")) + writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.state); + if (message.sensors != null && message.hasOwnProperty("sensors")) + $root.message.platform.darwin.DarwinSensors.encode(message.sensors, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified ServoHealthTestData message, length delimited. Does not implicitly {@link message.support.ServoHealthTestData.verify|verify} messages. + * @param {message.support.ServoHealthTestData$Properties} message ServoHealthTestData message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ServoHealthTestData.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a ServoHealthTestData message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.support.ServoHealthTestData} ServoHealthTestData + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ServoHealthTestData.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.support.ServoHealthTestData(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.state = reader.uint32(); + break; + case 2: + message.sensors = $root.message.platform.darwin.DarwinSensors.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a ServoHealthTestData message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.support.ServoHealthTestData} ServoHealthTestData + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ServoHealthTestData.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a ServoHealthTestData message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + ServoHealthTestData.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.state != null && message.hasOwnProperty("state")) + switch (message.state) { + default: + return "state: enum value expected"; + case 0: + case 1: + case 2: + case 3: + case 4: + case 5: + case 6: + case 7: + case 8: + case 9: + case 10: + case 11: + case 12: + case 13: + case 14: + case 15: + case 16: + case 17: + case 18: + case 19: + case 20: + case 21: + case 22: + case 23: + case 24: + break; + } + if (message.sensors != null && message.hasOwnProperty("sensors")) { + var error = $root.message.platform.darwin.DarwinSensors.verify(message.sensors); + if (error) + return "sensors." + error; + } + return null; + }; + + /** + * Creates a ServoHealthTestData message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.support.ServoHealthTestData} ServoHealthTestData + */ + ServoHealthTestData.fromObject = function fromObject(object) { + if (object instanceof $root.message.support.ServoHealthTestData) + return object; + var message = new $root.message.support.ServoHealthTestData(); + switch (object.state) { + case "INITIALISE": + case 0: + message.state = 0; + break; + case "MOVE_1": + case 1: + message.state = 1; + break; + case "ELBOW": + case 2: + message.state = 2; + break; + case "MOVE_2": + case 3: + message.state = 3; + break; + case "SHOULDER_PITCH": + case 4: + message.state = 4; + break; + case "SHOULDER_MOVE_1": + case 5: + message.state = 5; + break; + case "SHOULDER_ROLL": + case 6: + message.state = 6; + break; + case "MOVE_3": + case 7: + message.state = 7; + break; + case "HEAD_PITCH": + case 8: + message.state = 8; + break; + case "MOVE_4": + case 9: + message.state = 9; + break; + case "HEAD_YAW": + case 10: + message.state = 10; + break; + case "LAYDOWN": + case 11: + message.state = 11; + break; + case "HIP_ROLL": + case 12: + message.state = 12; + break; + case "HIP_MOVE_1": + case 13: + message.state = 13; + break; + case "HIP_YAW": + case 14: + message.state = 14; + break; + case "HIP_MOVE_2": + case 15: + message.state = 15; + break; + case "ANKLE_PITCH": + case 16: + message.state = 16; + break; + case "ANKLE_MOVE": + case 17: + message.state = 17; + break; + case "ANKLE_ROLL": + case 18: + message.state = 18; + break; + case "KNEE_MOVE": + case 19: + message.state = 19; + break; + case "KNEE": + case 20: + message.state = 20; + break; + case "KNEE_MOVE_2": + case 21: + message.state = 21; + break; + case "HIP_PITCH": + case 22: + message.state = 22; + break; + case "LAYDOWN_2": + case 23: + message.state = 23; + break; + case "FINISHED": + case 24: + message.state = 24; + break; + } + if (object.sensors != null) { + if (typeof object.sensors !== "object") + throw TypeError(".message.support.ServoHealthTestData.sensors: object expected"); + message.sensors = $root.message.platform.darwin.DarwinSensors.fromObject(object.sensors); + } + return message; + }; + + /** + * Creates a ServoHealthTestData message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.support.ServoHealthTestData.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.support.ServoHealthTestData} ServoHealthTestData + */ + ServoHealthTestData.from = ServoHealthTestData.fromObject; + + /** + * Creates a plain object from a ServoHealthTestData message. Also converts values to other types if specified. + * @param {message.support.ServoHealthTestData} message ServoHealthTestData + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + ServoHealthTestData.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.state = options.enums === String ? "INITIALISE" : 0; + object.sensors = null; + } + if (message.state != null && message.hasOwnProperty("state")) + object.state = options.enums === String ? $root.message.support.ServoHealthTestData.State[message.state] : message.state; + if (message.sensors != null && message.hasOwnProperty("sensors")) + object.sensors = $root.message.platform.darwin.DarwinSensors.toObject(message.sensors, options); + return object; + }; + + /** + * Creates a plain object from this ServoHealthTestData message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + ServoHealthTestData.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this ServoHealthTestData to JSON. + * @returns {Object.} JSON object + */ + ServoHealthTestData.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * State enum. + * @name State + * @memberof message.support.ServoHealthTestData + * @enum {number} + * @property {number} INITIALISE=0 INITIALISE value + * @property {number} MOVE_1=1 MOVE_1 value + * @property {number} ELBOW=2 ELBOW value + * @property {number} MOVE_2=3 MOVE_2 value + * @property {number} SHOULDER_PITCH=4 SHOULDER_PITCH value + * @property {number} SHOULDER_MOVE_1=5 SHOULDER_MOVE_1 value + * @property {number} SHOULDER_ROLL=6 SHOULDER_ROLL value + * @property {number} MOVE_3=7 MOVE_3 value + * @property {number} HEAD_PITCH=8 HEAD_PITCH value + * @property {number} MOVE_4=9 MOVE_4 value + * @property {number} HEAD_YAW=10 HEAD_YAW value + * @property {number} LAYDOWN=11 LAYDOWN value + * @property {number} HIP_ROLL=12 HIP_ROLL value + * @property {number} HIP_MOVE_1=13 HIP_MOVE_1 value + * @property {number} HIP_YAW=14 HIP_YAW value + * @property {number} HIP_MOVE_2=15 HIP_MOVE_2 value + * @property {number} ANKLE_PITCH=16 ANKLE_PITCH value + * @property {number} ANKLE_MOVE=17 ANKLE_MOVE value + * @property {number} ANKLE_ROLL=18 ANKLE_ROLL value + * @property {number} KNEE_MOVE=19 KNEE_MOVE value + * @property {number} KNEE=20 KNEE value + * @property {number} KNEE_MOVE_2=21 KNEE_MOVE_2 value + * @property {number} HIP_PITCH=22 HIP_PITCH value + * @property {number} LAYDOWN_2=23 LAYDOWN_2 value + * @property {number} FINISHED=24 FINISHED value + */ + ServoHealthTestData.State = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "INITIALISE"] = 0; + values[valuesById[1] = "MOVE_1"] = 1; + values[valuesById[2] = "ELBOW"] = 2; + values[valuesById[3] = "MOVE_2"] = 3; + values[valuesById[4] = "SHOULDER_PITCH"] = 4; + values[valuesById[5] = "SHOULDER_MOVE_1"] = 5; + values[valuesById[6] = "SHOULDER_ROLL"] = 6; + values[valuesById[7] = "MOVE_3"] = 7; + values[valuesById[8] = "HEAD_PITCH"] = 8; + values[valuesById[9] = "MOVE_4"] = 9; + values[valuesById[10] = "HEAD_YAW"] = 10; + values[valuesById[11] = "LAYDOWN"] = 11; + values[valuesById[12] = "HIP_ROLL"] = 12; + values[valuesById[13] = "HIP_MOVE_1"] = 13; + values[valuesById[14] = "HIP_YAW"] = 14; + values[valuesById[15] = "HIP_MOVE_2"] = 15; + values[valuesById[16] = "ANKLE_PITCH"] = 16; + values[valuesById[17] = "ANKLE_MOVE"] = 17; + values[valuesById[18] = "ANKLE_ROLL"] = 18; + values[valuesById[19] = "KNEE_MOVE"] = 19; + values[valuesById[20] = "KNEE"] = 20; + values[valuesById[21] = "KNEE_MOVE_2"] = 21; + values[valuesById[22] = "HIP_PITCH"] = 22; + values[valuesById[23] = "LAYDOWN_2"] = 23; + values[valuesById[24] = "FINISHED"] = 24; + return values; + })(); + + return ServoHealthTestData; + })(); + + support.nubugger = (function() { + + /** + * Namespace nubugger. + * @exports message.support.nubugger + * @namespace + */ + var nubugger = {}; + + nubugger.Command = (function() { + + /** + * Properties of a Command. + * @typedef message.support.nubugger.Command$Properties + * @type {Object} + * @property {string} [command] Command command. + */ + + /** + * Constructs a new Command. + * @exports message.support.nubugger.Command + * @constructor + * @param {message.support.nubugger.Command$Properties=} [properties] Properties to set + */ + function Command(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Command command. + * @type {string} + */ + Command.prototype.command = ""; + + /** + * Creates a new Command instance using the specified properties. + * @param {message.support.nubugger.Command$Properties=} [properties] Properties to set + * @returns {message.support.nubugger.Command} Command instance + */ + Command.create = function create(properties) { + return new Command(properties); + }; + + /** + * Encodes the specified Command message. Does not implicitly {@link message.support.nubugger.Command.verify|verify} messages. + * @param {message.support.nubugger.Command$Properties} message Command message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Command.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.command != null && message.hasOwnProperty("command")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.command); + return writer; + }; + + /** + * Encodes the specified Command message, length delimited. Does not implicitly {@link message.support.nubugger.Command.verify|verify} messages. + * @param {message.support.nubugger.Command$Properties} message Command message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Command.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a Command message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.support.nubugger.Command} Command + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Command.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.support.nubugger.Command(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.command = reader.string(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a Command message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.support.nubugger.Command} Command + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Command.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a Command message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + Command.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.command != null && message.hasOwnProperty("command")) + if (!$util.isString(message.command)) + return "command: string expected"; + return null; + }; + + /** + * Creates a Command message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.support.nubugger.Command} Command + */ + Command.fromObject = function fromObject(object) { + if (object instanceof $root.message.support.nubugger.Command) + return object; + var message = new $root.message.support.nubugger.Command(); + if (object.command != null) + message.command = String(object.command); + return message; + }; + + /** + * Creates a Command message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.support.nubugger.Command.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.support.nubugger.Command} Command + */ + Command.from = Command.fromObject; + + /** + * Creates a plain object from a Command message. Also converts values to other types if specified. + * @param {message.support.nubugger.Command} message Command + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Command.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) + object.command = ""; + if (message.command != null && message.hasOwnProperty("command")) + object.command = message.command; + return object; + }; + + /** + * Creates a plain object from this Command message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Command.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this Command to JSON. + * @returns {Object.} JSON object + */ + Command.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return Command; + })(); + + nubugger.DataPoint = (function() { + + /** + * Properties of a DataPoint. + * @typedef message.support.nubugger.DataPoint$Properties + * @type {Object} + * @property {string} [label] DataPoint label. + * @property {Array.} [value] DataPoint value. + * @property {message.support.nubugger.DataPoint.Type} [type] DataPoint type. + */ + + /** + * Constructs a new DataPoint. + * @exports message.support.nubugger.DataPoint + * @constructor + * @param {message.support.nubugger.DataPoint$Properties=} [properties] Properties to set + */ + function DataPoint(properties) { + this.value = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * DataPoint label. + * @type {string} + */ + DataPoint.prototype.label = ""; + + /** + * DataPoint value. + * @type {Array.} + */ + DataPoint.prototype.value = $util.emptyArray; + + /** + * DataPoint type. + * @type {message.support.nubugger.DataPoint.Type} + */ + DataPoint.prototype.type = 0; + + /** + * Creates a new DataPoint instance using the specified properties. + * @param {message.support.nubugger.DataPoint$Properties=} [properties] Properties to set + * @returns {message.support.nubugger.DataPoint} DataPoint instance + */ + DataPoint.create = function create(properties) { + return new DataPoint(properties); + }; + + /** + * Encodes the specified DataPoint message. Does not implicitly {@link message.support.nubugger.DataPoint.verify|verify} messages. + * @param {message.support.nubugger.DataPoint$Properties} message DataPoint message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + DataPoint.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.label != null && message.hasOwnProperty("label")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.label); + if (message.value != null && message.value.length) { + writer.uint32(/* id 2, wireType 2 =*/18).fork(); + for (var i = 0; i < message.value.length; ++i) + writer.float(message.value[i]); + writer.ldelim(); + } + if (message.type != null && message.hasOwnProperty("type")) + writer.uint32(/* id 3, wireType 0 =*/24).uint32(message.type); + return writer; + }; + + /** + * Encodes the specified DataPoint message, length delimited. Does not implicitly {@link message.support.nubugger.DataPoint.verify|verify} messages. + * @param {message.support.nubugger.DataPoint$Properties} message DataPoint message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + DataPoint.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a DataPoint message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.support.nubugger.DataPoint} DataPoint + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + DataPoint.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.support.nubugger.DataPoint(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.label = reader.string(); + break; + case 2: + if (!(message.value && message.value.length)) + message.value = []; + if ((tag & 7) === 2) { + var end2 = reader.uint32() + reader.pos; + while (reader.pos < end2) + message.value.push(reader.float()); + } else + message.value.push(reader.float()); + break; + case 3: + message.type = reader.uint32(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a DataPoint message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.support.nubugger.DataPoint} DataPoint + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + DataPoint.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a DataPoint message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + DataPoint.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.label != null && message.hasOwnProperty("label")) + if (!$util.isString(message.label)) + return "label: string expected"; + if (message.value != null && message.hasOwnProperty("value")) { + if (!Array.isArray(message.value)) + return "value: array expected"; + for (var i = 0; i < message.value.length; ++i) + if (typeof message.value[i] !== "number") + return "value: number[] expected"; + } + if (message.type != null && message.hasOwnProperty("type")) + switch (message.type) { + default: + return "type: enum value expected"; + case 0: + case 2: + break; + } + return null; + }; + + /** + * Creates a DataPoint message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.support.nubugger.DataPoint} DataPoint + */ + DataPoint.fromObject = function fromObject(object) { + if (object instanceof $root.message.support.nubugger.DataPoint) + return object; + var message = new $root.message.support.nubugger.DataPoint(); + if (object.label != null) + message.label = String(object.label); + if (object.value) { + if (!Array.isArray(object.value)) + throw TypeError(".message.support.nubugger.DataPoint.value: array expected"); + message.value = []; + for (var i = 0; i < object.value.length; ++i) + message.value[i] = Number(object.value[i]); + } + switch (object.type) { + case "FLOAT_LIST": + case 0: + message.type = 0; + break; + case "ROTATION_3D": + case 2: + message.type = 2; + break; + } + return message; + }; + + /** + * Creates a DataPoint message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.support.nubugger.DataPoint.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.support.nubugger.DataPoint} DataPoint + */ + DataPoint.from = DataPoint.fromObject; + + /** + * Creates a plain object from a DataPoint message. Also converts values to other types if specified. + * @param {message.support.nubugger.DataPoint} message DataPoint + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + DataPoint.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.value = []; + if (options.defaults) { + object.label = ""; + object.type = options.enums === String ? "FLOAT_LIST" : 0; + } + if (message.label != null && message.hasOwnProperty("label")) + object.label = message.label; + if (message.value && message.value.length) { + object.value = []; + for (var j = 0; j < message.value.length; ++j) + object.value[j] = message.value[j]; + } + if (message.type != null && message.hasOwnProperty("type")) + object.type = options.enums === String ? $root.message.support.nubugger.DataPoint.Type[message.type] : message.type; + return object; + }; + + /** + * Creates a plain object from this DataPoint message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + DataPoint.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this DataPoint to JSON. + * @returns {Object.} JSON object + */ + DataPoint.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * The represents the type of data + * NOTE: This should not describe how to display the data, as that should be done client-side. + * @name Type + * @memberof message.support.nubugger.DataPoint + * @enum {number} + * @property {number} FLOAT_LIST=0 FLOAT_LIST value + * @property {number} ROTATION_3D=2 ROTATION_3D value + */ + DataPoint.Type = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "FLOAT_LIST"] = 0; + values[valuesById[2] = "ROTATION_3D"] = 2; + return values; + })(); + + return DataPoint; + })(); + + nubugger.DrawObject = (function() { + + /** + * Properties of a DrawObject. + * @typedef message.support.nubugger.DrawObject$Properties + * @type {Object} + * @property {message.support.nubugger.DrawObject.Shape} [shape] DrawObject shape. + * @property {string} [name] DrawObject name. + * @property {vec3$Properties} [position] DrawObject position. + * @property {vec3$Properties} [direction] DrawObject direction. + * @property {vec3$Properties} [target] DrawObject target. + * @property {number} [width] DrawObject width. + * @property {number} [height] DrawObject height. + * @property {vec3$Properties} [rotation] DrawObject rotation. + * @property {vec3$Properties} [colour] DrawObject colour. + * @property {number} [radius] DrawObject radius. + * @property {number} [topRadius] DrawObject topRadius. + * @property {number} [bottomRadius] DrawObject bottomRadius. + * @property {Array.} [vertices] DrawObject vertices. + * @property {Array.} [path] DrawObject path. + * @property {number} [faces] DrawObject faces. + * @property {number} [lineWidth] DrawObject lineWidth. + * @property {number} [length] DrawObject length. + * @property {number} [depth] DrawObject depth. + * @property {boolean} [fill] DrawObject fill. + * @property {number} [timeout] DrawObject timeout. + */ + + /** + * Constructs a new DrawObject. + * @exports message.support.nubugger.DrawObject + * @constructor + * @param {message.support.nubugger.DrawObject$Properties=} [properties] Properties to set + */ + function DrawObject(properties) { + this.vertices = []; + this.path = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * DrawObject shape. + * @type {message.support.nubugger.DrawObject.Shape} + */ + DrawObject.prototype.shape = 0; + + /** + * DrawObject name. + * @type {string} + */ + DrawObject.prototype.name = ""; + + /** + * DrawObject position. + * @type {(vec3$Properties|null)} + */ + DrawObject.prototype.position = null; + + /** + * DrawObject direction. + * @type {(vec3$Properties|null)} + */ + DrawObject.prototype.direction = null; + + /** + * DrawObject target. + * @type {(vec3$Properties|null)} + */ + DrawObject.prototype.target = null; + + /** + * DrawObject width. + * @type {number} + */ + DrawObject.prototype.width = 0; + + /** + * DrawObject height. + * @type {number} + */ + DrawObject.prototype.height = 0; + + /** + * DrawObject rotation. + * @type {(vec3$Properties|null)} + */ + DrawObject.prototype.rotation = null; + + /** + * DrawObject colour. + * @type {(vec3$Properties|null)} + */ + DrawObject.prototype.colour = null; + + /** + * DrawObject radius. + * @type {number} + */ + DrawObject.prototype.radius = 0; + + /** + * DrawObject topRadius. + * @type {number} + */ + DrawObject.prototype.topRadius = 0; + + /** + * DrawObject bottomRadius. + * @type {number} + */ + DrawObject.prototype.bottomRadius = 0; + + /** + * DrawObject vertices. + * @type {Array.} + */ + DrawObject.prototype.vertices = $util.emptyArray; + + /** + * DrawObject path. + * @type {Array.} + */ + DrawObject.prototype.path = $util.emptyArray; + + /** + * DrawObject faces. + * @type {number} + */ + DrawObject.prototype.faces = 0; + + /** + * DrawObject lineWidth. + * @type {number} + */ + DrawObject.prototype.lineWidth = 0; + + /** + * DrawObject length. + * @type {number} + */ + DrawObject.prototype.length = 0; + + /** + * DrawObject depth. + * @type {number} + */ + DrawObject.prototype.depth = 0; + + /** + * DrawObject fill. + * @type {boolean} + */ + DrawObject.prototype.fill = false; + + /** + * DrawObject timeout. + * @type {number} + */ + DrawObject.prototype.timeout = 0; + + /** + * Creates a new DrawObject instance using the specified properties. + * @param {message.support.nubugger.DrawObject$Properties=} [properties] Properties to set + * @returns {message.support.nubugger.DrawObject} DrawObject instance + */ + DrawObject.create = function create(properties) { + return new DrawObject(properties); + }; + + /** + * Encodes the specified DrawObject message. Does not implicitly {@link message.support.nubugger.DrawObject.verify|verify} messages. + * @param {message.support.nubugger.DrawObject$Properties} message DrawObject message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + DrawObject.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.shape != null && message.hasOwnProperty("shape")) + writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.shape); + if (message.name != null && message.hasOwnProperty("name")) + writer.uint32(/* id 2, wireType 2 =*/18).string(message.name); + if (message.position != null && message.hasOwnProperty("position")) + $root.vec3.encode(message.position, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + if (message.direction != null && message.hasOwnProperty("direction")) + $root.vec3.encode(message.direction, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); + if (message.target != null && message.hasOwnProperty("target")) + $root.vec3.encode(message.target, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); + if (message.width != null && message.hasOwnProperty("width")) + writer.uint32(/* id 6, wireType 5 =*/53).float(message.width); + if (message.height != null && message.hasOwnProperty("height")) + writer.uint32(/* id 7, wireType 5 =*/61).float(message.height); + if (message.rotation != null && message.hasOwnProperty("rotation")) + $root.vec3.encode(message.rotation, writer.uint32(/* id 8, wireType 2 =*/66).fork()).ldelim(); + if (message.colour != null && message.hasOwnProperty("colour")) + $root.vec3.encode(message.colour, writer.uint32(/* id 9, wireType 2 =*/74).fork()).ldelim(); + if (message.radius != null && message.hasOwnProperty("radius")) + writer.uint32(/* id 10, wireType 5 =*/85).float(message.radius); + if (message.topRadius != null && message.hasOwnProperty("topRadius")) + writer.uint32(/* id 11, wireType 5 =*/93).float(message.topRadius); + if (message.bottomRadius != null && message.hasOwnProperty("bottomRadius")) + writer.uint32(/* id 12, wireType 5 =*/101).float(message.bottomRadius); + if (message.vertices != null && message.vertices.length) + for (var i = 0; i < message.vertices.length; ++i) + $root.vec3.encode(message.vertices[i], writer.uint32(/* id 13, wireType 2 =*/106).fork()).ldelim(); + if (message.path != null && message.path.length) + for (var i = 0; i < message.path.length; ++i) + $root.message.support.nubugger.DrawObject.Path.encode(message.path[i], writer.uint32(/* id 14, wireType 2 =*/114).fork()).ldelim(); + if (message.faces != null && message.hasOwnProperty("faces")) + writer.uint32(/* id 15, wireType 0 =*/120).uint32(message.faces); + if (message.lineWidth != null && message.hasOwnProperty("lineWidth")) + writer.uint32(/* id 16, wireType 5 =*/133).float(message.lineWidth); + if (message.length != null && message.hasOwnProperty("length")) + writer.uint32(/* id 17, wireType 5 =*/141).float(message.length); + if (message.depth != null && message.hasOwnProperty("depth")) + writer.uint32(/* id 18, wireType 5 =*/149).float(message.depth); + if (message.fill != null && message.hasOwnProperty("fill")) + writer.uint32(/* id 19, wireType 0 =*/152).bool(message.fill); + if (message.timeout != null && message.hasOwnProperty("timeout")) + writer.uint32(/* id 20, wireType 5 =*/165).float(message.timeout); + return writer; + }; + + /** + * Encodes the specified DrawObject message, length delimited. Does not implicitly {@link message.support.nubugger.DrawObject.verify|verify} messages. + * @param {message.support.nubugger.DrawObject$Properties} message DrawObject message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + DrawObject.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a DrawObject message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.support.nubugger.DrawObject} DrawObject + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + DrawObject.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.support.nubugger.DrawObject(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.shape = reader.uint32(); + break; + case 2: + message.name = reader.string(); + break; + case 3: + message.position = $root.vec3.decode(reader, reader.uint32()); + break; + case 4: + message.direction = $root.vec3.decode(reader, reader.uint32()); + break; + case 5: + message.target = $root.vec3.decode(reader, reader.uint32()); + break; + case 6: + message.width = reader.float(); + break; + case 7: + message.height = reader.float(); + break; + case 8: + message.rotation = $root.vec3.decode(reader, reader.uint32()); + break; + case 9: + message.colour = $root.vec3.decode(reader, reader.uint32()); + break; + case 10: + message.radius = reader.float(); + break; + case 11: + message.topRadius = reader.float(); + break; + case 12: + message.bottomRadius = reader.float(); + break; + case 13: + if (!(message.vertices && message.vertices.length)) + message.vertices = []; + message.vertices.push($root.vec3.decode(reader, reader.uint32())); + break; + case 14: + if (!(message.path && message.path.length)) + message.path = []; + message.path.push($root.message.support.nubugger.DrawObject.Path.decode(reader, reader.uint32())); + break; + case 15: + message.faces = reader.uint32(); + break; + case 16: + message.lineWidth = reader.float(); + break; + case 17: + message.length = reader.float(); + break; + case 18: + message.depth = reader.float(); + break; + case 19: + message.fill = reader.bool(); + break; + case 20: + message.timeout = reader.float(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a DrawObject message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.support.nubugger.DrawObject} DrawObject + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + DrawObject.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a DrawObject message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + DrawObject.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.shape != null && message.hasOwnProperty("shape")) + switch (message.shape) { + default: + return "shape: enum value expected"; + case 0: + case 1: + case 2: + case 3: + case 4: + case 5: + case 6: + case 7: + case 8: + break; + } + if (message.name != null && message.hasOwnProperty("name")) + if (!$util.isString(message.name)) + return "name: string expected"; + if (message.position != null && message.hasOwnProperty("position")) { + var error = $root.vec3.verify(message.position); + if (error) + return "position." + error; + } + if (message.direction != null && message.hasOwnProperty("direction")) { + var error = $root.vec3.verify(message.direction); + if (error) + return "direction." + error; + } + if (message.target != null && message.hasOwnProperty("target")) { + var error = $root.vec3.verify(message.target); + if (error) + return "target." + error; + } + if (message.width != null && message.hasOwnProperty("width")) + if (typeof message.width !== "number") + return "width: number expected"; + if (message.height != null && message.hasOwnProperty("height")) + if (typeof message.height !== "number") + return "height: number expected"; + if (message.rotation != null && message.hasOwnProperty("rotation")) { + var error = $root.vec3.verify(message.rotation); + if (error) + return "rotation." + error; + } + if (message.colour != null && message.hasOwnProperty("colour")) { + var error = $root.vec3.verify(message.colour); + if (error) + return "colour." + error; + } + if (message.radius != null && message.hasOwnProperty("radius")) + if (typeof message.radius !== "number") + return "radius: number expected"; + if (message.topRadius != null && message.hasOwnProperty("topRadius")) + if (typeof message.topRadius !== "number") + return "topRadius: number expected"; + if (message.bottomRadius != null && message.hasOwnProperty("bottomRadius")) + if (typeof message.bottomRadius !== "number") + return "bottomRadius: number expected"; + if (message.vertices != null && message.hasOwnProperty("vertices")) { + if (!Array.isArray(message.vertices)) + return "vertices: array expected"; + for (var i = 0; i < message.vertices.length; ++i) { + var error = $root.vec3.verify(message.vertices[i]); + if (error) + return "vertices." + error; + } + } + if (message.path != null && message.hasOwnProperty("path")) { + if (!Array.isArray(message.path)) + return "path: array expected"; + for (var i = 0; i < message.path.length; ++i) { + var error = $root.message.support.nubugger.DrawObject.Path.verify(message.path[i]); + if (error) + return "path." + error; + } + } + if (message.faces != null && message.hasOwnProperty("faces")) + if (!$util.isInteger(message.faces)) + return "faces: integer expected"; + if (message.lineWidth != null && message.hasOwnProperty("lineWidth")) + if (typeof message.lineWidth !== "number") + return "lineWidth: number expected"; + if (message.length != null && message.hasOwnProperty("length")) + if (typeof message.length !== "number") + return "length: number expected"; + if (message.depth != null && message.hasOwnProperty("depth")) + if (typeof message.depth !== "number") + return "depth: number expected"; + if (message.fill != null && message.hasOwnProperty("fill")) + if (typeof message.fill !== "boolean") + return "fill: boolean expected"; + if (message.timeout != null && message.hasOwnProperty("timeout")) + if (typeof message.timeout !== "number") + return "timeout: number expected"; + return null; + }; + + /** + * Creates a DrawObject message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.support.nubugger.DrawObject} DrawObject + */ + DrawObject.fromObject = function fromObject(object) { + if (object instanceof $root.message.support.nubugger.DrawObject) + return object; + var message = new $root.message.support.nubugger.DrawObject(); + switch (object.shape) { + case "UNKNOWN": + case 0: + message.shape = 0; + break; + case "ARROW": + case 1: + message.shape = 1; + break; + case "BOX": + case 2: + message.shape = 2; + break; + case "CIRCLE": + case 3: + message.shape = 3; + break; + case "CYLINDER": + case 4: + message.shape = 4; + break; + case "POLYLINE": + case 5: + message.shape = 5; + break; + case "PYRAMID": + case 6: + message.shape = 6; + break; + case "RECTANGLE": + case 7: + message.shape = 7; + break; + case "SPHERE": + case 8: + message.shape = 8; + break; + } + if (object.name != null) + message.name = String(object.name); + if (object.position != null) { + if (typeof object.position !== "object") + throw TypeError(".message.support.nubugger.DrawObject.position: object expected"); + message.position = $root.vec3.fromObject(object.position); + } + if (object.direction != null) { + if (typeof object.direction !== "object") + throw TypeError(".message.support.nubugger.DrawObject.direction: object expected"); + message.direction = $root.vec3.fromObject(object.direction); + } + if (object.target != null) { + if (typeof object.target !== "object") + throw TypeError(".message.support.nubugger.DrawObject.target: object expected"); + message.target = $root.vec3.fromObject(object.target); + } + if (object.width != null) + message.width = Number(object.width); + if (object.height != null) + message.height = Number(object.height); + if (object.rotation != null) { + if (typeof object.rotation !== "object") + throw TypeError(".message.support.nubugger.DrawObject.rotation: object expected"); + message.rotation = $root.vec3.fromObject(object.rotation); + } + if (object.colour != null) { + if (typeof object.colour !== "object") + throw TypeError(".message.support.nubugger.DrawObject.colour: object expected"); + message.colour = $root.vec3.fromObject(object.colour); + } + if (object.radius != null) + message.radius = Number(object.radius); + if (object.topRadius != null) + message.topRadius = Number(object.topRadius); + if (object.bottomRadius != null) + message.bottomRadius = Number(object.bottomRadius); + if (object.vertices) { + if (!Array.isArray(object.vertices)) + throw TypeError(".message.support.nubugger.DrawObject.vertices: array expected"); + message.vertices = []; + for (var i = 0; i < object.vertices.length; ++i) { + if (typeof object.vertices[i] !== "object") + throw TypeError(".message.support.nubugger.DrawObject.vertices: object expected"); + message.vertices[i] = $root.vec3.fromObject(object.vertices[i]); + } + } + if (object.path) { + if (!Array.isArray(object.path)) + throw TypeError(".message.support.nubugger.DrawObject.path: array expected"); + message.path = []; + for (var i = 0; i < object.path.length; ++i) { + if (typeof object.path[i] !== "object") + throw TypeError(".message.support.nubugger.DrawObject.path: object expected"); + message.path[i] = $root.message.support.nubugger.DrawObject.Path.fromObject(object.path[i]); + } + } + if (object.faces != null) + message.faces = object.faces >>> 0; + if (object.lineWidth != null) + message.lineWidth = Number(object.lineWidth); + if (object.length != null) + message.length = Number(object.length); + if (object.depth != null) + message.depth = Number(object.depth); + if (object.fill != null) + message.fill = Boolean(object.fill); + if (object.timeout != null) + message.timeout = Number(object.timeout); + return message; + }; + + /** + * Creates a DrawObject message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.support.nubugger.DrawObject.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.support.nubugger.DrawObject} DrawObject + */ + DrawObject.from = DrawObject.fromObject; + + /** + * Creates a plain object from a DrawObject message. Also converts values to other types if specified. + * @param {message.support.nubugger.DrawObject} message DrawObject + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + DrawObject.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) { + object.vertices = []; + object.path = []; + } + if (options.defaults) { + object.shape = options.enums === String ? "UNKNOWN" : 0; + object.name = ""; + object.position = null; + object.direction = null; + object.target = null; + object.width = 0; + object.height = 0; + object.rotation = null; + object.colour = null; + object.radius = 0; + object.topRadius = 0; + object.bottomRadius = 0; + object.faces = 0; + object.lineWidth = 0; + object.length = 0; + object.depth = 0; + object.fill = false; + object.timeout = 0; + } + if (message.shape != null && message.hasOwnProperty("shape")) + object.shape = options.enums === String ? $root.message.support.nubugger.DrawObject.Shape[message.shape] : message.shape; + if (message.name != null && message.hasOwnProperty("name")) + object.name = message.name; + if (message.position != null && message.hasOwnProperty("position")) + object.position = $root.vec3.toObject(message.position, options); + if (message.direction != null && message.hasOwnProperty("direction")) + object.direction = $root.vec3.toObject(message.direction, options); + if (message.target != null && message.hasOwnProperty("target")) + object.target = $root.vec3.toObject(message.target, options); + if (message.width != null && message.hasOwnProperty("width")) + object.width = message.width; + if (message.height != null && message.hasOwnProperty("height")) + object.height = message.height; + if (message.rotation != null && message.hasOwnProperty("rotation")) + object.rotation = $root.vec3.toObject(message.rotation, options); + if (message.colour != null && message.hasOwnProperty("colour")) + object.colour = $root.vec3.toObject(message.colour, options); + if (message.radius != null && message.hasOwnProperty("radius")) + object.radius = message.radius; + if (message.topRadius != null && message.hasOwnProperty("topRadius")) + object.topRadius = message.topRadius; + if (message.bottomRadius != null && message.hasOwnProperty("bottomRadius")) + object.bottomRadius = message.bottomRadius; + if (message.vertices && message.vertices.length) { + object.vertices = []; + for (var j = 0; j < message.vertices.length; ++j) + object.vertices[j] = $root.vec3.toObject(message.vertices[j], options); + } + if (message.path && message.path.length) { + object.path = []; + for (var j = 0; j < message.path.length; ++j) + object.path[j] = $root.message.support.nubugger.DrawObject.Path.toObject(message.path[j], options); + } + if (message.faces != null && message.hasOwnProperty("faces")) + object.faces = message.faces; + if (message.lineWidth != null && message.hasOwnProperty("lineWidth")) + object.lineWidth = message.lineWidth; + if (message.length != null && message.hasOwnProperty("length")) + object.length = message.length; + if (message.depth != null && message.hasOwnProperty("depth")) + object.depth = message.depth; + if (message.fill != null && message.hasOwnProperty("fill")) + object.fill = message.fill; + if (message.timeout != null && message.hasOwnProperty("timeout")) + object.timeout = message.timeout; + return object; + }; + + /** + * Creates a plain object from this DrawObject message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + DrawObject.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this DrawObject to JSON. + * @returns {Object.} JSON object + */ + DrawObject.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Shape enum. + * @name Shape + * @memberof message.support.nubugger.DrawObject + * @enum {number} + * @property {number} UNKNOWN=0 UNKNOWN value + * @property {number} ARROW=1 ARROW value + * @property {number} BOX=2 BOX value + * @property {number} CIRCLE=3 CIRCLE value + * @property {number} CYLINDER=4 CYLINDER value + * @property {number} POLYLINE=5 POLYLINE value + * @property {number} PYRAMID=6 PYRAMID value + * @property {number} RECTANGLE=7 RECTANGLE value + * @property {number} SPHERE=8 SPHERE value + */ + DrawObject.Shape = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "UNKNOWN"] = 0; + values[valuesById[1] = "ARROW"] = 1; + values[valuesById[2] = "BOX"] = 2; + values[valuesById[3] = "CIRCLE"] = 3; + values[valuesById[4] = "CYLINDER"] = 4; + values[valuesById[5] = "POLYLINE"] = 5; + values[valuesById[6] = "PYRAMID"] = 6; + values[valuesById[7] = "RECTANGLE"] = 7; + values[valuesById[8] = "SPHERE"] = 8; + return values; + })(); + + DrawObject.Path = (function() { + + /** + * Properties of a Path. + * @typedef message.support.nubugger.DrawObject.Path$Properties + * @type {Object} + * @property {vec2$Properties} [position] Path position. + * @property {number} [parentIndex] Path parentIndex. + */ + + /** + * Constructs a new Path. + * @exports message.support.nubugger.DrawObject.Path + * @constructor + * @param {message.support.nubugger.DrawObject.Path$Properties=} [properties] Properties to set + */ + function Path(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Path position. + * @type {(vec2$Properties|null)} + */ + Path.prototype.position = null; + + /** + * Path parentIndex. + * @type {number} + */ + Path.prototype.parentIndex = 0; + + /** + * Creates a new Path instance using the specified properties. + * @param {message.support.nubugger.DrawObject.Path$Properties=} [properties] Properties to set + * @returns {message.support.nubugger.DrawObject.Path} Path instance + */ + Path.create = function create(properties) { + return new Path(properties); + }; + + /** + * Encodes the specified Path message. Does not implicitly {@link message.support.nubugger.DrawObject.Path.verify|verify} messages. + * @param {message.support.nubugger.DrawObject.Path$Properties} message Path message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Path.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.position != null && message.hasOwnProperty("position")) + $root.vec2.encode(message.position, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.parentIndex != null && message.hasOwnProperty("parentIndex")) + writer.uint32(/* id 2, wireType 0 =*/16).uint32(message.parentIndex); + return writer; + }; + + /** + * Encodes the specified Path message, length delimited. Does not implicitly {@link message.support.nubugger.DrawObject.Path.verify|verify} messages. + * @param {message.support.nubugger.DrawObject.Path$Properties} message Path message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Path.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a Path message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.support.nubugger.DrawObject.Path} Path + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Path.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.support.nubugger.DrawObject.Path(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.position = $root.vec2.decode(reader, reader.uint32()); + break; + case 2: + message.parentIndex = reader.uint32(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a Path message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.support.nubugger.DrawObject.Path} Path + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Path.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a Path message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + Path.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.position != null && message.hasOwnProperty("position")) { + var error = $root.vec2.verify(message.position); + if (error) + return "position." + error; + } + if (message.parentIndex != null && message.hasOwnProperty("parentIndex")) + if (!$util.isInteger(message.parentIndex)) + return "parentIndex: integer expected"; + return null; + }; + + /** + * Creates a Path message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.support.nubugger.DrawObject.Path} Path + */ + Path.fromObject = function fromObject(object) { + if (object instanceof $root.message.support.nubugger.DrawObject.Path) + return object; + var message = new $root.message.support.nubugger.DrawObject.Path(); + if (object.position != null) { + if (typeof object.position !== "object") + throw TypeError(".message.support.nubugger.DrawObject.Path.position: object expected"); + message.position = $root.vec2.fromObject(object.position); + } + if (object.parentIndex != null) + message.parentIndex = object.parentIndex >>> 0; + return message; + }; + + /** + * Creates a Path message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.support.nubugger.DrawObject.Path.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.support.nubugger.DrawObject.Path} Path + */ + Path.from = Path.fromObject; + + /** + * Creates a plain object from a Path message. Also converts values to other types if specified. + * @param {message.support.nubugger.DrawObject.Path} message Path + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Path.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.position = null; + object.parentIndex = 0; + } + if (message.position != null && message.hasOwnProperty("position")) + object.position = $root.vec2.toObject(message.position, options); + if (message.parentIndex != null && message.hasOwnProperty("parentIndex")) + object.parentIndex = message.parentIndex; + return object; + }; + + /** + * Creates a plain object from this Path message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Path.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this Path to JSON. + * @returns {Object.} JSON object + */ + Path.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return Path; + })(); + + return DrawObject; + })(); + + nubugger.DrawObjects = (function() { + + /** + * Properties of a DrawObjects. + * @typedef message.support.nubugger.DrawObjects$Properties + * @type {Object} + * @property {Array.} [objects] DrawObjects objects. + */ + + /** + * Constructs a new DrawObjects. + * @exports message.support.nubugger.DrawObjects + * @constructor + * @param {message.support.nubugger.DrawObjects$Properties=} [properties] Properties to set + */ + function DrawObjects(properties) { + this.objects = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * DrawObjects objects. + * @type {Array.} + */ + DrawObjects.prototype.objects = $util.emptyArray; + + /** + * Creates a new DrawObjects instance using the specified properties. + * @param {message.support.nubugger.DrawObjects$Properties=} [properties] Properties to set + * @returns {message.support.nubugger.DrawObjects} DrawObjects instance + */ + DrawObjects.create = function create(properties) { + return new DrawObjects(properties); + }; + + /** + * Encodes the specified DrawObjects message. Does not implicitly {@link message.support.nubugger.DrawObjects.verify|verify} messages. + * @param {message.support.nubugger.DrawObjects$Properties} message DrawObjects message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + DrawObjects.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.objects != null && message.objects.length) + for (var i = 0; i < message.objects.length; ++i) + $root.message.support.nubugger.DrawObject.encode(message.objects[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified DrawObjects message, length delimited. Does not implicitly {@link message.support.nubugger.DrawObjects.verify|verify} messages. + * @param {message.support.nubugger.DrawObjects$Properties} message DrawObjects message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + DrawObjects.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a DrawObjects message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.support.nubugger.DrawObjects} DrawObjects + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + DrawObjects.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.support.nubugger.DrawObjects(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (!(message.objects && message.objects.length)) + message.objects = []; + message.objects.push($root.message.support.nubugger.DrawObject.decode(reader, reader.uint32())); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a DrawObjects message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.support.nubugger.DrawObjects} DrawObjects + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + DrawObjects.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a DrawObjects message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + DrawObjects.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.objects != null && message.hasOwnProperty("objects")) { + if (!Array.isArray(message.objects)) + return "objects: array expected"; + for (var i = 0; i < message.objects.length; ++i) { + var error = $root.message.support.nubugger.DrawObject.verify(message.objects[i]); + if (error) + return "objects." + error; + } + } + return null; + }; + + /** + * Creates a DrawObjects message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.support.nubugger.DrawObjects} DrawObjects + */ + DrawObjects.fromObject = function fromObject(object) { + if (object instanceof $root.message.support.nubugger.DrawObjects) + return object; + var message = new $root.message.support.nubugger.DrawObjects(); + if (object.objects) { + if (!Array.isArray(object.objects)) + throw TypeError(".message.support.nubugger.DrawObjects.objects: array expected"); + message.objects = []; + for (var i = 0; i < object.objects.length; ++i) { + if (typeof object.objects[i] !== "object") + throw TypeError(".message.support.nubugger.DrawObjects.objects: object expected"); + message.objects[i] = $root.message.support.nubugger.DrawObject.fromObject(object.objects[i]); + } + } + return message; + }; + + /** + * Creates a DrawObjects message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.support.nubugger.DrawObjects.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.support.nubugger.DrawObjects} DrawObjects + */ + DrawObjects.from = DrawObjects.fromObject; + + /** + * Creates a plain object from a DrawObjects message. Also converts values to other types if specified. + * @param {message.support.nubugger.DrawObjects} message DrawObjects + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + DrawObjects.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.objects = []; + if (message.objects && message.objects.length) { + object.objects = []; + for (var j = 0; j < message.objects.length; ++j) + object.objects[j] = $root.message.support.nubugger.DrawObject.toObject(message.objects[j], options); + } + return object; + }; + + /** + * Creates a plain object from this DrawObjects message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + DrawObjects.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this DrawObjects to JSON. + * @returns {Object.} JSON object + */ + DrawObjects.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return DrawObjects; + })(); + + nubugger.Overview = (function() { + + /** + * Properties of an Overview. + * @typedef message.support.nubugger.Overview$Properties + * @type {Object} + * @property {string} [roleName] Overview roleName. + * @property {number} [voltage] Overview voltage. + * @property {number} [battery] Overview battery. + * @property {message.behaviour.Behaviour.State} [behaviourState] Overview behaviourState. + * @property {vec2$Properties} [kickTarget] Overview kickTarget. + * @property {vec2$Properties} [robotPosition] Overview robotPosition. + * @property {mat22$Properties} [robotPositionCovariance] Overview robotPositionCovariance. + * @property {vec2$Properties} [robotHeading] Overview robotHeading. + * @property {vec2$Properties} [ballPosition] Overview ballPosition. + * @property {vec2$Properties} [ballWorldPosition] Overview ballWorldPosition. + * @property {message.input.GameState.Data.Mode} [gameMode] Overview gameMode. + * @property {message.input.GameState.Data.Phase} [gamePhase] Overview gamePhase. + * @property {message.input.GameState.Data.PenaltyReason} [penaltyReason] Overview penaltyReason. + * @property {google.protobuf.Timestamp$Properties} [lastCameraImage] Overview lastCameraImage. + * @property {google.protobuf.Timestamp$Properties} [lastSeenBall] Overview lastSeenBall. + * @property {google.protobuf.Timestamp$Properties} [lastSeenGoal] Overview lastSeenGoal. + * @property {google.protobuf.Timestamp$Properties} [lastSeenObstacle] Overview lastSeenObstacle. + * @property {Array.} [pathPlan] Overview pathPlan. + * @property {vec3$Properties} [walkCommand] Overview walkCommand. + */ + + /** + * Constructs a new Overview. + * @exports message.support.nubugger.Overview + * @constructor + * @param {message.support.nubugger.Overview$Properties=} [properties] Properties to set + */ + function Overview(properties) { + this.pathPlan = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Overview roleName. + * @type {string} + */ + Overview.prototype.roleName = ""; + + /** + * Overview voltage. + * @type {number} + */ + Overview.prototype.voltage = 0; + + /** + * Overview battery. + * @type {number} + */ + Overview.prototype.battery = 0; + + /** + * Overview behaviourState. + * @type {message.behaviour.Behaviour.State} + */ + Overview.prototype.behaviourState = 0; + + /** + * Overview kickTarget. + * @type {(vec2$Properties|null)} + */ + Overview.prototype.kickTarget = null; + + /** + * Overview robotPosition. + * @type {(vec2$Properties|null)} + */ + Overview.prototype.robotPosition = null; + + /** + * Overview robotPositionCovariance. + * @type {(mat22$Properties|null)} + */ + Overview.prototype.robotPositionCovariance = null; + + /** + * Overview robotHeading. + * @type {(vec2$Properties|null)} + */ + Overview.prototype.robotHeading = null; + + /** + * Overview ballPosition. + * @type {(vec2$Properties|null)} + */ + Overview.prototype.ballPosition = null; + + /** + * Overview ballWorldPosition. + * @type {(vec2$Properties|null)} + */ + Overview.prototype.ballWorldPosition = null; + + /** + * Overview gameMode. + * @type {message.input.GameState.Data.Mode} + */ + Overview.prototype.gameMode = 0; + + /** + * Overview gamePhase. + * @type {message.input.GameState.Data.Phase} + */ + Overview.prototype.gamePhase = 0; + + /** + * Overview penaltyReason. + * @type {message.input.GameState.Data.PenaltyReason} + */ + Overview.prototype.penaltyReason = 0; + + /** + * Overview lastCameraImage. + * @type {(google.protobuf.Timestamp$Properties|null)} + */ + Overview.prototype.lastCameraImage = null; + + /** + * Overview lastSeenBall. + * @type {(google.protobuf.Timestamp$Properties|null)} + */ + Overview.prototype.lastSeenBall = null; + + /** + * Overview lastSeenGoal. + * @type {(google.protobuf.Timestamp$Properties|null)} + */ + Overview.prototype.lastSeenGoal = null; + + /** + * Overview lastSeenObstacle. + * @type {(google.protobuf.Timestamp$Properties|null)} + */ + Overview.prototype.lastSeenObstacle = null; + + /** + * Overview pathPlan. + * @type {Array.} + */ + Overview.prototype.pathPlan = $util.emptyArray; + + /** + * Overview walkCommand. + * @type {(vec3$Properties|null)} + */ + Overview.prototype.walkCommand = null; + + /** + * Creates a new Overview instance using the specified properties. + * @param {message.support.nubugger.Overview$Properties=} [properties] Properties to set + * @returns {message.support.nubugger.Overview} Overview instance + */ + Overview.create = function create(properties) { + return new Overview(properties); + }; + + /** + * Encodes the specified Overview message. Does not implicitly {@link message.support.nubugger.Overview.verify|verify} messages. + * @param {message.support.nubugger.Overview$Properties} message Overview message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Overview.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.voltage != null && message.hasOwnProperty("voltage")) + writer.uint32(/* id 1, wireType 5 =*/13).float(message.voltage); + if (message.battery != null && message.hasOwnProperty("battery")) + writer.uint32(/* id 2, wireType 5 =*/21).float(message.battery); + if (message.behaviourState != null && message.hasOwnProperty("behaviourState")) + writer.uint32(/* id 3, wireType 0 =*/24).uint32(message.behaviourState); + if (message.robotPosition != null && message.hasOwnProperty("robotPosition")) + $root.vec2.encode(message.robotPosition, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); + if (message.robotHeading != null && message.hasOwnProperty("robotHeading")) + $root.vec2.encode(message.robotHeading, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); + if (message.robotPositionCovariance != null && message.hasOwnProperty("robotPositionCovariance")) + $root.mat22.encode(message.robotPositionCovariance, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim(); + if (message.gameMode != null && message.hasOwnProperty("gameMode")) + writer.uint32(/* id 7, wireType 0 =*/56).uint32(message.gameMode); + if (message.gamePhase != null && message.hasOwnProperty("gamePhase")) + writer.uint32(/* id 8, wireType 0 =*/64).uint32(message.gamePhase); + if (message.penaltyReason != null && message.hasOwnProperty("penaltyReason")) + writer.uint32(/* id 9, wireType 0 =*/72).uint32(message.penaltyReason); + if (message.lastCameraImage != null && message.hasOwnProperty("lastCameraImage")) + $root.google.protobuf.Timestamp.encode(message.lastCameraImage, writer.uint32(/* id 10, wireType 2 =*/82).fork()).ldelim(); + if (message.lastSeenBall != null && message.hasOwnProperty("lastSeenBall")) + $root.google.protobuf.Timestamp.encode(message.lastSeenBall, writer.uint32(/* id 11, wireType 2 =*/90).fork()).ldelim(); + if (message.lastSeenGoal != null && message.hasOwnProperty("lastSeenGoal")) + $root.google.protobuf.Timestamp.encode(message.lastSeenGoal, writer.uint32(/* id 12, wireType 2 =*/98).fork()).ldelim(); + if (message.ballPosition != null && message.hasOwnProperty("ballPosition")) + $root.vec2.encode(message.ballPosition, writer.uint32(/* id 13, wireType 2 =*/106).fork()).ldelim(); + if (message.ballWorldPosition != null && message.hasOwnProperty("ballWorldPosition")) + $root.vec2.encode(message.ballWorldPosition, writer.uint32(/* id 14, wireType 2 =*/114).fork()).ldelim(); + if (message.roleName != null && message.hasOwnProperty("roleName")) + writer.uint32(/* id 15, wireType 2 =*/122).string(message.roleName); + if (message.pathPlan != null && message.pathPlan.length) + for (var i = 0; i < message.pathPlan.length; ++i) + $root.vec2.encode(message.pathPlan[i], writer.uint32(/* id 16, wireType 2 =*/130).fork()).ldelim(); + if (message.kickTarget != null && message.hasOwnProperty("kickTarget")) + $root.vec2.encode(message.kickTarget, writer.uint32(/* id 17, wireType 2 =*/138).fork()).ldelim(); + if (message.walkCommand != null && message.hasOwnProperty("walkCommand")) + $root.vec3.encode(message.walkCommand, writer.uint32(/* id 18, wireType 2 =*/146).fork()).ldelim(); + if (message.lastSeenObstacle != null && message.hasOwnProperty("lastSeenObstacle")) + $root.google.protobuf.Timestamp.encode(message.lastSeenObstacle, writer.uint32(/* id 19, wireType 2 =*/154).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified Overview message, length delimited. Does not implicitly {@link message.support.nubugger.Overview.verify|verify} messages. + * @param {message.support.nubugger.Overview$Properties} message Overview message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Overview.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes an Overview message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.support.nubugger.Overview} Overview + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Overview.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.support.nubugger.Overview(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 15: + message.roleName = reader.string(); + break; + case 1: + message.voltage = reader.float(); + break; + case 2: + message.battery = reader.float(); + break; + case 3: + message.behaviourState = reader.uint32(); + break; + case 17: + message.kickTarget = $root.vec2.decode(reader, reader.uint32()); + break; + case 4: + message.robotPosition = $root.vec2.decode(reader, reader.uint32()); + break; + case 6: + message.robotPositionCovariance = $root.mat22.decode(reader, reader.uint32()); + break; + case 5: + message.robotHeading = $root.vec2.decode(reader, reader.uint32()); + break; + case 13: + message.ballPosition = $root.vec2.decode(reader, reader.uint32()); + break; + case 14: + message.ballWorldPosition = $root.vec2.decode(reader, reader.uint32()); + break; + case 7: + message.gameMode = reader.uint32(); + break; + case 8: + message.gamePhase = reader.uint32(); + break; + case 9: + message.penaltyReason = reader.uint32(); + break; + case 10: + message.lastCameraImage = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); + break; + case 11: + message.lastSeenBall = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); + break; + case 12: + message.lastSeenGoal = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); + break; + case 19: + message.lastSeenObstacle = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); + break; + case 16: + if (!(message.pathPlan && message.pathPlan.length)) + message.pathPlan = []; + message.pathPlan.push($root.vec2.decode(reader, reader.uint32())); + break; + case 18: + message.walkCommand = $root.vec3.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes an Overview message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.support.nubugger.Overview} Overview + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Overview.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies an Overview message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + Overview.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.roleName != null && message.hasOwnProperty("roleName")) + if (!$util.isString(message.roleName)) + return "roleName: string expected"; + if (message.voltage != null && message.hasOwnProperty("voltage")) + if (typeof message.voltage !== "number") + return "voltage: number expected"; + if (message.battery != null && message.hasOwnProperty("battery")) + if (typeof message.battery !== "number") + return "battery: number expected"; + if (message.behaviourState != null && message.hasOwnProperty("behaviourState")) + switch (message.behaviourState) { + default: + return "behaviourState: enum value expected"; + case 0: + case 1: + case 2: + case 3: + case 4: + case 5: + case 6: + case 7: + case 8: + case 9: + case 10: + case 11: + case 12: + case 13: + case 14: + break; + } + if (message.kickTarget != null && message.hasOwnProperty("kickTarget")) { + var error = $root.vec2.verify(message.kickTarget); + if (error) + return "kickTarget." + error; + } + if (message.robotPosition != null && message.hasOwnProperty("robotPosition")) { + var error = $root.vec2.verify(message.robotPosition); + if (error) + return "robotPosition." + error; + } + if (message.robotPositionCovariance != null && message.hasOwnProperty("robotPositionCovariance")) { + var error = $root.mat22.verify(message.robotPositionCovariance); + if (error) + return "robotPositionCovariance." + error; + } + if (message.robotHeading != null && message.hasOwnProperty("robotHeading")) { + var error = $root.vec2.verify(message.robotHeading); + if (error) + return "robotHeading." + error; + } + if (message.ballPosition != null && message.hasOwnProperty("ballPosition")) { + var error = $root.vec2.verify(message.ballPosition); + if (error) + return "ballPosition." + error; + } + if (message.ballWorldPosition != null && message.hasOwnProperty("ballWorldPosition")) { + var error = $root.vec2.verify(message.ballWorldPosition); + if (error) + return "ballWorldPosition." + error; + } + if (message.gameMode != null && message.hasOwnProperty("gameMode")) + switch (message.gameMode) { + default: + return "gameMode: enum value expected"; + case 0: + case 1: + case 2: + case 3: + break; + } + if (message.gamePhase != null && message.hasOwnProperty("gamePhase")) + switch (message.gamePhase) { + default: + return "gamePhase: enum value expected"; + case 0: + case 1: + case 2: + case 3: + case 4: + case 5: + case 6: + break; + } + if (message.penaltyReason != null && message.hasOwnProperty("penaltyReason")) + switch (message.penaltyReason) { + default: + return "penaltyReason: enum value expected"; + case 0: + case 1: + case 2: + case 3: + case 4: + case 5: + case 6: + case 7: + case 8: + case 9: + case 10: + break; + } + if (message.lastCameraImage != null && message.hasOwnProperty("lastCameraImage")) { + var error = $root.google.protobuf.Timestamp.verify(message.lastCameraImage); + if (error) + return "lastCameraImage." + error; + } + if (message.lastSeenBall != null && message.hasOwnProperty("lastSeenBall")) { + var error = $root.google.protobuf.Timestamp.verify(message.lastSeenBall); + if (error) + return "lastSeenBall." + error; + } + if (message.lastSeenGoal != null && message.hasOwnProperty("lastSeenGoal")) { + var error = $root.google.protobuf.Timestamp.verify(message.lastSeenGoal); + if (error) + return "lastSeenGoal." + error; + } + if (message.lastSeenObstacle != null && message.hasOwnProperty("lastSeenObstacle")) { + var error = $root.google.protobuf.Timestamp.verify(message.lastSeenObstacle); + if (error) + return "lastSeenObstacle." + error; + } + if (message.pathPlan != null && message.hasOwnProperty("pathPlan")) { + if (!Array.isArray(message.pathPlan)) + return "pathPlan: array expected"; + for (var i = 0; i < message.pathPlan.length; ++i) { + var error = $root.vec2.verify(message.pathPlan[i]); + if (error) + return "pathPlan." + error; + } + } + if (message.walkCommand != null && message.hasOwnProperty("walkCommand")) { + var error = $root.vec3.verify(message.walkCommand); + if (error) + return "walkCommand." + error; + } + return null; + }; + + /** + * Creates an Overview message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.support.nubugger.Overview} Overview + */ + Overview.fromObject = function fromObject(object) { + if (object instanceof $root.message.support.nubugger.Overview) + return object; + var message = new $root.message.support.nubugger.Overview(); + if (object.roleName != null) + message.roleName = String(object.roleName); + if (object.voltage != null) + message.voltage = Number(object.voltage); + if (object.battery != null) + message.battery = Number(object.battery); + switch (object.behaviourState) { + case "UNKNOWN": + case 0: + message.behaviourState = 0; + break; + case "INIT": + case 1: + message.behaviourState = 1; + break; + case "SEARCH_FOR_BALL": + case 2: + message.behaviourState = 2; + break; + case "SEARCH_FOR_GOALS": + case 3: + message.behaviourState = 3; + break; + case "WALK_TO_BALL": + case 4: + message.behaviourState = 4; + break; + case "PICKED_UP": + case 5: + message.behaviourState = 5; + break; + case "INITIAL": + case 6: + message.behaviourState = 6; + break; + case "READY": + case 7: + message.behaviourState = 7; + break; + case "SET": + case 8: + message.behaviourState = 8; + break; + case "TIMEOUT": + case 9: + message.behaviourState = 9; + break; + case "FINISHED": + case 10: + message.behaviourState = 10; + break; + case "PENALISED": + case 11: + message.behaviourState = 11; + break; + case "GOALIE_WALK": + case 12: + message.behaviourState = 12; + break; + case "MOVE_TO_CENTRE": + case 13: + message.behaviourState = 13; + break; + case "LOCALISING": + case 14: + message.behaviourState = 14; + break; + } + if (object.kickTarget != null) { + if (typeof object.kickTarget !== "object") + throw TypeError(".message.support.nubugger.Overview.kickTarget: object expected"); + message.kickTarget = $root.vec2.fromObject(object.kickTarget); + } + if (object.robotPosition != null) { + if (typeof object.robotPosition !== "object") + throw TypeError(".message.support.nubugger.Overview.robotPosition: object expected"); + message.robotPosition = $root.vec2.fromObject(object.robotPosition); + } + if (object.robotPositionCovariance != null) { + if (typeof object.robotPositionCovariance !== "object") + throw TypeError(".message.support.nubugger.Overview.robotPositionCovariance: object expected"); + message.robotPositionCovariance = $root.mat22.fromObject(object.robotPositionCovariance); + } + if (object.robotHeading != null) { + if (typeof object.robotHeading !== "object") + throw TypeError(".message.support.nubugger.Overview.robotHeading: object expected"); + message.robotHeading = $root.vec2.fromObject(object.robotHeading); + } + if (object.ballPosition != null) { + if (typeof object.ballPosition !== "object") + throw TypeError(".message.support.nubugger.Overview.ballPosition: object expected"); + message.ballPosition = $root.vec2.fromObject(object.ballPosition); + } + if (object.ballWorldPosition != null) { + if (typeof object.ballWorldPosition !== "object") + throw TypeError(".message.support.nubugger.Overview.ballWorldPosition: object expected"); + message.ballWorldPosition = $root.vec2.fromObject(object.ballWorldPosition); + } + switch (object.gameMode) { + case "UNKNOWN_MODE": + case 0: + message.gameMode = 0; + break; + case "NORMAL": + case 1: + message.gameMode = 1; + break; + case "PENALTY_SHOOTOUT": + case 2: + message.gameMode = 2; + break; + case "OVERTIME": + case 3: + message.gameMode = 3; + break; + } + switch (object.gamePhase) { + case "UNKNOWN_PHASE": + case 0: + message.gamePhase = 0; + break; + case "INITIAL": + case 1: + message.gamePhase = 1; + break; + case "READY": + case 2: + message.gamePhase = 2; + break; + case "SET": + case 3: + message.gamePhase = 3; + break; + case "PLAYING": + case 4: + message.gamePhase = 4; + break; + case "TIMEOUT": + case 5: + message.gamePhase = 5; + break; + case "FINISHED": + case 6: + message.gamePhase = 6; + break; + } + switch (object.penaltyReason) { + case "UNKNOWN_PENALTY_REASON": + case 0: + message.penaltyReason = 0; + break; + case "UNPENALISED": + case 1: + message.penaltyReason = 1; + break; + case "BALL_MANIPULATION": + case 2: + message.penaltyReason = 2; + break; + case "PHYSICAL_CONTACT": + case 3: + message.penaltyReason = 3; + break; + case "ILLEGAL_ATTACK": + case 4: + message.penaltyReason = 4; + break; + case "ILLEGAL_DEFENSE": + case 5: + message.penaltyReason = 5; + break; + case "REQUEST_FOR_PICKUP": + case 6: + message.penaltyReason = 6; + break; + case "REQUEST_FOR_SERVICE": + case 7: + message.penaltyReason = 7; + break; + case "REQUEST_FOR_PICKUP_TO_SERVICE": + case 8: + message.penaltyReason = 8; + break; + case "SUBSTITUTE": + case 9: + message.penaltyReason = 9; + break; + case "MANUAL": + case 10: + message.penaltyReason = 10; + break; + } + if (object.lastCameraImage != null) { + if (typeof object.lastCameraImage !== "object") + throw TypeError(".message.support.nubugger.Overview.lastCameraImage: object expected"); + message.lastCameraImage = $root.google.protobuf.Timestamp.fromObject(object.lastCameraImage); + } + if (object.lastSeenBall != null) { + if (typeof object.lastSeenBall !== "object") + throw TypeError(".message.support.nubugger.Overview.lastSeenBall: object expected"); + message.lastSeenBall = $root.google.protobuf.Timestamp.fromObject(object.lastSeenBall); + } + if (object.lastSeenGoal != null) { + if (typeof object.lastSeenGoal !== "object") + throw TypeError(".message.support.nubugger.Overview.lastSeenGoal: object expected"); + message.lastSeenGoal = $root.google.protobuf.Timestamp.fromObject(object.lastSeenGoal); + } + if (object.lastSeenObstacle != null) { + if (typeof object.lastSeenObstacle !== "object") + throw TypeError(".message.support.nubugger.Overview.lastSeenObstacle: object expected"); + message.lastSeenObstacle = $root.google.protobuf.Timestamp.fromObject(object.lastSeenObstacle); + } + if (object.pathPlan) { + if (!Array.isArray(object.pathPlan)) + throw TypeError(".message.support.nubugger.Overview.pathPlan: array expected"); + message.pathPlan = []; + for (var i = 0; i < object.pathPlan.length; ++i) { + if (typeof object.pathPlan[i] !== "object") + throw TypeError(".message.support.nubugger.Overview.pathPlan: object expected"); + message.pathPlan[i] = $root.vec2.fromObject(object.pathPlan[i]); + } + } + if (object.walkCommand != null) { + if (typeof object.walkCommand !== "object") + throw TypeError(".message.support.nubugger.Overview.walkCommand: object expected"); + message.walkCommand = $root.vec3.fromObject(object.walkCommand); + } + return message; + }; + + /** + * Creates an Overview message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.support.nubugger.Overview.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.support.nubugger.Overview} Overview + */ + Overview.from = Overview.fromObject; + + /** + * Creates a plain object from an Overview message. Also converts values to other types if specified. + * @param {message.support.nubugger.Overview} message Overview + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Overview.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.pathPlan = []; + if (options.defaults) { + object.voltage = 0; + object.battery = 0; + object.behaviourState = options.enums === String ? "UNKNOWN" : 0; + object.robotPosition = null; + object.robotHeading = null; + object.robotPositionCovariance = null; + object.gameMode = options.enums === String ? "UNKNOWN_MODE" : 0; + object.gamePhase = options.enums === String ? "UNKNOWN_PHASE" : 0; + object.penaltyReason = options.enums === String ? "UNKNOWN_PENALTY_REASON" : 0; + object.lastCameraImage = null; + object.lastSeenBall = null; + object.lastSeenGoal = null; + object.ballPosition = null; + object.ballWorldPosition = null; + object.roleName = ""; + object.kickTarget = null; + object.walkCommand = null; + object.lastSeenObstacle = null; + } + if (message.voltage != null && message.hasOwnProperty("voltage")) + object.voltage = message.voltage; + if (message.battery != null && message.hasOwnProperty("battery")) + object.battery = message.battery; + if (message.behaviourState != null && message.hasOwnProperty("behaviourState")) + object.behaviourState = options.enums === String ? $root.message.behaviour.Behaviour.State[message.behaviourState] : message.behaviourState; + if (message.robotPosition != null && message.hasOwnProperty("robotPosition")) + object.robotPosition = $root.vec2.toObject(message.robotPosition, options); + if (message.robotHeading != null && message.hasOwnProperty("robotHeading")) + object.robotHeading = $root.vec2.toObject(message.robotHeading, options); + if (message.robotPositionCovariance != null && message.hasOwnProperty("robotPositionCovariance")) + object.robotPositionCovariance = $root.mat22.toObject(message.robotPositionCovariance, options); + if (message.gameMode != null && message.hasOwnProperty("gameMode")) + object.gameMode = options.enums === String ? $root.message.input.GameState.Data.Mode[message.gameMode] : message.gameMode; + if (message.gamePhase != null && message.hasOwnProperty("gamePhase")) + object.gamePhase = options.enums === String ? $root.message.input.GameState.Data.Phase[message.gamePhase] : message.gamePhase; + if (message.penaltyReason != null && message.hasOwnProperty("penaltyReason")) + object.penaltyReason = options.enums === String ? $root.message.input.GameState.Data.PenaltyReason[message.penaltyReason] : message.penaltyReason; + if (message.lastCameraImage != null && message.hasOwnProperty("lastCameraImage")) + object.lastCameraImage = $root.google.protobuf.Timestamp.toObject(message.lastCameraImage, options); + if (message.lastSeenBall != null && message.hasOwnProperty("lastSeenBall")) + object.lastSeenBall = $root.google.protobuf.Timestamp.toObject(message.lastSeenBall, options); + if (message.lastSeenGoal != null && message.hasOwnProperty("lastSeenGoal")) + object.lastSeenGoal = $root.google.protobuf.Timestamp.toObject(message.lastSeenGoal, options); + if (message.ballPosition != null && message.hasOwnProperty("ballPosition")) + object.ballPosition = $root.vec2.toObject(message.ballPosition, options); + if (message.ballWorldPosition != null && message.hasOwnProperty("ballWorldPosition")) + object.ballWorldPosition = $root.vec2.toObject(message.ballWorldPosition, options); + if (message.roleName != null && message.hasOwnProperty("roleName")) + object.roleName = message.roleName; + if (message.pathPlan && message.pathPlan.length) { + object.pathPlan = []; + for (var j = 0; j < message.pathPlan.length; ++j) + object.pathPlan[j] = $root.vec2.toObject(message.pathPlan[j], options); + } + if (message.kickTarget != null && message.hasOwnProperty("kickTarget")) + object.kickTarget = $root.vec2.toObject(message.kickTarget, options); + if (message.walkCommand != null && message.hasOwnProperty("walkCommand")) + object.walkCommand = $root.vec3.toObject(message.walkCommand, options); + if (message.lastSeenObstacle != null && message.hasOwnProperty("lastSeenObstacle")) + object.lastSeenObstacle = $root.google.protobuf.Timestamp.toObject(message.lastSeenObstacle, options); + return object; + }; + + /** + * Creates a plain object from this Overview message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Overview.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this Overview to JSON. + * @returns {Object.} JSON object + */ + Overview.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return Overview; + })(); + + nubugger.Ping = (function() { + + /** + * Properties of a Ping. + * @typedef message.support.nubugger.Ping$Properties + * @type {Object} + * @property {number|Long} [time] Ping time. + */ + + /** + * Constructs a new Ping. + * @exports message.support.nubugger.Ping + * @constructor + * @param {message.support.nubugger.Ping$Properties=} [properties] Properties to set + */ + function Ping(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Ping time. + * @type {number|Long} + */ + Ping.prototype.time = $util.Long ? $util.Long.fromBits(0,0,true) : 0; + + /** + * Creates a new Ping instance using the specified properties. + * @param {message.support.nubugger.Ping$Properties=} [properties] Properties to set + * @returns {message.support.nubugger.Ping} Ping instance + */ + Ping.create = function create(properties) { + return new Ping(properties); + }; + + /** + * Encodes the specified Ping message. Does not implicitly {@link message.support.nubugger.Ping.verify|verify} messages. + * @param {message.support.nubugger.Ping$Properties} message Ping message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Ping.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.time != null && message.hasOwnProperty("time")) + writer.uint32(/* id 1, wireType 0 =*/8).uint64(message.time); + return writer; + }; + + /** + * Encodes the specified Ping message, length delimited. Does not implicitly {@link message.support.nubugger.Ping.verify|verify} messages. + * @param {message.support.nubugger.Ping$Properties} message Ping message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Ping.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a Ping message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.support.nubugger.Ping} Ping + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Ping.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.support.nubugger.Ping(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.time = reader.uint64(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a Ping message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.support.nubugger.Ping} Ping + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Ping.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a Ping message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + Ping.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.time != null && message.hasOwnProperty("time")) + if (!$util.isInteger(message.time) && !(message.time && $util.isInteger(message.time.low) && $util.isInteger(message.time.high))) + return "time: integer|Long expected"; + return null; + }; + + /** + * Creates a Ping message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.support.nubugger.Ping} Ping + */ + Ping.fromObject = function fromObject(object) { + if (object instanceof $root.message.support.nubugger.Ping) + return object; + var message = new $root.message.support.nubugger.Ping(); + if (object.time != null) + if ($util.Long) + (message.time = $util.Long.fromValue(object.time)).unsigned = true; + else if (typeof object.time === "string") + message.time = parseInt(object.time, 10); + else if (typeof object.time === "number") + message.time = object.time; + else if (typeof object.time === "object") + message.time = new $util.LongBits(object.time.low >>> 0, object.time.high >>> 0).toNumber(true); + return message; + }; + + /** + * Creates a Ping message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.support.nubugger.Ping.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.support.nubugger.Ping} Ping + */ + Ping.from = Ping.fromObject; + + /** + * Creates a plain object from a Ping message. Also converts values to other types if specified. + * @param {message.support.nubugger.Ping} message Ping + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Ping.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) + if ($util.Long) { + var long = new $util.Long(0, 0, true); + object.time = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; + } else + object.time = options.longs === String ? "0" : 0; + if (message.time != null && message.hasOwnProperty("time")) + if (typeof message.time === "number") + object.time = options.longs === String ? String(message.time) : message.time; + else + object.time = options.longs === String ? $util.Long.prototype.toString.call(message.time) : options.longs === Number ? new $util.LongBits(message.time.low >>> 0, message.time.high >>> 0).toNumber(true) : message.time; + return object; + }; + + /** + * Creates a plain object from this Ping message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Ping.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this Ping to JSON. + * @returns {Object.} JSON object + */ + Ping.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return Ping; + })(); + + nubugger.ReactionHandles = (function() { + + /** + * Properties of a ReactionHandles. + * @typedef message.support.nubugger.ReactionHandles$Properties + * @type {Object} + * @property {Array.} [handles] ReactionHandles handles. + */ + + /** + * Constructs a new ReactionHandles. + * @exports message.support.nubugger.ReactionHandles + * @constructor + * @param {message.support.nubugger.ReactionHandles$Properties=} [properties] Properties to set + */ + function ReactionHandles(properties) { + this.handles = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * ReactionHandles handles. + * @type {Array.} + */ + ReactionHandles.prototype.handles = $util.emptyArray; + + /** + * Creates a new ReactionHandles instance using the specified properties. + * @param {message.support.nubugger.ReactionHandles$Properties=} [properties] Properties to set + * @returns {message.support.nubugger.ReactionHandles} ReactionHandles instance + */ + ReactionHandles.create = function create(properties) { + return new ReactionHandles(properties); + }; + + /** + * Encodes the specified ReactionHandles message. Does not implicitly {@link message.support.nubugger.ReactionHandles.verify|verify} messages. + * @param {message.support.nubugger.ReactionHandles$Properties} message ReactionHandles message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ReactionHandles.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.handles != null && message.handles.length) + for (var i = 0; i < message.handles.length; ++i) + $root.message.support.nubugger.ReactionHandles.Handle.encode(message.handles[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified ReactionHandles message, length delimited. Does not implicitly {@link message.support.nubugger.ReactionHandles.verify|verify} messages. + * @param {message.support.nubugger.ReactionHandles$Properties} message ReactionHandles message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ReactionHandles.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a ReactionHandles message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.support.nubugger.ReactionHandles} ReactionHandles + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ReactionHandles.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.support.nubugger.ReactionHandles(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (!(message.handles && message.handles.length)) + message.handles = []; + message.handles.push($root.message.support.nubugger.ReactionHandles.Handle.decode(reader, reader.uint32())); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a ReactionHandles message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.support.nubugger.ReactionHandles} ReactionHandles + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ReactionHandles.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a ReactionHandles message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + ReactionHandles.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.handles != null && message.hasOwnProperty("handles")) { + if (!Array.isArray(message.handles)) + return "handles: array expected"; + for (var i = 0; i < message.handles.length; ++i) { + var error = $root.message.support.nubugger.ReactionHandles.Handle.verify(message.handles[i]); + if (error) + return "handles." + error; + } + } + return null; + }; + + /** + * Creates a ReactionHandles message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.support.nubugger.ReactionHandles} ReactionHandles + */ + ReactionHandles.fromObject = function fromObject(object) { + if (object instanceof $root.message.support.nubugger.ReactionHandles) + return object; + var message = new $root.message.support.nubugger.ReactionHandles(); + if (object.handles) { + if (!Array.isArray(object.handles)) + throw TypeError(".message.support.nubugger.ReactionHandles.handles: array expected"); + message.handles = []; + for (var i = 0; i < object.handles.length; ++i) { + if (typeof object.handles[i] !== "object") + throw TypeError(".message.support.nubugger.ReactionHandles.handles: object expected"); + message.handles[i] = $root.message.support.nubugger.ReactionHandles.Handle.fromObject(object.handles[i]); + } + } + return message; + }; + + /** + * Creates a ReactionHandles message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.support.nubugger.ReactionHandles.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.support.nubugger.ReactionHandles} ReactionHandles + */ + ReactionHandles.from = ReactionHandles.fromObject; + + /** + * Creates a plain object from a ReactionHandles message. Also converts values to other types if specified. + * @param {message.support.nubugger.ReactionHandles} message ReactionHandles + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + ReactionHandles.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.handles = []; + if (message.handles && message.handles.length) { + object.handles = []; + for (var j = 0; j < message.handles.length; ++j) + object.handles[j] = $root.message.support.nubugger.ReactionHandles.Handle.toObject(message.handles[j], options); + } + return object; + }; + + /** + * Creates a plain object from this ReactionHandles message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + ReactionHandles.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this ReactionHandles to JSON. + * @returns {Object.} JSON object + */ + ReactionHandles.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + ReactionHandles.Handle = (function() { + + /** + * Properties of a Handle. + * @typedef message.support.nubugger.ReactionHandles.Handle$Properties + * @type {Object} + * @property {string} [type] Handle type. + * @property {boolean} [enabled] Handle enabled. + */ + + /** + * Constructs a new Handle. + * @exports message.support.nubugger.ReactionHandles.Handle + * @constructor + * @param {message.support.nubugger.ReactionHandles.Handle$Properties=} [properties] Properties to set + */ + function Handle(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Handle type. + * @type {string} + */ + Handle.prototype.type = ""; + + /** + * Handle enabled. + * @type {boolean} + */ + Handle.prototype.enabled = false; + + /** + * Creates a new Handle instance using the specified properties. + * @param {message.support.nubugger.ReactionHandles.Handle$Properties=} [properties] Properties to set + * @returns {message.support.nubugger.ReactionHandles.Handle} Handle instance + */ + Handle.create = function create(properties) { + return new Handle(properties); + }; + + /** + * Encodes the specified Handle message. Does not implicitly {@link message.support.nubugger.ReactionHandles.Handle.verify|verify} messages. + * @param {message.support.nubugger.ReactionHandles.Handle$Properties} message Handle message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Handle.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.type != null && message.hasOwnProperty("type")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.type); + if (message.enabled != null && message.hasOwnProperty("enabled")) + writer.uint32(/* id 2, wireType 0 =*/16).bool(message.enabled); + return writer; + }; + + /** + * Encodes the specified Handle message, length delimited. Does not implicitly {@link message.support.nubugger.ReactionHandles.Handle.verify|verify} messages. + * @param {message.support.nubugger.ReactionHandles.Handle$Properties} message Handle message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Handle.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a Handle message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.support.nubugger.ReactionHandles.Handle} Handle + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Handle.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.support.nubugger.ReactionHandles.Handle(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.type = reader.string(); + break; + case 2: + message.enabled = reader.bool(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a Handle message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.support.nubugger.ReactionHandles.Handle} Handle + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Handle.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a Handle message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + Handle.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.type != null && message.hasOwnProperty("type")) + if (!$util.isString(message.type)) + return "type: string expected"; + if (message.enabled != null && message.hasOwnProperty("enabled")) + if (typeof message.enabled !== "boolean") + return "enabled: boolean expected"; + return null; + }; + + /** + * Creates a Handle message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.support.nubugger.ReactionHandles.Handle} Handle + */ + Handle.fromObject = function fromObject(object) { + if (object instanceof $root.message.support.nubugger.ReactionHandles.Handle) + return object; + var message = new $root.message.support.nubugger.ReactionHandles.Handle(); + if (object.type != null) + message.type = String(object.type); + if (object.enabled != null) + message.enabled = Boolean(object.enabled); + return message; + }; + + /** + * Creates a Handle message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.support.nubugger.ReactionHandles.Handle.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.support.nubugger.ReactionHandles.Handle} Handle + */ + Handle.from = Handle.fromObject; + + /** + * Creates a plain object from a Handle message. Also converts values to other types if specified. + * @param {message.support.nubugger.ReactionHandles.Handle} message Handle + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Handle.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.type = ""; + object.enabled = false; + } + if (message.type != null && message.hasOwnProperty("type")) + object.type = message.type; + if (message.enabled != null && message.hasOwnProperty("enabled")) + object.enabled = message.enabled; + return object; + }; + + /** + * Creates a plain object from this Handle message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Handle.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this Handle to JSON. + * @returns {Object.} JSON object + */ + Handle.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return Handle; + })(); + + return ReactionHandles; + })(); + + return nubugger; + })(); + + support.nuclear = (function() { + + /** + * Namespace nuclear. + * @exports message.support.nuclear + * @namespace + */ + var nuclear = {}; + + nuclear.ReactionStatistics = (function() { + + /** + * Properties of a ReactionStatistics. + * @typedef message.support.nuclear.ReactionStatistics$Properties + * @type {Object} + * @property {string} [name] ReactionStatistics name. + * @property {string} [triggerName] ReactionStatistics triggerName. + * @property {string} [functionName] ReactionStatistics functionName. + * @property {number|Long} [reactionId] ReactionStatistics reactionId. + * @property {number|Long} [taskId] ReactionStatistics taskId. + * @property {number|Long} [causeReactionId] ReactionStatistics causeReactionId. + * @property {number|Long} [causeTaskId] ReactionStatistics causeTaskId. + * @property {number|Long} [emitted] ReactionStatistics emitted. + * @property {number|Long} [started] ReactionStatistics started. + * @property {number|Long} [finished] ReactionStatistics finished. + */ + + /** + * Constructs a new ReactionStatistics. + * @exports message.support.nuclear.ReactionStatistics + * @constructor + * @param {message.support.nuclear.ReactionStatistics$Properties=} [properties] Properties to set + */ + function ReactionStatistics(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * ReactionStatistics name. + * @type {string} + */ + ReactionStatistics.prototype.name = ""; + + /** + * ReactionStatistics triggerName. + * @type {string} + */ + ReactionStatistics.prototype.triggerName = ""; + + /** + * ReactionStatistics functionName. + * @type {string} + */ + ReactionStatistics.prototype.functionName = ""; + + /** + * ReactionStatistics reactionId. + * @type {number|Long} + */ + ReactionStatistics.prototype.reactionId = $util.Long ? $util.Long.fromBits(0,0,true) : 0; + + /** + * ReactionStatistics taskId. + * @type {number|Long} + */ + ReactionStatistics.prototype.taskId = $util.Long ? $util.Long.fromBits(0,0,true) : 0; + + /** + * ReactionStatistics causeReactionId. + * @type {number|Long} + */ + ReactionStatistics.prototype.causeReactionId = $util.Long ? $util.Long.fromBits(0,0,true) : 0; + + /** + * ReactionStatistics causeTaskId. + * @type {number|Long} + */ + ReactionStatistics.prototype.causeTaskId = $util.Long ? $util.Long.fromBits(0,0,true) : 0; + + /** + * ReactionStatistics emitted. + * @type {number|Long} + */ + ReactionStatistics.prototype.emitted = $util.Long ? $util.Long.fromBits(0,0,true) : 0; + + /** + * ReactionStatistics started. + * @type {number|Long} + */ + ReactionStatistics.prototype.started = $util.Long ? $util.Long.fromBits(0,0,true) : 0; + + /** + * ReactionStatistics finished. + * @type {number|Long} + */ + ReactionStatistics.prototype.finished = $util.Long ? $util.Long.fromBits(0,0,true) : 0; + + /** + * Creates a new ReactionStatistics instance using the specified properties. + * @param {message.support.nuclear.ReactionStatistics$Properties=} [properties] Properties to set + * @returns {message.support.nuclear.ReactionStatistics} ReactionStatistics instance + */ + ReactionStatistics.create = function create(properties) { + return new ReactionStatistics(properties); + }; + + /** + * Encodes the specified ReactionStatistics message. Does not implicitly {@link message.support.nuclear.ReactionStatistics.verify|verify} messages. + * @param {message.support.nuclear.ReactionStatistics$Properties} message ReactionStatistics message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ReactionStatistics.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.name != null && message.hasOwnProperty("name")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.name); + if (message.triggerName != null && message.hasOwnProperty("triggerName")) + writer.uint32(/* id 2, wireType 2 =*/18).string(message.triggerName); + if (message.functionName != null && message.hasOwnProperty("functionName")) + writer.uint32(/* id 3, wireType 2 =*/26).string(message.functionName); + if (message.reactionId != null && message.hasOwnProperty("reactionId")) + writer.uint32(/* id 4, wireType 0 =*/32).uint64(message.reactionId); + if (message.taskId != null && message.hasOwnProperty("taskId")) + writer.uint32(/* id 5, wireType 0 =*/40).uint64(message.taskId); + if (message.causeReactionId != null && message.hasOwnProperty("causeReactionId")) + writer.uint32(/* id 6, wireType 0 =*/48).uint64(message.causeReactionId); + if (message.causeTaskId != null && message.hasOwnProperty("causeTaskId")) + writer.uint32(/* id 7, wireType 0 =*/56).uint64(message.causeTaskId); + if (message.emitted != null && message.hasOwnProperty("emitted")) + writer.uint32(/* id 8, wireType 0 =*/64).uint64(message.emitted); + if (message.started != null && message.hasOwnProperty("started")) + writer.uint32(/* id 9, wireType 0 =*/72).uint64(message.started); + if (message.finished != null && message.hasOwnProperty("finished")) + writer.uint32(/* id 10, wireType 0 =*/80).uint64(message.finished); + return writer; + }; + + /** + * Encodes the specified ReactionStatistics message, length delimited. Does not implicitly {@link message.support.nuclear.ReactionStatistics.verify|verify} messages. + * @param {message.support.nuclear.ReactionStatistics$Properties} message ReactionStatistics message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ReactionStatistics.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a ReactionStatistics message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.support.nuclear.ReactionStatistics} ReactionStatistics + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ReactionStatistics.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.support.nuclear.ReactionStatistics(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.name = reader.string(); + break; + case 2: + message.triggerName = reader.string(); + break; + case 3: + message.functionName = reader.string(); + break; + case 4: + message.reactionId = reader.uint64(); + break; + case 5: + message.taskId = reader.uint64(); + break; + case 6: + message.causeReactionId = reader.uint64(); + break; + case 7: + message.causeTaskId = reader.uint64(); + break; + case 8: + message.emitted = reader.uint64(); + break; + case 9: + message.started = reader.uint64(); + break; + case 10: + message.finished = reader.uint64(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a ReactionStatistics message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.support.nuclear.ReactionStatistics} ReactionStatistics + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ReactionStatistics.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a ReactionStatistics message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + ReactionStatistics.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.name != null && message.hasOwnProperty("name")) + if (!$util.isString(message.name)) + return "name: string expected"; + if (message.triggerName != null && message.hasOwnProperty("triggerName")) + if (!$util.isString(message.triggerName)) + return "triggerName: string expected"; + if (message.functionName != null && message.hasOwnProperty("functionName")) + if (!$util.isString(message.functionName)) + return "functionName: string expected"; + if (message.reactionId != null && message.hasOwnProperty("reactionId")) + if (!$util.isInteger(message.reactionId) && !(message.reactionId && $util.isInteger(message.reactionId.low) && $util.isInteger(message.reactionId.high))) + return "reactionId: integer|Long expected"; + if (message.taskId != null && message.hasOwnProperty("taskId")) + if (!$util.isInteger(message.taskId) && !(message.taskId && $util.isInteger(message.taskId.low) && $util.isInteger(message.taskId.high))) + return "taskId: integer|Long expected"; + if (message.causeReactionId != null && message.hasOwnProperty("causeReactionId")) + if (!$util.isInteger(message.causeReactionId) && !(message.causeReactionId && $util.isInteger(message.causeReactionId.low) && $util.isInteger(message.causeReactionId.high))) + return "causeReactionId: integer|Long expected"; + if (message.causeTaskId != null && message.hasOwnProperty("causeTaskId")) + if (!$util.isInteger(message.causeTaskId) && !(message.causeTaskId && $util.isInteger(message.causeTaskId.low) && $util.isInteger(message.causeTaskId.high))) + return "causeTaskId: integer|Long expected"; + if (message.emitted != null && message.hasOwnProperty("emitted")) + if (!$util.isInteger(message.emitted) && !(message.emitted && $util.isInteger(message.emitted.low) && $util.isInteger(message.emitted.high))) + return "emitted: integer|Long expected"; + if (message.started != null && message.hasOwnProperty("started")) + if (!$util.isInteger(message.started) && !(message.started && $util.isInteger(message.started.low) && $util.isInteger(message.started.high))) + return "started: integer|Long expected"; + if (message.finished != null && message.hasOwnProperty("finished")) + if (!$util.isInteger(message.finished) && !(message.finished && $util.isInteger(message.finished.low) && $util.isInteger(message.finished.high))) + return "finished: integer|Long expected"; + return null; + }; + + /** + * Creates a ReactionStatistics message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.support.nuclear.ReactionStatistics} ReactionStatistics + */ + ReactionStatistics.fromObject = function fromObject(object) { + if (object instanceof $root.message.support.nuclear.ReactionStatistics) + return object; + var message = new $root.message.support.nuclear.ReactionStatistics(); + if (object.name != null) + message.name = String(object.name); + if (object.triggerName != null) + message.triggerName = String(object.triggerName); + if (object.functionName != null) + message.functionName = String(object.functionName); + if (object.reactionId != null) + if ($util.Long) + (message.reactionId = $util.Long.fromValue(object.reactionId)).unsigned = true; + else if (typeof object.reactionId === "string") + message.reactionId = parseInt(object.reactionId, 10); + else if (typeof object.reactionId === "number") + message.reactionId = object.reactionId; + else if (typeof object.reactionId === "object") + message.reactionId = new $util.LongBits(object.reactionId.low >>> 0, object.reactionId.high >>> 0).toNumber(true); + if (object.taskId != null) + if ($util.Long) + (message.taskId = $util.Long.fromValue(object.taskId)).unsigned = true; + else if (typeof object.taskId === "string") + message.taskId = parseInt(object.taskId, 10); + else if (typeof object.taskId === "number") + message.taskId = object.taskId; + else if (typeof object.taskId === "object") + message.taskId = new $util.LongBits(object.taskId.low >>> 0, object.taskId.high >>> 0).toNumber(true); + if (object.causeReactionId != null) + if ($util.Long) + (message.causeReactionId = $util.Long.fromValue(object.causeReactionId)).unsigned = true; + else if (typeof object.causeReactionId === "string") + message.causeReactionId = parseInt(object.causeReactionId, 10); + else if (typeof object.causeReactionId === "number") + message.causeReactionId = object.causeReactionId; + else if (typeof object.causeReactionId === "object") + message.causeReactionId = new $util.LongBits(object.causeReactionId.low >>> 0, object.causeReactionId.high >>> 0).toNumber(true); + if (object.causeTaskId != null) + if ($util.Long) + (message.causeTaskId = $util.Long.fromValue(object.causeTaskId)).unsigned = true; + else if (typeof object.causeTaskId === "string") + message.causeTaskId = parseInt(object.causeTaskId, 10); + else if (typeof object.causeTaskId === "number") + message.causeTaskId = object.causeTaskId; + else if (typeof object.causeTaskId === "object") + message.causeTaskId = new $util.LongBits(object.causeTaskId.low >>> 0, object.causeTaskId.high >>> 0).toNumber(true); + if (object.emitted != null) + if ($util.Long) + (message.emitted = $util.Long.fromValue(object.emitted)).unsigned = true; + else if (typeof object.emitted === "string") + message.emitted = parseInt(object.emitted, 10); + else if (typeof object.emitted === "number") + message.emitted = object.emitted; + else if (typeof object.emitted === "object") + message.emitted = new $util.LongBits(object.emitted.low >>> 0, object.emitted.high >>> 0).toNumber(true); + if (object.started != null) + if ($util.Long) + (message.started = $util.Long.fromValue(object.started)).unsigned = true; + else if (typeof object.started === "string") + message.started = parseInt(object.started, 10); + else if (typeof object.started === "number") + message.started = object.started; + else if (typeof object.started === "object") + message.started = new $util.LongBits(object.started.low >>> 0, object.started.high >>> 0).toNumber(true); + if (object.finished != null) + if ($util.Long) + (message.finished = $util.Long.fromValue(object.finished)).unsigned = true; + else if (typeof object.finished === "string") + message.finished = parseInt(object.finished, 10); + else if (typeof object.finished === "number") + message.finished = object.finished; + else if (typeof object.finished === "object") + message.finished = new $util.LongBits(object.finished.low >>> 0, object.finished.high >>> 0).toNumber(true); + return message; + }; + + /** + * Creates a ReactionStatistics message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.support.nuclear.ReactionStatistics.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.support.nuclear.ReactionStatistics} ReactionStatistics + */ + ReactionStatistics.from = ReactionStatistics.fromObject; + + /** + * Creates a plain object from a ReactionStatistics message. Also converts values to other types if specified. + * @param {message.support.nuclear.ReactionStatistics} message ReactionStatistics + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + ReactionStatistics.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.name = ""; + object.triggerName = ""; + object.functionName = ""; + if ($util.Long) { + var long = new $util.Long(0, 0, true); + object.reactionId = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; + } else + object.reactionId = options.longs === String ? "0" : 0; + if ($util.Long) { + var long = new $util.Long(0, 0, true); + object.taskId = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; + } else + object.taskId = options.longs === String ? "0" : 0; + if ($util.Long) { + var long = new $util.Long(0, 0, true); + object.causeReactionId = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; + } else + object.causeReactionId = options.longs === String ? "0" : 0; + if ($util.Long) { + var long = new $util.Long(0, 0, true); + object.causeTaskId = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; + } else + object.causeTaskId = options.longs === String ? "0" : 0; + if ($util.Long) { + var long = new $util.Long(0, 0, true); + object.emitted = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; + } else + object.emitted = options.longs === String ? "0" : 0; + if ($util.Long) { + var long = new $util.Long(0, 0, true); + object.started = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; + } else + object.started = options.longs === String ? "0" : 0; + if ($util.Long) { + var long = new $util.Long(0, 0, true); + object.finished = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; + } else + object.finished = options.longs === String ? "0" : 0; + } + if (message.name != null && message.hasOwnProperty("name")) + object.name = message.name; + if (message.triggerName != null && message.hasOwnProperty("triggerName")) + object.triggerName = message.triggerName; + if (message.functionName != null && message.hasOwnProperty("functionName")) + object.functionName = message.functionName; + if (message.reactionId != null && message.hasOwnProperty("reactionId")) + if (typeof message.reactionId === "number") + object.reactionId = options.longs === String ? String(message.reactionId) : message.reactionId; + else + object.reactionId = options.longs === String ? $util.Long.prototype.toString.call(message.reactionId) : options.longs === Number ? new $util.LongBits(message.reactionId.low >>> 0, message.reactionId.high >>> 0).toNumber(true) : message.reactionId; + if (message.taskId != null && message.hasOwnProperty("taskId")) + if (typeof message.taskId === "number") + object.taskId = options.longs === String ? String(message.taskId) : message.taskId; + else + object.taskId = options.longs === String ? $util.Long.prototype.toString.call(message.taskId) : options.longs === Number ? new $util.LongBits(message.taskId.low >>> 0, message.taskId.high >>> 0).toNumber(true) : message.taskId; + if (message.causeReactionId != null && message.hasOwnProperty("causeReactionId")) + if (typeof message.causeReactionId === "number") + object.causeReactionId = options.longs === String ? String(message.causeReactionId) : message.causeReactionId; + else + object.causeReactionId = options.longs === String ? $util.Long.prototype.toString.call(message.causeReactionId) : options.longs === Number ? new $util.LongBits(message.causeReactionId.low >>> 0, message.causeReactionId.high >>> 0).toNumber(true) : message.causeReactionId; + if (message.causeTaskId != null && message.hasOwnProperty("causeTaskId")) + if (typeof message.causeTaskId === "number") + object.causeTaskId = options.longs === String ? String(message.causeTaskId) : message.causeTaskId; + else + object.causeTaskId = options.longs === String ? $util.Long.prototype.toString.call(message.causeTaskId) : options.longs === Number ? new $util.LongBits(message.causeTaskId.low >>> 0, message.causeTaskId.high >>> 0).toNumber(true) : message.causeTaskId; + if (message.emitted != null && message.hasOwnProperty("emitted")) + if (typeof message.emitted === "number") + object.emitted = options.longs === String ? String(message.emitted) : message.emitted; + else + object.emitted = options.longs === String ? $util.Long.prototype.toString.call(message.emitted) : options.longs === Number ? new $util.LongBits(message.emitted.low >>> 0, message.emitted.high >>> 0).toNumber(true) : message.emitted; + if (message.started != null && message.hasOwnProperty("started")) + if (typeof message.started === "number") + object.started = options.longs === String ? String(message.started) : message.started; + else + object.started = options.longs === String ? $util.Long.prototype.toString.call(message.started) : options.longs === Number ? new $util.LongBits(message.started.low >>> 0, message.started.high >>> 0).toNumber(true) : message.started; + if (message.finished != null && message.hasOwnProperty("finished")) + if (typeof message.finished === "number") + object.finished = options.longs === String ? String(message.finished) : message.finished; + else + object.finished = options.longs === String ? $util.Long.prototype.toString.call(message.finished) : options.longs === Number ? new $util.LongBits(message.finished.low >>> 0, message.finished.high >>> 0).toNumber(true) : message.finished; + return object; + }; + + /** + * Creates a plain object from this ReactionStatistics message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + ReactionStatistics.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this ReactionStatistics to JSON. + * @returns {Object.} JSON object + */ + ReactionStatistics.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return ReactionStatistics; + })(); + + return nuclear; + })(); + + support.optimisation = (function() { + + /** + * Namespace optimisation. + * @exports message.support.optimisation + * @namespace + */ + var optimisation = {}; + + optimisation.RegisterOptimisation = (function() { + + /** + * Properties of a RegisterOptimisation. + * @typedef message.support.optimisation.RegisterOptimisation$Properties + * @type {Object} + * @property {string} [group] RegisterOptimisation group. + * @property {boolean} [network] RegisterOptimisation network. + * @property {message.support.optimisation.OptimiserParameters$Properties} [parameters] RegisterOptimisation parameters. + */ + + /** + * Constructs a new RegisterOptimisation. + * @exports message.support.optimisation.RegisterOptimisation + * @constructor + * @param {message.support.optimisation.RegisterOptimisation$Properties=} [properties] Properties to set + */ + function RegisterOptimisation(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * RegisterOptimisation group. + * @type {string} + */ + RegisterOptimisation.prototype.group = ""; + + /** + * RegisterOptimisation network. + * @type {boolean} + */ + RegisterOptimisation.prototype.network = false; + + /** + * RegisterOptimisation parameters. + * @type {(message.support.optimisation.OptimiserParameters$Properties|null)} + */ + RegisterOptimisation.prototype.parameters = null; + + /** + * Creates a new RegisterOptimisation instance using the specified properties. + * @param {message.support.optimisation.RegisterOptimisation$Properties=} [properties] Properties to set + * @returns {message.support.optimisation.RegisterOptimisation} RegisterOptimisation instance + */ + RegisterOptimisation.create = function create(properties) { + return new RegisterOptimisation(properties); + }; + + /** + * Encodes the specified RegisterOptimisation message. Does not implicitly {@link message.support.optimisation.RegisterOptimisation.verify|verify} messages. + * @param {message.support.optimisation.RegisterOptimisation$Properties} message RegisterOptimisation message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + RegisterOptimisation.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.group != null && message.hasOwnProperty("group")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.group); + if (message.network != null && message.hasOwnProperty("network")) + writer.uint32(/* id 2, wireType 0 =*/16).bool(message.network); + if (message.parameters != null && message.hasOwnProperty("parameters")) + $root.message.support.optimisation.OptimiserParameters.encode(message.parameters, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified RegisterOptimisation message, length delimited. Does not implicitly {@link message.support.optimisation.RegisterOptimisation.verify|verify} messages. + * @param {message.support.optimisation.RegisterOptimisation$Properties} message RegisterOptimisation message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + RegisterOptimisation.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a RegisterOptimisation message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.support.optimisation.RegisterOptimisation} RegisterOptimisation + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + RegisterOptimisation.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.support.optimisation.RegisterOptimisation(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.group = reader.string(); + break; + case 2: + message.network = reader.bool(); + break; + case 3: + message.parameters = $root.message.support.optimisation.OptimiserParameters.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a RegisterOptimisation message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.support.optimisation.RegisterOptimisation} RegisterOptimisation + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + RegisterOptimisation.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a RegisterOptimisation message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + RegisterOptimisation.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.group != null && message.hasOwnProperty("group")) + if (!$util.isString(message.group)) + return "group: string expected"; + if (message.network != null && message.hasOwnProperty("network")) + if (typeof message.network !== "boolean") + return "network: boolean expected"; + if (message.parameters != null && message.hasOwnProperty("parameters")) { + var error = $root.message.support.optimisation.OptimiserParameters.verify(message.parameters); + if (error) + return "parameters." + error; + } + return null; + }; + + /** + * Creates a RegisterOptimisation message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.support.optimisation.RegisterOptimisation} RegisterOptimisation + */ + RegisterOptimisation.fromObject = function fromObject(object) { + if (object instanceof $root.message.support.optimisation.RegisterOptimisation) + return object; + var message = new $root.message.support.optimisation.RegisterOptimisation(); + if (object.group != null) + message.group = String(object.group); + if (object.network != null) + message.network = Boolean(object.network); + if (object.parameters != null) { + if (typeof object.parameters !== "object") + throw TypeError(".message.support.optimisation.RegisterOptimisation.parameters: object expected"); + message.parameters = $root.message.support.optimisation.OptimiserParameters.fromObject(object.parameters); + } + return message; + }; + + /** + * Creates a RegisterOptimisation message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.support.optimisation.RegisterOptimisation.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.support.optimisation.RegisterOptimisation} RegisterOptimisation + */ + RegisterOptimisation.from = RegisterOptimisation.fromObject; + + /** + * Creates a plain object from a RegisterOptimisation message. Also converts values to other types if specified. + * @param {message.support.optimisation.RegisterOptimisation} message RegisterOptimisation + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + RegisterOptimisation.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.group = ""; + object.network = false; + object.parameters = null; + } + if (message.group != null && message.hasOwnProperty("group")) + object.group = message.group; + if (message.network != null && message.hasOwnProperty("network")) + object.network = message.network; + if (message.parameters != null && message.hasOwnProperty("parameters")) + object.parameters = $root.message.support.optimisation.OptimiserParameters.toObject(message.parameters, options); + return object; + }; + + /** + * Creates a plain object from this RegisterOptimisation message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + RegisterOptimisation.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this RegisterOptimisation to JSON. + * @returns {Object.} JSON object + */ + RegisterOptimisation.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return RegisterOptimisation; + })(); + + optimisation.RequestParameters = (function() { + + /** + * Properties of a RequestParameters. + * @typedef message.support.optimisation.RequestParameters$Properties + * @type {Object} + * @property {string} [group] RequestParameters group. + * @property {number} [nSamples] RequestParameters nSamples. + */ + + /** + * Constructs a new RequestParameters. + * @exports message.support.optimisation.RequestParameters + * @constructor + * @param {message.support.optimisation.RequestParameters$Properties=} [properties] Properties to set + */ + function RequestParameters(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * RequestParameters group. + * @type {string} + */ + RequestParameters.prototype.group = ""; + + /** + * RequestParameters nSamples. + * @type {number} + */ + RequestParameters.prototype.nSamples = 0; + + /** + * Creates a new RequestParameters instance using the specified properties. + * @param {message.support.optimisation.RequestParameters$Properties=} [properties] Properties to set + * @returns {message.support.optimisation.RequestParameters} RequestParameters instance + */ + RequestParameters.create = function create(properties) { + return new RequestParameters(properties); + }; + + /** + * Encodes the specified RequestParameters message. Does not implicitly {@link message.support.optimisation.RequestParameters.verify|verify} messages. + * @param {message.support.optimisation.RequestParameters$Properties} message RequestParameters message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + RequestParameters.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.group != null && message.hasOwnProperty("group")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.group); + if (message.nSamples != null && message.hasOwnProperty("nSamples")) + writer.uint32(/* id 2, wireType 0 =*/16).uint32(message.nSamples); + return writer; + }; + + /** + * Encodes the specified RequestParameters message, length delimited. Does not implicitly {@link message.support.optimisation.RequestParameters.verify|verify} messages. + * @param {message.support.optimisation.RequestParameters$Properties} message RequestParameters message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + RequestParameters.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a RequestParameters message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.support.optimisation.RequestParameters} RequestParameters + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + RequestParameters.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.support.optimisation.RequestParameters(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.group = reader.string(); + break; + case 2: + message.nSamples = reader.uint32(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a RequestParameters message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.support.optimisation.RequestParameters} RequestParameters + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + RequestParameters.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a RequestParameters message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + RequestParameters.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.group != null && message.hasOwnProperty("group")) + if (!$util.isString(message.group)) + return "group: string expected"; + if (message.nSamples != null && message.hasOwnProperty("nSamples")) + if (!$util.isInteger(message.nSamples)) + return "nSamples: integer expected"; + return null; + }; + + /** + * Creates a RequestParameters message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.support.optimisation.RequestParameters} RequestParameters + */ + RequestParameters.fromObject = function fromObject(object) { + if (object instanceof $root.message.support.optimisation.RequestParameters) + return object; + var message = new $root.message.support.optimisation.RequestParameters(); + if (object.group != null) + message.group = String(object.group); + if (object.nSamples != null) + message.nSamples = object.nSamples >>> 0; + return message; + }; + + /** + * Creates a RequestParameters message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.support.optimisation.RequestParameters.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.support.optimisation.RequestParameters} RequestParameters + */ + RequestParameters.from = RequestParameters.fromObject; + + /** + * Creates a plain object from a RequestParameters message. Also converts values to other types if specified. + * @param {message.support.optimisation.RequestParameters} message RequestParameters + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + RequestParameters.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.group = ""; + object.nSamples = 0; + } + if (message.group != null && message.hasOwnProperty("group")) + object.group = message.group; + if (message.nSamples != null && message.hasOwnProperty("nSamples")) + object.nSamples = message.nSamples; + return object; + }; + + /** + * Creates a plain object from this RequestParameters message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + RequestParameters.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this RequestParameters to JSON. + * @returns {Object.} JSON object + */ + RequestParameters.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return RequestParameters; + })(); + + optimisation.Parameters = (function() { + + /** + * Properties of a Parameters. + * @typedef message.support.optimisation.Parameters$Properties + * @type {Object} + * @property {string} [group] Parameters group. + * @property {number} [generation] Parameters generation. + * @property {mat$Properties} [samples] Parameters samples. + * @property {mat$Properties} [covariance] Parameters covariance. + */ + + /** + * Constructs a new Parameters. + * @exports message.support.optimisation.Parameters + * @constructor + * @param {message.support.optimisation.Parameters$Properties=} [properties] Properties to set + */ + function Parameters(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Parameters group. + * @type {string} + */ + Parameters.prototype.group = ""; + + /** + * Parameters generation. + * @type {number} + */ + Parameters.prototype.generation = 0; + + /** + * Parameters samples. + * @type {(mat$Properties|null)} + */ + Parameters.prototype.samples = null; + + /** + * Parameters covariance. + * @type {(mat$Properties|null)} + */ + Parameters.prototype.covariance = null; + + /** + * Creates a new Parameters instance using the specified properties. + * @param {message.support.optimisation.Parameters$Properties=} [properties] Properties to set + * @returns {message.support.optimisation.Parameters} Parameters instance + */ + Parameters.create = function create(properties) { + return new Parameters(properties); + }; + + /** + * Encodes the specified Parameters message. Does not implicitly {@link message.support.optimisation.Parameters.verify|verify} messages. + * @param {message.support.optimisation.Parameters$Properties} message Parameters message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Parameters.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.group != null && message.hasOwnProperty("group")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.group); + if (message.generation != null && message.hasOwnProperty("generation")) + writer.uint32(/* id 2, wireType 0 =*/16).int32(message.generation); + if (message.samples != null && message.hasOwnProperty("samples")) + $root.mat.encode(message.samples, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + if (message.covariance != null && message.hasOwnProperty("covariance")) + $root.mat.encode(message.covariance, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified Parameters message, length delimited. Does not implicitly {@link message.support.optimisation.Parameters.verify|verify} messages. + * @param {message.support.optimisation.Parameters$Properties} message Parameters message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Parameters.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a Parameters message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.support.optimisation.Parameters} Parameters + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Parameters.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.support.optimisation.Parameters(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.group = reader.string(); + break; + case 2: + message.generation = reader.int32(); + break; + case 3: + message.samples = $root.mat.decode(reader, reader.uint32()); + break; + case 4: + message.covariance = $root.mat.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a Parameters message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.support.optimisation.Parameters} Parameters + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Parameters.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a Parameters message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + Parameters.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.group != null && message.hasOwnProperty("group")) + if (!$util.isString(message.group)) + return "group: string expected"; + if (message.generation != null && message.hasOwnProperty("generation")) + if (!$util.isInteger(message.generation)) + return "generation: integer expected"; + if (message.samples != null && message.hasOwnProperty("samples")) { + var error = $root.mat.verify(message.samples); + if (error) + return "samples." + error; + } + if (message.covariance != null && message.hasOwnProperty("covariance")) { + var error = $root.mat.verify(message.covariance); + if (error) + return "covariance." + error; + } + return null; + }; + + /** + * Creates a Parameters message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.support.optimisation.Parameters} Parameters + */ + Parameters.fromObject = function fromObject(object) { + if (object instanceof $root.message.support.optimisation.Parameters) + return object; + var message = new $root.message.support.optimisation.Parameters(); + if (object.group != null) + message.group = String(object.group); + if (object.generation != null) + message.generation = object.generation | 0; + if (object.samples != null) { + if (typeof object.samples !== "object") + throw TypeError(".message.support.optimisation.Parameters.samples: object expected"); + message.samples = $root.mat.fromObject(object.samples); + } + if (object.covariance != null) { + if (typeof object.covariance !== "object") + throw TypeError(".message.support.optimisation.Parameters.covariance: object expected"); + message.covariance = $root.mat.fromObject(object.covariance); + } + return message; + }; + + /** + * Creates a Parameters message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.support.optimisation.Parameters.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.support.optimisation.Parameters} Parameters + */ + Parameters.from = Parameters.fromObject; + + /** + * Creates a plain object from a Parameters message. Also converts values to other types if specified. + * @param {message.support.optimisation.Parameters} message Parameters + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Parameters.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.group = ""; + object.generation = 0; + object.samples = null; + object.covariance = null; + } + if (message.group != null && message.hasOwnProperty("group")) + object.group = message.group; + if (message.generation != null && message.hasOwnProperty("generation")) + object.generation = message.generation; + if (message.samples != null && message.hasOwnProperty("samples")) + object.samples = $root.mat.toObject(message.samples, options); + if (message.covariance != null && message.hasOwnProperty("covariance")) + object.covariance = $root.mat.toObject(message.covariance, options); + return object; + }; + + /** + * Creates a plain object from this Parameters message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Parameters.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this Parameters to JSON. + * @returns {Object.} JSON object + */ + Parameters.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return Parameters; + })(); + + optimisation.OptimiserEstimate = (function() { + + /** + * Properties of an OptimiserEstimate. + * @typedef message.support.optimisation.OptimiserEstimate$Properties + * @type {Object} + * @property {number} [generation] OptimiserEstimate generation. + * @property {vec$Properties} [estimate] OptimiserEstimate estimate. + * @property {mat$Properties} [covariance] OptimiserEstimate covariance. + */ + + /** + * Constructs a new OptimiserEstimate. + * @exports message.support.optimisation.OptimiserEstimate + * @constructor + * @param {message.support.optimisation.OptimiserEstimate$Properties=} [properties] Properties to set + */ + function OptimiserEstimate(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * OptimiserEstimate generation. + * @type {number} + */ + OptimiserEstimate.prototype.generation = 0; + + /** + * OptimiserEstimate estimate. + * @type {(vec$Properties|null)} + */ + OptimiserEstimate.prototype.estimate = null; + + /** + * OptimiserEstimate covariance. + * @type {(mat$Properties|null)} + */ + OptimiserEstimate.prototype.covariance = null; + + /** + * Creates a new OptimiserEstimate instance using the specified properties. + * @param {message.support.optimisation.OptimiserEstimate$Properties=} [properties] Properties to set + * @returns {message.support.optimisation.OptimiserEstimate} OptimiserEstimate instance + */ + OptimiserEstimate.create = function create(properties) { + return new OptimiserEstimate(properties); + }; + + /** + * Encodes the specified OptimiserEstimate message. Does not implicitly {@link message.support.optimisation.OptimiserEstimate.verify|verify} messages. + * @param {message.support.optimisation.OptimiserEstimate$Properties} message OptimiserEstimate message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + OptimiserEstimate.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.generation != null && message.hasOwnProperty("generation")) + writer.uint32(/* id 1, wireType 0 =*/8).int32(message.generation); + if (message.estimate != null && message.hasOwnProperty("estimate")) + $root.vec.encode(message.estimate, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.covariance != null && message.hasOwnProperty("covariance")) + $root.mat.encode(message.covariance, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified OptimiserEstimate message, length delimited. Does not implicitly {@link message.support.optimisation.OptimiserEstimate.verify|verify} messages. + * @param {message.support.optimisation.OptimiserEstimate$Properties} message OptimiserEstimate message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + OptimiserEstimate.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes an OptimiserEstimate message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.support.optimisation.OptimiserEstimate} OptimiserEstimate + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + OptimiserEstimate.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.support.optimisation.OptimiserEstimate(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.generation = reader.int32(); + break; + case 2: + message.estimate = $root.vec.decode(reader, reader.uint32()); + break; + case 3: + message.covariance = $root.mat.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes an OptimiserEstimate message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.support.optimisation.OptimiserEstimate} OptimiserEstimate + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + OptimiserEstimate.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies an OptimiserEstimate message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + OptimiserEstimate.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.generation != null && message.hasOwnProperty("generation")) + if (!$util.isInteger(message.generation)) + return "generation: integer expected"; + if (message.estimate != null && message.hasOwnProperty("estimate")) { + var error = $root.vec.verify(message.estimate); + if (error) + return "estimate." + error; + } + if (message.covariance != null && message.hasOwnProperty("covariance")) { + var error = $root.mat.verify(message.covariance); + if (error) + return "covariance." + error; + } + return null; + }; + + /** + * Creates an OptimiserEstimate message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.support.optimisation.OptimiserEstimate} OptimiserEstimate + */ + OptimiserEstimate.fromObject = function fromObject(object) { + if (object instanceof $root.message.support.optimisation.OptimiserEstimate) + return object; + var message = new $root.message.support.optimisation.OptimiserEstimate(); + if (object.generation != null) + message.generation = object.generation | 0; + if (object.estimate != null) { + if (typeof object.estimate !== "object") + throw TypeError(".message.support.optimisation.OptimiserEstimate.estimate: object expected"); + message.estimate = $root.vec.fromObject(object.estimate); + } + if (object.covariance != null) { + if (typeof object.covariance !== "object") + throw TypeError(".message.support.optimisation.OptimiserEstimate.covariance: object expected"); + message.covariance = $root.mat.fromObject(object.covariance); + } + return message; + }; + + /** + * Creates an OptimiserEstimate message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.support.optimisation.OptimiserEstimate.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.support.optimisation.OptimiserEstimate} OptimiserEstimate + */ + OptimiserEstimate.from = OptimiserEstimate.fromObject; + + /** + * Creates a plain object from an OptimiserEstimate message. Also converts values to other types if specified. + * @param {message.support.optimisation.OptimiserEstimate} message OptimiserEstimate + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + OptimiserEstimate.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.generation = 0; + object.estimate = null; + object.covariance = null; + } + if (message.generation != null && message.hasOwnProperty("generation")) + object.generation = message.generation; + if (message.estimate != null && message.hasOwnProperty("estimate")) + object.estimate = $root.vec.toObject(message.estimate, options); + if (message.covariance != null && message.hasOwnProperty("covariance")) + object.covariance = $root.mat.toObject(message.covariance, options); + return object; + }; + + /** + * Creates a plain object from this OptimiserEstimate message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + OptimiserEstimate.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this OptimiserEstimate to JSON. + * @returns {Object.} JSON object + */ + OptimiserEstimate.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return OptimiserEstimate; + })(); + + optimisation.OptimiserParameters = (function() { + + /** + * Properties of an OptimiserParameters. + * @typedef message.support.optimisation.OptimiserParameters$Properties + * @type {Object} + * @property {message.support.optimisation.OptimiserEstimate$Properties} [initial] OptimiserParameters initial. + * @property {vec$Properties} [upperBound] OptimiserParameters upperBound. + * @property {vec$Properties} [lowerBound] OptimiserParameters lowerBound. + * @property {number} [batchSize] OptimiserParameters batchSize. + */ + + /** + * Constructs a new OptimiserParameters. + * @exports message.support.optimisation.OptimiserParameters + * @constructor + * @param {message.support.optimisation.OptimiserParameters$Properties=} [properties] Properties to set + */ + function OptimiserParameters(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * OptimiserParameters initial. + * @type {(message.support.optimisation.OptimiserEstimate$Properties|null)} + */ + OptimiserParameters.prototype.initial = null; + + /** + * OptimiserParameters upperBound. + * @type {(vec$Properties|null)} + */ + OptimiserParameters.prototype.upperBound = null; + + /** + * OptimiserParameters lowerBound. + * @type {(vec$Properties|null)} + */ + OptimiserParameters.prototype.lowerBound = null; + + /** + * OptimiserParameters batchSize. + * @type {number} + */ + OptimiserParameters.prototype.batchSize = 0; + + /** + * Creates a new OptimiserParameters instance using the specified properties. + * @param {message.support.optimisation.OptimiserParameters$Properties=} [properties] Properties to set + * @returns {message.support.optimisation.OptimiserParameters} OptimiserParameters instance + */ + OptimiserParameters.create = function create(properties) { + return new OptimiserParameters(properties); + }; + + /** + * Encodes the specified OptimiserParameters message. Does not implicitly {@link message.support.optimisation.OptimiserParameters.verify|verify} messages. + * @param {message.support.optimisation.OptimiserParameters$Properties} message OptimiserParameters message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + OptimiserParameters.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.initial != null && message.hasOwnProperty("initial")) + $root.message.support.optimisation.OptimiserEstimate.encode(message.initial, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.upperBound != null && message.hasOwnProperty("upperBound")) + $root.vec.encode(message.upperBound, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.lowerBound != null && message.hasOwnProperty("lowerBound")) + $root.vec.encode(message.lowerBound, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + if (message.batchSize != null && message.hasOwnProperty("batchSize")) + writer.uint32(/* id 4, wireType 0 =*/32).uint32(message.batchSize); + return writer; + }; + + /** + * Encodes the specified OptimiserParameters message, length delimited. Does not implicitly {@link message.support.optimisation.OptimiserParameters.verify|verify} messages. + * @param {message.support.optimisation.OptimiserParameters$Properties} message OptimiserParameters message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + OptimiserParameters.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes an OptimiserParameters message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.support.optimisation.OptimiserParameters} OptimiserParameters + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + OptimiserParameters.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.support.optimisation.OptimiserParameters(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.initial = $root.message.support.optimisation.OptimiserEstimate.decode(reader, reader.uint32()); + break; + case 2: + message.upperBound = $root.vec.decode(reader, reader.uint32()); + break; + case 3: + message.lowerBound = $root.vec.decode(reader, reader.uint32()); + break; + case 4: + message.batchSize = reader.uint32(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes an OptimiserParameters message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.support.optimisation.OptimiserParameters} OptimiserParameters + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + OptimiserParameters.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies an OptimiserParameters message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + OptimiserParameters.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.initial != null && message.hasOwnProperty("initial")) { + var error = $root.message.support.optimisation.OptimiserEstimate.verify(message.initial); + if (error) + return "initial." + error; + } + if (message.upperBound != null && message.hasOwnProperty("upperBound")) { + var error = $root.vec.verify(message.upperBound); + if (error) + return "upperBound." + error; + } + if (message.lowerBound != null && message.hasOwnProperty("lowerBound")) { + var error = $root.vec.verify(message.lowerBound); + if (error) + return "lowerBound." + error; + } + if (message.batchSize != null && message.hasOwnProperty("batchSize")) + if (!$util.isInteger(message.batchSize)) + return "batchSize: integer expected"; + return null; + }; + + /** + * Creates an OptimiserParameters message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.support.optimisation.OptimiserParameters} OptimiserParameters + */ + OptimiserParameters.fromObject = function fromObject(object) { + if (object instanceof $root.message.support.optimisation.OptimiserParameters) + return object; + var message = new $root.message.support.optimisation.OptimiserParameters(); + if (object.initial != null) { + if (typeof object.initial !== "object") + throw TypeError(".message.support.optimisation.OptimiserParameters.initial: object expected"); + message.initial = $root.message.support.optimisation.OptimiserEstimate.fromObject(object.initial); + } + if (object.upperBound != null) { + if (typeof object.upperBound !== "object") + throw TypeError(".message.support.optimisation.OptimiserParameters.upperBound: object expected"); + message.upperBound = $root.vec.fromObject(object.upperBound); + } + if (object.lowerBound != null) { + if (typeof object.lowerBound !== "object") + throw TypeError(".message.support.optimisation.OptimiserParameters.lowerBound: object expected"); + message.lowerBound = $root.vec.fromObject(object.lowerBound); + } + if (object.batchSize != null) + message.batchSize = object.batchSize >>> 0; + return message; + }; + + /** + * Creates an OptimiserParameters message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.support.optimisation.OptimiserParameters.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.support.optimisation.OptimiserParameters} OptimiserParameters + */ + OptimiserParameters.from = OptimiserParameters.fromObject; + + /** + * Creates a plain object from an OptimiserParameters message. Also converts values to other types if specified. + * @param {message.support.optimisation.OptimiserParameters} message OptimiserParameters + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + OptimiserParameters.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.initial = null; + object.upperBound = null; + object.lowerBound = null; + object.batchSize = 0; + } + if (message.initial != null && message.hasOwnProperty("initial")) + object.initial = $root.message.support.optimisation.OptimiserEstimate.toObject(message.initial, options); + if (message.upperBound != null && message.hasOwnProperty("upperBound")) + object.upperBound = $root.vec.toObject(message.upperBound, options); + if (message.lowerBound != null && message.hasOwnProperty("lowerBound")) + object.lowerBound = $root.vec.toObject(message.lowerBound, options); + if (message.batchSize != null && message.hasOwnProperty("batchSize")) + object.batchSize = message.batchSize; + return object; + }; + + /** + * Creates a plain object from this OptimiserParameters message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + OptimiserParameters.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this OptimiserParameters to JSON. + * @returns {Object.} JSON object + */ + OptimiserParameters.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return OptimiserParameters; + })(); + + optimisation.Episode = (function() { + + /** + * Properties of an Episode. + * @typedef message.support.optimisation.Episode$Properties + * @type {Object} + * @property {string} [group] Episode group. + * @property {number} [generation] Episode generation. + * @property {vec$Properties} [values] Episode values. + * @property {mat$Properties} [covariance] Episode covariance. + * @property {Array.} [fitness] Episode fitness. + */ + + /** + * Constructs a new Episode. + * @exports message.support.optimisation.Episode + * @constructor + * @param {message.support.optimisation.Episode$Properties=} [properties] Properties to set + */ + function Episode(properties) { + this.fitness = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Episode group. + * @type {string} + */ + Episode.prototype.group = ""; + + /** + * Episode generation. + * @type {number} + */ + Episode.prototype.generation = 0; + + /** + * Episode values. + * @type {(vec$Properties|null)} + */ + Episode.prototype.values = null; + + /** + * Episode covariance. + * @type {(mat$Properties|null)} + */ + Episode.prototype.covariance = null; + + /** + * Episode fitness. + * @type {Array.} + */ + Episode.prototype.fitness = $util.emptyArray; + + /** + * Creates a new Episode instance using the specified properties. + * @param {message.support.optimisation.Episode$Properties=} [properties] Properties to set + * @returns {message.support.optimisation.Episode} Episode instance + */ + Episode.create = function create(properties) { + return new Episode(properties); + }; + + /** + * Encodes the specified Episode message. Does not implicitly {@link message.support.optimisation.Episode.verify|verify} messages. + * @param {message.support.optimisation.Episode$Properties} message Episode message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Episode.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.group != null && message.hasOwnProperty("group")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.group); + if (message.generation != null && message.hasOwnProperty("generation")) + writer.uint32(/* id 2, wireType 0 =*/16).int32(message.generation); + if (message.values != null && message.hasOwnProperty("values")) + $root.vec.encode(message.values, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + if (message.covariance != null && message.hasOwnProperty("covariance")) + $root.mat.encode(message.covariance, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); + if (message.fitness != null && message.fitness.length) + for (var i = 0; i < message.fitness.length; ++i) + $root.message.support.optimisation.Episode.Fitness.encode(message.fitness[i], writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified Episode message, length delimited. Does not implicitly {@link message.support.optimisation.Episode.verify|verify} messages. + * @param {message.support.optimisation.Episode$Properties} message Episode message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Episode.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes an Episode message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.support.optimisation.Episode} Episode + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Episode.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.support.optimisation.Episode(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.group = reader.string(); + break; + case 2: + message.generation = reader.int32(); + break; + case 3: + message.values = $root.vec.decode(reader, reader.uint32()); + break; + case 4: + message.covariance = $root.mat.decode(reader, reader.uint32()); + break; + case 5: + if (!(message.fitness && message.fitness.length)) + message.fitness = []; + message.fitness.push($root.message.support.optimisation.Episode.Fitness.decode(reader, reader.uint32())); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes an Episode message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.support.optimisation.Episode} Episode + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Episode.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies an Episode message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + Episode.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.group != null && message.hasOwnProperty("group")) + if (!$util.isString(message.group)) + return "group: string expected"; + if (message.generation != null && message.hasOwnProperty("generation")) + if (!$util.isInteger(message.generation)) + return "generation: integer expected"; + if (message.values != null && message.hasOwnProperty("values")) { + var error = $root.vec.verify(message.values); + if (error) + return "values." + error; + } + if (message.covariance != null && message.hasOwnProperty("covariance")) { + var error = $root.mat.verify(message.covariance); + if (error) + return "covariance." + error; + } + if (message.fitness != null && message.hasOwnProperty("fitness")) { + if (!Array.isArray(message.fitness)) + return "fitness: array expected"; + for (var i = 0; i < message.fitness.length; ++i) { + var error = $root.message.support.optimisation.Episode.Fitness.verify(message.fitness[i]); + if (error) + return "fitness." + error; + } + } + return null; + }; + + /** + * Creates an Episode message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.support.optimisation.Episode} Episode + */ + Episode.fromObject = function fromObject(object) { + if (object instanceof $root.message.support.optimisation.Episode) + return object; + var message = new $root.message.support.optimisation.Episode(); + if (object.group != null) + message.group = String(object.group); + if (object.generation != null) + message.generation = object.generation | 0; + if (object.values != null) { + if (typeof object.values !== "object") + throw TypeError(".message.support.optimisation.Episode.values: object expected"); + message.values = $root.vec.fromObject(object.values); + } + if (object.covariance != null) { + if (typeof object.covariance !== "object") + throw TypeError(".message.support.optimisation.Episode.covariance: object expected"); + message.covariance = $root.mat.fromObject(object.covariance); + } + if (object.fitness) { + if (!Array.isArray(object.fitness)) + throw TypeError(".message.support.optimisation.Episode.fitness: array expected"); + message.fitness = []; + for (var i = 0; i < object.fitness.length; ++i) { + if (typeof object.fitness[i] !== "object") + throw TypeError(".message.support.optimisation.Episode.fitness: object expected"); + message.fitness[i] = $root.message.support.optimisation.Episode.Fitness.fromObject(object.fitness[i]); + } + } + return message; + }; + + /** + * Creates an Episode message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.support.optimisation.Episode.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.support.optimisation.Episode} Episode + */ + Episode.from = Episode.fromObject; + + /** + * Creates a plain object from an Episode message. Also converts values to other types if specified. + * @param {message.support.optimisation.Episode} message Episode + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Episode.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.fitness = []; + if (options.defaults) { + object.group = ""; + object.generation = 0; + object.values = null; + object.covariance = null; + } + if (message.group != null && message.hasOwnProperty("group")) + object.group = message.group; + if (message.generation != null && message.hasOwnProperty("generation")) + object.generation = message.generation; + if (message.values != null && message.hasOwnProperty("values")) + object.values = $root.vec.toObject(message.values, options); + if (message.covariance != null && message.hasOwnProperty("covariance")) + object.covariance = $root.mat.toObject(message.covariance, options); + if (message.fitness && message.fitness.length) { + object.fitness = []; + for (var j = 0; j < message.fitness.length; ++j) + object.fitness[j] = $root.message.support.optimisation.Episode.Fitness.toObject(message.fitness[j], options); + } + return object; + }; + + /** + * Creates a plain object from this Episode message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Episode.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this Episode to JSON. + * @returns {Object.} JSON object + */ + Episode.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + Episode.Fitness = (function() { + + /** + * Properties of a Fitness. + * @typedef message.support.optimisation.Episode.Fitness$Properties + * @type {Object} + * @property {number} [fitness] Fitness fitness. + * @property {number} [weight] Fitness weight. + */ + + /** + * Constructs a new Fitness. + * @exports message.support.optimisation.Episode.Fitness + * @constructor + * @param {message.support.optimisation.Episode.Fitness$Properties=} [properties] Properties to set + */ + function Fitness(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Fitness fitness. + * @type {number} + */ + Fitness.prototype.fitness = 0; + + /** + * Fitness weight. + * @type {number} + */ + Fitness.prototype.weight = 0; + + /** + * Creates a new Fitness instance using the specified properties. + * @param {message.support.optimisation.Episode.Fitness$Properties=} [properties] Properties to set + * @returns {message.support.optimisation.Episode.Fitness} Fitness instance + */ + Fitness.create = function create(properties) { + return new Fitness(properties); + }; + + /** + * Encodes the specified Fitness message. Does not implicitly {@link message.support.optimisation.Episode.Fitness.verify|verify} messages. + * @param {message.support.optimisation.Episode.Fitness$Properties} message Fitness message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Fitness.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.fitness != null && message.hasOwnProperty("fitness")) + writer.uint32(/* id 1, wireType 1 =*/9).double(message.fitness); + if (message.weight != null && message.hasOwnProperty("weight")) + writer.uint32(/* id 2, wireType 1 =*/17).double(message.weight); + return writer; + }; + + /** + * Encodes the specified Fitness message, length delimited. Does not implicitly {@link message.support.optimisation.Episode.Fitness.verify|verify} messages. + * @param {message.support.optimisation.Episode.Fitness$Properties} message Fitness message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Fitness.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a Fitness message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.support.optimisation.Episode.Fitness} Fitness + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Fitness.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.support.optimisation.Episode.Fitness(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.fitness = reader.double(); + break; + case 2: + message.weight = reader.double(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a Fitness message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.support.optimisation.Episode.Fitness} Fitness + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Fitness.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a Fitness message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + Fitness.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.fitness != null && message.hasOwnProperty("fitness")) + if (typeof message.fitness !== "number") + return "fitness: number expected"; + if (message.weight != null && message.hasOwnProperty("weight")) + if (typeof message.weight !== "number") + return "weight: number expected"; + return null; + }; + + /** + * Creates a Fitness message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.support.optimisation.Episode.Fitness} Fitness + */ + Fitness.fromObject = function fromObject(object) { + if (object instanceof $root.message.support.optimisation.Episode.Fitness) + return object; + var message = new $root.message.support.optimisation.Episode.Fitness(); + if (object.fitness != null) + message.fitness = Number(object.fitness); + if (object.weight != null) + message.weight = Number(object.weight); + return message; + }; + + /** + * Creates a Fitness message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.support.optimisation.Episode.Fitness.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.support.optimisation.Episode.Fitness} Fitness + */ + Fitness.from = Fitness.fromObject; + + /** + * Creates a plain object from a Fitness message. Also converts values to other types if specified. + * @param {message.support.optimisation.Episode.Fitness} message Fitness + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Fitness.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.fitness = 0; + object.weight = 0; + } + if (message.fitness != null && message.hasOwnProperty("fitness")) + object.fitness = message.fitness; + if (message.weight != null && message.hasOwnProperty("weight")) + object.weight = message.weight; + return object; + }; + + /** + * Creates a plain object from this Fitness message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Fitness.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this Fitness to JSON. + * @returns {Object.} JSON object + */ + Fitness.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return Fitness; + })(); + + return Episode; + })(); + + optimisation.Estimate = (function() { + + /** + * Properties of an Estimate. + * @typedef message.support.optimisation.Estimate$Properties + * @type {Object} + * @property {string} [group] Estimate group. + * @property {number} [generation] Estimate generation. + * @property {vec$Properties} [values] Estimate values. + * @property {mat$Properties} [covariance] Estimate covariance. + * @property {Array.} [estimateEpisode] Estimate estimateEpisode. + * @property {Array.} [episode] Estimate episode. + */ + + /** + * Constructs a new Estimate. + * @exports message.support.optimisation.Estimate + * @constructor + * @param {message.support.optimisation.Estimate$Properties=} [properties] Properties to set + */ + function Estimate(properties) { + this.estimateEpisode = []; + this.episode = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Estimate group. + * @type {string} + */ + Estimate.prototype.group = ""; + + /** + * Estimate generation. + * @type {number} + */ + Estimate.prototype.generation = 0; + + /** + * Estimate values. + * @type {(vec$Properties|null)} + */ + Estimate.prototype.values = null; + + /** + * Estimate covariance. + * @type {(mat$Properties|null)} + */ + Estimate.prototype.covariance = null; + + /** + * Estimate estimateEpisode. + * @type {Array.} + */ + Estimate.prototype.estimateEpisode = $util.emptyArray; + + /** + * Estimate episode. + * @type {Array.} + */ + Estimate.prototype.episode = $util.emptyArray; + + /** + * Creates a new Estimate instance using the specified properties. + * @param {message.support.optimisation.Estimate$Properties=} [properties] Properties to set + * @returns {message.support.optimisation.Estimate} Estimate instance + */ + Estimate.create = function create(properties) { + return new Estimate(properties); + }; + + /** + * Encodes the specified Estimate message. Does not implicitly {@link message.support.optimisation.Estimate.verify|verify} messages. + * @param {message.support.optimisation.Estimate$Properties} message Estimate message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Estimate.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.group != null && message.hasOwnProperty("group")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.group); + if (message.generation != null && message.hasOwnProperty("generation")) + writer.uint32(/* id 2, wireType 0 =*/16).int32(message.generation); + if (message.values != null && message.hasOwnProperty("values")) + $root.vec.encode(message.values, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + if (message.covariance != null && message.hasOwnProperty("covariance")) + $root.mat.encode(message.covariance, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); + if (message.estimateEpisode != null && message.estimateEpisode.length) + for (var i = 0; i < message.estimateEpisode.length; ++i) + $root.message.support.optimisation.Episode.encode(message.estimateEpisode[i], writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); + if (message.episode != null && message.episode.length) + for (var i = 0; i < message.episode.length; ++i) + $root.message.support.optimisation.Episode.encode(message.episode[i], writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified Estimate message, length delimited. Does not implicitly {@link message.support.optimisation.Estimate.verify|verify} messages. + * @param {message.support.optimisation.Estimate$Properties} message Estimate message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Estimate.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes an Estimate message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.support.optimisation.Estimate} Estimate + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Estimate.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.support.optimisation.Estimate(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.group = reader.string(); + break; + case 2: + message.generation = reader.int32(); + break; + case 3: + message.values = $root.vec.decode(reader, reader.uint32()); + break; + case 4: + message.covariance = $root.mat.decode(reader, reader.uint32()); + break; + case 5: + if (!(message.estimateEpisode && message.estimateEpisode.length)) + message.estimateEpisode = []; + message.estimateEpisode.push($root.message.support.optimisation.Episode.decode(reader, reader.uint32())); + break; + case 6: + if (!(message.episode && message.episode.length)) + message.episode = []; + message.episode.push($root.message.support.optimisation.Episode.decode(reader, reader.uint32())); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes an Estimate message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.support.optimisation.Estimate} Estimate + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Estimate.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies an Estimate message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + Estimate.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.group != null && message.hasOwnProperty("group")) + if (!$util.isString(message.group)) + return "group: string expected"; + if (message.generation != null && message.hasOwnProperty("generation")) + if (!$util.isInteger(message.generation)) + return "generation: integer expected"; + if (message.values != null && message.hasOwnProperty("values")) { + var error = $root.vec.verify(message.values); + if (error) + return "values." + error; + } + if (message.covariance != null && message.hasOwnProperty("covariance")) { + var error = $root.mat.verify(message.covariance); + if (error) + return "covariance." + error; + } + if (message.estimateEpisode != null && message.hasOwnProperty("estimateEpisode")) { + if (!Array.isArray(message.estimateEpisode)) + return "estimateEpisode: array expected"; + for (var i = 0; i < message.estimateEpisode.length; ++i) { + var error = $root.message.support.optimisation.Episode.verify(message.estimateEpisode[i]); + if (error) + return "estimateEpisode." + error; + } + } + if (message.episode != null && message.hasOwnProperty("episode")) { + if (!Array.isArray(message.episode)) + return "episode: array expected"; + for (var i = 0; i < message.episode.length; ++i) { + var error = $root.message.support.optimisation.Episode.verify(message.episode[i]); + if (error) + return "episode." + error; + } + } + return null; + }; + + /** + * Creates an Estimate message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.support.optimisation.Estimate} Estimate + */ + Estimate.fromObject = function fromObject(object) { + if (object instanceof $root.message.support.optimisation.Estimate) + return object; + var message = new $root.message.support.optimisation.Estimate(); + if (object.group != null) + message.group = String(object.group); + if (object.generation != null) + message.generation = object.generation | 0; + if (object.values != null) { + if (typeof object.values !== "object") + throw TypeError(".message.support.optimisation.Estimate.values: object expected"); + message.values = $root.vec.fromObject(object.values); + } + if (object.covariance != null) { + if (typeof object.covariance !== "object") + throw TypeError(".message.support.optimisation.Estimate.covariance: object expected"); + message.covariance = $root.mat.fromObject(object.covariance); + } + if (object.estimateEpisode) { + if (!Array.isArray(object.estimateEpisode)) + throw TypeError(".message.support.optimisation.Estimate.estimateEpisode: array expected"); + message.estimateEpisode = []; + for (var i = 0; i < object.estimateEpisode.length; ++i) { + if (typeof object.estimateEpisode[i] !== "object") + throw TypeError(".message.support.optimisation.Estimate.estimateEpisode: object expected"); + message.estimateEpisode[i] = $root.message.support.optimisation.Episode.fromObject(object.estimateEpisode[i]); + } + } + if (object.episode) { + if (!Array.isArray(object.episode)) + throw TypeError(".message.support.optimisation.Estimate.episode: array expected"); + message.episode = []; + for (var i = 0; i < object.episode.length; ++i) { + if (typeof object.episode[i] !== "object") + throw TypeError(".message.support.optimisation.Estimate.episode: object expected"); + message.episode[i] = $root.message.support.optimisation.Episode.fromObject(object.episode[i]); + } + } + return message; + }; + + /** + * Creates an Estimate message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.support.optimisation.Estimate.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.support.optimisation.Estimate} Estimate + */ + Estimate.from = Estimate.fromObject; + + /** + * Creates a plain object from an Estimate message. Also converts values to other types if specified. + * @param {message.support.optimisation.Estimate} message Estimate + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Estimate.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) { + object.estimateEpisode = []; + object.episode = []; + } + if (options.defaults) { + object.group = ""; + object.generation = 0; + object.values = null; + object.covariance = null; + } + if (message.group != null && message.hasOwnProperty("group")) + object.group = message.group; + if (message.generation != null && message.hasOwnProperty("generation")) + object.generation = message.generation; + if (message.values != null && message.hasOwnProperty("values")) + object.values = $root.vec.toObject(message.values, options); + if (message.covariance != null && message.hasOwnProperty("covariance")) + object.covariance = $root.mat.toObject(message.covariance, options); + if (message.estimateEpisode && message.estimateEpisode.length) { + object.estimateEpisode = []; + for (var j = 0; j < message.estimateEpisode.length; ++j) + object.estimateEpisode[j] = $root.message.support.optimisation.Episode.toObject(message.estimateEpisode[j], options); + } + if (message.episode && message.episode.length) { + object.episode = []; + for (var j = 0; j < message.episode.length; ++j) + object.episode[j] = $root.message.support.optimisation.Episode.toObject(message.episode[j], options); + } + return object; + }; + + /** + * Creates a plain object from this Estimate message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Estimate.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this Estimate to JSON. + * @returns {Object.} JSON object + */ + Estimate.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return Estimate; + })(); + + return optimisation; + })(); + + return support; + })(); + + message.vision = (function() { + + /** + * Namespace vision. + * @exports message.vision + * @namespace + */ + var vision = {}; + + vision.ClassifiedImage = (function() { + + /** + * Properties of a ClassifiedImage. + * @typedef message.vision.ClassifiedImage$Properties + * @type {Object} + * @property {message.input.Sensors$Properties} [sensors] ClassifiedImage sensors. + * @property {message.input.Image$Properties} [image] ClassifiedImage image. + * @property {uvec2$Properties} [dimensions] ClassifiedImage dimensions. + * @property {Array.} [ballSeedPoints] ClassifiedImage ballSeedPoints. + * @property {Array.} [ballPoints] ClassifiedImage ballPoints. + * @property {message.vision.Line$Properties} [horizon] ClassifiedImage horizon. + * @property {Array.} [visualHorizon] ClassifiedImage visualHorizon. + * @property {Array.} [horizontalSegments] ClassifiedImage horizontalSegments. + * @property {Array.} [verticalSegments] ClassifiedImage verticalSegments. + */ + + /** + * Constructs a new ClassifiedImage. + * @exports message.vision.ClassifiedImage + * @constructor + * @param {message.vision.ClassifiedImage$Properties=} [properties] Properties to set + */ + function ClassifiedImage(properties) { + this.ballSeedPoints = []; + this.ballPoints = []; + this.visualHorizon = []; + this.horizontalSegments = []; + this.verticalSegments = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * ClassifiedImage sensors. + * @type {(message.input.Sensors$Properties|null)} + */ + ClassifiedImage.prototype.sensors = null; + + /** + * ClassifiedImage image. + * @type {(message.input.Image$Properties|null)} + */ + ClassifiedImage.prototype.image = null; + + /** + * ClassifiedImage dimensions. + * @type {(uvec2$Properties|null)} + */ + ClassifiedImage.prototype.dimensions = null; + + /** + * ClassifiedImage ballSeedPoints. + * @type {Array.} + */ + ClassifiedImage.prototype.ballSeedPoints = $util.emptyArray; + + /** + * ClassifiedImage ballPoints. + * @type {Array.} + */ + ClassifiedImage.prototype.ballPoints = $util.emptyArray; + + /** + * ClassifiedImage horizon. + * @type {(message.vision.Line$Properties|null)} + */ + ClassifiedImage.prototype.horizon = null; + + /** + * ClassifiedImage visualHorizon. + * @type {Array.} + */ + ClassifiedImage.prototype.visualHorizon = $util.emptyArray; + + /** + * ClassifiedImage horizontalSegments. + * @type {Array.} + */ + ClassifiedImage.prototype.horizontalSegments = $util.emptyArray; + + /** + * ClassifiedImage verticalSegments. + * @type {Array.} + */ + ClassifiedImage.prototype.verticalSegments = $util.emptyArray; + + /** + * Creates a new ClassifiedImage instance using the specified properties. + * @param {message.vision.ClassifiedImage$Properties=} [properties] Properties to set + * @returns {message.vision.ClassifiedImage} ClassifiedImage instance + */ + ClassifiedImage.create = function create(properties) { + return new ClassifiedImage(properties); + }; + + /** + * Encodes the specified ClassifiedImage message. Does not implicitly {@link message.vision.ClassifiedImage.verify|verify} messages. + * @param {message.vision.ClassifiedImage$Properties} message ClassifiedImage message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ClassifiedImage.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.sensors != null && message.hasOwnProperty("sensors")) + $root.message.input.Sensors.encode(message.sensors, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.image != null && message.hasOwnProperty("image")) + $root.message.input.Image.encode(message.image, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.dimensions != null && message.hasOwnProperty("dimensions")) + $root.uvec2.encode(message.dimensions, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + if (message.ballSeedPoints != null && message.ballSeedPoints.length) + for (var i = 0; i < message.ballSeedPoints.length; ++i) + $root.message.vision.ClassifiedImage.SeedPoints.encode(message.ballSeedPoints[i], writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); + if (message.ballPoints != null && message.ballPoints.length) + for (var i = 0; i < message.ballPoints.length; ++i) + $root.ivec2.encode(message.ballPoints[i], writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); + if (message.horizon != null && message.hasOwnProperty("horizon")) + $root.message.vision.Line.encode(message.horizon, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim(); + if (message.visualHorizon != null && message.visualHorizon.length) + for (var i = 0; i < message.visualHorizon.length; ++i) + $root.ivec2.encode(message.visualHorizon[i], writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim(); + if (message.horizontalSegments != null && message.horizontalSegments.length) + for (var i = 0; i < message.horizontalSegments.length; ++i) + $root.message.vision.ClassifiedImage.Segment.encode(message.horizontalSegments[i], writer.uint32(/* id 8, wireType 2 =*/66).fork()).ldelim(); + if (message.verticalSegments != null && message.verticalSegments.length) + for (var i = 0; i < message.verticalSegments.length; ++i) + $root.message.vision.ClassifiedImage.Segment.encode(message.verticalSegments[i], writer.uint32(/* id 9, wireType 2 =*/74).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified ClassifiedImage message, length delimited. Does not implicitly {@link message.vision.ClassifiedImage.verify|verify} messages. + * @param {message.vision.ClassifiedImage$Properties} message ClassifiedImage message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ClassifiedImage.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a ClassifiedImage message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.vision.ClassifiedImage} ClassifiedImage + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ClassifiedImage.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.vision.ClassifiedImage(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.sensors = $root.message.input.Sensors.decode(reader, reader.uint32()); + break; + case 2: + message.image = $root.message.input.Image.decode(reader, reader.uint32()); + break; + case 3: + message.dimensions = $root.uvec2.decode(reader, reader.uint32()); + break; + case 4: + if (!(message.ballSeedPoints && message.ballSeedPoints.length)) + message.ballSeedPoints = []; + message.ballSeedPoints.push($root.message.vision.ClassifiedImage.SeedPoints.decode(reader, reader.uint32())); + break; + case 5: + if (!(message.ballPoints && message.ballPoints.length)) + message.ballPoints = []; + message.ballPoints.push($root.ivec2.decode(reader, reader.uint32())); + break; + case 6: + message.horizon = $root.message.vision.Line.decode(reader, reader.uint32()); + break; + case 7: + if (!(message.visualHorizon && message.visualHorizon.length)) + message.visualHorizon = []; + message.visualHorizon.push($root.ivec2.decode(reader, reader.uint32())); + break; + case 8: + if (!(message.horizontalSegments && message.horizontalSegments.length)) + message.horizontalSegments = []; + message.horizontalSegments.push($root.message.vision.ClassifiedImage.Segment.decode(reader, reader.uint32())); + break; + case 9: + if (!(message.verticalSegments && message.verticalSegments.length)) + message.verticalSegments = []; + message.verticalSegments.push($root.message.vision.ClassifiedImage.Segment.decode(reader, reader.uint32())); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a ClassifiedImage message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.vision.ClassifiedImage} ClassifiedImage + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ClassifiedImage.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a ClassifiedImage message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + ClassifiedImage.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.sensors != null && message.hasOwnProperty("sensors")) { + var error = $root.message.input.Sensors.verify(message.sensors); + if (error) + return "sensors." + error; + } + if (message.image != null && message.hasOwnProperty("image")) { + var error = $root.message.input.Image.verify(message.image); + if (error) + return "image." + error; + } + if (message.dimensions != null && message.hasOwnProperty("dimensions")) { + var error = $root.uvec2.verify(message.dimensions); + if (error) + return "dimensions." + error; + } + if (message.ballSeedPoints != null && message.hasOwnProperty("ballSeedPoints")) { + if (!Array.isArray(message.ballSeedPoints)) + return "ballSeedPoints: array expected"; + for (var i = 0; i < message.ballSeedPoints.length; ++i) { + var error = $root.message.vision.ClassifiedImage.SeedPoints.verify(message.ballSeedPoints[i]); + if (error) + return "ballSeedPoints." + error; + } + } + if (message.ballPoints != null && message.hasOwnProperty("ballPoints")) { + if (!Array.isArray(message.ballPoints)) + return "ballPoints: array expected"; + for (var i = 0; i < message.ballPoints.length; ++i) { + var error = $root.ivec2.verify(message.ballPoints[i]); + if (error) + return "ballPoints." + error; + } + } + if (message.horizon != null && message.hasOwnProperty("horizon")) { + var error = $root.message.vision.Line.verify(message.horizon); + if (error) + return "horizon." + error; + } + if (message.visualHorizon != null && message.hasOwnProperty("visualHorizon")) { + if (!Array.isArray(message.visualHorizon)) + return "visualHorizon: array expected"; + for (var i = 0; i < message.visualHorizon.length; ++i) { + var error = $root.ivec2.verify(message.visualHorizon[i]); + if (error) + return "visualHorizon." + error; + } + } + if (message.horizontalSegments != null && message.hasOwnProperty("horizontalSegments")) { + if (!Array.isArray(message.horizontalSegments)) + return "horizontalSegments: array expected"; + for (var i = 0; i < message.horizontalSegments.length; ++i) { + var error = $root.message.vision.ClassifiedImage.Segment.verify(message.horizontalSegments[i]); + if (error) + return "horizontalSegments." + error; + } + } + if (message.verticalSegments != null && message.hasOwnProperty("verticalSegments")) { + if (!Array.isArray(message.verticalSegments)) + return "verticalSegments: array expected"; + for (var i = 0; i < message.verticalSegments.length; ++i) { + var error = $root.message.vision.ClassifiedImage.Segment.verify(message.verticalSegments[i]); + if (error) + return "verticalSegments." + error; + } + } + return null; + }; + + /** + * Creates a ClassifiedImage message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.vision.ClassifiedImage} ClassifiedImage + */ + ClassifiedImage.fromObject = function fromObject(object) { + if (object instanceof $root.message.vision.ClassifiedImage) + return object; + var message = new $root.message.vision.ClassifiedImage(); + if (object.sensors != null) { + if (typeof object.sensors !== "object") + throw TypeError(".message.vision.ClassifiedImage.sensors: object expected"); + message.sensors = $root.message.input.Sensors.fromObject(object.sensors); + } + if (object.image != null) { + if (typeof object.image !== "object") + throw TypeError(".message.vision.ClassifiedImage.image: object expected"); + message.image = $root.message.input.Image.fromObject(object.image); + } + if (object.dimensions != null) { + if (typeof object.dimensions !== "object") + throw TypeError(".message.vision.ClassifiedImage.dimensions: object expected"); + message.dimensions = $root.uvec2.fromObject(object.dimensions); + } + if (object.ballSeedPoints) { + if (!Array.isArray(object.ballSeedPoints)) + throw TypeError(".message.vision.ClassifiedImage.ballSeedPoints: array expected"); + message.ballSeedPoints = []; + for (var i = 0; i < object.ballSeedPoints.length; ++i) { + if (typeof object.ballSeedPoints[i] !== "object") + throw TypeError(".message.vision.ClassifiedImage.ballSeedPoints: object expected"); + message.ballSeedPoints[i] = $root.message.vision.ClassifiedImage.SeedPoints.fromObject(object.ballSeedPoints[i]); + } + } + if (object.ballPoints) { + if (!Array.isArray(object.ballPoints)) + throw TypeError(".message.vision.ClassifiedImage.ballPoints: array expected"); + message.ballPoints = []; + for (var i = 0; i < object.ballPoints.length; ++i) { + if (typeof object.ballPoints[i] !== "object") + throw TypeError(".message.vision.ClassifiedImage.ballPoints: object expected"); + message.ballPoints[i] = $root.ivec2.fromObject(object.ballPoints[i]); + } + } + if (object.horizon != null) { + if (typeof object.horizon !== "object") + throw TypeError(".message.vision.ClassifiedImage.horizon: object expected"); + message.horizon = $root.message.vision.Line.fromObject(object.horizon); + } + if (object.visualHorizon) { + if (!Array.isArray(object.visualHorizon)) + throw TypeError(".message.vision.ClassifiedImage.visualHorizon: array expected"); + message.visualHorizon = []; + for (var i = 0; i < object.visualHorizon.length; ++i) { + if (typeof object.visualHorizon[i] !== "object") + throw TypeError(".message.vision.ClassifiedImage.visualHorizon: object expected"); + message.visualHorizon[i] = $root.ivec2.fromObject(object.visualHorizon[i]); + } + } + if (object.horizontalSegments) { + if (!Array.isArray(object.horizontalSegments)) + throw TypeError(".message.vision.ClassifiedImage.horizontalSegments: array expected"); + message.horizontalSegments = []; + for (var i = 0; i < object.horizontalSegments.length; ++i) { + if (typeof object.horizontalSegments[i] !== "object") + throw TypeError(".message.vision.ClassifiedImage.horizontalSegments: object expected"); + message.horizontalSegments[i] = $root.message.vision.ClassifiedImage.Segment.fromObject(object.horizontalSegments[i]); + } + } + if (object.verticalSegments) { + if (!Array.isArray(object.verticalSegments)) + throw TypeError(".message.vision.ClassifiedImage.verticalSegments: array expected"); + message.verticalSegments = []; + for (var i = 0; i < object.verticalSegments.length; ++i) { + if (typeof object.verticalSegments[i] !== "object") + throw TypeError(".message.vision.ClassifiedImage.verticalSegments: object expected"); + message.verticalSegments[i] = $root.message.vision.ClassifiedImage.Segment.fromObject(object.verticalSegments[i]); + } + } + return message; + }; + + /** + * Creates a ClassifiedImage message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.vision.ClassifiedImage.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.vision.ClassifiedImage} ClassifiedImage + */ + ClassifiedImage.from = ClassifiedImage.fromObject; + + /** + * Creates a plain object from a ClassifiedImage message. Also converts values to other types if specified. + * @param {message.vision.ClassifiedImage} message ClassifiedImage + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + ClassifiedImage.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) { + object.ballSeedPoints = []; + object.ballPoints = []; + object.visualHorizon = []; + object.horizontalSegments = []; + object.verticalSegments = []; + } + if (options.defaults) { + object.sensors = null; + object.image = null; + object.dimensions = null; + object.horizon = null; + } + if (message.sensors != null && message.hasOwnProperty("sensors")) + object.sensors = $root.message.input.Sensors.toObject(message.sensors, options); + if (message.image != null && message.hasOwnProperty("image")) + object.image = $root.message.input.Image.toObject(message.image, options); + if (message.dimensions != null && message.hasOwnProperty("dimensions")) + object.dimensions = $root.uvec2.toObject(message.dimensions, options); + if (message.ballSeedPoints && message.ballSeedPoints.length) { + object.ballSeedPoints = []; + for (var j = 0; j < message.ballSeedPoints.length; ++j) + object.ballSeedPoints[j] = $root.message.vision.ClassifiedImage.SeedPoints.toObject(message.ballSeedPoints[j], options); + } + if (message.ballPoints && message.ballPoints.length) { + object.ballPoints = []; + for (var j = 0; j < message.ballPoints.length; ++j) + object.ballPoints[j] = $root.ivec2.toObject(message.ballPoints[j], options); + } + if (message.horizon != null && message.hasOwnProperty("horizon")) + object.horizon = $root.message.vision.Line.toObject(message.horizon, options); + if (message.visualHorizon && message.visualHorizon.length) { + object.visualHorizon = []; + for (var j = 0; j < message.visualHorizon.length; ++j) + object.visualHorizon[j] = $root.ivec2.toObject(message.visualHorizon[j], options); + } + if (message.horizontalSegments && message.horizontalSegments.length) { + object.horizontalSegments = []; + for (var j = 0; j < message.horizontalSegments.length; ++j) + object.horizontalSegments[j] = $root.message.vision.ClassifiedImage.Segment.toObject(message.horizontalSegments[j], options); + } + if (message.verticalSegments && message.verticalSegments.length) { + object.verticalSegments = []; + for (var j = 0; j < message.verticalSegments.length; ++j) + object.verticalSegments[j] = $root.message.vision.ClassifiedImage.Segment.toObject(message.verticalSegments[j], options); + } + return object; + }; + + /** + * Creates a plain object from this ClassifiedImage message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + ClassifiedImage.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this ClassifiedImage to JSON. + * @returns {Object.} JSON object + */ + ClassifiedImage.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * SegmentClass enum. + * @name SegmentClass + * @memberof message.vision.ClassifiedImage + * @enum {number} + * @property {number} UNKNOWN_CLASS=0 UNKNOWN_CLASS value + * @property {number} FIELD=1 FIELD value + * @property {number} BALL=2 BALL value + * @property {number} GOAL=3 GOAL value + * @property {number} LINE=4 LINE value + * @property {number} CYAN_TEAM=5 CYAN_TEAM value + * @property {number} MAGENTA_TEAM=6 MAGENTA_TEAM value + */ + ClassifiedImage.SegmentClass = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "UNKNOWN_CLASS"] = 0; + values[valuesById[1] = "FIELD"] = 1; + values[valuesById[2] = "BALL"] = 2; + values[valuesById[3] = "GOAL"] = 3; + values[valuesById[4] = "LINE"] = 4; + values[valuesById[5] = "CYAN_TEAM"] = 5; + values[valuesById[6] = "MAGENTA_TEAM"] = 6; + return values; + })(); + + ClassifiedImage.Segment = (function() { + + /** + * Properties of a Segment. + * @typedef message.vision.ClassifiedImage.Segment$Properties + * @type {Object} + * @property {message.vision.ClassifiedImage.SegmentClass} [segmentClass] Segment segmentClass. + * @property {number} [length] Segment length. + * @property {number} [subsample] Segment subsample. + * @property {ivec2$Properties} [start] Segment start. + * @property {ivec2$Properties} [end] Segment end. + * @property {ivec2$Properties} [midpoint] Segment midpoint. + * @property {number} [previous] Segment previous. + * @property {number} [next] Segment next. + */ + + /** + * Constructs a new Segment. + * @exports message.vision.ClassifiedImage.Segment + * @constructor + * @param {message.vision.ClassifiedImage.Segment$Properties=} [properties] Properties to set + */ + function Segment(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Segment segmentClass. + * @type {message.vision.ClassifiedImage.SegmentClass} + */ + Segment.prototype.segmentClass = 0; + + /** + * Segment length. + * @type {number} + */ + Segment.prototype.length = 0; + + /** + * Segment subsample. + * @type {number} + */ + Segment.prototype.subsample = 0; + + /** + * Segment start. + * @type {(ivec2$Properties|null)} + */ + Segment.prototype.start = null; + + /** + * Segment end. + * @type {(ivec2$Properties|null)} + */ + Segment.prototype.end = null; + + /** + * Segment midpoint. + * @type {(ivec2$Properties|null)} + */ + Segment.prototype.midpoint = null; + + /** + * Segment previous. + * @type {number} + */ + Segment.prototype.previous = 0; + + /** + * Segment next. + * @type {number} + */ + Segment.prototype.next = 0; + + /** + * Creates a new Segment instance using the specified properties. + * @param {message.vision.ClassifiedImage.Segment$Properties=} [properties] Properties to set + * @returns {message.vision.ClassifiedImage.Segment} Segment instance + */ + Segment.create = function create(properties) { + return new Segment(properties); + }; + + /** + * Encodes the specified Segment message. Does not implicitly {@link message.vision.ClassifiedImage.Segment.verify|verify} messages. + * @param {message.vision.ClassifiedImage.Segment$Properties} message Segment message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Segment.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.segmentClass != null && message.hasOwnProperty("segmentClass")) + writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.segmentClass); + if (message.length != null && message.hasOwnProperty("length")) + writer.uint32(/* id 2, wireType 0 =*/16).uint32(message.length); + if (message.subsample != null && message.hasOwnProperty("subsample")) + writer.uint32(/* id 3, wireType 0 =*/24).uint32(message.subsample); + if (message.start != null && message.hasOwnProperty("start")) + $root.ivec2.encode(message.start, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); + if (message.end != null && message.hasOwnProperty("end")) + $root.ivec2.encode(message.end, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); + if (message.midpoint != null && message.hasOwnProperty("midpoint")) + $root.ivec2.encode(message.midpoint, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim(); + if (message.previous != null && message.hasOwnProperty("previous")) + writer.uint32(/* id 7, wireType 0 =*/56).int32(message.previous); + if (message.next != null && message.hasOwnProperty("next")) + writer.uint32(/* id 8, wireType 0 =*/64).int32(message.next); + return writer; + }; + + /** + * Encodes the specified Segment message, length delimited. Does not implicitly {@link message.vision.ClassifiedImage.Segment.verify|verify} messages. + * @param {message.vision.ClassifiedImage.Segment$Properties} message Segment message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Segment.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a Segment message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.vision.ClassifiedImage.Segment} Segment + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Segment.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.vision.ClassifiedImage.Segment(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.segmentClass = reader.uint32(); + break; + case 2: + message.length = reader.uint32(); + break; + case 3: + message.subsample = reader.uint32(); + break; + case 4: + message.start = $root.ivec2.decode(reader, reader.uint32()); + break; + case 5: + message.end = $root.ivec2.decode(reader, reader.uint32()); + break; + case 6: + message.midpoint = $root.ivec2.decode(reader, reader.uint32()); + break; + case 7: + message.previous = reader.int32(); + break; + case 8: + message.next = reader.int32(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a Segment message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.vision.ClassifiedImage.Segment} Segment + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Segment.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a Segment message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + Segment.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.segmentClass != null && message.hasOwnProperty("segmentClass")) + switch (message.segmentClass) { + default: + return "segmentClass: enum value expected"; + case 0: + case 1: + case 2: + case 3: + case 4: + case 5: + case 6: + break; + } + if (message.length != null && message.hasOwnProperty("length")) + if (!$util.isInteger(message.length)) + return "length: integer expected"; + if (message.subsample != null && message.hasOwnProperty("subsample")) + if (!$util.isInteger(message.subsample)) + return "subsample: integer expected"; + if (message.start != null && message.hasOwnProperty("start")) { + var error = $root.ivec2.verify(message.start); + if (error) + return "start." + error; + } + if (message.end != null && message.hasOwnProperty("end")) { + var error = $root.ivec2.verify(message.end); + if (error) + return "end." + error; + } + if (message.midpoint != null && message.hasOwnProperty("midpoint")) { + var error = $root.ivec2.verify(message.midpoint); + if (error) + return "midpoint." + error; + } + if (message.previous != null && message.hasOwnProperty("previous")) + if (!$util.isInteger(message.previous)) + return "previous: integer expected"; + if (message.next != null && message.hasOwnProperty("next")) + if (!$util.isInteger(message.next)) + return "next: integer expected"; + return null; + }; + + /** + * Creates a Segment message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.vision.ClassifiedImage.Segment} Segment + */ + Segment.fromObject = function fromObject(object) { + if (object instanceof $root.message.vision.ClassifiedImage.Segment) + return object; + var message = new $root.message.vision.ClassifiedImage.Segment(); + switch (object.segmentClass) { + case "UNKNOWN_CLASS": + case 0: + message.segmentClass = 0; + break; + case "FIELD": + case 1: + message.segmentClass = 1; + break; + case "BALL": + case 2: + message.segmentClass = 2; + break; + case "GOAL": + case 3: + message.segmentClass = 3; + break; + case "LINE": + case 4: + message.segmentClass = 4; + break; + case "CYAN_TEAM": + case 5: + message.segmentClass = 5; + break; + case "MAGENTA_TEAM": + case 6: + message.segmentClass = 6; + break; + } + if (object.length != null) + message.length = object.length >>> 0; + if (object.subsample != null) + message.subsample = object.subsample >>> 0; + if (object.start != null) { + if (typeof object.start !== "object") + throw TypeError(".message.vision.ClassifiedImage.Segment.start: object expected"); + message.start = $root.ivec2.fromObject(object.start); + } + if (object.end != null) { + if (typeof object.end !== "object") + throw TypeError(".message.vision.ClassifiedImage.Segment.end: object expected"); + message.end = $root.ivec2.fromObject(object.end); + } + if (object.midpoint != null) { + if (typeof object.midpoint !== "object") + throw TypeError(".message.vision.ClassifiedImage.Segment.midpoint: object expected"); + message.midpoint = $root.ivec2.fromObject(object.midpoint); + } + if (object.previous != null) + message.previous = object.previous | 0; + if (object.next != null) + message.next = object.next | 0; + return message; + }; + + /** + * Creates a Segment message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.vision.ClassifiedImage.Segment.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.vision.ClassifiedImage.Segment} Segment + */ + Segment.from = Segment.fromObject; + + /** + * Creates a plain object from a Segment message. Also converts values to other types if specified. + * @param {message.vision.ClassifiedImage.Segment} message Segment + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Segment.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.segmentClass = options.enums === String ? "UNKNOWN_CLASS" : 0; + object.length = 0; + object.subsample = 0; + object.start = null; + object.end = null; + object.midpoint = null; + object.previous = 0; + object.next = 0; + } + if (message.segmentClass != null && message.hasOwnProperty("segmentClass")) + object.segmentClass = options.enums === String ? $root.message.vision.ClassifiedImage.SegmentClass[message.segmentClass] : message.segmentClass; + if (message.length != null && message.hasOwnProperty("length")) + object.length = message.length; + if (message.subsample != null && message.hasOwnProperty("subsample")) + object.subsample = message.subsample; + if (message.start != null && message.hasOwnProperty("start")) + object.start = $root.ivec2.toObject(message.start, options); + if (message.end != null && message.hasOwnProperty("end")) + object.end = $root.ivec2.toObject(message.end, options); + if (message.midpoint != null && message.hasOwnProperty("midpoint")) + object.midpoint = $root.ivec2.toObject(message.midpoint, options); + if (message.previous != null && message.hasOwnProperty("previous")) + object.previous = message.previous; + if (message.next != null && message.hasOwnProperty("next")) + object.next = message.next; + return object; + }; + + /** + * Creates a plain object from this Segment message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Segment.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this Segment to JSON. + * @returns {Object.} JSON object + */ + Segment.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return Segment; + })(); + + ClassifiedImage.SeedPoints = (function() { + + /** + * Properties of a SeedPoints. + * @typedef message.vision.ClassifiedImage.SeedPoints$Properties + * @type {Object} + * @property {Array.} [points] SeedPoints points. + */ + + /** + * Constructs a new SeedPoints. + * @exports message.vision.ClassifiedImage.SeedPoints + * @constructor + * @param {message.vision.ClassifiedImage.SeedPoints$Properties=} [properties] Properties to set + */ + function SeedPoints(properties) { + this.points = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * SeedPoints points. + * @type {Array.} + */ + SeedPoints.prototype.points = $util.emptyArray; + + /** + * Creates a new SeedPoints instance using the specified properties. + * @param {message.vision.ClassifiedImage.SeedPoints$Properties=} [properties] Properties to set + * @returns {message.vision.ClassifiedImage.SeedPoints} SeedPoints instance + */ + SeedPoints.create = function create(properties) { + return new SeedPoints(properties); + }; + + /** + * Encodes the specified SeedPoints message. Does not implicitly {@link message.vision.ClassifiedImage.SeedPoints.verify|verify} messages. + * @param {message.vision.ClassifiedImage.SeedPoints$Properties} message SeedPoints message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + SeedPoints.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.points != null && message.points.length) + for (var i = 0; i < message.points.length; ++i) + $root.ivec2.encode(message.points[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified SeedPoints message, length delimited. Does not implicitly {@link message.vision.ClassifiedImage.SeedPoints.verify|verify} messages. + * @param {message.vision.ClassifiedImage.SeedPoints$Properties} message SeedPoints message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + SeedPoints.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a SeedPoints message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.vision.ClassifiedImage.SeedPoints} SeedPoints + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + SeedPoints.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.vision.ClassifiedImage.SeedPoints(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (!(message.points && message.points.length)) + message.points = []; + message.points.push($root.ivec2.decode(reader, reader.uint32())); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a SeedPoints message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.vision.ClassifiedImage.SeedPoints} SeedPoints + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + SeedPoints.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a SeedPoints message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + SeedPoints.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.points != null && message.hasOwnProperty("points")) { + if (!Array.isArray(message.points)) + return "points: array expected"; + for (var i = 0; i < message.points.length; ++i) { + var error = $root.ivec2.verify(message.points[i]); + if (error) + return "points." + error; + } + } + return null; + }; + + /** + * Creates a SeedPoints message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.vision.ClassifiedImage.SeedPoints} SeedPoints + */ + SeedPoints.fromObject = function fromObject(object) { + if (object instanceof $root.message.vision.ClassifiedImage.SeedPoints) + return object; + var message = new $root.message.vision.ClassifiedImage.SeedPoints(); + if (object.points) { + if (!Array.isArray(object.points)) + throw TypeError(".message.vision.ClassifiedImage.SeedPoints.points: array expected"); + message.points = []; + for (var i = 0; i < object.points.length; ++i) { + if (typeof object.points[i] !== "object") + throw TypeError(".message.vision.ClassifiedImage.SeedPoints.points: object expected"); + message.points[i] = $root.ivec2.fromObject(object.points[i]); + } + } + return message; + }; + + /** + * Creates a SeedPoints message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.vision.ClassifiedImage.SeedPoints.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.vision.ClassifiedImage.SeedPoints} SeedPoints + */ + SeedPoints.from = SeedPoints.fromObject; + + /** + * Creates a plain object from a SeedPoints message. Also converts values to other types if specified. + * @param {message.vision.ClassifiedImage.SeedPoints} message SeedPoints + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + SeedPoints.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.points = []; + if (message.points && message.points.length) { + object.points = []; + for (var j = 0; j < message.points.length; ++j) + object.points[j] = $root.ivec2.toObject(message.points[j], options); + } + return object; + }; + + /** + * Creates a plain object from this SeedPoints message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + SeedPoints.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this SeedPoints to JSON. + * @returns {Object.} JSON object + */ + SeedPoints.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return SeedPoints; + })(); + + return ClassifiedImage; + })(); + + vision.LookUpTable = (function() { + + /** + * Properties of a LookUpTable. + * @typedef message.vision.LookUpTable$Properties + * @type {Object} + * @property {Uint8Array} [table] LookUpTable table. + * @property {number} [bitsY] LookUpTable bitsY. + * @property {number} [bitsCb] LookUpTable bitsCb. + * @property {number} [bitsCr] LookUpTable bitsCr. + */ + + /** + * Constructs a new LookUpTable. + * @exports message.vision.LookUpTable + * @constructor + * @param {message.vision.LookUpTable$Properties=} [properties] Properties to set + */ + function LookUpTable(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * LookUpTable table. + * @type {Uint8Array} + */ + LookUpTable.prototype.table = $util.newBuffer([]); + + /** + * LookUpTable bitsY. + * @type {number} + */ + LookUpTable.prototype.bitsY = 0; + + /** + * LookUpTable bitsCb. + * @type {number} + */ + LookUpTable.prototype.bitsCb = 0; + + /** + * LookUpTable bitsCr. + * @type {number} + */ + LookUpTable.prototype.bitsCr = 0; + + /** + * Creates a new LookUpTable instance using the specified properties. + * @param {message.vision.LookUpTable$Properties=} [properties] Properties to set + * @returns {message.vision.LookUpTable} LookUpTable instance + */ + LookUpTable.create = function create(properties) { + return new LookUpTable(properties); + }; + + /** + * Encodes the specified LookUpTable message. Does not implicitly {@link message.vision.LookUpTable.verify|verify} messages. + * @param {message.vision.LookUpTable$Properties} message LookUpTable message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + LookUpTable.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.table != null && message.hasOwnProperty("table")) + writer.uint32(/* id 1, wireType 2 =*/10).bytes(message.table); + if (message.bitsY != null && message.hasOwnProperty("bitsY")) + writer.uint32(/* id 2, wireType 0 =*/16).uint32(message.bitsY); + if (message.bitsCb != null && message.hasOwnProperty("bitsCb")) + writer.uint32(/* id 3, wireType 0 =*/24).uint32(message.bitsCb); + if (message.bitsCr != null && message.hasOwnProperty("bitsCr")) + writer.uint32(/* id 4, wireType 0 =*/32).uint32(message.bitsCr); + return writer; + }; + + /** + * Encodes the specified LookUpTable message, length delimited. Does not implicitly {@link message.vision.LookUpTable.verify|verify} messages. + * @param {message.vision.LookUpTable$Properties} message LookUpTable message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + LookUpTable.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a LookUpTable message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.vision.LookUpTable} LookUpTable + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + LookUpTable.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.vision.LookUpTable(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.table = reader.bytes(); + break; + case 2: + message.bitsY = reader.uint32(); + break; + case 3: + message.bitsCb = reader.uint32(); + break; + case 4: + message.bitsCr = reader.uint32(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a LookUpTable message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.vision.LookUpTable} LookUpTable + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + LookUpTable.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a LookUpTable message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + LookUpTable.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.table != null && message.hasOwnProperty("table")) + if (!(message.table && typeof message.table.length === "number" || $util.isString(message.table))) + return "table: buffer expected"; + if (message.bitsY != null && message.hasOwnProperty("bitsY")) + if (!$util.isInteger(message.bitsY)) + return "bitsY: integer expected"; + if (message.bitsCb != null && message.hasOwnProperty("bitsCb")) + if (!$util.isInteger(message.bitsCb)) + return "bitsCb: integer expected"; + if (message.bitsCr != null && message.hasOwnProperty("bitsCr")) + if (!$util.isInteger(message.bitsCr)) + return "bitsCr: integer expected"; + return null; + }; + + /** + * Creates a LookUpTable message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.vision.LookUpTable} LookUpTable + */ + LookUpTable.fromObject = function fromObject(object) { + if (object instanceof $root.message.vision.LookUpTable) + return object; + var message = new $root.message.vision.LookUpTable(); + if (object.table != null) + if (typeof object.table === "string") + $util.base64.decode(object.table, message.table = $util.newBuffer($util.base64.length(object.table)), 0); + else if (object.table.length) + message.table = object.table; + if (object.bitsY != null) + message.bitsY = object.bitsY >>> 0; + if (object.bitsCb != null) + message.bitsCb = object.bitsCb >>> 0; + if (object.bitsCr != null) + message.bitsCr = object.bitsCr >>> 0; + return message; + }; + + /** + * Creates a LookUpTable message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.vision.LookUpTable.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.vision.LookUpTable} LookUpTable + */ + LookUpTable.from = LookUpTable.fromObject; + + /** + * Creates a plain object from a LookUpTable message. Also converts values to other types if specified. + * @param {message.vision.LookUpTable} message LookUpTable + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + LookUpTable.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.table = options.bytes === String ? "" : []; + object.bitsY = 0; + object.bitsCb = 0; + object.bitsCr = 0; + } + if (message.table != null && message.hasOwnProperty("table")) + object.table = options.bytes === String ? $util.base64.encode(message.table, 0, message.table.length) : options.bytes === Array ? Array.prototype.slice.call(message.table) : message.table; + if (message.bitsY != null && message.hasOwnProperty("bitsY")) + object.bitsY = message.bitsY; + if (message.bitsCb != null && message.hasOwnProperty("bitsCb")) + object.bitsCb = message.bitsCb; + if (message.bitsCr != null && message.hasOwnProperty("bitsCr")) + object.bitsCr = message.bitsCr; + return object; + }; + + /** + * Creates a plain object from this LookUpTable message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + LookUpTable.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this LookUpTable to JSON. + * @returns {Object.} JSON object + */ + LookUpTable.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return LookUpTable; + })(); + + vision.SaveLookUpTable = (function() { + + /** + * Properties of a SaveLookUpTable. + * @typedef message.vision.SaveLookUpTable$Properties + * @type {Object} + */ + + /** + * Constructs a new SaveLookUpTable. + * @exports message.vision.SaveLookUpTable + * @constructor + * @param {message.vision.SaveLookUpTable$Properties=} [properties] Properties to set + */ + function SaveLookUpTable(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Creates a new SaveLookUpTable instance using the specified properties. + * @param {message.vision.SaveLookUpTable$Properties=} [properties] Properties to set + * @returns {message.vision.SaveLookUpTable} SaveLookUpTable instance + */ + SaveLookUpTable.create = function create(properties) { + return new SaveLookUpTable(properties); + }; + + /** + * Encodes the specified SaveLookUpTable message. Does not implicitly {@link message.vision.SaveLookUpTable.verify|verify} messages. + * @param {message.vision.SaveLookUpTable$Properties} message SaveLookUpTable message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + SaveLookUpTable.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + return writer; + }; + + /** + * Encodes the specified SaveLookUpTable message, length delimited. Does not implicitly {@link message.vision.SaveLookUpTable.verify|verify} messages. + * @param {message.vision.SaveLookUpTable$Properties} message SaveLookUpTable message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + SaveLookUpTable.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a SaveLookUpTable message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.vision.SaveLookUpTable} SaveLookUpTable + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + SaveLookUpTable.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.vision.SaveLookUpTable(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a SaveLookUpTable message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.vision.SaveLookUpTable} SaveLookUpTable + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + SaveLookUpTable.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a SaveLookUpTable message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + SaveLookUpTable.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + return null; + }; + + /** + * Creates a SaveLookUpTable message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.vision.SaveLookUpTable} SaveLookUpTable + */ + SaveLookUpTable.fromObject = function fromObject(object) { + if (object instanceof $root.message.vision.SaveLookUpTable) + return object; + return new $root.message.vision.SaveLookUpTable(); + }; + + /** + * Creates a SaveLookUpTable message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.vision.SaveLookUpTable.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.vision.SaveLookUpTable} SaveLookUpTable + */ + SaveLookUpTable.from = SaveLookUpTable.fromObject; + + /** + * Creates a plain object from a SaveLookUpTable message. Also converts values to other types if specified. + * @param {message.vision.SaveLookUpTable} message SaveLookUpTable + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + SaveLookUpTable.toObject = function toObject() { + return {}; + }; + + /** + * Creates a plain object from this SaveLookUpTable message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + SaveLookUpTable.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this SaveLookUpTable to JSON. + * @returns {Object.} JSON object + */ + SaveLookUpTable.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return SaveLookUpTable; + })(); + + vision.LookUpTableDiff = (function() { + + /** + * Properties of a LookUpTableDiff. + * @typedef message.vision.LookUpTableDiff$Properties + * @type {Object} + * @property {Array.} [diff] LookUpTableDiff diff. + */ + + /** + * Constructs a new LookUpTableDiff. + * @exports message.vision.LookUpTableDiff + * @constructor + * @param {message.vision.LookUpTableDiff$Properties=} [properties] Properties to set + */ + function LookUpTableDiff(properties) { + this.diff = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * LookUpTableDiff diff. + * @type {Array.} + */ + LookUpTableDiff.prototype.diff = $util.emptyArray; + + /** + * Creates a new LookUpTableDiff instance using the specified properties. + * @param {message.vision.LookUpTableDiff$Properties=} [properties] Properties to set + * @returns {message.vision.LookUpTableDiff} LookUpTableDiff instance + */ + LookUpTableDiff.create = function create(properties) { + return new LookUpTableDiff(properties); + }; + + /** + * Encodes the specified LookUpTableDiff message. Does not implicitly {@link message.vision.LookUpTableDiff.verify|verify} messages. + * @param {message.vision.LookUpTableDiff$Properties} message LookUpTableDiff message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + LookUpTableDiff.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.diff != null && message.diff.length) + for (var i = 0; i < message.diff.length; ++i) + $root.message.vision.LookUpTableDiff.Diff.encode(message.diff[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified LookUpTableDiff message, length delimited. Does not implicitly {@link message.vision.LookUpTableDiff.verify|verify} messages. + * @param {message.vision.LookUpTableDiff$Properties} message LookUpTableDiff message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + LookUpTableDiff.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a LookUpTableDiff message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.vision.LookUpTableDiff} LookUpTableDiff + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + LookUpTableDiff.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.vision.LookUpTableDiff(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (!(message.diff && message.diff.length)) + message.diff = []; + message.diff.push($root.message.vision.LookUpTableDiff.Diff.decode(reader, reader.uint32())); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a LookUpTableDiff message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.vision.LookUpTableDiff} LookUpTableDiff + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + LookUpTableDiff.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a LookUpTableDiff message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + LookUpTableDiff.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.diff != null && message.hasOwnProperty("diff")) { + if (!Array.isArray(message.diff)) + return "diff: array expected"; + for (var i = 0; i < message.diff.length; ++i) { + var error = $root.message.vision.LookUpTableDiff.Diff.verify(message.diff[i]); + if (error) + return "diff." + error; + } + } + return null; + }; + + /** + * Creates a LookUpTableDiff message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.vision.LookUpTableDiff} LookUpTableDiff + */ + LookUpTableDiff.fromObject = function fromObject(object) { + if (object instanceof $root.message.vision.LookUpTableDiff) + return object; + var message = new $root.message.vision.LookUpTableDiff(); + if (object.diff) { + if (!Array.isArray(object.diff)) + throw TypeError(".message.vision.LookUpTableDiff.diff: array expected"); + message.diff = []; + for (var i = 0; i < object.diff.length; ++i) { + if (typeof object.diff[i] !== "object") + throw TypeError(".message.vision.LookUpTableDiff.diff: object expected"); + message.diff[i] = $root.message.vision.LookUpTableDiff.Diff.fromObject(object.diff[i]); + } + } + return message; + }; + + /** + * Creates a LookUpTableDiff message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.vision.LookUpTableDiff.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.vision.LookUpTableDiff} LookUpTableDiff + */ + LookUpTableDiff.from = LookUpTableDiff.fromObject; + + /** + * Creates a plain object from a LookUpTableDiff message. Also converts values to other types if specified. + * @param {message.vision.LookUpTableDiff} message LookUpTableDiff + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + LookUpTableDiff.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.diff = []; + if (message.diff && message.diff.length) { + object.diff = []; + for (var j = 0; j < message.diff.length; ++j) + object.diff[j] = $root.message.vision.LookUpTableDiff.Diff.toObject(message.diff[j], options); + } + return object; + }; + + /** + * Creates a plain object from this LookUpTableDiff message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + LookUpTableDiff.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this LookUpTableDiff to JSON. + * @returns {Object.} JSON object + */ + LookUpTableDiff.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + LookUpTableDiff.Diff = (function() { + + /** + * Properties of a Diff. + * @typedef message.vision.LookUpTableDiff.Diff$Properties + * @type {Object} + * @property {number} [lutIndex] Diff lutIndex. + * @property {number} [classification] Diff classification. + */ + + /** + * Constructs a new Diff. + * @exports message.vision.LookUpTableDiff.Diff + * @constructor + * @param {message.vision.LookUpTableDiff.Diff$Properties=} [properties] Properties to set + */ + function Diff(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Diff lutIndex. + * @type {number} + */ + Diff.prototype.lutIndex = 0; + + /** + * Diff classification. + * @type {number} + */ + Diff.prototype.classification = 0; + + /** + * Creates a new Diff instance using the specified properties. + * @param {message.vision.LookUpTableDiff.Diff$Properties=} [properties] Properties to set + * @returns {message.vision.LookUpTableDiff.Diff} Diff instance + */ + Diff.create = function create(properties) { + return new Diff(properties); + }; + + /** + * Encodes the specified Diff message. Does not implicitly {@link message.vision.LookUpTableDiff.Diff.verify|verify} messages. + * @param {message.vision.LookUpTableDiff.Diff$Properties} message Diff message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Diff.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.lutIndex != null && message.hasOwnProperty("lutIndex")) + writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.lutIndex); + if (message.classification != null && message.hasOwnProperty("classification")) + writer.uint32(/* id 2, wireType 0 =*/16).uint32(message.classification); + return writer; + }; + + /** + * Encodes the specified Diff message, length delimited. Does not implicitly {@link message.vision.LookUpTableDiff.Diff.verify|verify} messages. + * @param {message.vision.LookUpTableDiff.Diff$Properties} message Diff message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Diff.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a Diff message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.vision.LookUpTableDiff.Diff} Diff + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Diff.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.vision.LookUpTableDiff.Diff(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.lutIndex = reader.uint32(); + break; + case 2: + message.classification = reader.uint32(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a Diff message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.vision.LookUpTableDiff.Diff} Diff + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Diff.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a Diff message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + Diff.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.lutIndex != null && message.hasOwnProperty("lutIndex")) + if (!$util.isInteger(message.lutIndex)) + return "lutIndex: integer expected"; + if (message.classification != null && message.hasOwnProperty("classification")) + if (!$util.isInteger(message.classification)) + return "classification: integer expected"; + return null; + }; + + /** + * Creates a Diff message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.vision.LookUpTableDiff.Diff} Diff + */ + Diff.fromObject = function fromObject(object) { + if (object instanceof $root.message.vision.LookUpTableDiff.Diff) + return object; + var message = new $root.message.vision.LookUpTableDiff.Diff(); + if (object.lutIndex != null) + message.lutIndex = object.lutIndex >>> 0; + if (object.classification != null) + message.classification = object.classification >>> 0; + return message; + }; + + /** + * Creates a Diff message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.vision.LookUpTableDiff.Diff.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.vision.LookUpTableDiff.Diff} Diff + */ + Diff.from = Diff.fromObject; + + /** + * Creates a plain object from a Diff message. Also converts values to other types if specified. + * @param {message.vision.LookUpTableDiff.Diff} message Diff + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Diff.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.lutIndex = 0; + object.classification = 0; + } + if (message.lutIndex != null && message.hasOwnProperty("lutIndex")) + object.lutIndex = message.lutIndex; + if (message.classification != null && message.hasOwnProperty("classification")) + object.classification = message.classification; + return object; + }; + + /** + * Creates a plain object from this Diff message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Diff.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this Diff to JSON. + * @returns {Object.} JSON object + */ + Diff.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return Diff; + })(); + + return LookUpTableDiff; + })(); + + vision.VisionObject = (function() { + + /** + * Properties of a VisionObject. + * @typedef message.vision.VisionObject$Properties + * @type {Object} + * @property {google.protobuf.Timestamp$Properties} [timestamp] VisionObject timestamp. + * @property {vec2$Properties} [screenAngular] VisionObject screenAngular. + * @property {vec2$Properties} [angularSize] VisionObject angularSize. + * @property {message.input.Sensors$Properties} [sensors] VisionObject sensors. + * @property {message.vision.ClassifiedImage$Properties} [classifiedImage] VisionObject classifiedImage. + * @property {number} [cameraId] VisionObject cameraId. + */ + + /** + * Constructs a new VisionObject. + * @exports message.vision.VisionObject + * @constructor + * @param {message.vision.VisionObject$Properties=} [properties] Properties to set + */ + function VisionObject(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * VisionObject timestamp. + * @type {(google.protobuf.Timestamp$Properties|null)} + */ + VisionObject.prototype.timestamp = null; + + /** + * VisionObject screenAngular. + * @type {(vec2$Properties|null)} + */ + VisionObject.prototype.screenAngular = null; + + /** + * VisionObject angularSize. + * @type {(vec2$Properties|null)} + */ + VisionObject.prototype.angularSize = null; + + /** + * VisionObject sensors. + * @type {(message.input.Sensors$Properties|null)} + */ + VisionObject.prototype.sensors = null; + + /** + * VisionObject classifiedImage. + * @type {(message.vision.ClassifiedImage$Properties|null)} + */ + VisionObject.prototype.classifiedImage = null; + + /** + * VisionObject cameraId. + * @type {number} + */ + VisionObject.prototype.cameraId = 0; + + /** + * Creates a new VisionObject instance using the specified properties. + * @param {message.vision.VisionObject$Properties=} [properties] Properties to set + * @returns {message.vision.VisionObject} VisionObject instance + */ + VisionObject.create = function create(properties) { + return new VisionObject(properties); + }; + + /** + * Encodes the specified VisionObject message. Does not implicitly {@link message.vision.VisionObject.verify|verify} messages. + * @param {message.vision.VisionObject$Properties} message VisionObject message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + VisionObject.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.timestamp != null && message.hasOwnProperty("timestamp")) + $root.google.protobuf.Timestamp.encode(message.timestamp, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.screenAngular != null && message.hasOwnProperty("screenAngular")) + $root.vec2.encode(message.screenAngular, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.angularSize != null && message.hasOwnProperty("angularSize")) + $root.vec2.encode(message.angularSize, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + if (message.sensors != null && message.hasOwnProperty("sensors")) + $root.message.input.Sensors.encode(message.sensors, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); + if (message.classifiedImage != null && message.hasOwnProperty("classifiedImage")) + $root.message.vision.ClassifiedImage.encode(message.classifiedImage, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); + if (message.cameraId != null && message.hasOwnProperty("cameraId")) + writer.uint32(/* id 6, wireType 0 =*/48).uint32(message.cameraId); + return writer; + }; + + /** + * Encodes the specified VisionObject message, length delimited. Does not implicitly {@link message.vision.VisionObject.verify|verify} messages. + * @param {message.vision.VisionObject$Properties} message VisionObject message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + VisionObject.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a VisionObject message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.vision.VisionObject} VisionObject + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + VisionObject.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.vision.VisionObject(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.timestamp = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); + break; + case 2: + message.screenAngular = $root.vec2.decode(reader, reader.uint32()); + break; + case 3: + message.angularSize = $root.vec2.decode(reader, reader.uint32()); + break; + case 4: + message.sensors = $root.message.input.Sensors.decode(reader, reader.uint32()); + break; + case 5: + message.classifiedImage = $root.message.vision.ClassifiedImage.decode(reader, reader.uint32()); + break; + case 6: + message.cameraId = reader.uint32(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a VisionObject message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.vision.VisionObject} VisionObject + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + VisionObject.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a VisionObject message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + VisionObject.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.timestamp != null && message.hasOwnProperty("timestamp")) { + var error = $root.google.protobuf.Timestamp.verify(message.timestamp); + if (error) + return "timestamp." + error; + } + if (message.screenAngular != null && message.hasOwnProperty("screenAngular")) { + var error = $root.vec2.verify(message.screenAngular); + if (error) + return "screenAngular." + error; + } + if (message.angularSize != null && message.hasOwnProperty("angularSize")) { + var error = $root.vec2.verify(message.angularSize); + if (error) + return "angularSize." + error; + } + if (message.sensors != null && message.hasOwnProperty("sensors")) { + var error = $root.message.input.Sensors.verify(message.sensors); + if (error) + return "sensors." + error; + } + if (message.classifiedImage != null && message.hasOwnProperty("classifiedImage")) { + var error = $root.message.vision.ClassifiedImage.verify(message.classifiedImage); + if (error) + return "classifiedImage." + error; + } + if (message.cameraId != null && message.hasOwnProperty("cameraId")) + if (!$util.isInteger(message.cameraId)) + return "cameraId: integer expected"; + return null; + }; + + /** + * Creates a VisionObject message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.vision.VisionObject} VisionObject + */ + VisionObject.fromObject = function fromObject(object) { + if (object instanceof $root.message.vision.VisionObject) + return object; + var message = new $root.message.vision.VisionObject(); + if (object.timestamp != null) { + if (typeof object.timestamp !== "object") + throw TypeError(".message.vision.VisionObject.timestamp: object expected"); + message.timestamp = $root.google.protobuf.Timestamp.fromObject(object.timestamp); + } + if (object.screenAngular != null) { + if (typeof object.screenAngular !== "object") + throw TypeError(".message.vision.VisionObject.screenAngular: object expected"); + message.screenAngular = $root.vec2.fromObject(object.screenAngular); + } + if (object.angularSize != null) { + if (typeof object.angularSize !== "object") + throw TypeError(".message.vision.VisionObject.angularSize: object expected"); + message.angularSize = $root.vec2.fromObject(object.angularSize); + } + if (object.sensors != null) { + if (typeof object.sensors !== "object") + throw TypeError(".message.vision.VisionObject.sensors: object expected"); + message.sensors = $root.message.input.Sensors.fromObject(object.sensors); + } + if (object.classifiedImage != null) { + if (typeof object.classifiedImage !== "object") + throw TypeError(".message.vision.VisionObject.classifiedImage: object expected"); + message.classifiedImage = $root.message.vision.ClassifiedImage.fromObject(object.classifiedImage); + } + if (object.cameraId != null) + message.cameraId = object.cameraId >>> 0; + return message; + }; + + /** + * Creates a VisionObject message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.vision.VisionObject.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.vision.VisionObject} VisionObject + */ + VisionObject.from = VisionObject.fromObject; + + /** + * Creates a plain object from a VisionObject message. Also converts values to other types if specified. + * @param {message.vision.VisionObject} message VisionObject + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + VisionObject.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.timestamp = null; + object.screenAngular = null; + object.angularSize = null; + object.sensors = null; + object.classifiedImage = null; + object.cameraId = 0; + } + if (message.timestamp != null && message.hasOwnProperty("timestamp")) + object.timestamp = $root.google.protobuf.Timestamp.toObject(message.timestamp, options); + if (message.screenAngular != null && message.hasOwnProperty("screenAngular")) + object.screenAngular = $root.vec2.toObject(message.screenAngular, options); + if (message.angularSize != null && message.hasOwnProperty("angularSize")) + object.angularSize = $root.vec2.toObject(message.angularSize, options); + if (message.sensors != null && message.hasOwnProperty("sensors")) + object.sensors = $root.message.input.Sensors.toObject(message.sensors, options); + if (message.classifiedImage != null && message.hasOwnProperty("classifiedImage")) + object.classifiedImage = $root.message.vision.ClassifiedImage.toObject(message.classifiedImage, options); + if (message.cameraId != null && message.hasOwnProperty("cameraId")) + object.cameraId = message.cameraId; + return object; + }; + + /** + * Creates a plain object from this VisionObject message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + VisionObject.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this VisionObject to JSON. + * @returns {Object.} JSON object + */ + VisionObject.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return VisionObject; + })(); + + vision.Ball = (function() { + + /** + * Properties of a Ball. + * @typedef message.vision.Ball$Properties + * @type {Object} + * @property {message.vision.VisionObject$Properties} [visObject] Ball visObject. + * @property {vec3$Properties} [position] Ball position. + * @property {vec3$Properties} [torsoSpacePosition] Ball torsoSpacePosition. + * @property {Array.} [edgePoints] Ball edgePoints. + * @property {message.Circle$Properties} [circle] Ball circle. + */ + + /** + * Constructs a new Ball. + * @exports message.vision.Ball + * @constructor + * @param {message.vision.Ball$Properties=} [properties] Properties to set + */ + function Ball(properties) { + this.edgePoints = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Ball visObject. + * @type {(message.vision.VisionObject$Properties|null)} + */ + Ball.prototype.visObject = null; + + /** + * Ball position. + * @type {(vec3$Properties|null)} + */ + Ball.prototype.position = null; + + /** + * Ball torsoSpacePosition. + * @type {(vec3$Properties|null)} + */ + Ball.prototype.torsoSpacePosition = null; + + /** + * Ball edgePoints. + * @type {Array.} + */ + Ball.prototype.edgePoints = $util.emptyArray; + + /** + * Ball circle. + * @type {(message.Circle$Properties|null)} + */ + Ball.prototype.circle = null; + + /** + * Creates a new Ball instance using the specified properties. + * @param {message.vision.Ball$Properties=} [properties] Properties to set + * @returns {message.vision.Ball} Ball instance + */ + Ball.create = function create(properties) { + return new Ball(properties); + }; + + /** + * Encodes the specified Ball message. Does not implicitly {@link message.vision.Ball.verify|verify} messages. + * @param {message.vision.Ball$Properties} message Ball message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Ball.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.visObject != null && message.hasOwnProperty("visObject")) + $root.message.vision.VisionObject.encode(message.visObject, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.position != null && message.hasOwnProperty("position")) + $root.vec3.encode(message.position, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.torsoSpacePosition != null && message.hasOwnProperty("torsoSpacePosition")) + $root.vec3.encode(message.torsoSpacePosition, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + if (message.edgePoints != null && message.edgePoints.length) + for (var i = 0; i < message.edgePoints.length; ++i) + $root.vec3.encode(message.edgePoints[i], writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); + if (message.circle != null && message.hasOwnProperty("circle")) + $root.message.Circle.encode(message.circle, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified Ball message, length delimited. Does not implicitly {@link message.vision.Ball.verify|verify} messages. + * @param {message.vision.Ball$Properties} message Ball message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Ball.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a Ball message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.vision.Ball} Ball + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Ball.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.vision.Ball(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.visObject = $root.message.vision.VisionObject.decode(reader, reader.uint32()); + break; + case 2: + message.position = $root.vec3.decode(reader, reader.uint32()); + break; + case 3: + message.torsoSpacePosition = $root.vec3.decode(reader, reader.uint32()); + break; + case 4: + if (!(message.edgePoints && message.edgePoints.length)) + message.edgePoints = []; + message.edgePoints.push($root.vec3.decode(reader, reader.uint32())); + break; + case 5: + message.circle = $root.message.Circle.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a Ball message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.vision.Ball} Ball + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Ball.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a Ball message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + Ball.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.visObject != null && message.hasOwnProperty("visObject")) { + var error = $root.message.vision.VisionObject.verify(message.visObject); + if (error) + return "visObject." + error; + } + if (message.position != null && message.hasOwnProperty("position")) { + var error = $root.vec3.verify(message.position); + if (error) + return "position." + error; + } + if (message.torsoSpacePosition != null && message.hasOwnProperty("torsoSpacePosition")) { + var error = $root.vec3.verify(message.torsoSpacePosition); + if (error) + return "torsoSpacePosition." + error; + } + if (message.edgePoints != null && message.hasOwnProperty("edgePoints")) { + if (!Array.isArray(message.edgePoints)) + return "edgePoints: array expected"; + for (var i = 0; i < message.edgePoints.length; ++i) { + var error = $root.vec3.verify(message.edgePoints[i]); + if (error) + return "edgePoints." + error; + } + } + if (message.circle != null && message.hasOwnProperty("circle")) { + var error = $root.message.Circle.verify(message.circle); + if (error) + return "circle." + error; + } + return null; + }; + + /** + * Creates a Ball message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.vision.Ball} Ball + */ + Ball.fromObject = function fromObject(object) { + if (object instanceof $root.message.vision.Ball) + return object; + var message = new $root.message.vision.Ball(); + if (object.visObject != null) { + if (typeof object.visObject !== "object") + throw TypeError(".message.vision.Ball.visObject: object expected"); + message.visObject = $root.message.vision.VisionObject.fromObject(object.visObject); + } + if (object.position != null) { + if (typeof object.position !== "object") + throw TypeError(".message.vision.Ball.position: object expected"); + message.position = $root.vec3.fromObject(object.position); + } + if (object.torsoSpacePosition != null) { + if (typeof object.torsoSpacePosition !== "object") + throw TypeError(".message.vision.Ball.torsoSpacePosition: object expected"); + message.torsoSpacePosition = $root.vec3.fromObject(object.torsoSpacePosition); + } + if (object.edgePoints) { + if (!Array.isArray(object.edgePoints)) + throw TypeError(".message.vision.Ball.edgePoints: array expected"); + message.edgePoints = []; + for (var i = 0; i < object.edgePoints.length; ++i) { + if (typeof object.edgePoints[i] !== "object") + throw TypeError(".message.vision.Ball.edgePoints: object expected"); + message.edgePoints[i] = $root.vec3.fromObject(object.edgePoints[i]); + } + } + if (object.circle != null) { + if (typeof object.circle !== "object") + throw TypeError(".message.vision.Ball.circle: object expected"); + message.circle = $root.message.Circle.fromObject(object.circle); + } + return message; + }; + + /** + * Creates a Ball message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.vision.Ball.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.vision.Ball} Ball + */ + Ball.from = Ball.fromObject; + + /** + * Creates a plain object from a Ball message. Also converts values to other types if specified. + * @param {message.vision.Ball} message Ball + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Ball.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.edgePoints = []; + if (options.defaults) { + object.visObject = null; + object.position = null; + object.torsoSpacePosition = null; + object.circle = null; + } + if (message.visObject != null && message.hasOwnProperty("visObject")) + object.visObject = $root.message.vision.VisionObject.toObject(message.visObject, options); + if (message.position != null && message.hasOwnProperty("position")) + object.position = $root.vec3.toObject(message.position, options); + if (message.torsoSpacePosition != null && message.hasOwnProperty("torsoSpacePosition")) + object.torsoSpacePosition = $root.vec3.toObject(message.torsoSpacePosition, options); + if (message.edgePoints && message.edgePoints.length) { + object.edgePoints = []; + for (var j = 0; j < message.edgePoints.length; ++j) + object.edgePoints[j] = $root.vec3.toObject(message.edgePoints[j], options); + } + if (message.circle != null && message.hasOwnProperty("circle")) + object.circle = $root.message.Circle.toObject(message.circle, options); + return object; + }; + + /** + * Creates a plain object from this Ball message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Ball.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this Ball to JSON. + * @returns {Object.} JSON object + */ + Ball.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return Ball; + })(); + + vision.Goal = (function() { + + /** + * Properties of a Goal. + * @typedef message.vision.Goal$Properties + * @type {Object} + * @property {message.vision.VisionObject$Properties} [visObject] Goal visObject. + * @property {message.vision.Goal.Side} [side] Goal side. + * @property {message.vision.Goal.Team} [team] Goal team. + * @property {message.Quad$Properties} [quad] Goal quad. + * @property {Array.} [measurement] Goal measurement. + */ + + /** + * Constructs a new Goal. + * @exports message.vision.Goal + * @constructor + * @param {message.vision.Goal$Properties=} [properties] Properties to set + */ + function Goal(properties) { + this.measurement = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Goal visObject. + * @type {(message.vision.VisionObject$Properties|null)} + */ + Goal.prototype.visObject = null; + + /** + * Goal side. + * @type {message.vision.Goal.Side} + */ + Goal.prototype.side = 0; + + /** + * Goal team. + * @type {message.vision.Goal.Team} + */ + Goal.prototype.team = 0; + + /** + * Goal quad. + * @type {(message.Quad$Properties|null)} + */ + Goal.prototype.quad = null; + + /** + * Goal measurement. + * @type {Array.} + */ + Goal.prototype.measurement = $util.emptyArray; + + /** + * Creates a new Goal instance using the specified properties. + * @param {message.vision.Goal$Properties=} [properties] Properties to set + * @returns {message.vision.Goal} Goal instance + */ + Goal.create = function create(properties) { + return new Goal(properties); + }; + + /** + * Encodes the specified Goal message. Does not implicitly {@link message.vision.Goal.verify|verify} messages. + * @param {message.vision.Goal$Properties} message Goal message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Goal.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.visObject != null && message.hasOwnProperty("visObject")) + $root.message.vision.VisionObject.encode(message.visObject, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.side != null && message.hasOwnProperty("side")) + writer.uint32(/* id 2, wireType 0 =*/16).uint32(message.side); + if (message.team != null && message.hasOwnProperty("team")) + writer.uint32(/* id 3, wireType 0 =*/24).uint32(message.team); + if (message.quad != null && message.hasOwnProperty("quad")) + $root.message.Quad.encode(message.quad, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); + if (message.measurement != null && message.measurement.length) + for (var i = 0; i < message.measurement.length; ++i) + $root.message.vision.Goal.Measurement.encode(message.measurement[i], writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified Goal message, length delimited. Does not implicitly {@link message.vision.Goal.verify|verify} messages. + * @param {message.vision.Goal$Properties} message Goal message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Goal.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a Goal message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.vision.Goal} Goal + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Goal.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.vision.Goal(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.visObject = $root.message.vision.VisionObject.decode(reader, reader.uint32()); + break; + case 2: + message.side = reader.uint32(); + break; + case 3: + message.team = reader.uint32(); + break; + case 4: + message.quad = $root.message.Quad.decode(reader, reader.uint32()); + break; + case 5: + if (!(message.measurement && message.measurement.length)) + message.measurement = []; + message.measurement.push($root.message.vision.Goal.Measurement.decode(reader, reader.uint32())); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a Goal message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.vision.Goal} Goal + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Goal.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a Goal message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + Goal.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.visObject != null && message.hasOwnProperty("visObject")) { + var error = $root.message.vision.VisionObject.verify(message.visObject); + if (error) + return "visObject." + error; + } + if (message.side != null && message.hasOwnProperty("side")) + switch (message.side) { + default: + return "side: enum value expected"; + case 0: + case 1: + case 2: + break; + } + if (message.team != null && message.hasOwnProperty("team")) + switch (message.team) { + default: + return "team: enum value expected"; + case 0: + case 1: + case 2: + break; + } + if (message.quad != null && message.hasOwnProperty("quad")) { + var error = $root.message.Quad.verify(message.quad); + if (error) + return "quad." + error; + } + if (message.measurement != null && message.hasOwnProperty("measurement")) { + if (!Array.isArray(message.measurement)) + return "measurement: array expected"; + for (var i = 0; i < message.measurement.length; ++i) { + var error = $root.message.vision.Goal.Measurement.verify(message.measurement[i]); + if (error) + return "measurement." + error; + } + } + return null; + }; + + /** + * Creates a Goal message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.vision.Goal} Goal + */ + Goal.fromObject = function fromObject(object) { + if (object instanceof $root.message.vision.Goal) + return object; + var message = new $root.message.vision.Goal(); + if (object.visObject != null) { + if (typeof object.visObject !== "object") + throw TypeError(".message.vision.Goal.visObject: object expected"); + message.visObject = $root.message.vision.VisionObject.fromObject(object.visObject); + } + switch (object.side) { + case "UNKNOWN_SIDE": + case 0: + message.side = 0; + break; + case "LEFT": + case 1: + message.side = 1; + break; + case "RIGHT": + case 2: + message.side = 2; + break; + } + switch (object.team) { + case "UNKNOWN_TEAM": + case 0: + message.team = 0; + break; + case "OWN": + case 1: + message.team = 1; + break; + case "OPPONENT": + case 2: + message.team = 2; + break; + } + if (object.quad != null) { + if (typeof object.quad !== "object") + throw TypeError(".message.vision.Goal.quad: object expected"); + message.quad = $root.message.Quad.fromObject(object.quad); + } + if (object.measurement) { + if (!Array.isArray(object.measurement)) + throw TypeError(".message.vision.Goal.measurement: array expected"); + message.measurement = []; + for (var i = 0; i < object.measurement.length; ++i) { + if (typeof object.measurement[i] !== "object") + throw TypeError(".message.vision.Goal.measurement: object expected"); + message.measurement[i] = $root.message.vision.Goal.Measurement.fromObject(object.measurement[i]); + } + } + return message; + }; + + /** + * Creates a Goal message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.vision.Goal.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.vision.Goal} Goal + */ + Goal.from = Goal.fromObject; + + /** + * Creates a plain object from a Goal message. Also converts values to other types if specified. + * @param {message.vision.Goal} message Goal + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Goal.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.measurement = []; + if (options.defaults) { + object.visObject = null; + object.side = options.enums === String ? "UNKNOWN_SIDE" : 0; + object.team = options.enums === String ? "UNKNOWN_TEAM" : 0; + object.quad = null; + } + if (message.visObject != null && message.hasOwnProperty("visObject")) + object.visObject = $root.message.vision.VisionObject.toObject(message.visObject, options); + if (message.side != null && message.hasOwnProperty("side")) + object.side = options.enums === String ? $root.message.vision.Goal.Side[message.side] : message.side; + if (message.team != null && message.hasOwnProperty("team")) + object.team = options.enums === String ? $root.message.vision.Goal.Team[message.team] : message.team; + if (message.quad != null && message.hasOwnProperty("quad")) + object.quad = $root.message.Quad.toObject(message.quad, options); + if (message.measurement && message.measurement.length) { + object.measurement = []; + for (var j = 0; j < message.measurement.length; ++j) + object.measurement[j] = $root.message.vision.Goal.Measurement.toObject(message.measurement[j], options); + } + return object; + }; + + /** + * Creates a plain object from this Goal message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Goal.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this Goal to JSON. + * @returns {Object.} JSON object + */ + Goal.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Side enum. + * @name Side + * @memberof message.vision.Goal + * @enum {number} + * @property {number} UNKNOWN_SIDE=0 UNKNOWN_SIDE value + * @property {number} LEFT=1 LEFT value + * @property {number} RIGHT=2 RIGHT value + */ + Goal.Side = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "UNKNOWN_SIDE"] = 0; + values[valuesById[1] = "LEFT"] = 1; + values[valuesById[2] = "RIGHT"] = 2; + return values; + })(); + + /** + * Team enum. + * @name Team + * @memberof message.vision.Goal + * @enum {number} + * @property {number} UNKNOWN_TEAM=0 UNKNOWN_TEAM value + * @property {number} OWN=1 OWN value + * @property {number} OPPONENT=2 OPPONENT value + */ + Goal.Team = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "UNKNOWN_TEAM"] = 0; + values[valuesById[1] = "OWN"] = 1; + values[valuesById[2] = "OPPONENT"] = 2; + return values; + })(); + + /** + * MeasurementType enum. + * @name MeasurementType + * @memberof message.vision.Goal + * @enum {number} + * @property {number} UNKNOWN_MEASUREMENT=0 UNKNOWN_MEASUREMENT value + * @property {number} LEFT_NORMAL=1 LEFT_NORMAL value + * @property {number} RIGHT_NORMAL=2 RIGHT_NORMAL value + * @property {number} TOP_NORMAL=3 TOP_NORMAL value + * @property {number} BASE_NORMAL=4 BASE_NORMAL value + */ + Goal.MeasurementType = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "UNKNOWN_MEASUREMENT"] = 0; + values[valuesById[1] = "LEFT_NORMAL"] = 1; + values[valuesById[2] = "RIGHT_NORMAL"] = 2; + values[valuesById[3] = "TOP_NORMAL"] = 3; + values[valuesById[4] = "BASE_NORMAL"] = 4; + return values; + })(); + + Goal.Measurement = (function() { + + /** + * Properties of a Measurement. + * @typedef message.vision.Goal.Measurement$Properties + * @type {Object} + * @property {message.vision.Goal.MeasurementType} [type] Measurement type. + * @property {vec3$Properties} [position] Measurement position. + */ + + /** + * Constructs a new Measurement. + * @exports message.vision.Goal.Measurement + * @constructor + * @param {message.vision.Goal.Measurement$Properties=} [properties] Properties to set + */ + function Measurement(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Measurement type. + * @type {message.vision.Goal.MeasurementType} + */ + Measurement.prototype.type = 0; + + /** + * Measurement position. + * @type {(vec3$Properties|null)} + */ + Measurement.prototype.position = null; + + /** + * Creates a new Measurement instance using the specified properties. + * @param {message.vision.Goal.Measurement$Properties=} [properties] Properties to set + * @returns {message.vision.Goal.Measurement} Measurement instance + */ + Measurement.create = function create(properties) { + return new Measurement(properties); + }; + + /** + * Encodes the specified Measurement message. Does not implicitly {@link message.vision.Goal.Measurement.verify|verify} messages. + * @param {message.vision.Goal.Measurement$Properties} message Measurement message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Measurement.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.type != null && message.hasOwnProperty("type")) + writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.type); + if (message.position != null && message.hasOwnProperty("position")) + $root.vec3.encode(message.position, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified Measurement message, length delimited. Does not implicitly {@link message.vision.Goal.Measurement.verify|verify} messages. + * @param {message.vision.Goal.Measurement$Properties} message Measurement message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Measurement.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a Measurement message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.vision.Goal.Measurement} Measurement + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Measurement.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.vision.Goal.Measurement(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.type = reader.uint32(); + break; + case 2: + message.position = $root.vec3.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a Measurement message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.vision.Goal.Measurement} Measurement + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Measurement.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a Measurement message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + Measurement.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.type != null && message.hasOwnProperty("type")) + switch (message.type) { + default: + return "type: enum value expected"; + case 0: + case 1: + case 2: + case 3: + case 4: + break; + } + if (message.position != null && message.hasOwnProperty("position")) { + var error = $root.vec3.verify(message.position); + if (error) + return "position." + error; + } + return null; + }; + + /** + * Creates a Measurement message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.vision.Goal.Measurement} Measurement + */ + Measurement.fromObject = function fromObject(object) { + if (object instanceof $root.message.vision.Goal.Measurement) + return object; + var message = new $root.message.vision.Goal.Measurement(); + switch (object.type) { + case "UNKNOWN_MEASUREMENT": + case 0: + message.type = 0; + break; + case "LEFT_NORMAL": + case 1: + message.type = 1; + break; + case "RIGHT_NORMAL": + case 2: + message.type = 2; + break; + case "TOP_NORMAL": + case 3: + message.type = 3; + break; + case "BASE_NORMAL": + case 4: + message.type = 4; + break; + } + if (object.position != null) { + if (typeof object.position !== "object") + throw TypeError(".message.vision.Goal.Measurement.position: object expected"); + message.position = $root.vec3.fromObject(object.position); + } + return message; + }; + + /** + * Creates a Measurement message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.vision.Goal.Measurement.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.vision.Goal.Measurement} Measurement + */ + Measurement.from = Measurement.fromObject; + + /** + * Creates a plain object from a Measurement message. Also converts values to other types if specified. + * @param {message.vision.Goal.Measurement} message Measurement + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Measurement.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.type = options.enums === String ? "UNKNOWN_MEASUREMENT" : 0; + object.position = null; + } + if (message.type != null && message.hasOwnProperty("type")) + object.type = options.enums === String ? $root.message.vision.Goal.MeasurementType[message.type] : message.type; + if (message.position != null && message.hasOwnProperty("position")) + object.position = $root.vec3.toObject(message.position, options); + return object; + }; + + /** + * Creates a plain object from this Measurement message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Measurement.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this Measurement to JSON. + * @returns {Object.} JSON object + */ + Measurement.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return Measurement; + })(); + + return Goal; + })(); + + vision.Obstacle = (function() { + + /** + * Properties of an Obstacle. + * @typedef message.vision.Obstacle$Properties + * @type {Object} + * @property {message.vision.VisionObject$Properties} [visObject] Obstacle visObject. + * @property {message.Polygon$Properties} [shape] Obstacle shape. + * @property {message.vision.Obstacle.Team} [team] Obstacle team. + */ + + /** + * Constructs a new Obstacle. + * @exports message.vision.Obstacle + * @constructor + * @param {message.vision.Obstacle$Properties=} [properties] Properties to set + */ + function Obstacle(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Obstacle visObject. + * @type {(message.vision.VisionObject$Properties|null)} + */ + Obstacle.prototype.visObject = null; + + /** + * Obstacle shape. + * @type {(message.Polygon$Properties|null)} + */ + Obstacle.prototype.shape = null; + + /** + * Obstacle team. + * @type {message.vision.Obstacle.Team} + */ + Obstacle.prototype.team = 0; + + /** + * Creates a new Obstacle instance using the specified properties. + * @param {message.vision.Obstacle$Properties=} [properties] Properties to set + * @returns {message.vision.Obstacle} Obstacle instance + */ + Obstacle.create = function create(properties) { + return new Obstacle(properties); + }; + + /** + * Encodes the specified Obstacle message. Does not implicitly {@link message.vision.Obstacle.verify|verify} messages. + * @param {message.vision.Obstacle$Properties} message Obstacle message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Obstacle.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.visObject != null && message.hasOwnProperty("visObject")) + $root.message.vision.VisionObject.encode(message.visObject, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.shape != null && message.hasOwnProperty("shape")) + $root.message.Polygon.encode(message.shape, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.team != null && message.hasOwnProperty("team")) + writer.uint32(/* id 3, wireType 0 =*/24).uint32(message.team); + return writer; + }; + + /** + * Encodes the specified Obstacle message, length delimited. Does not implicitly {@link message.vision.Obstacle.verify|verify} messages. + * @param {message.vision.Obstacle$Properties} message Obstacle message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Obstacle.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes an Obstacle message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.vision.Obstacle} Obstacle + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Obstacle.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.vision.Obstacle(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.visObject = $root.message.vision.VisionObject.decode(reader, reader.uint32()); + break; + case 2: + message.shape = $root.message.Polygon.decode(reader, reader.uint32()); + break; + case 3: + message.team = reader.uint32(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes an Obstacle message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.vision.Obstacle} Obstacle + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Obstacle.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies an Obstacle message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + Obstacle.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.visObject != null && message.hasOwnProperty("visObject")) { + var error = $root.message.vision.VisionObject.verify(message.visObject); + if (error) + return "visObject." + error; + } + if (message.shape != null && message.hasOwnProperty("shape")) { + var error = $root.message.Polygon.verify(message.shape); + if (error) + return "shape." + error; + } + if (message.team != null && message.hasOwnProperty("team")) + switch (message.team) { + default: + return "team: enum value expected"; + case 0: + case 1: + case 2: + break; + } + return null; + }; + + /** + * Creates an Obstacle message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.vision.Obstacle} Obstacle + */ + Obstacle.fromObject = function fromObject(object) { + if (object instanceof $root.message.vision.Obstacle) + return object; + var message = new $root.message.vision.Obstacle(); + if (object.visObject != null) { + if (typeof object.visObject !== "object") + throw TypeError(".message.vision.Obstacle.visObject: object expected"); + message.visObject = $root.message.vision.VisionObject.fromObject(object.visObject); + } + if (object.shape != null) { + if (typeof object.shape !== "object") + throw TypeError(".message.vision.Obstacle.shape: object expected"); + message.shape = $root.message.Polygon.fromObject(object.shape); + } + switch (object.team) { + case "UNKNOWN_TEAM": + case 0: + message.team = 0; + break; + case "MAGENTA": + case 1: + message.team = 1; + break; + case "CYAN": + case 2: + message.team = 2; + break; + } + return message; + }; + + /** + * Creates an Obstacle message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.vision.Obstacle.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.vision.Obstacle} Obstacle + */ + Obstacle.from = Obstacle.fromObject; + + /** + * Creates a plain object from an Obstacle message. Also converts values to other types if specified. + * @param {message.vision.Obstacle} message Obstacle + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Obstacle.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.visObject = null; + object.shape = null; + object.team = options.enums === String ? "UNKNOWN_TEAM" : 0; + } + if (message.visObject != null && message.hasOwnProperty("visObject")) + object.visObject = $root.message.vision.VisionObject.toObject(message.visObject, options); + if (message.shape != null && message.hasOwnProperty("shape")) + object.shape = $root.message.Polygon.toObject(message.shape, options); + if (message.team != null && message.hasOwnProperty("team")) + object.team = options.enums === String ? $root.message.vision.Obstacle.Team[message.team] : message.team; + return object; + }; + + /** + * Creates a plain object from this Obstacle message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Obstacle.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this Obstacle to JSON. + * @returns {Object.} JSON object + */ + Obstacle.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Team enum. + * @name Team + * @memberof message.vision.Obstacle + * @enum {number} + * @property {number} UNKNOWN_TEAM=0 UNKNOWN_TEAM value + * @property {number} MAGENTA=1 MAGENTA value + * @property {number} CYAN=2 CYAN value + */ + Obstacle.Team = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "UNKNOWN_TEAM"] = 0; + values[valuesById[1] = "MAGENTA"] = 1; + values[valuesById[2] = "CYAN"] = 2; + return values; + })(); + + return Obstacle; + })(); + + vision.Line = (function() { + + /** + * Properties of a Line. + * @typedef message.vision.Line$Properties + * @type {Object} + * @property {message.vision.VisionObject$Properties} [visObject] Line visObject. + * @property {ivec2$Properties} [start] Line start. + * @property {ivec2$Properties} [end] Line end. + * @property {vec4$Properties} [colour] Line colour. + */ + + /** + * Constructs a new Line. + * @exports message.vision.Line + * @constructor + * @param {message.vision.Line$Properties=} [properties] Properties to set + */ + function Line(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Line visObject. + * @type {(message.vision.VisionObject$Properties|null)} + */ + Line.prototype.visObject = null; + + /** + * Line start. + * @type {(ivec2$Properties|null)} + */ + Line.prototype.start = null; + + /** + * Line end. + * @type {(ivec2$Properties|null)} + */ + Line.prototype.end = null; + + /** + * Line colour. + * @type {(vec4$Properties|null)} + */ + Line.prototype.colour = null; + + /** + * Creates a new Line instance using the specified properties. + * @param {message.vision.Line$Properties=} [properties] Properties to set + * @returns {message.vision.Line} Line instance + */ + Line.create = function create(properties) { + return new Line(properties); + }; + + /** + * Encodes the specified Line message. Does not implicitly {@link message.vision.Line.verify|verify} messages. + * @param {message.vision.Line$Properties} message Line message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Line.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.visObject != null && message.hasOwnProperty("visObject")) + $root.message.vision.VisionObject.encode(message.visObject, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.start != null && message.hasOwnProperty("start")) + $root.ivec2.encode(message.start, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.end != null && message.hasOwnProperty("end")) + $root.ivec2.encode(message.end, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + if (message.colour != null && message.hasOwnProperty("colour")) + $root.vec4.encode(message.colour, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified Line message, length delimited. Does not implicitly {@link message.vision.Line.verify|verify} messages. + * @param {message.vision.Line$Properties} message Line message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Line.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a Line message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.vision.Line} Line + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Line.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.vision.Line(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.visObject = $root.message.vision.VisionObject.decode(reader, reader.uint32()); + break; + case 2: + message.start = $root.ivec2.decode(reader, reader.uint32()); + break; + case 3: + message.end = $root.ivec2.decode(reader, reader.uint32()); + break; + case 4: + message.colour = $root.vec4.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a Line message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.vision.Line} Line + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Line.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a Line message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + Line.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.visObject != null && message.hasOwnProperty("visObject")) { + var error = $root.message.vision.VisionObject.verify(message.visObject); + if (error) + return "visObject." + error; + } + if (message.start != null && message.hasOwnProperty("start")) { + var error = $root.ivec2.verify(message.start); + if (error) + return "start." + error; + } + if (message.end != null && message.hasOwnProperty("end")) { + var error = $root.ivec2.verify(message.end); + if (error) + return "end." + error; + } + if (message.colour != null && message.hasOwnProperty("colour")) { + var error = $root.vec4.verify(message.colour); + if (error) + return "colour." + error; + } + return null; + }; + + /** + * Creates a Line message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.vision.Line} Line + */ + Line.fromObject = function fromObject(object) { + if (object instanceof $root.message.vision.Line) + return object; + var message = new $root.message.vision.Line(); + if (object.visObject != null) { + if (typeof object.visObject !== "object") + throw TypeError(".message.vision.Line.visObject: object expected"); + message.visObject = $root.message.vision.VisionObject.fromObject(object.visObject); + } + if (object.start != null) { + if (typeof object.start !== "object") + throw TypeError(".message.vision.Line.start: object expected"); + message.start = $root.ivec2.fromObject(object.start); + } + if (object.end != null) { + if (typeof object.end !== "object") + throw TypeError(".message.vision.Line.end: object expected"); + message.end = $root.ivec2.fromObject(object.end); + } + if (object.colour != null) { + if (typeof object.colour !== "object") + throw TypeError(".message.vision.Line.colour: object expected"); + message.colour = $root.vec4.fromObject(object.colour); + } + return message; + }; + + /** + * Creates a Line message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.vision.Line.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.vision.Line} Line + */ + Line.from = Line.fromObject; + + /** + * Creates a plain object from a Line message. Also converts values to other types if specified. + * @param {message.vision.Line} message Line + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Line.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.visObject = null; + object.start = null; + object.end = null; + object.colour = null; + } + if (message.visObject != null && message.hasOwnProperty("visObject")) + object.visObject = $root.message.vision.VisionObject.toObject(message.visObject, options); + if (message.start != null && message.hasOwnProperty("start")) + object.start = $root.ivec2.toObject(message.start, options); + if (message.end != null && message.hasOwnProperty("end")) + object.end = $root.ivec2.toObject(message.end, options); + if (message.colour != null && message.hasOwnProperty("colour")) + object.colour = $root.vec4.toObject(message.colour, options); + return object; + }; + + /** + * Creates a plain object from this Line message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Line.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this Line to JSON. + * @returns {Object.} JSON object + */ + Line.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return Line; + })(); + + vision.NUsightBalls = (function() { + + /** + * Properties of a NUsightBalls. + * @typedef message.vision.NUsightBalls$Properties + * @type {Object} + * @property {Array.} [balls] NUsightBalls balls. + */ + + /** + * Constructs a new NUsightBalls. + * @exports message.vision.NUsightBalls + * @constructor + * @param {message.vision.NUsightBalls$Properties=} [properties] Properties to set + */ + function NUsightBalls(properties) { + this.balls = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * NUsightBalls balls. + * @type {Array.} + */ + NUsightBalls.prototype.balls = $util.emptyArray; + + /** + * Creates a new NUsightBalls instance using the specified properties. + * @param {message.vision.NUsightBalls$Properties=} [properties] Properties to set + * @returns {message.vision.NUsightBalls} NUsightBalls instance + */ + NUsightBalls.create = function create(properties) { + return new NUsightBalls(properties); + }; + + /** + * Encodes the specified NUsightBalls message. Does not implicitly {@link message.vision.NUsightBalls.verify|verify} messages. + * @param {message.vision.NUsightBalls$Properties} message NUsightBalls message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + NUsightBalls.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.balls != null && message.balls.length) + for (var i = 0; i < message.balls.length; ++i) + $root.message.vision.Ball.encode(message.balls[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified NUsightBalls message, length delimited. Does not implicitly {@link message.vision.NUsightBalls.verify|verify} messages. + * @param {message.vision.NUsightBalls$Properties} message NUsightBalls message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + NUsightBalls.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a NUsightBalls message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.vision.NUsightBalls} NUsightBalls + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + NUsightBalls.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.vision.NUsightBalls(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (!(message.balls && message.balls.length)) + message.balls = []; + message.balls.push($root.message.vision.Ball.decode(reader, reader.uint32())); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a NUsightBalls message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.vision.NUsightBalls} NUsightBalls + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + NUsightBalls.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a NUsightBalls message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + NUsightBalls.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.balls != null && message.hasOwnProperty("balls")) { + if (!Array.isArray(message.balls)) + return "balls: array expected"; + for (var i = 0; i < message.balls.length; ++i) { + var error = $root.message.vision.Ball.verify(message.balls[i]); + if (error) + return "balls." + error; + } + } + return null; + }; + + /** + * Creates a NUsightBalls message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.vision.NUsightBalls} NUsightBalls + */ + NUsightBalls.fromObject = function fromObject(object) { + if (object instanceof $root.message.vision.NUsightBalls) + return object; + var message = new $root.message.vision.NUsightBalls(); + if (object.balls) { + if (!Array.isArray(object.balls)) + throw TypeError(".message.vision.NUsightBalls.balls: array expected"); + message.balls = []; + for (var i = 0; i < object.balls.length; ++i) { + if (typeof object.balls[i] !== "object") + throw TypeError(".message.vision.NUsightBalls.balls: object expected"); + message.balls[i] = $root.message.vision.Ball.fromObject(object.balls[i]); + } + } + return message; + }; + + /** + * Creates a NUsightBalls message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.vision.NUsightBalls.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.vision.NUsightBalls} NUsightBalls + */ + NUsightBalls.from = NUsightBalls.fromObject; + + /** + * Creates a plain object from a NUsightBalls message. Also converts values to other types if specified. + * @param {message.vision.NUsightBalls} message NUsightBalls + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + NUsightBalls.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.balls = []; + if (message.balls && message.balls.length) { + object.balls = []; + for (var j = 0; j < message.balls.length; ++j) + object.balls[j] = $root.message.vision.Ball.toObject(message.balls[j], options); + } + return object; + }; + + /** + * Creates a plain object from this NUsightBalls message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + NUsightBalls.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this NUsightBalls to JSON. + * @returns {Object.} JSON object + */ + NUsightBalls.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return NUsightBalls; + })(); + + vision.NUsightGoals = (function() { + + /** + * Properties of a NUsightGoals. + * @typedef message.vision.NUsightGoals$Properties + * @type {Object} + * @property {Array.} [goals] NUsightGoals goals. + */ + + /** + * Constructs a new NUsightGoals. + * @exports message.vision.NUsightGoals + * @constructor + * @param {message.vision.NUsightGoals$Properties=} [properties] Properties to set + */ + function NUsightGoals(properties) { + this.goals = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * NUsightGoals goals. + * @type {Array.} + */ + NUsightGoals.prototype.goals = $util.emptyArray; + + /** + * Creates a new NUsightGoals instance using the specified properties. + * @param {message.vision.NUsightGoals$Properties=} [properties] Properties to set + * @returns {message.vision.NUsightGoals} NUsightGoals instance + */ + NUsightGoals.create = function create(properties) { + return new NUsightGoals(properties); + }; + + /** + * Encodes the specified NUsightGoals message. Does not implicitly {@link message.vision.NUsightGoals.verify|verify} messages. + * @param {message.vision.NUsightGoals$Properties} message NUsightGoals message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + NUsightGoals.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.goals != null && message.goals.length) + for (var i = 0; i < message.goals.length; ++i) + $root.message.vision.Goal.encode(message.goals[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified NUsightGoals message, length delimited. Does not implicitly {@link message.vision.NUsightGoals.verify|verify} messages. + * @param {message.vision.NUsightGoals$Properties} message NUsightGoals message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + NUsightGoals.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a NUsightGoals message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.vision.NUsightGoals} NUsightGoals + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + NUsightGoals.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.vision.NUsightGoals(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (!(message.goals && message.goals.length)) + message.goals = []; + message.goals.push($root.message.vision.Goal.decode(reader, reader.uint32())); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a NUsightGoals message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.vision.NUsightGoals} NUsightGoals + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + NUsightGoals.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a NUsightGoals message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + NUsightGoals.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.goals != null && message.hasOwnProperty("goals")) { + if (!Array.isArray(message.goals)) + return "goals: array expected"; + for (var i = 0; i < message.goals.length; ++i) { + var error = $root.message.vision.Goal.verify(message.goals[i]); + if (error) + return "goals." + error; + } + } + return null; + }; + + /** + * Creates a NUsightGoals message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.vision.NUsightGoals} NUsightGoals + */ + NUsightGoals.fromObject = function fromObject(object) { + if (object instanceof $root.message.vision.NUsightGoals) + return object; + var message = new $root.message.vision.NUsightGoals(); + if (object.goals) { + if (!Array.isArray(object.goals)) + throw TypeError(".message.vision.NUsightGoals.goals: array expected"); + message.goals = []; + for (var i = 0; i < object.goals.length; ++i) { + if (typeof object.goals[i] !== "object") + throw TypeError(".message.vision.NUsightGoals.goals: object expected"); + message.goals[i] = $root.message.vision.Goal.fromObject(object.goals[i]); + } + } + return message; + }; + + /** + * Creates a NUsightGoals message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.vision.NUsightGoals.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.vision.NUsightGoals} NUsightGoals + */ + NUsightGoals.from = NUsightGoals.fromObject; + + /** + * Creates a plain object from a NUsightGoals message. Also converts values to other types if specified. + * @param {message.vision.NUsightGoals} message NUsightGoals + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + NUsightGoals.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.goals = []; + if (message.goals && message.goals.length) { + object.goals = []; + for (var j = 0; j < message.goals.length; ++j) + object.goals[j] = $root.message.vision.Goal.toObject(message.goals[j], options); + } + return object; + }; + + /** + * Creates a plain object from this NUsightGoals message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + NUsightGoals.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this NUsightGoals to JSON. + * @returns {Object.} JSON object + */ + NUsightGoals.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return NUsightGoals; + })(); + + vision.NUsightObstacles = (function() { + + /** + * Properties of a NUsightObstacles. + * @typedef message.vision.NUsightObstacles$Properties + * @type {Object} + * @property {Array.} [obstacles] NUsightObstacles obstacles. + */ + + /** + * Constructs a new NUsightObstacles. + * @exports message.vision.NUsightObstacles + * @constructor + * @param {message.vision.NUsightObstacles$Properties=} [properties] Properties to set + */ + function NUsightObstacles(properties) { + this.obstacles = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * NUsightObstacles obstacles. + * @type {Array.} + */ + NUsightObstacles.prototype.obstacles = $util.emptyArray; + + /** + * Creates a new NUsightObstacles instance using the specified properties. + * @param {message.vision.NUsightObstacles$Properties=} [properties] Properties to set + * @returns {message.vision.NUsightObstacles} NUsightObstacles instance + */ + NUsightObstacles.create = function create(properties) { + return new NUsightObstacles(properties); + }; + + /** + * Encodes the specified NUsightObstacles message. Does not implicitly {@link message.vision.NUsightObstacles.verify|verify} messages. + * @param {message.vision.NUsightObstacles$Properties} message NUsightObstacles message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + NUsightObstacles.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.obstacles != null && message.obstacles.length) + for (var i = 0; i < message.obstacles.length; ++i) + $root.message.vision.Obstacle.encode(message.obstacles[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified NUsightObstacles message, length delimited. Does not implicitly {@link message.vision.NUsightObstacles.verify|verify} messages. + * @param {message.vision.NUsightObstacles$Properties} message NUsightObstacles message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + NUsightObstacles.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a NUsightObstacles message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.vision.NUsightObstacles} NUsightObstacles + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + NUsightObstacles.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.vision.NUsightObstacles(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (!(message.obstacles && message.obstacles.length)) + message.obstacles = []; + message.obstacles.push($root.message.vision.Obstacle.decode(reader, reader.uint32())); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a NUsightObstacles message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.vision.NUsightObstacles} NUsightObstacles + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + NUsightObstacles.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a NUsightObstacles message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + NUsightObstacles.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.obstacles != null && message.hasOwnProperty("obstacles")) { + if (!Array.isArray(message.obstacles)) + return "obstacles: array expected"; + for (var i = 0; i < message.obstacles.length; ++i) { + var error = $root.message.vision.Obstacle.verify(message.obstacles[i]); + if (error) + return "obstacles." + error; + } + } + return null; + }; + + /** + * Creates a NUsightObstacles message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.vision.NUsightObstacles} NUsightObstacles + */ + NUsightObstacles.fromObject = function fromObject(object) { + if (object instanceof $root.message.vision.NUsightObstacles) + return object; + var message = new $root.message.vision.NUsightObstacles(); + if (object.obstacles) { + if (!Array.isArray(object.obstacles)) + throw TypeError(".message.vision.NUsightObstacles.obstacles: array expected"); + message.obstacles = []; + for (var i = 0; i < object.obstacles.length; ++i) { + if (typeof object.obstacles[i] !== "object") + throw TypeError(".message.vision.NUsightObstacles.obstacles: object expected"); + message.obstacles[i] = $root.message.vision.Obstacle.fromObject(object.obstacles[i]); + } + } + return message; + }; + + /** + * Creates a NUsightObstacles message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.vision.NUsightObstacles.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.vision.NUsightObstacles} NUsightObstacles + */ + NUsightObstacles.from = NUsightObstacles.fromObject; + + /** + * Creates a plain object from a NUsightObstacles message. Also converts values to other types if specified. + * @param {message.vision.NUsightObstacles} message NUsightObstacles + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + NUsightObstacles.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.obstacles = []; + if (message.obstacles && message.obstacles.length) { + object.obstacles = []; + for (var j = 0; j < message.obstacles.length; ++j) + object.obstacles[j] = $root.message.vision.Obstacle.toObject(message.obstacles[j], options); + } + return object; + }; + + /** + * Creates a plain object from this NUsightObstacles message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + NUsightObstacles.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this NUsightObstacles to JSON. + * @returns {Object.} JSON object + */ + NUsightObstacles.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return NUsightObstacles; + })(); + + vision.NUsightLines = (function() { + + /** + * Properties of a NUsightLines. + * @typedef message.vision.NUsightLines$Properties + * @type {Object} + * @property {Array.} [lines] NUsightLines lines. + */ + + /** + * Constructs a new NUsightLines. + * @exports message.vision.NUsightLines + * @constructor + * @param {message.vision.NUsightLines$Properties=} [properties] Properties to set + */ + function NUsightLines(properties) { + this.lines = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * NUsightLines lines. + * @type {Array.} + */ + NUsightLines.prototype.lines = $util.emptyArray; + + /** + * Creates a new NUsightLines instance using the specified properties. + * @param {message.vision.NUsightLines$Properties=} [properties] Properties to set + * @returns {message.vision.NUsightLines} NUsightLines instance + */ + NUsightLines.create = function create(properties) { + return new NUsightLines(properties); + }; + + /** + * Encodes the specified NUsightLines message. Does not implicitly {@link message.vision.NUsightLines.verify|verify} messages. + * @param {message.vision.NUsightLines$Properties} message NUsightLines message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + NUsightLines.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.lines != null && message.lines.length) + for (var i = 0; i < message.lines.length; ++i) + $root.message.vision.Line.encode(message.lines[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified NUsightLines message, length delimited. Does not implicitly {@link message.vision.NUsightLines.verify|verify} messages. + * @param {message.vision.NUsightLines$Properties} message NUsightLines message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + NUsightLines.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a NUsightLines message from the specified reader or buffer. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {message.vision.NUsightLines} NUsightLines + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + NUsightLines.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.message.vision.NUsightLines(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (!(message.lines && message.lines.length)) + message.lines = []; + message.lines.push($root.message.vision.Line.decode(reader, reader.uint32())); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a NUsightLines message from the specified reader or buffer, length delimited. + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {message.vision.NUsightLines} NUsightLines + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + NUsightLines.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a NUsightLines message. + * @param {Object.} message Plain object to verify + * @returns {?string} `null` if valid, otherwise the reason why it is not + */ + NUsightLines.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.lines != null && message.hasOwnProperty("lines")) { + if (!Array.isArray(message.lines)) + return "lines: array expected"; + for (var i = 0; i < message.lines.length; ++i) { + var error = $root.message.vision.Line.verify(message.lines[i]); + if (error) + return "lines." + error; + } + } + return null; + }; + + /** + * Creates a NUsightLines message from a plain object. Also converts values to their respective internal types. + * @param {Object.} object Plain object + * @returns {message.vision.NUsightLines} NUsightLines + */ + NUsightLines.fromObject = function fromObject(object) { + if (object instanceof $root.message.vision.NUsightLines) + return object; + var message = new $root.message.vision.NUsightLines(); + if (object.lines) { + if (!Array.isArray(object.lines)) + throw TypeError(".message.vision.NUsightLines.lines: array expected"); + message.lines = []; + for (var i = 0; i < object.lines.length; ++i) { + if (typeof object.lines[i] !== "object") + throw TypeError(".message.vision.NUsightLines.lines: object expected"); + message.lines[i] = $root.message.vision.Line.fromObject(object.lines[i]); + } + } + return message; + }; + + /** + * Creates a NUsightLines message from a plain object. Also converts values to their respective internal types. + * This is an alias of {@link message.vision.NUsightLines.fromObject}. + * @function + * @param {Object.} object Plain object + * @returns {message.vision.NUsightLines} NUsightLines + */ + NUsightLines.from = NUsightLines.fromObject; + + /** + * Creates a plain object from a NUsightLines message. Also converts values to other types if specified. + * @param {message.vision.NUsightLines} message NUsightLines + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + NUsightLines.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.lines = []; + if (message.lines && message.lines.length) { + object.lines = []; + for (var j = 0; j < message.lines.length; ++j) + object.lines[j] = $root.message.vision.Line.toObject(message.lines[j], options); + } + return object; + }; + + /** + * Creates a plain object from this NUsightLines message. Also converts values to other types if specified. + * @param {$protobuf.ConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + NUsightLines.prototype.toObject = function toObject(options) { + return this.constructor.toObject(this, options); + }; + + /** + * Converts this NUsightLines to JSON. + * @returns {Object.} JSON object + */ + NUsightLines.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return NUsightLines; + })(); + + return vision; + })(); + + return message; +})(); + +module.exports = $root; diff --git a/src/simulators/flat_map.ts b/src/simulators/flat_map.ts new file mode 100644 index 00000000..663ff9c1 --- /dev/null +++ b/src/simulators/flat_map.ts @@ -0,0 +1,8 @@ +/** + * Run fn on each item in the given array, flatten the list of lists into a single list. + * + * e.g. flatMap(x => [x, x * x], [1, 2, 3]); // [1, 1, 2, 4, 3, 9] + */ +export function flatMap(fn: (item: T) => U[], arr: T[]): U[] { + return Array.prototype.concat.apply([], arr.map(fn)) +} diff --git a/src/simulators/nodemon.json b/src/simulators/nodemon.json new file mode 100644 index 00000000..8e47e980 --- /dev/null +++ b/src/simulators/nodemon.json @@ -0,0 +1,5 @@ +{ + "execMap": { + "ts": "ts-node" + } +} diff --git a/src/simulators/nuclearnet/fake_nuclearnet.ts b/src/simulators/nuclearnet/fake_nuclearnet.ts new file mode 100644 index 00000000..99a7a5bd --- /dev/null +++ b/src/simulators/nuclearnet/fake_nuclearnet.ts @@ -0,0 +1,69 @@ +import { injectable } from 'inversify' +import { inject } from 'inversify' +import { NUClearNet } from 'nuclearnet.js' +import { NUClearNetPacket } from 'nuclearnet.js' +import { NUClearNetOptions } from 'nuclearnet.js' +import { NUClearNetSend } from 'nuclearnet.js' +import { NUClearNetPeer } from 'nuclearnet.js' +import { FakeNUClearNetServer } from './fake_nuclearnet_server' + +type PacketListener = (packet: NUClearNetPacket) => void +type EventListener = (peer: NUClearNetPeer) => void +type Listener = EventListener | PacketListener +type EventMessage = 'nuclear_join' | 'nuclear_leave' + +@injectable() +export class FakeNUClearNet implements NUClearNet { + private peer: NUClearNetPeer + private listeners: Map + private connected: boolean + + public constructor(@inject(FakeNUClearNetServer) private server: FakeNUClearNetServer) { + this.listeners = new Map() + this.connected = false + } + + public on(event: EventMessage, callback: EventListener): this + public on(event: string, callback: PacketListener): this + public on(event: string, callback: Listener): this { + const listener = (...args: any[]) => { + if (this.connected) { + callback.apply(null, args) + } + } + this.listeners.set(callback, listener) + this.server.on(event, listener) + return this + } + + public removeListener(event: string, callback: Listener): this { + const listener = this.listeners.get(callback) + if (listener) { + this.server.removeListener(event, listener) + this.listeners.delete(callback) + } + return this + } + + public connect(options: NUClearNetOptions): void { + this.peer = { + name: options.name, + address: '127.0.0.1', + port: options.port || 7447, + } + this.server.connect(this.peer) + this.connected = true + } + + public disconnect(): void { + if (this.peer === undefined) { + throw new Error('Cannot disconnect without first connecting') + } + this.connected = false + this.server.disconnect(this.peer) + } + + public send(options: NUClearNetSend): void { + this.server.send(this.peer, options) + } +} diff --git a/src/simulators/nuclearnet/fake_nuclearnet_server.ts b/src/simulators/nuclearnet/fake_nuclearnet_server.ts new file mode 100644 index 00000000..03aa178f --- /dev/null +++ b/src/simulators/nuclearnet/fake_nuclearnet_server.ts @@ -0,0 +1,36 @@ +import * as EventEmitter from 'events' +import { injectable } from 'inversify' +import { NUClearNetPeer } from 'nuclearnet.js' +import { NUClearNetSend } from 'nuclearnet.js' + +@injectable() +export class FakeNUClearNetServer extends EventEmitter { + private peers: NUClearNetPeer[] + + public constructor() { + super() + + this.peers = [] + } + + public connect(peer: NUClearNetPeer): void { + this.emit('nuclear_join', peer) + this.peers.push(peer) + } + + public disconnect(peer: NUClearNetPeer) { + this.emit('nuclear_leave', peer) + this.peers.splice(this.peers.indexOf(peer), 1) + } + + public send(peer: NUClearNetPeer, opts: NUClearNetSend) { + if (typeof opts.type === 'string') { + const packet = { + peer, + payload: opts.payload, + } + // TODO (Annable): Support opts.target + this.emit(opts.type, packet) + } + } +} diff --git a/src/simulators/nuclearnet/tests/fake_nuclearnet.tests.ts b/src/simulators/nuclearnet/tests/fake_nuclearnet.tests.ts new file mode 100644 index 00000000..825e7ed9 --- /dev/null +++ b/src/simulators/nuclearnet/tests/fake_nuclearnet.tests.ts @@ -0,0 +1,91 @@ +import { NUClearNet } from 'nuclearnet.js' +import 'reflect-metadata' +import { FakeNUClearNet } from '../fake_nuclearnet' +import { FakeNUClearNetServer } from '../fake_nuclearnet_server' + +describe('FakeNUClearNet', () => { + let server: FakeNUClearNetServer + let alice: NUClearNet + let bob: NUClearNet + let eve: NUClearNet + + beforeEach(() => { + server = new FakeNUClearNetServer() + alice = new FakeNUClearNet(server) + bob = new FakeNUClearNet(server) + eve = new FakeNUClearNet(server) + }) + + it('calls nuclear_join event handlers on connect', () => { + alice.connect({ name: 'alice' }) + eve.connect({ name: 'eve' }) + + const aliceOnJoin = jest.fn() + alice.on('nuclear_join', aliceOnJoin) + + const eveOnJoin = jest.fn() + eve.on('nuclear_join', eveOnJoin) + + const bobOnJoin = jest.fn() + bob.on('nuclear_join', bobOnJoin) + + bob.connect({ name: 'bob' }) + + const expectedPeer = { name: 'bob', address: '127.0.0.1', port: 7447 } + + expect(aliceOnJoin).toHaveBeenCalledWith(expectedPeer) + expect(eveOnJoin).toHaveBeenCalledWith(expectedPeer) + expect(bobOnJoin).not.toHaveBeenCalled() + }) + + it('calls nuclear_leave event handlers on disconnect', () => { + alice.connect({ name: 'alice' }) + eve.connect({ name: 'eve' }) + + const aliceOnLeave = jest.fn() + alice.on('nuclear_leave', aliceOnLeave) + + const eveOnLeave = jest.fn() + eve.on('nuclear_leave', eveOnLeave) + + const bobOnLeave = jest.fn() + bob.on('nuclear_leave', bobOnLeave) + + bob.connect({ name: 'bob' }) + + const expectedPeer = { name: 'bob', address: '127.0.0.1', port: 7447 } + + bob.disconnect() + + expect(aliceOnLeave).toHaveBeenCalledWith(expectedPeer) + expect(eveOnLeave).toHaveBeenCalledWith(expectedPeer) + expect(bobOnLeave).not.toHaveBeenCalled() + }) + + it('sends messages to others', () => { + alice.connect({ name: 'alice' }) + eve.connect({ name: 'eve' }) + bob.connect({ name: 'bob' }) + + const aliceOnFoo = jest.fn() + alice.on('foo', aliceOnFoo) + + const eveOnFoo = jest.fn() + eve.on('foo', eveOnFoo) + + const bobOnFoo = jest.fn() + bob.on('foo', bobOnFoo) + + const payload = new Buffer(8) + bob.send({ type: 'foo', payload }) + + const expectedPacket = { + payload, + peer: { name: 'bob', address: '127.0.0.1', port: 7447 }, + } + + expect(aliceOnFoo).toHaveBeenCalledWith(expectedPacket) + expect(eveOnFoo).toHaveBeenCalledWith(expectedPacket) + expect(bobOnFoo).toHaveBeenCalledWith(expectedPacket) + }) +}) diff --git a/src/simulators/robot_simulator.ts b/src/simulators/robot_simulator.ts new file mode 100644 index 00000000..14666ac4 --- /dev/null +++ b/src/simulators/robot_simulator.ts @@ -0,0 +1,78 @@ +import { inject } from 'inversify' +import { NUClearNet } from 'nuclearnet.js' +import { Clock } from '../../src/server/time/clock' +import { CancelTimer } from '../../src/server/time/node_clock' +import { ClockType } from '../server/time/clock' +import { flatMap } from './flat_map' +import { Simulator } from './simulator' + +export class RobotSimulator { + private name: string + private simulators: Simulator[] + public messagesSent: number + + public constructor(@inject(NUClearNet) private network: NUClearNet, + @inject(ClockType) private clock: Clock, + opts: { name: string, simulators: Simulator[] }) { + Object.assign(this, opts) + + this.messagesSent = 0 + } + + public simulateWithFrequency(frequency: number) { + this.connect() + + const period = 1000 / frequency + const cancelLoop = this.clock.setInterval(() => this.simulate(), period) + + return () => { + cancelLoop() + this.disconnect() + } + } + + public send(messageType: string, buffer: Uint8Array, reliable?: boolean) { + const header = new Buffer(9) + header.writeUInt8(0, 0) + // TODO: A 64bit timestamp used to be written to the header here, but it does not seem to be used? + this.network.send({ + type: `NUsight<${messageType}>`, + payload: Buffer.concat([header, new Buffer(buffer)]), + target: 'nusight', + reliable, + }) + this.messagesSent++ + } + + private simulate() { + const messages = flatMap(simulator => simulator.simulate(this.clock.now()), this.simulators) + messages.forEach(message => this.send(message.messageType, message.buffer)) + } + + private connect() { + this.network.connect({ name: this.name }) + } + + private disconnect() { + this.network.disconnect() + } +} + +export class SimulatorStatus { + private lastMessagesSent: number + + public constructor(@inject(ClockType) private clock: Clock, + private simulator: RobotSimulator) { + this.lastMessagesSent = 0 + } + + public statusEvery(seconds: number): CancelTimer { + return this.clock.setInterval(() => { + const messagesSent = this.simulator.messagesSent + const delta = messagesSent - this.lastMessagesSent + // tslint:disable-next-line no-console + console.log(`Simulator: Sending ${(delta / seconds).toFixed(2)} messages/second.`) + this.lastMessagesSent = messagesSent + }, seconds * 1000) + } +} diff --git a/src/simulators/sensor_data_simulator.ts b/src/simulators/sensor_data_simulator.ts new file mode 100644 index 00000000..4a0c9de0 --- /dev/null +++ b/src/simulators/sensor_data_simulator.ts @@ -0,0 +1,46 @@ +import { message } from '../../src/shared/proto/messages' +import { Simulator } from './simulator' +import { Message } from './simulator' +import Sensors = message.input.Sensors + +export class SensorDataSimulator implements Simulator { + public static of() { + return new SensorDataSimulator() + } + + public simulate(time: number): Message[] { + const messageType = 'message.input.Sensors' + + // Simulate a walk + const t = time * 5E-3 + + const buffer = Sensors.encode({ + servo: [ + { presentPosition: 3 * Math.PI / 4 + 0.5 * Math.cos(t - Math.PI) }, + { presentPosition: 3 * Math.PI / 4 + 0.5 * Math.cos(t) }, + { presentPosition: -Math.PI / 8 }, + { presentPosition: Math.PI / 8 }, + { presentPosition: -3 * Math.PI / 4 }, + { presentPosition: -3 * Math.PI / 4 }, + { presentPosition: 0 }, + { presentPosition: 0 }, + { presentPosition: 0 }, + { presentPosition: 0 }, + { presentPosition: 0.5 * (Math.cos(t) - 1) }, + { presentPosition: 0.5 * (Math.cos(t - Math.PI) - 1) }, + { presentPosition: 0.5 * (-Math.cos(t) + 1) }, + { presentPosition: 0.5 * (-Math.cos(t - Math.PI) + 1) }, + { presentPosition: 0 }, + { presentPosition: 0 }, + { presentPosition: 0 }, + { presentPosition: 0 }, + { presentPosition: 0.1 * Math.cos(t) }, + { presentPosition: 0.1 * Math.cos(t / 3) + 0.4 }, + ], + }).finish() + + const message = { messageType, buffer } + + return [message] + } +} diff --git a/src/simulators/simulate.ts b/src/simulators/simulate.ts new file mode 100644 index 00000000..e63c408e --- /dev/null +++ b/src/simulators/simulate.ts @@ -0,0 +1,44 @@ +import * as minimist from 'minimist' +import { NUClearNet } from 'nuclearnet.js' +import 'reflect-metadata' +import { getContainer } from '../server/inversify.config' +import { Clock } from '../server/time/clock' +import { ClockType } from '../server/time/clock' +import { SimulatorStatus } from './robot_simulator' +import { RobotSimulator } from './robot_simulator' +import { SensorDataSimulator } from './sensor_data_simulator' +import { Simulator } from './simulator' + +function main() { + const args = minimist(process.argv.slice(2)) + + const simulators = getSimulators(args) + const container = getContainer({ fakeNetworking: false }) + const clock = container.get(ClockType) + const robotSimulator = new RobotSimulator( + container.get(NUClearNet), + clock, + { + name: 'Robot Simulator', + simulators, + }, + ) + new SimulatorStatus(clock, robotSimulator).statusEvery(2) + robotSimulator.simulateWithFrequency(60) +} + +function getSimulators(args: minimist.ParsedArgs): Simulator[] { + const simulators = [] + if (args.sensors || args.all) { + simulators.push(SensorDataSimulator.of()) + } + if (simulators.length === 0) { + // If no simulators given, enable them all. + return getSimulators({ ...args, all: true }) + } + return simulators +} + +if (require.main === module) { + main() +} diff --git a/src/simulators/simulator.ts b/src/simulators/simulator.ts new file mode 100644 index 00000000..a09bc4b4 --- /dev/null +++ b/src/simulators/simulator.ts @@ -0,0 +1,9 @@ +export interface Simulator { + simulate(time: number): Message[] +} + +export interface Message { + messageType: string + buffer: Uint8Array + reliable?: boolean +} diff --git a/tsconfig.json b/tsconfig.json index 5171f281..5755b861 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -12,6 +12,7 @@ "noImplicitReturns": false, "removeComments": true, "strictNullChecks": true, + "downlevelIteration": true, "outDir": "build", "lib": [ "es6", diff --git a/tslint.json b/tslint.json index 50c9eaee..1377b0ee 100644 --- a/tslint.json +++ b/tslint.json @@ -1,35 +1,79 @@ { - "defaultSeverity": "error", - "extends": [ - "tslint:recommended" - ], - "rules": { - "semicolon": { - "options": ["never"] - }, - "arrow-parens": false, - "object-literal-sort-keys": false, - "max-classes-per-file": false, - "interface-name": [true, "never-prefix"], - "quotemark": { - "options": [ - "single", - "avoid-escape" - ] - }, - "member-ordering": [ - true, - { - "order": [ - "instance-field", - "constructor", - "static-method", - "public-instance-method", - "protected-instance-method", - "private-instance-method" - ] - } - ] - }, - "rulesDirectory": [] + "defaultSeverity": "error", + "extends": [ + "tslint-eslint-rules" + ], + "rules": { + "semicolon": { + "options": [ + "never" + ] + }, + "curly": true, + "eofline": true, + "block-spacing": [ + true, + "never" + ], + "array-bracket-spacing": [ + true, + "never" + ], + "new-parens": true, + "ter-max-len": [ + true, + 120 + ], + "ter-arrow-spacing": [ + true, + { + "before": true, + "after": true + } + ], + "space-in-parens": [ + true, + "never" + ], + "ter-indent": [ + true, + 2, + { + "SwitchCase": 1 + } + ], + "object-literal-shorthand": true, + "ter-prefer-arrow-callback": true, + "linebreak-style": "unix", + "object-curly-spacing": true, + "arrow-parens": false, + "object-literal-sort-keys": false, + "max-classes-per-file": false, + "interface-name": [ + true, + "never-prefix" + ], + "no-empty-interface": false, + "quotemark": { + "options": [ + "single", + "avoid-escape" + ] + }, + "member-access": true, + "member-ordering": [ + true, + { + "order": [ + "instance-field", + "constructor", + "static-method", + "public-instance-method", + "protected-instance-method", + "private-instance-method" + ] + } + ] + }, + "rulesDirectory": [] } diff --git a/webpack.config.ts b/webpack.config.ts index 2068e292..531bdc06 100644 --- a/webpack.config.ts +++ b/webpack.config.ts @@ -13,18 +13,22 @@ export default { devtool: isProduction ? false : 'inline-source-map', entry: { main: [ + 'reflect-metadata', './client/index.tsx', ].concat(isProduction ? [] : [ 'webpack-hot-middleware/client', ]), vendor: [ 'classnames', + 'inversify', + 'inversify-inject-decorators', 'mobx', 'mobx-react', 'mobx-react-router', 'react', 'react-dom', 'react-router', + 'reflect-metadata', 'socket.io-client', 'three', ], @@ -113,6 +117,8 @@ export default { { test: /\.html$/, use: 'html-loader' }, { test: /\.png$/, use: 'url-loader?limit=10000' }, { test: /\.jpg$/, use: 'file-loader' }, + { test: /\.vert$/, use: 'raw-loader' }, + { test: /\.frag$/, use: 'raw-loader' }, ], }, plugins: [ diff --git a/yarn.lock b/yarn.lock index 05c8df14..ad5f2936 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,6 +2,49 @@ # yarn lockfile v1 +"@protobufjs/aspromise@^1.1.1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@protobufjs/aspromise/-/aspromise-1.1.2.tgz#9b8b0cc663d669a7d8f6f5d0893a14d348f30fbf" + +"@protobufjs/base64@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@protobufjs/base64/-/base64-1.1.1.tgz#8f10115d2b1ac2c25f3602e55eba708e56bcd2bb" + +"@protobufjs/codegen@^1.0.8": + version "1.0.8" + resolved "https://registry.yarnpkg.com/@protobufjs/codegen/-/codegen-1.0.8.tgz#d29e3d48a9445d77ccbffa420379b29dc37c6d7d" + +"@protobufjs/eventemitter@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz#355cbc98bafad5978f9ed095f397621f1d066b70" + +"@protobufjs/fetch@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/fetch/-/fetch-1.1.0.tgz#ba99fb598614af65700c1619ff06d454b0d84c45" + dependencies: + "@protobufjs/aspromise" "^1.1.1" + "@protobufjs/inquire" "^1.1.0" + +"@protobufjs/float@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@protobufjs/float/-/float-1.0.2.tgz#5e9e1abdcb73fc0a7cb8b291df78c8cbd97b87d1" + +"@protobufjs/inquire@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/inquire/-/inquire-1.1.0.tgz#ff200e3e7cf2429e2dcafc1140828e8cc638f089" + +"@protobufjs/path@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@protobufjs/path/-/path-1.1.2.tgz#6cc2b20c5c9ad6ad0dccfd21ca7673d8d7fbf68d" + +"@protobufjs/pool@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/pool/-/pool-1.1.0.tgz#09fd15f2d6d3abfa9b65bc366506d6ad7846ff54" + +"@protobufjs/utf8@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570" + "@types/chai@*", "@types/chai@^3.5.2": version "3.5.2" resolved "https://registry.yarnpkg.com/@types/chai/-/chai-3.5.2.tgz#c11cd2817d3a401b7ba0f5a420f35c56139b1c1e" @@ -75,6 +118,10 @@ version "19.2.3" resolved "https://registry.yarnpkg.com/@types/jest/-/jest-19.2.3.tgz#61748040e8589a891dfc2ec1d16a2dd74482980e" +"@types/long@^3.0.31": + version "3.0.31" + resolved "https://registry.yarnpkg.com/@types/long/-/long-3.0.31.tgz#08635b0d0d322676940c1a88a7a9cef661c6f34a" + "@types/mime@*": version "0.0.29" resolved "https://registry.yarnpkg.com/@types/mime/-/mime-0.0.29.tgz#fbcfd330573b912ef59eeee14602bface630754b" @@ -83,10 +130,18 @@ version "2.0.29" resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-2.0.29.tgz#5002e14f75e2d71e564281df0431c8c1b4a2a36a" +"@types/minimist@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.0.tgz#69a23a3ad29caf0097f06eda59b361ee2f0639f6" + "@types/node@*", "@types/node@^7.0.14": version "7.0.15" resolved "https://registry.yarnpkg.com/@types/node/-/node-7.0.15.tgz#628429289604c5f7e56c13f3a0422f3e59df1a17" +"@types/node@7.0.12": + version "7.0.12" + resolved "https://registry.yarnpkg.com/@types/node/-/node-7.0.12.tgz#ae5f67a19c15f752148004db07cbbb372e69efc9" + "@types/react-dom@^0.14.23": version "0.14.23" resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-0.14.23.tgz#cecfcfad754b4c2765fe5d29b81b301889ad6c2e" @@ -1066,6 +1121,10 @@ binary-extensions@^1.0.0: version "1.8.0" resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.8.0.tgz#48ec8d16df4377eae5fa5884682480af4d95c774" +bindings@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.2.1.tgz#14ad6113812d2d37d72e67b4cacb4bb726505f11" + blob@0.0.4: version "0.0.4" resolved "https://registry.yarnpkg.com/blob/-/blob-0.0.4.tgz#bcf13052ca54463f30f9fc7e95b9a47630a94921" @@ -1854,6 +1913,13 @@ directory-encoder@^0.7.2: handlebars "^1.3.0" img-stats "^0.5.2" +doctrine@^0.7.2: + version "0.7.2" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-0.7.2.tgz#7cb860359ba3be90e040b26b729ce4bfa654c523" + dependencies: + esutils "^1.1.6" + isarray "0.0.1" + dom-converter@~0.1: version "0.1.4" resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.1.4.tgz#a45ef5727b890c9bffe6d7c876e7b19cb0e17f3b" @@ -2063,6 +2129,10 @@ estraverse@^1.9.1: version "1.9.3" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-1.9.3.tgz#af67f2dc922582415950926091a4005d29c9bb44" +esutils@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-1.1.6.tgz#c01ccaa9ae4b897c6d0c3e210ae52f3c7a844375" + esutils@^2.0.0, esutils@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" @@ -2280,6 +2350,10 @@ find-cache-dir@^0.1.1: mkdirp "^0.5.1" pkg-dir "^1.0.0" +find-parent-dir@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/find-parent-dir/-/find-parent-dir-0.3.0.tgz#33c44b429ab2b2f0646299c5f9f718f376ff8d54" + find-up@^1.0.0, find-up@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" @@ -2751,6 +2825,15 @@ https-browserify@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-0.0.1.tgz#3f91365cabe60b77ed0ebba24b454e3e09d95a82" +husky@^0.13.3: + version "0.13.3" + resolved "https://registry.yarnpkg.com/husky/-/husky-0.13.3.tgz#bc2066080badc8b8fe3516e881f5bc68a57052ff" + dependencies: + chalk "^1.1.3" + find-parent-dir "^0.3.0" + is-ci "^1.0.9" + normalize-path "^1.0.0" + iconv-lite@0.4.13: version "0.4.13" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.13.tgz#1f88aba4ab0b1508e8312acc39345f36e992e2f2" @@ -2828,6 +2911,14 @@ invariant@^2.2.0, invariant@^2.2.1: dependencies: loose-envify "^1.0.0" +inversify-inject-decorators@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/inversify-inject-decorators/-/inversify-inject-decorators-3.0.1.tgz#de46df46ba72642eacac79451ec5c101e4dbcb00" + +inversify@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/inversify/-/inversify-4.1.0.tgz#e2fef98ebd7c754846d419857f412432125b4ee9" + invert-kv@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" @@ -2860,7 +2951,7 @@ is-builtin-module@^1.0.0: dependencies: builtin-modules "^1.0.0" -is-ci@^1.0.10: +is-ci@^1.0.10, is-ci@^1.0.9: version "1.0.10" resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-1.0.10.tgz#f739336b2632365061a9d48270cd56ae3369318e" dependencies: @@ -3599,6 +3690,10 @@ lolex@^1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/lolex/-/lolex-1.6.0.tgz#3a9a0283452a47d7439e72731b9e07d7386e49f6" +long@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/long/-/long-3.2.0.tgz#d821b7138ca1cb581c172990ef14db200b5c474b" + longest@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" @@ -3786,13 +3881,7 @@ ms@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-1.0.0.tgz#59adcd22edc543f7b5381862d31387b1f4bc9473" -murmurhash-native@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/murmurhash-native/-/murmurhash-native-1.0.1.tgz#5803e86ea2ab67c56d601d8356c9c56971f5ad42" - dependencies: - nan "^2.0.9" - -nan@^2.0.9, nan@^2.3.0: +nan@^2.0.0, nan@^2.3.0: version "2.6.2" resolved "https://registry.yarnpkg.com/nan/-/nan-2.6.2.tgz#e4ff34e6c95fdfb5aecc08de6596f43605a7db45" @@ -3931,6 +4020,10 @@ normalize-package-data@^2.3.2: semver "2 || 3 || 4 || 5" validate-npm-package-license "^3.0.1" +normalize-path@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-1.0.0.tgz#32d0e472f91ff345701c15a8311018d3b0a90379" + normalize-path@^2.0.1: version "2.1.1" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" @@ -3971,11 +4064,12 @@ nth-check@~1.0.1: dependencies: boolbase "~1.0.0" -nuclearnet.js@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/nuclearnet.js/-/nuclearnet.js-0.1.0.tgz#0caa28d3e138dfdc12112f2446d28144da7a298b" +nuclearnet.js@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/nuclearnet.js/-/nuclearnet.js-1.0.5.tgz#827c4b05e416ba591d0212629c82bdbc43aecb34" dependencies: - murmurhash-native "1.0.1" + bindings "^1.2.1" + nan "^2.0.0" num2fraction@^1.2.2: version "1.2.2" @@ -4898,6 +4992,24 @@ prop-types@^15.5.6, prop-types@^15.5.7, prop-types@~15.5.7: dependencies: fbjs "^0.8.9" +protobufjs@^6.7.3: + version "6.7.3" + resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-6.7.3.tgz#9270aa5d75dfe4d37df1dec87c444a72140d0e1c" + dependencies: + "@protobufjs/aspromise" "^1.1.1" + "@protobufjs/base64" "^1.1.1" + "@protobufjs/codegen" "^1.0.8" + "@protobufjs/eventemitter" "^1.1.0" + "@protobufjs/fetch" "^1.1.0" + "@protobufjs/float" "^1.0.2" + "@protobufjs/inquire" "^1.1.0" + "@protobufjs/path" "^1.1.2" + "@protobufjs/pool" "^1.1.0" + "@protobufjs/utf8" "^1.1.0" + "@types/long" "^3.0.31" + "@types/node" "7.0.12" + long "^3.2.0" + proxy-addr@~1.1.3: version "1.1.4" resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-1.1.4.tgz#27e545f6960a44a627d9b44467e35c1b6b4ce2f3" @@ -4979,6 +5091,10 @@ range-parser@^1.0.3, range-parser@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e" +raw-loader@^0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/raw-loader/-/raw-loader-0.5.1.tgz#0c3d0beaed8a01c966d9787bf778281252a979aa" + rc@^1.0.1, rc@^1.1.7: version "1.2.1" resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.1.tgz#2e03e8e42ee450b8cb3dce65be1bf8974e1dfd95" @@ -5140,6 +5256,10 @@ reduce-function-call@^1.0.1: dependencies: balanced-match "^0.4.2" +reflect-metadata@^0.1.10: + version "0.1.10" + resolved "https://registry.yarnpkg.com/reflect-metadata/-/reflect-metadata-0.1.10.tgz#b4f83704416acad89988c9b15635d47e03b9344a" + regenerate@^1.2.1: version "1.3.2" resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.3.2.tgz#d1941c67bad437e1be76433add5b385f95b19260" @@ -5918,10 +6038,18 @@ tsconfig@^6.0.0: strip-bom "^3.0.0" strip-json-comments "^2.0.0" -tslib@^1.6.0: +tslib@^1.0.0, tslib@^1.6.0: version "1.7.0" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.7.0.tgz#6e8366695f72961252b35167b0dd4fbeeafba491" +tslint-eslint-rules@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/tslint-eslint-rules/-/tslint-eslint-rules-4.1.1.tgz#7c30e7882f26bc276bff91d2384975c69daf88ba" + dependencies: + doctrine "^0.7.2" + tslib "^1.0.0" + tsutils "^1.4.0" + tslint@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/tslint/-/tslint-5.2.0.tgz#16a2addf20cb748385f544e9a0edab086bc34114" @@ -5937,7 +6065,7 @@ tslint@^5.2.0: tslib "^1.6.0" tsutils "^1.8.0" -tsutils@^1.8.0: +tsutils@^1.4.0, tsutils@^1.8.0: version "1.8.0" resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-1.8.0.tgz#bf8118ed8e80cd5c9fc7d75728c7963d44ed2f52" From 9135187c61b1b0f6e9a072e58070db1576b3f73a Mon Sep 17 00:00:00 2001 From: Josephus Paye II Date: Tue, 27 Jun 2017 17:35:19 +1000 Subject: [PATCH 15/17] WIP configuration editor --- .../components/configuration/controller.ts | 13 +- src/client/components/configuration/data.ts | 137 +- .../configuration/editor/editor.css | 8 + .../configuration/editor/editor.tsx | 50 + .../editor/fields/list_field.css | 35 + .../editor/fields/list_field.tsx | 40 + .../configuration/editor/fields/map_field.css | 18 + .../configuration/editor/fields/map_field.tsx | 41 + .../editor/fields/scalar_field.css | 27 + .../editor/fields/scalar_field.tsx | 29 + .../editor/values/bool_value.css | 12 + .../editor/values/bool_value.tsx | 25 + .../editor/values/number_value.css | 11 + .../editor/values/number_value.tsx | 21 + .../editor/values/string_value.css | 11 + .../editor/values/string_value.tsx | 21 + src/client/components/configuration/model.ts | 18 +- .../configuration/sample-config-files.json | 14675 ++++++++++++++++ .../components/configuration/tree/tree.tsx | 13 +- src/client/components/configuration/view.tsx | 14 +- 20 files changed, 15133 insertions(+), 86 deletions(-) create mode 100644 src/client/components/configuration/editor/editor.css create mode 100644 src/client/components/configuration/editor/editor.tsx create mode 100644 src/client/components/configuration/editor/fields/list_field.css create mode 100644 src/client/components/configuration/editor/fields/list_field.tsx create mode 100644 src/client/components/configuration/editor/fields/map_field.css create mode 100644 src/client/components/configuration/editor/fields/map_field.tsx create mode 100644 src/client/components/configuration/editor/fields/scalar_field.css create mode 100644 src/client/components/configuration/editor/fields/scalar_field.tsx create mode 100644 src/client/components/configuration/editor/values/bool_value.css create mode 100644 src/client/components/configuration/editor/values/bool_value.tsx create mode 100644 src/client/components/configuration/editor/values/number_value.css create mode 100644 src/client/components/configuration/editor/values/number_value.tsx create mode 100644 src/client/components/configuration/editor/values/string_value.css create mode 100644 src/client/components/configuration/editor/values/string_value.tsx create mode 100644 src/client/components/configuration/sample-config-files.json diff --git a/src/client/components/configuration/controller.ts b/src/client/components/configuration/controller.ts index 18e3ef6b..a1983f72 100644 --- a/src/client/components/configuration/controller.ts +++ b/src/client/components/configuration/controller.ts @@ -1,6 +1,6 @@ import { action, observable } from 'mobx' import { ConfigurationModel } from './model' -import { Node } from './tree/tree' +import { TreeNode } from './model' export class ConfigurationController { private model: ConfigurationModel @@ -14,7 +14,7 @@ export class ConfigurationController { } @action - public onNodeClick = (node: Node): void => { + public onNodeClick = (node: TreeNode): void => { if (node.leaf) { this.selectNode(node) } else { @@ -23,7 +23,7 @@ export class ConfigurationController { } @action - public selectNode = (node: Node) => { + public selectNode = (node: TreeNode) => { if (this.model.selectedFile) { this.model.selectedFile.selected = false } @@ -33,7 +33,12 @@ export class ConfigurationController { } @action - public toggleNodeExpansion = (node: Node) => { + public toggleNodeExpansion = (node: TreeNode) => { node.expanded = !node.expanded } + + @action + public onEditorChange = () => { + // console.log('Editor field changed') + } } diff --git a/src/client/components/configuration/data.ts b/src/client/components/configuration/data.ts index 39d57fee..0f391b0c 100644 --- a/src/client/components/configuration/data.ts +++ b/src/client/components/configuration/data.ts @@ -1,65 +1,76 @@ -import { Node } from './tree/tree' +import { TreeNode } from './model' +import * as files from './sample-config-files.json' -export const configurationData = { - label: 'root', - expanded: true, - leaf: false, - selected: false, - children: [ - { - label: 'parent', - expanded: false, - leaf: false, - selected: false, - children: [ - { - label: 'child1', - expanded: false, - leaf: true, - selected: false, - }, - { - label: 'child2', - expanded: false, - leaf: true, - selected: false, - }, - ], - }, - { - label: 'parent', - expanded: false, - leaf: false, - selected: false, - children: [ - { - label: 'nested parent', - expanded: false, - leaf: false, - selected: false, - children: [ - { - label: 'nested child 1', - expanded: false, - leaf: true, - selected: false, - }, - { - label: 'nested child 2', - expanded: false, - leaf: true, - selected: false, - }, - ], - }, - ], - }, - { - label: 'Some file here', - expanded: true, - leaf: true, - selected: false, - children: [] as Node[], - }, - ], +interface File { + path: string + content: any } + +export function createTreeFromFiles(files: any): TreeNode { + // The tree (root node) + const tree: TreeNode = { + label: 'config/', + expanded: true, + leaf: false, + selected: false, + children: [], + } + + // A map of file paths to tree nodes + const pathNodeMap = { + 'config/': tree, + } + + // Create a node for each file and add it to the tree + files.forEach((file: File) => { + // Remove consecutive slashes from the path + file.path = file.path.replace(/\/\//g, '/') + + // Remove the first segment ('config/') from the path and pass it as parentPath, + // since we've already created it as the root node - this assumes that every + // config file is in one directory - config/ + createTreeNode(file.path.split('/').slice(1), 'config/', file, pathNodeMap) + }) + + return tree +} + +export function createTreeNode(pathSegments: string[], parentPath: string, file: File, pathNodeMap: any) { + const isFolder = pathSegments.length > 1 + const label = pathSegments[0] + (isFolder ? '/' : '') + const currentPath = parentPath + label + + // Abort if the current path is a file node already in the tree + if (!isFolder && pathNodeMap[currentPath] !== undefined) { + return + } + + // Recurse and abort if the current path is a folder node already in the tree + if (isFolder && pathNodeMap[currentPath] !== undefined) { + createTreeNode(pathSegments.slice(1), currentPath, file, pathNodeMap) + return + } + + // Create the new node + const node = { + label, + expanded: false, + leaf: !isFolder, + selected: false, + data: isFolder ? undefined : file, + children: [], + } + + // Add the new node to the tree + pathNodeMap[parentPath].children.push(node) + + // Add the new node to the path map + pathNodeMap[currentPath] = node + + // Recurse if the new node is a folder + if (isFolder) { + createTreeNode(pathSegments.slice(1), currentPath, file, pathNodeMap) + } +} + +export const configurationData = createTreeFromFiles(files) diff --git a/src/client/components/configuration/editor/editor.css b/src/client/components/configuration/editor/editor.css new file mode 100644 index 00000000..0965c82a --- /dev/null +++ b/src/client/components/configuration/editor/editor.css @@ -0,0 +1,8 @@ +.editor { + padding-top: 18px; +} + +.editor, +.editor * { + font-family: monospace; +} diff --git a/src/client/components/configuration/editor/editor.tsx b/src/client/components/configuration/editor/editor.tsx new file mode 100644 index 00000000..9dd58e19 --- /dev/null +++ b/src/client/components/configuration/editor/editor.tsx @@ -0,0 +1,50 @@ +import { observer } from 'mobx-react' +import * as React from 'react' +import * as style from './editor.css' + +import { ListField } from './fields/list_field' +import { MapField } from './fields/map_field' +import { ScalarField } from './fields/scalar_field' + +export interface ConfigurationField { + type: string + value: any + tag?: string + name?: string + uid?: string + path?: string +} + +export interface ConfigurationFile { + path: string, + content: ConfigurationField +} + +export interface FieldProps { + data: ConfigurationField, + onChange?(data: any): void +} + +export interface EditorProps { + data: ConfigurationFile, + onChange?(data: any): void +} + +@observer +export class Editor extends React.Component { + public render(): JSX.Element { + const field = this.props.data.content + return ( +
+ { field.type === 'MAP_VALUE' && } + { field.type === 'LIST_VALUE' && } + { (field.type === 'BOOL_VALUE' || + field.type === 'INT_VALUE' || + field.type === 'DOUBLE_VALUE' || + field.type === 'STRING_VALUE') && + + } +
+ ) + } +} diff --git a/src/client/components/configuration/editor/fields/list_field.css b/src/client/components/configuration/editor/fields/list_field.css new file mode 100644 index 00000000..e504696b --- /dev/null +++ b/src/client/components/configuration/editor/fields/list_field.css @@ -0,0 +1,35 @@ +.listField { + padding: 0; + list-style: none; +} + +.listField__header { + color: #63a35c; + margin-bottom: 8px; + cursor: default; +} + +.listField__header::after { + display: inline-block; + content: ':'; +} + +.listField__subFields { + padding-left: 22px; +} + +.listField__subFields li { + margin-bottom: 8px; + display: flex; +} + +.listField__subFields li:last-child { + margin-bottom: 0; +} + +.listField__subFields li::before { + display: inline-block; + content: '-'; + margin-right: 8px; + color: rgba(0,0,0,0.5); +} diff --git a/src/client/components/configuration/editor/fields/list_field.tsx b/src/client/components/configuration/editor/fields/list_field.tsx new file mode 100644 index 00000000..2f6b5299 --- /dev/null +++ b/src/client/components/configuration/editor/fields/list_field.tsx @@ -0,0 +1,40 @@ +import { observer } from 'mobx-react' +import * as React from 'react' +import * as style from './list_field.css' + +import { ConfigurationField, FieldProps } from '../editor' +import { MapField } from './map_field' +import { NumberValue } from '../values/number_value' +import { StringValue } from '../values/string_value' + +@observer +export class ListField extends React.Component { + public render(): JSX.Element { + return ( +
    + { this.props.data.name && +
    { this.props.data.name }
    + } + +
    + { this.props.data.value.map((field: ConfigurationField) => { + switch (field.type) { + case 'INT_VALUE': + case 'DOUBLE_VALUE': + return
  • + case 'STRING_VALUE': + return
  • + case 'MAP_VALUE': + return
  • + case 'LIST_VALUE': + return
  • + default: + // do nothing + } + }) + } +
    +
+ ) + } +} diff --git a/src/client/components/configuration/editor/fields/map_field.css b/src/client/components/configuration/editor/fields/map_field.css new file mode 100644 index 00000000..934dfd45 --- /dev/null +++ b/src/client/components/configuration/editor/fields/map_field.css @@ -0,0 +1,18 @@ +.mapField { + +} + +.mapField__header { + color: #63a35c; + margin-bottom: 8px; + cursor: default; +} + +.mapField__header::after { + display: inline-block; + content: ':'; +} + +.mapField__subFields { + padding-left: 22px; +} diff --git a/src/client/components/configuration/editor/fields/map_field.tsx b/src/client/components/configuration/editor/fields/map_field.tsx new file mode 100644 index 00000000..054cd62a --- /dev/null +++ b/src/client/components/configuration/editor/fields/map_field.tsx @@ -0,0 +1,41 @@ +import { observer } from 'mobx-react' +import * as React from 'react' +import * as style from './map_field.css' + +import { ConfigurationField, FieldProps } from '../editor' +import { ListField } from './list_field' +import { ScalarField } from './scalar_field' + +@observer +export class MapField extends React.Component { + public render(): JSX.Element { + return ( +
+ { this.props.data.name && +
{ this.props.data.name }
+ } + +
+ { Object.keys(this.props.data.value).map(fieldName => { + const field: ConfigurationField = this.props.data.value[fieldName] + + switch (field.type) { + case 'MAP_VALUE': + return + case 'LIST_VALUE': + return + case 'BOOL_VALUE': + case 'INT_VALUE': + case 'DOUBLE_VALUE': + case 'STRING_VALUE': + return + default: + // do nothing + } + }) + } +
+
+ ) + } +} diff --git a/src/client/components/configuration/editor/fields/scalar_field.css b/src/client/components/configuration/editor/fields/scalar_field.css new file mode 100644 index 00000000..3801b14b --- /dev/null +++ b/src/client/components/configuration/editor/fields/scalar_field.css @@ -0,0 +1,27 @@ +.scalarField { + display: flex; + margin-bottom: 10px; + align-items: center; +} + +.scalarField:last-child { + margin-bottom: 0; +} + +.scalarField__label { + margin-right: 8px; + color: #63a35c; +} + +.scalarField__label::after { + display: inline-block; + content: ':'; +} + +.scalarField__input { + background-color: #EEE; + border: none; + color: #183691; + min-width: 212px; + padding: 2px 4px; +} diff --git a/src/client/components/configuration/editor/fields/scalar_field.tsx b/src/client/components/configuration/editor/fields/scalar_field.tsx new file mode 100644 index 00000000..75ccc071 --- /dev/null +++ b/src/client/components/configuration/editor/fields/scalar_field.tsx @@ -0,0 +1,29 @@ +import { observer } from 'mobx-react' +import * as React from 'react' +import * as style from './scalar_field.css' + +import { BoolValue } from '../values/bool_value' +import { FieldProps } from '../editor' +import { NumberValue } from '../values/number_value' +import { StringValue } from '../values/string_value' + +@observer +export class ScalarField extends React.Component { + public render(): JSX.Element { + const field = this.props.data + return ( + + ) + } +} diff --git a/src/client/components/configuration/editor/values/bool_value.css b/src/client/components/configuration/editor/values/bool_value.css new file mode 100644 index 00000000..406eec10 --- /dev/null +++ b/src/client/components/configuration/editor/values/bool_value.css @@ -0,0 +1,12 @@ +.boolValue { + display: flex; + align-items: center; +} + +.boolValue__input { + +} + +.boolValue__value { + color: #008080; +} diff --git a/src/client/components/configuration/editor/values/bool_value.tsx b/src/client/components/configuration/editor/values/bool_value.tsx new file mode 100644 index 00000000..ee31b879 --- /dev/null +++ b/src/client/components/configuration/editor/values/bool_value.tsx @@ -0,0 +1,25 @@ +import { observer } from 'mobx-react' +import * as React from 'react' +import * as style from './bool_value.css' + +import { FieldProps } from '../editor' + +@observer +export class BoolValue extends React.Component { + public render(): JSX.Element { + return ( +
+ + + + { this.props.data.value ? 'true' : 'false' } + +
+ ) + } +} diff --git a/src/client/components/configuration/editor/values/number_value.css b/src/client/components/configuration/editor/values/number_value.css new file mode 100644 index 00000000..fc1c5680 --- /dev/null +++ b/src/client/components/configuration/editor/values/number_value.css @@ -0,0 +1,11 @@ +.numberValue { + +} + +.numberValue__input { + color: #183691; + border: none; + background-color: #EEE; + padding: 2px 4px; + min-width: 212px; +} diff --git a/src/client/components/configuration/editor/values/number_value.tsx b/src/client/components/configuration/editor/values/number_value.tsx new file mode 100644 index 00000000..52c8aff3 --- /dev/null +++ b/src/client/components/configuration/editor/values/number_value.tsx @@ -0,0 +1,21 @@ +import { observer } from 'mobx-react' +import * as React from 'react' +import * as style from './number_value.css' + +import { FieldProps } from '../editor' + +@observer +export class NumberValue extends React.Component { + public render(): JSX.Element { + return ( +
+ +
+ ) + } +} diff --git a/src/client/components/configuration/editor/values/string_value.css b/src/client/components/configuration/editor/values/string_value.css new file mode 100644 index 00000000..e63d3808 --- /dev/null +++ b/src/client/components/configuration/editor/values/string_value.css @@ -0,0 +1,11 @@ +.stringValue { + +} + +.stringValue__input { + color: #183691; + border: none; + background-color: #EEE; + padding: 2px 4px; + min-width: 212px; +} diff --git a/src/client/components/configuration/editor/values/string_value.tsx b/src/client/components/configuration/editor/values/string_value.tsx new file mode 100644 index 00000000..473691c5 --- /dev/null +++ b/src/client/components/configuration/editor/values/string_value.tsx @@ -0,0 +1,21 @@ +import { observer } from 'mobx-react' +import * as React from 'react' +import * as style from './string_value.css' + +import { FieldProps } from '../editor' + +@observer +export class StringValue extends React.Component { + public render(): JSX.Element { + return ( +
+ +
+ ) + } +} diff --git a/src/client/components/configuration/model.ts b/src/client/components/configuration/model.ts index 13e85d0b..9cdf0f02 100644 --- a/src/client/components/configuration/model.ts +++ b/src/client/components/configuration/model.ts @@ -1,18 +1,26 @@ import { action, observable } from 'mobx' -import { Node } from './tree/tree' + +export interface TreeNode { + label: string + expanded: boolean + leaf: boolean + selected: boolean + data?: any + children?: TreeNode[] +} export class ConfigurationModel { @observable - public files: Node + public files: TreeNode @observable - public selectedFile: Node + public selectedFile: TreeNode | null = null - constructor(opts: { files: Node }) { + constructor(opts: { files: TreeNode }) { Object.assign(this, opts) } - public static of(opts: { files: Node }) { + public static of(opts: { files: TreeNode }) { return new ConfigurationModel(opts) } } diff --git a/src/client/components/configuration/sample-config-files.json b/src/client/components/configuration/sample-config-files.json new file mode 100644 index 00000000..02063145 --- /dev/null +++ b/src/client/components/configuration/sample-config-files.json @@ -0,0 +1,14675 @@ +[ + { + "path": "config/BalanceKinematicResponse.yaml", + "content": { + "value": null, + "tag": "", + "type": "NULL_VALUE" + } + }, + { + "path": "config/darwin1/GlobalConfig.yaml", + "content": { + "type": "MAP_VALUE", + "value": { + "teamId": { + "value": { + "low": 9, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "name": "teamId", + "uid": "413292388", + "path": ".teamId" + }, + "playerId": { + "value": { + "low": 1, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "name": "playerId", + "uid": "1290210280", + "path": ".playerId" + } + } + } + }, + { + "path": "config/darwin1/KinematicsConfiguration.yaml", + "content": { + "type": "MAP_VALUE", + "value": { + "mass_model": { + "type": "MAP_VALUE", + "value": { + "mass_representation_dimension": { + "value": { + "low": 4, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "name": "mass_representation_dimension", + "uid": "1990117084", + "path": ".mass_model.mass_representation_dimension" + }, + "masses": { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.011264, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-708176123", + "path": ".mass_model.masses[0][0]" + }, + { + "value": 0.0109774, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-708176092", + "path": ".mass_model.masses[0][1]" + }, + { + "value": -0.00139357, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-708176061", + "path": ".mass_model.masses[0][2]" + }, + { + "value": 0.025913, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-708176030", + "path": ".mass_model.masses[0][3]" + } + ], + "uid": "-100510237", + "path": ".mass_model.masses[0]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.011264, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-707252602", + "path": ".mass_model.masses[1][0]" + }, + { + "value": -0.0109774, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-707252571", + "path": ".mass_model.masses[1][1]" + }, + { + "value": -0.00139357, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-707252540", + "path": ".mass_model.masses[1][2]" + }, + { + "value": 0.025913, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-707252509", + "path": ".mass_model.masses[1][3]" + } + ], + "uid": "-100510206", + "path": ".mass_model.masses[1]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.025261, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-706329081", + "path": ".mass_model.masses[2][0]" + }, + { + "value": -0.000659787, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-706329050", + "path": ".mass_model.masses[2][1]" + }, + { + "value": 0.000734065, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-706329019", + "path": ".mass_model.masses[2][2]" + }, + { + "value": 0.168377, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-706328988", + "path": ".mass_model.masses[2][3]" + } + ], + "uid": "-100510175", + "path": ".mass_model.masses[2]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.025261, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-705405560", + "path": ".mass_model.masses[3][0]" + }, + { + "value": 0.000659787, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-705405529", + "path": ".mass_model.masses[3][1]" + }, + { + "value": 0.000734065, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-705405498", + "path": ".mass_model.masses[3][2]" + }, + { + "value": 0.168377, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-705405467", + "path": ".mass_model.masses[3][3]" + } + ], + "uid": "-100510144", + "path": ".mass_model.masses[3]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.0841618, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-704482039", + "path": ".mass_model.masses[4][0]" + }, + { + "value": -0.00666564, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-704482008", + "path": ".mass_model.masses[4][1]" + }, + { + "value": -0.0134901, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-704481977", + "path": ".mass_model.masses[4][2]" + }, + { + "value": 0.0592885, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-704481946", + "path": ".mass_model.masses[4][3]" + } + ], + "uid": "-100510113", + "path": ".mass_model.masses[4]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.0841618, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-703558518", + "path": ".mass_model.masses[5][0]" + }, + { + "value": 0.00666564, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-703558487", + "path": ".mass_model.masses[5][1]" + }, + { + "value": -0.0134901, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-703558456", + "path": ".mass_model.masses[5][2]" + }, + { + "value": 0.0592885, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-703558425", + "path": ".mass_model.masses[5][3]" + } + ], + "uid": "-100510082", + "path": ".mass_model.masses[5]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.0155628, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-702634997", + "path": ".mass_model.masses[6][0]" + }, + { + "value": { + "low": 0, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "uid": "-702634966", + "path": ".mass_model.masses[6][1]" + }, + { + "value": 0.000480135, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-702634935", + "path": ".mass_model.masses[6][2]" + }, + { + "value": 0.0270692, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-702634904", + "path": ".mass_model.masses[6][3]" + } + ], + "uid": "-100510051", + "path": ".mass_model.masses[6]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.0155628, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-701711476", + "path": ".mass_model.masses[7][0]" + }, + { + "value": { + "low": 0, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "uid": "-701711445", + "path": ".mass_model.masses[7][1]" + }, + { + "value": 0.000480135, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-701711414", + "path": ".mass_model.masses[7][2]" + }, + { + "value": 0.0270692, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-701711383", + "path": ".mass_model.masses[7][3]" + } + ], + "uid": "-100510020", + "path": ".mass_model.masses[7]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": 0.0138731, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-700787955", + "path": ".mass_model.masses[8][0]" + }, + { + "value": -0.0000799828, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-700787924", + "path": ".mass_model.masses[8][1]" + }, + { + "value": -0.0182424, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-700787893", + "path": ".mass_model.masses[8][2]" + }, + { + "value": 0.167108, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-700787862", + "path": ".mass_model.masses[8][3]" + } + ], + "uid": "-100509989", + "path": ".mass_model.masses[8]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": 0.0138731, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-699864434", + "path": ".mass_model.masses[9][0]" + }, + { + "value": 0.0000799828, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-699864403", + "path": ".mass_model.masses[9][1]" + }, + { + "value": -0.0182424, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-699864372", + "path": ".mass_model.masses[9][2]" + }, + { + "value": 0.167108, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-699864341", + "path": ".mass_model.masses[9][3]" + } + ], + "uid": "-100509958", + "path": ".mass_model.masses[9]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.0300345, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-491453024", + "path": ".mass_model.masses[10][0]" + }, + { + "value": 0.000322635, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-491452993", + "path": ".mass_model.masses[10][1]" + }, + { + "value": 0.000691906, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-491452962", + "path": ".mass_model.masses[10][2]" + }, + { + "value": 0.119043, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-491452931", + "path": ".mass_model.masses[10][3]" + } + ], + "uid": "1179149608", + "path": ".mass_model.masses[10]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.0300345, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-490529503", + "path": ".mass_model.masses[11][0]" + }, + { + "value": -0.000322635, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-490529472", + "path": ".mass_model.masses[11][1]" + }, + { + "value": 0.000691906, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-490529441", + "path": ".mass_model.masses[11][2]" + }, + { + "value": 0.119043, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-490529410", + "path": ".mass_model.masses[11][3]" + } + ], + "uid": "1179149639", + "path": ".mass_model.masses[11]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.0539545, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-489605982", + "path": ".mass_model.masses[12][0]" + }, + { + "value": 0.000592469, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-489605951", + "path": ".mass_model.masses[12][1]" + }, + { + "value": 0.00654763, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-489605920", + "path": ".mass_model.masses[12][2]" + }, + { + "value": 0.0703098, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-489605889", + "path": ".mass_model.masses[12][3]" + } + ], + "uid": "1179149670", + "path": ".mass_model.masses[12]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.0539545, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-488682461", + "path": ".mass_model.masses[13][0]" + }, + { + "value": -0.000592469, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-488682430", + "path": ".mass_model.masses[13][1]" + }, + { + "value": 0.00654763, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-488682399", + "path": ".mass_model.masses[13][2]" + }, + { + "value": 0.0703098, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-488682368", + "path": ".mass_model.masses[13][3]" + } + ], + "uid": "1179149701", + "path": ".mass_model.masses[13]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.0138731, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-487758940", + "path": ".mass_model.masses[14][0]" + }, + { + "value": 0.000213732, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-487758909", + "path": ".mass_model.masses[14][1]" + }, + { + "value": -0.0185361, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-487758878", + "path": ".mass_model.masses[14][2]" + }, + { + "value": 0.167108, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-487758847", + "path": ".mass_model.masses[14][3]" + } + ], + "uid": "1179149732", + "path": ".mass_model.masses[14]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.0138731, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-486835419", + "path": ".mass_model.masses[15][0]" + }, + { + "value": -0.000213732, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-486835388", + "path": ".mass_model.masses[15][1]" + }, + { + "value": -0.0185361, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-486835357", + "path": ".mass_model.masses[15][2]" + }, + { + "value": 0.167108, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-486835326", + "path": ".mass_model.masses[15][3]" + } + ], + "uid": "1179149763", + "path": ".mass_model.masses[15]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": 0.0259953, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-485911898", + "path": ".mass_model.masses[16][0]" + }, + { + "value": -0.00950588, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-485911867", + "path": ".mass_model.masses[16][1]" + }, + { + "value": -0.000502877, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-485911836", + "path": ".mass_model.masses[16][2]" + }, + { + "value": 0.0794462, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-485911805", + "path": ".mass_model.masses[16][3]" + } + ], + "uid": "1179149794", + "path": ".mass_model.masses[16]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": 0.0259953, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-484988377", + "path": ".mass_model.masses[17][0]" + }, + { + "value": 0.00950588, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-484988346", + "path": ".mass_model.masses[17][1]" + }, + { + "value": -0.000502877, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-484988315", + "path": ".mass_model.masses[17][2]" + }, + { + "value": 0.0794462, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-484988284", + "path": ".mass_model.masses[17][3]" + } + ], + "uid": "1179149825", + "path": ".mass_model.masses[17]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.0165676, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-484064856", + "path": ".mass_model.masses[18][0]" + }, + { + "value": 0.00142428, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-484064825", + "path": ".mass_model.masses[18][1]" + }, + { + "value": 0.000712811, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-484064794", + "path": ".mass_model.masses[18][2]" + }, + { + "value": 0.0243577, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-484064763", + "path": ".mass_model.masses[18][3]" + } + ], + "uid": "1179149856", + "path": ".mass_model.masses[18]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.035, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-483141335", + "path": ".mass_model.masses[19][0]" + }, + { + "value": { + "low": 0, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "uid": "-483141304", + "path": ".mass_model.masses[19][1]" + }, + { + "value": 0.01, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-483141273", + "path": ".mass_model.masses[19][2]" + }, + { + "value": 0.11708, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-483141242", + "path": ".mass_model.masses[19][3]" + } + ], + "uid": "1179149887", + "path": ".mass_model.masses[19]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.0066631, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-462823873", + "path": ".mass_model.masses[20][0]" + }, + { + "value": -0.00311589, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-462823842", + "path": ".mass_model.masses[20][1]" + }, + { + "value": 0.0705563, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-462823811", + "path": ".mass_model.masses[20][2]" + }, + { + "value": 0.975599, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-462823780", + "path": ".mass_model.masses[20][3]" + } + ], + "uid": "1179150569", + "path": ".mass_model.masses[20]" + } + ], + "name": "masses", + "uid": "1683469253", + "path": ".mass_model.masses" + }, + "number_of_masses": { + "value": { + "low": 21, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "name": "number_of_masses", + "uid": "-2044792329", + "path": ".mass_model.number_of_masses" + } + }, + "name": "mass_model", + "uid": "-2079038933", + "path": ".mass_model" + }, + "leg": { + "type": "MAP_VALUE", + "value": { + "hip_offset": { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": 0, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1905860328", + "path": ".leg.hip_offset[0]" + }, + { + "value": 0.037, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1905860297", + "path": ".leg.hip_offset[1]" + }, + { + "value": 0.034, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1905860266", + "path": ".leg.hip_offset[2]" + } + ], + "name": "hip_offset", + "uid": "-780600144", + "path": ".leg.hip_offset" + }, + "lower_leg_length": { + "value": 0.093, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "lower_leg_length", + "uid": "392147426", + "path": ".leg.lower_leg_length" + }, + "foot_centre_to_ankle_centre": { + "value": 0.011, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "foot_centre_to_ankle_centre", + "uid": "280378695", + "path": ".leg.foot_centre_to_ankle_centre" + }, + "foot": { + "type": "MAP_VALUE", + "value": { + "width": { + "value": 0.066, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "width", + "uid": "-477619789", + "path": ".leg.foot.width" + }, + "toe_length": { + "value": 0.0472, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "toe_length", + "uid": "-1503277138", + "path": ".leg.foot.toe_length" + }, + "length": { + "value": 0.094, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "length", + "uid": "2055326873", + "path": ".leg.foot.length" + }, + "height": { + "value": 0.0335, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "height", + "uid": "1940660954", + "path": ".leg.foot.height" + } + }, + "name": "foot", + "uid": "1692950427", + "path": ".leg.foot" + }, + "heel_length": { + "value": 0.0451, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "heel_length", + "uid": "801661268", + "path": ".leg.heel_length" + }, + "upper_leg_length": { + "value": 0.093, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "upper_leg_length", + "uid": "843802017", + "path": ".leg.upper_leg_length" + } + }, + "name": "leg", + "uid": "-216440159", + "path": ".leg" + }, + "head": { + "type": "MAP_VALUE", + "value": { + "camera_declination_angle_offset": { + "value": 0, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "camera_declination_angle_offset", + "uid": "1664816561", + "path": ".head.camera_declination_angle_offset" + }, + "neck": { + "type": "MAP_VALUE", + "value": { + "length": { + "value": 0.042, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "length", + "uid": "-1458455916", + "path": ".head.neck.length" + }, + "base_position_from_origin": { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": 0.013, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-158455773", + "path": ".head.neck.base_position_from_origin[0]" + }, + { + "value": { + "low": 0, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "uid": "-158455742", + "path": ".head.neck.base_position_from_origin[1]" + }, + { + "value": 0.11, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-158455711", + "path": ".head.neck.base_position_from_origin[2]" + } + ], + "name": "base_position_from_origin", + "uid": "-530118267", + "path": ".head.neck.base_position_from_origin" + } + }, + "name": "neck", + "uid": "45901312", + "path": ".head.neck" + }, + "neck_to_camera": { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": 0.036, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-834684514", + "path": ".head.neck_to_camera[0]" + }, + { + "value": { + "low": 0, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "uid": "-834684483", + "path": ".head.neck_to_camera[1]" + }, + { + "value": 0.028, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-834684452", + "path": ".head.neck_to_camera[2]" + } + ], + "name": "neck_to_camera", + "uid": "398746090", + "path": ".head.neck_to_camera" + }, + "limits": { + "type": "MAP_VALUE", + "value": { + "yaw": { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": "-pi * 2 / 3", + "tag": "?", + "type": "STRING_VALUE", + "uid": "-326904562", + "path": ".head.limits.yaw[0]" + }, + { + "value": "pi * 2 / 3", + "tag": "?", + "type": "STRING_VALUE", + "uid": "-326904531", + "path": ".head.limits.yaw[1]" + } + ], + "name": "yaw", + "uid": "-1691124614", + "path": ".head.limits.yaw" + }, + "pitch": { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": "-pi / 6", + "tag": "?", + "type": "STRING_VALUE", + "uid": "-694831779", + "path": ".head.limits.pitch[0]" + }, + { + "value": "pi / 2", + "tag": "?", + "type": "STRING_VALUE", + "uid": "-694831748", + "path": ".head.limits.pitch[1]" + } + ], + "name": "pitch", + "uid": "-1681189237", + "path": ".head.limits.pitch" + } + }, + "name": "limits", + "uid": "1108223353", + "path": ".head.limits" + } + }, + "name": "head", + "uid": "1880170413", + "path": ".head" + }, + "arm": { + "type": "MAP_VALUE", + "value": { + "distance_between_shoulders": { + "value": 0.114, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "distance_between_shoulders", + "uid": "370826225", + "path": ".arm.distance_between_shoulders" + }, + "lower_arm": { + "type": "MAP_VALUE", + "value": { + "offset": { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": { + "low": 0, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "uid": "1782050566", + "path": ".arm.lower_arm.offset[0]" + }, + { + "value": { + "low": 0, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "uid": "1782050597", + "path": ".arm.lower_arm.offset[1]" + } + ], + "name": "offset", + "uid": "-1926339198", + "path": ".arm.lower_arm.offset" + }, + "length": { + "value": 0.13, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "length", + "uid": "-2012922923", + "path": ".arm.lower_arm.length" + } + }, + "name": "lower_arm", + "uid": "1080122335", + "path": ".arm.lower_arm" + }, + "shoulder": { + "type": "MAP_VALUE", + "value": { + "width": { + "value": 0.0245, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "width", + "uid": "-1201625897", + "path": ".arm.shoulder.width" + }, + "length": { + "value": 0, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "length", + "uid": "1085974005", + "path": ".arm.shoulder.length" + }, + "offset": { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": 0.01, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "698405094", + "path": ".arm.shoulder.offset[0]" + }, + { + "value": 0.088, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "698405125", + "path": ".arm.shoulder.offset[1]" + } + ], + "name": "offset", + "uid": "1172557730", + "path": ".arm.shoulder.offset" + }, + "height": { + "value": 0.017, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "height", + "uid": "971308086", + "path": ".arm.shoulder.height" + } + }, + "name": "shoulder", + "uid": "-1119808065", + "path": ".arm.shoulder" + }, + "upper_arm": { + "type": "MAP_VALUE", + "value": { + "offset": { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": { + "low": 0, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "uid": "891432679", + "path": ".arm.upper_arm.offset[0]" + }, + { + "value": 0.02, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "891432710", + "path": ".arm.upper_arm.offset[1]" + } + ], + "name": "offset", + "uid": "-1474684607", + "path": ".arm.upper_arm.offset" + }, + "length": { + "value": 0.0615, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "length", + "uid": "-1561268332", + "path": ".arm.upper_arm.length" + } + }, + "name": "upper_arm", + "uid": "1818153216", + "path": ".arm.upper_arm" + } + }, + "name": "arm", + "uid": "-216450321", + "path": ".arm" + } + } + } + }, + { + "path": "config/darwin2/GlobalConfig.yaml", + "content": { + "type": "MAP_VALUE", + "value": { + "teamId": { + "value": { + "low": 9, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "name": "teamId", + "uid": "1374906405", + "path": ".teamId" + }, + "playerId": { + "value": { + "low": 2, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "name": "playerId", + "uid": "1983311977", + "path": ".playerId" + } + } + } + }, + { + "path": "config/darwin2/KinematicsConfiguration.yaml", + "content": { + "type": "MAP_VALUE", + "value": { + "mass_model": { + "type": "MAP_VALUE", + "value": { + "mass_representation_dimension": { + "value": { + "low": 4, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "name": "mass_representation_dimension", + "uid": "-118916165", + "path": ".mass_model.mass_representation_dimension" + }, + "masses": { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.011264, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-14783418", + "path": ".mass_model.masses[0][0]" + }, + { + "value": 0.0109774, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-14783387", + "path": ".mass_model.masses[0][1]" + }, + { + "value": -0.00139357, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-14783356", + "path": ".mass_model.masses[0][2]" + }, + { + "value": 0.025913, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-14783325", + "path": ".mass_model.masses[0][3]" + } + ], + "uid": "668659778", + "path": ".mass_model.masses[0]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.011264, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-13859897", + "path": ".mass_model.masses[1][0]" + }, + { + "value": -0.0109774, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-13859866", + "path": ".mass_model.masses[1][1]" + }, + { + "value": -0.00139357, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-13859835", + "path": ".mass_model.masses[1][2]" + }, + { + "value": 0.025913, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-13859804", + "path": ".mass_model.masses[1][3]" + } + ], + "uid": "668659809", + "path": ".mass_model.masses[1]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.025261, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-12936376", + "path": ".mass_model.masses[2][0]" + }, + { + "value": -0.000659787, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-12936345", + "path": ".mass_model.masses[2][1]" + }, + { + "value": 0.000734065, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-12936314", + "path": ".mass_model.masses[2][2]" + }, + { + "value": 0.168377, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-12936283", + "path": ".mass_model.masses[2][3]" + } + ], + "uid": "668659840", + "path": ".mass_model.masses[2]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.025261, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-12012855", + "path": ".mass_model.masses[3][0]" + }, + { + "value": 0.000659787, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-12012824", + "path": ".mass_model.masses[3][1]" + }, + { + "value": 0.000734065, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-12012793", + "path": ".mass_model.masses[3][2]" + }, + { + "value": 0.168377, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-12012762", + "path": ".mass_model.masses[3][3]" + } + ], + "uid": "668659871", + "path": ".mass_model.masses[3]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.0841618, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-11089334", + "path": ".mass_model.masses[4][0]" + }, + { + "value": -0.00666564, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-11089303", + "path": ".mass_model.masses[4][1]" + }, + { + "value": -0.0134901, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-11089272", + "path": ".mass_model.masses[4][2]" + }, + { + "value": 0.0592885, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-11089241", + "path": ".mass_model.masses[4][3]" + } + ], + "uid": "668659902", + "path": ".mass_model.masses[4]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.0841618, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-10165813", + "path": ".mass_model.masses[5][0]" + }, + { + "value": 0.00666564, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-10165782", + "path": ".mass_model.masses[5][1]" + }, + { + "value": -0.0134901, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-10165751", + "path": ".mass_model.masses[5][2]" + }, + { + "value": 0.0592885, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-10165720", + "path": ".mass_model.masses[5][3]" + } + ], + "uid": "668659933", + "path": ".mass_model.masses[5]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.0155628, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-9242292", + "path": ".mass_model.masses[6][0]" + }, + { + "value": { + "low": 0, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "uid": "-9242261", + "path": ".mass_model.masses[6][1]" + }, + { + "value": 0.000480135, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-9242230", + "path": ".mass_model.masses[6][2]" + }, + { + "value": 0.0270692, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-9242199", + "path": ".mass_model.masses[6][3]" + } + ], + "uid": "668659964", + "path": ".mass_model.masses[6]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.0155628, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-8318771", + "path": ".mass_model.masses[7][0]" + }, + { + "value": { + "low": 0, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "uid": "-8318740", + "path": ".mass_model.masses[7][1]" + }, + { + "value": 0.000480135, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-8318709", + "path": ".mass_model.masses[7][2]" + }, + { + "value": 0.0270692, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-8318678", + "path": ".mass_model.masses[7][3]" + } + ], + "uid": "668659995", + "path": ".mass_model.masses[7]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": 0.0138731, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-7395250", + "path": ".mass_model.masses[8][0]" + }, + { + "value": -0.0000799828, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-7395219", + "path": ".mass_model.masses[8][1]" + }, + { + "value": -0.0182424, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-7395188", + "path": ".mass_model.masses[8][2]" + }, + { + "value": 0.167108, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-7395157", + "path": ".mass_model.masses[8][3]" + } + ], + "uid": "668660026", + "path": ".mass_model.masses[8]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": 0.0138731, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-6471729", + "path": ".mass_model.masses[9][0]" + }, + { + "value": 0.0000799828, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-6471698", + "path": ".mass_model.masses[9][1]" + }, + { + "value": -0.0182424, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-6471667", + "path": ".mass_model.masses[9][2]" + }, + { + "value": 0.167108, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-6471636", + "path": ".mass_model.masses[9][3]" + } + ], + "uid": "668660057", + "path": ".mass_model.masses[9]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.0300345, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-471115649", + "path": ".mass_model.masses[10][0]" + }, + { + "value": 0.000322635, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-471115618", + "path": ".mass_model.masses[10][1]" + }, + { + "value": 0.000691906, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-471115587", + "path": ".mass_model.masses[10][2]" + }, + { + "value": 0.119043, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-471115556", + "path": ".mass_model.masses[10][3]" + } + ], + "uid": "-746383703", + "path": ".mass_model.masses[10]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.0300345, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-470192128", + "path": ".mass_model.masses[11][0]" + }, + { + "value": -0.000322635, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-470192097", + "path": ".mass_model.masses[11][1]" + }, + { + "value": 0.000691906, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-470192066", + "path": ".mass_model.masses[11][2]" + }, + { + "value": 0.119043, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-470192035", + "path": ".mass_model.masses[11][3]" + } + ], + "uid": "-746383672", + "path": ".mass_model.masses[11]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.0539545, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-469268607", + "path": ".mass_model.masses[12][0]" + }, + { + "value": 0.000592469, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-469268576", + "path": ".mass_model.masses[12][1]" + }, + { + "value": 0.00654763, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-469268545", + "path": ".mass_model.masses[12][2]" + }, + { + "value": 0.0703098, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-469268514", + "path": ".mass_model.masses[12][3]" + } + ], + "uid": "-746383641", + "path": ".mass_model.masses[12]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.0539545, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-468345086", + "path": ".mass_model.masses[13][0]" + }, + { + "value": -0.000592469, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-468345055", + "path": ".mass_model.masses[13][1]" + }, + { + "value": 0.00654763, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-468345024", + "path": ".mass_model.masses[13][2]" + }, + { + "value": 0.0703098, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-468344993", + "path": ".mass_model.masses[13][3]" + } + ], + "uid": "-746383610", + "path": ".mass_model.masses[13]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.0138731, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-467421565", + "path": ".mass_model.masses[14][0]" + }, + { + "value": 0.000213732, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-467421534", + "path": ".mass_model.masses[14][1]" + }, + { + "value": -0.0185361, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-467421503", + "path": ".mass_model.masses[14][2]" + }, + { + "value": 0.167108, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-467421472", + "path": ".mass_model.masses[14][3]" + } + ], + "uid": "-746383579", + "path": ".mass_model.masses[14]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.0138731, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-466498044", + "path": ".mass_model.masses[15][0]" + }, + { + "value": -0.000213732, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-466498013", + "path": ".mass_model.masses[15][1]" + }, + { + "value": -0.0185361, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-466497982", + "path": ".mass_model.masses[15][2]" + }, + { + "value": 0.167108, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-466497951", + "path": ".mass_model.masses[15][3]" + } + ], + "uid": "-746383548", + "path": ".mass_model.masses[15]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": 0.0259953, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-465574523", + "path": ".mass_model.masses[16][0]" + }, + { + "value": -0.00950588, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-465574492", + "path": ".mass_model.masses[16][1]" + }, + { + "value": -0.000502877, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-465574461", + "path": ".mass_model.masses[16][2]" + }, + { + "value": 0.0794462, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-465574430", + "path": ".mass_model.masses[16][3]" + } + ], + "uid": "-746383517", + "path": ".mass_model.masses[16]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": 0.0259953, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-464651002", + "path": ".mass_model.masses[17][0]" + }, + { + "value": 0.00950588, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-464650971", + "path": ".mass_model.masses[17][1]" + }, + { + "value": -0.000502877, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-464650940", + "path": ".mass_model.masses[17][2]" + }, + { + "value": 0.0794462, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-464650909", + "path": ".mass_model.masses[17][3]" + } + ], + "uid": "-746383486", + "path": ".mass_model.masses[17]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.0165676, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-463727481", + "path": ".mass_model.masses[18][0]" + }, + { + "value": 0.00142428, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-463727450", + "path": ".mass_model.masses[18][1]" + }, + { + "value": 0.000712811, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-463727419", + "path": ".mass_model.masses[18][2]" + }, + { + "value": 0.0243577, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-463727388", + "path": ".mass_model.masses[18][3]" + } + ], + "uid": "-746383455", + "path": ".mass_model.masses[18]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.035, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-462803960", + "path": ".mass_model.masses[19][0]" + }, + { + "value": { + "low": 0, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "uid": "-462803929", + "path": ".mass_model.masses[19][1]" + }, + { + "value": 0.01, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-462803898", + "path": ".mass_model.masses[19][2]" + }, + { + "value": 0.11708, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-462803867", + "path": ".mass_model.masses[19][3]" + } + ], + "uid": "-746383424", + "path": ".mass_model.masses[19]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.0066631, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-442486498", + "path": ".mass_model.masses[20][0]" + }, + { + "value": -0.00311589, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-442486467", + "path": ".mass_model.masses[20][1]" + }, + { + "value": 0.0705563, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-442486436", + "path": ".mass_model.masses[20][2]" + }, + { + "value": 0.975599, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-442486405", + "path": ".mass_model.masses[20][3]" + } + ], + "uid": "-746382742", + "path": ".mass_model.masses[20]" + } + ], + "name": "masses", + "uid": "1675709894", + "path": ".mass_model.masses" + }, + "number_of_masses": { + "value": { + "low": 21, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "name": "number_of_masses", + "uid": "-1764442440", + "path": ".mass_model.number_of_masses" + } + }, + "name": "mass_model", + "uid": "-1954965686", + "path": ".mass_model" + }, + "leg": { + "type": "MAP_VALUE", + "value": { + "hip_offset": { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": 0, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1913619687", + "path": ".leg.hip_offset[0]" + }, + { + "value": 0.037, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1913619656", + "path": ".leg.hip_offset[1]" + }, + { + "value": 0.034, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1913619625", + "path": ".leg.hip_offset[2]" + } + ], + "name": "hip_offset", + "uid": "-1963947441", + "path": ".leg.hip_offset" + }, + "lower_leg_length": { + "value": 0.093, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "lower_leg_length", + "uid": "1161317441", + "path": ".leg.lower_leg_length" + }, + "foot_centre_to_ankle_centre": { + "value": 0.011, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "foot_centre_to_ankle_centre", + "uid": "71680392", + "path": ".leg.foot_centre_to_ankle_centre" + }, + "foot": { + "type": "MAP_VALUE", + "value": { + "width": { + "value": 0.066, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "width", + "uid": "-1660967086", + "path": ".leg.foot.width" + }, + "toe_length": { + "value": 0.0472, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "toe_length", + "uid": "-370086545", + "path": ".leg.foot.toe_length" + }, + "length": { + "value": 0.094, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "length", + "uid": "-268700966", + "path": ".leg.foot.length" + }, + "height": { + "value": 0.0335, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "height", + "uid": "-383366885", + "path": ".leg.foot.height" + } + }, + "name": "foot", + "uid": "-1140436870", + "path": ".leg.foot" + }, + "heel_length": { + "value": 0.0451, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "heel_length", + "uid": "-1522366571", + "path": ".leg.heel_length" + }, + "upper_leg_length": { + "value": 0.093, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "upper_leg_length", + "uid": "1612972032", + "path": ".leg.upper_leg_length" + } + }, + "name": "leg", + "uid": "1509040738", + "path": ".leg" + }, + "head": { + "type": "MAP_VALUE", + "value": { + "camera_declination_angle_offset": { + "value": 0.013, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "camera_declination_angle_offset", + "uid": "-5697008", + "path": ".head.camera_declination_angle_offset" + }, + "neck": { + "type": "MAP_VALUE", + "value": { + "length": { + "value": 0.042, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "length", + "uid": "-488874893", + "path": ".head.neck.length" + }, + "base_position_from_origin": { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": 0.013, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "795773122", + "path": ".head.neck.base_position_from_origin[0]" + }, + { + "value": { + "low": 0, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "uid": "795773153", + "path": ".head.neck.base_position_from_origin[1]" + }, + { + "value": 0.11, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "795773184", + "path": ".head.neck.base_position_from_origin[2]" + } + ], + "name": "base_position_from_origin", + "uid": "-1138195130", + "path": ".head.neck.base_position_from_origin" + } + }, + "name": "neck", + "uid": "-1889758975", + "path": ".head.neck" + }, + "neck_to_camera": { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": 0.036, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-396675011", + "path": ".head.neck_to_camera[0]" + }, + { + "value": { + "low": 0, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "uid": "-396674980", + "path": ".head.neck_to_camera[1]" + }, + { + "value": 0.028, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-396674949", + "path": ".head.neck_to_camera[2]" + } + ], + "name": "neck_to_camera", + "uid": "1531936683", + "path": ".head.neck_to_camera" + }, + "limits": { + "type": "MAP_VALUE", + "value": { + "yaw": { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": "-pi * 2 / 3", + "tag": "?", + "type": "STRING_VALUE", + "uid": "-567444691", + "path": ".head.limits.yaw[0]" + }, + { + "value": "pi * 2 / 3", + "tag": "?", + "type": "STRING_VALUE", + "uid": "-567444660", + "path": ".head.limits.yaw[1]" + } + ], + "name": "yaw", + "uid": "279814843", + "path": ".head.limits.yaw" + }, + "pitch": { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": "-pi / 6", + "tag": "?", + "type": "STRING_VALUE", + "uid": "74338236", + "path": ".head.limits.pitch[0]" + }, + { + "value": "pi / 2", + "tag": "?", + "type": "STRING_VALUE", + "uid": "74338267", + "path": ".head.limits.pitch[1]" + } + ], + "name": "pitch", + "uid": "-1688948596", + "path": ".head.limits.pitch" + } + }, + "name": "limits", + "uid": "659526714", + "path": ".head.limits" + } + }, + "name": "head", + "uid": "-464496628", + "path": ".head" + }, + "arm": { + "type": "MAP_VALUE", + "value": { + "distance_between_shoulders": { + "value": 0.114, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "distance_between_shoulders", + "uid": "-1437021296", + "path": ".arm.distance_between_shoulders" + }, + "lower_arm": { + "type": "MAP_VALUE", + "value": { + "offset": { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": { + "low": 0, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "uid": "-1819524025", + "path": ".arm.lower_arm.offset[0]" + }, + { + "value": { + "low": 0, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "uid": "-1819523994", + "path": ".arm.lower_arm.offset[1]" + } + ], + "name": "offset", + "uid": "-1157169183", + "path": ".arm.lower_arm.offset" + }, + "length": { + "value": 0.13, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "length", + "uid": "-1243752908", + "path": ".arm.lower_arm.length" + } + }, + "name": "lower_arm", + "uid": "-620618144", + "path": ".arm.lower_arm" + }, + "shoulder": { + "type": "MAP_VALUE", + "value": { + "width": { + "value": 0.0245, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "width", + "uid": "-1442166026", + "path": ".arm.shoulder.width" + }, + "length": { + "value": 0, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "length", + "uid": "-2075802698", + "path": ".arm.shoulder.length" + }, + "offset": { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": 0.01, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "1136414597", + "path": ".arm.shoulder.offset[0]" + }, + { + "value": 0.088, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "1136414628", + "path": ".arm.shoulder.offset[1]" + } + ], + "name": "offset", + "uid": "-1989218973", + "path": ".arm.shoulder.offset" + }, + "height": { + "value": 0.017, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "height", + "uid": "2104498679", + "path": ".arm.shoulder.height" + } + }, + "name": "shoulder", + "uid": "-2144501986", + "path": ".arm.shoulder" + }, + "upper_arm": { + "type": "MAP_VALUE", + "value": { + "offset": { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": { + "low": 0, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "uid": "1584825384", + "path": ".arm.upper_arm.offset[0]" + }, + { + "value": 0.02, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "1584825415", + "path": ".arm.upper_arm.offset[1]" + } + ], + "name": "offset", + "uid": "-705514592", + "path": ".arm.upper_arm.offset" + }, + "length": { + "value": 0.0615, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "length", + "uid": "-792098317", + "path": ".arm.upper_arm.length" + } + }, + "name": "upper_arm", + "uid": "117412737", + "path": ".arm.upper_arm" + } + }, + "name": "arm", + "uid": "1509030576", + "path": ".arm" + } + } + } + }, + { + "path": "config/darwin3/GlobalConfig.yaml", + "content": { + "type": "MAP_VALUE", + "value": { + "teamId": { + "value": { + "low": 9, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "name": "teamId", + "uid": "-1958446874", + "path": ".teamId" + }, + "playerId": { + "value": { + "low": 3, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "name": "playerId", + "uid": "-1618553622", + "path": ".playerId" + } + } + } + }, + { + "path": "config/darwin3/KinematicsConfiguration.yaml", + "content": { + "type": "MAP_VALUE", + "value": { + "mass_model": { + "type": "MAP_VALUE", + "value": { + "mass_representation_dimension": { + "value": { + "low": 4, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "name": "mass_representation_dimension", + "uid": "2067017882", + "path": ".mass_model.mass_representation_dimension" + }, + "masses": { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.011264, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "678609287", + "path": ".mass_model.masses[0][0]" + }, + { + "value": 0.0109774, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "678609318", + "path": ".mass_model.masses[0][1]" + }, + { + "value": -0.00139357, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "678609349", + "path": ".mass_model.masses[0][2]" + }, + { + "value": 0.025913, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "678609380", + "path": ".mass_model.masses[0][3]" + } + ], + "uid": "1437829793", + "path": ".mass_model.masses[0]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.011264, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "679532808", + "path": ".mass_model.masses[1][0]" + }, + { + "value": -0.0109774, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "679532839", + "path": ".mass_model.masses[1][1]" + }, + { + "value": -0.00139357, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "679532870", + "path": ".mass_model.masses[1][2]" + }, + { + "value": 0.025913, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "679532901", + "path": ".mass_model.masses[1][3]" + } + ], + "uid": "1437829824", + "path": ".mass_model.masses[1]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.025261, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "680456329", + "path": ".mass_model.masses[2][0]" + }, + { + "value": -0.000659787, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "680456360", + "path": ".mass_model.masses[2][1]" + }, + { + "value": 0.000734065, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "680456391", + "path": ".mass_model.masses[2][2]" + }, + { + "value": 0.168377, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "680456422", + "path": ".mass_model.masses[2][3]" + } + ], + "uid": "1437829855", + "path": ".mass_model.masses[2]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.025261, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "681379850", + "path": ".mass_model.masses[3][0]" + }, + { + "value": 0.000659787, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "681379881", + "path": ".mass_model.masses[3][1]" + }, + { + "value": 0.000734065, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "681379912", + "path": ".mass_model.masses[3][2]" + }, + { + "value": 0.168377, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "681379943", + "path": ".mass_model.masses[3][3]" + } + ], + "uid": "1437829886", + "path": ".mass_model.masses[3]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.0841618, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "682303371", + "path": ".mass_model.masses[4][0]" + }, + { + "value": -0.00666564, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "682303402", + "path": ".mass_model.masses[4][1]" + }, + { + "value": -0.0134901, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "682303433", + "path": ".mass_model.masses[4][2]" + }, + { + "value": 0.0592885, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "682303464", + "path": ".mass_model.masses[4][3]" + } + ], + "uid": "1437829917", + "path": ".mass_model.masses[4]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.0841618, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "683226892", + "path": ".mass_model.masses[5][0]" + }, + { + "value": 0.00666564, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "683226923", + "path": ".mass_model.masses[5][1]" + }, + { + "value": -0.0134901, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "683226954", + "path": ".mass_model.masses[5][2]" + }, + { + "value": 0.0592885, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "683226985", + "path": ".mass_model.masses[5][3]" + } + ], + "uid": "1437829948", + "path": ".mass_model.masses[5]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.0155628, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "684150413", + "path": ".mass_model.masses[6][0]" + }, + { + "value": { + "low": 0, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "uid": "684150444", + "path": ".mass_model.masses[6][1]" + }, + { + "value": 0.000480135, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "684150475", + "path": ".mass_model.masses[6][2]" + }, + { + "value": 0.0270692, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "684150506", + "path": ".mass_model.masses[6][3]" + } + ], + "uid": "1437829979", + "path": ".mass_model.masses[6]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.0155628, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "685073934", + "path": ".mass_model.masses[7][0]" + }, + { + "value": { + "low": 0, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "uid": "685073965", + "path": ".mass_model.masses[7][1]" + }, + { + "value": 0.000480135, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "685073996", + "path": ".mass_model.masses[7][2]" + }, + { + "value": 0.0270692, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "685074027", + "path": ".mass_model.masses[7][3]" + } + ], + "uid": "1437830010", + "path": ".mass_model.masses[7]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": 0.0138731, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "685997455", + "path": ".mass_model.masses[8][0]" + }, + { + "value": -0.0000799828, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "685997486", + "path": ".mass_model.masses[8][1]" + }, + { + "value": -0.0182424, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "685997517", + "path": ".mass_model.masses[8][2]" + }, + { + "value": 0.167108, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "685997548", + "path": ".mass_model.masses[8][3]" + } + ], + "uid": "1437830041", + "path": ".mass_model.masses[8]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": 0.0138731, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "686920976", + "path": ".mass_model.masses[9][0]" + }, + { + "value": 0.0000799828, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "686921007", + "path": ".mass_model.masses[9][1]" + }, + { + "value": -0.0182424, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "686921038", + "path": ".mass_model.masses[9][2]" + }, + { + "value": 0.167108, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "686921069", + "path": ".mass_model.masses[9][3]" + } + ], + "uid": "1437830072", + "path": ".mass_model.masses[9]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.0300345, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-450778274", + "path": ".mass_model.masses[10][0]" + }, + { + "value": 0.000322635, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-450778243", + "path": ".mass_model.masses[10][1]" + }, + { + "value": 0.000691906, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-450778212", + "path": ".mass_model.masses[10][2]" + }, + { + "value": 0.119043, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-450778181", + "path": ".mass_model.masses[10][3]" + } + ], + "uid": "1623050282", + "path": ".mass_model.masses[10]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.0300345, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-449854753", + "path": ".mass_model.masses[11][0]" + }, + { + "value": -0.000322635, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-449854722", + "path": ".mass_model.masses[11][1]" + }, + { + "value": 0.000691906, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-449854691", + "path": ".mass_model.masses[11][2]" + }, + { + "value": 0.119043, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-449854660", + "path": ".mass_model.masses[11][3]" + } + ], + "uid": "1623050313", + "path": ".mass_model.masses[11]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.0539545, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-448931232", + "path": ".mass_model.masses[12][0]" + }, + { + "value": 0.000592469, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-448931201", + "path": ".mass_model.masses[12][1]" + }, + { + "value": 0.00654763, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-448931170", + "path": ".mass_model.masses[12][2]" + }, + { + "value": 0.0703098, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-448931139", + "path": ".mass_model.masses[12][3]" + } + ], + "uid": "1623050344", + "path": ".mass_model.masses[12]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.0539545, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-448007711", + "path": ".mass_model.masses[13][0]" + }, + { + "value": -0.000592469, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-448007680", + "path": ".mass_model.masses[13][1]" + }, + { + "value": 0.00654763, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-448007649", + "path": ".mass_model.masses[13][2]" + }, + { + "value": 0.0703098, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-448007618", + "path": ".mass_model.masses[13][3]" + } + ], + "uid": "1623050375", + "path": ".mass_model.masses[13]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.0138731, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-447084190", + "path": ".mass_model.masses[14][0]" + }, + { + "value": 0.000213732, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-447084159", + "path": ".mass_model.masses[14][1]" + }, + { + "value": -0.0185361, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-447084128", + "path": ".mass_model.masses[14][2]" + }, + { + "value": 0.167108, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-447084097", + "path": ".mass_model.masses[14][3]" + } + ], + "uid": "1623050406", + "path": ".mass_model.masses[14]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.0138731, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-446160669", + "path": ".mass_model.masses[15][0]" + }, + { + "value": -0.000213732, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-446160638", + "path": ".mass_model.masses[15][1]" + }, + { + "value": -0.0185361, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-446160607", + "path": ".mass_model.masses[15][2]" + }, + { + "value": 0.167108, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-446160576", + "path": ".mass_model.masses[15][3]" + } + ], + "uid": "1623050437", + "path": ".mass_model.masses[15]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": 0.0259953, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-445237148", + "path": ".mass_model.masses[16][0]" + }, + { + "value": -0.00950588, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-445237117", + "path": ".mass_model.masses[16][1]" + }, + { + "value": -0.000502877, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-445237086", + "path": ".mass_model.masses[16][2]" + }, + { + "value": 0.0794462, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-445237055", + "path": ".mass_model.masses[16][3]" + } + ], + "uid": "1623050468", + "path": ".mass_model.masses[16]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": 0.0259953, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-444313627", + "path": ".mass_model.masses[17][0]" + }, + { + "value": 0.00950588, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-444313596", + "path": ".mass_model.masses[17][1]" + }, + { + "value": -0.000502877, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-444313565", + "path": ".mass_model.masses[17][2]" + }, + { + "value": 0.0794462, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-444313534", + "path": ".mass_model.masses[17][3]" + } + ], + "uid": "1623050499", + "path": ".mass_model.masses[17]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.0165676, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-443390106", + "path": ".mass_model.masses[18][0]" + }, + { + "value": 0.00142428, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-443390075", + "path": ".mass_model.masses[18][1]" + }, + { + "value": 0.000712811, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-443390044", + "path": ".mass_model.masses[18][2]" + }, + { + "value": 0.0243577, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-443390013", + "path": ".mass_model.masses[18][3]" + } + ], + "uid": "1623050530", + "path": ".mass_model.masses[18]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.035, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-442466585", + "path": ".mass_model.masses[19][0]" + }, + { + "value": { + "low": 0, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "uid": "-442466554", + "path": ".mass_model.masses[19][1]" + }, + { + "value": 0.01, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-442466523", + "path": ".mass_model.masses[19][2]" + }, + { + "value": 0.11708, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-442466492", + "path": ".mass_model.masses[19][3]" + } + ], + "uid": "1623050561", + "path": ".mass_model.masses[19]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.0066631, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-422149123", + "path": ".mass_model.masses[20][0]" + }, + { + "value": -0.00311589, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-422149092", + "path": ".mass_model.masses[20][1]" + }, + { + "value": 0.0705563, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-422149061", + "path": ".mass_model.masses[20][2]" + }, + { + "value": 0.975599, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-422149030", + "path": ".mass_model.masses[20][3]" + } + ], + "uid": "1623051243", + "path": ".mass_model.masses[20]" + } + ], + "name": "masses", + "uid": "1667950535", + "path": ".mass_model.masses" + }, + "number_of_masses": { + "value": { + "low": 21, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "name": "number_of_masses", + "uid": "-1484092551", + "path": ".mass_model.number_of_masses" + } + }, + "name": "mass_model", + "uid": "-1830892439", + "path": ".mass_model" + }, + "leg": { + "type": "MAP_VALUE", + "value": { + "hip_offset": { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": 0, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1921379046", + "path": ".leg.hip_offset[0]" + }, + { + "value": 0.037, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1921379015", + "path": ".leg.hip_offset[1]" + }, + { + "value": 0.034, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1921378984", + "path": ".leg.hip_offset[2]" + } + ], + "name": "hip_offset", + "uid": "1147672558", + "path": ".leg.hip_offset" + }, + "lower_leg_length": { + "value": 0.093, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "lower_leg_length", + "uid": "1930487456", + "path": ".leg.lower_leg_length" + }, + "foot_centre_to_ankle_centre": { + "value": 0.011, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "foot_centre_to_ankle_centre", + "uid": "-137017911", + "path": ".leg.foot_centre_to_ankle_centre" + }, + "foot": { + "type": "MAP_VALUE", + "value": { + "width": { + "value": 0.066, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "width", + "uid": "1450652913", + "path": ".leg.foot.width" + }, + "toe_length": { + "value": 0.0472, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "toe_length", + "uid": "763104048", + "path": ".leg.foot.toe_length" + }, + "length": { + "value": 0.094, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "length", + "uid": "1702238491", + "path": ".leg.foot.length" + }, + "height": { + "value": 0.0335, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "height", + "uid": "1587572572", + "path": ".leg.foot.height" + } + }, + "name": "foot", + "uid": "321143129", + "path": ".leg.foot" + }, + "heel_length": { + "value": 0.0451, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "heel_length", + "uid": "448572886", + "path": ".leg.heel_length" + }, + "upper_leg_length": { + "value": 0.093, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "upper_leg_length", + "uid": "-1912825249", + "path": ".leg.upper_leg_length" + } + }, + "name": "leg", + "uid": "-1060445661", + "path": ".leg" + }, + "head": { + "type": "MAP_VALUE", + "value": { + "camera_declination_angle_offset": { + "value": 0.018, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "camera_declination_angle_offset", + "uid": "-1676210577", + "path": ".head.camera_declination_angle_offset" + }, + "neck": { + "type": "MAP_VALUE", + "value": { + "length": { + "value": 0.042, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "length", + "uid": "480706130", + "path": ".head.neck.length" + }, + "base_position_from_origin": { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": 0.013, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "1750002017", + "path": ".head.neck.base_position_from_origin[0]" + }, + { + "value": { + "low": 0, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "uid": "1750002048", + "path": ".head.neck.base_position_from_origin[1]" + }, + { + "value": 0.11, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "1750002079", + "path": ".head.neck.base_position_from_origin[2]" + } + ], + "name": "base_position_from_origin", + "uid": "-1746271993", + "path": ".head.neck.base_position_from_origin" + } + }, + "name": "neck", + "uid": "469548034", + "path": ".head.neck" + }, + "neck_to_camera": { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": 0.036, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "41334492", + "path": ".head.neck_to_camera[0]" + }, + { + "value": { + "low": 0, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "uid": "41334523", + "path": ".head.neck_to_camera[1]" + }, + { + "value": 0.028, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "41334554", + "path": ".head.neck_to_camera[2]" + } + ], + "name": "neck_to_camera", + "uid": "-1629840020", + "path": ".head.neck_to_camera" + }, + "limits": { + "type": "MAP_VALUE", + "value": { + "yaw": { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": "-pi * 2 / 3", + "tag": "?", + "type": "STRING_VALUE", + "uid": "-807984820", + "path": ".head.limits.yaw[0]" + }, + { + "value": "pi * 2 / 3", + "tag": "?", + "type": "STRING_VALUE", + "uid": "-807984789", + "path": ".head.limits.yaw[1]" + } + ], + "name": "yaw", + "uid": "-2044212996", + "path": ".head.limits.yaw" + }, + "pitch": { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": "-pi / 6", + "tag": "?", + "type": "STRING_VALUE", + "uid": "843508251", + "path": ".head.limits.pitch[0]" + }, + { + "value": "pi / 2", + "tag": "?", + "type": "STRING_VALUE", + "uid": "843508282", + "path": ".head.limits.pitch[1]" + } + ], + "name": "pitch", + "uid": "-1696707955", + "path": ".head.limits.pitch" + } + }, + "name": "limits", + "uid": "210830075", + "path": ".head.limits" + } + }, + "name": "head", + "uid": "1485803627", + "path": ".head" + }, + "arm": { + "type": "MAP_VALUE", + "value": { + "distance_between_shoulders": { + "value": 0.114, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "distance_between_shoulders", + "uid": "1050098479", + "path": ".arm.distance_between_shoulders" + }, + "lower_arm": { + "type": "MAP_VALUE", + "value": { + "offset": { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": { + "low": 0, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "uid": "-1126131320", + "path": ".arm.lower_arm.offset[0]" + }, + { + "value": { + "low": 0, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "uid": "-1126131289", + "path": ".arm.lower_arm.offset[1]" + } + ], + "name": "offset", + "uid": "-387999168", + "path": ".arm.lower_arm.offset" + }, + "length": { + "value": 0.13, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "length", + "uid": "-474582893", + "path": ".arm.lower_arm.length" + } + }, + "name": "lower_arm", + "uid": "1973608673", + "path": ".arm.lower_arm" + }, + "shoulder": { + "type": "MAP_VALUE", + "value": { + "width": { + "value": 0.0245, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "width", + "uid": "-1682706155", + "path": ".arm.shoulder.width" + }, + "length": { + "value": 0, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "length", + "uid": "-942612105", + "path": ".arm.shoulder.length" + }, + "offset": { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": 0.01, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "1574424100", + "path": ".arm.shoulder.offset[0]" + }, + { + "value": 0.088, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "1574424131", + "path": ".arm.shoulder.offset[1]" + } + ], + "name": "offset", + "uid": "-856028380", + "path": ".arm.shoulder.offset" + }, + "height": { + "value": 0.017, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "height", + "uid": "-1057278024", + "path": ".arm.shoulder.height" + } + }, + "name": "shoulder", + "uid": "1125771389", + "path": ".arm.shoulder" + }, + "upper_arm": { + "type": "MAP_VALUE", + "value": { + "offset": { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": { + "low": 0, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "uid": "-2016749207", + "path": ".arm.upper_arm.offset[0]" + }, + { + "value": 0.02, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-2016749176", + "path": ".arm.upper_arm.offset[1]" + } + ], + "name": "offset", + "uid": "63655423", + "path": ".arm.upper_arm.offset" + }, + "length": { + "value": 0.0615, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "length", + "uid": "-22928302", + "path": ".arm.upper_arm.length" + } + }, + "name": "upper_arm", + "uid": "-1583327742", + "path": ".arm.upper_arm" + } + }, + "name": "arm", + "uid": "-1060455823", + "path": ".arm" + } + } + } + }, + { + "path": "config/darwin4/GlobalConfig.yaml", + "content": { + "type": "MAP_VALUE", + "value": { + "teamId": { + "value": { + "low": 9, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "name": "teamId", + "uid": "-996832857", + "path": ".teamId" + }, + "playerId": { + "value": { + "low": 4, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "name": "playerId", + "uid": "-925451925", + "path": ".playerId" + } + } + } + }, + { + "path": "config/darwin4/KinematicsConfiguration.yaml", + "content": { + "type": "MAP_VALUE", + "value": { + "mass_model": { + "type": "MAP_VALUE", + "value": { + "mass_representation_dimension": { + "value": { + "low": 4, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "name": "mass_representation_dimension", + "uid": "-42015367", + "path": ".mass_model.mass_representation_dimension" + }, + "masses": { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.011264, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "1372001992", + "path": ".mass_model.masses[0][0]" + }, + { + "value": 0.0109774, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "1372002023", + "path": ".mass_model.masses[0][1]" + }, + { + "value": -0.00139357, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "1372002054", + "path": ".mass_model.masses[0][2]" + }, + { + "value": 0.025913, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "1372002085", + "path": ".mass_model.masses[0][3]" + } + ], + "uid": "-2087967488", + "path": ".mass_model.masses[0]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.011264, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "1372925513", + "path": ".mass_model.masses[1][0]" + }, + { + "value": -0.0109774, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "1372925544", + "path": ".mass_model.masses[1][1]" + }, + { + "value": -0.00139357, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "1372925575", + "path": ".mass_model.masses[1][2]" + }, + { + "value": 0.025913, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "1372925606", + "path": ".mass_model.masses[1][3]" + } + ], + "uid": "-2087967457", + "path": ".mass_model.masses[1]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.025261, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "1373849034", + "path": ".mass_model.masses[2][0]" + }, + { + "value": -0.000659787, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "1373849065", + "path": ".mass_model.masses[2][1]" + }, + { + "value": 0.000734065, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "1373849096", + "path": ".mass_model.masses[2][2]" + }, + { + "value": 0.168377, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "1373849127", + "path": ".mass_model.masses[2][3]" + } + ], + "uid": "-2087967426", + "path": ".mass_model.masses[2]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.025261, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "1374772555", + "path": ".mass_model.masses[3][0]" + }, + { + "value": 0.000659787, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "1374772586", + "path": ".mass_model.masses[3][1]" + }, + { + "value": 0.000734065, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "1374772617", + "path": ".mass_model.masses[3][2]" + }, + { + "value": 0.168377, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "1374772648", + "path": ".mass_model.masses[3][3]" + } + ], + "uid": "-2087967395", + "path": ".mass_model.masses[3]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.0841618, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "1375696076", + "path": ".mass_model.masses[4][0]" + }, + { + "value": -0.00666564, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "1375696107", + "path": ".mass_model.masses[4][1]" + }, + { + "value": -0.0134901, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "1375696138", + "path": ".mass_model.masses[4][2]" + }, + { + "value": 0.0592885, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "1375696169", + "path": ".mass_model.masses[4][3]" + } + ], + "uid": "-2087967364", + "path": ".mass_model.masses[4]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.0841618, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "1376619597", + "path": ".mass_model.masses[5][0]" + }, + { + "value": 0.00666564, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "1376619628", + "path": ".mass_model.masses[5][1]" + }, + { + "value": -0.0134901, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "1376619659", + "path": ".mass_model.masses[5][2]" + }, + { + "value": 0.0592885, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "1376619690", + "path": ".mass_model.masses[5][3]" + } + ], + "uid": "-2087967333", + "path": ".mass_model.masses[5]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.0155628, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "1377543118", + "path": ".mass_model.masses[6][0]" + }, + { + "value": { + "low": 0, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "uid": "1377543149", + "path": ".mass_model.masses[6][1]" + }, + { + "value": 0.000480135, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "1377543180", + "path": ".mass_model.masses[6][2]" + }, + { + "value": 0.0270692, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "1377543211", + "path": ".mass_model.masses[6][3]" + } + ], + "uid": "-2087967302", + "path": ".mass_model.masses[6]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.0155628, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "1378466639", + "path": ".mass_model.masses[7][0]" + }, + { + "value": { + "low": 0, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "uid": "1378466670", + "path": ".mass_model.masses[7][1]" + }, + { + "value": 0.000480135, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "1378466701", + "path": ".mass_model.masses[7][2]" + }, + { + "value": 0.0270692, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "1378466732", + "path": ".mass_model.masses[7][3]" + } + ], + "uid": "-2087967271", + "path": ".mass_model.masses[7]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": 0.0138731, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "1379390160", + "path": ".mass_model.masses[8][0]" + }, + { + "value": -0.0000799828, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "1379390191", + "path": ".mass_model.masses[8][1]" + }, + { + "value": -0.0182424, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "1379390222", + "path": ".mass_model.masses[8][2]" + }, + { + "value": 0.167108, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "1379390253", + "path": ".mass_model.masses[8][3]" + } + ], + "uid": "-2087967240", + "path": ".mass_model.masses[8]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": 0.0138731, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "1380313681", + "path": ".mass_model.masses[9][0]" + }, + { + "value": 0.0000799828, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "1380313712", + "path": ".mass_model.masses[9][1]" + }, + { + "value": -0.0182424, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "1380313743", + "path": ".mass_model.masses[9][2]" + }, + { + "value": 0.167108, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "1380313774", + "path": ".mass_model.masses[9][3]" + } + ], + "uid": "-2087967209", + "path": ".mass_model.masses[9]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.0300345, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-430440899", + "path": ".mass_model.masses[10][0]" + }, + { + "value": 0.000322635, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-430440868", + "path": ".mass_model.masses[10][1]" + }, + { + "value": 0.000691906, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-430440837", + "path": ".mass_model.masses[10][2]" + }, + { + "value": 0.119043, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-430440806", + "path": ".mass_model.masses[10][3]" + } + ], + "uid": "-302483029", + "path": ".mass_model.masses[10]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.0300345, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-429517378", + "path": ".mass_model.masses[11][0]" + }, + { + "value": -0.000322635, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-429517347", + "path": ".mass_model.masses[11][1]" + }, + { + "value": 0.000691906, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-429517316", + "path": ".mass_model.masses[11][2]" + }, + { + "value": 0.119043, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-429517285", + "path": ".mass_model.masses[11][3]" + } + ], + "uid": "-302482998", + "path": ".mass_model.masses[11]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.0539545, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-428593857", + "path": ".mass_model.masses[12][0]" + }, + { + "value": 0.000592469, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-428593826", + "path": ".mass_model.masses[12][1]" + }, + { + "value": 0.00654763, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-428593795", + "path": ".mass_model.masses[12][2]" + }, + { + "value": 0.0703098, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-428593764", + "path": ".mass_model.masses[12][3]" + } + ], + "uid": "-302482967", + "path": ".mass_model.masses[12]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.0539545, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-427670336", + "path": ".mass_model.masses[13][0]" + }, + { + "value": -0.000592469, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-427670305", + "path": ".mass_model.masses[13][1]" + }, + { + "value": 0.00654763, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-427670274", + "path": ".mass_model.masses[13][2]" + }, + { + "value": 0.0703098, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-427670243", + "path": ".mass_model.masses[13][3]" + } + ], + "uid": "-302482936", + "path": ".mass_model.masses[13]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.0138731, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-426746815", + "path": ".mass_model.masses[14][0]" + }, + { + "value": 0.000213732, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-426746784", + "path": ".mass_model.masses[14][1]" + }, + { + "value": -0.0185361, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-426746753", + "path": ".mass_model.masses[14][2]" + }, + { + "value": 0.167108, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-426746722", + "path": ".mass_model.masses[14][3]" + } + ], + "uid": "-302482905", + "path": ".mass_model.masses[14]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.0138731, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-425823294", + "path": ".mass_model.masses[15][0]" + }, + { + "value": -0.000213732, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-425823263", + "path": ".mass_model.masses[15][1]" + }, + { + "value": -0.0185361, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-425823232", + "path": ".mass_model.masses[15][2]" + }, + { + "value": 0.167108, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-425823201", + "path": ".mass_model.masses[15][3]" + } + ], + "uid": "-302482874", + "path": ".mass_model.masses[15]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": 0.0259953, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-424899773", + "path": ".mass_model.masses[16][0]" + }, + { + "value": -0.00950588, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-424899742", + "path": ".mass_model.masses[16][1]" + }, + { + "value": -0.000502877, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-424899711", + "path": ".mass_model.masses[16][2]" + }, + { + "value": 0.0794462, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-424899680", + "path": ".mass_model.masses[16][3]" + } + ], + "uid": "-302482843", + "path": ".mass_model.masses[16]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": 0.0259953, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-423976252", + "path": ".mass_model.masses[17][0]" + }, + { + "value": 0.00950588, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-423976221", + "path": ".mass_model.masses[17][1]" + }, + { + "value": -0.000502877, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-423976190", + "path": ".mass_model.masses[17][2]" + }, + { + "value": 0.0794462, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-423976159", + "path": ".mass_model.masses[17][3]" + } + ], + "uid": "-302482812", + "path": ".mass_model.masses[17]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.0165676, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-423052731", + "path": ".mass_model.masses[18][0]" + }, + { + "value": 0.00142428, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-423052700", + "path": ".mass_model.masses[18][1]" + }, + { + "value": 0.000712811, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-423052669", + "path": ".mass_model.masses[18][2]" + }, + { + "value": 0.0243577, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-423052638", + "path": ".mass_model.masses[18][3]" + } + ], + "uid": "-302482781", + "path": ".mass_model.masses[18]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.035, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-422129210", + "path": ".mass_model.masses[19][0]" + }, + { + "value": { + "low": 0, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "uid": "-422129179", + "path": ".mass_model.masses[19][1]" + }, + { + "value": 0.01, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-422129148", + "path": ".mass_model.masses[19][2]" + }, + { + "value": 0.11708, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-422129117", + "path": ".mass_model.masses[19][3]" + } + ], + "uid": "-302482750", + "path": ".mass_model.masses[19]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.0066631, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-401811748", + "path": ".mass_model.masses[20][0]" + }, + { + "value": -0.00311589, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-401811717", + "path": ".mass_model.masses[20][1]" + }, + { + "value": 0.0705563, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-401811686", + "path": ".mass_model.masses[20][2]" + }, + { + "value": 0.975599, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-401811655", + "path": ".mass_model.masses[20][3]" + } + ], + "uid": "-302482068", + "path": ".mass_model.masses[20]" + } + ], + "name": "masses", + "uid": "1660191176", + "path": ".mass_model.masses" + }, + "number_of_masses": { + "value": { + "low": 21, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "name": "number_of_masses", + "uid": "-1203742662", + "path": ".mass_model.number_of_masses" + } + }, + "name": "mass_model", + "uid": "-1706819192", + "path": ".mass_model" + }, + "leg": { + "type": "MAP_VALUE", + "value": { + "hip_offset": { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": 0, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1929138405", + "path": ".leg.hip_offset[0]" + }, + { + "value": 0.037, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1929138374", + "path": ".leg.hip_offset[1]" + }, + { + "value": 0.034, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1929138343", + "path": ".leg.hip_offset[2]" + } + ], + "name": "hip_offset", + "uid": "-35674739", + "path": ".leg.hip_offset" + }, + "lower_leg_length": { + "value": 0.093, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "lower_leg_length", + "uid": "-1595309825", + "path": ".leg.lower_leg_length" + }, + "foot_centre_to_ankle_centre": { + "value": 0.011, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "foot_centre_to_ankle_centre", + "uid": "-345716214", + "path": ".leg.foot_centre_to_ankle_centre" + }, + "foot": { + "type": "MAP_VALUE", + "value": { + "width": { + "value": 0.066, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "width", + "uid": "267305616", + "path": ".leg.foot.width" + }, + "toe_length": { + "value": 0.0472, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "toe_length", + "uid": "1896294641", + "path": ".leg.foot.toe_length" + }, + "length": { + "value": 0.094, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "length", + "uid": "-621789348", + "path": ".leg.foot.length" + }, + "height": { + "value": 0.0335, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "height", + "uid": "-736455267", + "path": ".leg.foot.height" + } + }, + "name": "foot", + "uid": "1782723128", + "path": ".leg.foot" + }, + "heel_length": { + "value": 0.0451, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "heel_length", + "uid": "-1875454953", + "path": ".leg.heel_length" + }, + "upper_leg_length": { + "value": 0.093, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "upper_leg_length", + "uid": "-1143655234", + "path": ".leg.upper_leg_length" + } + }, + "name": "leg", + "uid": "665035236", + "path": ".leg" + }, + "head": { + "type": "MAP_VALUE", + "value": { + "camera_declination_angle_offset": { + "value": 0.019, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "camera_declination_angle_offset", + "uid": "948243150", + "path": ".head.camera_declination_angle_offset" + }, + "neck": { + "type": "MAP_VALUE", + "value": { + "length": { + "value": 0.042, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "length", + "uid": "1450287153", + "path": ".head.neck.length" + }, + "base_position_from_origin": { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": 0.013, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1590736384", + "path": ".head.neck.base_position_from_origin[0]" + }, + { + "value": { + "low": 0, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "uid": "-1590736353", + "path": ".head.neck.base_position_from_origin[1]" + }, + { + "value": 0.11, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1590736322", + "path": ".head.neck.base_position_from_origin[2]" + } + ], + "name": "base_position_from_origin", + "uid": "1940618440", + "path": ".head.neck.base_position_from_origin" + } + }, + "name": "neck", + "uid": "-1466112253", + "path": ".head.neck" + }, + "neck_to_camera": { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": 0.036, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "479343995", + "path": ".head.neck_to_camera[0]" + }, + { + "value": { + "low": 0, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "uid": "479344026", + "path": ".head.neck_to_camera[1]" + }, + { + "value": 0.028, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "479344057", + "path": ".head.neck_to_camera[2]" + } + ], + "name": "neck_to_camera", + "uid": "-496649427", + "path": ".head.neck_to_camera" + }, + "limits": { + "type": "MAP_VALUE", + "value": { + "yaw": { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": "-pi * 2 / 3", + "tag": "?", + "type": "STRING_VALUE", + "uid": "-1048524949", + "path": ".head.limits.yaw[0]" + }, + { + "value": "pi * 2 / 3", + "tag": "?", + "type": "STRING_VALUE", + "uid": "-1048524918", + "path": ".head.limits.yaw[1]" + } + ], + "name": "yaw", + "uid": "-73273539", + "path": ".head.limits.yaw" + }, + "pitch": { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": "-pi / 6", + "tag": "?", + "type": "STRING_VALUE", + "uid": "1612678266", + "path": ".head.limits.pitch[0]" + }, + { + "value": "pi / 2", + "tag": "?", + "type": "STRING_VALUE", + "uid": "1612678297", + "path": ".head.limits.pitch[1]" + } + ], + "name": "pitch", + "uid": "-1704467314", + "path": ".head.limits.pitch" + } + }, + "name": "limits", + "uid": "-237866564", + "path": ".head.limits" + } + }, + "name": "head", + "uid": "-858863414", + "path": ".head" + }, + "arm": { + "type": "MAP_VALUE", + "value": { + "distance_between_shoulders": { + "value": 0.114, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "distance_between_shoulders", + "uid": "-757749042", + "path": ".arm.distance_between_shoulders" + }, + "lower_arm": { + "type": "MAP_VALUE", + "value": { + "offset": { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": { + "low": 0, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "uid": "-432738615", + "path": ".arm.lower_arm.offset[0]" + }, + { + "value": { + "low": 0, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "uid": "-432738584", + "path": ".arm.lower_arm.offset[1]" + } + ], + "name": "offset", + "uid": "381170847", + "path": ".arm.lower_arm.offset" + }, + "length": { + "value": 0.13, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "length", + "uid": "294587122", + "path": ".arm.lower_arm.length" + } + }, + "name": "lower_arm", + "uid": "272868194", + "path": ".arm.lower_arm" + }, + "shoulder": { + "type": "MAP_VALUE", + "value": { + "width": { + "value": 0.0245, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "width", + "uid": "-1923246284", + "path": ".arm.shoulder.width" + }, + "length": { + "value": 0, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "length", + "uid": "190578488", + "path": ".arm.shoulder.length" + }, + "offset": { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": 0.01, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "2012433603", + "path": ".arm.shoulder.offset[0]" + }, + { + "value": 0.088, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "2012433634", + "path": ".arm.shoulder.offset[1]" + } + ], + "name": "offset", + "uid": "277162213", + "path": ".arm.shoulder.offset" + }, + "height": { + "value": 0.017, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "height", + "uid": "75912569", + "path": ".arm.shoulder.height" + } + }, + "name": "shoulder", + "uid": "101077468", + "path": ".arm.shoulder" + }, + "upper_arm": { + "type": "MAP_VALUE", + "value": { + "offset": { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": { + "low": 0, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "uid": "-1323356502", + "path": ".arm.upper_arm.offset[0]" + }, + { + "value": 0.02, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1323356471", + "path": ".arm.upper_arm.offset[1]" + } + ], + "name": "offset", + "uid": "832825438", + "path": ".arm.upper_arm.offset" + }, + "length": { + "value": 0.0615, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "length", + "uid": "746241713", + "path": ".arm.upper_arm.length" + } + }, + "name": "upper_arm", + "uid": "1010899075", + "path": ".arm.upper_arm" + } + }, + "name": "arm", + "uid": "665025074", + "path": ".arm" + } + } + } + }, + { + "path": "config/darwin5/GlobalConfig.yaml", + "content": { + "type": "MAP_VALUE", + "value": { + "teamId": { + "value": { + "low": 9, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "name": "teamId", + "uid": "-35218840", + "path": ".teamId" + }, + "playerId": { + "value": { + "low": 5, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "name": "playerId", + "uid": "-232350228", + "path": ".playerId" + } + } + } + }, + { + "path": "config/darwin5/KinematicsConfiguration.yaml", + "content": { + "type": "MAP_VALUE", + "value": { + "mass_model": { + "type": "MAP_VALUE", + "value": { + "mass_representation_dimension": { + "value": { + "low": 4, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "name": "mass_representation_dimension", + "uid": "2143918680", + "path": ".mass_model.mass_representation_dimension" + }, + "masses": { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.011264, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "2065394697", + "path": ".mass_model.masses[0][0]" + }, + { + "value": 0.0109774, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "2065394728", + "path": ".mass_model.masses[0][1]" + }, + { + "value": -0.00139357, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "2065394759", + "path": ".mass_model.masses[0][2]" + }, + { + "value": 0.025913, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "2065394790", + "path": ".mass_model.masses[0][3]" + } + ], + "uid": "-1318797473", + "path": ".mass_model.masses[0]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.011264, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "2066318218", + "path": ".mass_model.masses[1][0]" + }, + { + "value": -0.0109774, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "2066318249", + "path": ".mass_model.masses[1][1]" + }, + { + "value": -0.00139357, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "2066318280", + "path": ".mass_model.masses[1][2]" + }, + { + "value": 0.025913, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "2066318311", + "path": ".mass_model.masses[1][3]" + } + ], + "uid": "-1318797442", + "path": ".mass_model.masses[1]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.025261, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "2067241739", + "path": ".mass_model.masses[2][0]" + }, + { + "value": -0.000659787, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "2067241770", + "path": ".mass_model.masses[2][1]" + }, + { + "value": 0.000734065, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "2067241801", + "path": ".mass_model.masses[2][2]" + }, + { + "value": 0.168377, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "2067241832", + "path": ".mass_model.masses[2][3]" + } + ], + "uid": "-1318797411", + "path": ".mass_model.masses[2]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.025261, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "2068165260", + "path": ".mass_model.masses[3][0]" + }, + { + "value": 0.000659787, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "2068165291", + "path": ".mass_model.masses[3][1]" + }, + { + "value": 0.000734065, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "2068165322", + "path": ".mass_model.masses[3][2]" + }, + { + "value": 0.168377, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "2068165353", + "path": ".mass_model.masses[3][3]" + } + ], + "uid": "-1318797380", + "path": ".mass_model.masses[3]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.0841618, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "2069088781", + "path": ".mass_model.masses[4][0]" + }, + { + "value": -0.00666564, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "2069088812", + "path": ".mass_model.masses[4][1]" + }, + { + "value": -0.0134901, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "2069088843", + "path": ".mass_model.masses[4][2]" + }, + { + "value": 0.0592885, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "2069088874", + "path": ".mass_model.masses[4][3]" + } + ], + "uid": "-1318797349", + "path": ".mass_model.masses[4]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.0841618, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "2070012302", + "path": ".mass_model.masses[5][0]" + }, + { + "value": 0.00666564, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "2070012333", + "path": ".mass_model.masses[5][1]" + }, + { + "value": -0.0134901, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "2070012364", + "path": ".mass_model.masses[5][2]" + }, + { + "value": 0.0592885, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "2070012395", + "path": ".mass_model.masses[5][3]" + } + ], + "uid": "-1318797318", + "path": ".mass_model.masses[5]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.0155628, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "2070935823", + "path": ".mass_model.masses[6][0]" + }, + { + "value": { + "low": 0, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "uid": "2070935854", + "path": ".mass_model.masses[6][1]" + }, + { + "value": 0.000480135, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "2070935885", + "path": ".mass_model.masses[6][2]" + }, + { + "value": 0.0270692, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "2070935916", + "path": ".mass_model.masses[6][3]" + } + ], + "uid": "-1318797287", + "path": ".mass_model.masses[6]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.0155628, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "2071859344", + "path": ".mass_model.masses[7][0]" + }, + { + "value": { + "low": 0, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "uid": "2071859375", + "path": ".mass_model.masses[7][1]" + }, + { + "value": 0.000480135, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "2071859406", + "path": ".mass_model.masses[7][2]" + }, + { + "value": 0.0270692, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "2071859437", + "path": ".mass_model.masses[7][3]" + } + ], + "uid": "-1318797256", + "path": ".mass_model.masses[7]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": 0.0138731, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "2072782865", + "path": ".mass_model.masses[8][0]" + }, + { + "value": -0.0000799828, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "2072782896", + "path": ".mass_model.masses[8][1]" + }, + { + "value": -0.0182424, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "2072782927", + "path": ".mass_model.masses[8][2]" + }, + { + "value": 0.167108, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "2072782958", + "path": ".mass_model.masses[8][3]" + } + ], + "uid": "-1318797225", + "path": ".mass_model.masses[8]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": 0.0138731, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "2073706386", + "path": ".mass_model.masses[9][0]" + }, + { + "value": 0.0000799828, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "2073706417", + "path": ".mass_model.masses[9][1]" + }, + { + "value": -0.0182424, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "2073706448", + "path": ".mass_model.masses[9][2]" + }, + { + "value": 0.167108, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "2073706479", + "path": ".mass_model.masses[9][3]" + } + ], + "uid": "-1318797194", + "path": ".mass_model.masses[9]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.0300345, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-410103524", + "path": ".mass_model.masses[10][0]" + }, + { + "value": 0.000322635, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-410103493", + "path": ".mass_model.masses[10][1]" + }, + { + "value": 0.000691906, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-410103462", + "path": ".mass_model.masses[10][2]" + }, + { + "value": 0.119043, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-410103431", + "path": ".mass_model.masses[10][3]" + } + ], + "uid": "2066950956", + "path": ".mass_model.masses[10]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.0300345, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-409180003", + "path": ".mass_model.masses[11][0]" + }, + { + "value": -0.000322635, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-409179972", + "path": ".mass_model.masses[11][1]" + }, + { + "value": 0.000691906, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-409179941", + "path": ".mass_model.masses[11][2]" + }, + { + "value": 0.119043, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-409179910", + "path": ".mass_model.masses[11][3]" + } + ], + "uid": "2066950987", + "path": ".mass_model.masses[11]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.0539545, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-408256482", + "path": ".mass_model.masses[12][0]" + }, + { + "value": 0.000592469, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-408256451", + "path": ".mass_model.masses[12][1]" + }, + { + "value": 0.00654763, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-408256420", + "path": ".mass_model.masses[12][2]" + }, + { + "value": 0.0703098, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-408256389", + "path": ".mass_model.masses[12][3]" + } + ], + "uid": "2066951018", + "path": ".mass_model.masses[12]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.0539545, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-407332961", + "path": ".mass_model.masses[13][0]" + }, + { + "value": -0.000592469, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-407332930", + "path": ".mass_model.masses[13][1]" + }, + { + "value": 0.00654763, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-407332899", + "path": ".mass_model.masses[13][2]" + }, + { + "value": 0.0703098, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-407332868", + "path": ".mass_model.masses[13][3]" + } + ], + "uid": "2066951049", + "path": ".mass_model.masses[13]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.0138731, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-406409440", + "path": ".mass_model.masses[14][0]" + }, + { + "value": 0.000213732, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-406409409", + "path": ".mass_model.masses[14][1]" + }, + { + "value": -0.0185361, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-406409378", + "path": ".mass_model.masses[14][2]" + }, + { + "value": 0.167108, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-406409347", + "path": ".mass_model.masses[14][3]" + } + ], + "uid": "2066951080", + "path": ".mass_model.masses[14]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.0138731, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-405485919", + "path": ".mass_model.masses[15][0]" + }, + { + "value": -0.000213732, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-405485888", + "path": ".mass_model.masses[15][1]" + }, + { + "value": -0.0185361, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-405485857", + "path": ".mass_model.masses[15][2]" + }, + { + "value": 0.167108, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-405485826", + "path": ".mass_model.masses[15][3]" + } + ], + "uid": "2066951111", + "path": ".mass_model.masses[15]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": 0.0259953, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-404562398", + "path": ".mass_model.masses[16][0]" + }, + { + "value": -0.00950588, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-404562367", + "path": ".mass_model.masses[16][1]" + }, + { + "value": -0.000502877, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-404562336", + "path": ".mass_model.masses[16][2]" + }, + { + "value": 0.0794462, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-404562305", + "path": ".mass_model.masses[16][3]" + } + ], + "uid": "2066951142", + "path": ".mass_model.masses[16]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": 0.0259953, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-403638877", + "path": ".mass_model.masses[17][0]" + }, + { + "value": 0.00950588, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-403638846", + "path": ".mass_model.masses[17][1]" + }, + { + "value": -0.000502877, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-403638815", + "path": ".mass_model.masses[17][2]" + }, + { + "value": 0.0794462, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-403638784", + "path": ".mass_model.masses[17][3]" + } + ], + "uid": "2066951173", + "path": ".mass_model.masses[17]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.0165676, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-402715356", + "path": ".mass_model.masses[18][0]" + }, + { + "value": 0.00142428, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-402715325", + "path": ".mass_model.masses[18][1]" + }, + { + "value": 0.000712811, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-402715294", + "path": ".mass_model.masses[18][2]" + }, + { + "value": 0.0243577, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-402715263", + "path": ".mass_model.masses[18][3]" + } + ], + "uid": "2066951204", + "path": ".mass_model.masses[18]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.035, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-401791835", + "path": ".mass_model.masses[19][0]" + }, + { + "value": { + "low": 0, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "uid": "-401791804", + "path": ".mass_model.masses[19][1]" + }, + { + "value": 0.01, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-401791773", + "path": ".mass_model.masses[19][2]" + }, + { + "value": 0.11708, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-401791742", + "path": ".mass_model.masses[19][3]" + } + ], + "uid": "2066951235", + "path": ".mass_model.masses[19]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.0066631, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-381474373", + "path": ".mass_model.masses[20][0]" + }, + { + "value": -0.00311589, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-381474342", + "path": ".mass_model.masses[20][1]" + }, + { + "value": 0.0705563, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-381474311", + "path": ".mass_model.masses[20][2]" + }, + { + "value": 0.975599, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-381474280", + "path": ".mass_model.masses[20][3]" + } + ], + "uid": "2066951917", + "path": ".mass_model.masses[20]" + } + ], + "name": "masses", + "uid": "1652431817", + "path": ".mass_model.masses" + }, + "number_of_masses": { + "value": { + "low": 21, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "name": "number_of_masses", + "uid": "-923392773", + "path": ".mass_model.number_of_masses" + } + }, + "name": "mass_model", + "uid": "-1582745945", + "path": ".mass_model" + }, + "leg": { + "type": "MAP_VALUE", + "value": { + "hip_offset": { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": 0, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1936897764", + "path": ".leg.hip_offset[0]" + }, + { + "value": 0.037, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1936897733", + "path": ".leg.hip_offset[1]" + }, + { + "value": 0.034, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1936897702", + "path": ".leg.hip_offset[2]" + } + ], + "name": "hip_offset", + "uid": "-1219022036", + "path": ".leg.hip_offset" + }, + "lower_leg_length": { + "value": 0.093, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "lower_leg_length", + "uid": "-826139810", + "path": ".leg.lower_leg_length" + }, + "foot_centre_to_ankle_centre": { + "value": 0.011, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "foot_centre_to_ankle_centre", + "uid": "-554414517", + "path": ".leg.foot_centre_to_ankle_centre" + }, + "foot": { + "type": "MAP_VALUE", + "value": { + "width": { + "value": 0.066, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "width", + "uid": "-916041681", + "path": ".leg.foot.width" + }, + "toe_length": { + "value": 0.0472, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "toe_length", + "uid": "-1265482062", + "path": ".leg.foot.toe_length" + }, + "length": { + "value": 0.094, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "length", + "uid": "1349150109", + "path": ".leg.foot.length" + }, + "height": { + "value": 0.0335, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "height", + "uid": "1234484190", + "path": ".leg.foot.height" + } + }, + "name": "foot", + "uid": "-1050664169", + "path": ".leg.foot" + }, + "heel_length": { + "value": 0.0451, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "heel_length", + "uid": "95484504", + "path": ".leg.heel_length" + }, + "upper_leg_length": { + "value": 0.093, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "upper_leg_length", + "uid": "-374485219", + "path": ".leg.upper_leg_length" + } + }, + "name": "leg", + "uid": "-1904451163", + "path": ".leg" + }, + "head": { + "type": "MAP_VALUE", + "value": { + "camera_declination_angle_offset": { + "value": -0.018, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "camera_declination_angle_offset", + "uid": "-722270419", + "path": ".head.camera_declination_angle_offset" + }, + "neck": { + "type": "MAP_VALUE", + "value": { + "length": { + "value": 0.042, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "length", + "uid": "-1875099120", + "path": ".head.neck.length" + }, + "base_position_from_origin": { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": 0.013, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-636507489", + "path": ".head.neck.base_position_from_origin[0]" + }, + { + "value": { + "low": 0, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "uid": "-636507458", + "path": ".head.neck.base_position_from_origin[1]" + }, + { + "value": 0.11, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-636507427", + "path": ".head.neck.base_position_from_origin[2]" + } + ], + "name": "base_position_from_origin", + "uid": "1332541577", + "path": ".head.neck.base_position_from_origin" + } + }, + "name": "neck", + "uid": "893194756", + "path": ".head.neck" + }, + "neck_to_camera": { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": 0.036, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "917353498", + "path": ".head.neck_to_camera[0]" + }, + { + "value": { + "low": 0, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "uid": "917353529", + "path": ".head.neck_to_camera[1]" + }, + { + "value": 0.028, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "917353560", + "path": ".head.neck_to_camera[2]" + } + ], + "name": "neck_to_camera", + "uid": "636541166", + "path": ".head.neck_to_camera" + }, + "limits": { + "type": "MAP_VALUE", + "value": { + "yaw": { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": "-pi * 2 / 3", + "tag": "?", + "type": "STRING_VALUE", + "uid": "-1289065078", + "path": ".head.limits.yaw[0]" + }, + { + "value": "pi * 2 / 3", + "tag": "?", + "type": "STRING_VALUE", + "uid": "-1289065047", + "path": ".head.limits.yaw[1]" + } + ], + "name": "yaw", + "uid": "1897665918", + "path": ".head.limits.yaw" + }, + "pitch": { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": "-pi / 6", + "tag": "?", + "type": "STRING_VALUE", + "uid": "-1913119015", + "path": ".head.limits.pitch[0]" + }, + { + "value": "pi / 2", + "tag": "?", + "type": "STRING_VALUE", + "uid": "-1913118984", + "path": ".head.limits.pitch[1]" + } + ], + "name": "pitch", + "uid": "-1712226673", + "path": ".head.limits.pitch" + } + }, + "name": "limits", + "uid": "-686563203", + "path": ".head.limits" + } + }, + "name": "head", + "uid": "1091436841", + "path": ".head" + }, + "arm": { + "type": "MAP_VALUE", + "value": { + "distance_between_shoulders": { + "value": 0.114, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "distance_between_shoulders", + "uid": "1729370733", + "path": ".arm.distance_between_shoulders" + }, + "lower_arm": { + "type": "MAP_VALUE", + "value": { + "offset": { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": { + "low": 0, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "uid": "260654090", + "path": ".arm.lower_arm.offset[0]" + }, + { + "value": { + "low": 0, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "uid": "260654121", + "path": ".arm.lower_arm.offset[1]" + } + ], + "name": "offset", + "uid": "1150340862", + "path": ".arm.lower_arm.offset" + }, + "length": { + "value": 0.13, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "length", + "uid": "1063757137", + "path": ".arm.lower_arm.length" + } + }, + "name": "lower_arm", + "uid": "-1427872285", + "path": ".arm.lower_arm" + }, + "shoulder": { + "type": "MAP_VALUE", + "value": { + "width": { + "value": 0.0245, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "width", + "uid": "2131180883", + "path": ".arm.shoulder.width" + }, + "length": { + "value": 0, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "length", + "uid": "1323769081", + "path": ".arm.shoulder.length" + }, + "offset": { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": 0.01, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1844524190", + "path": ".arm.shoulder.offset[0]" + }, + { + "value": 0.088, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1844524159", + "path": ".arm.shoulder.offset[1]" + } + ], + "name": "offset", + "uid": "1410352806", + "path": ".arm.shoulder.offset" + }, + "height": { + "value": 0.017, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "height", + "uid": "1209103162", + "path": ".arm.shoulder.height" + } + }, + "name": "shoulder", + "uid": "-923616453", + "path": ".arm.shoulder" + }, + "upper_arm": { + "type": "MAP_VALUE", + "value": { + "offset": { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": { + "low": 0, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "uid": "-629963797", + "path": ".arm.upper_arm.offset[0]" + }, + { + "value": 0.02, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-629963766", + "path": ".arm.upper_arm.offset[1]" + } + ], + "name": "offset", + "uid": "1601995453", + "path": ".arm.upper_arm.offset" + }, + "length": { + "value": 0.0615, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "length", + "uid": "1515411728", + "path": ".arm.upper_arm.length" + } + }, + "name": "upper_arm", + "uid": "-689841404", + "path": ".arm.upper_arm" + } + }, + "name": "arm", + "uid": "-1904461325", + "path": ".arm" + } + } + } + }, + { + "path": "config/darwin6/GlobalConfig.yaml", + "content": { + "type": "MAP_VALUE", + "value": { + "teamId": { + "value": { + "low": 9, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "name": "teamId", + "uid": "926395177", + "path": ".teamId" + }, + "playerId": { + "value": { + "low": 6, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "name": "playerId", + "uid": "460751469", + "path": ".playerId" + } + } + } + }, + { + "path": "config/darwin6/KinematicsConfiguration.yaml", + "content": { + "type": "MAP_VALUE", + "value": { + "mass_model": { + "type": "MAP_VALUE", + "value": { + "mass_representation_dimension": { + "value": { + "low": 4, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "name": "mass_representation_dimension", + "uid": "34885431", + "path": ".mass_model.mass_representation_dimension" + }, + "masses": { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.011264, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1536179894", + "path": ".mass_model.masses[0][0]" + }, + { + "value": 0.0109774, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1536179863", + "path": ".mass_model.masses[0][1]" + }, + { + "value": -0.00139357, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1536179832", + "path": ".mass_model.masses[0][2]" + }, + { + "value": 0.025913, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1536179801", + "path": ".mass_model.masses[0][3]" + } + ], + "uid": "-549627458", + "path": ".mass_model.masses[0]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.011264, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1535256373", + "path": ".mass_model.masses[1][0]" + }, + { + "value": -0.0109774, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1535256342", + "path": ".mass_model.masses[1][1]" + }, + { + "value": -0.00139357, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1535256311", + "path": ".mass_model.masses[1][2]" + }, + { + "value": 0.025913, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1535256280", + "path": ".mass_model.masses[1][3]" + } + ], + "uid": "-549627427", + "path": ".mass_model.masses[1]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.025261, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1534332852", + "path": ".mass_model.masses[2][0]" + }, + { + "value": -0.000659787, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1534332821", + "path": ".mass_model.masses[2][1]" + }, + { + "value": 0.000734065, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1534332790", + "path": ".mass_model.masses[2][2]" + }, + { + "value": 0.168377, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1534332759", + "path": ".mass_model.masses[2][3]" + } + ], + "uid": "-549627396", + "path": ".mass_model.masses[2]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.025261, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1533409331", + "path": ".mass_model.masses[3][0]" + }, + { + "value": 0.000659787, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1533409300", + "path": ".mass_model.masses[3][1]" + }, + { + "value": 0.000734065, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1533409269", + "path": ".mass_model.masses[3][2]" + }, + { + "value": 0.168377, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1533409238", + "path": ".mass_model.masses[3][3]" + } + ], + "uid": "-549627365", + "path": ".mass_model.masses[3]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.0841618, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1532485810", + "path": ".mass_model.masses[4][0]" + }, + { + "value": -0.00666564, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1532485779", + "path": ".mass_model.masses[4][1]" + }, + { + "value": -0.0134901, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1532485748", + "path": ".mass_model.masses[4][2]" + }, + { + "value": 0.0592885, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1532485717", + "path": ".mass_model.masses[4][3]" + } + ], + "uid": "-549627334", + "path": ".mass_model.masses[4]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.0841618, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1531562289", + "path": ".mass_model.masses[5][0]" + }, + { + "value": 0.00666564, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1531562258", + "path": ".mass_model.masses[5][1]" + }, + { + "value": -0.0134901, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1531562227", + "path": ".mass_model.masses[5][2]" + }, + { + "value": 0.0592885, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1531562196", + "path": ".mass_model.masses[5][3]" + } + ], + "uid": "-549627303", + "path": ".mass_model.masses[5]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.0155628, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1530638768", + "path": ".mass_model.masses[6][0]" + }, + { + "value": { + "low": 0, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "uid": "-1530638737", + "path": ".mass_model.masses[6][1]" + }, + { + "value": 0.000480135, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1530638706", + "path": ".mass_model.masses[6][2]" + }, + { + "value": 0.0270692, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1530638675", + "path": ".mass_model.masses[6][3]" + } + ], + "uid": "-549627272", + "path": ".mass_model.masses[6]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.0155628, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1529715247", + "path": ".mass_model.masses[7][0]" + }, + { + "value": { + "low": 0, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "uid": "-1529715216", + "path": ".mass_model.masses[7][1]" + }, + { + "value": 0.000480135, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1529715185", + "path": ".mass_model.masses[7][2]" + }, + { + "value": 0.0270692, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1529715154", + "path": ".mass_model.masses[7][3]" + } + ], + "uid": "-549627241", + "path": ".mass_model.masses[7]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": 0.0138731, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1528791726", + "path": ".mass_model.masses[8][0]" + }, + { + "value": -0.0000799828, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1528791695", + "path": ".mass_model.masses[8][1]" + }, + { + "value": -0.0182424, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1528791664", + "path": ".mass_model.masses[8][2]" + }, + { + "value": 0.167108, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1528791633", + "path": ".mass_model.masses[8][3]" + } + ], + "uid": "-549627210", + "path": ".mass_model.masses[8]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": 0.0138731, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1527868205", + "path": ".mass_model.masses[9][0]" + }, + { + "value": 0.0000799828, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1527868174", + "path": ".mass_model.masses[9][1]" + }, + { + "value": -0.0182424, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1527868143", + "path": ".mass_model.masses[9][2]" + }, + { + "value": 0.167108, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1527868112", + "path": ".mass_model.masses[9][3]" + } + ], + "uid": "-549627179", + "path": ".mass_model.masses[9]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.0300345, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-389766149", + "path": ".mass_model.masses[10][0]" + }, + { + "value": 0.000322635, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-389766118", + "path": ".mass_model.masses[10][1]" + }, + { + "value": 0.000691906, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-389766087", + "path": ".mass_model.masses[10][2]" + }, + { + "value": 0.119043, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-389766056", + "path": ".mass_model.masses[10][3]" + } + ], + "uid": "141417645", + "path": ".mass_model.masses[10]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.0300345, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-388842628", + "path": ".mass_model.masses[11][0]" + }, + { + "value": -0.000322635, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-388842597", + "path": ".mass_model.masses[11][1]" + }, + { + "value": 0.000691906, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-388842566", + "path": ".mass_model.masses[11][2]" + }, + { + "value": 0.119043, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-388842535", + "path": ".mass_model.masses[11][3]" + } + ], + "uid": "141417676", + "path": ".mass_model.masses[11]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.0539545, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-387919107", + "path": ".mass_model.masses[12][0]" + }, + { + "value": 0.000592469, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-387919076", + "path": ".mass_model.masses[12][1]" + }, + { + "value": 0.00654763, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-387919045", + "path": ".mass_model.masses[12][2]" + }, + { + "value": 0.0703098, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-387919014", + "path": ".mass_model.masses[12][3]" + } + ], + "uid": "141417707", + "path": ".mass_model.masses[12]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.0539545, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-386995586", + "path": ".mass_model.masses[13][0]" + }, + { + "value": -0.000592469, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-386995555", + "path": ".mass_model.masses[13][1]" + }, + { + "value": 0.00654763, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-386995524", + "path": ".mass_model.masses[13][2]" + }, + { + "value": 0.0703098, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-386995493", + "path": ".mass_model.masses[13][3]" + } + ], + "uid": "141417738", + "path": ".mass_model.masses[13]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.0138731, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-386072065", + "path": ".mass_model.masses[14][0]" + }, + { + "value": 0.000213732, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-386072034", + "path": ".mass_model.masses[14][1]" + }, + { + "value": -0.0185361, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-386072003", + "path": ".mass_model.masses[14][2]" + }, + { + "value": 0.167108, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-386071972", + "path": ".mass_model.masses[14][3]" + } + ], + "uid": "141417769", + "path": ".mass_model.masses[14]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.0138731, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-385148544", + "path": ".mass_model.masses[15][0]" + }, + { + "value": -0.000213732, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-385148513", + "path": ".mass_model.masses[15][1]" + }, + { + "value": -0.0185361, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-385148482", + "path": ".mass_model.masses[15][2]" + }, + { + "value": 0.167108, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-385148451", + "path": ".mass_model.masses[15][3]" + } + ], + "uid": "141417800", + "path": ".mass_model.masses[15]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": 0.0259953, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-384225023", + "path": ".mass_model.masses[16][0]" + }, + { + "value": -0.00950588, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-384224992", + "path": ".mass_model.masses[16][1]" + }, + { + "value": -0.000502877, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-384224961", + "path": ".mass_model.masses[16][2]" + }, + { + "value": 0.0794462, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-384224930", + "path": ".mass_model.masses[16][3]" + } + ], + "uid": "141417831", + "path": ".mass_model.masses[16]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": 0.0259953, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-383301502", + "path": ".mass_model.masses[17][0]" + }, + { + "value": 0.00950588, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-383301471", + "path": ".mass_model.masses[17][1]" + }, + { + "value": -0.000502877, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-383301440", + "path": ".mass_model.masses[17][2]" + }, + { + "value": 0.0794462, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-383301409", + "path": ".mass_model.masses[17][3]" + } + ], + "uid": "141417862", + "path": ".mass_model.masses[17]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.0165676, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-382377981", + "path": ".mass_model.masses[18][0]" + }, + { + "value": 0.00142428, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-382377950", + "path": ".mass_model.masses[18][1]" + }, + { + "value": 0.000712811, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-382377919", + "path": ".mass_model.masses[18][2]" + }, + { + "value": 0.0243577, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-382377888", + "path": ".mass_model.masses[18][3]" + } + ], + "uid": "141417893", + "path": ".mass_model.masses[18]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.035, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-381454460", + "path": ".mass_model.masses[19][0]" + }, + { + "value": { + "low": 0, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "uid": "-381454429", + "path": ".mass_model.masses[19][1]" + }, + { + "value": 0.01, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-381454398", + "path": ".mass_model.masses[19][2]" + }, + { + "value": 0.11708, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-381454367", + "path": ".mass_model.masses[19][3]" + } + ], + "uid": "141417924", + "path": ".mass_model.masses[19]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.0066631, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-361136998", + "path": ".mass_model.masses[20][0]" + }, + { + "value": -0.00311589, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-361136967", + "path": ".mass_model.masses[20][1]" + }, + { + "value": 0.0705563, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-361136936", + "path": ".mass_model.masses[20][2]" + }, + { + "value": 0.975599, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-361136905", + "path": ".mass_model.masses[20][3]" + } + ], + "uid": "141418606", + "path": ".mass_model.masses[20]" + } + ], + "name": "masses", + "uid": "1644672458", + "path": ".mass_model.masses" + }, + "number_of_masses": { + "value": { + "low": 21, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "name": "number_of_masses", + "uid": "-643042884", + "path": ".mass_model.number_of_masses" + } + }, + "name": "mass_model", + "uid": "-1458672698", + "path": ".mass_model" + }, + "leg": { + "type": "MAP_VALUE", + "value": { + "hip_offset": { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": 0, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1944657123", + "path": ".leg.hip_offset[0]" + }, + { + "value": 0.037, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1944657092", + "path": ".leg.hip_offset[1]" + }, + { + "value": 0.034, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1944657061", + "path": ".leg.hip_offset[2]" + } + ], + "name": "hip_offset", + "uid": "1892597963", + "path": ".leg.hip_offset" + }, + "lower_leg_length": { + "value": 0.093, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "lower_leg_length", + "uid": "-56969795", + "path": ".leg.lower_leg_length" + }, + "foot_centre_to_ankle_centre": { + "value": 0.011, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "foot_centre_to_ankle_centre", + "uid": "-763112820", + "path": ".leg.foot_centre_to_ankle_centre" + }, + "foot": { + "type": "MAP_VALUE", + "value": { + "width": { + "value": 0.066, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "width", + "uid": "-2099388978", + "path": ".leg.foot.width" + }, + "toe_length": { + "value": 0.0472, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "toe_length", + "uid": "-132291469", + "path": ".leg.foot.toe_length" + }, + "length": { + "value": 0.094, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "length", + "uid": "-974877730", + "path": ".leg.foot.length" + }, + "height": { + "value": 0.0335, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "height", + "uid": "-1089543649", + "path": ".leg.foot.height" + } + }, + "name": "foot", + "uid": "410915830", + "path": ".leg.foot" + }, + "heel_length": { + "value": 0.0451, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "heel_length", + "uid": "2066423961", + "path": ".leg.heel_length" + }, + "upper_leg_length": { + "value": 0.093, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "upper_leg_length", + "uid": "394684796", + "path": ".leg.upper_leg_length" + } + }, + "name": "leg", + "uid": "-178970266", + "path": ".leg" + }, + "head": { + "type": "MAP_VALUE", + "value": { + "camera_declination_angle_offset": { + "value": -0.009, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "camera_declination_angle_offset", + "uid": "1902183308", + "path": ".head.camera_declination_angle_offset" + }, + "neck": { + "type": "MAP_VALUE", + "value": { + "length": { + "value": 0.042, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "length", + "uid": "-905518097", + "path": ".head.neck.length" + }, + "base_position_from_origin": { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": 0.013, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "317721406", + "path": ".head.neck.base_position_from_origin[0]" + }, + { + "value": { + "low": 0, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "uid": "317721437", + "path": ".head.neck.base_position_from_origin[1]" + }, + { + "value": 0.11, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "317721468", + "path": ".head.neck.base_position_from_origin[2]" + } + ], + "name": "base_position_from_origin", + "uid": "724464714", + "path": ".head.neck.base_position_from_origin" + } + }, + "name": "neck", + "uid": "-1042465531", + "path": ".head.neck" + }, + "neck_to_camera": { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": 0.036, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "1355363001", + "path": ".head.neck_to_camera[0]" + }, + { + "value": { + "low": 0, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "uid": "1355363032", + "path": ".head.neck_to_camera[1]" + }, + { + "value": 0.028, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "1355363063", + "path": ".head.neck_to_camera[2]" + } + ], + "name": "neck_to_camera", + "uid": "1769731759", + "path": ".head.neck_to_camera" + }, + "limits": { + "type": "MAP_VALUE", + "value": { + "yaw": { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": "-pi * 2 / 3", + "tag": "?", + "type": "STRING_VALUE", + "uid": "-1529605207", + "path": ".head.limits.yaw[0]" + }, + { + "value": "pi * 2 / 3", + "tag": "?", + "type": "STRING_VALUE", + "uid": "-1529605176", + "path": ".head.limits.yaw[1]" + } + ], + "name": "yaw", + "uid": "-426361921", + "path": ".head.limits.yaw" + }, + "pitch": { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": "-pi / 3", + "tag": "?", + "type": "STRING_VALUE", + "uid": "-1143949000", + "path": ".head.limits.pitch[0]" + }, + { + "value": "pi / 3", + "tag": "?", + "type": "STRING_VALUE", + "uid": "-1143948969", + "path": ".head.limits.pitch[1]" + } + ], + "name": "pitch", + "uid": "-1719986032", + "path": ".head.limits.pitch" + } + }, + "name": "limits", + "uid": "-1135259842", + "path": ".head.limits" + } + }, + "name": "head", + "uid": "-1253230200", + "path": ".head" + }, + "arm": { + "type": "MAP_VALUE", + "value": { + "distance_between_shoulders": { + "value": 0.114, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "distance_between_shoulders", + "uid": "-78476788", + "path": ".arm.distance_between_shoulders" + }, + "lower_arm": { + "type": "MAP_VALUE", + "value": { + "offset": { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": { + "low": 0, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "uid": "954046795", + "path": ".arm.lower_arm.offset[0]" + }, + { + "value": { + "low": 0, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "uid": "954046826", + "path": ".arm.lower_arm.offset[1]" + } + ], + "name": "offset", + "uid": "1919510877", + "path": ".arm.lower_arm.offset" + }, + "length": { + "value": 0.13, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "length", + "uid": "1832927152", + "path": ".arm.lower_arm.length" + } + }, + "name": "lower_arm", + "uid": "1166354532", + "path": ".arm.lower_arm" + }, + "shoulder": { + "type": "MAP_VALUE", + "value": { + "width": { + "value": 0.0245, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "width", + "uid": "1890640754", + "path": ".arm.shoulder.width" + }, + "length": { + "value": 0, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "length", + "uid": "-1838007622", + "path": ".arm.shoulder.length" + }, + "offset": { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": 0.01, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1406514687", + "path": ".arm.shoulder.offset[0]" + }, + { + "value": 0.088, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1406514656", + "path": ".arm.shoulder.offset[1]" + } + ], + "name": "offset", + "uid": "-1751423897", + "path": ".arm.shoulder.offset" + }, + "height": { + "value": 0.017, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "height", + "uid": "-1952673541", + "path": ".arm.shoulder.height" + } + }, + "name": "shoulder", + "uid": "-1948310374", + "path": ".arm.shoulder" + }, + "upper_arm": { + "type": "MAP_VALUE", + "value": { + "offset": { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": { + "low": 0, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "uid": "63428908", + "path": ".arm.upper_arm.offset[0]" + }, + { + "value": 0.02, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "63428939", + "path": ".arm.upper_arm.offset[1]" + } + ], + "name": "offset", + "uid": "-1923801828", + "path": ".arm.upper_arm.offset" + }, + "length": { + "value": 0.0615, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "length", + "uid": "-2010385553", + "path": ".arm.upper_arm.length" + } + }, + "name": "upper_arm", + "uid": "1904385413", + "path": ".arm.upper_arm" + } + }, + "name": "arm", + "uid": "-178980428", + "path": ".arm" + } + } + } + }, + { + "path": "config/DarwinHardwareSimulator.yaml", + "content": { + "type": "MAP_VALUE", + "value": { + "noise": { + "type": "MAP_VALUE", + "value": { + "accelerometer": { + "type": "MAP_VALUE", + "value": { + "z": { + "value": 0.01, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "z", + "uid": "1759881932", + "path": ".noise.accelerometer.z" + }, + "y": { + "value": 0.01, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "y", + "uid": "1759881931", + "path": ".noise.accelerometer.y" + }, + "x": { + "value": 0.01, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "x", + "uid": "1759881930", + "path": ".noise.accelerometer.x" + } + }, + "name": "accelerometer", + "uid": "730322112", + "path": ".noise.accelerometer" + }, + "gyroscope": { + "type": "MAP_VALUE", + "value": { + "z": { + "value": 0.01, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "z", + "uid": "1310904962", + "path": ".noise.gyroscope.z" + }, + "y": { + "value": 0.01, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "y", + "uid": "1310904961", + "path": ".noise.gyroscope.y" + }, + "x": { + "value": 0.01, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "x", + "uid": "1310904960", + "path": ".noise.gyroscope.x" + } + }, + "name": "gyroscope", + "uid": "-29920778", + "path": ".noise.gyroscope" + } + }, + "name": "noise", + "uid": "260574239", + "path": ".noise" + }, + "imu_drift_rate": { + "value": 0, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "imu_drift_rate", + "uid": "-261217921", + "path": ".imu_drift_rate" + }, + "bodyTilt": { + "value": "25 * pi / 180", + "tag": "?", + "type": "STRING_VALUE", + "name": "bodyTilt", + "uid": "-2110611366", + "path": ".bodyTilt" + } + } + } + }, + { + "path": "config/DarwinSensorFilter.yaml", + "content": { + "type": "MAP_VALUE", + "value": { + "motion_filter": { + "type": "MAP_VALUE", + "value": { + "initial": { + "type": "MAP_VALUE", + "value": { + "mean": { + "type": "MAP_VALUE", + "value": { + "position": { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": { + "low": 0, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "uid": "-1326562230", + "path": ".motion_filter.initial.mean.position[0]" + }, + { + "value": { + "low": 0, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "uid": "-1326562199", + "path": ".motion_filter.initial.mean.position[1]" + }, + { + "value": 0.22, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1326562168", + "path": ".motion_filter.initial.mean.position[2]" + } + ], + "name": "position", + "uid": "-402278722", + "path": ".motion_filter.initial.mean.position" + }, + "rotation": { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": { + "low": 1, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "uid": "804434389", + "path": ".motion_filter.initial.mean.rotation[0]" + }, + { + "value": { + "low": 0, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "uid": "804434420", + "path": ".motion_filter.initial.mean.rotation[1]" + }, + { + "value": { + "low": 0, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "uid": "804434451", + "path": ".motion_filter.initial.mean.rotation[2]" + }, + { + "value": { + "low": 0, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "uid": "804434482", + "path": ".motion_filter.initial.mean.rotation[3]" + } + ], + "name": "rotation", + "uid": "-1190384365", + "path": ".motion_filter.initial.mean.rotation" + }, + "rotational_velocity": { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": { + "low": 0, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "uid": "150267786", + "path": ".motion_filter.initial.mean.rotational_velocity[0]" + }, + { + "value": { + "low": 0, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "uid": "150267817", + "path": ".motion_filter.initial.mean.rotational_velocity[1]" + }, + { + "value": { + "low": 0, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "uid": "150267848", + "path": ".motion_filter.initial.mean.rotational_velocity[2]" + } + ], + "name": "rotational_velocity", + "uid": "838065022", + "path": ".motion_filter.initial.mean.rotational_velocity" + }, + "velocity": { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": { + "low": 0, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "uid": "-2116709354", + "path": ".motion_filter.initial.mean.velocity[0]" + }, + { + "value": { + "low": 0, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "uid": "-2116709323", + "path": ".motion_filter.initial.mean.velocity[1]" + }, + { + "value": { + "low": 0, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "uid": "-2116709292", + "path": ".motion_filter.initial.mean.velocity[2]" + } + ], + "name": "velocity", + "uid": "984177266", + "path": ".motion_filter.initial.mean.velocity" + } + }, + "name": "mean", + "uid": "822219961", + "path": ".motion_filter.initial.mean" + }, + "covariance": { + "type": "MAP_VALUE", + "value": { + "position": { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": 0.001, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-284810142", + "path": ".motion_filter.initial.covariance.position[0]" + }, + { + "value": 0.001, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-284810111", + "path": ".motion_filter.initial.covariance.position[1]" + }, + { + "value": { + "low": 1, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "uid": "-284810080", + "path": ".motion_filter.initial.covariance.position[2]" + } + ], + "name": "position", + "uid": "-1124102746", + "path": ".motion_filter.initial.covariance.position" + }, + "rotation": { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": 0.1, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "1846186477", + "path": ".motion_filter.initial.covariance.rotation[0]" + }, + { + "value": 0.1, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "1846186508", + "path": ".motion_filter.initial.covariance.rotation[1]" + }, + { + "value": 0.1, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "1846186539", + "path": ".motion_filter.initial.covariance.rotation[2]" + }, + { + "value": 0.1, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "1846186570", + "path": ".motion_filter.initial.covariance.rotation[3]" + } + ], + "name": "rotation", + "uid": "-1912208389", + "path": ".motion_filter.initial.covariance.rotation" + }, + "rotational_velocity": { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": { + "low": 1, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "uid": "265848946", + "path": ".motion_filter.initial.covariance.rotational_velocity[0]" + }, + { + "value": { + "low": 1, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "uid": "265848977", + "path": ".motion_filter.initial.covariance.rotational_velocity[1]" + }, + { + "value": { + "low": 1, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "uid": "265849008", + "path": ".motion_filter.initial.covariance.rotational_velocity[2]" + } + ], + "name": "rotational_velocity", + "uid": "815145878", + "path": ".motion_filter.initial.covariance.rotational_velocity" + }, + "velocity": { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": 0.001, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1074957266", + "path": ".motion_filter.initial.covariance.velocity[0]" + }, + { + "value": 0.001, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1074957235", + "path": ".motion_filter.initial.covariance.velocity[1]" + }, + { + "value": 0.001, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1074957204", + "path": ".motion_filter.initial.covariance.velocity[2]" + } + ], + "name": "velocity", + "uid": "262353242", + "path": ".motion_filter.initial.covariance.velocity" + } + }, + "name": "covariance", + "uid": "-57190191", + "path": ".motion_filter.initial.covariance" + } + }, + "name": "initial", + "uid": "-1134496646", + "path": ".motion_filter.initial" + }, + "noise": { + "type": "MAP_VALUE", + "value": { + "process": { + "type": "MAP_VALUE", + "value": { + "position": { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": 1e-10, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-586972190", + "path": ".motion_filter.noise.process.position[0]" + }, + { + "value": 1e-10, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-586972159", + "path": ".motion_filter.noise.process.position[1]" + }, + { + "value": 1e-10, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-586972128", + "path": ".motion_filter.noise.process.position[2]" + } + ], + "name": "position", + "uid": "1770675750", + "path": ".motion_filter.noise.process.position" + }, + "rotation": { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": 1e-12, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "1544024429", + "path": ".motion_filter.noise.process.rotation[0]" + }, + { + "value": 1e-12, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "1544024460", + "path": ".motion_filter.noise.process.rotation[1]" + }, + { + "value": 1e-12, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "1544024491", + "path": ".motion_filter.noise.process.rotation[2]" + }, + { + "value": 1e-12, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "1544024522", + "path": ".motion_filter.noise.process.rotation[3]" + } + ], + "name": "rotation", + "uid": "982570107", + "path": ".motion_filter.noise.process.rotation" + }, + "rotational_velocity": { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": 1e-8, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "921467122", + "path": ".motion_filter.noise.process.rotational_velocity[0]" + }, + { + "value": 1e-8, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "921467153", + "path": ".motion_filter.noise.process.rotational_velocity[1]" + }, + { + "value": 1e-8, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "921467184", + "path": ".motion_filter.noise.process.rotational_velocity[2]" + } + ], + "name": "rotational_velocity", + "uid": "1492910870", + "path": ".motion_filter.noise.process.rotational_velocity" + }, + "velocity": { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": 0.000001, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1377119314", + "path": ".motion_filter.noise.process.velocity[0]" + }, + { + "value": 0.000001, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1377119283", + "path": ".motion_filter.noise.process.velocity[1]" + }, + { + "value": 0.000001, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1377119252", + "path": ".motion_filter.noise.process.velocity[2]" + } + ], + "name": "velocity", + "uid": "-1137835558", + "path": ".motion_filter.noise.process.velocity" + } + }, + "name": "process", + "uid": "-267913135", + "path": ".motion_filter.noise.process" + }, + "measurement": { + "type": "MAP_VALUE", + "value": { + "foot_up_with_z": { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": 0.000001, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1221815516", + "path": ".motion_filter.noise.measurement.foot_up_with_z[0]" + }, + { + "value": 0.000001, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1221815485", + "path": ".motion_filter.noise.measurement.foot_up_with_z[1]" + }, + { + "value": 0.000001, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1221815454", + "path": ".motion_filter.noise.measurement.foot_up_with_z[2]" + }, + { + "value": 1e-10, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1221815423", + "path": ".motion_filter.noise.measurement.foot_up_with_z[3]" + } + ], + "name": "foot_up_with_z", + "uid": "2019780132", + "path": ".motion_filter.noise.measurement.foot_up_with_z" + }, + "accelerometer_magnitude": { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": 0.0001, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1165222664", + "path": ".motion_filter.noise.measurement.accelerometer_magnitude[0]" + }, + { + "value": 0.0001, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1165222633", + "path": ".motion_filter.noise.measurement.accelerometer_magnitude[1]" + }, + { + "value": 0.0001, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1165222602", + "path": ".motion_filter.noise.measurement.accelerometer_magnitude[2]" + } + ], + "name": "accelerometer_magnitude", + "uid": "-1939845936", + "path": ".motion_filter.noise.measurement.accelerometer_magnitude" + }, + "flat_foot_orientation": { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": 0.000005, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1299066509", + "path": ".motion_filter.noise.measurement.flat_foot_orientation[0]" + }, + { + "value": 0.000005, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1299066478", + "path": ".motion_filter.noise.measurement.flat_foot_orientation[1]" + }, + { + "value": 0.000005, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1299066447", + "path": ".motion_filter.noise.measurement.flat_foot_orientation[2]" + }, + { + "value": 0.000005, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1299066416", + "path": ".motion_filter.noise.measurement.flat_foot_orientation[3]" + } + ], + "name": "flat_foot_orientation", + "uid": "563372597", + "path": ".motion_filter.noise.measurement.flat_foot_orientation" + }, + "flat_foot_odometry": { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": 5e-8, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1559382172", + "path": ".motion_filter.noise.measurement.flat_foot_odometry[0]" + }, + { + "value": 5e-8, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1559382141", + "path": ".motion_filter.noise.measurement.flat_foot_odometry[1]" + }, + { + "value": 5e-8, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1559382110", + "path": ".motion_filter.noise.measurement.flat_foot_odometry[2]" + } + ], + "name": "flat_foot_odometry", + "uid": "-881939996", + "path": ".motion_filter.noise.measurement.flat_foot_odometry" + }, + "gyroscope": { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": 1e-8, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-78234637", + "path": ".motion_filter.noise.measurement.gyroscope[0]" + }, + { + "value": 1e-8, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-78234606", + "path": ".motion_filter.noise.measurement.gyroscope[1]" + }, + { + "value": 1e-8, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-78234575", + "path": ".motion_filter.noise.measurement.gyroscope[2]" + } + ], + "name": "gyroscope", + "uid": "950798261", + "path": ".motion_filter.noise.measurement.gyroscope" + }, + "accelerometer": { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": 0.0003, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "519738473", + "path": ".motion_filter.noise.measurement.accelerometer[0]" + }, + { + "value": 0.0003, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "519738504", + "path": ".motion_filter.noise.measurement.accelerometer[1]" + }, + { + "value": 0.0003, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "519738535", + "path": ".motion_filter.noise.measurement.accelerometer[2]" + } + ], + "name": "accelerometer", + "uid": "1244492543", + "path": ".motion_filter.noise.measurement.accelerometer" + } + }, + "name": "measurement", + "uid": "-943065954", + "path": ".motion_filter.noise.measurement" + } + }, + "name": "noise", + "uid": "-1122788912", + "path": ".motion_filter.noise" + }, + "update": { + "type": "MAP_VALUE", + "value": { + "velocity_decay": { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": 0.98, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "714497685", + "path": ".motion_filter.update.velocity_decay[0]" + }, + { + "value": 0.98, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "714497716", + "path": ".motion_filter.update.velocity_decay[1]" + }, + { + "value": 0.98, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "714497747", + "path": ".motion_filter.update.velocity_decay[2]" + } + ], + "name": "velocity_decay", + "uid": "-1793738669", + "path": ".motion_filter.update.velocity_decay" + } + }, + "name": "update", + "uid": "-245556013", + "path": ".motion_filter.update" + } + }, + "name": "motion_filter", + "uid": "-1582632668", + "path": ".motion_filter" + }, + "foot_load_sensor": { + "type": "MAP_VALUE", + "value": { + "certainty_threshold": { + "value": 0.5, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "certainty_threshold", + "uid": "2144596836", + "path": ".foot_load_sensor.certainty_threshold" + }, + "noise_factor": { + "value": 0.0001, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "noise_factor", + "uid": "-1891905373", + "path": ".foot_load_sensor.noise_factor" + }, + "output_layer": { + "type": "MAP_VALUE", + "value": { + "weights": { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -3.817420969566686, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "240215535", + "path": ".foot_load_sensor.output_layer.weights[0][0]" + } + ], + "uid": "-177897671", + "path": ".foot_load_sensor.output_layer.weights[0]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": 4.037156205683518, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "241139056", + "path": ".foot_load_sensor.output_layer.weights[1][0]" + } + ], + "uid": "-177897640", + "path": ".foot_load_sensor.output_layer.weights[1]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -3.4622267693272373, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "242062577", + "path": ".foot_load_sensor.output_layer.weights[2][0]" + } + ], + "uid": "-177897609", + "path": ".foot_load_sensor.output_layer.weights[2]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -2.4447648246728138, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "242986098", + "path": ".foot_load_sensor.output_layer.weights[3][0]" + } + ], + "uid": "-177897578", + "path": ".foot_load_sensor.output_layer.weights[3]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -3.914995870234261, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "243909619", + "path": ".foot_load_sensor.output_layer.weights[4][0]" + } + ], + "uid": "-177897547", + "path": ".foot_load_sensor.output_layer.weights[4]" + } + ], + "name": "weights", + "uid": "748091951", + "path": ".foot_load_sensor.output_layer.weights" + }, + "bias": { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": 1.0413963, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-602144861", + "path": ".foot_load_sensor.output_layer.bias[0]" + } + ], + "name": "bias", + "uid": "1542742533", + "path": ".foot_load_sensor.output_layer.bias" + } + }, + "name": "output_layer", + "uid": "-1606279390", + "path": ".foot_load_sensor.output_layer" + }, + "hidden_layer": { + "type": "MAP_VALUE", + "value": { + "weights": { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": 0.3507176207564449, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-524354536", + "path": ".foot_load_sensor.hidden_layer.weights[0][0]" + }, + { + "value": -0.7440034305007683, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-524354505", + "path": ".foot_load_sensor.hidden_layer.weights[0][1]" + }, + { + "value": -1.111368499267395, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-524354474", + "path": ".foot_load_sensor.hidden_layer.weights[0][2]" + }, + { + "value": 0.37194096654896197, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-524354443", + "path": ".foot_load_sensor.hidden_layer.weights[0][3]" + }, + { + "value": -0.21608068114513843, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-524354412", + "path": ".foot_load_sensor.hidden_layer.weights[0][4]" + }, + { + "value": -0.6437746213800517, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-524354381", + "path": ".foot_load_sensor.hidden_layer.weights[0][5]" + }, + { + "value": -0.7967769196480108, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-524354350", + "path": ".foot_load_sensor.hidden_layer.weights[0][6]" + }, + { + "value": 0.41574090401642705, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-524354319", + "path": ".foot_load_sensor.hidden_layer.weights[0][7]" + }, + { + "value": 0.7863510287383556, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-524354288", + "path": ".foot_load_sensor.hidden_layer.weights[0][8]" + } + ], + "uid": "-2071019088", + "path": ".foot_load_sensor.hidden_layer.weights[0]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": 1.8195033232300746, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-523431015", + "path": ".foot_load_sensor.hidden_layer.weights[1][0]" + }, + { + "value": -0.3092456143273264, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-523430984", + "path": ".foot_load_sensor.hidden_layer.weights[1][1]" + }, + { + "value": -5.401362681437781, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-523430953", + "path": ".foot_load_sensor.hidden_layer.weights[1][2]" + }, + { + "value": -0.6321260098230489, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-523430922", + "path": ".foot_load_sensor.hidden_layer.weights[1][3]" + }, + { + "value": 0.3649295674296284, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-523430891", + "path": ".foot_load_sensor.hidden_layer.weights[1][4]" + }, + { + "value": 3.832830483711767, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-523430860", + "path": ".foot_load_sensor.hidden_layer.weights[1][5]" + }, + { + "value": 0.06274105708025571, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-523430829", + "path": ".foot_load_sensor.hidden_layer.weights[1][6]" + }, + { + "value": -0.4758916020136336, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-523430798", + "path": ".foot_load_sensor.hidden_layer.weights[1][7]" + }, + { + "value": -2.617098862755475, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-523430767", + "path": ".foot_load_sensor.hidden_layer.weights[1][8]" + } + ], + "uid": "-2071019057", + "path": ".foot_load_sensor.hidden_layer.weights[1]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": 1.0468655944968666, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-522507494", + "path": ".foot_load_sensor.hidden_layer.weights[2][0]" + }, + { + "value": -0.2288550232138635, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-522507463", + "path": ".foot_load_sensor.hidden_layer.weights[2][1]" + }, + { + "value": -2.415495377289451, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-522507432", + "path": ".foot_load_sensor.hidden_layer.weights[2][2]" + }, + { + "value": 1.34001340520446, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-522507401", + "path": ".foot_load_sensor.hidden_layer.weights[2][3]" + }, + { + "value": -1.2354321577973377, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-522507370", + "path": ".foot_load_sensor.hidden_layer.weights[2][4]" + }, + { + "value": -1.212071277689786, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-522507339", + "path": ".foot_load_sensor.hidden_layer.weights[2][5]" + }, + { + "value": 0.8848443234227416, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-522507308", + "path": ".foot_load_sensor.hidden_layer.weights[2][6]" + }, + { + "value": -0.49938214686607, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-522507277", + "path": ".foot_load_sensor.hidden_layer.weights[2][7]" + }, + { + "value": -1.4326914930533325, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-522507246", + "path": ".foot_load_sensor.hidden_layer.weights[2][8]" + } + ], + "uid": "-2071019026", + "path": ".foot_load_sensor.hidden_layer.weights[2]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": 1.5591010177783655, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-521583973", + "path": ".foot_load_sensor.hidden_layer.weights[3][0]" + }, + { + "value": -0.8287695564016131, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-521583942", + "path": ".foot_load_sensor.hidden_layer.weights[3][1]" + }, + { + "value": -3.0801980348048867, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-521583911", + "path": ".foot_load_sensor.hidden_layer.weights[3][2]" + }, + { + "value": -0.9460822702865764, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-521583880", + "path": ".foot_load_sensor.hidden_layer.weights[3][3]" + }, + { + "value": 1.3016955122155236, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-521583849", + "path": ".foot_load_sensor.hidden_layer.weights[3][4]" + }, + { + "value": 0.5839296624838912, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-521583818", + "path": ".foot_load_sensor.hidden_layer.weights[3][5]" + }, + { + "value": 0.29745419079400925, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-521583787", + "path": ".foot_load_sensor.hidden_layer.weights[3][6]" + }, + { + "value": -0.10141089220441184, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-521583756", + "path": ".foot_load_sensor.hidden_layer.weights[3][7]" + }, + { + "value": -3.1061649733798795, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-521583725", + "path": ".foot_load_sensor.hidden_layer.weights[3][8]" + } + ], + "uid": "-2071018995", + "path": ".foot_load_sensor.hidden_layer.weights[3]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": 0.49991148824274995, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-520660452", + "path": ".foot_load_sensor.hidden_layer.weights[4][0]" + }, + { + "value": 0.34820477811582423, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-520660421", + "path": ".foot_load_sensor.hidden_layer.weights[4][1]" + }, + { + "value": -2.7790268135167966, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-520660390", + "path": ".foot_load_sensor.hidden_layer.weights[4][2]" + }, + { + "value": -1.0435958785190549, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-520660359", + "path": ".foot_load_sensor.hidden_layer.weights[4][3]" + }, + { + "value": -0.021542240173189897, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-520660328", + "path": ".foot_load_sensor.hidden_layer.weights[4][4]" + }, + { + "value": 4.175619872556693, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-520660297", + "path": ".foot_load_sensor.hidden_layer.weights[4][5]" + }, + { + "value": -0.5313690617336944, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-520660266", + "path": ".foot_load_sensor.hidden_layer.weights[4][6]" + }, + { + "value": 0.07100207305049087, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-520660235", + "path": ".foot_load_sensor.hidden_layer.weights[4][7]" + }, + { + "value": -1.4631154471110743, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-520660204", + "path": ".foot_load_sensor.hidden_layer.weights[4][8]" + } + ], + "uid": "-2071018964", + "path": ".foot_load_sensor.hidden_layer.weights[4]" + } + ], + "name": "weights", + "uid": "-304700648", + "path": ".foot_load_sensor.hidden_layer.weights" + }, + "bias": { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -1.3516212874252869, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1654937460", + "path": ".foot_load_sensor.hidden_layer.bias[0]" + }, + { + "value": -0.2119735179071719, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1654937429", + "path": ".foot_load_sensor.hidden_layer.bias[1]" + }, + { + "value": 1.2419609867373513, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1654937398", + "path": ".foot_load_sensor.hidden_layer.bias[2]" + }, + { + "value": -1.0660909865380361, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1654937367", + "path": ".foot_load_sensor.hidden_layer.bias[3]" + }, + { + "value": -1.2761471991432058, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1654937336", + "path": ".foot_load_sensor.hidden_layer.bias[4]" + } + ], + "name": "bias", + "uid": "1241680316", + "path": ".foot_load_sensor.hidden_layer.bias" + } + }, + "name": "hidden_layer", + "uid": "2087305483", + "path": ".foot_load_sensor.hidden_layer" + }, + "uncertainty_threshold": { + "value": 0.5, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "uncertainty_threshold", + "uid": "-224336917", + "path": ".foot_load_sensor.uncertainty_threshold" + } + }, + "name": "foot_load_sensor", + "uid": "546598655", + "path": ".foot_load_sensor" + }, + "buttons": { + "type": "MAP_VALUE", + "value": { + "debounce_threshold": { + "value": { + "low": 7, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "name": "debounce_threshold", + "uid": "-2136356513", + "path": ".buttons.debounce_threshold" + } + }, + "name": "buttons", + "uid": "-1991745852", + "path": ".buttons" + }, + "battery": { + "type": "MAP_VALUE", + "value": { + "charged_voltage": { + "value": 10.7, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "charged_voltage", + "uid": "1122472369", + "path": ".battery.charged_voltage" + }, + "flat_voltage": { + "value": 12.9, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "flat_voltage", + "uid": "689076342", + "path": ".battery.flat_voltage" + } + }, + "name": "battery", + "uid": "1730628944", + "path": ".battery" + } + } + } + }, + { + "path": "config/FallingRelax.yaml", + "content": { + "type": "MAP_VALUE", + "value": { + "PRIORITY": { + "value": { + "low": 90, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "name": "PRIORITY", + "uid": "2042560593", + "path": ".PRIORITY" + }, + "FALLING_ANGLE": { + "value": 0.8, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "FALLING_ANGLE", + "uid": "-1929142706", + "path": ".FALLING_ANGLE" + }, + "RECOVERY_ACCELERATION": { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": 9.5, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "1963419467", + "path": ".RECOVERY_ACCELERATION[0]" + }, + { + "value": 10.5, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "1963419498", + "path": ".RECOVERY_ACCELERATION[1]" + } + ], + "name": "RECOVERY_ACCELERATION", + "uid": "-1790813347", + "path": ".RECOVERY_ACCELERATION" + }, + "FALLING_ACCELERATION": { + "value": { + "low": 8, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "name": "FALLING_ACCELERATION", + "uid": "1576053381", + "path": ".FALLING_ACCELERATION" + } + } + } + }, + { + "path": "config/FieldDescription.yaml", + "content": { + "type": "MAP_VALUE", + "value": { + "CenterCircleDiameter": { + "value": 1.54, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "CenterCircleDiameter", + "uid": "-1737114362", + "path": ".CenterCircleDiameter" + }, + "GoalAreaWidth": { + "value": 3.5, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "GoalAreaWidth", + "uid": "-700902894", + "path": ".GoalAreaWidth" + }, + "FieldLength": { + "value": { + "low": 9, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "name": "FieldLength", + "uid": "509464108", + "path": ".FieldLength" + }, + "BallRadius": { + "value": 0.065, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "BallRadius", + "uid": "-1713466299", + "path": ".BallRadius" + }, + "GoalNetHeight": { + "value": 1, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "GoalNetHeight", + "uid": "115151357", + "path": ".GoalNetHeight" + }, + "PenaltyMarkDistance": { + "value": 1.8, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "PenaltyMarkDistance", + "uid": "1128963767", + "path": ".PenaltyMarkDistance" + }, + "Units": { + "value": "m", + "tag": "?", + "type": "STRING_VALUE", + "name": "Units", + "uid": "704524827", + "path": ".Units" + }, + "MarkWidth": { + "value": 0.1, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "MarkWidth", + "uid": "-1612573787", + "path": ".MarkWidth" + }, + "GoalAreaLength": { + "value": 0.61, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "GoalAreaLength", + "uid": "-571482086", + "path": ".GoalAreaLength" + }, + "GoalDepth": { + "value": 0.6, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "GoalDepth", + "uid": "1375040540", + "path": ".GoalDepth" + }, + "GoalWidth": { + "value": 1.89, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "GoalWidth", + "uid": "1392695071", + "path": ".GoalWidth" + }, + "GoalCrossbarHeight": { + "value": 1.2, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "GoalCrossbarHeight", + "uid": "1543035297", + "path": ".GoalCrossbarHeight" + }, + "GoalCrossbarDiameter": { + "value": 0.11, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "GoalCrossbarDiameter", + "uid": "1743365767", + "path": ".GoalCrossbarDiameter" + }, + "PenaltyRobotStart": { + "value": 1, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "PenaltyRobotStart", + "uid": "-1217703379", + "path": ".PenaltyRobotStart" + }, + "FieldWidth": { + "value": { + "low": 6, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "name": "FieldWidth", + "uid": "1412176320", + "path": ".FieldWidth" + }, + "GoalpostDiameter": { + "value": 0.11, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "GoalpostDiameter", + "uid": "-1473352268", + "path": ".GoalpostDiameter" + }, + "BorderStripMinWidth": { + "value": 0.7, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "BorderStripMinWidth", + "uid": "-207017300", + "path": ".BorderStripMinWidth" + }, + "LineWidth": { + "value": 0.05, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "LineWidth", + "uid": "1825639134", + "path": ".LineWidth" + } + } + } + }, + { + "path": "config/FieldDescriptionPre2014.yaml", + "content": { + "type": "MAP_VALUE", + "value": { + "CenterCircleDiameter": { + "value": 1.2, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "CenterCircleDiameter", + "uid": "2023124512", + "path": ".CenterCircleDiameter" + }, + "GoalAreaWidth": { + "value": 2.2, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "GoalAreaWidth", + "uid": "813566520", + "path": ".GoalAreaWidth" + }, + "FieldLength": { + "value": { + "low": 6, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "name": "FieldLength", + "uid": "162437074", + "path": ".FieldLength" + }, + "BallRadius": { + "value": 0.05, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "BallRadius", + "uid": "907738591", + "path": ".BallRadius" + }, + "GoalNetHeight": { + "value": 0.8, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "GoalNetHeight", + "uid": "1629620771", + "path": ".GoalNetHeight" + }, + "PenaltyMarkDistance": { + "value": 1.8, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "PenaltyMarkDistance", + "uid": "-1105042851", + "path": ".PenaltyMarkDistance" + }, + "Units": { + "value": "m", + "tag": "?", + "type": "STRING_VALUE", + "name": "Units", + "uid": "-310857663", + "path": ".Units" + }, + "GoalAreaLength": { + "value": 0.6, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "GoalAreaLength", + "uid": "-867570508", + "path": ".GoalAreaLength" + }, + "GoalDepth": { + "value": 0.5, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "GoalDepth", + "uid": "-1172803774", + "path": ".GoalDepth" + }, + "GoalWidth": { + "value": 1.5, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "GoalWidth", + "uid": "-1155149243", + "path": ".GoalWidth" + }, + "MarkWidth": { + "value": 0.1, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "MarkWidth", + "uid": "134549195", + "path": ".MarkWidth" + }, + "GoalCrossbarHeight": { + "value": 1, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "GoalCrossbarHeight", + "uid": "1055328571", + "path": ".GoalCrossbarHeight" + }, + "GoalCrossbarDiameter": { + "value": 0.1, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "GoalCrossbarDiameter", + "uid": "1208637345", + "path": ".GoalCrossbarDiameter" + }, + "FieldWidth": { + "value": { + "low": 4, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "name": "FieldWidth", + "uid": "-261586086", + "path": ".FieldWidth" + }, + "GoalpostDiameter": { + "value": 0.1, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "GoalpostDiameter", + "uid": "1748483022", + "path": ".GoalpostDiameter" + }, + "BorderStripMinWidth": { + "value": 0.7, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "BorderStripMinWidth", + "uid": "1853943378", + "path": ".BorderStripMinWidth" + }, + "LineWidth": { + "value": 0.05, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "LineWidth", + "uid": "-722205180", + "path": ".LineWidth" + } + } + } + }, + { + "path": "config/FieldDescriptionRoboCup2015.yaml", + "content": { + "type": "MAP_VALUE", + "value": { + "CenterCircleDiameter": { + "value": 1.54, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "CenterCircleDiameter", + "uid": "-449487890", + "path": ".CenterCircleDiameter" + }, + "GoalAreaWidth": { + "value": 3.5, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "GoalAreaWidth", + "uid": "1966663722", + "path": ".GoalAreaWidth" + }, + "FieldLength": { + "value": { + "low": 9, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "name": "FieldLength", + "uid": "789334596", + "path": ".FieldLength" + }, + "BallRadius": { + "value": 0.065, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "BallRadius", + "uid": "-1981532883", + "path": ".BallRadius" + }, + "GoalNetHeight": { + "value": 1, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "GoalNetHeight", + "uid": "-1512249323", + "path": ".GoalNetHeight" + }, + "PenaltyMarkDistance": { + "value": 1.8, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "PenaltyMarkDistance", + "uid": "-769162545", + "path": ".PenaltyMarkDistance" + }, + "Units": { + "value": "m", + "tag": "?", + "type": "STRING_VALUE", + "name": "Units", + "uid": "232890419", + "path": ".Units" + }, + "MarkWidth": { + "value": 0.1, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "MarkWidth", + "uid": "-374295107", + "path": ".MarkWidth" + }, + "GoalAreaLength": { + "value": 0.61, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "GoalAreaLength", + "uid": "518704386", + "path": ".GoalAreaLength" + }, + "GoalDepth": { + "value": 0.6, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "GoalDepth", + "uid": "-1681648076", + "path": ".GoalDepth" + }, + "GoalWidth": { + "value": 1.89, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "GoalWidth", + "uid": "-1663993545", + "path": ".GoalWidth" + }, + "GoalCrossbarHeight": { + "value": 1.2, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "GoalCrossbarHeight", + "uid": "-1704783223", + "path": ".GoalCrossbarHeight" + }, + "GoalCrossbarDiameter": { + "value": 0.11, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "GoalCrossbarDiameter", + "uid": "-1263975057", + "path": ".GoalCrossbarDiameter" + }, + "PenaltyRobotStart": { + "value": 1, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "PenaltyRobotStart", + "uid": "-2015208379", + "path": ".PenaltyRobotStart" + }, + "FieldWidth": { + "value": { + "low": 6, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "name": "FieldWidth", + "uid": "1144109736", + "path": ".FieldWidth" + }, + "GoalpostDiameter": { + "value": 0.11, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "GoalpostDiameter", + "uid": "-1776172900", + "path": ".GoalpostDiameter" + }, + "BorderStripMinWidth": { + "value": 0.7, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "BorderStripMinWidth", + "uid": "-2105143612", + "path": ".BorderStripMinWidth" + }, + "LineWidth": { + "value": 0.05, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "LineWidth", + "uid": "-1231049482", + "path": ".LineWidth" + } + } + } + }, + { + "path": "config/FootMotionPlanner.yaml", + "content": { + "value": null, + "tag": "", + "type": "NULL_VALUE" + } + }, + { + "path": "config/FootPlacementPlanner.yaml", + "content": { + "value": null, + "tag": "", + "type": "NULL_VALUE" + } + }, + { + "path": "config/Getup.yaml", + "content": { + "type": "MAP_VALUE", + "value": { + "GETUP_PRIORITY": { + "value": { + "low": 50, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "name": "GETUP_PRIORITY", + "uid": "199993937", + "path": ".GETUP_PRIORITY" + }, + "FALLEN_ANGLE": { + "value": 1.1, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "FALLEN_ANGLE", + "uid": "-1134186921", + "path": ".FALLEN_ANGLE" + }, + "EXECUTION_PRIORITY": { + "value": { + "low": 100, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "name": "EXECUTION_PRIORITY", + "uid": "-1593545718", + "path": ".EXECUTION_PRIORITY" + } + } + } + }, + { + "path": "config/GlobalConfig.yaml", + "content": { + "type": "MAP_VALUE", + "value": { + "teamId": { + "value": { + "low": 9, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "name": "teamId", + "uid": "-592410807", + "path": ".teamId" + }, + "playerId": { + "value": { + "low": 1, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "name": "playerId", + "uid": "1177081485", + "path": ".playerId" + } + } + } + }, + { + "path": "config/igus1/KinematicsConfiguration.yaml", + "content": { + "type": "MAP_VALUE", + "value": { + "leg": { + "type": "MAP_VALUE", + "value": { + "foot_centre_to_ankle_centre": { + "value": 0.02, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "foot_centre_to_ankle_centre", + "uid": "-2021816494", + "path": ".leg.foot_centre_to_ankle_centre" + }, + "hip_offset": { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": 0, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "129092195", + "path": ".leg.hip_offset[0]" + }, + { + "value": 0.055, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "129092226", + "path": ".leg.hip_offset[1]" + }, + { + "value": 0.045, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "129092257", + "path": ".leg.hip_offset[2]" + } + ], + "name": "hip_offset", + "uid": "1131450181", + "path": ".leg.hip_offset" + }, + "upper_leg_length": { + "value": 0.2, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "upper_leg_length", + "uid": "651031670", + "path": ".leg.upper_leg_length" + }, + "foot": { + "type": "MAP_VALUE", + "value": { + "width": { + "value": 0.13, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "width", + "uid": "1434430536", + "path": ".leg.foot.width" + }, + "toe_length": { + "value": 0.13, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "toe_length", + "uid": "-124022215", + "path": ".leg.foot.toe_length" + }, + "length": { + "value": 0.215, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "length", + "uid": "1199344804", + "path": ".leg.foot.length" + }, + "height": { + "value": 0.04, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "height", + "uid": "1084678885", + "path": ".leg.foot.height" + } + }, + "name": "foot", + "uid": "-1034762768", + "path": ".leg.foot" + }, + "length_between_legs": { + "value": 0.2, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "length_between_legs", + "uid": "208312563", + "path": ".leg.length_between_legs" + }, + "lower_leg_length": { + "value": 0.2, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "lower_leg_length", + "uid": "199377079", + "path": ".leg.lower_leg_length" + }, + "heel_length": { + "value": 0.085, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "heel_length", + "uid": "-54320801", + "path": ".leg.heel_length" + } + }, + "name": "leg", + "uid": "1686346540", + "path": ".leg" + }, + "mass_model": { + "type": "MAP_VALUE", + "value": { + "mass_representation_dimension": { + "value": { + "low": 4, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "name": "mass_representation_dimension", + "uid": "1771215153", + "path": ".mass_model.mass_representation_dimension" + }, + "masses": { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.011264, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1158308848", + "path": ".mass_model.masses[0][0]" + }, + { + "value": 0.0109774, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1158308817", + "path": ".mass_model.masses[0][1]" + }, + { + "value": -0.00139357, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1158308786", + "path": ".mass_model.masses[0][2]" + }, + { + "value": 0.025913, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1158308755", + "path": ".mass_model.masses[0][3]" + } + ], + "uid": "-293280584", + "path": ".mass_model.masses[0]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.011264, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1157385327", + "path": ".mass_model.masses[1][0]" + }, + { + "value": -0.0109774, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1157385296", + "path": ".mass_model.masses[1][1]" + }, + { + "value": -0.00139357, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1157385265", + "path": ".mass_model.masses[1][2]" + }, + { + "value": 0.025913, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1157385234", + "path": ".mass_model.masses[1][3]" + } + ], + "uid": "-293280553", + "path": ".mass_model.masses[1]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.025261, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1156461806", + "path": ".mass_model.masses[2][0]" + }, + { + "value": -0.000659787, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1156461775", + "path": ".mass_model.masses[2][1]" + }, + { + "value": 0.000734065, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1156461744", + "path": ".mass_model.masses[2][2]" + }, + { + "value": 0.168377, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1156461713", + "path": ".mass_model.masses[2][3]" + } + ], + "uid": "-293280522", + "path": ".mass_model.masses[2]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.025261, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1155538285", + "path": ".mass_model.masses[3][0]" + }, + { + "value": 0.000659787, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1155538254", + "path": ".mass_model.masses[3][1]" + }, + { + "value": 0.000734065, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1155538223", + "path": ".mass_model.masses[3][2]" + }, + { + "value": 0.168377, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1155538192", + "path": ".mass_model.masses[3][3]" + } + ], + "uid": "-293280491", + "path": ".mass_model.masses[3]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.0841618, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1154614764", + "path": ".mass_model.masses[4][0]" + }, + { + "value": -0.00666564, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1154614733", + "path": ".mass_model.masses[4][1]" + }, + { + "value": -0.0134901, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1154614702", + "path": ".mass_model.masses[4][2]" + }, + { + "value": 0.0592885, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1154614671", + "path": ".mass_model.masses[4][3]" + } + ], + "uid": "-293280460", + "path": ".mass_model.masses[4]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.0841618, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1153691243", + "path": ".mass_model.masses[5][0]" + }, + { + "value": 0.00666564, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1153691212", + "path": ".mass_model.masses[5][1]" + }, + { + "value": -0.0134901, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1153691181", + "path": ".mass_model.masses[5][2]" + }, + { + "value": 0.0592885, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1153691150", + "path": ".mass_model.masses[5][3]" + } + ], + "uid": "-293280429", + "path": ".mass_model.masses[5]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.0155628, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1152767722", + "path": ".mass_model.masses[6][0]" + }, + { + "value": { + "low": 0, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "uid": "-1152767691", + "path": ".mass_model.masses[6][1]" + }, + { + "value": 0.000480135, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1152767660", + "path": ".mass_model.masses[6][2]" + }, + { + "value": 0.0270692, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1152767629", + "path": ".mass_model.masses[6][3]" + } + ], + "uid": "-293280398", + "path": ".mass_model.masses[6]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.0155628, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1151844201", + "path": ".mass_model.masses[7][0]" + }, + { + "value": { + "low": 0, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "uid": "-1151844170", + "path": ".mass_model.masses[7][1]" + }, + { + "value": 0.000480135, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1151844139", + "path": ".mass_model.masses[7][2]" + }, + { + "value": 0.0270692, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1151844108", + "path": ".mass_model.masses[7][3]" + } + ], + "uid": "-293280367", + "path": ".mass_model.masses[7]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": 0.0138731, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1150920680", + "path": ".mass_model.masses[8][0]" + }, + { + "value": -0.0000799828, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1150920649", + "path": ".mass_model.masses[8][1]" + }, + { + "value": -0.0182424, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1150920618", + "path": ".mass_model.masses[8][2]" + }, + { + "value": 0.167108, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1150920587", + "path": ".mass_model.masses[8][3]" + } + ], + "uid": "-293280336", + "path": ".mass_model.masses[8]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": 0.0138731, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1149997159", + "path": ".mass_model.masses[9][0]" + }, + { + "value": 0.0000799828, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1149997128", + "path": ".mass_model.masses[9][1]" + }, + { + "value": -0.0182424, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1149997097", + "path": ".mass_model.masses[9][2]" + }, + { + "value": 0.167108, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1149997066", + "path": ".mass_model.masses[9][3]" + } + ], + "uid": "-293280305", + "path": ".mass_model.masses[9]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.0300345, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1560665611", + "path": ".mass_model.masses[10][0]" + }, + { + "value": 0.000322635, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1560665580", + "path": ".mass_model.masses[10][1]" + }, + { + "value": 0.000691906, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1560665549", + "path": ".mass_model.masses[10][2]" + }, + { + "value": 0.119043, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1560665518", + "path": ".mass_model.masses[10][3]" + } + ], + "uid": "-501763853", + "path": ".mass_model.masses[10]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.0300345, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1559742090", + "path": ".mass_model.masses[11][0]" + }, + { + "value": -0.000322635, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1559742059", + "path": ".mass_model.masses[11][1]" + }, + { + "value": 0.000691906, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1559742028", + "path": ".mass_model.masses[11][2]" + }, + { + "value": 0.119043, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1559741997", + "path": ".mass_model.masses[11][3]" + } + ], + "uid": "-501763822", + "path": ".mass_model.masses[11]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.0539545, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1558818569", + "path": ".mass_model.masses[12][0]" + }, + { + "value": 0.000592469, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1558818538", + "path": ".mass_model.masses[12][1]" + }, + { + "value": 0.00654763, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1558818507", + "path": ".mass_model.masses[12][2]" + }, + { + "value": 0.0703098, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1558818476", + "path": ".mass_model.masses[12][3]" + } + ], + "uid": "-501763791", + "path": ".mass_model.masses[12]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.0539545, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1557895048", + "path": ".mass_model.masses[13][0]" + }, + { + "value": -0.000592469, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1557895017", + "path": ".mass_model.masses[13][1]" + }, + { + "value": 0.00654763, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1557894986", + "path": ".mass_model.masses[13][2]" + }, + { + "value": 0.0703098, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1557894955", + "path": ".mass_model.masses[13][3]" + } + ], + "uid": "-501763760", + "path": ".mass_model.masses[13]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.0138731, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1556971527", + "path": ".mass_model.masses[14][0]" + }, + { + "value": 0.000213732, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1556971496", + "path": ".mass_model.masses[14][1]" + }, + { + "value": -0.0185361, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1556971465", + "path": ".mass_model.masses[14][2]" + }, + { + "value": 0.167108, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1556971434", + "path": ".mass_model.masses[14][3]" + } + ], + "uid": "-501763729", + "path": ".mass_model.masses[14]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.0138731, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1556048006", + "path": ".mass_model.masses[15][0]" + }, + { + "value": -0.000213732, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1556047975", + "path": ".mass_model.masses[15][1]" + }, + { + "value": -0.0185361, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1556047944", + "path": ".mass_model.masses[15][2]" + }, + { + "value": 0.167108, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1556047913", + "path": ".mass_model.masses[15][3]" + } + ], + "uid": "-501763698", + "path": ".mass_model.masses[15]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": 0.0259953, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1555124485", + "path": ".mass_model.masses[16][0]" + }, + { + "value": -0.00950588, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1555124454", + "path": ".mass_model.masses[16][1]" + }, + { + "value": -0.000502877, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1555124423", + "path": ".mass_model.masses[16][2]" + }, + { + "value": 0.0794462, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1555124392", + "path": ".mass_model.masses[16][3]" + } + ], + "uid": "-501763667", + "path": ".mass_model.masses[16]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": 0.0259953, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1554200964", + "path": ".mass_model.masses[17][0]" + }, + { + "value": 0.00950588, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1554200933", + "path": ".mass_model.masses[17][1]" + }, + { + "value": -0.000502877, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1554200902", + "path": ".mass_model.masses[17][2]" + }, + { + "value": 0.0794462, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1554200871", + "path": ".mass_model.masses[17][3]" + } + ], + "uid": "-501763636", + "path": ".mass_model.masses[17]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.0165676, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1553277443", + "path": ".mass_model.masses[18][0]" + }, + { + "value": 0.00142428, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1553277412", + "path": ".mass_model.masses[18][1]" + }, + { + "value": 0.000712811, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1553277381", + "path": ".mass_model.masses[18][2]" + }, + { + "value": 0.0243577, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1553277350", + "path": ".mass_model.masses[18][3]" + } + ], + "uid": "-501763605", + "path": ".mass_model.masses[18]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.035, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1552353922", + "path": ".mass_model.masses[19][0]" + }, + { + "value": { + "low": 0, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "uid": "-1552353891", + "path": ".mass_model.masses[19][1]" + }, + { + "value": 0.01, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1552353860", + "path": ".mass_model.masses[19][2]" + }, + { + "value": 0.11708, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1552353829", + "path": ".mass_model.masses[19][3]" + } + ], + "uid": "-501763574", + "path": ".mass_model.masses[19]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.0066631, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1532036460", + "path": ".mass_model.masses[20][0]" + }, + { + "value": -0.00311589, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1532036429", + "path": ".mass_model.masses[20][1]" + }, + { + "value": 0.0705563, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1532036398", + "path": ".mass_model.masses[20][2]" + }, + { + "value": 0.975599, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1532036367", + "path": ".mass_model.masses[20][3]" + } + ], + "uid": "-501762892", + "path": ".mass_model.masses[20]" + } + ], + "name": "masses", + "uid": "-576545520", + "path": ".mass_model.masses" + }, + "number_of_masses": { + "value": { + "low": 21, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "name": "number_of_masses", + "uid": "815462786", + "path": ".mass_model.number_of_masses" + } + }, + "name": "mass_model", + "uid": "813598528", + "path": ".mass_model" + }, + "team_darwin_chest_to_origin": { + "value": 0.18, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "team_darwin_chest_to_origin", + "uid": "664719572", + "path": ".team_darwin_chest_to_origin" + }, + "arm": { + "type": "MAP_VALUE", + "value": { + "distance_between_shoulders": { + "value": 0.17, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "distance_between_shoulders", + "uid": "-1920195450", + "path": ".arm.distance_between_shoulders" + }, + "lower_arm": { + "type": "MAP_VALUE", + "value": { + "offset": { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": { + "low": 0, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "uid": "1331917841", + "path": ".arm.lower_arm.offset[0]" + }, + { + "value": { + "low": 0, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "uid": "1331917872", + "path": ".arm.lower_arm.offset[1]" + } + ], + "name": "offset", + "uid": "-2119109545", + "path": ".arm.lower_arm.offset" + }, + "length": { + "value": 0.235, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "length", + "uid": "2089274026", + "path": ".arm.lower_arm.length" + } + }, + "name": "lower_arm", + "uid": "1418896042", + "path": ".arm.lower_arm" + }, + "shoulder": { + "type": "MAP_VALUE", + "value": { + "width": { + "value": 0.04, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "width", + "uid": "1752360172", + "path": ".arm.shoulder.width" + }, + "length": { + "value": 0, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "length", + "uid": "-1829738368", + "path": ".arm.shoulder.length" + }, + "offset": { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": 0, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "129695355", + "path": ".arm.shoulder.offset[0]" + }, + { + "value": 0.1905, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "129695386", + "path": ".arm.shoulder.offset[1]" + } + ], + "name": "offset", + "uid": "-1743154643", + "path": ".arm.shoulder.offset" + }, + "height": { + "value": 0.01, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "height", + "uid": "-1944404287", + "path": ".arm.shoulder.height" + } + }, + "name": "shoulder", + "uid": "-139048556", + "path": ".arm.shoulder" + }, + "upper_arm": { + "type": "MAP_VALUE", + "value": { + "offset": { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": { + "low": 0, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "uid": "441299954", + "path": ".arm.upper_arm.offset[0]" + }, + { + "value": 0.03, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "441299985", + "path": ".arm.upper_arm.offset[1]" + } + ], + "name": "offset", + "uid": "-1667454954", + "path": ".arm.upper_arm.offset" + }, + "length": { + "value": 0.16, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "length", + "uid": "-1754038679", + "path": ".arm.upper_arm.length" + } + }, + "name": "upper_arm", + "uid": "-2138040373", + "path": ".arm.upper_arm" + } + }, + "name": "arm", + "uid": "1686336378", + "path": ".arm" + }, + "head": { + "type": "MAP_VALUE", + "value": { + "neck": { + "type": "MAP_VALUE", + "value": { + "length": { + "value": 0.042, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "length", + "uid": "2070871017", + "path": ".head.neck.length" + }, + "base_position_from_origin": { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": 0.013, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "797739960", + "path": ".head.neck.base_position_from_origin[0]" + }, + { + "value": { + "low": 0, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "uid": "797739991", + "path": ".head.neck.base_position_from_origin[1]" + }, + { + "value": 0.11, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "797740022", + "path": ".head.neck.base_position_from_origin[2]" + } + ], + "name": "base_position_from_origin", + "uid": "-1357621744", + "path": ".head.neck.base_position_from_origin" + } + }, + "name": "neck", + "uid": "1386138187", + "path": ".head.neck" + }, + "ipd": { + "value": 0.065, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "ipd", + "uid": "460351665", + "path": ".head.ipd" + }, + "limits": { + "type": "MAP_VALUE", + "value": { + "yaw": { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": "-pi * 2 / 3", + "tag": "?", + "type": "STRING_VALUE", + "uid": "-1667885789", + "path": ".head.limits.yaw[0]" + }, + { + "value": "pi * 2 / 3", + "tag": "?", + "type": "STRING_VALUE", + "uid": "-1667885758", + "path": ".head.limits.yaw[1]" + } + ], + "name": "yaw", + "uid": "1747860613", + "path": ".head.limits.yaw" + }, + "pitch": { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": "-pi / 6", + "tag": "?", + "type": "STRING_VALUE", + "uid": "-887602126", + "path": ".head.limits.pitch[0]" + }, + { + "value": "pi / 2", + "tag": "?", + "type": "STRING_VALUE", + "uid": "-887602095", + "path": ".head.limits.pitch[1]" + } + ], + "name": "pitch", + "uid": "353763286", + "path": ".head.limits.pitch" + } + }, + "name": "limits", + "uid": "585671428", + "path": ".head.limits" + }, + "neck_to_camera": { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": 0.06, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1403394253", + "path": ".head.neck_to_camera[0]" + }, + { + "value": { + "low": 0, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "uid": "-1403394222", + "path": ".head.neck_to_camera[1]" + }, + { + "value": 0.06, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1403394191", + "path": ".head.neck_to_camera[2]" + } + ], + "name": "neck_to_camera", + "uid": "1778001013", + "path": ".head.neck_to_camera" + }, + "camera_declination_angle_offset": { + "value": 0, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "camera_declination_angle_offset", + "uid": "1782012550", + "path": ".head.camera_declination_angle_offset" + } + }, + "name": "head", + "uid": "737015938", + "path": ".head" + } + } + } + }, + { + "path": "config/KickScript.yaml", + "content": { + "type": "MAP_VALUE", + "value": { + "KICK_PRIORITY": { + "value": { + "low": 30, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "name": "KICK_PRIORITY", + "uid": "1581332120", + "path": ".KICK_PRIORITY" + }, + "EXECUTION_PRIORITY": { + "value": { + "low": 40, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "name": "EXECUTION_PRIORITY", + "uid": "-1484787504", + "path": ".EXECUTION_PRIORITY" + } + } + } + }, + { + "path": "config/KinematicsConfiguration.yaml", + "content": { + "type": "MAP_VALUE", + "value": { + "leg": { + "type": "MAP_VALUE", + "value": { + "foot_centre_to_ankle_centre": { + "value": 0.011, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "foot_centre_to_ankle_centre", + "uid": "-893837652", + "path": ".leg.foot_centre_to_ankle_centre" + }, + "hip_offset": { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": 0, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "762701629", + "path": ".leg.hip_offset[0]" + }, + { + "value": 0.037, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "762701660", + "path": ".leg.hip_offset[1]" + }, + { + "value": 0.034, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "762701691", + "path": ".leg.hip_offset[2]" + } + ], + "name": "hip_offset", + "uid": "818622635", + "path": ".leg.hip_offset" + }, + "left_to_right": { + "type": "MAP_VALUE", + "value": { + "hip_pitch": { + "value": { + "low": 1, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "name": "hip_pitch", + "uid": "-962978230", + "path": ".leg.left_to_right.hip_pitch" + }, + "hip_yaw": { + "value": { + "low": -1, + "high": -1, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "name": "hip_yaw", + "uid": "-581998599", + "path": ".leg.left_to_right.hip_yaw" + }, + "knee": { + "value": { + "low": 1, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "name": "knee", + "uid": "512021833", + "path": ".leg.left_to_right.knee" + }, + "ankle_roll": { + "value": { + "low": -1, + "high": -1, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "name": "ankle_roll", + "uid": "-654972053", + "path": ".leg.left_to_right.ankle_roll" + }, + "hip_roll": { + "value": { + "low": -1, + "high": -1, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "name": "hip_roll", + "uid": "-862282701", + "path": ".leg.left_to_right.hip_roll" + }, + "ankle_pitch": { + "value": { + "low": 1, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "name": "ankle_pitch", + "uid": "1168684562", + "path": ".leg.left_to_right.ankle_pitch" + } + }, + "name": "left_to_right", + "uid": "646302248", + "path": ".leg.left_to_right" + }, + "heel_length": { + "value": 0.0451, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "heel_length", + "uid": "-1162040135", + "path": ".leg.heel_length" + }, + "foot": { + "type": "MAP_VALUE", + "value": { + "width": { + "value": 0.066, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "width", + "uid": "1121602990", + "path": ".leg.foot.width" + }, + "toe_length": { + "value": 0.0472, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "toe_length", + "uid": "-1110712173", + "path": ".leg.foot.toe_length" + }, + "length": { + "value": 0.094, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "length", + "uid": "91625470", + "path": ".leg.foot.length" + }, + "height": { + "value": 0.0335, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "height", + "uid": "-23040449", + "path": ".leg.foot.height" + } + }, + "name": "foot", + "uid": "-352064554", + "path": ".leg.foot" + }, + "length_between_legs": { + "value": 0.074, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "length_between_legs", + "uid": "163064397", + "path": ".leg.length_between_legs" + }, + "lower_leg_length": { + "value": 0.093, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "lower_leg_length", + "uid": "-323240547", + "path": ".leg.lower_leg_length" + }, + "upper_leg_length": { + "value": 0.093, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "upper_leg_length", + "uid": "128414044", + "path": ".leg.upper_leg_length" + } + }, + "name": "leg", + "uid": "-88089210", + "path": ".leg" + }, + "mass_model": { + "type": "MAP_VALUE", + "value": { + "mass_representation_dimension": { + "value": { + "low": 4, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "name": "mass_representation_dimension", + "uid": "-868047081", + "path": ".mass_model.mass_representation_dimension" + }, + "masses": { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.011264, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1203557014", + "path": ".mass_model.masses[0][0]" + }, + { + "value": 0.0109774, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1203556983", + "path": ".mass_model.masses[0][1]" + }, + { + "value": -0.00139357, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1203556952", + "path": ".mass_model.masses[0][2]" + }, + { + "value": 0.025913, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1203556921", + "path": ".mass_model.masses[0][3]" + } + ], + "uid": "-815898210", + "path": ".mass_model.masses[0]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.011264, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1202633493", + "path": ".mass_model.masses[1][0]" + }, + { + "value": -0.0109774, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1202633462", + "path": ".mass_model.masses[1][1]" + }, + { + "value": -0.00139357, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1202633431", + "path": ".mass_model.masses[1][2]" + }, + { + "value": 0.025913, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1202633400", + "path": ".mass_model.masses[1][3]" + } + ], + "uid": "-815898179", + "path": ".mass_model.masses[1]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.025261, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1201709972", + "path": ".mass_model.masses[2][0]" + }, + { + "value": -0.000659787, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1201709941", + "path": ".mass_model.masses[2][1]" + }, + { + "value": 0.000734065, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1201709910", + "path": ".mass_model.masses[2][2]" + }, + { + "value": 0.168377, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1201709879", + "path": ".mass_model.masses[2][3]" + } + ], + "uid": "-815898148", + "path": ".mass_model.masses[2]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.025261, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1200786451", + "path": ".mass_model.masses[3][0]" + }, + { + "value": 0.000659787, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1200786420", + "path": ".mass_model.masses[3][1]" + }, + { + "value": 0.000734065, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1200786389", + "path": ".mass_model.masses[3][2]" + }, + { + "value": 0.168377, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1200786358", + "path": ".mass_model.masses[3][3]" + } + ], + "uid": "-815898117", + "path": ".mass_model.masses[3]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.0841618, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1199862930", + "path": ".mass_model.masses[4][0]" + }, + { + "value": -0.00666564, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1199862899", + "path": ".mass_model.masses[4][1]" + }, + { + "value": -0.0134901, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1199862868", + "path": ".mass_model.masses[4][2]" + }, + { + "value": 0.0592885, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1199862837", + "path": ".mass_model.masses[4][3]" + } + ], + "uid": "-815898086", + "path": ".mass_model.masses[4]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.0841618, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1198939409", + "path": ".mass_model.masses[5][0]" + }, + { + "value": 0.00666564, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1198939378", + "path": ".mass_model.masses[5][1]" + }, + { + "value": -0.0134901, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1198939347", + "path": ".mass_model.masses[5][2]" + }, + { + "value": 0.0592885, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1198939316", + "path": ".mass_model.masses[5][3]" + } + ], + "uid": "-815898055", + "path": ".mass_model.masses[5]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.0155628, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1198015888", + "path": ".mass_model.masses[6][0]" + }, + { + "value": { + "low": 0, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "uid": "-1198015857", + "path": ".mass_model.masses[6][1]" + }, + { + "value": 0.000480135, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1198015826", + "path": ".mass_model.masses[6][2]" + }, + { + "value": 0.0270692, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1198015795", + "path": ".mass_model.masses[6][3]" + } + ], + "uid": "-815898024", + "path": ".mass_model.masses[6]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.0155628, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1197092367", + "path": ".mass_model.masses[7][0]" + }, + { + "value": { + "low": 0, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "uid": "-1197092336", + "path": ".mass_model.masses[7][1]" + }, + { + "value": 0.000480135, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1197092305", + "path": ".mass_model.masses[7][2]" + }, + { + "value": 0.0270692, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1197092274", + "path": ".mass_model.masses[7][3]" + } + ], + "uid": "-815897993", + "path": ".mass_model.masses[7]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": 0.0138731, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1196168846", + "path": ".mass_model.masses[8][0]" + }, + { + "value": -0.0000799828, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1196168815", + "path": ".mass_model.masses[8][1]" + }, + { + "value": -0.0182424, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1196168784", + "path": ".mass_model.masses[8][2]" + }, + { + "value": 0.167108, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1196168753", + "path": ".mass_model.masses[8][3]" + } + ], + "uid": "-815897962", + "path": ".mass_model.masses[8]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": 0.0138731, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1195245325", + "path": ".mass_model.masses[9][0]" + }, + { + "value": 0.0000799828, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1195245294", + "path": ".mass_model.masses[9][1]" + }, + { + "value": -0.0182424, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1195245263", + "path": ".mass_model.masses[9][2]" + }, + { + "value": 0.167108, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1195245232", + "path": ".mass_model.masses[9][3]" + } + ], + "uid": "-815897931", + "path": ".mass_model.masses[9]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.0300345, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "1331608539", + "path": ".mass_model.masses[10][0]" + }, + { + "value": 0.000322635, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "1331608570", + "path": ".mass_model.masses[10][1]" + }, + { + "value": 0.000691906, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "1331608601", + "path": ".mass_model.masses[10][2]" + }, + { + "value": 0.119043, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "1331608632", + "path": ".mass_model.masses[10][3]" + } + ], + "uid": "476958925", + "path": ".mass_model.masses[10]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.0300345, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "1332532060", + "path": ".mass_model.masses[11][0]" + }, + { + "value": -0.000322635, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "1332532091", + "path": ".mass_model.masses[11][1]" + }, + { + "value": 0.000691906, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "1332532122", + "path": ".mass_model.masses[11][2]" + }, + { + "value": 0.119043, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "1332532153", + "path": ".mass_model.masses[11][3]" + } + ], + "uid": "476958956", + "path": ".mass_model.masses[11]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.0539545, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "1333455581", + "path": ".mass_model.masses[12][0]" + }, + { + "value": 0.000592469, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "1333455612", + "path": ".mass_model.masses[12][1]" + }, + { + "value": 0.00654763, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "1333455643", + "path": ".mass_model.masses[12][2]" + }, + { + "value": 0.0703098, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "1333455674", + "path": ".mass_model.masses[12][3]" + } + ], + "uid": "476958987", + "path": ".mass_model.masses[12]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.0539545, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "1334379102", + "path": ".mass_model.masses[13][0]" + }, + { + "value": -0.000592469, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "1334379133", + "path": ".mass_model.masses[13][1]" + }, + { + "value": 0.00654763, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "1334379164", + "path": ".mass_model.masses[13][2]" + }, + { + "value": 0.0703098, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "1334379195", + "path": ".mass_model.masses[13][3]" + } + ], + "uid": "476959018", + "path": ".mass_model.masses[13]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.0138731, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "1335302623", + "path": ".mass_model.masses[14][0]" + }, + { + "value": 0.000213732, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "1335302654", + "path": ".mass_model.masses[14][1]" + }, + { + "value": -0.0185361, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "1335302685", + "path": ".mass_model.masses[14][2]" + }, + { + "value": 0.167108, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "1335302716", + "path": ".mass_model.masses[14][3]" + } + ], + "uid": "476959049", + "path": ".mass_model.masses[14]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.0138731, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "1336226144", + "path": ".mass_model.masses[15][0]" + }, + { + "value": -0.000213732, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "1336226175", + "path": ".mass_model.masses[15][1]" + }, + { + "value": -0.0185361, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "1336226206", + "path": ".mass_model.masses[15][2]" + }, + { + "value": 0.167108, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "1336226237", + "path": ".mass_model.masses[15][3]" + } + ], + "uid": "476959080", + "path": ".mass_model.masses[15]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": 0.0259953, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "1337149665", + "path": ".mass_model.masses[16][0]" + }, + { + "value": -0.00950588, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "1337149696", + "path": ".mass_model.masses[16][1]" + }, + { + "value": -0.000502877, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "1337149727", + "path": ".mass_model.masses[16][2]" + }, + { + "value": 0.0794462, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "1337149758", + "path": ".mass_model.masses[16][3]" + } + ], + "uid": "476959111", + "path": ".mass_model.masses[16]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": 0.0259953, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "1338073186", + "path": ".mass_model.masses[17][0]" + }, + { + "value": 0.00950588, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "1338073217", + "path": ".mass_model.masses[17][1]" + }, + { + "value": -0.000502877, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "1338073248", + "path": ".mass_model.masses[17][2]" + }, + { + "value": 0.0794462, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "1338073279", + "path": ".mass_model.masses[17][3]" + } + ], + "uid": "476959142", + "path": ".mass_model.masses[17]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.0165676, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "1338996707", + "path": ".mass_model.masses[18][0]" + }, + { + "value": 0.00142428, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "1338996738", + "path": ".mass_model.masses[18][1]" + }, + { + "value": 0.000712811, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "1338996769", + "path": ".mass_model.masses[18][2]" + }, + { + "value": 0.0243577, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "1338996800", + "path": ".mass_model.masses[18][3]" + } + ], + "uid": "476959173", + "path": ".mass_model.masses[18]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.035, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "1339920228", + "path": ".mass_model.masses[19][0]" + }, + { + "value": { + "low": 0, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "uid": "1339920259", + "path": ".mass_model.masses[19][1]" + }, + { + "value": 0.01, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "1339920290", + "path": ".mass_model.masses[19][2]" + }, + { + "value": 0.11708, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "1339920321", + "path": ".mass_model.masses[19][3]" + } + ], + "uid": "476959204", + "path": ".mass_model.masses[19]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.0066631, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "1360237690", + "path": ".mass_model.masses[20][0]" + }, + { + "value": -0.00311589, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "1360237721", + "path": ".mass_model.masses[20][1]" + }, + { + "value": 0.0705563, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "1360237752", + "path": ".mass_model.masses[20][2]" + }, + { + "value": 0.975599, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "1360237783", + "path": ".mass_model.masses[20][3]" + } + ], + "uid": "476959886", + "path": ".mass_model.masses[20]" + } + ], + "name": "masses", + "uid": "57063914", + "path": ".mass_model.masses" + }, + "number_of_masses": { + "value": { + "low": 21, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "name": "number_of_masses", + "uid": "-1079226916", + "path": ".mass_model.number_of_masses" + } + }, + "name": "mass_model", + "uid": "-243414106", + "path": ".mass_model" + }, + "team_darwin_chest_to_origin": { + "value": 0.096, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "team_darwin_chest_to_origin", + "uid": "-1229970130", + "path": ".team_darwin_chest_to_origin" + }, + "arm": { + "type": "MAP_VALUE", + "value": { + "distance_between_shoulders": { + "value": 0.114, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "distance_between_shoulders", + "uid": "2134063596", + "path": ".arm.distance_between_shoulders" + }, + "lower_arm": { + "type": "MAP_VALUE", + "value": { + "offset": { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": { + "low": 0, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "uid": "1286669675", + "path": ".arm.lower_arm.offset[0]" + }, + { + "value": { + "low": 0, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "uid": "1286669706", + "path": ".arm.lower_arm.offset[1]" + } + ], + "name": "offset", + "uid": "1653240125", + "path": ".arm.lower_arm.offset" + }, + "length": { + "value": 0.13, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "length", + "uid": "1566656400", + "path": ".arm.lower_arm.length" + } + }, + "name": "lower_arm", + "uid": "-1639236476", + "path": ".arm.lower_arm" + }, + "shoulder": { + "type": "MAP_VALUE", + "value": { + "width": { + "value": 0.0245, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "width", + "uid": "-80583854", + "path": ".arm.shoulder.width" + }, + "length": { + "value": 0, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "length", + "uid": "1478538970", + "path": ".arm.shoulder.length" + }, + "offset": { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": 0.01, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "405330401", + "path": ".arm.shoulder.offset[0]" + }, + { + "value": 0.088, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "405330432", + "path": ".arm.shoulder.offset[1]" + } + ], + "name": "offset", + "uid": "1565122695", + "path": ".arm.shoulder.offset" + }, + "height": { + "value": 0.017, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "height", + "uid": "1363873051", + "path": ".arm.shoulder.height" + } + }, + "name": "shoulder", + "uid": "1979059322", + "path": ".arm.shoulder" + }, + "upper_arm": { + "type": "MAP_VALUE", + "value": { + "offset": { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": { + "low": 0, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "uid": "396051788", + "path": ".arm.upper_arm.offset[0]" + }, + { + "value": 0.02, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "396051819", + "path": ".arm.upper_arm.offset[1]" + } + ], + "name": "offset", + "uid": "2104894716", + "path": ".arm.upper_arm.offset" + }, + "length": { + "value": 0.0615, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "length", + "uid": "2018310991", + "path": ".arm.upper_arm.length" + } + }, + "name": "upper_arm", + "uid": "-901205595", + "path": ".arm.upper_arm" + } + }, + "name": "arm", + "uid": "-88099372", + "path": ".arm" + }, + "head": { + "type": "MAP_VALUE", + "value": { + "camera_declination_angle_offset": { + "value": 0, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "camera_declination_angle_offset", + "uid": "959859564", + "path": ".head.camera_declination_angle_offset" + }, + "neck": { + "type": "MAP_VALUE", + "value": { + "length": { + "value": 0.042, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "length", + "uid": "2091310031", + "path": ".head.neck.length" + }, + "base_position_from_origin": { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": 0.013, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "982702878", + "path": ".head.neck.base_position_from_origin[0]" + }, + { + "value": { + "low": 0, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "uid": "982702909", + "path": ".head.neck.base_position_from_origin[1]" + }, + { + "value": 0.11, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "982702940", + "path": ".head.neck.base_position_from_origin[2]" + } + ], + "name": "base_position_from_origin", + "uid": "832614506", + "path": ".head.neck.base_position_from_origin" + } + }, + "name": "neck", + "uid": "1074946341", + "path": ".head.neck" + }, + "neck_to_camera": { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": 0.036, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1127759207", + "path": ".head.neck_to_camera[0]" + }, + { + "value": { + "low": 0, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "uid": "-1127759176", + "path": ".head.neck_to_camera[1]" + }, + { + "value": 0.028, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1127759145", + "path": ".head.neck_to_camera[2]" + } + ], + "name": "neck_to_camera", + "uid": "791311055", + "path": ".head.neck_to_camera" + }, + "limits": { + "type": "MAP_VALUE", + "value": { + "yaw": { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": "-pi * 2 / 3", + "tag": "?", + "type": "STRING_VALUE", + "uid": "794137481", + "path": ".head.limits.yaw[0]" + }, + { + "value": "pi * 2 / 3", + "tag": "?", + "type": "STRING_VALUE", + "uid": "794137512", + "path": ".head.limits.yaw[1]" + } + ], + "name": "yaw", + "uid": "640141279", + "path": ".head.limits.yaw" + }, + "pitch": { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": "-pi / 6", + "tag": "?", + "type": "STRING_VALUE", + "uid": "-1410219752", + "path": ".head.limits.pitch[0]" + }, + { + "value": "pi / 2 - pi / 8", + "tag": "?", + "type": "STRING_VALUE", + "uid": "-1410219721", + "path": ".head.limits.pitch[1]" + } + ], + "name": "pitch", + "uid": "987372720", + "path": ".head.limits.pitch" + } + }, + "name": "limits", + "uid": "-2116949154", + "path": ".head.limits" + } + }, + "name": "head", + "uid": "1564082536", + "path": ".head" + } + } + } + }, + { + "path": "config/NetworkConfiguration.yaml", + "content": { + "type": "MAP_VALUE", + "value": { + "port": { + "value": { + "low": 7447, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "name": "port", + "uid": "1753591855", + "path": ".port" + }, + "name": { + "value": "", + "tag": "!", + "type": "STRING_VALUE", + "name": "name", + "uid": "1753518649", + "path": ".name" + }, + "address": { + "value": "239.226.152.162", + "tag": "?", + "type": "STRING_VALUE", + "name": "address", + "uid": "812268934", + "path": ".address" + } + } + } + }, + { + "path": "config/NUbugger.yaml", + "content": { + "type": "MAP_VALUE", + "value": { + "reaction_handles": { + "type": "MAP_VALUE", + "value": { + "lookup_table_diff": { + "value": false, + "tag": "?", + "type": "BOOL_VALUE", + "name": "lookup_table_diff", + "uid": "1344669297", + "path": ".reaction_handles.lookup_table_diff" + }, + "overview": { + "value": true, + "tag": "?", + "type": "BOOL_VALUE", + "name": "overview", + "uid": "735164419", + "path": ".reaction_handles.overview" + }, + "draw_objects": { + "value": false, + "tag": "?", + "type": "BOOL_VALUE", + "name": "draw_objects", + "uid": "1256164003", + "path": ".reaction_handles.draw_objects" + }, + "reaction_handles": { + "value": false, + "tag": "?", + "type": "BOOL_VALUE", + "name": "reaction_handles", + "uid": "-564904001", + "path": ".reaction_handles.reaction_handles" + }, + "lookup_table": { + "value": false, + "tag": "?", + "type": "BOOL_VALUE", + "name": "lookup_table", + "uid": "1345993299", + "path": ".reaction_handles.lookup_table" + }, + "image": { + "value": false, + "tag": "?", + "type": "BOOL_VALUE", + "name": "image", + "uid": "-1754858735", + "path": ".reaction_handles.image" + }, + "reaction_statistics": { + "value": false, + "tag": "?", + "type": "BOOL_VALUE", + "name": "reaction_statistics", + "uid": "838829103", + "path": ".reaction_handles.reaction_statistics" + }, + "localisation": { + "value": false, + "tag": "?", + "type": "BOOL_VALUE", + "name": "localisation", + "uid": "436490186", + "path": ".reaction_handles.localisation" + }, + "vision_object": { + "value": false, + "tag": "?", + "type": "BOOL_VALUE", + "name": "vision_object", + "uid": "-215102676", + "path": ".reaction_handles.vision_object" + }, + "subsumption": { + "value": true, + "tag": "?", + "type": "BOOL_VALUE", + "name": "subsumption", + "uid": "656032655", + "path": ".reaction_handles.subsumption" + }, + "behaviour": { + "value": true, + "tag": "?", + "type": "BOOL_VALUE", + "name": "behaviour", + "uid": "1655185267", + "path": ".reaction_handles.behaviour" + }, + "configuration_state": { + "value": false, + "tag": "?", + "type": "BOOL_VALUE", + "name": "configuration_state", + "uid": "-994531522", + "path": ".reaction_handles.configuration_state" + }, + "ping": { + "value": false, + "tag": "?", + "type": "BOOL_VALUE", + "name": "ping", + "uid": "1606164732", + "path": ".reaction_handles.ping" + }, + "classified_image": { + "value": false, + "tag": "?", + "type": "BOOL_VALUE", + "name": "classified_image", + "uid": "408792249", + "path": ".reaction_handles.classified_image" + }, + "data_point": { + "value": true, + "tag": "?", + "type": "BOOL_VALUE", + "name": "data_point", + "uid": "1099829445", + "path": ".reaction_handles.data_point" + }, + "sensor_data": { + "value": true, + "tag": "?", + "type": "BOOL_VALUE", + "name": "sensor_data", + "uid": "-1612428731", + "path": ".reaction_handles.sensor_data" + }, + "command": { + "value": false, + "tag": "?", + "type": "BOOL_VALUE", + "name": "command", + "uid": "541367169", + "path": ".reaction_handles.command" + }, + "game_state": { + "value": false, + "tag": "?", + "type": "BOOL_VALUE", + "name": "game_state", + "uid": "453477902", + "path": ".reaction_handles.game_state" + } + }, + "name": "reaction_handles", + "uid": "-979824604", + "path": ".reaction_handles" + }, + "output": { + "type": "MAP_VALUE", + "value": { + "file": { + "type": "MAP_VALUE", + "value": { + "path": { + "value": "DataStream/", + "tag": "?", + "type": "STRING_VALUE", + "name": "path", + "uid": "1227556249", + "path": ".output.file.path" + }, + "enabled": { + "value": false, + "tag": "?", + "type": "BOOL_VALUE", + "name": "enabled", + "uid": "1958610253", + "path": ".output.file.enabled" + } + }, + "name": "file", + "uid": "-1726544902", + "path": ".output.file" + }, + "network": { + "type": "MAP_VALUE", + "value": { + "max_image_fps": { + "value": { + "low": 10, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "name": "max_image_fps", + "uid": "-786260884", + "path": ".output.network.max_image_fps" + }, + "max_classified_image_fps": { + "value": { + "low": 10, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "name": "max_classified_image_fps", + "uid": "358270482", + "path": ".output.network.max_classified_image_fps" + }, + "enabled": { + "value": true, + "tag": "?", + "type": "BOOL_VALUE", + "name": "enabled", + "uid": "468483651", + "path": ".output.network.enabled" + } + }, + "name": "network", + "uid": "-567225616", + "path": ".output.network" + } + }, + "name": "output", + "uid": "-1587210064", + "path": ".output" + } + } + } + }, + { + "path": "config/NusightConfigurationTest.yaml", + "content": { + "type": "MAP_VALUE", + "value": { + "PRIORITY": { + "value": { + "low": 90, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "name": "PRIORITY", + "uid": "-1316106264", + "path": ".PRIORITY" + }, + "FALLING_ANGLE": { + "value": 0.8, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "FALLING_ANGLE", + "uid": "1120531735", + "path": ".FALLING_ANGLE" + }, + "RECOVERY_ACCELERATION": { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": 9.5, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "1066019042", + "path": ".RECOVERY_ACCELERATION[0]" + }, + { + "value": 10.5, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "1066019073", + "path": ".RECOVERY_ACCELERATION[1]" + } + ], + "name": "RECOVERY_ACCELERATION", + "uid": "-1945249498", + "path": ".RECOVERY_ACCELERATION" + }, + "FALLING_ACCELERATION": { + "value": { + "low": 8, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "name": "FALLING_ACCELERATION", + "uid": "-230043748", + "path": ".FALLING_ACCELERATION" + } + } + } + }, + { + "path": "config/OldWalkEngine.yaml", + "content": { + "type": "MAP_VALUE", + "value": { + "walk_cycle": { + "type": "MAP_VALUE", + "value": { + "acceleration": { + "type": "MAP_VALUE", + "value": { + "turning_factor": { + "value": 0.6, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "turning_factor", + "uid": "727610199", + "path": ".walk_cycle.acceleration.turning_factor" + }, + "limits_high": { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": 0.08, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-430060403", + "path": ".walk_cycle.acceleration.limits_high[0]" + }, + { + "value": 0.05, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-430060372", + "path": ".walk_cycle.acceleration.limits_high[1]" + }, + { + "value": { + "low": 5, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "uid": "-430060341", + "path": ".walk_cycle.acceleration.limits_high[2]" + } + ], + "name": "limits_high", + "uid": "-841101989", + "path": ".walk_cycle.acceleration.limits_high" + }, + "limits": { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": 1.5, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1989705438", + "path": ".walk_cycle.acceleration.limits[0]" + }, + { + "value": 0.045, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1989705407", + "path": ".walk_cycle.acceleration.limits[1]" + }, + { + "value": { + "low": 5, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "uid": "-1989705376", + "path": ".walk_cycle.acceleration.limits[2]" + } + ], + "name": "limits", + "uid": "-643208986", + "path": ".walk_cycle.acceleration.limits" + } + }, + "name": "acceleration", + "uid": "-795267872", + "path": ".walk_cycle.acceleration" + }, + "balance": { + "type": "MAP_VALUE", + "value": { + "amplitude": { + "value": 1, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "amplitude", + "uid": "-761995375", + "path": ".walk_cycle.balance.amplitude" + }, + "gyro": { + "value": null, + "tag": "", + "type": "NULL_VALUE", + "name": "gyro", + "uid": "1089942241", + "path": ".walk_cycle.balance.gyro" + }, + "enabled": { + "value": false, + "tag": "?", + "type": "BOOL_VALUE", + "name": "enabled", + "uid": "-1589364273", + "path": ".walk_cycle.balance.enabled" + }, + "translation_gain": { + "type": "MAP_VALUE", + "value": { + "X": { + "type": "MAP_VALUE", + "value": { + "p": { + "value": 0, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "p", + "uid": "1953844075", + "path": ".walk_cycle.balance.translation_gain.X.p" + }, + "d": { + "value": 0, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "d", + "uid": "1953844063", + "path": ".walk_cycle.balance.translation_gain.X.d" + } + }, + "name": "X", + "uid": "-123106391", + "path": ".walk_cycle.balance.translation_gain.X" + }, + "Y": { + "type": "MAP_VALUE", + "value": { + "p": { + "value": { + "low": 0, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "name": "p", + "uid": "1953845036", + "path": ".walk_cycle.balance.translation_gain.Y.p" + }, + "d": { + "value": { + "low": 0, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "name": "d", + "uid": "1953845024", + "path": ".walk_cycle.balance.translation_gain.Y.d" + } + }, + "name": "Y", + "uid": "-123106390", + "path": ".walk_cycle.balance.translation_gain.Y" + }, + "Z": { + "type": "MAP_VALUE", + "value": { + "p": { + "value": 0.035, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "p", + "uid": "1953845997", + "path": ".walk_cycle.balance.translation_gain.Z.p" + }, + "d": { + "value": { + "low": 0, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "name": "d", + "uid": "1953845985", + "path": ".walk_cycle.balance.translation_gain.Z.d" + } + }, + "name": "Z", + "uid": "-123106389", + "path": ".walk_cycle.balance.translation_gain.Z" + } + }, + "name": "translation_gain", + "uid": "545122687", + "path": ".walk_cycle.balance.translation_gain" + }, + "angle_gain": { + "type": "MAP_VALUE", + "value": { + "d": { + "value": 0, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "d", + "uid": "-1972754221", + "path": ".walk_cycle.balance.angle_gain.d" + }, + "i": { + "value": 0, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "i", + "uid": "-1972754216", + "path": ".walk_cycle.balance.angle_gain.i" + }, + "p": { + "value": 0.1, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "p", + "uid": "-1972754209", + "path": ".walk_cycle.balance.angle_gain.p" + } + }, + "name": "angle_gain", + "uid": "1700738589", + "path": ".walk_cycle.balance.angle_gain" + }, + "hip_rotation_scale": { + "value": 2, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "hip_rotation_scale", + "uid": "-928244565", + "path": ".walk_cycle.balance.hip_rotation_scale" + }, + "ankle_rotation_scale": { + "value": 0.5, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "ankle_rotation_scale", + "uid": "482519779", + "path": ".walk_cycle.balance.ankle_rotation_scale" + }, + "offset": { + "value": "0 * pi / 180", + "tag": "?", + "type": "STRING_VALUE", + "name": "offset", + "uid": "-326390715", + "path": ".walk_cycle.balance.offset" + }, + "servo_gains": { + "value": null, + "tag": "", + "type": "NULL_VALUE", + "name": "servo_gains", + "uid": "-1497236548", + "path": ".walk_cycle.balance.servo_gains" + }, + "push_recovery": { + "type": "MAP_VALUE", + "value": { + "angle_gain": { + "type": "MAP_VALUE", + "value": { + "p": { + "value": 0.5, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "p", + "uid": "-2113794125", + "path": ".walk_cycle.balance.push_recovery.angle_gain.p" + }, + "i": { + "value": 0, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "i", + "uid": "-2113794132", + "path": ".walk_cycle.balance.push_recovery.angle_gain.i" + }, + "d": { + "value": 0, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "d", + "uid": "-2113794137", + "path": ".walk_cycle.balance.push_recovery.angle_gain.d" + } + }, + "name": "angle_gain", + "uid": "1101709809", + "path": ".walk_cycle.balance.push_recovery.angle_gain" + }, + "hip_rotation_scale": { + "value": 2, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "hip_rotation_scale", + "uid": "451449983", + "path": ".walk_cycle.balance.push_recovery.hip_rotation_scale" + }, + "balance_time": { + "value": { + "low": 800, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "name": "balance_time", + "uid": "-677927082", + "path": ".walk_cycle.balance.push_recovery.balance_time" + }, + "offset": { + "value": "0 * pi / 180", + "tag": "?", + "type": "STRING_VALUE", + "name": "offset", + "uid": "-763477479", + "path": ".walk_cycle.balance.push_recovery.offset" + }, + "ankle_rotation_scale": { + "value": 0.5, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "ankle_rotation_scale", + "uid": "-775914057", + "path": ".walk_cycle.balance.push_recovery.ankle_rotation_scale" + }, + "weight": { + "value": 0.7, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "weight", + "uid": "-535289858", + "path": ".walk_cycle.balance.push_recovery.weight" + }, + "amplitude": { + "value": 1, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "amplitude", + "uid": "327059773", + "path": ".walk_cycle.balance.push_recovery.amplitude" + }, + "enabled": { + "value": false, + "tag": "?", + "type": "BOOL_VALUE", + "name": "enabled", + "uid": "2040815227", + "path": ".walk_cycle.balance.push_recovery.enabled" + }, + "translation_gain": { + "type": "MAP_VALUE", + "value": { + "Z": { + "type": "MAP_VALUE", + "value": { + "d": { + "value": { + "low": 0, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "name": "d", + "uid": "695412149", + "path": ".walk_cycle.balance.push_recovery.translation_gain.Z.d" + }, + "p": { + "value": 0.035, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "p", + "uid": "695412161", + "path": ".walk_cycle.balance.push_recovery.translation_gain.Z.p" + } + }, + "name": "Z", + "uid": "1256588159", + "path": ".walk_cycle.balance.push_recovery.translation_gain.Z" + }, + "Y": { + "type": "MAP_VALUE", + "value": { + "d": { + "value": { + "low": 0, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "name": "d", + "uid": "695411188", + "path": ".walk_cycle.balance.push_recovery.translation_gain.Y.d" + }, + "p": { + "value": { + "low": 0, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "name": "p", + "uid": "695411200", + "path": ".walk_cycle.balance.push_recovery.translation_gain.Y.p" + } + }, + "name": "Y", + "uid": "1256588158", + "path": ".walk_cycle.balance.push_recovery.translation_gain.Y" + }, + "X": { + "type": "MAP_VALUE", + "value": { + "d": { + "value": 0, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "d", + "uid": "695410227", + "path": ".walk_cycle.balance.push_recovery.translation_gain.X.d" + }, + "p": { + "value": 0, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "p", + "uid": "695410239", + "path": ".walk_cycle.balance.push_recovery.translation_gain.X.p" + } + }, + "name": "X", + "uid": "1256588157", + "path": ".walk_cycle.balance.push_recovery.translation_gain.X" + } + }, + "name": "translation_gain", + "uid": "694044243", + "path": ".walk_cycle.balance.push_recovery.translation_gain" + } + }, + "name": "push_recovery", + "uid": "-234329304", + "path": ".walk_cycle.balance.push_recovery" + }, + "weight": { + "value": 0.7, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "weight", + "uid": "-98203094", + "path": ".walk_cycle.balance.weight" + } + }, + "name": "balance", + "uid": "1897060988", + "path": ".walk_cycle.balance" + }, + "zmp_time": { + "value": 0.31, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "zmp_time", + "uid": "-269912433", + "path": ".walk_cycle.zmp_time" + }, + "single_support_phase": { + "type": "MAP_VALUE", + "value": { + "start": { + "value": 0.1, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "start", + "uid": "-1267015768", + "path": ".walk_cycle.single_support_phase.start" + }, + "end": { + "value": 0.9, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "end", + "uid": "-273957471", + "path": ".walk_cycle.single_support_phase.end" + } + }, + "name": "single_support_phase", + "uid": "1557611956", + "path": ".walk_cycle.single_support_phase" + }, + "step": { + "type": "MAP_VALUE", + "value": { + "limits": { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.1, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1063274342", + "path": ".walk_cycle.step.limits[0][0]" + }, + { + "value": 0.15, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1063274311", + "path": ".walk_cycle.step.limits[0][1]" + } + ], + "uid": "-497998738", + "path": ".walk_cycle.step.limits[0]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": 0, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1062350821", + "path": ".walk_cycle.step.limits[1][0]" + }, + { + "value": 0.3, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-1062350790", + "path": ".walk_cycle.step.limits[1][1]" + } + ], + "uid": "-497998707", + "path": ".walk_cycle.step.limits[1]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": { + "low": 0, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "uid": "-1061427300", + "path": ".walk_cycle.step.limits[2][0]" + }, + { + "value": "15 * pi / 180", + "tag": "?", + "type": "STRING_VALUE", + "uid": "-1061427269", + "path": ".walk_cycle.step.limits[2][1]" + } + ], + "uid": "-497998676", + "path": ".walk_cycle.step.limits[2]" + } + ], + "name": "limits", + "uid": "-2112394982", + "path": ".walk_cycle.step.limits" + }, + "height_slow_fraction": { + "value": 0.5, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "height_slow_fraction", + "uid": "-534192406", + "path": ".walk_cycle.step.height_slow_fraction" + }, + "height_fast_fraction": { + "value": 1.5, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "height_fast_fraction", + "uid": "-443160849", + "path": ".walk_cycle.step.height_fast_fraction" + }, + "height": { + "value": 0.04, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "height", + "uid": "2064240169", + "path": ".walk_cycle.step.height" + } + }, + "name": "step", + "uid": "1154236204", + "path": ".walk_cycle.step" + }, + "step_time": { + "value": 0.3, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "step_time", + "uid": "-1400281088", + "path": ".walk_cycle.step_time" + }, + "velocity": { + "type": "MAP_VALUE", + "value": { + "limits": { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.027, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "768005673", + "path": ".walk_cycle.velocity.limits[0][0]" + }, + { + "value": 0.03, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "768005704", + "path": ".walk_cycle.velocity.limits[0][1]" + } + ], + "uid": "467568959", + "path": ".walk_cycle.velocity.limits[0]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.01, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "768929194", + "path": ".walk_cycle.velocity.limits[1][0]" + }, + { + "value": 0.01, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "768929225", + "path": ".walk_cycle.velocity.limits[1][1]" + } + ], + "uid": "467568990", + "path": ".walk_cycle.velocity.limits[1]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.8, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "769852715", + "path": ".walk_cycle.velocity.limits[2][0]" + }, + { + "value": 0.8, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "769852746", + "path": ".walk_cycle.velocity.limits[2][1]" + } + ], + "uid": "467569021", + "path": ".walk_cycle.velocity.limits[2]" + } + ], + "name": "limits", + "uid": "-1408524823", + "path": ".walk_cycle.velocity.limits" + }, + "high_speed": { + "value": 0.06, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "high_speed", + "uid": "-959176517", + "path": ".walk_cycle.velocity.high_speed" + } + }, + "name": "velocity", + "uid": "-1556527811", + "path": ".walk_cycle.velocity" + }, + "hip_roll_compensation": { + "value": "4 * pi / 180", + "tag": "?", + "type": "STRING_VALUE", + "name": "hip_roll_compensation", + "uid": "-1077007412", + "path": ".walk_cycle.hip_roll_compensation" + } + }, + "name": "walk_cycle", + "uid": "-2001221234", + "path": ".walk_cycle" + }, + "stance": { + "type": "MAP_VALUE", + "value": { + "body_height": { + "value": 0.265, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "body_height", + "uid": "1790032196", + "path": ".stance.body_height" + }, + "limit_margin_y": { + "value": 0.015, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "limit_margin_y", + "uid": "-795100340", + "path": ".stance.limit_margin_y" + }, + "arms": { + "type": "MAP_VALUE", + "value": { + "right": { + "type": "MAP_VALUE", + "value": { + "end": { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": "135 * pi / 180", + "tag": "?", + "type": "STRING_VALUE", + "uid": "1087064822", + "path": ".stance.arms.right.end[0]" + }, + { + "value": "0 * pi / 180", + "tag": "?", + "type": "STRING_VALUE", + "uid": "1087064853", + "path": ".stance.arms.right.end[1]" + }, + { + "value": "-140 * pi / 180", + "tag": "?", + "type": "STRING_VALUE", + "uid": "1087064884", + "path": ".stance.arms.right.end[2]" + } + ], + "name": "end", + "uid": "302649234", + "path": ".stance.arms.right.end" + }, + "start": { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": "135 * pi / 180", + "tag": "?", + "type": "STRING_VALUE", + "uid": "589215695", + "path": ".stance.arms.right.start[0]" + }, + { + "value": "0 * pi / 180", + "tag": "?", + "type": "STRING_VALUE", + "uid": "589215726", + "path": ".stance.arms.right.start[1]" + }, + { + "value": "-140 * pi / 180", + "tag": "?", + "type": "STRING_VALUE", + "uid": "589215757", + "path": ".stance.arms.right.start[2]" + } + ], + "name": "start", + "uid": "-1198753447", + "path": ".stance.arms.right.start" + } + }, + "name": "right", + "uid": "1304836133", + "path": ".stance.arms.right" + }, + "left": { + "type": "MAP_VALUE", + "value": { + "end": { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": "135 * pi / 180", + "tag": "?", + "type": "STRING_VALUE", + "uid": "-1695765475", + "path": ".stance.arms.left.end[0]" + }, + { + "value": "0 * pi / 180", + "tag": "?", + "type": "STRING_VALUE", + "uid": "-1695765444", + "path": ".stance.arms.left.end[1]" + }, + { + "value": "-140 * pi / 180", + "tag": "?", + "type": "STRING_VALUE", + "uid": "-1695765413", + "path": ".stance.arms.left.end[2]" + } + ], + "name": "end", + "uid": "1777702859", + "path": ".stance.arms.left.end" + }, + "start": { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": "135 * pi / 180", + "tag": "?", + "type": "STRING_VALUE", + "uid": "2053925686", + "path": ".stance.arms.left.start[0]" + }, + { + "value": "0 * pi / 180", + "tag": "?", + "type": "STRING_VALUE", + "uid": "2053925717", + "path": ".stance.arms.left.start[1]" + }, + { + "value": "-140 * pi / 180", + "tag": "?", + "type": "STRING_VALUE", + "uid": "2053925748", + "path": ".stance.arms.left.start[2]" + } + ], + "name": "start", + "uid": "-1011427502", + "path": ".stance.arms.left.start" + } + }, + "name": "left", + "uid": "-1482111778", + "path": ".stance.arms.left" + } + }, + "name": "arms", + "uid": "129347255", + "path": ".stance.arms" + }, + "gains": { + "type": "MAP_VALUE", + "value": { + "legs": { + "value": { + "low": 30, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "name": "legs", + "uid": "-118415841", + "path": ".stance.gains.legs" + }, + "arms": { + "value": { + "low": 30, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "name": "arms", + "uid": "-118730863", + "path": ".stance.gains.arms" + } + }, + "name": "gains", + "uid": "-280171596", + "path": ".stance.gains" + }, + "foot_offset": { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.025, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-18410268", + "path": ".stance.foot_offset[0]" + }, + { + "value": 0, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-18410237", + "path": ".stance.foot_offset[1]" + } + ], + "name": "foot_offset", + "uid": "567164004", + "path": ".stance.foot_offset" + }, + "body_tilt": { + "value": "25 * pi / 180", + "tag": "?", + "type": "STRING_VALUE", + "name": "body_tilt", + "uid": "891608602", + "path": ".stance.body_tilt" + } + }, + "name": "stance", + "uid": "-1056822066", + "path": ".stance" + }, + "emit_localisation": { + "value": true, + "tag": "?", + "type": "BOOL_VALUE", + "name": "emit_localisation", + "uid": "694795982", + "path": ".emit_localisation" + }, + "STAND_SCRIPT_DURATION": { + "value": { + "low": 1, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "name": "STAND_SCRIPT_DURATION", + "uid": "-686707039", + "path": ".STAND_SCRIPT_DURATION" + } + } + } + }, + { + "path": "config/TorsoMotionPlanner.yaml", + "content": { + "value": null, + "tag": "", + "type": "NULL_VALUE" + } + }, + { + "path": "config/WalkEngine.yaml", + "content": { + "value": null, + "tag": "", + "type": "NULL_VALUE" + } + }, + { + "path": "config/WalkEngine2.yaml", + "content": { + "type": "MAP_VALUE", + "value": { + "walk_cycle": { + "type": "MAP_VALUE", + "value": { + "acceleration": { + "type": "MAP_VALUE", + "value": { + "turning_factor": { + "value": 0.6, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "turning_factor", + "uid": "1234982786", + "path": ".walk_cycle.acceleration.turning_factor" + }, + "limits_high": { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": 0.08, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "77312184", + "path": ".walk_cycle.acceleration.limits_high[0]" + }, + { + "value": 0.05, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "77312215", + "path": ".walk_cycle.acceleration.limits_high[1]" + }, + { + "value": { + "low": 5, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "uid": "77312246", + "path": ".walk_cycle.acceleration.limits_high[2]" + } + ], + "name": "limits_high", + "uid": "534728976", + "path": ".walk_cycle.acceleration.limits_high" + }, + "limits": { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": 1.5, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-638554601", + "path": ".walk_cycle.acceleration.limits[0]" + }, + { + "value": 0.045, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "-638554570", + "path": ".walk_cycle.acceleration.limits[1]" + }, + { + "value": { + "low": 5, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "uid": "-638554539", + "path": ".walk_cycle.acceleration.limits[2]" + } + ], + "name": "limits", + "uid": "-2028492783", + "path": ".walk_cycle.acceleration.limits" + } + }, + "name": "acceleration", + "uid": "-2120034283", + "path": ".walk_cycle.acceleration" + }, + "balance": { + "type": "MAP_VALUE", + "value": { + "amplitude": { + "value": 1, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "amplitude", + "uid": "-2041647748", + "path": ".walk_cycle.balance.amplitude" + }, + "gyro": { + "value": null, + "tag": "", + "type": "NULL_VALUE", + "name": "gyro", + "uid": "-234824170", + "path": ".walk_cycle.balance.gyro" + }, + "enabled": { + "value": false, + "tag": "?", + "type": "BOOL_VALUE", + "name": "enabled", + "uid": "-1251031430", + "path": ".walk_cycle.balance.enabled" + }, + "translation_gain": { + "type": "MAP_VALUE", + "value": { + "X": { + "type": "MAP_VALUE", + "value": { + "p": { + "value": 0, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "p", + "uid": "502525088", + "path": ".walk_cycle.balance.translation_gain.X.p" + }, + "d": { + "value": 0, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "d", + "uid": "502525076", + "path": ".walk_cycle.balance.translation_gain.X.d" + } + }, + "name": "X", + "uid": "-799476194", + "path": ".walk_cycle.balance.translation_gain.X" + }, + "Y": { + "type": "MAP_VALUE", + "value": { + "p": { + "value": { + "low": 0, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "name": "p", + "uid": "502526049", + "path": ".walk_cycle.balance.translation_gain.Y.p" + }, + "d": { + "value": { + "low": 0, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "name": "d", + "uid": "502526037", + "path": ".walk_cycle.balance.translation_gain.Y.d" + } + }, + "name": "Y", + "uid": "-799476193", + "path": ".walk_cycle.balance.translation_gain.Y" + }, + "Z": { + "type": "MAP_VALUE", + "value": { + "p": { + "value": 0.035, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "p", + "uid": "502527010", + "path": ".walk_cycle.balance.translation_gain.Z.p" + }, + "d": { + "value": { + "low": 0, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "name": "d", + "uid": "502526998", + "path": ".walk_cycle.balance.translation_gain.Z.d" + } + }, + "name": "Z", + "uid": "-799476192", + "path": ".walk_cycle.balance.translation_gain.Z" + } + }, + "name": "translation_gain", + "uid": "1920953652", + "path": ".walk_cycle.balance.translation_gain" + }, + "angle_gain": { + "type": "MAP_VALUE", + "value": { + "d": { + "value": 0, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "d", + "uid": "-1966878968", + "path": ".walk_cycle.balance.angle_gain.d" + }, + "i": { + "value": 0, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "i", + "uid": "-1966878963", + "path": ".walk_cycle.balance.angle_gain.i" + }, + "p": { + "value": 0.1, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "p", + "uid": "-1966878956", + "path": ".walk_cycle.balance.angle_gain.p" + } + }, + "name": "angle_gain", + "uid": "686220690", + "path": ".walk_cycle.balance.angle_gain" + }, + "hip_rotation_scale": { + "value": 2, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "hip_rotation_scale", + "uid": "-1604614368", + "path": ".walk_cycle.balance.hip_rotation_scale" + }, + "ankle_rotation_scale": { + "value": 0.5, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "ankle_rotation_scale", + "uid": "-968799208", + "path": ".walk_cycle.balance.ankle_rotation_scale" + }, + "offset": { + "value": "0 * pi / 180", + "tag": "?", + "type": "STRING_VALUE", + "name": "offset", + "uid": "-2116592070", + "path": ".walk_cycle.balance.offset" + }, + "servo_gains": { + "value": null, + "tag": "", + "type": "NULL_VALUE", + "name": "servo_gains", + "uid": "1412446951", + "path": ".walk_cycle.balance.servo_gains" + }, + "push_recovery": { + "type": "MAP_VALUE", + "value": { + "angle_gain": { + "type": "MAP_VALUE", + "value": { + "p": { + "value": 0.5, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "p", + "uid": "1408120104", + "path": ".walk_cycle.balance.push_recovery.angle_gain.p" + }, + "i": { + "value": 0, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "i", + "uid": "1408120097", + "path": ".walk_cycle.balance.push_recovery.angle_gain.i" + }, + "d": { + "value": 0, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "d", + "uid": "1408120092", + "path": ".walk_cycle.balance.push_recovery.angle_gain.d" + } + }, + "name": "angle_gain", + "uid": "-606355290", + "path": ".walk_cycle.balance.push_recovery.angle_gain" + }, + "hip_rotation_scale": { + "value": 2, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "hip_rotation_scale", + "uid": "1067322932", + "path": ".walk_cycle.balance.push_recovery.hip_rotation_scale" + }, + "balance_time": { + "value": { + "low": 800, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "name": "balance_time", + "uid": "-1450980149", + "path": ".walk_cycle.balance.push_recovery.balance_time" + }, + "offset": { + "value": "0 * pi / 180", + "tag": "?", + "type": "STRING_VALUE", + "name": "offset", + "uid": "2080170830", + "path": ".walk_cycle.balance.push_recovery.offset" + }, + "ankle_rotation_scale": { + "value": 0.5, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "ankle_rotation_scale", + "uid": "-1627496916", + "path": ".walk_cycle.balance.push_recovery.ankle_rotation_scale" + }, + "weight": { + "value": 0.7, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "weight", + "uid": "-1986608845", + "path": ".walk_cycle.balance.push_recovery.weight" + }, + "amplitude": { + "value": 1, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "amplitude", + "uid": "1518886888", + "path": ".walk_cycle.balance.push_recovery.amplitude" + }, + "enabled": { + "value": false, + "tag": "?", + "type": "BOOL_VALUE", + "name": "enabled", + "uid": "-400410", + "path": ".walk_cycle.balance.push_recovery.enabled" + }, + "translation_gain": { + "type": "MAP_VALUE", + "value": { + "Z": { + "type": "MAP_VALUE", + "value": { + "d": { + "value": { + "low": 0, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "name": "d", + "uid": "-156170710", + "path": ".walk_cycle.balance.push_recovery.translation_gain.Z.d" + }, + "p": { + "value": 0.035, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "p", + "uid": "-156170698", + "path": ".walk_cycle.balance.push_recovery.translation_gain.Z.p" + } + }, + "name": "Z", + "uid": "1872461108", + "path": ".walk_cycle.balance.push_recovery.translation_gain.Z" + }, + "Y": { + "type": "MAP_VALUE", + "value": { + "d": { + "value": { + "low": 0, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "name": "d", + "uid": "-156171671", + "path": ".walk_cycle.balance.push_recovery.translation_gain.Y.d" + }, + "p": { + "value": { + "low": 0, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "name": "p", + "uid": "-156171659", + "path": ".walk_cycle.balance.push_recovery.translation_gain.Y.p" + } + }, + "name": "Y", + "uid": "1872461107", + "path": ".walk_cycle.balance.push_recovery.translation_gain.Y" + }, + "X": { + "type": "MAP_VALUE", + "value": { + "d": { + "value": 0, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "d", + "uid": "-156172632", + "path": ".walk_cycle.balance.push_recovery.translation_gain.X.d" + }, + "p": { + "value": 0, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "p", + "uid": "-156172620", + "path": ".walk_cycle.balance.push_recovery.translation_gain.X.p" + } + }, + "name": "X", + "uid": "1872461106", + "path": ".walk_cycle.balance.push_recovery.translation_gain.X" + } + }, + "name": "translation_gain", + "uid": "891332936", + "path": ".walk_cycle.balance.push_recovery.translation_gain" + } + }, + "name": "push_recovery", + "uid": "-52196461", + "path": ".walk_cycle.balance.push_recovery" + }, + "weight": { + "value": 0.7, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "weight", + "uid": "-1888404449", + "path": ".walk_cycle.balance.weight" + } + }, + "name": "balance", + "uid": "-304201177", + "path": ".walk_cycle.balance" + }, + "zmp_time": { + "value": 0.31, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "zmp_time", + "uid": "210437188", + "path": ".walk_cycle.zmp_time" + }, + "single_support_phase": { + "type": "MAP_VALUE", + "value": { + "start": { + "value": 0.1, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "start", + "uid": "-1943385571", + "path": ".walk_cycle.single_support_phase.start" + }, + "end": { + "value": 0.9, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "end", + "uid": "1101873494", + "path": ".walk_cycle.single_support_phase.end" + } + }, + "name": "single_support_phase", + "uid": "1563487209", + "path": ".walk_cycle.single_support_phase" + }, + "step": { + "type": "MAP_VALUE", + "value": { + "limits": { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.1, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "1952040581", + "path": ".walk_cycle.step.limits[0][0]" + }, + { + "value": 0.15, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "1952040612", + "path": ".walk_cycle.step.limits[0][1]" + } + ], + "uid": "2006767203", + "path": ".walk_cycle.step.limits[0]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": 0, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "1952964102", + "path": ".walk_cycle.step.limits[1][0]" + }, + { + "value": 0.3, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "1952964133", + "path": ".walk_cycle.step.limits[1][1]" + } + ], + "uid": "2006767234", + "path": ".walk_cycle.step.limits[1]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": { + "low": 0, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "uid": "1953887623", + "path": ".walk_cycle.step.limits[2][0]" + }, + { + "value": "15 * pi / 180", + "tag": "?", + "type": "STRING_VALUE", + "uid": "1953887654", + "path": ".walk_cycle.step.limits[2][1]" + } + ], + "uid": "2006767265", + "path": ".walk_cycle.step.limits[2]" + } + ], + "name": "limits", + "uid": "1447101253", + "path": ".walk_cycle.step.limits" + }, + "height_slow_fraction": { + "value": 0.5, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "height_slow_fraction", + "uid": "-833105451", + "path": ".walk_cycle.step.height_slow_fraction" + }, + "height_fast_fraction": { + "value": 1.5, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "height_fast_fraction", + "uid": "-742073894", + "path": ".walk_cycle.step.height_fast_fraction" + }, + "height": { + "value": 0.04, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "height", + "uid": "1328769108", + "path": ".walk_cycle.step.height" + } + }, + "name": "step", + "uid": "-1520767135", + "path": ".walk_cycle.step" + }, + "step_time": { + "value": 0.3, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "step_time", + "uid": "605655275", + "path": ".walk_cycle.step_time" + }, + "velocity": { + "type": "MAP_VALUE", + "value": { + "limits": { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.027, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "950138516", + "path": ".walk_cycle.velocity.limits[0][0]" + }, + { + "value": 0.03, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "950138547", + "path": ".walk_cycle.velocity.limits[0][1]" + } + ], + "uid": "-546948940", + "path": ".walk_cycle.velocity.limits[0]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.01, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "951062037", + "path": ".walk_cycle.velocity.limits[1][0]" + }, + { + "value": 0.01, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "951062068", + "path": ".walk_cycle.velocity.limits[1][1]" + } + ], + "uid": "-546948909", + "path": ".walk_cycle.velocity.limits[1]" + }, + { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.8, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "951985558", + "path": ".walk_cycle.velocity.limits[2][0]" + }, + { + "value": 0.8, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "951985589", + "path": ".walk_cycle.velocity.limits[2][1]" + } + ], + "uid": "-546948878", + "path": ".walk_cycle.velocity.limits[2]" + } + ], + "name": "limits", + "uid": "-1070191980", + "path": ".walk_cycle.velocity.limits" + }, + "high_speed": { + "value": 0.06, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "high_speed", + "uid": "1950506982", + "path": ".walk_cycle.velocity.high_speed" + } + }, + "name": "velocity", + "uid": "-1076178190", + "path": ".walk_cycle.velocity" + }, + "hip_roll_compensation": { + "value": "4 * pi / 180", + "tag": "?", + "type": "STRING_VALUE", + "name": "hip_roll_compensation", + "uid": "-894874569", + "path": ".walk_cycle.hip_roll_compensation" + } + }, + "name": "walk_cycle", + "uid": "-1104212935", + "path": ".walk_cycle" + }, + "stance": { + "type": "MAP_VALUE", + "value": { + "body_height": { + "value": 0.265, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "body_height", + "uid": "-411229969", + "path": ".stance.body_height" + }, + "limit_margin_y": { + "value": 0.015, + "tag": "?", + "type": "DOUBLE_VALUE", + "name": "limit_margin_y", + "uid": "1259384769", + "path": ".stance.limit_margin_y" + }, + "arms": { + "type": "MAP_VALUE", + "value": { + "right": { + "type": "MAP_VALUE", + "value": { + "end": { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": "135 * pi / 180", + "tag": "?", + "type": "STRING_VALUE", + "uid": "-1325988255", + "path": ".stance.arms.right.end[0]" + }, + { + "value": "0 * pi / 180", + "tag": "?", + "type": "STRING_VALUE", + "uid": "-1325988224", + "path": ".stance.arms.right.end[1]" + }, + { + "value": "-140 * pi / 180", + "tag": "?", + "type": "STRING_VALUE", + "uid": "-1325988193", + "path": ".stance.arms.right.end[2]" + } + ], + "name": "end", + "uid": "-1937832953", + "path": ".stance.arms.right.end" + }, + "start": { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": "135 * pi / 180", + "tag": "?", + "type": "STRING_VALUE", + "uid": "927548538", + "path": ".stance.arms.right.start[0]" + }, + { + "value": "0 * pi / 180", + "tag": "?", + "type": "STRING_VALUE", + "uid": "927548569", + "path": ".stance.arms.right.start[1]" + }, + { + "value": "-140 * pi / 180", + "tag": "?", + "type": "STRING_VALUE", + "uid": "927548600", + "path": ".stance.arms.right.start[2]" + } + ], + "name": "start", + "uid": "1771447438", + "path": ".stance.arms.right.start" + } + }, + "name": "right", + "uid": "-982929638", + "path": ".stance.arms.right" + }, + "left": { + "type": "MAP_VALUE", + "value": { + "end": { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": "135 * pi / 180", + "tag": "?", + "type": "STRING_VALUE", + "uid": "1274435410", + "path": ".stance.arms.left.end[0]" + }, + { + "value": "0 * pi / 180", + "tag": "?", + "type": "STRING_VALUE", + "uid": "1274435441", + "path": ".stance.arms.left.end[1]" + }, + { + "value": "-140 * pi / 180", + "tag": "?", + "type": "STRING_VALUE", + "uid": "1274435472", + "path": ".stance.arms.left.end[2]" + } + ], + "name": "end", + "uid": "-511328074", + "path": ".stance.arms.left.end" + }, + "start": { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": "135 * pi / 180", + "tag": "?", + "type": "STRING_VALUE", + "uid": "263724331", + "path": ".stance.arms.left.start[0]" + }, + { + "value": "0 * pi / 180", + "tag": "?", + "type": "STRING_VALUE", + "uid": "263724362", + "path": ".stance.arms.left.start[1]" + }, + { + "value": "-140 * pi / 180", + "tag": "?", + "type": "STRING_VALUE", + "uid": "263724393", + "path": ".stance.arms.left.start[2]" + } + ], + "name": "start", + "uid": "-1746898563", + "path": ".stance.arms.left.start" + } + }, + "name": "left", + "uid": "1492130633", + "path": ".stance.arms.left" + } + }, + "name": "arms", + "uid": "-2128166548", + "path": ".stance.arms" + }, + "gains": { + "type": "MAP_VALUE", + "value": { + "legs": { + "value": { + "low": 30, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "name": "legs", + "uid": "1888785684", + "path": ".stance.gains.legs" + }, + "arms": { + "value": { + "low": 30, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "name": "arms", + "uid": "1888470662", + "path": ".stance.gains.arms" + } + }, + "name": "gains", + "uid": "-1543622753", + "path": ".stance.gains" + }, + "foot_offset": { + "tag": "", + "type": "LIST_VALUE", + "value": [ + { + "value": -0.025, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "2036074841", + "path": ".stance.foot_offset[0]" + }, + { + "value": 0, + "tag": "?", + "type": "DOUBLE_VALUE", + "uid": "2036074872", + "path": ".stance.foot_offset[1]" + } + ], + "name": "foot_offset", + "uid": "-1634098161", + "path": ".stance.foot_offset" + }, + "body_tilt": { + "value": "25 * pi / 180", + "tag": "?", + "type": "STRING_VALUE", + "name": "body_tilt", + "uid": "-429116283", + "path": ".stance.body_tilt" + } + }, + "name": "stance", + "uid": "-1790739207", + "path": ".stance" + }, + "emit_localisation": { + "value": true, + "tag": "?", + "type": "BOOL_VALUE", + "name": "emit_localisation", + "uid": "-1592969789", + "path": ".emit_localisation" + }, + "STAND_SCRIPT_DURATION": { + "value": { + "low": 1, + "high": 0, + "unsigned": false + }, + "tag": "?", + "type": "INT_VALUE", + "name": "STAND_SCRIPT_DURATION", + "uid": "1367778070", + "path": ".STAND_SCRIPT_DURATION" + } + } + } + } +] diff --git a/src/client/components/configuration/tree/tree.tsx b/src/client/components/configuration/tree/tree.tsx index b1bb9091..5e5d44d1 100644 --- a/src/client/components/configuration/tree/tree.tsx +++ b/src/client/components/configuration/tree/tree.tsx @@ -1,24 +1,17 @@ import * as classnames from 'classnames' import { observer } from 'mobx-react' import * as React from 'react' +import { TreeNode } from '../model' import FileIcon from './file.svg' import FolderIconOpen from './folder-open.svg' import FolderIcon from './folder.svg' import * as style from './style.css' -export interface Node { - label: string - expanded: boolean - leaf: boolean - selected: boolean - children?: Node[] -} - export interface TreeProps { - data: Node + data: TreeNode level?: number - onClick(node: Node): void + onClick(node: TreeNode): void } @observer diff --git a/src/client/components/configuration/view.tsx b/src/client/components/configuration/view.tsx index 3ee60000..d18ac75b 100644 --- a/src/client/components/configuration/view.tsx +++ b/src/client/components/configuration/view.tsx @@ -1,10 +1,12 @@ +import { observer } from 'mobx-react' import * as React from 'react' import * as style from './style.css' import { ConfigurationController } from './controller' +import { Editor } from './editor/editor' import { ConfigurationModel } from './model' import { Panel } from './panel/panel' -import { Node, Tree } from './tree/tree' +import { Tree } from './tree/tree' import { View } from './view/view' interface ConfigurationViewProps { @@ -12,6 +14,7 @@ interface ConfigurationViewProps { model: ConfigurationModel } +@observer export class ConfigurationView extends React.Component { private model: ConfigurationModel private controller: ConfigurationController @@ -30,9 +33,12 @@ export class ConfigurationView extends React.Component
-
- Select a file to edit -
+ { this.model.selectedFile === null ? +
Select a file to edit
: + + + + }
) From 8ef925bd529d5a9e0fd4c2a88f4f1634ec79a63d Mon Sep 17 00:00:00 2001 From: Josephus Paye II Date: Fri, 30 Jun 2017 20:56:27 +1000 Subject: [PATCH 16/17] Make the basic editor work, fix styling --- .../components/configuration/controller.ts | 9 +++++-- .../configuration/editor/editor.css | 15 ++++++++++- .../configuration/editor/editor.tsx | 6 ++--- .../editor/fields/list_field.css | 15 +++-------- .../editor/fields/list_field.tsx | 25 ++++++++++++++----- .../configuration/editor/fields/map_field.css | 1 - .../configuration/editor/fields/map_field.tsx | 5 ++-- .../editor/fields/scalar_field.css | 6 ----- .../editor/fields/scalar_field.tsx | 7 +++--- .../editor/values/bool_value.tsx | 10 ++++++-- .../editor/values/number_value.tsx | 10 ++++++-- .../editor/values/string_value.tsx | 10 ++++++-- .../components/configuration/panel/panel.tsx | 2 +- .../components/configuration/tree/tree.tsx | 2 +- src/client/components/configuration/view.tsx | 2 +- .../components/configuration/view/view.tsx | 2 +- src/client/components/navigation/view.tsx | 1 + src/client/index.tsx | 10 ++++++++ 18 files changed, 93 insertions(+), 45 deletions(-) diff --git a/src/client/components/configuration/controller.ts b/src/client/components/configuration/controller.ts index a1983f72..b6acce5b 100644 --- a/src/client/components/configuration/controller.ts +++ b/src/client/components/configuration/controller.ts @@ -1,6 +1,7 @@ import { action, observable } from 'mobx' import { ConfigurationModel } from './model' import { TreeNode } from './model' +import { ConfigurationField } from './editor/editor' export class ConfigurationController { private model: ConfigurationModel @@ -38,7 +39,11 @@ export class ConfigurationController { } @action - public onEditorChange = () => { - // console.log('Editor field changed') + public onEditorChange = (field: ConfigurationField, newValue: any, e: any) => { + field.value = newValue + + // TODO (Paye): + // If in live (auto save) mode, send new value of field to robot, else + // save it in the list of changes and send in all changes when the user clicks "Save" } } diff --git a/src/client/components/configuration/editor/editor.css b/src/client/components/configuration/editor/editor.css index 0965c82a..5c1be5db 100644 --- a/src/client/components/configuration/editor/editor.css +++ b/src/client/components/configuration/editor/editor.css @@ -1,8 +1,21 @@ .editor { - padding-top: 18px; + padding: 18px 0; } .editor, .editor * { font-family: monospace; } + +.editorLine { + margin-bottom: 4px; + min-height: 24px; + display: flex; + align-items: center; + /*border-bottom: 1px solid #EEE;*/ +} + +.editorLine__nestedList { + margin-bottom: 0; + /*border-bottom: 0;*/ +} diff --git a/src/client/components/configuration/editor/editor.tsx b/src/client/components/configuration/editor/editor.tsx index 9dd58e19..7ed3885c 100644 --- a/src/client/components/configuration/editor/editor.tsx +++ b/src/client/components/configuration/editor/editor.tsx @@ -22,16 +22,16 @@ export interface ConfigurationFile { export interface FieldProps { data: ConfigurationField, - onChange?(data: any): void + onChange?(field: ConfigurationField, newValue: any, e: any): void } export interface EditorProps { data: ConfigurationFile, - onChange?(data: any): void + onChange?(field: ConfigurationField, newValue: any, e: any): void } @observer -export class Editor extends React.Component { +export class Editor extends React.Component { public render(): JSX.Element { const field = this.props.data.content return ( diff --git a/src/client/components/configuration/editor/fields/list_field.css b/src/client/components/configuration/editor/fields/list_field.css index e504696b..d9bdfc5d 100644 --- a/src/client/components/configuration/editor/fields/list_field.css +++ b/src/client/components/configuration/editor/fields/list_field.css @@ -1,11 +1,12 @@ .listField { padding: 0; list-style: none; + margin: 0; + width: 100%; } .listField__header { color: #63a35c; - margin-bottom: 8px; cursor: default; } @@ -18,18 +19,10 @@ padding-left: 22px; } -.listField__subFields li { - margin-bottom: 8px; - display: flex; -} - -.listField__subFields li:last-child { - margin-bottom: 0; -} - -.listField__subFields li::before { +.listField__subFields .listField__subField::before { display: inline-block; content: '-'; margin-right: 8px; color: rgba(0,0,0,0.5); + align-self: flex-start; } diff --git a/src/client/components/configuration/editor/fields/list_field.tsx b/src/client/components/configuration/editor/fields/list_field.tsx index 2f6b5299..d40a99b4 100644 --- a/src/client/components/configuration/editor/fields/list_field.tsx +++ b/src/client/components/configuration/editor/fields/list_field.tsx @@ -1,6 +1,8 @@ import { observer } from 'mobx-react' import * as React from 'react' import * as style from './list_field.css' +import * as editorStyle from '../editor.css' +import * as classnames from 'classnames' import { ConfigurationField, FieldProps } from '../editor' import { MapField } from './map_field' @@ -8,12 +10,12 @@ import { NumberValue } from '../values/number_value' import { StringValue } from '../values/string_value' @observer -export class ListField extends React.Component { +export class ListField extends React.Component { public render(): JSX.Element { return (
    { this.props.data.name && -
    { this.props.data.name }
    +
    { this.props.data.name }
    }
    @@ -21,13 +23,24 @@ export class ListField extends React.Component { switch (field.type) { case 'INT_VALUE': case 'DOUBLE_VALUE': - return
  • + return
  • + +
  • case 'STRING_VALUE': - return
  • + return
  • + +
  • case 'MAP_VALUE': - return
  • + return
  • + +
  • case 'LIST_VALUE': - return
  • + const classes = classnames( + style.listField__subField, editorStyle.editorLine, editorStyle.editorLine__nestedList + ) + return
  • + +
  • default: // do nothing } diff --git a/src/client/components/configuration/editor/fields/map_field.css b/src/client/components/configuration/editor/fields/map_field.css index 934dfd45..cb647316 100644 --- a/src/client/components/configuration/editor/fields/map_field.css +++ b/src/client/components/configuration/editor/fields/map_field.css @@ -4,7 +4,6 @@ .mapField__header { color: #63a35c; - margin-bottom: 8px; cursor: default; } diff --git a/src/client/components/configuration/editor/fields/map_field.tsx b/src/client/components/configuration/editor/fields/map_field.tsx index 054cd62a..9837983d 100644 --- a/src/client/components/configuration/editor/fields/map_field.tsx +++ b/src/client/components/configuration/editor/fields/map_field.tsx @@ -1,18 +1,19 @@ import { observer } from 'mobx-react' import * as React from 'react' import * as style from './map_field.css' +import * as editorStyle from '../editor.css' import { ConfigurationField, FieldProps } from '../editor' import { ListField } from './list_field' import { ScalarField } from './scalar_field' @observer -export class MapField extends React.Component { +export class MapField extends React.Component { public render(): JSX.Element { return (
    { this.props.data.name && -
    { this.props.data.name }
    +
    { this.props.data.name }
    }
    diff --git a/src/client/components/configuration/editor/fields/scalar_field.css b/src/client/components/configuration/editor/fields/scalar_field.css index 3801b14b..f5e82951 100644 --- a/src/client/components/configuration/editor/fields/scalar_field.css +++ b/src/client/components/configuration/editor/fields/scalar_field.css @@ -1,11 +1,5 @@ .scalarField { - display: flex; - margin-bottom: 10px; - align-items: center; -} -.scalarField:last-child { - margin-bottom: 0; } .scalarField__label { diff --git a/src/client/components/configuration/editor/fields/scalar_field.tsx b/src/client/components/configuration/editor/fields/scalar_field.tsx index 75ccc071..78b5a9d2 100644 --- a/src/client/components/configuration/editor/fields/scalar_field.tsx +++ b/src/client/components/configuration/editor/fields/scalar_field.tsx @@ -1,6 +1,7 @@ import { observer } from 'mobx-react' import * as React from 'react' import * as style from './scalar_field.css' +import * as editorStyle from '../editor.css' import { BoolValue } from '../values/bool_value' import { FieldProps } from '../editor' @@ -8,12 +9,12 @@ import { NumberValue } from '../values/number_value' import { StringValue } from '../values/string_value' @observer -export class ScalarField extends React.Component { +export class ScalarField extends React.Component { public render(): JSX.Element { const field = this.props.data return ( -
) diff --git a/src/client/index.tsx b/src/client/index.tsx index 2097ace7..26f37497 100644 --- a/src/client/index.tsx +++ b/src/client/index.tsx @@ -8,6 +8,10 @@ import { Switch } from 'react-router-dom' import { AppView } from './components/app/view' import { Chart } from './components/chart/view' import { Classifier } from './components/classifier/view' +import { ConfigurationController } from './components/configuration/controller' +import { ConfigurationModel } from './components/configuration/model' +import { configurationData } from './components/configuration/data' +import { ConfigurationView } from './components/configuration/view' import { Dashboard } from './components/dashboard/view' import { GameState } from './components/game_state/view' import { LocalisationController } from './components/localisation/controller' @@ -75,6 +79,12 @@ ReactDOM.render( + { + // TODO (Paye): Use the network/simulator for the model data + const configurationModel = ConfigurationModel.of({ files: configurationData }) + const configurationController = ConfigurationController.of({ model: configurationModel }) + return + }}/> , From fc526174ffd91574bcdb80eef7db428cbf883e5c Mon Sep 17 00:00:00 2001 From: Josephus Paye II Date: Wed, 26 Jul 2017 10:26:32 +0900 Subject: [PATCH 17/17] . --- .../components/configuration/controller.ts | 27 +++- src/client/components/configuration/data.ts | 13 +- .../configuration/editor/editor.tsx | 15 +-- .../editor/fields/list_field.tsx | 3 +- .../configuration/editor/fields/map_field.tsx | 3 +- src/client/components/configuration/model.ts | 28 +++- src/client/components/configuration/style.css | 6 + .../components/configuration/tree/style.css | 20 ++- .../components/configuration/tree/tree.tsx | 5 +- src/client/components/configuration/view.tsx | 26 +++- src/client/components/select/dropdown.svg | 3 + src/client/components/select/style.css | 103 ++++++++++++++ src/client/components/select/view.tsx | 127 ++++++++++++++++++ .../support/nubugger/Configuration.proto | 56 ++++++++ yarn.lock | 8 +- 15 files changed, 408 insertions(+), 35 deletions(-) create mode 100644 src/client/components/select/dropdown.svg create mode 100644 src/client/components/select/style.css create mode 100644 src/client/components/select/view.tsx create mode 100644 src/shared/proto/message/support/nubugger/Configuration.proto diff --git a/src/client/components/configuration/controller.ts b/src/client/components/configuration/controller.ts index b6acce5b..5f672674 100644 --- a/src/client/components/configuration/controller.ts +++ b/src/client/components/configuration/controller.ts @@ -1,19 +1,26 @@ import { action, observable } from 'mobx' import { ConfigurationModel } from './model' import { TreeNode } from './model' -import { ConfigurationField } from './editor/editor' +import { ConfigurationField } from './model' export class ConfigurationController { private model: ConfigurationModel constructor(opts: { model: ConfigurationModel }) { Object.assign(this, opts) + + console.log(this.model) } public static of(opts: { model: ConfigurationModel }) { return new ConfigurationController(opts) } + @action + public updateSaveOnChange = (saveOnChange: boolean): void => { + this.model.saveOnChange = saveOnChange + } + @action public onNodeClick = (node: TreeNode): void => { if (node.leaf) { @@ -27,9 +34,15 @@ export class ConfigurationController { public selectNode = (node: TreeNode) => { if (this.model.selectedFile) { this.model.selectedFile.selected = false + + if (!this.model.selectedFile.status.changed) { + this.model.selectedFile.status.lastRevision = null + } } node.selected = true + node.status.lastRevision = JSON.stringify(node.data) + this.model.selectedFile = node } @@ -42,6 +55,18 @@ export class ConfigurationController { public onEditorChange = (field: ConfigurationField, newValue: any, e: any) => { field.value = newValue + if (this.model.selectedFile !== null) { + this.model.selectedFile.status.changed = true + + const selectedFilePath = this.model.selectedFile.data!.path + + if (!this.model.changedFields[selectedFilePath]) { + this.model.changedFields[selectedFilePath] = {} + } + + this.model.changedFields[selectedFilePath][field.path!] = field + } + // TODO (Paye): // If in live (auto save) mode, send new value of field to robot, else // save it in the list of changes and send in all changes when the user clicks "Save" diff --git a/src/client/components/configuration/data.ts b/src/client/components/configuration/data.ts index 0f391b0c..3d26f794 100644 --- a/src/client/components/configuration/data.ts +++ b/src/client/components/configuration/data.ts @@ -14,6 +14,10 @@ export function createTreeFromFiles(files: any): TreeNode { leaf: false, selected: false, children: [], + status: { + changed: false, + lastRevision: null + } } // A map of file paths to tree nodes @@ -52,17 +56,24 @@ export function createTreeNode(pathSegments: string[], parentPath: string, file: } // Create the new node - const node = { + const node: TreeNode = { label, expanded: false, leaf: !isFolder, selected: false, data: isFolder ? undefined : file, children: [], + status: { + changed: false, + lastRevision: null + } } // Add the new node to the tree pathNodeMap[parentPath].children.push(node) + // pathNodeMap[parentPath].children.sort((a: TreeNode, b: TreeNode) => { + // return (a.leaf === b.leaf ? a.label.toLowerCase() > b.label.toLowerCase() : a.leaf > b.leaf) + // }) // Add the new node to the path map pathNodeMap[currentPath] = node diff --git a/src/client/components/configuration/editor/editor.tsx b/src/client/components/configuration/editor/editor.tsx index 7ed3885c..c8f60536 100644 --- a/src/client/components/configuration/editor/editor.tsx +++ b/src/client/components/configuration/editor/editor.tsx @@ -5,20 +5,7 @@ import * as style from './editor.css' import { ListField } from './fields/list_field' import { MapField } from './fields/map_field' import { ScalarField } from './fields/scalar_field' - -export interface ConfigurationField { - type: string - value: any - tag?: string - name?: string - uid?: string - path?: string -} - -export interface ConfigurationFile { - path: string, - content: ConfigurationField -} +import { ConfigurationField, ConfigurationFile } from '../model' export interface FieldProps { data: ConfigurationField, diff --git a/src/client/components/configuration/editor/fields/list_field.tsx b/src/client/components/configuration/editor/fields/list_field.tsx index d40a99b4..6c0debeb 100644 --- a/src/client/components/configuration/editor/fields/list_field.tsx +++ b/src/client/components/configuration/editor/fields/list_field.tsx @@ -4,7 +4,8 @@ import * as style from './list_field.css' import * as editorStyle from '../editor.css' import * as classnames from 'classnames' -import { ConfigurationField, FieldProps } from '../editor' +import { ConfigurationField } from '../../model' +import { FieldProps } from '../editor' import { MapField } from './map_field' import { NumberValue } from '../values/number_value' import { StringValue } from '../values/string_value' diff --git a/src/client/components/configuration/editor/fields/map_field.tsx b/src/client/components/configuration/editor/fields/map_field.tsx index 9837983d..1cdf2081 100644 --- a/src/client/components/configuration/editor/fields/map_field.tsx +++ b/src/client/components/configuration/editor/fields/map_field.tsx @@ -3,7 +3,8 @@ import * as React from 'react' import * as style from './map_field.css' import * as editorStyle from '../editor.css' -import { ConfigurationField, FieldProps } from '../editor' +import { ConfigurationField } from '../../model' +import { FieldProps } from '../editor' import { ListField } from './list_field' import { ScalarField } from './scalar_field' diff --git a/src/client/components/configuration/model.ts b/src/client/components/configuration/model.ts index 9cdf0f02..076b1619 100644 --- a/src/client/components/configuration/model.ts +++ b/src/client/components/configuration/model.ts @@ -1,11 +1,31 @@ import { action, observable } from 'mobx' +export interface ConfigurationField { + type: string + value: any + tag?: string + name?: string + uid?: string + path?: string +} + +export interface ConfigurationFile { + path: string, + content: ConfigurationField +} + +interface FileStatus { + changed: boolean + lastRevision?: string | null +} + export interface TreeNode { label: string expanded: boolean leaf: boolean selected: boolean - data?: any + data?: ConfigurationFile + status: FileStatus children?: TreeNode[] } @@ -16,6 +36,12 @@ export class ConfigurationModel { @observable public selectedFile: TreeNode | null = null + @observable + public changedFields: any = {} + + @observable + public saveOnChange: boolean = false + constructor(opts: { files: TreeNode }) { Object.assign(this, opts) } diff --git a/src/client/components/configuration/style.css b/src/client/components/configuration/style.css index 89dfd204..fb226fc3 100644 --- a/src/client/components/configuration/style.css +++ b/src/client/components/configuration/style.css @@ -19,3 +19,9 @@ padding-top: 32px; text-align: center; } + +.configuration__saveCheckboxLabel { + display: inline-flex; + align-items: center; + margin-right: 12px; +} diff --git a/src/client/components/configuration/tree/style.css b/src/client/components/configuration/tree/style.css index 8ee65e9d..0b3d6d14 100644 --- a/src/client/components/configuration/tree/style.css +++ b/src/client/components/configuration/tree/style.css @@ -15,11 +15,6 @@ user-select: none; } -.treenode__header:hover { - background-color: #EEE; - color: #1197d3; -} - .treenode__icon { margin-right: 4px; } @@ -34,6 +29,16 @@ flex-grow: 1; } +.treenode--changed .treenode__header { + background-color: #FFF9C4; + color: #4d4d4d; +} + +.treenode__header:hover { + background-color: #EEE; + color: #1197d3; +} + .treenode--selected .treenode__header { color: white; background-color: #1197d3; @@ -42,3 +47,8 @@ .treenode--selected .treenode__header svg { fill: rgba(255, 255, 255, 0.75); } + +.treenode--changed.treenode--selected .treenode__header { + color: white; + background-color: #1197d3; +} diff --git a/src/client/components/configuration/tree/tree.tsx b/src/client/components/configuration/tree/tree.tsx index f338eb9d..da4e9624 100644 --- a/src/client/components/configuration/tree/tree.tsx +++ b/src/client/components/configuration/tree/tree.tsx @@ -23,11 +23,14 @@ export class Tree extends React.Component { const classes = classnames( style.treenode, { [style['treenode--selected']]: this.props.data.selected }, + { [style['treenode--changed']]: this.props.data.status.changed }, ) // We're using inline paddingLeft to indent so that the hover and selected background indicators // are full width. Padding is the default 8px plus each level's indent of 22px. - const headerInlineStyle = { paddingLeft: 8 + (level * 22) + 'px' } + const headerInlineStyle = { + paddingLeft: 8 + (level * 22) + 'px' + } return (
    diff --git a/src/client/components/configuration/view.tsx b/src/client/components/configuration/view.tsx index f4884957..67c6473c 100644 --- a/src/client/components/configuration/view.tsx +++ b/src/client/components/configuration/view.tsx @@ -25,9 +25,29 @@ export class ConfigurationView extends React.Component { this.controller = this.props.controller } + public onSaveOnChangeChange = (e: any) => { + this.controller.updateSaveOnChange(e.target.checked) + } + public render(): JSX.Element { + const ConfigurationMenu =
    + + + { !this.model.saveOnChange && + + } +
    + return ( - + @@ -35,8 +55,8 @@ export class ConfigurationView extends React.Component {
    { this.model.selectedFile === null ?
    Select a file to edit
    : - - + + }
    diff --git a/src/client/components/select/dropdown.svg b/src/client/components/select/dropdown.svg new file mode 100644 index 00000000..70bfe6e9 --- /dev/null +++ b/src/client/components/select/dropdown.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/client/components/select/style.css b/src/client/components/select/style.css new file mode 100644 index 00000000..8ded6e70 --- /dev/null +++ b/src/client/components/select/style.css @@ -0,0 +1,103 @@ +.select { + display: flex; + align-items: center; + user-select: none; + cursor: default; +} + +.selectDisabled { + opacity: 0.75; +} + +.selectLabel { + padding-left: 4px; + margin-right: 8px; +} + +.selectContainer { + position: relative; +} + +.selectInput { + display: flex; + border-width: 1px; + border-style: solid; + border-color: #DDD; + padding: 3px 3px 3px 6px; + align-items: center; + border-radius: 2px; + font-size: 13px; + transition: border-color 0.2s; + min-width: 80px; +} + +.select:not(.selectDisabled) .selectInput:hover { + border-color: #BBB; + cursor: pointer; +} + +.selectFocused .selectInput { + border-color: #57A3F3!important; /* Override specificity of :not() + :hover selectors above */ + box-shadow: 0 0 0 2px rgba(45, 140, 240, 0.2); +} + +.selectPlaceholder { + color: rgba(0, 0, 0, 0.5); + flex-grow: 1; +} + +.selectValue { + flex-grow: 1; +} + +.selectDropdownIcon { + width: 18px; + height: 18px; + margin-left: 4px; + fill: #999; +} + +.selectOpen .selectDropdownIcon { + transform: rotate(180deg); +} + +.selectDropdown { + display: none; + position: absolute; + max-height: 200px; + overflow: auto; + margin-top: 4px; + padding: 4px 0; + background-color: #FFF; + border-radius: 2px; + box-shadow: 0px 1px 5px 0px rgba(0, 0, 0, 0.35); + width: 100%; + min-width: 100px; + z-index: 1; +} + +.selectOpen .selectDropdown { + display: block; +} + +.selectDropdownList { + padding: 0; + margin: 0; + list-style: none; + width: 100%; +} + +.selectDropdownItem { + padding: 4px 10px; + font-size: 13px; + cursor: pointer; +} + +.selectDropdownItem:hover { + background-color: #EEE; +} + +.selectDropdownItemSelected { + background: rgba(45, 140, 240, 0.9)!important; /* Override specificity of :hover selector above */ + color: #FFF; +} diff --git a/src/client/components/select/view.tsx b/src/client/components/select/view.tsx new file mode 100644 index 00000000..3842962a --- /dev/null +++ b/src/client/components/select/view.tsx @@ -0,0 +1,127 @@ +import * as classNames from 'classnames' +import * as React from 'react' +import * as style from './style.css' +import DropdownIcon from './dropdown.svg' + +export interface SelectOption { + label: string + value: string + data?: any +} + +export interface SelectProps { + options: SelectOption[] + label?: string + placeholder?: string + disabled?: boolean + onChange: (selectedOption: SelectOption) => void +} + +interface SelectState { + open: boolean + focused: boolean + selectedLabel: null | string + selectedValue: null | string +} + +export class Select extends React.Component { + public state: SelectState + public props: SelectProps + public selectContainer: HTMLDivElement + + public constructor(props: SelectProps, context: any) { + super(props, context) + + this.state = { + open: false, + focused: false, + selectedLabel: null, + selectedValue: null, + } + + this.toggleDropdown = this.toggleDropdown.bind(this) + this.handleExternalClick = this.handleExternalClick.bind(this) + } + + public render(): JSX.Element { + const classes = classNames(style.select, { + [style.selectOpen]: this.state.open, + [style.selectFocused]: this.state.focused, + [style.selectDisabled]: Boolean(this.props.disabled) + }) + + return ( +
    + { this.props.label && +
    { this.props.label }
    + } + +
    {this.selectContainer = input}}> +
    + { this.state.selectedLabel === null + ?
    { this.props.placeholder || 'Select an option' }
    + :
    { this.state.selectedLabel }
    + } + +
    + +
    +
      + { + this.props.options.map((option, index) => { + const classes = classNames(style.selectDropdownItem, { + [style.selectDropdownItemSelected]: option.value === this.state.selectedValue + }) + + return
    • {this.selectOption(option)}}> + { option.label } +
    • + }) + } +
    +
    +
    +
    + ) + } + + public componentDidMount(): void | undefined { + document.addEventListener('click', this.handleExternalClick) + } + + public componentWillUnmount(): void | undefined { + document.removeEventListener('click', this.handleExternalClick) + } + + private handleExternalClick(event: MouseEvent): void { + if (this.selectContainer.contains(event.target as Node) || !this.state.focused) { + return + } + + this.setState({ + open: this.state.open ? false : this.state.open, + focused: false, + }) + } + + private toggleDropdown(event: any): void { + if (this.props.disabled) { + return + } + + this.setState({ + open: !this.state.open, + focused: true + }) + } + + private selectOption(option: SelectOption) { + this.setState({ + selectedLabel: option.label, + selectedValue: option.value, + open: false + }) + + this.props.onChange(option) + } +} diff --git a/src/shared/proto/message/support/nubugger/Configuration.proto b/src/shared/proto/message/support/nubugger/Configuration.proto new file mode 100644 index 00000000..c498d731 --- /dev/null +++ b/src/shared/proto/message/support/nubugger/Configuration.proto @@ -0,0 +1,56 @@ +/* +* This file is part of the NUbots Codebase. +* +* The NUbots Codebase is free software: you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* The NUbots Codebase is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with the NUbots Codebase. If not, see . +* +* Copyright 2014 NUbots +*/ + +syntax = "proto3"; + +package message.support.nubugger; + +message Configuration { + message Value { + enum Type { + NULL_VALUE = 0; + INT_VALUE = 1; + DOUBLE_VALUE = 2; + STRING_VALUE = 3; + BOOL_VALUE = 4; + MAP_VALUE = 5; + LIST_VALUE = 6; + } + + int64 int_value = 1; + double double_value = 2; + string string_value = 3; + bool bool_value = 4; + map map_value = 5; + repeated Value list_value = 6; + + Type type = 7; + string tag = 8; + string name = 9; + string uid = 10; + string path = 11; + } + + message File { + Value content = 1; + string path = 2; + } + + repeated File files = 1; +} diff --git a/yarn.lock b/yarn.lock index 7ca1a349..9e92e471 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6412,13 +6412,7 @@ supports-color@^3.1.0, supports-color@^3.1.1, supports-color@^3.1.2, supports-co dependencies: has-flag "^1.0.0" -supports-color@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.0.0.tgz#33a7c680aa512c9d03ef929cacbb974d203d2790" - dependencies: - has-flag "^2.0.0" - -supports-color@^4.1.0: +supports-color@^4.0.0, supports-color@^4.1.0: version "4.2.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.2.0.tgz#ad986dc7eb2315d009b4d77c8169c2231a684037" dependencies: