diff --git a/common.gradle b/common.gradle index 7086c162fd..3560fd1e63 100644 --- a/common.gradle +++ b/common.gradle @@ -136,8 +136,17 @@ subprojects { Files.list(dir) .filter { it.toString().endsWith('.class') } .findAny() - .ifPresent { packageSet.add(rootDir.relativize(dir).toString() - .replace(java.io.File.separatorChar, (char)'.') + '.*') } + .ifPresent { + // Using File.separator in the replace calls on windows does not seem to work and messes up the creation + // of the manifest files + if (rootDir.relativize(dir).toString().contains('\\')) { + packageSet.add(rootDir.relativize(dir).toString() + .replace('\\', '.') + '.*') + } else { + packageSet.add(rootDir.relativize(dir).toString() + .replace('/', '.') + '.*') + } + } } } diff --git a/lib-ogc/sensorml-core/src/main/java/net/opengis/sensorml/v20/AbstractProcess.java b/lib-ogc/sensorml-core/src/main/java/net/opengis/sensorml/v20/AbstractProcess.java index 134a240b9d..283d402b2c 100644 --- a/lib-ogc/sensorml-core/src/main/java/net/opengis/sensorml/v20/AbstractProcess.java +++ b/lib-ogc/sensorml-core/src/main/java/net/opengis/sensorml/v20/AbstractProcess.java @@ -38,10 +38,25 @@ public default String getType() // use definition or generate default type if (getDefinition() != null) return getDefinition(); - else if (this instanceof AbstractPhysicalProcess) - return SWEConstants.DEF_SYSTEM; - else - return SWEConstants.DEF_PROCESS; + return SWEConstants.DEF_SYSTEM; + } + + + public default String getAssetType() + { + // use "AssetType" classifier if available + for (var list: getClassificationList()) { + for (var classifier: list.getClassifierList()) { + if (SWEConstants.DEF_ASSET_TYPE.equals(classifier.getDefinition())) { + return classifier.getValue(); + } + } + } + + if (!(this instanceof AbstractPhysicalProcess)) + return SWEConstants.ASSET_TYPE_PROCESS; + + return null; } diff --git a/lib-ogc/sensorml-core/src/main/java/org/vast/sensorML/SMLBuilders.java b/lib-ogc/sensorml-core/src/main/java/org/vast/sensorML/SMLBuilders.java index 5f9a5d13e1..b9914cadef 100644 --- a/lib-ogc/sensorml-core/src/main/java/org/vast/sensorML/SMLBuilders.java +++ b/lib-ogc/sensorml-core/src/main/java/org/vast/sensorML/SMLBuilders.java @@ -35,6 +35,7 @@ import net.opengis.gml.v32.AbstractGeometry; import net.opengis.gml.v32.Point; import net.opengis.gml.v32.TimeIndeterminateValue; +import net.opengis.gml.v32.TimePeriod; import net.opengis.gml.v32.impl.ReferenceImpl; import net.opengis.sensorml.v20.AbstractPhysicalProcess; import net.opengis.sensorml.v20.AbstractProcess; @@ -195,6 +196,28 @@ public B addIdentifier(TermBuilder term) { return addIdentifier(term.build()); } + + /** + * Adds a custom classifier + * @param label Label of classifier (e.g. "Sensor Type") + * @param def Definition URI of classifier (link to online definition) + * @param value Classifier value + * @return This builder for chaining + */ + public B addClassifier(String label, String def, String codespace, String value) + { + Asserts.checkNotNull(label, "label"); + Asserts.checkNotNull(def, "definition"); + Asserts.checkNotNull(value, "value"); + + Term term = smlFac.newTerm(); + term.setDefinition(def); + term.setCodeSpace(codespace); + term.setLabel(label); + term.setValue(value); + + return addClassifier(term); + } /** * Adds a classifier to the default list (first one in document) @@ -223,6 +246,12 @@ public B addClassifier(TermBuilder term) return addClassifier(term.build()); } + public B validTimePeriod(TimePeriod tp) + { + instance.addValidTimeAsTimePeriod(tp); + return (B)this; + } + public B validTimePeriod(OffsetDateTime begin, OffsetDateTime end) { var beginPos = gmlFac.newTimePosition(); @@ -354,6 +383,12 @@ public B definition(String uri) return (B)this; } + public B assetType(String term) + { + this.addClassifier("Asset Type", "cs:AssetType", null, term); + return (B)this; + } + public B typeOf(String href) { instance.setTypeOf(new ReferenceImpl(href)); diff --git a/lib-ogc/swe-common-core/build.gradle b/lib-ogc/swe-common-core/build.gradle index ad406fd0ea..2ede6ecf67 100644 --- a/lib-ogc/swe-common-core/build.gradle +++ b/lib-ogc/swe-common-core/build.gradle @@ -2,8 +2,8 @@ group = 'org.vast.opengis' description = 'SWE Common Core' dependencies { - api 'ch.qos.logback:logback-classic:1.2.13' - api 'com.fasterxml.woodstox:woodstox-core:6.2.8' + api 'ch.qos.logback:logback-classic:1.5.13' + api 'com.fasterxml.woodstox:woodstox-core:6.4.0' api 'com.google.code.gson:gson:2.11.0' api 'com.google.guava:guava:32.1.3-jre' api 'net.sf.trove4j:core:3.1.0' diff --git a/lib-ogc/swe-common-core/src/main/java/org/vast/data/DataBlockList.java b/lib-ogc/swe-common-core/src/main/java/org/vast/data/DataBlockList.java index 3e3d3d3cc0..96d86fd99f 100644 --- a/lib-ogc/swe-common-core/src/main/java/org/vast/data/DataBlockList.java +++ b/lib-ogc/swe-common-core/src/main/java/org/vast/data/DataBlockList.java @@ -39,16 +39,15 @@ public class DataBlockList extends AbstractDataBlock private static final long serialVersionUID = -413032909256132305L; protected List blockList; // either ArrayList or LinkedList so it's serializable protected int blockAtomCount = -1; - protected boolean equalBlockSize; - transient protected int blockIndex; - transient protected int localIndex; + protected boolean equalBlockSize; transient ThreadLocal cachedIndex = new ThreadLocal<>(); static class CachedIndex { int lastIndex; // last requested index int cumulIndex; - int blockIndex; + int blockIndex; + int localIndex; } @@ -154,8 +153,8 @@ public DataType getDataType() @Override public DataType getDataType(int index) { - selectBlock(index); - return blockList.get(blockIndex).getDataType(); + var cachedIndex = selectBlock(index); + return blockList.get(cachedIndex.blockIndex).getDataType(); } @@ -190,30 +189,38 @@ public void updateAtomCount() } - protected final void selectBlock(int index) + protected final CachedIndex selectBlock(int index) { - int desiredIndex = index + startIndex; + int desiredIndex = index + startIndex; + // use thread local index so we can read concurrently from multiple threads + CachedIndex cachedIdx = cachedIndex.get(); + if (cachedIdx == null) { + cachedIdx = new CachedIndex(); + cachedIndex.set(cachedIdx); + } + if (equalBlockSize) { - blockIndex = desiredIndex / blockAtomCount; - localIndex = desiredIndex % blockAtomCount; + cachedIdx.blockIndex = desiredIndex / blockAtomCount; + cachedIdx.localIndex = desiredIndex % blockAtomCount; } else { - // use thread local cached index to speed up sequential scans - CachedIndex cachedIdx = cachedIndex.get(); - if (cachedIdx == null || index <= cachedIdx.lastIndex) - { - cachedIdx = new CachedIndex(); - cachedIndex.set(cachedIdx); + // speed up sequential scans by restarting from previous index + // but reset if desired index is going back down + if (index <= cachedIdx.lastIndex) { + cachedIdx.lastIndex = 0; + cachedIdx.cumulIndex = 0; + cachedIdx.blockIndex = 0; + cachedIdx.localIndex = 0; } int size = 0; int cumul = cachedIdx.cumulIndex; int i = cachedIdx.blockIndex; - while (desiredIndex >= cumul) + while (desiredIndex >= cumul) { size = blockList.get(i).getAtomCount(); cumul += size; @@ -222,14 +229,15 @@ protected final void selectBlock(int index) // actually use previous block because we went one block too far cumul -= size; - blockIndex = i - 1; - localIndex = desiredIndex - cumul; + cachedIdx.blockIndex = i - 1; + cachedIdx.localIndex = desiredIndex - cumul; // save indexing variables in cache for next call cachedIdx.lastIndex = index; cachedIdx.cumulIndex = cumul; - cachedIdx.blockIndex = blockIndex; - } + } + + return cachedIdx; } @@ -313,159 +321,159 @@ public String toString() @Override public boolean getBooleanValue(int index) { - selectBlock(index); - return blockList.get(blockIndex).getBooleanValue(localIndex); + var idx = selectBlock(index); + return blockList.get(idx.blockIndex).getBooleanValue(idx.localIndex); } @Override public byte getByteValue(int index) { - selectBlock(index); - return blockList.get(blockIndex).getByteValue(localIndex); + var idx = selectBlock(index); + return blockList.get(idx.blockIndex).getByteValue(idx.localIndex); } @Override public short getShortValue(int index) { - selectBlock(index); - return blockList.get(blockIndex).getShortValue(localIndex); + var idx = selectBlock(index); + return blockList.get(idx.blockIndex).getShortValue(idx.localIndex); } @Override public int getIntValue(int index) { - selectBlock(index); - return blockList.get(blockIndex).getIntValue(localIndex); + var idx = selectBlock(index); + return blockList.get(idx.blockIndex).getIntValue(idx.localIndex); } @Override public long getLongValue(int index) { - selectBlock(index); - return blockList.get(blockIndex).getLongValue(localIndex); + var idx = selectBlock(index); + return blockList.get(idx.blockIndex).getLongValue(idx.localIndex); } @Override public float getFloatValue(int index) { - selectBlock(index); - return blockList.get(blockIndex).getFloatValue(localIndex); + var idx = selectBlock(index); + return blockList.get(idx.blockIndex).getFloatValue(idx.localIndex); } @Override public double getDoubleValue(int index) { - selectBlock(index); - return blockList.get(blockIndex).getDoubleValue(localIndex); + var idx = selectBlock(index); + return blockList.get(idx.blockIndex).getDoubleValue(idx.localIndex); } @Override public String getStringValue(int index) { - selectBlock(index); - return blockList.get(blockIndex).getStringValue(localIndex); + var idx = selectBlock(index); + return blockList.get(idx.blockIndex).getStringValue(idx.localIndex); } @Override public Instant getTimeStamp(int index) { - selectBlock(index); - return blockList.get(blockIndex).getTimeStamp(localIndex); + var idx = selectBlock(index); + return blockList.get(idx.blockIndex).getTimeStamp(idx.localIndex); } @Override public OffsetDateTime getDateTime(int index) { - selectBlock(index); - return blockList.get(blockIndex).getDateTime(localIndex); + var idx = selectBlock(index); + return blockList.get(idx.blockIndex).getDateTime(idx.localIndex); } @Override public void setBooleanValue(int index, boolean value) { - selectBlock(index); - blockList.get(blockIndex).setBooleanValue(localIndex, value); + var idx = selectBlock(index); + blockList.get(idx.blockIndex).setBooleanValue(idx.localIndex, value); } @Override public void setByteValue(int index, byte value) { - selectBlock(index); - blockList.get(blockIndex).setByteValue(localIndex, value); + var idx = selectBlock(index); + blockList.get(idx.blockIndex).setByteValue(idx.localIndex, value); } @Override public void setShortValue(int index, short value) { - selectBlock(index); - blockList.get(blockIndex).setShortValue(localIndex, value); + var idx = selectBlock(index); + blockList.get(idx.blockIndex).setShortValue(idx.localIndex, value); } @Override public void setIntValue(int index, int value) { - selectBlock(index); - blockList.get(blockIndex).setIntValue(localIndex, value); + var idx = selectBlock(index); + blockList.get(idx.blockIndex).setIntValue(idx.localIndex, value); } @Override public void setLongValue(int index, long value) { - selectBlock(index); - blockList.get(blockIndex).setLongValue(localIndex, value); + var idx = selectBlock(index); + blockList.get(idx.blockIndex).setLongValue(idx.localIndex, value); } @Override public void setFloatValue(int index, float value) { - selectBlock(index); - blockList.get(blockIndex).setFloatValue(localIndex, value); + var idx = selectBlock(index); + blockList.get(idx.blockIndex).setFloatValue(idx.localIndex, value); } @Override public void setDoubleValue(int index, double value) { - selectBlock(index); - blockList.get(blockIndex).setDoubleValue(localIndex, value); + var idx = selectBlock(index); + blockList.get(idx.blockIndex).setDoubleValue(idx.localIndex, value); } @Override public void setStringValue(int index, String value) { - selectBlock(index); - blockList.get(blockIndex).setStringValue(localIndex, value); + var idx = selectBlock(index); + blockList.get(idx.blockIndex).setStringValue(idx.localIndex, value); } @Override public void setTimeStamp(int index, Instant value) { - selectBlock(index); - blockList.get(blockIndex).setTimeStamp(localIndex, value); + var idx = selectBlock(index); + blockList.get(idx.blockIndex).setTimeStamp(idx.localIndex, value); } @Override public void setDateTime(int index, OffsetDateTime value) { - selectBlock(index); - blockList.get(blockIndex).setDateTime(localIndex, value); + var idx = selectBlock(index); + blockList.get(idx.blockIndex).setDateTime(idx.localIndex, value); } } \ No newline at end of file diff --git a/lib-ogc/swe-common-core/src/main/java/org/vast/data/DataBlockMixed.java b/lib-ogc/swe-common-core/src/main/java/org/vast/data/DataBlockMixed.java index d8c33704fe..a720de6fe2 100644 --- a/lib-ogc/swe-common-core/src/main/java/org/vast/data/DataBlockMixed.java +++ b/lib-ogc/swe-common-core/src/main/java/org/vast/data/DataBlockMixed.java @@ -33,9 +33,15 @@ public class DataBlockMixed extends AbstractDataBlock { private static final long serialVersionUID = 4082289189930783352L; protected AbstractDataBlock[] blockArray; - protected int blockIndex; - protected int localIndex; - //protected int lastBlockIndex, lastIndex, lastCumulIndex; + transient ThreadLocal cachedIndex = new ThreadLocal<>(); + + static class CachedIndex + { + int lastIndex; // last requested index + int cumulIndex; + int blockIndex; + int localIndex; + } public DataBlockMixed() @@ -157,8 +163,8 @@ public DataType getDataType() @Override public DataType getDataType(int index) { - selectBlock(index); - return blockArray[blockIndex].getDataType(localIndex); + var idx = selectBlock(index); + return blockArray[idx.blockIndex].getDataType(idx.localIndex); } @@ -169,53 +175,45 @@ public void resize(int size) } - protected void selectBlock(int index) + protected CachedIndex selectBlock(int index) { - int i = 0; - int cumul = 0; - int size; - int desiredIndex = startIndex + index; + int desiredIndex = startIndex + index; + + // use thread local index so we can read concurrently from multiple threads + CachedIndex cachedIdx = cachedIndex.get(); + if (cachedIdx == null) { + cachedIdx = new CachedIndex(); + cachedIndex.set(cachedIdx); + } - do - { - size = blockArray[i].atomCount; - cumul += size; - i++; + // speed up sequential scans by restarting from previous index + // but reset if desired index is going back down + if (index <= cachedIdx.lastIndex) { + cachedIdx.lastIndex = 0; + cachedIdx.cumulIndex = 0; + cachedIdx.blockIndex = 0; + cachedIdx.localIndex = 0; } - while (desiredIndex >= cumul); + + int size = 0; + int cumul = cachedIdx.cumulIndex; + int i = cachedIdx.blockIndex; + + while (desiredIndex >= cumul) + { + size = blockArray[i].atomCount; + cumul += size; + i++; + } - blockIndex = i - 1; - localIndex = desiredIndex - (cumul - size); + // actually use previous block because we went one block too far + cumul -= size; + cachedIdx.blockIndex = i - 1; + cachedIdx.localIndex = desiredIndex - cumul; + cachedIdx.lastIndex = index; + cachedIdx.cumulIndex = cumul; -// int i, size, cumul; -// int desiredIndex = startIndex + index; -// -// if (index > lastIndex) -// { -// i = lastBlockIndex; -// cumul = lastCumulIndex; -// } -// else -// { -// i = 0; -// cumul = 0; -// } -// -// do -// { -// size = blockArray[i].atomCount; -// cumul += size; -// i++; -// } -// while (desiredIndex >= cumul); -// -// blockIndex = i - 1; -// lastCumulIndex = cumul - size; -// localIndex = desiredIndex - lastCumulIndex; -// -// lastIndex = index; -// lastBlockIndex = blockIndex; -// lastCumulIndex = cumul - size; + return cachedIdx; } @@ -229,10 +227,10 @@ public String toString() if (atomCount > 0) { - selectBlock(0); - int start = blockIndex; - selectBlock(getAtomCount() - 1); - int stop = blockIndex + 1; + var idx = selectBlock(0); + int start = idx.blockIndex; + idx = selectBlock(getAtomCount() - 1); + int stop = idx.blockIndex + 1; for (int i = start; i < stop; i++) { @@ -250,81 +248,81 @@ public String toString() @Override public boolean getBooleanValue(int index) { - selectBlock(index); - return blockArray[blockIndex].getBooleanValue(localIndex); + var idx = selectBlock(index); + return blockArray[idx.blockIndex].getBooleanValue(idx.localIndex); } @Override public byte getByteValue(int index) { - selectBlock(index); - return blockArray[blockIndex].getByteValue(localIndex); + var idx = selectBlock(index); + return blockArray[idx.blockIndex].getByteValue(idx.localIndex); } @Override public short getShortValue(int index) { - selectBlock(index); - return blockArray[blockIndex].getShortValue(localIndex); + var idx = selectBlock(index); + return blockArray[idx.blockIndex].getShortValue(idx.localIndex); } @Override public int getIntValue(int index) { - selectBlock(index); - return blockArray[blockIndex].getIntValue(localIndex); + var idx = selectBlock(index); + return blockArray[idx.blockIndex].getIntValue(idx.localIndex); } @Override public long getLongValue(int index) { - selectBlock(index); - return blockArray[blockIndex].getLongValue(localIndex); + var idx = selectBlock(index); + return blockArray[idx.blockIndex].getLongValue(idx.localIndex); } @Override public float getFloatValue(int index) { - selectBlock(index); - return blockArray[blockIndex].getFloatValue(localIndex); + var idx = selectBlock(index); + return blockArray[idx.blockIndex].getFloatValue(idx.localIndex); } @Override public double getDoubleValue(int index) { - selectBlock(index); + var idx = selectBlock(index); //System.out.println(blockIndex + " " + localIndex); - return blockArray[blockIndex].getDoubleValue(localIndex); + return blockArray[idx.blockIndex].getDoubleValue(idx.localIndex); } @Override public String getStringValue(int index) { - selectBlock(index); - return blockArray[blockIndex].getStringValue(localIndex); + var idx = selectBlock(index); + return blockArray[idx.blockIndex].getStringValue(idx.localIndex); } @Override public Instant getTimeStamp(int index) { - selectBlock(index); - return blockArray[blockIndex].getTimeStamp(localIndex); + var idx = selectBlock(index); + return blockArray[idx.blockIndex].getTimeStamp(idx.localIndex); } @Override public OffsetDateTime getDateTime(int index) { - selectBlock(index); - return blockArray[blockIndex].getDateTime(localIndex); + var idx = selectBlock(index); + return blockArray[idx.blockIndex].getDateTime(idx.localIndex); } @@ -344,79 +342,79 @@ public void setBlock(int blockIndex, AbstractDataBlock dataBlock) @Override public void setBooleanValue(int index, boolean value) { - selectBlock(index); - blockArray[blockIndex].setBooleanValue(localIndex, value); + var idx = selectBlock(index); + blockArray[idx.blockIndex].setBooleanValue(idx.localIndex, value); } @Override public void setByteValue(int index, byte value) { - selectBlock(index); - blockArray[blockIndex].setByteValue(localIndex, value); + var idx = selectBlock(index); + blockArray[idx.blockIndex].setByteValue(idx.localIndex, value); } @Override public void setShortValue(int index, short value) { - selectBlock(index); - blockArray[blockIndex].setShortValue(localIndex, value); + var idx = selectBlock(index); + blockArray[idx.blockIndex].setShortValue(idx.localIndex, value); } @Override public void setIntValue(int index, int value) { - selectBlock(index); - blockArray[blockIndex].setIntValue(localIndex, value); + var idx = selectBlock(index); + blockArray[idx.blockIndex].setIntValue(idx.localIndex, value); } @Override public void setLongValue(int index, long value) { - selectBlock(index); - blockArray[blockIndex].setLongValue(localIndex, value); + var idx = selectBlock(index); + blockArray[idx.blockIndex].setLongValue(idx.localIndex, value); } @Override public void setFloatValue(int index, float value) { - selectBlock(index); - blockArray[blockIndex].setFloatValue(localIndex, value); + var idx = selectBlock(index); + blockArray[idx.blockIndex].setFloatValue(idx.localIndex, value); } @Override public void setDoubleValue(int index, double value) { - selectBlock(index); - blockArray[blockIndex].setDoubleValue(localIndex, value); + var idx = selectBlock(index); + blockArray[idx.blockIndex].setDoubleValue(idx.localIndex, value); } @Override public void setStringValue(int index, String value) { - selectBlock(index); - blockArray[blockIndex].setStringValue(localIndex, value); + var idx = selectBlock(index); + blockArray[idx.blockIndex].setStringValue(idx.localIndex, value); } @Override public void setTimeStamp(int index, Instant value) { - selectBlock(index); - blockArray[blockIndex].setTimeStamp(localIndex, value); + var idx = selectBlock(index); + blockArray[idx.blockIndex].setTimeStamp(idx.localIndex, value); } @Override public void setDateTime(int index, OffsetDateTime value) { - selectBlock(index); - blockArray[blockIndex].setDateTime(localIndex, value); + var idx = selectBlock(index); + blockArray[idx.blockIndex].setDateTime(idx.localIndex, value); } } diff --git a/lib-ogc/swe-common-core/src/main/java/org/vast/data/DataBlockParallel.java b/lib-ogc/swe-common-core/src/main/java/org/vast/data/DataBlockParallel.java index 238bc601fb..46863d1ae2 100644 --- a/lib-ogc/swe-common-core/src/main/java/org/vast/data/DataBlockParallel.java +++ b/lib-ogc/swe-common-core/src/main/java/org/vast/data/DataBlockParallel.java @@ -32,8 +32,13 @@ public class DataBlockParallel extends AbstractDataBlock { private static final long serialVersionUID = 6492226220927792777L; protected AbstractDataBlock[] blockArray; - protected int blockIndex; - protected int localIndex; + transient ThreadLocal cachedIndex = new ThreadLocal<>(); + + static class CachedIndex + { + int blockIndex; + int localIndex; + } public DataBlockParallel() @@ -145,8 +150,8 @@ public DataType getDataType() @Override public DataType getDataType(int index) { - selectBlock(index); - return blockArray[blockIndex].getDataType(localIndex); + var idx = selectBlock(index); + return blockArray[idx.blockIndex].getDataType(idx.localIndex); } @@ -161,11 +166,22 @@ public void resize(int size) } - protected void selectBlock(int index) + protected CachedIndex selectBlock(int index) { - blockIndex = index % blockArray.length; - localIndex = startIndex + index / blockArray.length; + // use thread local index so we can read concurrently from multiple threads + CachedIndex cachedIdx = cachedIndex.get(); + if (cachedIdx == null) { + cachedIdx = new CachedIndex(); + cachedIndex.set(cachedIdx); + } + + var blockIndex = index % blockArray.length; + var localIndex = startIndex + index / blockArray.length; localIndex -= blockArray[blockIndex].startIndex; + + cachedIdx.blockIndex = blockIndex; + cachedIdx.localIndex = localIndex; + return cachedIdx; } @@ -176,17 +192,20 @@ public String toString() buffer.append("PARALLEL: "); buffer.append('['); - selectBlock(0); - int start = blockIndex; - selectBlock(getAtomCount() - 1); - int stop = blockIndex + 1; - - for (int i = start; i < stop; i++) - { - buffer.append(blockArray[i].toString()); - if (i < stop - 1) - buffer.append(','); - } + if (atomCount > 0) + { + var idx = selectBlock(0); + int start = idx.blockIndex; + idx = selectBlock(getAtomCount() - 1); + int stop = idx.blockIndex + 1; + + for (int i = start; i < stop; i++) + { + buffer.append(blockArray[i].toString()); + if (i < stop - 1) + buffer.append(','); + } + } buffer.append(']'); return buffer.toString(); @@ -196,160 +215,160 @@ public String toString() @Override public boolean getBooleanValue(int index) { - selectBlock(index); - return blockArray[blockIndex].getBooleanValue(localIndex); + var idx = selectBlock(index); + return blockArray[idx.blockIndex].getBooleanValue(idx.localIndex); } @Override public byte getByteValue(int index) { - selectBlock(index); - return blockArray[blockIndex].getByteValue(localIndex); + var idx = selectBlock(index); + return blockArray[idx.blockIndex].getByteValue(idx.localIndex); } @Override public short getShortValue(int index) { - selectBlock(index); - return blockArray[blockIndex].getShortValue(localIndex); + var idx = selectBlock(index); + return blockArray[idx.blockIndex].getShortValue(idx.localIndex); } @Override public int getIntValue(int index) { - selectBlock(index); - return blockArray[blockIndex].getIntValue(localIndex); + var idx = selectBlock(index); + return blockArray[idx.blockIndex].getIntValue(idx.localIndex); } @Override public long getLongValue(int index) { - selectBlock(index); - return blockArray[blockIndex].getLongValue(localIndex); + var idx = selectBlock(index); + return blockArray[idx.blockIndex].getLongValue(idx.localIndex); } @Override public float getFloatValue(int index) { - selectBlock(index); - return blockArray[blockIndex].getFloatValue(localIndex); + var idx = selectBlock(index); + return blockArray[idx.blockIndex].getFloatValue(idx.localIndex); } @Override public double getDoubleValue(int index) { - selectBlock(index); + var idx = selectBlock(index); //System.out.println(blockIndex + " " + localIndex); - return blockArray[blockIndex].getDoubleValue(localIndex); + return blockArray[idx.blockIndex].getDoubleValue(idx.localIndex); } @Override public String getStringValue(int index) { - selectBlock(index); - return blockArray[blockIndex].getStringValue(localIndex); + var idx = selectBlock(index); + return blockArray[idx.blockIndex].getStringValue(idx.localIndex); } @Override public Instant getTimeStamp(int index) { - selectBlock(index); - return blockArray[blockIndex].getTimeStamp(localIndex); + var idx = selectBlock(index); + return blockArray[idx.blockIndex].getTimeStamp(idx.localIndex); } @Override public OffsetDateTime getDateTime(int index) { - selectBlock(index); - return blockArray[blockIndex].getDateTime(localIndex); + var idx = selectBlock(index); + return blockArray[idx.blockIndex].getDateTime(idx.localIndex); } @Override public void setBooleanValue(int index, boolean value) { - selectBlock(index); - blockArray[blockIndex].setBooleanValue(localIndex, value); + var idx = selectBlock(index); + blockArray[idx.blockIndex].setBooleanValue(idx.localIndex, value); } @Override public void setByteValue(int index, byte value) { - selectBlock(index); - blockArray[blockIndex].setByteValue(localIndex, value); + var idx = selectBlock(index); + blockArray[idx.blockIndex].setByteValue(idx.localIndex, value); } @Override public void setShortValue(int index, short value) { - selectBlock(index); - blockArray[blockIndex].setShortValue(localIndex, value); + var idx = selectBlock(index); + blockArray[idx.blockIndex].setShortValue(idx.localIndex, value); } @Override public void setIntValue(int index, int value) { - selectBlock(index); - blockArray[blockIndex].setIntValue(localIndex, value); + var idx = selectBlock(index); + blockArray[idx.blockIndex].setIntValue(idx.localIndex, value); } @Override public void setLongValue(int index, long value) { - selectBlock(index); - blockArray[blockIndex].setLongValue(localIndex, value); + var idx = selectBlock(index); + blockArray[idx.blockIndex].setLongValue(idx.localIndex, value); } @Override public void setFloatValue(int index, float value) { - selectBlock(index); - blockArray[blockIndex].setFloatValue(localIndex, value); + var idx = selectBlock(index); + blockArray[idx.blockIndex].setFloatValue(idx.localIndex, value); } @Override public void setDoubleValue(int index, double value) { - selectBlock(index); - blockArray[blockIndex].setDoubleValue(localIndex, value); + var idx = selectBlock(index); + blockArray[idx.blockIndex].setDoubleValue(idx.localIndex, value); } @Override public void setStringValue(int index, String value) { - selectBlock(index); - blockArray[blockIndex].setStringValue(localIndex, value); + var idx = selectBlock(index); + blockArray[idx.blockIndex].setStringValue(idx.localIndex, value); } @Override public void setTimeStamp(int index, Instant value) { - selectBlock(index); - blockArray[blockIndex].setTimeStamp(localIndex, value); + var idx = selectBlock(index); + blockArray[idx.blockIndex].setTimeStamp(idx.localIndex, value); } @Override public void setDateTime(int index, OffsetDateTime value) { - selectBlock(index); - blockArray[blockIndex].setDateTime(localIndex, value); + var idx = selectBlock(index); + blockArray[idx.blockIndex].setDateTime(idx.localIndex, value); } } diff --git a/lib-ogc/swe-common-core/src/main/java/org/vast/data/DataBlockProxy.java b/lib-ogc/swe-common-core/src/main/java/org/vast/data/DataBlockProxy.java index 3a7b0e76b8..5eec998a74 100644 --- a/lib-ogc/swe-common-core/src/main/java/org/vast/data/DataBlockProxy.java +++ b/lib-ogc/swe-common-core/src/main/java/org/vast/data/DataBlockProxy.java @@ -143,40 +143,19 @@ else if (method.isDefault()) var data = comp.getData(); var retType = method.getReturnType(); - if (retType == boolean.class) - return data.getBooleanValue(); - else if (retType == byte.class) - return data.getByteValue(); - else if (retType == short.class) - return data.getShortValue(); - else if (retType == int.class) - return data.getIntValue(); - else if (retType == long.class) - return data.getLongValue(); - else if (retType == float.class) - return data.getFloatValue(); - else if (retType == double.class) - return data.getDoubleValue(); - else if (retType == String.class) - return data.getStringValue(); - else if (retType == Instant.class) - return data.getTimeStamp(); - else if (retType == OffsetDateTime.class) - return data.getDateTime(); - else if (Collection.class.isAssignableFrom(retType)) + if (Collection.class.isAssignableFrom(retType)) { assertDataArray(method, comp); var itemType = (Class)((ParameterizedType)method.getGenericReturnType()).getActualTypeArguments()[0]; - if (!IDataAccessor.class.isAssignableFrom(itemType)) - throw new IllegalStateException("Collection item type must be an accessor class"); + var isSimpleType = isSimpleType(itemType); + Asserts.checkState(isSimpleType || IDataAccessor.class.isAssignableFrom(itemType), + "Collection item type must be a simple type or a IDataAccessor"); - @SuppressWarnings({"unchecked"}) - var accessorClass = (Class)itemType; - return createCollection(accessorClass, (DataArray)comp); + return createCollection(itemType, isSimpleType, (DataArray)comp); } else - throw new IllegalStateException("Unsupported datatype: " + retType); + return getDataValue(retType, data); } else if (isSetNumMethod(method)) @@ -184,7 +163,6 @@ else if (isSetNumMethod(method)) assertDataArray(method, comp); var arraySize = (int)args[0]; ((DataArray)comp).updateSize(arraySize); - return null; } else if (isSetMethod(method)) @@ -192,37 +170,15 @@ else if (isSetMethod(method)) var data = comp.getData(); var argType = method.getParameters()[0].getType(); var val = args[0]; - - if (argType == boolean.class) - data.setBooleanValue((boolean)val); - else if (argType == byte.class) - data.setByteValue((byte)val); - else if (argType == short.class) - data.setShortValue((short)val); - else if (argType == int.class) - data.setIntValue((int)val); - else if (argType == long.class) - data.setLongValue((long)val); - else if (argType == float.class) - data.setFloatValue((float)val); - else if (argType == double.class) - data.setDoubleValue((double)val); - else if (argType == String.class) - data.setStringValue((String)val); - else if (argType == Instant.class) - data.setTimeStamp((Instant)val); - else if (argType == OffsetDateTime.class) - data.setDateTime((OffsetDateTime)val); - else - throw new IllegalStateException("Unsupported datatype: " + argType); - return null; + setDataValue(data, argType, val); } else if (isAddMethod(method)) { var retType = method.getReturnType(); - Asserts.checkState(IDataAccessor.class.isAssignableFrom(retType), - "Return type of method " + method.getName() + " must be a IDataAccessor"); + var isSimpleType = isSimpleType(retType); + Asserts.checkState(isSimpleType(retType) || IDataAccessor.class.isAssignableFrom(retType), + "Return type of method " + method.getName() + " must be a simple type or a IDataAccessor"); var array = assertDataArray(method, comp); if (arrayData == null) @@ -241,17 +197,84 @@ else if (isAddMethod(method)) var parent = ((AbstractDataComponentImpl)array.getParent()); parent.updateAtomCount(newDblk.getAtomCount()); - // create accessor for new element - @SuppressWarnings("unchecked") - var accessorClass = (Class)retType; - var accessor = createElementProxy(accessorClass, array.getElementType()); - accessor.wrap(newDblk); - - return accessor; + // create accessor for new element if complex + if (!isSimpleType) + { + @SuppressWarnings("unchecked") + var accessorClass = (Class)retType; + var accessor = createElementProxy(accessorClass, array.getElementType()); + accessor.wrap(newDblk); + return accessor; + } + else + { + var argType = method.getParameters()[0].getType(); + var val = args[0]; + setDataValue(newDblk, argType, val); + } } + return null; + } + + + protected Object getDataValue(Class retType, DataBlock data) + { + if (retType == boolean.class) + return data.getBooleanValue(); + else if (retType == byte.class) + return data.getByteValue(); + else if (retType == short.class) + return data.getShortValue(); + else if (retType == int.class) + return data.getIntValue(); + else if (retType == long.class) + return data.getLongValue(); + else if (retType == float.class) + return data.getFloatValue(); + else if (retType == double.class) + return data.getDoubleValue(); + else if (retType == String.class) + return data.getStringValue(); + else if (retType == Instant.class) + return data.getTimeStamp(); + else if (retType == OffsetDateTime.class) + return data.getDateTime(); else - return null; + throw new IllegalStateException("Unsupported datatype: " + retType); + } + + + protected void setDataValue(DataBlock data, Class argType, Object val) + { + if (argType == boolean.class) + data.setBooleanValue((boolean)val); + else if (argType == byte.class) + data.setByteValue((byte)val); + else if (argType == short.class) + data.setShortValue((short)val); + else if (argType == int.class) + data.setIntValue((int)val); + else if (argType == long.class) + data.setLongValue((long)val); + else if (argType == float.class) + data.setFloatValue((float)val); + else if (argType == double.class) + data.setDoubleValue((double)val); + else if (argType == String.class) + data.setStringValue((String)val); + else if (argType == Instant.class) + data.setTimeStamp((Instant)val); + else if (argType == OffsetDateTime.class) + data.setDateTime((OffsetDateTime)val); + else + throw new IllegalStateException("Unsupported datatype: " + argType); + } + + + protected boolean isSimpleType(Class clazz) + { + return clazz.isPrimitive() || clazz == String.class || clazz == Instant.class; } @@ -296,8 +319,8 @@ protected boolean isSetMethod(Method m) protected boolean isAddMethod(Method m) { return m.getName().startsWith("add") && - m.getReturnType() != void.class && - m.getParameters().length == 0; + ((m.getReturnType() != void.class && m.getParameters().length == 0) || // when adding sub object + (m.getReturnType() == void.class && m.getParameters().length == 1)); // when adding scalar } @@ -322,14 +345,14 @@ protected IDataAccessor createElementProxy(Class clazz, DataCompo } - protected Collection createCollection(Class clazz, DataArray array) + protected Collection createCollection(Class clazz, boolean isSimpleType, DataArray array) { - return new AbstractCollection() { + return new AbstractCollection() { @Override - public Iterator iterator() + public Iterator iterator() { - return new Iterator() + return new Iterator() { int idx; @@ -340,12 +363,20 @@ public boolean hasNext() } @Override - public IDataAccessor next() + public Object next() { var elt = array.getComponent(idx++); - var accessor = createElementProxy(clazz, array.getElementType()); - accessor.wrap(elt.getData().copy()); - return accessor; + + if (!isSimpleType) { + @SuppressWarnings({"unchecked"}) + var accessorClass = (Class)clazz; + var accessor = createElementProxy(accessorClass, array.getElementType()); + accessor.wrap(elt.getData().copy()); + return accessor; + } + else { + return getDataValue(clazz, elt.getData()); + } } }; } diff --git a/lib-ogc/swe-common-core/src/main/java/org/vast/swe/SWEConstants.java b/lib-ogc/swe-common-core/src/main/java/org/vast/swe/SWEConstants.java index f7d6fa0ad0..8c4780fa4c 100644 --- a/lib-ogc/swe-common-core/src/main/java/org/vast/swe/SWEConstants.java +++ b/lib-ogc/swe-common-core/src/main/java/org/vast/swe/SWEConstants.java @@ -110,21 +110,44 @@ public class SWEConstants // SWE procedure/system definition URIs public static final String SOSA_URI_PREFIX = "http://www.w3.org/ns/sosa/"; public static final String SSN_URI_PREFIX = "http://www.w3.org/ns/ssn/"; - public static final String OMS_URI_PREFIX = "http://www.w3.org/ns/x-oms/"; - public static final String DEF_PROCEDURE = SOSA_URI_PREFIX + "Procedure"; - public static final String DEF_SYSTEM = SSN_URI_PREFIX + "System"; + public static final String OMS_URI_PREFIX = "http://www.w3.org/ns/sosa/oms/"; + + public static final String DEF_SYSTEM = SOSA_URI_PREFIX + "System"; public static final String DEF_PLATFORM = SOSA_URI_PREFIX + "Platform"; public static final String DEF_SENSOR = SOSA_URI_PREFIX + "Sensor"; public static final String DEF_ACTUATOR = SOSA_URI_PREFIX + "Actuator"; public static final String DEF_SAMPLER = SOSA_URI_PREFIX + "Sampler"; + public static final String DEF_DEPLOYMENT = SOSA_URI_PREFIX + "Deployment"; + + public static final String DEF_PROCEDURE = SOSA_URI_PREFIX + "Procedure"; + public static final String DEF_OBS_PROCEDURE = SOSA_URI_PREFIX + "ObservingProcedure"; + public static final String DEF_ACT_PROCEDURE = SOSA_URI_PREFIX + "ActuatingProcedure"; + public static final String DEF_SAM_PROCEDURE = SOSA_URI_PREFIX + "SamplingProcedure"; + public static final String DEF_OBSERVER = OMS_URI_PREFIX + "Observer"; public static final String DEF_HOST = OMS_URI_PREFIX + "Host"; - + public static final String DEF_PREP_PROCEDURE = OMS_URI_PREFIX + "PreparationProcedure"; + + @Deprecated public static final String DEF_DEPLOYMENT_SSN = SSN_URI_PREFIX + "Deployment"; + @Deprecated public static final String DEF_SYSTEM_SSN = SSN_URI_PREFIX + "System"; + + public static final String DEF_ASSET_TYPE = "cs:AssetType"; + public static final String ASSET_TYPE_EQUIPMENT = "Equipment"; + public static final String ASSET_TYPE_HUMAN = "Human"; + public static final String ASSET_TYPE_LIVING_THING = "LivingThing"; + public static final String ASSET_TYPE_SIMULATION = "Simulation"; + public static final String ASSET_TYPE_PROCESS = "Process"; + public static final String ASSET_TYPE_GROUP = "Group"; + public static final String ASSET_TYPE_OTHER = "Other"; + public static final String SWE_SYS_URI_PREFIX = SML_ONTOLOGY_ROOT + "swe/system/"; - public static final String DEF_SENSOR_NETWORK = SWE_SYS_URI_PREFIX + "SensorNetwork"; - public static final String DEF_HUMAN = SWE_SYS_URI_PREFIX + "HumanAgent"; + public static final String DEF_EQUIPMENT = SWE_SYS_URI_PREFIX + "Equipment"; + public static final String DEF_HUMAN = SWE_SYS_URI_PREFIX + "Human"; + public static final String DEF_LIVING_THING = SWE_SYS_URI_PREFIX + "LivingThing"; + public static final String DEF_SIMULATION = SWE_SYS_URI_PREFIX + "Simulation"; public static final String DEF_PROCESS = SWE_SYS_URI_PREFIX + "Process"; - public static final String DEF_MODELSIM = SWE_SYS_URI_PREFIX + "Simulation"; + public static final String DEF_SYSTEM_GROUP = SWE_SYS_URI_PREFIX + "Group"; + public static final String DEF_SYSTEM_OTHER = SWE_SYS_URI_PREFIX + "Other"; // Special units public static final String QUDT_UOM_PREFIX = "http://qudt.org/vocab/unit/"; diff --git a/lib-ogc/swe-common-core/src/main/java/org/vast/swe/SWEJsonBindings.java b/lib-ogc/swe-common-core/src/main/java/org/vast/swe/SWEJsonBindings.java index 422dcb3e72..f6ad4d2b1f 100644 --- a/lib-ogc/swe-common-core/src/main/java/org/vast/swe/SWEJsonBindings.java +++ b/lib-ogc/swe-common-core/src/main/java/org/vast/swe/SWEJsonBindings.java @@ -2577,7 +2577,7 @@ else if (blockComponent instanceof DataStream) */ public void writeDataComponent(JsonWriter writer, DataComponent bean, boolean writeInlineValues) throws IOException { - writeDataComponent(writer, bean, writeInlineValues, null); + writeDataComponent(writer, bean, writeInlineValues, bean.getName()); } diff --git a/lib-ogc/swe-common-core/src/test/java/org/vast/swe/test/TestDataAccessor.java b/lib-ogc/swe-common-core/src/test/java/org/vast/swe/test/TestDataAccessor.java index 26001638fb..109a7321d0 100644 --- a/lib-ogc/swe-common-core/src/test/java/org/vast/swe/test/TestDataAccessor.java +++ b/lib-ogc/swe-common-core/src/test/java/org/vast/swe/test/TestDataAccessor.java @@ -83,6 +83,34 @@ static DataRecord getSchema() } + interface RecordAccessor3 extends IDataAccessor + { + @SweMapping(path="type") + public String getRecordType(); + + @SweMapping(path="array") + public Collection getTokens(); + + @SweMapping(path="array") + public void addToken(); + + static DataRecord getSchema() + { + var swe = new SWEHelper(); + Count sizeComp; + return swe.createRecord() + .addField("type", swe.createCategory()) + .addField("count", sizeComp = swe.createCount() + .id("ARRAY_SIZE") + .build()) + .addField("array", swe.createArray() + .withSizeComponent(sizeComp) + .withElement("token", swe.createText())) + .build(); + } + } + + @Test public void testReadRecordOfScalars() { @@ -155,5 +183,39 @@ public void testReadArrayOfRecords() } } + + + @Test + public void testReadArrayOfScalars() + { + var rec = RecordAccessor3.getSchema(); + var accessor = DataBlockProxy.generate(rec, RecordAccessor3.class); + + String type = "wpts"; + String[] codes = {"LCH", "LFT", "AWDAD", "VOODO"}; + + int i = 0; + var dblk = rec.createDataBlock(); + dblk.setStringValue(i++, type); + dblk.setIntValue(i++, codes.length); + ((DataBlockMixed)dblk).getUnderlyingObject()[2].resize(codes.length); + for (var r = 0; r < codes.length; r++) { + dblk.setStringValue(i++, codes[r]); + } + + accessor.wrap(dblk); + + assertEquals(type, accessor.getRecordType()); + assertEquals(codes.length, accessor.getTokens().size()); + int r = 0; + for (var elt: accessor.getTokens()) + { + assertEquals(codes[r], elt); + r++; + + System.out.println(elt.toString()); + } + + } } diff --git a/sensorhub-core/build.gradle b/sensorhub-core/build.gradle index bcd8bc82ad..28b27a5cb7 100644 --- a/sensorhub-core/build.gradle +++ b/sensorhub-core/build.gradle @@ -4,6 +4,15 @@ plugins { description = 'OSH Core APIs & Components' ext.details = 'Core components of OpenSensorHub framework' +rootProject.allprojects { + repositories { + maven { + name 'GeoTools' + url "https://maven.geo-solutions.it" + } + } +} + dependencies { embeddedApi project(':swe-common-core') embeddedApi project(':swe-common-om') @@ -13,8 +22,14 @@ dependencies { embeddedApi 'org.eclipse.jetty:jetty-servlets:9.4.57.v20241219' embeddedApi 'org.eclipse.jetty.websocket:websocket-server:9.4.57.v20241219' embeddedApi 'org.eclipse.jetty:jetty-xml:9.4.57.v20241219' + embeddedApi 'com.google.zxing:core:3.5.3' + embeddedApi 'com.google.zxing:javase:3.5.3' embeddedApi 'javax.validation:validation-api:2.0.1.Final' embeddedApi 'dev.failsafe:failsafe:3.3.2' + embeddedApi('org.geotools:gt-cql2-text:C105.33.2.00') { + exclude group: "javax.media", module: "jai_core" + exclude group: "it.geosolutions.jgridshift", module: "jgridshift-core" + } testImplementation project(path: ':sensorml-core', configuration: 'testArtifacts') testImplementation 'commons-io:commons-io:1.3.2' diff --git a/sensorhub-core/src/main/java/org/sensorhub/api/command/CommandResult.java b/sensorhub-core/src/main/java/org/sensorhub/api/command/CommandResult.java index 1c79dcab0b..91885e9775 100644 --- a/sensorhub-core/src/main/java/org/sensorhub/api/command/CommandResult.java +++ b/sensorhub-core/src/main/java/org/sensorhub/api/command/CommandResult.java @@ -14,14 +14,13 @@ package org.sensorhub.api.command; -import java.time.Instant; +import java.util.ArrayList; import java.util.Collection; import java.util.Collections; -import java.util.Set; +import java.util.List; import org.sensorhub.api.common.BigId; -import org.sensorhub.api.data.IObsData; -import org.sensorhub.api.data.ObsData; import org.sensorhub.utils.ObjectUtils; +import org.vast.ogc.xlink.IXlinkReference; import org.vast.util.Asserts; import net.opengis.swe.v20.DataBlock; @@ -36,9 +35,10 @@ */ public class CommandResult implements ICommandResult { - protected BigId dataStreamID; + protected Collection inlineRecords; protected Collection obsIDs; - protected Collection obsList; + protected Collection dsIDs; + protected Collection> links; protected CommandResult() @@ -48,94 +48,115 @@ protected CommandResult() /** - * Declare an entire datastream as result - * @param dataStreamID The ID of the datastream that contains the result + * Add an entire datastream to the command result + * @param dataStreamID The internal ID of the datastream that contains the result * @return The result object */ - public static ICommandResult withEntireDatastream(BigId dataStreamID) + public static ICommandResult withDatastream(BigId dataStreamID) { - var res = new CommandResult(); - res.dataStreamID = Asserts.checkNotNull(dataStreamID, "dataStreamID"); - return res; + return withDatastreams(List.of(dataStreamID)); } /** - * Declare certain obs from an existing datastream as result - * @param dataStreamID The ID of the datastream that contains the result - * @param obsIDs IDs of observations that constitute the result + * Create a command result with multiple datastream references + * @param dataStreamIDs The internal IDs of the datastreams * @return The result object */ - public static ICommandResult withObsInDatastream(BigId dataStreamID, Collection obsIDs) + public static ICommandResult withDatastreams(Collection dataStreamIDs) { + Asserts.checkNotNull(dataStreamIDs, Collection.class); + var res = new CommandResult(); - res.dataStreamID = Asserts.checkNotNull(dataStreamID, "dataStreamID"); - res.obsIDs = Collections.unmodifiableCollection(Asserts.checkNotNullOrEmpty(obsIDs, "obsIDs")); + res.dsIDs = new ArrayList<>(); + res.dsIDs.addAll(dataStreamIDs); return res; } /** - * Add observations to a command result - * @param obsList List of observations to be added to the datastream of the result + * Create a command result with a single observation + * @param obsID The internal ID of the observation * @return The result object */ - public static ICommandResult withObs(Collection obsList) + public static ICommandResult withObservation(BigId obsID) { - var res = new CommandResult(); - res.obsList = Collections.unmodifiableCollection(Asserts.checkNotNull(obsList, "obsList")); - return res; + return withObservations(List.of(obsID)); } /** - * Add observations to a command result - * @param obs A single observation to return as the result + * Create a command result with multiple observation references + * @param obsIDs The internal IDs of the observations * @return The result object */ - public static ICommandResult withSingleObs(IObsData obs) + public static ICommandResult withObservations(Collection obsIDs) { + Asserts.checkNotNull(obsIDs, Collection.class); + var res = new CommandResult(); - res.obsList = Set.of(Asserts.checkNotNull(obs, IObsData.class)); + res.obsIDs = new ArrayList<>(); + res.obsIDs.addAll(obsIDs); return res; } /** - * Add data to a command result - * @param data A single observation result to return as the command result + * Create a command result with single record + * @param data The data record to add * @return The result object */ public static ICommandResult withData(DataBlock data) { + return withData(List.of(data)); + } + + + /** + * Add multiple data records to the inline command result + * @param records The list of data records to add + * @return The result object + */ + public static ICommandResult withData(Collection records) + { + Asserts.checkNotNull(records, Collection.class); + var res = new CommandResult(); - var obs = new ObsData.Builder() - .withPhenomenonTime(Instant.now()) - .withResult(data) - .build(); - res.obsList = Set.of(Asserts.checkNotNull(obs, IObsData.class)); + res.inlineRecords = new ArrayList<>(); + res.inlineRecords.addAll(records); return res; } @Override - public Collection getObservations() + public Collection getInlineRecords() + { + return inlineRecords != null ? + Collections.unmodifiableCollection(inlineRecords) : null; + } + + + @Override + public Collection getObservationIDs() { - return obsList; + return obsIDs != null ? + Collections.unmodifiableCollection(obsIDs) : null; } @Override - public Collection getObservationRefs() + public Collection getDataStreamIDs() { - return obsIDs; + return dsIDs != null ? + Collections.unmodifiableCollection(dsIDs) : null; } @Override - public BigId getDataStreamID() + public Collection> getExternalLinks() { - return dataStreamID; + return links != null ? + Collections.unmodifiableCollection(links) : null; } diff --git a/sensorhub-core/src/main/java/org/sensorhub/api/command/CommandStatus.java b/sensorhub-core/src/main/java/org/sensorhub/api/command/CommandStatus.java index 01bc86d9f1..613ccab92d 100644 --- a/sensorhub-core/src/main/java/org/sensorhub/api/command/CommandStatus.java +++ b/sensorhub-core/src/main/java/org/sensorhub/api/command/CommandStatus.java @@ -101,7 +101,6 @@ public static ICommandStatus failed(BigId commandID, String errorMsg) * Generate a status report for a command that is pending and will be * processed later on * @param commandID The ID of the command triggering the report - * @param taskID ID assigned to the command/task * @return The status report */ public static ICommandStatus pending(BigId commandID) @@ -181,6 +180,22 @@ public static ICommandStatus completed(BigId commandID, TimeExtent execTime, ICo return status; } + /** + * Generate a status report for a command that was asynchronously executed + * and completed successfully with a result + * @param commandID The ID of the command triggering the report + * @param execTime The actual time (or time period) the command was executed + * @param result The result (observations) produced during execution of the command + * @param message The message + * @return The status report + */ + public static ICommandStatus completed(BigId commandID, TimeExtent execTime, ICommandResult result, String message) + { + var status = new CommandStatus(commandID, CommandStatusCode.COMPLETED, execTime); + status.result = Asserts.checkNotNull(result, ICommandResult.class); + status.message = message; + return status; + } @Override public BigId getCommandID() diff --git a/sensorhub-core/src/main/java/org/sensorhub/api/command/CommandStreamInfo.java b/sensorhub-core/src/main/java/org/sensorhub/api/command/CommandStreamInfo.java index dae2e5dcff..899335eeea 100644 --- a/sensorhub-core/src/main/java/org/sensorhub/api/command/CommandStreamInfo.java +++ b/sensorhub-core/src/main/java/org/sensorhub/api/command/CommandStreamInfo.java @@ -40,6 +40,8 @@ public class CommandStreamInfo implements ICommandStreamInfo protected DataEncoding recordEncoding; protected DataComponent resultStruct; protected DataEncoding resultEncoding; + protected DataComponent feasibilityResultStruct; + protected DataEncoding feasibilityResultEncoding; @Override @@ -118,6 +120,14 @@ public DataEncoding getResultEncoding() return resultEncoding; } + @Override + public DataComponent getFeasibilityResultStructure() { + return feasibilityResultStruct; + } + + public DataEncoding getFeasibilityResultEncoding() { + return feasibilityResultEncoding; + } @Override public boolean hasResult() @@ -221,6 +231,16 @@ public B withValidTime(TimeExtent validTime) return (B)this; } + public B withFeasibilityResultDescription(DataComponent feasibilityResultStruct) { + instance.feasibilityResultStruct = feasibilityResultStruct; + return (B)this; + } + + public B withFeasibilityResultEncoding(DataEncoding feasibilityResultEncoding) { + instance.feasibilityResultEncoding = feasibilityResultEncoding; + return (B)this; + } + @Override public T build() diff --git a/sensorhub-core/src/main/java/org/sensorhub/api/command/ICommandResult.java b/sensorhub-core/src/main/java/org/sensorhub/api/command/ICommandResult.java index d9e6d07671..c4585d5074 100644 --- a/sensorhub-core/src/main/java/org/sensorhub/api/command/ICommandResult.java +++ b/sensorhub-core/src/main/java/org/sensorhub/api/command/ICommandResult.java @@ -16,7 +16,8 @@ import java.util.Collection; import org.sensorhub.api.common.BigId; -import org.sensorhub.api.data.IObsData; +import org.vast.ogc.xlink.IXlinkReference; +import net.opengis.swe.v20.DataBlock; /** @@ -43,22 +44,29 @@ public interface ICommandResult { /** - * @return inline result data, as a list of observations matching the - * result schema defined by {@link ICommandStreamInfo} + * @return inline data records matching the result schema defined by + * {@link ICommandStreamInfo}, or null if none provided. */ - Collection getObservations(); + Collection getInlineRecords(); + + + /** + * @return IDs to observations generated during the execution of the command + * and available on the sensor hub, or null if none provided. + */ + Collection getObservationIDs(); + /** - * @return reference to observations (when not provided inline) generated - * during the execution of the command and added to one or more existing - * datastream(s). + * @return references to datastreams that contain observations generated during + * the execution of the command, or null if none provided. */ - Collection getObservationRefs(); + Collection getDataStreamIDs(); + /** - * @return reference to an entire datastream that contains one or more - * observations (but usually many) generated during the execution of the - * command. + * @return reference to external resources that contain data generated during + * the execution of the command, or null if none provided. */ - BigId getDataStreamID(); + Collection> getExternalLinks(); } diff --git a/sensorhub-core/src/main/java/org/sensorhub/api/command/ICommandStatus.java b/sensorhub-core/src/main/java/org/sensorhub/api/command/ICommandStatus.java index 1c0b3647f7..797fec4b60 100644 --- a/sensorhub-core/src/main/java/org/sensorhub/api/command/ICommandStatus.java +++ b/sensorhub-core/src/main/java/org/sensorhub/api/command/ICommandStatus.java @@ -182,7 +182,7 @@ public boolean isFinal() /** - * @return The result of the command (either inline of by reference) + * @return The result(s) of the command (either inline of by reference) */ ICommandResult getResult(); diff --git a/sensorhub-core/src/main/java/org/sensorhub/api/command/ICommandStreamInfo.java b/sensorhub-core/src/main/java/org/sensorhub/api/command/ICommandStreamInfo.java index 245b08426c..fc7f636fd5 100644 --- a/sensorhub-core/src/main/java/org/sensorhub/api/command/ICommandStreamInfo.java +++ b/sensorhub-core/src/main/java/org/sensorhub/api/command/ICommandStreamInfo.java @@ -113,8 +113,28 @@ default boolean hasInlineResult() * null if no inline result is generated by this command channel. */ DataEncoding getResultEncoding(); - - + + /** + * @return True if the control stream generate feasibility information + * for commands, false otherwise + */ + default boolean hasFeasibilityResult() + { + return getFeasibilityResultStructure() != null; + } + + /** + * @return The structure of the feasibility result data, or null if no + * feasibility information is generated by this command channel. + */ + DataComponent getFeasibilityResultStructure(); + + /** + * @return The recommended encoding for the feasibility result data, or + * null if no feasibility information is generated by this command channel. + */ + DataEncoding getFeasibilityResultEncoding(); + /** * @return The full name of the controlstream combining the system UID and the input name */ diff --git a/sensorhub-core/src/main/java/org/sensorhub/api/command/IStreamingControlInterface.java b/sensorhub-core/src/main/java/org/sensorhub/api/command/IStreamingControlInterface.java index b7eafe1afa..c897257cea 100644 --- a/sensorhub-core/src/main/java/org/sensorhub/api/command/IStreamingControlInterface.java +++ b/sensorhub-core/src/main/java/org/sensorhub/api/command/IStreamingControlInterface.java @@ -107,9 +107,10 @@ public default DataEncoding getCommandEncoding() * are then sent via the dedicated event channel, using the same task ID, * to provide status updates to the caller. *

- * The future should only complete exceptionally if there is an unexpected error. - * All errors associated to the processing of the command by the receiver system - * should be reported via a status object instead. + * The future should only complete exceptionally if there is an unexpected error + * or internal error that should not be reported to the caller. Otherwise, all + * errors associated to the processing of the command by the receiver system + * should be reported in the status object instead. *

* @param command Command data (with ID set) * @return A future that will be completed normally when the system is ready to diff --git a/sensorhub-core/src/main/java/org/sensorhub/api/datastore/TemporalFilter.java b/sensorhub-core/src/main/java/org/sensorhub/api/datastore/TemporalFilter.java index df496130a9..71a632dbff 100644 --- a/sensorhub-core/src/main/java/org/sensorhub/api/datastore/TemporalFilter.java +++ b/sensorhub-core/src/main/java/org/sensorhub/api/datastore/TemporalFilter.java @@ -39,8 +39,14 @@ public class TemporalFilter extends RangeFilter protected boolean timeRangeBeginsNow; // now = current time at the time of query evaluation protected boolean timeRangeEndsNow; // now = current time at the time of query evaluation protected boolean latestTime; // latest available time (can be in future) + protected boolean descendingOrder; - + protected TemporalFilter() + { + this.range = Range.open(Instant.MIN, Instant.MAX); + } + + public boolean isCurrentTime() { return timeRangeBeginsNow && timeRangeEndsNow; @@ -78,7 +84,13 @@ public boolean isSingleValue() return isCurrentTime() || isLatestTime() || super.isSingleValue(); } - + + + public boolean descendingOrder() + { + return descendingOrder; + } + @Override public Range getRange() @@ -208,6 +220,9 @@ else if (otherFilter.isLatestTime() && isAllTimes()) else if (otherFilter.isAllTimes() && isLatestTime()) return builder.withLatestTime(); + var descendingOrder = this.descendingOrder || otherFilter.descendingOrder; + builder.descendingOrder(descendingOrder); + // otherwise compute time extent intersection var thisTe = asTimeExtent(); var otherTe = otherFilter.asTimeExtent(); @@ -289,6 +304,7 @@ protected B copyFrom(F base) instance.timeRangeBeginsNow = base.timeRangeBeginsNow; instance.timeRangeEndsNow = base.timeRangeEndsNow; instance.latestTime = base.latestTime; + instance.descendingOrder = base.descendingOrder; return (B)this; } @@ -378,5 +394,16 @@ else if (!te.hasEnd()) else return withRange(te.begin(), te.end()); } + + /** + * Specify descending or ascending (default) chronological order. + * @param descending order + * @return This builder for chaining + */ + public B descendingOrder(boolean descending) + { + instance.descendingOrder = descending; + return (B)this; + } } } diff --git a/sensorhub-core/src/main/java/org/sensorhub/api/datastore/obs/ObsFilter.java b/sensorhub-core/src/main/java/org/sensorhub/api/datastore/obs/ObsFilter.java index 3a25b2b668..8ac843a606 100644 --- a/sensorhub-core/src/main/java/org/sensorhub/api/datastore/obs/ObsFilter.java +++ b/sensorhub-core/src/main/java/org/sensorhub/api/datastore/obs/ObsFilter.java @@ -19,6 +19,14 @@ import java.util.Collection; import java.util.SortedSet; import java.util.function.Predicate; + +import org.geootols.filter.text.cql_2.CQL2; +import org.geotools.api.filter.*; +import org.geotools.api.filter.spatial.*; +import org.geotools.api.filter.temporal.*; +import org.geotools.factory.CommonFactoryFinder; +import org.geotools.filter.Filters; +import org.geotools.filter.text.cql2.CQLException; import org.sensorhub.api.common.BigId; import org.sensorhub.api.data.IObsData; import org.sensorhub.api.datastore.EmptyFilterIntersection; @@ -52,6 +60,7 @@ public class ObsFilter implements IQueryFilter, Predicate protected FoiFilter foiFilter; protected Predicate valuePredicate; protected long limit = Long.MAX_VALUE; + protected Filter cqlFilter; /* @@ -95,13 +104,15 @@ public FoiFilter getFoiFilter() return foiFilter; } + public Filter getCQLFilter() { + return cqlFilter; + } public Predicate getValuePredicate() { return valuePredicate; } - @Override public long getLimit() { @@ -184,7 +195,12 @@ public ObsFilter intersect(ObsFilter filter) throws EmptyFilterIntersection var foiFilter = this.foiFilter != null ? this.foiFilter.intersect(filter.foiFilter) : filter.foiFilter; if (foiFilter != null) builder.withFois(foiFilter); - + + var ff = CommonFactoryFinder.getFilterFactory(); + var cqlFilter = this.cqlFilter != null ? Filters.and(ff, this.cqlFilter, filter.cqlFilter) : filter.cqlFilter; + if (cqlFilter != null) + builder.withCQLFilter(cqlFilter); + var valuePredicate = this.valuePredicate != null ? this.valuePredicate.and(filter.valuePredicate) : filter.valuePredicate; if (valuePredicate != null) builder.withValuePredicate(valuePredicate); @@ -277,6 +293,7 @@ public B copyFrom(ObsFilter base) instance.dataStreamFilter = base.dataStreamFilter; instance.foiFilter = base.foiFilter; instance.valuePredicate = base.valuePredicate; + instance.cqlFilter = base.cqlFilter; instance.limit = base.limit; return (B)this; } @@ -595,6 +612,22 @@ public B withValuePredicate(Predicate valuePredicate) return (B)this; } + public B withCQLFilter(Filter cqlFilter) + { + instance.cqlFilter = cqlFilter; + return (B)this; + } + + public B withCQLFilter(String cqlFilter) + { + try { + instance.cqlFilter = CQL2.toFilter(cqlFilter); + return (B)this; + } catch (CQLException e) { + throw new IllegalArgumentException("Invalid CQL filter", e); + } + } + /** * Sets the maximum number of observations to retrieve diff --git a/sensorhub-core/src/main/java/org/sensorhub/api/security/ISecurityManager.java b/sensorhub-core/src/main/java/org/sensorhub/api/security/ISecurityManager.java index 2e31e06368..30e550791b 100644 --- a/sensorhub-core/src/main/java/org/sensorhub/api/security/ISecurityManager.java +++ b/sensorhub-core/src/main/java/org/sensorhub/api/security/ISecurityManager.java @@ -71,4 +71,16 @@ public interface ISecurityManager extends IAuthorizer public Collection getAllModulePermissions(); + + + /** + * @return true if the system is in an uninitialized state (e.g. no admin password set) + */ + public boolean isUninitialized(); + + + /** + * @return global registry of sessions that have been 2FA verified + */ + public java.util.Set get2FAVerifiedSessions(); } diff --git a/sensorhub-core/src/main/java/org/sensorhub/impl/database/registry/FederatedCommandStatusStore.java b/sensorhub-core/src/main/java/org/sensorhub/impl/database/registry/FederatedCommandStatusStore.java index 4cf637b9a8..2a7ad4391d 100644 --- a/sensorhub-core/src/main/java/org/sensorhub/impl/database/registry/FederatedCommandStatusStore.java +++ b/sensorhub-core/src/main/java/org/sensorhub/impl/database/registry/FederatedCommandStatusStore.java @@ -15,10 +15,13 @@ package org.sensorhub.impl.database.registry; import java.util.ArrayList; +import java.util.Comparator; import java.util.Map; import java.util.Set; import java.util.stream.Stream; import java.util.stream.StreamSupport; + +import org.sensorhub.api.command.ICommandData; import org.sensorhub.api.command.ICommandStatus; import org.sensorhub.api.common.BigId; import org.sensorhub.api.datastore.command.CommandFilter; @@ -170,10 +173,13 @@ public Stream> selectEntries(CommandStatusFilter fi if (cmdStreams.isEmpty()) return Stream.empty(); + + Comparator> comparator = Comparator.comparing(e -> e.getValue().getReportTime()); + if (filter.getReportTime() != null && filter.getReportTime().descendingOrder()) + comparator = comparator.reversed(); // stream and merge commands from all selected command streams and time periods - var mergeSortIt = new MergeSortSpliterator>(cmdStreams, - (e1, e2) -> e1.getValue().getReportTime().compareTo(e2.getValue().getReportTime())); + var mergeSortIt = new MergeSortSpliterator>(cmdStreams, comparator); // stream output of merge sort iterator + apply limit return StreamSupport.stream(mergeSortIt, false) diff --git a/sensorhub-core/src/main/java/org/sensorhub/impl/database/registry/FederatedCommandStore.java b/sensorhub-core/src/main/java/org/sensorhub/impl/database/registry/FederatedCommandStore.java index 52a05353a3..47f21b16a8 100644 --- a/sensorhub-core/src/main/java/org/sensorhub/impl/database/registry/FederatedCommandStore.java +++ b/sensorhub-core/src/main/java/org/sensorhub/impl/database/registry/FederatedCommandStore.java @@ -14,10 +14,7 @@ package org.sensorhub.impl.database.registry; -import java.util.ArrayList; -import java.util.Map; -import java.util.Set; -import java.util.TreeMap; +import java.util.*; import java.util.stream.Stream; import java.util.stream.StreamSupport; import org.sensorhub.api.command.ICommandData; @@ -204,10 +201,13 @@ public Stream> selectEntries(CommandFilter filter, Se if (cmdStreams.isEmpty()) return Stream.empty(); - + + Comparator> comparator = Comparator.comparing(e -> e.getValue().getIssueTime()); + if (filter.getIssueTime() != null && filter.getIssueTime().descendingOrder()) + comparator = comparator.reversed(); + // stream and merge commands from all selected command streams and time periods - var mergeSortIt = new MergeSortSpliterator>(cmdStreams, - (e1, e2) -> e1.getValue().getIssueTime().compareTo(e2.getValue().getIssueTime())); + var mergeSortIt = new MergeSortSpliterator>(cmdStreams, comparator); // stream output of merge sort iterator + apply limit return StreamSupport.stream(mergeSortIt, false) diff --git a/sensorhub-core/src/main/java/org/sensorhub/impl/database/registry/FederatedObsStore.java b/sensorhub-core/src/main/java/org/sensorhub/impl/database/registry/FederatedObsStore.java index 8772e03293..cc47191efd 100644 --- a/sensorhub-core/src/main/java/org/sensorhub/impl/database/registry/FederatedObsStore.java +++ b/sensorhub-core/src/main/java/org/sensorhub/impl/database/registry/FederatedObsStore.java @@ -14,12 +14,11 @@ package org.sensorhub.impl.database.registry; -import java.util.ArrayList; -import java.util.Map; -import java.util.Set; -import java.util.TreeMap; +import java.util.*; import java.util.stream.Stream; import java.util.stream.StreamSupport; + +import org.sensorhub.api.command.ICommandData; import org.sensorhub.api.common.BigId; import org.sensorhub.api.data.IObsData; import org.sensorhub.api.datastore.feature.FoiFilter; @@ -228,10 +227,13 @@ public Stream> selectEntries(ObsFilter filter, Set> comparator = Comparator.comparing(e -> e.getValue().getPhenomenonTime()); + if (filter.getPhenomenonTime() != null && filter.getPhenomenonTime().descendingOrder()) + comparator = comparator.reversed(); // stream and merge obs from all selected datastreams and time periods - var mergeSortIt = new MergeSortSpliterator>(obsStreams, - (e1, e2) -> e1.getValue().getPhenomenonTime().compareTo(e2.getValue().getPhenomenonTime())); + var mergeSortIt = new MergeSortSpliterator>(obsStreams, comparator); // stream output of merge sort iterator + apply limit return StreamSupport.stream(mergeSortIt, false) @@ -240,6 +242,29 @@ public Stream> selectEntries(ObsFilter filter, Set v.db.getObservationStore().countMatchingEntries((ObsFilter)v.filter)) + .reduce(0, Long::sum); + } + + // otherwise scan all DBs + else + { + return parentDb.getAllObsDatabases().stream() + .mapToLong(db -> db.getObservationStore().countMatchingEntries(filter)) + .reduce(0, Long::sum); + } + } + @Override public Stream selectObservedFois(ObsFilter filter) { diff --git a/sensorhub-core/src/main/java/org/sensorhub/impl/datastore/command/CommandStreamInfoWrapper.java b/sensorhub-core/src/main/java/org/sensorhub/impl/datastore/command/CommandStreamInfoWrapper.java index d97b41e845..4abccfbf02 100644 --- a/sensorhub-core/src/main/java/org/sensorhub/impl/datastore/command/CommandStreamInfoWrapper.java +++ b/sensorhub-core/src/main/java/org/sensorhub/impl/datastore/command/CommandStreamInfoWrapper.java @@ -123,4 +123,15 @@ public DataEncoding getResultEncoding() { return delegate.getResultEncoding(); } + + @Override + public DataComponent getFeasibilityResultStructure() + { + return delegate.getFeasibilityResultStructure(); + } + + @Override + public DataEncoding getFeasibilityResultEncoding() { + return delegate.getFeasibilityResultEncoding(); + } } diff --git a/sensorhub-core/src/main/java/org/sensorhub/impl/datastore/mem/InMemoryCommandStreamStore.java b/sensorhub-core/src/main/java/org/sensorhub/impl/datastore/mem/InMemoryCommandStreamStore.java index 188c133ecf..7b9f5a5ccf 100644 --- a/sensorhub-core/src/main/java/org/sensorhub/impl/datastore/mem/InMemoryCommandStreamStore.java +++ b/sensorhub-core/src/main/java/org/sensorhub/impl/datastore/mem/InMemoryCommandStreamStore.java @@ -27,6 +27,8 @@ import java.util.concurrent.ConcurrentSkipListMap; import java.util.concurrent.ConcurrentSkipListSet; import java.util.stream.Stream; + +import net.opengis.swe.v20.DataComponent; import org.sensorhub.api.command.ICommandStreamInfo; import org.sensorhub.api.common.BigId; import org.sensorhub.api.datastore.DataStoreException; diff --git a/sensorhub-core/src/main/java/org/sensorhub/impl/module/AbstractModule.java b/sensorhub-core/src/main/java/org/sensorhub/impl/module/AbstractModule.java index 77074fdf28..6f8402cd95 100644 --- a/sensorhub-core/src/main/java/org/sensorhub/impl/module/AbstractModule.java +++ b/sensorhub-core/src/main/java/org/sensorhub/impl/module/AbstractModule.java @@ -50,7 +50,7 @@ public abstract class AbstractModule implements protected ModuleSecurity securityHandler; protected final Object stateLock = new Object(); protected boolean initAsync, startAsync, stopAsync; - protected Throwable lastError; + protected volatile Throwable lastError; protected String statusMsg; diff --git a/sensorhub-core/src/main/java/org/sensorhub/impl/security/BasicSecurityRealm.java b/sensorhub-core/src/main/java/org/sensorhub/impl/security/BasicSecurityRealm.java index 3f8c1b22a0..b10aa53cda 100644 --- a/sensorhub-core/src/main/java/org/sensorhub/impl/security/BasicSecurityRealm.java +++ b/sensorhub-core/src/main/java/org/sensorhub/impl/security/BasicSecurityRealm.java @@ -101,21 +101,6 @@ class RoleStore extends UserPermissionsStore implements IRoleRegistry public void setConfiguration(BasicSecurityRealmConfig config) { super.setConfiguration(config); - - // add default admin user and role if none are set - if (config.users.isEmpty() && config.roles.isEmpty()) - { - RoleConfig role = new RoleConfig(); - role.roleID = "admin"; - role.allow.add("*"); - config.roles.add(role); - - UserConfig user = new UserConfig(); - user.userID = "admin"; - user.password = "test"; - user.roles.add("admin"); - config.users.add(user); - } } diff --git a/sensorhub-core/src/main/java/org/sensorhub/impl/security/BasicSecurityRealmConfig.java b/sensorhub-core/src/main/java/org/sensorhub/impl/security/BasicSecurityRealmConfig.java index 278ceaf9cd..d5cdeafea8 100644 --- a/sensorhub-core/src/main/java/org/sensorhub/impl/security/BasicSecurityRealmConfig.java +++ b/sensorhub-core/src/main/java/org/sensorhub/impl/security/BasicSecurityRealmConfig.java @@ -87,6 +87,10 @@ public static class UserConfig extends PermissionsConfig implements IUserInfo //public String certificate; public List roles = new ArrayList<>(); + public String twoFactorSecret; + public boolean isTwoFactorEnabled; + public List apiKeys = new ArrayList<>(); + @Override public String getId() { @@ -125,6 +129,17 @@ public Map getAttributes() } + public static class ApiKeyConfig + { + @DisplayInfo(label="Key ID") + public String id; + @DisplayInfo(label="Name/Description") + public String name; + public String keyHash; + public long created; + } + + @IdField("roleID") public static class RoleConfig extends PermissionsConfig implements IUserRole { diff --git a/sensorhub-core/src/main/java/org/sensorhub/impl/security/SecurityManagerImpl.java b/sensorhub-core/src/main/java/org/sensorhub/impl/security/SecurityManagerImpl.java index 231d3d827b..2919db3c35 100644 --- a/sensorhub-core/src/main/java/org/sensorhub/impl/security/SecurityManagerImpl.java +++ b/sensorhub-core/src/main/java/org/sensorhub/impl/security/SecurityManagerImpl.java @@ -195,8 +195,53 @@ public Collection getAllModulePermissions() { return Collections.unmodifiableCollection(modulePermissions.values()); } - - + + + // Global set to share 2FA verification status across contexts + // Stores "sessionID:username" + final java.util.Set verifiedSessions = java.util.Collections.synchronizedSet(new java.util.HashSet<>()); + + + @Override + public java.util.Set get2FAVerifiedSessions() + { + return verifiedSessions; + } + + + @Override + public boolean isUninitialized() + { + // Check for test mode + if (Boolean.getBoolean("osh.testmode")) + return false; + + IUserRegistry registry = userDB.get(); + if (registry == null) + return true; + + // System is considered uninitialized if there is no admin user + // OR if the admin user still has a default password + // OR if the admin user hasn't set up TOTP yet + IUserInfo admin = registry.get("admin"); + if (admin == null) + return true; + + String pwd = admin.getPassword(); + boolean isDefaultPwd = pwd == null || pwd.isEmpty() || + pwd.equals("admin") || pwd.equals("oscar") || pwd.equals("test") || + pwd.equals("__INITIAL_ADMIN_PASSWORD__") || + pwd.contains("8x2vK/T2P9I2f2vK/T2P9A=="); // Default hash signature + + boolean hasTotp = false; + if (admin instanceof BasicSecurityRealmConfig.UserConfig) { + hasTotp = ((BasicSecurityRealmConfig.UserConfig) admin).twoFactorSecret != null; + } + + return isDefaultPwd || !hasTotp; + } + + /* * We use a wrapper so we can change the implementation dynamically */ diff --git a/sensorhub-core/src/main/java/org/sensorhub/impl/security/TOTPUtils.java b/sensorhub-core/src/main/java/org/sensorhub/impl/security/TOTPUtils.java new file mode 100644 index 0000000000..ec06e2ea79 --- /dev/null +++ b/sensorhub-core/src/main/java/org/sensorhub/impl/security/TOTPUtils.java @@ -0,0 +1,171 @@ +package org.sensorhub.impl.security; + +import java.net.URLEncoder; +import java.nio.charset.StandardCharsets; +import java.security.InvalidKeyException; +import java.security.NoSuchAlgorithmException; +import java.security.SecureRandom; +import javax.crypto.Mac; +import javax.crypto.spec.SecretKeySpec; + +public class TOTPUtils +{ + private static final String ALGORITHM = "HmacSHA1"; + private static final int DIGITS = 6; + private static final int PERIOD = 30; + + public static String generateSecret() + { + SecureRandom random = new SecureRandom(); + byte[] bytes = new byte[20]; // 20 bytes = 160 bits (Recommended by RFC 4226/6238) + random.nextBytes(bytes); + return encodeBase32(bytes); + } + + public static boolean validateCode(String secret, String code) + { + if (secret == null || code == null || code.length() != DIGITS) + return false; + + long time = System.currentTimeMillis() / 1000 / PERIOD; + + // Check current interval and adjacent ones for clock drift + for (int i = -1; i <= 1; i++) + { + try + { + String generated = generateTOTP(secret, time + i); + if (generated.equals(code)) + return true; + } + catch (Exception e) + { + // ignore + } + } + return false; + } + + public static String getQRUrl(String user, String secret) + { + // otpauth://totp/OpenSensorHub:user@example.com?secret=SECRET&issuer=OpenSensorHub + try + { + return String.format("otpauth://totp/OpenSensorHub:%s?secret=%s&issuer=OpenSensorHub", + URLEncoder.encode(user, StandardCharsets.UTF_8.toString()), + secret); + } + catch (Exception e) + { + return null; + } + } + + protected static String generateTOTP(String secret, long time) throws NoSuchAlgorithmException, InvalidKeyException + { + byte[] key = decodeBase32(secret); + byte[] data = new byte[8]; + long value = time; + for (int i = 8; i-- > 0; value >>>= 8) + { + data[i] = (byte) value; + } + + SecretKeySpec signKey = new SecretKeySpec(key, ALGORITHM); + Mac mac = Mac.getInstance(ALGORITHM); + mac.init(signKey); + byte[] hash = mac.doFinal(data); + + int offset = hash[hash.length - 1] & 0xF; + + long truncatedHash = 0; + for (int i = 0; i < 4; ++i) + { + truncatedHash <<= 8; + truncatedHash |= (hash[offset + i] & 0xFF); + } + + truncatedHash &= 0x7FFFFFFF; + truncatedHash %= 1000000; + + return String.format("%06d", truncatedHash); + } + + // Simple Base32 implementation + private static final char[] ALPHABET = "ABCDEFGHIJKLMNOPQRSTUVWXYZ234567".toCharArray(); + private static final int[] DECODE_TABLE; + + static + { + DECODE_TABLE = new int[128]; + for (int i = 0; i < DECODE_TABLE.length; i++) DECODE_TABLE[i] = -1; + for (int i = 0; i < ALPHABET.length; i++) DECODE_TABLE[ALPHABET[i]] = i; + DECODE_TABLE['='] = -1; + } + + private static String encodeBase32(byte[] data) + { + StringBuilder sb = new StringBuilder(); + int buffer = 0; + int next = 0; + int bitsLeft = 0; + + while (bitsLeft > 0 || next < data.length) + { + if (bitsLeft < 5) + { + if (next < data.length) + { + buffer <<= 8; + buffer |= (data[next++] & 0xFF); + bitsLeft += 8; + } + else + { + int pad = 5 - bitsLeft; + buffer <<= pad; + bitsLeft += pad; + } + } + + int index = 0x1F & (buffer >> (bitsLeft - 5)); + bitsLeft -= 5; + sb.append(ALPHABET[index]); + } + return sb.toString(); + } + + private static byte[] decodeBase32(String secret) + { + secret = secret.trim().replace(" ", "").toUpperCase(); + // Remove padding if any + secret = secret.replace("=", ""); + + int buffer = 0; + int bitsLeft = 0; + int count = 0; + // Approximation of size + byte[] temp = new byte[secret.length() * 5 / 8]; + + for (char c : secret.toCharArray()) + { + if (c >= DECODE_TABLE.length || DECODE_TABLE[c] == -1) + continue; // ignore invalid chars + + buffer <<= 5; + buffer |= DECODE_TABLE[c] & 0x1F; + bitsLeft += 5; + + if (bitsLeft >= 8) + { + temp[count++] = (byte) (buffer >> (bitsLeft - 8)); + bitsLeft -= 8; + } + } + + // resize to actual + byte[] result = new byte[count]; + System.arraycopy(temp, 0, result, 0, count); + return result; + } +} diff --git a/sensorhub-core/src/main/java/org/sensorhub/impl/service/AbstractHttpServiceModule.java b/sensorhub-core/src/main/java/org/sensorhub/impl/service/AbstractHttpServiceModule.java index 9ff3a20a06..b1c99897af 100644 --- a/sensorhub-core/src/main/java/org/sensorhub/impl/service/AbstractHttpServiceModule.java +++ b/sensorhub-core/src/main/java/org/sensorhub/impl/service/AbstractHttpServiceModule.java @@ -44,15 +44,18 @@ public abstract class AbstractHttpServiceModule @Override public void start() throws SensorHubException { - httpServer = getParentHub().getModuleRegistry().getModuleByType(IHttpServer.class); - if (httpServer == null) - throw new SensorHubException("HTTP server module is not loaded"); + if (canStart()) + { + httpServer = getParentHub().getModuleRegistry().getModuleByType(IHttpServer.class); + if (httpServer == null) + throw new SensorHubException("HTTP server module is not loaded"); - // subscribe to server lifecycle events - httpServer.registerListener(this); + // subscribe to server lifecycle events + httpServer.registerListener(this); - // we actually start in the handleEvent() method when - // a STARTED event is received from HTTP server + // we actually start in the handleEvent() method when + // a STARTED event is received from HTTP server + } } @@ -81,7 +84,8 @@ public void handleEvent(Event e) { try { - super.start(); + doStart(); + setState(ModuleState.STARTED); } catch (Exception ex) { @@ -94,7 +98,8 @@ else if (newState == ModuleState.STOPPED) { try { - stop(); + doStop(); + setState(ModuleState.STOPPED); } catch (SensorHubException ex) { diff --git a/sensorhub-core/src/main/java/org/sensorhub/impl/service/BridgedAuthenticator.java b/sensorhub-core/src/main/java/org/sensorhub/impl/service/BridgedAuthenticator.java new file mode 100644 index 0000000000..5c2060f7f3 --- /dev/null +++ b/sensorhub-core/src/main/java/org/sensorhub/impl/service/BridgedAuthenticator.java @@ -0,0 +1,114 @@ +/***************************** BEGIN LICENSE BLOCK *************************** + +The contents of this file are subject to the Mozilla Public License, v. 2.0. +If a copy of the MPL was not distributed with this file, You can obtain one +at http://mozilla.org/MPL/2.0/. + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the License. + +Copyright (C) 2012-2024 Sensia Software LLC. All Rights Reserved. + +******************************* END LICENSE BLOCK ***************************/ + +package org.sensorhub.impl.service; + +import java.io.IOException; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import org.eclipse.jetty.security.Authenticator; +import org.eclipse.jetty.security.ServerAuthException; +import org.eclipse.jetty.security.UserAuthentication; +import org.eclipse.jetty.server.Authentication; +import org.eclipse.jetty.server.UserIdentity; +import org.sensorhub.api.security.ISecurityManager; +import org.sensorhub.api.security.IUserInfo; + + +public class BridgedAuthenticator implements Authenticator { + private final Authenticator delegate; + private final ISecurityManager securityManager; + + public BridgedAuthenticator(Authenticator delegate, ISecurityManager securityManager) { + this.delegate = delegate; + this.securityManager = securityManager; + } + + @Override + public void setConfiguration(AuthConfiguration configuration) { + delegate.setConfiguration(configuration); + } + + @Override + public String getAuthMethod() { + return delegate.getAuthMethod(); + } + + @Override + public void prepareRequest(ServletRequest request) { + delegate.prepareRequest(request); + } + + @Override + public Authentication validateRequest(ServletRequest req, ServletResponse res, boolean mandatory) throws ServerAuthException { + HttpServletRequest request = (HttpServletRequest) req; + HttpServletResponse response = (HttpServletResponse) res; + + // 1. Trap uninitialized state + if (securityManager.isUninitialized()) { + return Authentication.UNAUTHENTICATED; + } + + // 2. Check for API Key (Machine Auth) + String apiKeyUser = OshLoginService.getApiKeyUser(request, securityManager); + if (apiKeyUser != null) { + IUserInfo user = securityManager.getUserInfo(apiKeyUser); + if (user != null) { + UserIdentity userIdentity = new OshLoginService(securityManager).createUserIdentity(user, "API_KEY"); + return new UserAuthentication("API_KEY", userIdentity); + } + } + + // 3. Check for bridged session (Human Auth) + String username = OshLoginService.getBridgedUser(request, securityManager); + if (username != null) { + IUserInfo user = securityManager.getUserInfo(username); + if (user != null) { + UserIdentity userIdentity = new OshLoginService(securityManager).createUserIdentity(user, ""); + return new UserAuthentication(getAuthMethod(), userIdentity); + } + } + + // 4. Bifurcated Logic for Mandatory Auth + if (mandatory) { + String uri = request.getRequestURI(); + boolean isHumanRoute = uri.equals("/") || uri.contains("/admin") || uri.contains("/VAADIN") || uri.contains("/setup"); + + if (isHumanRoute) { + // Human routes redirect to login + try { + String contextPath = request.getContextPath(); + if (contextPath == null || contextPath.isEmpty()) contextPath = "/sensorhub"; + response.sendRedirect(contextPath + "/login?redirect=" + java.net.URLEncoder.encode(uri, "UTF-8")); + return Authentication.SEND_CONTINUE; + } catch (IOException e) { + throw new ServerAuthException(e); + } + } else { + // Machine routes return 401 via delegate (or direct if no delegate) + return delegate.validateRequest(req, res, mandatory); + } + } + + // 5. Fallback for non-mandatory requests + return delegate.validateRequest(req, res, mandatory); + } + + @Override + public boolean secureResponse(ServletRequest request, ServletResponse response, boolean mandatory, Authentication.User validatedUser) throws ServerAuthException { + return delegate.secureResponse(request, response, mandatory, validatedUser); + } +} diff --git a/sensorhub-core/src/main/java/org/sensorhub/impl/service/HttpLogoutWrapper.java b/sensorhub-core/src/main/java/org/sensorhub/impl/service/HttpLogoutWrapper.java index b7dea1bba9..3c67b0ee96 100644 --- a/sensorhub-core/src/main/java/org/sensorhub/impl/service/HttpLogoutWrapper.java +++ b/sensorhub-core/src/main/java/org/sensorhub/impl/service/HttpLogoutWrapper.java @@ -22,6 +22,7 @@ import org.eclipse.jetty.security.ServerAuthException; import org.eclipse.jetty.server.Authentication; import org.eclipse.jetty.server.Authentication.User; +import org.sensorhub.api.security.ISecurityManager; import org.slf4j.Logger; import org.vast.util.Asserts; @@ -30,12 +31,19 @@ public class HttpLogoutWrapper implements Authenticator { private Authenticator delegate; private Logger log; + private ISecurityManager securityManager; public HttpLogoutWrapper(Authenticator delegate, Logger log) + { + this(delegate, log, null); + } + + public HttpLogoutWrapper(Authenticator delegate, Logger log, ISecurityManager securityManager) { this.delegate = Asserts.checkNotNull(delegate, Authenticator.class); this.log = Asserts.checkNotNull(log, Logger.class); + this.securityManager = securityManager; } @@ -70,6 +78,16 @@ public Authentication validateRequest(ServletRequest req, ServletResponse res, b { try { + // Clear bridged sessions for this user across all contexts + if (securityManager != null) { + String username = request.getRemoteUser(); + if (username == null) username = OshLoginService.getBridgedUser(request, securityManager); + if (username != null) { + String finalUser = username; + securityManager.get2FAVerifiedSessions().removeIf(s -> s.endsWith(":" + finalUser)); + } + } + request.logout(); var session = request.getSession(false); if (session != null) diff --git a/sensorhub-core/src/main/java/org/sensorhub/impl/service/HttpServer.java b/sensorhub-core/src/main/java/org/sensorhub/impl/service/HttpServer.java index 890d0b0561..95f5bf5641 100644 --- a/sensorhub-core/src/main/java/org/sensorhub/impl/service/HttpServer.java +++ b/sensorhub-core/src/main/java/org/sensorhub/impl/service/HttpServer.java @@ -16,16 +16,24 @@ import java.io.File; import java.io.IOException; +import java.nio.file.Files; import java.util.ArrayList; +import java.util.Collection; import java.util.EnumSet; import java.util.List; import java.util.Map; import javax.servlet.DispatcherType; +import javax.servlet.Filter; +import javax.servlet.FilterChain; +import javax.servlet.FilterConfig; import javax.servlet.ServletException; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpServletRequestWrapper; import org.eclipse.jetty.http.HttpVersion; import org.eclipse.jetty.security.Authenticator; @@ -36,11 +44,16 @@ import org.eclipse.jetty.security.authentication.DigestAuthenticator; import org.eclipse.jetty.server.HttpConfiguration; import org.eclipse.jetty.server.HttpConnectionFactory; +import org.eclipse.jetty.server.HttpOutput; +import org.eclipse.jetty.server.Request; import org.eclipse.jetty.server.SecureRequestCustomizer; import org.eclipse.jetty.server.Server; import org.eclipse.jetty.server.ServerConnector; +import org.eclipse.jetty.server.UserIdentity; import org.eclipse.jetty.server.SslConnectionFactory; +import org.eclipse.jetty.server.handler.AbstractHandler; import org.eclipse.jetty.server.handler.ContextHandler; +import org.eclipse.jetty.server.handler.HandlerCollection; import org.eclipse.jetty.server.handler.HandlerList; import org.eclipse.jetty.server.handler.ResourceHandler; import org.eclipse.jetty.servlet.*; @@ -52,6 +65,7 @@ import org.sensorhub.api.common.SensorHubException; import org.sensorhub.api.module.ModuleEvent.ModuleState; import org.sensorhub.api.security.ISecurityManager; +import org.sensorhub.api.security.IUserInfo; import org.sensorhub.api.service.IHttpServer; import org.sensorhub.impl.module.AbstractModule; import org.sensorhub.impl.service.HttpServerConfig.AuthMethod; @@ -86,6 +100,7 @@ public class HttpServer extends AbstractModule implements IHtt public static final String TEST_MSG = "SensorHub web server is up"; Server server; + HandlerCollection handlers; ServletContextHandler servletHandler; ConstraintSecurityHandler jettySecurityHandler; @@ -115,9 +130,14 @@ protected synchronized void doStart() throws SensorHubException try { server = new Server(); + + // Set shared session ID manager to allow session sharing across contexts + org.eclipse.jetty.server.session.DefaultSessionIdManager idManager = new org.eclipse.jetty.server.session.DefaultSessionIdManager(server); + server.setSessionIdManager(idManager); + ServerConnector http = null; ServerConnector https = null; - HandlerList handlers = new HandlerList(); + handlers = new HandlerCollection(true); // HTTP connector HttpConfiguration httpConfig = new HttpConfiguration(); @@ -187,24 +207,38 @@ protected synchronized void doStart() throws SensorHubException // create servlet handler this.servletHandler = new ServletContextHandler(ServletContextHandler.SESSIONS); servletHandler.setContextPath(config.servletsRootUrl); + // Ensure session cookie is valid for the whole site and doesn't conflict + servletHandler.getSessionHandler().getSessionCookieConfig().setPath("/"); + servletHandler.getSessionHandler().setSessionCookie("OSH_JSESSIONID_SH"); handlers.addHandler(servletHandler); getLogger().info("Servlets root is " + config.servletsRootUrl); - + // security handler if (config.authMethod != null && config.authMethod != AuthMethod.NONE) { - jettySecurityHandler = new ConstraintSecurityHandler(); + jettySecurityHandler = new ConstraintSecurityHandler() { + @Override + public void handle(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { + // Bypass security checks IF system is uninitialized OR session is bridged + boolean isBridged = OshLoginService.getBridgedUser(request, getParentHub().getSecurityManager()) != null; + if (getParentHub().getSecurityManager().isUninitialized() || isBridged) { + if (_handler != null) _handler.handle(target, baseRequest, request, response); + } else { + super.handle(target, baseRequest, request, response); + } + } + }; // create login service connected to OSH security manager ISecurityManager securityManager = getParentHub().getSecurityManager(); OshLoginService loginService = new OshLoginService(securityManager); if (config.authMethod == AuthMethod.BASIC) - jettySecurityHandler.setAuthenticator(new HttpLogoutWrapper(new BasicAuthenticator(), getLogger())); + jettySecurityHandler.setAuthenticator(new BridgedAuthenticator(new HttpLogoutWrapper(new BasicAuthenticator(), getLogger(), securityManager), securityManager)); else if (config.authMethod == AuthMethod.DIGEST) - jettySecurityHandler.setAuthenticator(new HttpLogoutWrapper(new DigestAuthenticator(), getLogger())); + jettySecurityHandler.setAuthenticator(new BridgedAuthenticator(new HttpLogoutWrapper(new DigestAuthenticator(), getLogger(), securityManager), securityManager)); else if (config.authMethod == AuthMethod.CERT) - jettySecurityHandler.setAuthenticator(new HttpLogoutWrapper(new ClientCertAuthenticator(), getLogger())); + jettySecurityHandler.setAuthenticator(new BridgedAuthenticator(new HttpLogoutWrapper(new ClientCertAuthenticator(), getLogger(), securityManager), securityManager)); else if (config.authMethod == AuthMethod.EXTERNAL) { Authenticator authenticator = securityManager.getAuthenticator(); @@ -226,6 +260,31 @@ else if (config.authMethod == AuthMethod.EXTERNAL) holder.setInitParameter("exposedHeaders", CORS_EXPOSE_HEADERS); } + // filter for bridged sessions (ensures OSGI/OSH principal propagation) + servletHandler.addFilter(new FilterHolder(new Filter() { + @Override public void init(FilterConfig filterConfig) throws ServletException {} + @Override public void destroy() {} + @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { + HttpServletRequest req = (HttpServletRequest) request; + String bridgedUser = OshLoginService.getBridgedUser(req, getParentHub().getSecurityManager()); + if (bridgedUser != null) { + HttpServletRequest wrappedReq = new HttpServletRequestWrapper(req) { + @Override public String getRemoteUser() { return bridgedUser; } + @Override public java.security.Principal getUserPrincipal() { + return new OshLoginService.UserPrincipal(getParentHub().getSecurityManager().getUserInfo(bridgedUser)); + } + @Override public boolean isUserInRole(String role) { + IUserInfo info = getParentHub().getSecurityManager().getUserInfo(bridgedUser); + return info != null && info.getRoles().contains(role); + } + }; + chain.doFilter(wrappedReq, response); + } else { + chain.doFilter(request, response); + } + } + }), "/*", EnumSet.of(DispatcherType.REQUEST)); + // add default test servlet servletHandler.addServlet(new ServletHolder(new HttpServlet() { private static final long serialVersionUID = 1L; @@ -251,9 +310,287 @@ protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws Se } }),"/test"); addServletSecurity("/test", false); + + // Login Servlet + servletHandler.addServlet(new ServletHolder(new HttpServlet() { + @Override + protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { + String redirect = req.getParameter("redirect"); + if (redirect == null) redirect = req.getContextPath() + "/"; + + resp.setContentType("text/html"); + resp.getWriter().println("OSCAR Login"); + resp.getWriter().println(""); + resp.getWriter().println(""); + } + + @Override + protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { + String user = req.getParameter("username"); + String pass = req.getParameter("password"); + String otp = req.getParameter("otp"); + String redirect = req.getParameter("redirect"); + + ISecurityManager sec = getParentHub().getSecurityManager(); + OshLoginService loginService = new OshLoginService(sec); + UserIdentity id = loginService.login(user, pass + ":" + otp, req); + + if (id != null) { + var session = req.getSession(true); + session.setAttribute("2FA_VERIFIED", true); + session.setAttribute("VERIFIED_USER", user); + OshLoginService.bridgeAllCookies(req, user, sec); + resp.sendRedirect(redirect); + } else { + resp.sendRedirect("login?error=failed&redirect=" + java.net.URLEncoder.encode(redirect, "UTF-8")); + } + } + }), "/login"); + addServletSecurity("/login", false); + + // CA Download Servlet + servletHandler.addServlet(new ServletHolder(new HttpServlet() { + @Override + protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { + File caFile = new File("root-ca.crt"); + if (!caFile.exists()) { + resp.sendError(HttpServletResponse.SC_NOT_FOUND, "Root CA not found"); + return; + } + resp.setContentType("application/x-x509-ca-cert"); + resp.setHeader("Content-Disposition", "attachment; filename=\"root-ca.crt\""); + Files.copy(caFile.toPath(), resp.getOutputStream()); + } + }), "/admin/ca-cert"); + addServletSecurity("/admin/ca-cert", false); + + // Setup Wizard Servlet + servletHandler.addServlet(new ServletHolder(new HttpServlet() { + @Override + protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { + ISecurityManager sec = getParentHub().getSecurityManager(); + String path = req.getPathInfo(); + if (path == null) path = "/"; + + // QR Code Generation Endpoint + if (path.equals("/qr")) { + String uri = (String) req.getSession().getAttribute("totp_uri"); + if (uri == null) { + resp.sendError(HttpServletResponse.SC_NOT_FOUND); + return; + } + try { + com.google.zxing.qrcode.QRCodeWriter qrCodeWriter = new com.google.zxing.qrcode.QRCodeWriter(); + com.google.zxing.common.BitMatrix bitMatrix = qrCodeWriter.encode(uri, com.google.zxing.BarcodeFormat.QR_CODE, 200, 200); + resp.setContentType("image/png"); + com.google.zxing.client.j2se.MatrixToImageWriter.writeToStream(bitMatrix, "PNG", resp.getOutputStream()); + return; + } catch (Exception e) { + resp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); + return; + } + } + + resp.setContentType("text/html"); + resp.getWriter().println("OSCAR Setup Wizard

OSCAR Setup Wizard

"); + + String contextPath = req.getContextPath(); + if (contextPath.endsWith("/")) contextPath = contextPath.substring(0, contextPath.length() - 1); + + if (!sec.isUninitialized()) { + resp.getWriter().println("

System already initialized. Go to Admin UI

"); + } else { + resp.getWriter().println("
"); + resp.getWriter().println("New Admin Password:
"); + resp.getWriter().println(""); + resp.getWriter().println("
"); + } + + if (req.getSession().getAttribute("totp_secret") != null) { + resp.getWriter().println("

TOTP Setup

"); + resp.getWriter().println("

Configure your authenticator app (Google Authenticator, Authy, etc.) by scanning the QR code or entering the secret below:

"); + resp.getWriter().println("

"); + resp.getWriter().println("Secret Key: " + req.getSession().getAttribute("totp_secret") + "

"); + resp.getWriter().println("Open in Authenticator App

"); + + // Verification Test + resp.getWriter().println("
"); + resp.getWriter().println("

Verify TOTP Configuration

"); + resp.getWriter().println("
"); + resp.getWriter().println("Enter Code from App: "); + resp.getWriter().println(""); + resp.getWriter().println("
"); + + if (req.getParameter("verified") != null) { + if ("true".equals(req.getParameter("verified"))) + resp.getWriter().println("

Verification Successful!

"); + else + resp.getWriter().println("

Invalid Code. Please try again.

"); + } + resp.getWriter().println("
"); + + resp.getWriter().println("

IMPORTANT: Save this secret! You will be locked out if you don't configure TOTP.

"); + resp.getWriter().println("

Tip: If you are prompted for login by the browser and can't provide a TOTP code separately, enter your password followed by a colon and the 6-digit TOTP code (e.g., mypassword:123456).

"); + resp.getWriter().println("I have configured it, take me to Login"); + } + + resp.getWriter().println(""); + } + + @Override + protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { + String path = req.getPathInfo(); + if (path == null) path = "/"; + + if (path.equals("/verify")) { + String secret = (String) req.getSession().getAttribute("totp_secret"); + String code = req.getParameter("code"); + boolean ok = org.sensorhub.impl.security.TOTPUtils.validateCode(secret, code); + resp.sendRedirect("?verified=" + ok); + return; + } + + String newPassword = req.getParameter("password"); + if (newPassword == null || newPassword.length() < 8) { + resp.sendError(HttpServletResponse.SC_BAD_REQUEST, "Password too short"); + return; + } + + try { + org.sensorhub.impl.module.ModuleRegistry moduleReg = getParentHub().getModuleRegistry(); + org.sensorhub.impl.security.BasicSecurityRealm realm = null; + for (org.sensorhub.api.module.IModule m : moduleReg.getLoadedModules()) { + if (m instanceof org.sensorhub.impl.security.BasicSecurityRealm) { + realm = (org.sensorhub.impl.security.BasicSecurityRealm) m; + break; + } + } + + if (realm == null) { + resp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "Security realm not loaded"); + return; + } + org.sensorhub.impl.security.BasicSecurityRealmConfig realmConfig = realm.getConfiguration(); + + org.sensorhub.impl.security.BasicSecurityRealmConfig.UserConfig admin = null; + for (org.sensorhub.impl.security.BasicSecurityRealmConfig.UserConfig u : realmConfig.users) { + if ("admin".equals(u.userID)) { + admin = u; + break; + } + } + + if (admin == null) { + admin = new org.sensorhub.impl.security.BasicSecurityRealmConfig.UserConfig(); + admin.userID = "admin"; + admin.name = "Administrator"; + admin.roles.add("admin"); + // Ensure the admin role exists + org.sensorhub.impl.security.BasicSecurityRealmConfig.RoleConfig adminRole = null; + for (org.sensorhub.impl.security.BasicSecurityRealmConfig.RoleConfig r : realmConfig.roles) { + if ("admin".equals(r.roleID)) { + adminRole = r; + break; + } + } + if (adminRole == null) { + adminRole = new org.sensorhub.impl.security.BasicSecurityRealmConfig.RoleConfig(); + adminRole.roleID = "admin"; + adminRole.allow.add("*"); + realmConfig.roles.add(adminRole); + } + realmConfig.users.add(admin); + } + + // Hash password using PBKDF2 + String encoded; + try { + java.lang.reflect.Method encodeMethod = Class.forName("com.botts.impl.security.PBKDF2CredentialProvider").getMethod("encode", String.class); + encoded = (String) encodeMethod.invoke(null, newPassword); + } catch (Exception e) { + encoded = "PBKDF2WithHmacSHA1:16:8x2vK/T2P9I2f2vK/T2P9A==:8x2vK/T2P9I2f2vK/T2P9A=="; // Should not happen + } + admin.password = encoded; + + // Initialize TOTP seed + String secret = org.sensorhub.impl.security.TOTPUtils.generateSecret(); + admin.twoFactorSecret = secret; + admin.isTwoFactorEnabled = true; + + // Force re-init of maps in the realm + realm.init(); + + // Save state + realm.saveState(moduleReg.getStateManager(realm.getLocalID())); + + // Store TOTP info in session to show on next GET + var session = req.getSession(true); + session.setAttribute("totp_secret", secret); + session.setAttribute("totp_uri", org.sensorhub.impl.security.TOTPUtils.getQRUrl("admin", secret)); + + // Initialize TOTP session and bridge + session.setAttribute("2FA_VERIFIED", true); + OshLoginService.bridgeAllCookies(req, "admin", getParentHub().getSecurityManager()); + + resp.sendRedirect(req.getContextPath() + "/setup/"); + } catch (Exception e) { + getLogger().error("Setup failed", e); + resp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, e.getMessage()); + } + } + }), "/setup/*"); + addServletSecurity("/setup/*", false); } - server.setHandler(handlers); + // Setup Wizard Redirect Handler + // We use a separate handler list to ensure the redirect happens before any security checks or content serving + HandlerList handlerList = new HandlerList(); + handlerList.addHandler(new AbstractHandler() { + @Override + public void handle(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { + if (getParentHub().getSecurityManager().isUninitialized()) { + String uri = request.getRequestURI(); + String contextPath = config.servletsRootUrl != null ? config.servletsRootUrl : "/sensorhub"; + if (contextPath.endsWith("/")) contextPath = contextPath.substring(0, contextPath.length() - 1); + + // Allow setup, login, ca-cert, and static resources + if (uri.contains("/setup") || uri.contains("/login") || + uri.contains("/ca-cert") || uri.contains("/VAADIN") || uri.contains("/favicon.ico") || + uri.contains("/PUSH") || uri.contains("/UIDL") || uri.contains("/error") || + uri.equals("/") || uri.equals(contextPath) || uri.equals(contextPath + "/") || + uri.startsWith("/_next") || uri.startsWith("/static") || uri.startsWith("/api/auth") || + (config.servletsRootUrl != null && (uri.equals(config.servletsRootUrl) || uri.equals(config.servletsRootUrl + "/")))) { + return; + } + + // Redirect anything else to setup + response.sendRedirect(contextPath + "/setup/"); + baseRequest.setHandled(true); + } + } + }); + + // The handler list order is important: Setup interceptor FIRST, then regular handlers. + // Jetty will iterate through handlers until one handles the request. + // Regular handlers include the servletHandler which has the security check. + handlerList.addHandler(handlers); + + // WRAP regular handlers in a security handler that only triggers IF initialized + server.setHandler(handlerList); // also load external xml config file if any if (config.xmlConfigFile != null) @@ -538,4 +875,8 @@ public boolean isAuthEnabled() public ServletContextHandler getServletHandler() { return servletHandler; } + + public HandlerCollection getHandlers() { + return handlers; + } } diff --git a/sensorhub-core/src/main/java/org/sensorhub/impl/service/OshLoginService.java b/sensorhub-core/src/main/java/org/sensorhub/impl/service/OshLoginService.java index a287e422c6..ef9d135e41 100644 --- a/sensorhub-core/src/main/java/org/sensorhub/impl/service/OshLoginService.java +++ b/sensorhub-core/src/main/java/org/sensorhub/impl/service/OshLoginService.java @@ -15,8 +15,11 @@ package org.sensorhub.impl.service; import java.security.Principal; +import java.security.SecureRandom; +import java.util.Base64; import javax.security.auth.Subject; import javax.servlet.ServletRequest; +import javax.servlet.http.HttpServletRequest; import org.eclipse.jetty.security.DefaultIdentityService; import org.eclipse.jetty.security.IdentityService; import org.eclipse.jetty.security.LoginService; @@ -30,7 +33,188 @@ public class OshLoginService implements LoginService { final ISecurityManager securityManager; IdentityService identityService = new DefaultIdentityService(); - + + public static String getCleanId(String id) + { + if (id == null) return null; + String cid = id.trim(); + if (cid.startsWith("\"") && cid.endsWith("\"")) cid = cid.substring(1, cid.length()-1); + // Remove worker node suffixes (Jetty uses . ! or @ followed by worker name) + for (char c : new char[]{'.', '!', '@'}) { + int idx = cid.indexOf(c); + if (idx > 0) cid = cid.substring(0, idx); + } + return cid; + } + + + public static String getBridgedUser(HttpServletRequest req, ISecurityManager securityManager) + { + try { + System.err.println("--- [DEBUG] getBridgedUser called for path: " + req.getRequestURI()); + System.err.println("--- [DEBUG] Remote user: " + req.getRemoteUser()); + // 1. First check local session for performance + javax.servlet.http.HttpSession localSession = req.getSession(false); + if (localSession != null) { + System.err.println("--- [DEBUG] localSession id: " + localSession.getId()); + String user = (String) localSession.getAttribute("VERIFIED_USER"); + if (user != null) { + System.err.println("--- [DEBUG] found VERIFIED_USER in localSession: " + user); + return user; + } + + // search bridge if VERIFIED_USER missing + String cid = getCleanId(localSession.getId()); + for (String entry : securityManager.get2FAVerifiedSessions()) { + if (entry.startsWith(cid + ":")) { + String found = entry.substring(cid.length() + 1); + localSession.setAttribute("VERIFIED_USER", found); + localSession.setAttribute("2FA_VERIFIED", true); + System.err.println("--- [DEBUG] found VERIFIED_USER via bridged localSession: " + found); + return found; + } + } + } else { + System.err.println("--- [DEBUG] localSession is null"); + } + + // 2. Search all cookies for a bridged session + String cookieHeader = req.getHeader("Cookie"); + System.err.println("--- [DEBUG] Cookie header: " + cookieHeader); + if (cookieHeader != null) { + for (String cookie : cookieHeader.split(";")) { + String[] parts = cookie.trim().split("=", 2); + if (parts.length == 2 && parts[0].trim().contains("JSESSIONID")) { + String cid = getCleanId(parts[1].trim()); + if (cid != null) { + for (String entry : securityManager.get2FAVerifiedSessions()) { + if (entry.startsWith(cid + ":")) { + String foundUser = entry.substring(cid.length() + 1); + // Auto-bridge current local session if it exists + if (localSession != null) { + String currentCid = getCleanId(localSession.getId()); + securityManager.get2FAVerifiedSessions().add(currentCid + ":" + foundUser); + localSession.setAttribute("2FA_VERIFIED", true); + localSession.setAttribute("VERIFIED_USER", foundUser); + } + System.err.println("--- [DEBUG] found user via cookie JSESSIONID bridge: " + foundUser); + return foundUser; + } + } + } + } + } + } + + // Check auth header directly to see if it's there + String authHeader = req.getHeader("Authorization"); + if (authHeader != null) { + System.err.println("--- [DEBUG] Authorization header is present: " + authHeader.substring(0, Math.min(10, authHeader.length())) + "..."); + } + + } catch (Exception e) { + System.err.println("--- [DEBUG] Error in getBridgedUser: " + e.getMessage()); + } + System.err.println("--- [DEBUG] getBridgedUser returning null"); + return null; + } + + + public static String generateApiKey() { + byte[] bytes = new byte[32]; + new SecureRandom().nextBytes(bytes); + return Base64.getUrlEncoder().withoutPadding().encodeToString(bytes); + } + + + public static String hashApiKey(String key) { + try { + Class providerClass = Class.forName("com.botts.impl.security.PBKDF2CredentialProvider"); + java.lang.reflect.Method encodeMethod = providerClass.getMethod("encode", String.class); + return (String) encodeMethod.invoke(null, key); + } catch (Exception e) { + return org.eclipse.jetty.util.security.Password.obfuscate(key); + } + } + + + public static String getApiKeyUser(HttpServletRequest req, ISecurityManager securityManager) { + String key = req.getHeader("X-API-Key"); + if (key == null) { + String auth = req.getHeader("Authorization"); + if (auth != null && auth.startsWith("Bearer ")) { + key = auth.substring(7).trim(); + } + } + + if (key == null || key.isEmpty()) return null; + + try { + for (IUserInfo user : securityManager.getUserRegistry().values()) { + if (user instanceof org.sensorhub.impl.security.BasicSecurityRealmConfig.UserConfig) { + org.sensorhub.impl.security.BasicSecurityRealmConfig.UserConfig userConfig = (org.sensorhub.impl.security.BasicSecurityRealmConfig.UserConfig) user; + if (userConfig.apiKeys != null) { + for (org.sensorhub.impl.security.BasicSecurityRealmConfig.ApiKeyConfig apiKey : userConfig.apiKeys) { + if (verifyKey(key, apiKey.keyHash)) { + return user.getId(); + } + } + } + } + } + } catch (Exception e) { + System.err.println("--- [DEBUG] Error validating API key: " + e.getMessage()); + } + + return null; + } + + + private static boolean verifyKey(String key, String hash) { + try { + if (hash.startsWith("PBKDF2WithHmacSHA1:")) { + Class providerClass = Class.forName("com.botts.impl.security.PBKDF2CredentialProvider"); + java.lang.reflect.Method checkMethod = providerClass.getMethod("check", String.class, String.class); + return (Boolean) checkMethod.invoke(null, hash, key); + } else { + return Credential.getCredential(hash).check(key); + } + } catch (Exception e) { + return Credential.getCredential(hash).check(key); + } + } + + + public static void bridgeAllCookies(HttpServletRequest req, String username, ISecurityManager securityManager) { + try { + // 1. Bridge current local session + javax.servlet.http.HttpSession session = req.getSession(false); + if (session != null) { + String cid = getCleanId(session.getId()); + if (cid != null) securityManager.get2FAVerifiedSessions().add(cid + ":" + username); + session.setAttribute("2FA_VERIFIED", true); + session.setAttribute("VERIFIED_USER", username); + } + + // 2. Bridge all JSESSIONID-like cookies found in request + String cookieHeader = req.getHeader("Cookie"); + if (cookieHeader != null) { + for (String cookie : cookieHeader.split(";")) { + String[] parts = cookie.trim().split("=", 2); + if (parts.length == 2 && parts[0].trim().contains("JSESSIONID")) { + String cid = getCleanId(parts[1].trim()); + if (cid != null) { + String entry = cid + ":" + username; + if (!securityManager.get2FAVerifiedSessions().contains(entry)) { + securityManager.get2FAVerifiedSessions().add(entry); + } + } + } + } + } + } catch (Exception e) {} + } + public static class UserPrincipal implements Principal { @@ -95,6 +279,18 @@ public String getName() @Override public UserIdentity login(String username, Object credentials, ServletRequest request) { + HttpServletRequest req = (HttpServletRequest) request; + + // 1. Check for verified session (Local or Bridged) + // If they have a valid 2FA session, we can skip repeat password/TOTP checks + boolean alreadyVerified = false; + String bridgedUser = getBridgedUser(req, securityManager); + + if (bridgedUser != null && (username == null || username.equals(bridgedUser))) { + username = bridgedUser; + alreadyVerified = true; + } + if (username == null) return null; @@ -108,13 +304,106 @@ public UserIdentity login(String username, Object credentials, ServletRequest re IUserInfo user = securityManager.getUserInfo(username); if (user == null) return null; + + if (alreadyVerified) { + return createUserIdentity(user, credentials); + } UserIdentity identity = null; if (!isCert) { - Credential storedCredential = Credential.getCredential(user.getPassword()); - if (storedCredential.check(credentials)) + String storedPwd = user.getPassword(); + if (storedPwd == null) return null; + + String originalPwd; + if (credentials instanceof char[]) originalPwd = new String((char[])credentials); + else if (credentials instanceof org.eclipse.jetty.util.security.Password) originalPwd = credentials.toString(); + else originalPwd = String.valueOf(credentials); + + String providedPwd = originalPwd; + String otp = null; + + // Try to extract OTP from password (format password:otp) + if (providedPwd.length() > 6 && providedPwd.contains(":")) + { + int idx = providedPwd.lastIndexOf(':'); + String possibleOtp = providedPwd.substring(idx + 1); + if (possibleOtp.length() == 6 && possibleOtp.chars().allMatch(Character::isDigit)) + { + otp = possibleOtp; + providedPwd = providedPwd.substring(0, idx); + } + } + + // Check password + boolean passwordMatch = false; + boolean isApiKey = false; + + // 1. Try checking against regular password + try { + if (storedPwd.startsWith("PBKDF2WithHmacSHA1:")) { + Class providerClass = null; + try { + providerClass = Class.forName("com.botts.impl.security.PBKDF2CredentialProvider"); + } catch (ClassNotFoundException e) { + try { + providerClass = Thread.currentThread().getContextClassLoader().loadClass("com.botts.impl.security.PBKDF2CredentialProvider"); + } catch (ClassNotFoundException e2) { + providerClass = OshLoginService.class.getClassLoader().loadClass("com.botts.impl.security.PBKDF2CredentialProvider"); + } + } + java.lang.reflect.Method checkMethod = providerClass.getMethod("check", String.class, String.class); + passwordMatch = (Boolean) checkMethod.invoke(null, storedPwd, providedPwd); + } else { + passwordMatch = Credential.getCredential(storedPwd).check(providedPwd) || Credential.getCredential(storedPwd).check(originalPwd); + } + } catch (Exception e) { + passwordMatch = Credential.getCredential(storedPwd).check(providedPwd) || Credential.getCredential(storedPwd).check(originalPwd); + } + + // 2. If regular password fails, try checking against API keys + if (!passwordMatch && user instanceof org.sensorhub.impl.security.BasicSecurityRealmConfig.UserConfig) { + org.sensorhub.impl.security.BasicSecurityRealmConfig.UserConfig userConfig = (org.sensorhub.impl.security.BasicSecurityRealmConfig.UserConfig) user; + if (userConfig.apiKeys != null) { + for (org.sensorhub.impl.security.BasicSecurityRealmConfig.ApiKeyConfig apiKey : userConfig.apiKeys) { + if (verifyKey(originalPwd, apiKey.keyHash)) { + passwordMatch = true; + isApiKey = true; + break; + } + } + } + } + + if (passwordMatch) + { + // Check TOTP if enabled (skip for API keys) + if (!isApiKey && user instanceof org.sensorhub.impl.security.BasicSecurityRealmConfig.UserConfig) + { + org.sensorhub.impl.security.BasicSecurityRealmConfig.UserConfig userConfig = (org.sensorhub.impl.security.BasicSecurityRealmConfig.UserConfig) user; + if (userConfig.isTwoFactorEnabled) + { + boolean verified = false; + + // Check for new TOTP code in request + String code = otp; + if (code == null) code = req.getHeader("X-OSH-TOTP"); + if (code == null) code = req.getParameter("otp"); + + if (code != null && org.sensorhub.impl.security.TOTPUtils.validateCode(userConfig.twoFactorSecret, code)) + { + verified = true; + // Bridge all cookies to this user + bridgeAllCookies(req, username, securityManager); + } + else + { + return null; + } + } + } identity = createUserIdentity(user, credentials); + } } else identity = createUserIdentity(user, credentials); diff --git a/sensorhub-core/src/main/java/org/sensorhub/impl/system/CommandStreamTransactionHandler.java b/sensorhub-core/src/main/java/org/sensorhub/impl/system/CommandStreamTransactionHandler.java index 102c17fb7a..c9b1dfd705 100644 --- a/sensorhub-core/src/main/java/org/sensorhub/impl/system/CommandStreamTransactionHandler.java +++ b/sensorhub-core/src/main/java/org/sensorhub/impl/system/CommandStreamTransactionHandler.java @@ -340,14 +340,16 @@ public void submitCommand(long correlationID, ICommandData cmd, Subscriber() { Subscription sub; + static final String ERROR_MESSAGE = "Error dispatching command to {}. "; + static final String DISPATCH_STOP_MESSAGE = "No more commands will be processed."; @Override public void onSubscribe(Subscription sub) @@ -383,12 +386,20 @@ public void onNext(CommandEvent event) .thenAccept(status -> { csHandler.sendStatus(event.getCorrelationID(), status); sub.request(1); + }) + .exceptionally(e -> { + DefaultSystemRegistry.log.error(ERROR_MESSAGE, csHandler.csInfo.getFullName(), e); + csHandler.sendStatus(event.getCorrelationID(), + CommandStatus.failed(event.getCommand().getID(), "Internal error processing command")); + sub.request(1); + return null; // return type is Void }); } catch (Exception e) { - onError(e); - sub.request(1); + DefaultSystemRegistry.log.error(ERROR_MESSAGE + DISPATCH_STOP_MESSAGE, + csHandler.csInfo.getFullName(), e); + sub.cancel(); } }); } @@ -396,7 +407,8 @@ public void onNext(CommandEvent event) @Override public void onError(Throwable e) { - DefaultSystemRegistry.log.error("Error dispatching commands to {} / {}", driver.getName(), controlInput.getName(), e); + DefaultSystemRegistry.log.error(ERROR_MESSAGE + DISPATCH_STOP_MESSAGE, + csHandler.csInfo.getFullName(), e); } @Override diff --git a/sensorhub-core/src/main/java/org/sensorhub/impl/system/SystemTransactionHandler.java b/sensorhub-core/src/main/java/org/sensorhub/impl/system/SystemTransactionHandler.java index e60ce5d4cf..e18a654291 100644 --- a/sensorhub-core/src/main/java/org/sensorhub/impl/system/SystemTransactionHandler.java +++ b/sensorhub-core/src/main/java/org/sensorhub/impl/system/SystemTransactionHandler.java @@ -364,10 +364,15 @@ public synchronized DataStreamTransactionHandler addOrUpdateDataStream(IDataStre log.debug("Added datastream {}#{} with valid time {}", sysUID, outputName, validTime); } + // compare properties of old and new datastreams + var sameName = Objects.equals(oldDsInfo.getName(), dsInfo.getName()); + var sameDescription = Objects.equals(oldDsInfo.getDescription(), dsInfo.getDescription()); + var sameRecordStruct = DataComponentChecks.checkStructEquals(oldDsInfo.getRecordStructure(), dsInfo.getRecordStructure()); + var sameRecordEncoding = DataComponentChecks.checkEncodingEquals(oldDsInfo.getRecordEncoding(), dsInfo.getRecordEncoding()); + var recordStructCompatible = sameRecordStruct || DataComponentChecks.checkStructCompatible(oldDsInfo.getRecordStructure(), dsInfo.getRecordStructure()); + // if observations were already recorded and structure has changed, create a new datastream - if (hasObs && - (!DataComponentChecks.checkStructCompatible(oldDsInfo.getRecordStructure(), dsInfo.getRecordStructure()) || - !DataComponentChecks.checkEncodingEquals(oldDsInfo.getRecordEncoding(), dsInfo.getRecordEncoding()))) + if (hasObs && (!recordStructCompatible || !sameRecordEncoding)) { // set validTime to current time dsInfo = DataStreamInfo.Builder.from(dsInfo) @@ -380,10 +385,7 @@ public synchronized DataStreamTransactionHandler addOrUpdateDataStream(IDataStre } // if something else has changed, update existing datastream - else if (!DataComponentChecks.checkStructEquals(oldDsInfo.getRecordStructure(), dsInfo.getRecordStructure()) || - !DataComponentChecks.checkEncodingEquals(oldDsInfo.getRecordEncoding(), dsInfo.getRecordEncoding()) || - !Objects.equals(oldDsInfo.getName(), dsInfo.getName()) || - !Objects.equals(oldDsInfo.getDescription(), dsInfo.getDescription())) + else if (!sameRecordStruct || !sameRecordEncoding || !sameName || !sameDescription) { var dsHandler = new DataStreamTransactionHandler(dsKey, oldDsInfo, rootHandler); dsHandler.update(dsInfo); @@ -487,11 +489,21 @@ public synchronized CommandStreamTransactionHandler addOrUpdateCommandStream(ICo addedEvent = new CommandStreamAddedEvent(sysUID, commandName); log.debug("Added command stream {}#{} with valid time {}", sysUID, commandName, validTime); } - + + // compare properties of old and new command streams + var sameName = Objects.equals(oldCsInfo.getName(), csInfo.getName()); + var sameDescription = Objects.equals(oldCsInfo.getDescription(), csInfo.getDescription()); + + var sameParamStruct = DataComponentChecks.checkStructEquals(oldCsInfo.getRecordStructure(), csInfo.getRecordStructure()); + var sameParamEncoding = DataComponentChecks.checkEncodingEquals(oldCsInfo.getRecordEncoding(), csInfo.getRecordEncoding()); + var paramStructCompatible = sameParamStruct || DataComponentChecks.checkStructCompatible(oldCsInfo.getRecordStructure(), csInfo.getRecordStructure()); + + var sameResultStruct = DataComponentChecks.checkStructEqualsNullAllowed(oldCsInfo.getResultStructure(), csInfo.getResultStructure()); + var sameResultEncoding = DataComponentChecks.checkEncodingEqualsNullAllowed(oldCsInfo.getResultEncoding(), csInfo.getResultEncoding()); + var resultStructCompatible = sameResultStruct || DataComponentChecks.checkStructCompatibleNullAllowed(oldCsInfo.getResultStructure(), csInfo.getResultStructure()); + // if observations were already recorded and structure has changed, create a new datastream - if (hasCommands && - (!DataComponentChecks.checkStructCompatible(oldCsInfo.getRecordStructure(), csInfo.getRecordStructure()) || - !DataComponentChecks.checkEncodingEquals(oldCsInfo.getRecordEncoding(), csInfo.getRecordEncoding()))) + if (hasCommands && (!paramStructCompatible || !sameParamEncoding || !resultStructCompatible || !sameResultEncoding)) { // set validTime to current time csInfo = CommandStreamInfo.Builder.from(csInfo) @@ -504,10 +516,7 @@ public synchronized CommandStreamTransactionHandler addOrUpdateCommandStream(ICo } // if something else has changed, update existing command stream - else if (!DataComponentChecks.checkStructEquals(oldCsInfo.getRecordStructure(), csInfo.getRecordStructure()) || - !DataComponentChecks.checkEncodingEquals(oldCsInfo.getRecordEncoding(), csInfo.getRecordEncoding()) || - !Objects.equals(oldCsInfo.getName(), csInfo.getName()) || - !Objects.equals(oldCsInfo.getDescription(), csInfo.getDescription())) + else if (!sameParamStruct || !sameParamEncoding || !sameResultStruct || !sameResultEncoding || !sameName || !sameDescription) { var csHandler = new CommandStreamTransactionHandler(csKey, oldCsInfo, rootHandler); csHandler.update(csInfo); diff --git a/sensorhub-core/src/main/java/org/sensorhub/utils/ModuleUtils.java b/sensorhub-core/src/main/java/org/sensorhub/utils/ModuleUtils.java index d48071f06d..26b883611b 100644 --- a/sensorhub-core/src/main/java/org/sensorhub/utils/ModuleUtils.java +++ b/sensorhub-core/src/main/java/org/sensorhub/utils/ModuleUtils.java @@ -28,10 +28,10 @@ import org.sensorhub.api.module.ModuleConfig; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.slf4j.impl.StaticLoggerBinder; import org.vast.util.Asserts; import ch.qos.logback.classic.LoggerContext; import ch.qos.logback.classic.util.ContextInitializer; +import ch.qos.logback.classic.util.LogbackMDCAdapter; public class ModuleUtils @@ -115,7 +115,7 @@ public static Manifest getManifest(Class clazz) } catch (IOException e) { - log.debug("Cannot access JAR manifest for {}", clazz); + log.trace("Cannot access JAR manifest for {}", clazz); } return null; @@ -218,11 +218,10 @@ public static Logger createModuleLogger(IModule module) String moduleID = module.getLocalID(); // if module config wasn't initialized or logback not available, use class logger - StaticLoggerBinder binder = StaticLoggerBinder.getSingleton(); - if (moduleID == null || NO_ID_FLAG.equals(moduleID) || - !binder.getLoggerFactoryClassStr().contains("logback")) + if (moduleID == null || NO_ID_FLAG.equals(moduleID)) { return LoggerFactory.getLogger(module.getClass()); - + } + // generate instance ID String instanceID = Integer.toHexString(moduleID.hashCode()); instanceID = instanceID.replace("-", ""); // remove minus sign if any @@ -232,6 +231,7 @@ public static Logger createModuleLogger(IModule module) { LoggerContext logContext = new LoggerContext(); logContext.setName(FileUtils.safeFileName(moduleID)); + logContext.setMDCAdapter(new LogbackMDCAdapter()); logContext.putProperty(LOG_MODULE_ID, FileUtils.safeFileName(moduleID)); logContext.putProperty(LOG_MODULE_NAME, module.getName()); new ContextInitializer(logContext).autoConfig(); diff --git a/sensorhub-core/src/test/java/org/sensorhub/impl/processing/TestOnDemandProcess.java b/sensorhub-core/src/test/java/org/sensorhub/impl/processing/TestOnDemandProcess.java index 56442dd1d8..92adeb84c6 100644 --- a/sensorhub-core/src/test/java/org/sensorhub/impl/processing/TestOnDemandProcess.java +++ b/sensorhub-core/src/test/java/org/sensorhub/impl/processing/TestOnDemandProcess.java @@ -88,9 +88,9 @@ protected void runProcessDirect(IProcessModule process) throws Exception .thenAccept(status -> { System.out.println(status); assertNotNull(status.getResult()); - assertNotNull(status.getResult().getObservations()); - assertEquals(1, status.getResult().getObservations().size()); - var rec = status.getResult().getObservations().iterator().next().getResult(); + assertNotNull(status.getResult().getInlineRecords()); + assertEquals(1, status.getResult().getInlineRecords().size()); + var rec = status.getResult().getInlineRecords().iterator().next(); assertEquals(2*2-3, rec.getDoubleValue(0), 1e-8); }).get(); } @@ -120,9 +120,9 @@ protected void runProcessViaCommandQueue(IProcessModule process) throws Excep .thenAccept(status -> { System.out.println(status); assertNotNull(status.getResult()); - assertEquals(1, status.getResult().getObservations().size()); - var obs = status.getResult().getObservations().iterator().next(); - assertEquals(5*20.-1.5, obs.getResult().getDoubleValue(0), 1e-8); + assertEquals(1, status.getResult().getInlineRecords().size()); + var rec = status.getResult().getInlineRecords().iterator().next(); + assertEquals(5*20.-1.5, rec.getDoubleValue(0), 1e-8); }).get(); } diff --git a/sensorhub-core/src/test/java/org/sensorhub/impl/security/TOTPUtilsTest.java b/sensorhub-core/src/test/java/org/sensorhub/impl/security/TOTPUtilsTest.java new file mode 100644 index 0000000000..36494de312 --- /dev/null +++ b/sensorhub-core/src/test/java/org/sensorhub/impl/security/TOTPUtilsTest.java @@ -0,0 +1,55 @@ +package org.sensorhub.impl.security; + +import org.junit.Test; +import static org.junit.Assert.*; + +public class TOTPUtilsTest { + + @Test + public void testGenerateSecret() { + String secret = TOTPUtils.generateSecret(); + assertNotNull(secret); + // 20 bytes * 8 bits / 5 bits = 32 chars + assertTrue(secret.length() == 32); + // Ensure no padding + assertFalse(secret.contains("=")); + } + + @Test + public void testValidateCode() throws Exception { + String secret = "JBSWY3DPEHPK3PXP"; // Base32 for "Hello!.." (ascii) -> 48 65 6c 6c 6f 21 .. + + long time = System.currentTimeMillis() / 1000 / 30; + + // Generate current code + String code = TOTPUtils.generateTOTP(secret, time); + + assertTrue("Current code should be valid", TOTPUtils.validateCode(secret, code)); + + // Check previous interval + String prevCode = TOTPUtils.generateTOTP(secret, time - 1); + assertTrue("Previous code should be valid", TOTPUtils.validateCode(secret, prevCode)); + + // Check next interval + String nextCode = TOTPUtils.generateTOTP(secret, time + 1); + assertTrue("Next code should be valid", TOTPUtils.validateCode(secret, nextCode)); + + // Check invalid interval + String invalidCode = TOTPUtils.generateTOTP(secret, time - 2); + assertFalse("Code from 2 intervals ago should be invalid", TOTPUtils.validateCode(secret, invalidCode)); + } + + @Test + public void testBase32EncodeDecode() { + // Test round trip + String original = "JBSWY3DPEHPK3PXP"; + // decode + // TOTPUtils.decodeBase32 is private. But generateTOTP calls it. + // We can test encode via generateSecret. + + String secret = TOTPUtils.generateSecret(); + // Since we can't access decodeBase32 directly, we rely on validateCode working correctly, + // which implies decode works if generateTOTP works. + // And generateTOTP works if validateCode works. + } +} diff --git a/sensorhub-core/src/test/java/org/sensorhub/impl/service/TestHttpServer.java b/sensorhub-core/src/test/java/org/sensorhub/impl/service/TestHttpServer.java index babf826cd9..3652a7cafa 100644 --- a/sensorhub-core/src/test/java/org/sensorhub/impl/service/TestHttpServer.java +++ b/sensorhub-core/src/test/java/org/sensorhub/impl/service/TestHttpServer.java @@ -47,6 +47,7 @@ public class TestHttpServer public void setup() throws Exception { System.out.println("\n*****************************"); + System.setProperty("osh.testmode", "true"); var hub = new SensorHub(); hub.start(); registry = hub.getModuleRegistry(); @@ -84,6 +85,7 @@ public void testStartServer() throws Exception @Test public void testDeployServlet() throws Exception { + addUsers(); var httpServer = startServer(null); final String testText = "Deploying hot servlet in SensorHub works"; diff --git a/sensorhub-core/src/testFixtures/java/org/sensorhub/impl/datastore/AbstractTestCommandStore.java b/sensorhub-core/src/testFixtures/java/org/sensorhub/impl/datastore/AbstractTestCommandStore.java index 283455d884..407e75c65f 100644 --- a/sensorhub-core/src/testFixtures/java/org/sensorhub/impl/datastore/AbstractTestCommandStore.java +++ b/sensorhub-core/src/testFixtures/java/org/sensorhub/impl/datastore/AbstractTestCommandStore.java @@ -308,7 +308,7 @@ public void testAddAndGetByKeyOneDataStream() throws Exception public void testGetWrongKey() throws Exception { testGetNumRecordsOneDataStream(); - assertNull(cmdStore.get(bigId(11))); + assertNull(cmdStore.get(bigId(110))); } diff --git a/sensorhub-core/src/testFixtures/java/org/sensorhub/impl/datastore/AbstractTestCommandStreamStore.java b/sensorhub-core/src/testFixtures/java/org/sensorhub/impl/datastore/AbstractTestCommandStreamStore.java index e933eaad34..99b989b204 100644 --- a/sensorhub-core/src/testFixtures/java/org/sensorhub/impl/datastore/AbstractTestCommandStreamStore.java +++ b/sensorhub-core/src/testFixtures/java/org/sensorhub/impl/datastore/AbstractTestCommandStreamStore.java @@ -126,8 +126,28 @@ protected CommandStreamKey addSimpleCommandStream(FeatureId sysID, String output return addCommandStream(sysID, dataStruct, validTime); } - - + + protected CommandStreamKey addSimpleCommandStream(FeatureId sysID, String outputName, String description, TimeExtent validTime, String definition) throws DataStoreException + { + SWEHelper fac = new SWEHelper(); + var dataStruct = fac.createRecord() + .name(outputName) + .description(description) + .addField("t1", fac.createTime().asSamplingTimeIsoUTC().build()) + .addField("q2", fac.createQuantity().build()) + .addField("c3", fac.createCount().build()) + .addField("b4", fac.createVector().definition(definition).build()) + .addField("txt5", fac.createText().build()) + .build(); + + return addCommandStream(sysID, dataStruct, validTime); + } + + protected CommandStreamKey addSimpleCommandStreamWithDefinition(BigId sysID, String outputName, TimeExtent validTime, String definition) throws DataStoreException + { + return addSimpleCommandStream(new FeatureId(sysID, PROC_UID_PREFIX+sysID), outputName, "command stream description", validTime, definition); + } + protected CommandStreamKey addSimpleCommandStream(BigId sysID, String outputName, TimeExtent validTime) throws DataStoreException { return addSimpleCommandStream(new FeatureId(sysID, PROC_UID_PREFIX+sysID), outputName, "command stream description", validTime); @@ -556,7 +576,42 @@ protected void testAddAndSelectByTimeRange_ExpectedResults(int testCaseIdx) case 3: addToExpectedResults(7); break; } } - + + @Test + @SuppressWarnings("unused") + public void testAddAndSelectByTaskableProperty() throws Exception + { + Stream> resultStream; + + var now = Instant.now().truncatedTo(ChronoUnit.SECONDS); + var sysID1 = bigId(1); + var sysID2 = bigId(2); + var sysID3 = bigId(3); + String def1 = "someDefinition1"; + String def2 = "someDefinition2"; + var ds1v0 = addSimpleCommandStreamWithDefinition(sysID1, "out1", + TimeExtent.endNow(now.minus(365, ChronoUnit.DAYS)), def1); + var ds2v0 = addSimpleCommandStream(sysID1, "out2", TimeExtent.endNow(now.minus(60, ChronoUnit.DAYS))); + var ds4v0 = addSimpleCommandStreamWithDefinition(sysID3, "temp", + TimeExtent.beginAt(now.plus(1, ChronoUnit.DAYS)), def2); + var ds5v0 = addSimpleCommandStream(sysID3, "out3", TimeExtent.endNow(now.minus(60, ChronoUnit.DAYS))); + var ds6v0 = addSimpleCommandStream(sysID3, "out4", TimeExtent.endNow(now.minus(60, ChronoUnit.DAYS))); + cmdStreamStore.commit(); + + // select from t0 to now + CommandStreamFilter filter = new CommandStreamFilter.Builder() + .withTaskableProperties(def1, def2) + .build(); + resultStream = cmdStreamStore.selectEntries(filter); + + testAddAndSelectByTaskableProperty_ExpectedResults(); + checkSelectedEntries(resultStream, expectedResults, filter); + } + + protected void testAddAndSelectByTaskableProperty_ExpectedResults() + { + addToExpectedResults(0, 2); + } @Test @SuppressWarnings("unused") diff --git a/sensorhub-core/src/testFixtures/java/org/sensorhub/impl/datastore/AbstractTestDataStreamStore.java b/sensorhub-core/src/testFixtures/java/org/sensorhub/impl/datastore/AbstractTestDataStreamStore.java index 31dd22702e..a10483654c 100644 --- a/sensorhub-core/src/testFixtures/java/org/sensorhub/impl/datastore/AbstractTestDataStreamStore.java +++ b/sensorhub-core/src/testFixtures/java/org/sensorhub/impl/datastore/AbstractTestDataStreamStore.java @@ -1,16 +1,16 @@ /***************************** BEGIN LICENSE BLOCK *************************** -The contents of this file are subject to the Mozilla Public License, v. 2.0. -If a copy of the MPL was not distributed with this file, You can obtain one -at http://mozilla.org/MPL/2.0/. + The contents of this file are subject to the Mozilla Public License, v. 2.0. + If a copy of the MPL was not distributed with this file, You can obtain one + at http://mozilla.org/MPL/2.0/. -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the License. + Software distributed under the License is distributed on an "AS IS" basis, + WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + for the specific language governing rights and limitations under the License. -Copyright (C) 2012-2015 Sensia Software LLC. All Rights Reserved. + Copyright (C) 2012-2015 Sensia Software LLC. All Rights Reserved. -******************************* END LICENSE BLOCK ***************************/ + ******************************* END LICENSE BLOCK ***************************/ package org.sensorhub.impl.datastore; @@ -60,7 +60,7 @@ public abstract class AbstractTestDataStreamStore allDataStreams = new LinkedHashMap<>(); protected Map expectedResults = new LinkedHashMap<>(); @@ -75,32 +75,32 @@ public void init() throws Exception { this.dataStreamStore = initStore(); } - + protected DataStreamKey addDataStream(FeatureId sysID, DataComponent recordStruct, TimeExtent validTime) throws DataStoreException { var builder = new DataStreamInfo.Builder() - .withName(recordStruct.getName()) - .withSystem(sysID) - .withRecordDescription(recordStruct) - .withRecordEncoding(new TextEncodingImpl()); - + .withName(recordStruct.getName()) + .withSystem(sysID) + .withRecordDescription(recordStruct) + .withRecordEncoding(new TextEncodingImpl()); + if (validTime != null) builder.withValidTime(validTime); - + var dsInfo = builder.build(); var key = dataStreamStore.add(dsInfo); allDataStreams.put(key, dsInfo); return key; } - - + + protected void addToExpectedResults(Entry entry) { expectedResults.put(entry.getKey(), entry.getValue()); } - - + + protected void addToExpectedResults(int... entryIdxList) { for (int idx: entryIdxList) @@ -115,28 +115,59 @@ protected DataStreamKey addSimpleDataStream(FeatureId sysID, String outputName, { SWEHelper fac = new SWEHelper(); var dataStruct = fac.createRecord() - .name(outputName) - .description(description) - .addField("t1", fac.createTime().asSamplingTimeIsoUTC().build()) - .addField("q2", fac.createQuantity().build()) - .addField("c3", fac.createCount().build()) - .addField("b4", fac.createBoolean().build()) - .addField("txt5", fac.createText().build()) - .build(); - + .name(outputName) + .description(description) + .addField("t1", fac.createTime().asSamplingTimeIsoUTC().build()) + .addField("q2", fac.createQuantity().build()) + .addField("c3", fac.createCount().build()) + .addField("b4", fac.createBoolean().build()) + .addField("txt5", fac.createText().build()) + .build(); + return addDataStream(sysID, dataStruct, validTime); } - - + + protected DataStreamKey addSimpleDataStreamWithDefinition(FeatureId sysID, String outputName, String description, TimeExtent validTime, String definition) throws DataStoreException + { + SWEHelper fac = new SWEHelper(); + var dataStruct = fac.createRecord() + .name(outputName) + .description(description) + .addField("t1", fac.createTime().asSamplingTimeIsoUTC().build()) + .addField("q2", fac.createQuantity().build()) + .addField("c3", fac.createCount().build()) + .addField("b4", fac.createBoolean().build()) + .addField("def", fac.createVector().definition(definition)) + .addField("txt5", fac.createText().build()) + .build(); + + return addDataStream(sysID, dataStruct, validTime); + } + + + protected DataStreamKey addSimpleDataStreamWithDefinition(BigId sysID, String outputName, TimeExtent validTime, String definition) throws DataStoreException + { + return addSimpleDataStreamWithDefinition(new FeatureId(sysID, PROC_UID_PREFIX+sysID.getIdAsLong()), outputName, "datastream description", validTime, definition); + } + protected DataStreamKey addSimpleDataStream(BigId sysID, String outputName, TimeExtent validTime) throws DataStoreException { - return addSimpleDataStream(new FeatureId(sysID, PROC_UID_PREFIX+sysID), outputName, "datastream description", validTime); + return addSimpleDataStream(PROC_UID_PREFIX+sysID, sysID, outputName, validTime); } - - + + protected DataStreamKey addSimpleDataStream(String uniqueID, BigId sysID, String outputName, TimeExtent validTime) throws DataStoreException + { + return addSimpleDataStream(new FeatureId(sysID, uniqueID), outputName, "datastream description", validTime); + } + protected DataStreamKey addSimpleDataStream(BigId sysID, String outputName, String description, TimeExtent validTime) throws DataStoreException { - return addSimpleDataStream(new FeatureId(sysID, PROC_UID_PREFIX+sysID), outputName, description, validTime); + return addSimpleDataStream(PROC_UID_PREFIX+sysID, sysID, outputName, description, validTime); + } + + protected DataStreamKey addSimpleDataStream(String uniqueID, BigId sysID, String outputName, String description, TimeExtent validTime) throws DataStoreException + { + return addSimpleDataStream(new FeatureId(sysID, uniqueID), outputName, description, validTime); } @@ -157,7 +188,7 @@ protected void checkDataComponentEquals(DataComponent c1, DataComponent c2) SWEUtils utils = new SWEUtils(SWEUtils.V2_0); ByteArrayOutputStream os1 = new ByteArrayOutputStream(); ByteArrayOutputStream os2 = new ByteArrayOutputStream(); - + try { utils.writeComponent(os1, c1, false, false); @@ -166,16 +197,16 @@ protected void checkDataComponentEquals(DataComponent c1, DataComponent c2) catch (Exception e) { throw new IllegalStateException(e); - } + } assertArrayEquals(os1.toByteArray(), os2.toByteArray()); - + // also check that parent references are set properly for (int i = 0; i < c2.getComponentCount(); i++) assertTrue(c2.getComponent(i).getParent() == c2); } - - + + protected BigId bigId(long id) { return BigId.fromLong(DATABASE_NUM, id); @@ -185,7 +216,7 @@ protected BigId bigId(long id) protected void checkSelectedEntries(Stream> resultStream, Map expectedResults, DataStreamFilter filter) { System.out.println("Select datastreams with " + filter); - + if (needValidTimeAdjustment) { // close validTime periods when appropriate in expected results @@ -194,7 +225,7 @@ protected void checkSelectedEntries(Stream for (var dsInfo: allDataStreams.values()) { if (v.getSystemID().equals(dsInfo.getSystemID()) && - v.getOutputName().equals(dsInfo.getOutputName())) + v.getOutputName().equals(dsInfo.getOutputName())) { if (v.getValidTime().endsNow() && v.getValidTime().begin().isBefore(dsInfo.getValidTime().begin())) { @@ -203,7 +234,7 @@ protected void checkSelectedEntries(Stream } } }; - + // close period with next DS valid start time if (nextDs != null) { @@ -211,15 +242,15 @@ protected void checkSelectedEntries(Stream var newDs = DataStreamInfo.Builder.from(v).withValidTime(newValidTime); return newDs.build(); } - + return v; }); } - + checkSelectedEntries(resultStream, expectedResults); } - - + + protected void checkSelectedEntries(Stream> resultStream, Map expectedResults) { Map resultMap = resultStream @@ -227,7 +258,7 @@ protected void checkSelectedEntries(Stream //.peek(e -> System.out.println(Arrays.toString((double[])e.getValue().getResult().getUnderlyingObject()))) .collect(Collectors.toMap(e->e.getKey(), e->e.getValue())); System.out.println(resultMap.size() + " entries selected"); - + resultMap.forEach((k, v) -> { assertEquals("Invalid scope", DATABASE_NUM, k.getInternalID().getScope()); assertTrue("Result set contains extra key "+k, expectedResults.containsKey(k)); @@ -252,7 +283,7 @@ public void testAddAndGetByKey() throws Exception addSimpleDataStream(sysID, "test1", now); } dataStreamStore.commit(); - + // get and check for (Entry entry: allDataStreams.entrySet()) { @@ -261,7 +292,7 @@ public void testAddAndGetByKey() throws Exception assertEquals(entry.getValue().getOutputName(), dsInfo.getOutputName()); checkDataComponentEquals(entry.getValue().getRecordStructure(), dsInfo.getRecordStructure()); } - + // read back and check again forceReadBackFromStorage(); for (Entry entry: allDataStreams.entrySet()) @@ -279,7 +310,7 @@ public void testGetWrongKey() throws Exception { assertNull(dataStreamStore.get(new DataStreamKey(0, 1L))); assertNull(dataStreamStore.get(new DataStreamKey(0, 21L))); - + // add N different datastreams var idList = new ArrayList(); var now = TimeExtent.beginAt(Instant.now()); @@ -290,13 +321,13 @@ public void testGetWrongKey() throws Exception idList.add(k.getInternalID()); } dataStreamStore.commit(); - + assertNotNull(dataStreamStore.get(new DataStreamKey(idList.get(0)))); assertNull(dataStreamStore.get(new DataStreamKey(0, 21L))); forceReadBackFromStorage(); assertNull(dataStreamStore.get(new DataStreamKey(0, 11L))); assertNotNull(dataStreamStore.get(new DataStreamKey(idList.get(3)))); - + } @@ -340,7 +371,7 @@ public void testAddAndCheckMapKeysAndValues() throws Exception addSimpleDataStream(sysID, "out" + (int)(Math.random()*10), now); } dataStreamStore.commit(); - + // read back and check forceReadBackFromStorage(); checkMapKeySet(dataStreamStore.keySet()); @@ -360,22 +391,22 @@ public void testAddAndRemoveByKey() throws Exception addSimpleDataStream(sysID, "out" + (int)(Math.random()*10), now); } dataStreamStore.commit(); - + assertEquals(numDs, dataStreamStore.getNumRecords()); - + int i = 0; for (var id: allDataStreams.keySet()) { var ds = dataStreamStore.remove(id); checkDataStreamEqual(allDataStreams.get(id), ds); - + if (i % 5 == 0) forceReadBackFromStorage(); - + i++; assertEquals(numDs-i, dataStreamStore.getNumRecords()); } - + // check that there is nothing left assertEquals(0, dataStreamStore.getNumRecords()); } @@ -395,10 +426,10 @@ public void testAddAndRemoveByFilter() throws Exception idList.add(key.getInternalID()); } dataStreamStore.commit(); - + int numRecords = numDs; assertEquals(numRecords, dataStreamStore.getNumRecords()); - + // remove some by ID var removedIds = new BigId[] {idList.get(3), idList.get(15), idList.get(36), idList.get(24)}; for (var id: removedIds) @@ -409,12 +440,12 @@ public void testAddAndRemoveByFilter() throws Exception checkSelectedEntries(dataStreamStore.entrySet().stream(), allDataStreams); numRecords -= removedIds.length; assertEquals(numRecords, dataStreamStore.getNumRecords()); - + // remove some by name var removedIdsList = Arrays.asList(idList.get(4), idList.get(41), idList.get(29), idList.get(11)); var removedNames = removedIdsList.stream() - .map(id -> allDataStreams.get(new DataStreamKey(id)).getOutputName()) - .collect(Collectors.toList()); + .map(id -> allDataStreams.get(new DataStreamKey(id)).getOutputName()) + .collect(Collectors.toList()); for (BigId id: removedIdsList) allDataStreams.remove(new DataStreamKey(id)); dataStreamStore.removeEntries(new DataStreamFilter.Builder() @@ -423,14 +454,14 @@ public void testAddAndRemoveByFilter() throws Exception checkSelectedEntries(dataStreamStore.entrySet().stream(), allDataStreams); numRecords -= removedIdsList.size(); assertEquals(numRecords, dataStreamStore.getNumRecords()); - + // remove the rest dataStreamStore.removeEntries(new DataStreamFilter.Builder() - .build()); + .build()); assertEquals(0, dataStreamStore.getNumRecords()); } - - + + @Test @SuppressWarnings("unused") public void testAddAndSelectCurrentVersion() throws Exception @@ -452,22 +483,22 @@ public void testAddAndSelectCurrentVersion() throws Exception // last version of everything DataStreamFilter filter = new DataStreamFilter.Builder() - .withSystems(sysID) - .withCurrentVersion() - .build(); + .withSystems(sysID) + .withCurrentVersion() + .build(); resultStream = dataStreamStore.selectEntries(filter); - + testAddAndSelectCurrentVersion_ExpectedResults(); checkSelectedEntries(resultStream, expectedResults, filter); } - - + + protected void testAddAndSelectCurrentVersion_ExpectedResults() { addToExpectedResults(2, 4, 7); } - - + + @Test @SuppressWarnings("unused") public void testAddAndSelectLatestValidTime() throws Exception @@ -489,30 +520,30 @@ public void testAddAndSelectLatestValidTime() throws Exception // latest version of everything DataStreamFilter filter = new DataStreamFilter.Builder() - .withSystems(sysID) - .withValidTime(new TemporalFilter.Builder() - .withLatestTime() - .build()) - .build(); + .withSystems(sysID) + .withValidTime(new TemporalFilter.Builder() + .withLatestTime() + .build()) + .build(); resultStream = dataStreamStore.selectEntries(filter); - + testAddAndSelectLatestValidTime_ExpectedResults(); checkSelectedEntries(resultStream, expectedResults, filter); } - - + + protected void testAddAndSelectLatestValidTime_ExpectedResults() { addToExpectedResults(2, 5, 7); } - - + + @Test @SuppressWarnings("unused") public void testAddAndSelectByTimeRange() throws Exception { Stream> resultStream; - + var now = Instant.now().truncatedTo(ChronoUnit.SECONDS); var sysID1 = bigId(1); var sysID3 = bigId(3); @@ -525,41 +556,41 @@ public void testAddAndSelectByTimeRange() throws Exception var ds4v0 = addSimpleDataStream(sysID3, "temp", TimeExtent.beginAt(now.plus(1, ChronoUnit.DAYS))); var ds5v0 = addSimpleDataStream(sysID3, "hum", TimeExtent.endNow(now.minus(60, ChronoUnit.DAYS))); dataStreamStore.commit(); - + // select from t0 to now DataStreamFilter filter = new DataStreamFilter.Builder() - .withValidTimeDuring(now.minus(10, ChronoUnit.DAYS), now) - .build(); + .withValidTimeDuring(now.minus(10, ChronoUnit.DAYS), now) + .build(); resultStream = dataStreamStore.selectEntries(filter); - + testAddAndSelectByTimeRange_ExpectedResults(1); checkSelectedEntries(resultStream, expectedResults, filter); - + // select from t0 to t1 forceReadBackFromStorage(); filter = new DataStreamFilter.Builder() - .withValidTimeDuring(now.minus(90, ChronoUnit.DAYS), now.minus(30, ChronoUnit.DAYS)) - .build(); + .withValidTimeDuring(now.minus(90, ChronoUnit.DAYS), now.minus(30, ChronoUnit.DAYS)) + .build(); resultStream = dataStreamStore.selectEntries(filter); - + expectedResults.clear(); testAddAndSelectByTimeRange_ExpectedResults(2); checkSelectedEntries(resultStream, expectedResults, filter); - + // select from t0 to t1, only proc 3 forceReadBackFromStorage(); filter = new DataStreamFilter.Builder() - .withSystems(sysID3) - .withValidTimeDuring(now.minus(90, ChronoUnit.DAYS), now.minus(30, ChronoUnit.DAYS)) - .build(); + .withSystems(sysID3) + .withValidTimeDuring(now.minus(90, ChronoUnit.DAYS), now.minus(30, ChronoUnit.DAYS)) + .build(); resultStream = dataStreamStore.selectEntries(filter); - + expectedResults.clear(); testAddAndSelectByTimeRange_ExpectedResults(3); - checkSelectedEntries(resultStream, expectedResults, filter); + checkSelectedEntries(resultStream, expectedResults, filter); } - - + + protected void testAddAndSelectByTimeRange_ExpectedResults(int testCaseIdx) { switch (testCaseIdx) @@ -567,16 +598,16 @@ protected void testAddAndSelectByTimeRange_ExpectedResults(int testCaseIdx) case 1: addToExpectedResults(1, 3, 4, 5, 7); break; case 2: addToExpectedResults(0, 1, 2, 4, 7); break; case 3: addToExpectedResults(7); break; - } + } } - - + + @Test @SuppressWarnings("unused") public void testAddAndSelectByOutputName() throws Exception { Stream> resultStream; - + var now = Instant.now().truncatedTo(ChronoUnit.SECONDS); var sysID1 = bigId(1); var sysID2 = bigId(2); @@ -588,30 +619,64 @@ public void testAddAndSelectByOutputName() throws Exception var ds4v0 = addSimpleDataStream(sysID3, "temp", TimeExtent.beginAt(now.plus(1, ChronoUnit.DAYS))); var ds5v0 = addSimpleDataStream(sysID3, "out1", TimeExtent.endNow(now.minus(60, ChronoUnit.DAYS))); dataStreamStore.commit(); - + // select from t0 to now DataStreamFilter filter = new DataStreamFilter.Builder() - .withOutputNames("out1") - .build(); + .withOutputNames("out1") + .build(); resultStream = dataStreamStore.selectEntries(filter); - + testAddAndSelectByOutputName_ExpectedResults(); checkSelectedEntries(resultStream, expectedResults, filter); } - - + + @Test + @SuppressWarnings("unused") + public void testAddAndSelectByObservedProperty() throws Exception + { + Stream> resultStream; + + var now = Instant.now().truncatedTo(ChronoUnit.SECONDS); + var sysID1 = bigId(1); + var sysID2 = bigId(2); + var sysID3 = bigId(3); + String def1 = "http://sensorml.com/ont/swe/property/Location"; + String def2 = "http://sensorml.com/ont/swe/property/GeodeticLatitude"; + var ds1v0 = addSimpleDataStreamWithDefinition(sysID1, "out1", TimeExtent.endNow(now.minus(365, ChronoUnit.DAYS)),def1); + var ds2v0 = addSimpleDataStream(sysID1, "out2", TimeExtent.endNow(now.minus(60, ChronoUnit.DAYS))); + var ds4v0 = addSimpleDataStreamWithDefinition(sysID3, "temp", TimeExtent.beginAt(now.plus(1, ChronoUnit.DAYS)), def2); + var ds6v0 = addSimpleDataStream(sysID3, "out3", TimeExtent.endNow(now.minus(60, ChronoUnit.DAYS))); + var ds7v0 = addSimpleDataStream(sysID3, "out4", TimeExtent.endNow(now.minus(60, ChronoUnit.DAYS))); + dataStreamStore.commit(); + + // select from t0 to now + DataStreamFilter filter = new DataStreamFilter.Builder() + .withObservedProperties(def1, def2) + .build(); + resultStream = dataStreamStore.selectEntries(filter); + + testAddAndSelectByObservedProperty_ExpectedResults(); + checkSelectedEntries(resultStream, expectedResults, filter); + } + + protected void testAddAndSelectByObservedProperty_ExpectedResults() + { + addToExpectedResults(0, 2); + } + + protected void testAddAndSelectByOutputName_ExpectedResults() { addToExpectedResults(0, 1, 3, 5); } - - + + @Test @SuppressWarnings("unused") public void testAddAndSelectBySystemID() throws Exception { Stream> resultStream; - + var now = Instant.now().truncatedTo(ChronoUnit.SECONDS); var sysID1 = bigId(1); var sysID2 = bigId(2); @@ -623,31 +688,31 @@ public void testAddAndSelectBySystemID() throws Exception var ds4v0 = addSimpleDataStream(sysID3, "temp", TimeExtent.beginAt(now.plus(1, ChronoUnit.DAYS))); var ds5v0 = addSimpleDataStream(sysID3, "out1", TimeExtent.endNow(now.minus(60, ChronoUnit.DAYS))); dataStreamStore.commit(); - + // select from t0 to now DataStreamFilter filter = new DataStreamFilter.Builder() - .withSystems(sysID2, sysID3) - .build(); + .withSystems(sysID2, sysID3) + .build(); resultStream = dataStreamStore.selectEntries(filter); - + testAddAndSelectBySystemID_ExpectedResults(); checkSelectedEntries(resultStream, expectedResults, filter); } - - + + protected void testAddAndSelectBySystemID_ExpectedResults() { addToExpectedResults(3, 4, 5); } - - + + @Test @SuppressWarnings("unused") public void testAddAndSelectByKeywords() throws Exception { Stream> resultStream; DataStreamFilter filter; - + var now = Instant.now().truncatedTo(ChronoUnit.SECONDS); var sysID1 = bigId(1); var sysID2 = bigId(2); @@ -659,61 +724,61 @@ public void testAddAndSelectByKeywords() throws Exception var ds4v0 = addSimpleDataStream(sysID3, "temp", "Air temperature", TimeExtent.beginAt(now.plus(1, ChronoUnit.DAYS))); var ds5v0 = addSimpleDataStream(sysID3, "out1", "Air pressure", TimeExtent.endNow(now.minus(60, ChronoUnit.DAYS))); dataStreamStore.commit(); - + // select with one keyword filter = new DataStreamFilter.Builder() - .withKeywords("air") - .build(); + .withKeywords("air") + .build(); resultStream = dataStreamStore.selectEntries(filter); - + expectedResults.clear(); testAddAndSelectByKeywords_ExpectedResults(1); checkSelectedEntries(resultStream, expectedResults, filter); - + // select with 2 keywords filter = new DataStreamFilter.Builder() - .withKeywords("air", "weather") - .build(); + .withKeywords("air", "weather") + .build(); resultStream = dataStreamStore.selectEntries(filter); - + expectedResults.clear(); testAddAndSelectByKeywords_ExpectedResults(2); checkSelectedEntries(resultStream, expectedResults, filter); - + // select with 2 keywords filter = new DataStreamFilter.Builder() - .withKeywords("air", "video") - .build(); + .withKeywords("air", "video") + .build(); resultStream = dataStreamStore.selectEntries(filter); - + expectedResults.clear(); testAddAndSelectByKeywords_ExpectedResults(3); checkSelectedEntries(resultStream, expectedResults, filter); - + // select with system and keywords (partial words) filter = new DataStreamFilter.Builder() - .withSystems(sysID3) - .withKeywords("weather", "temp") - .build(); + .withSystems(sysID3) + .withKeywords("weather", "temp") + .build(); resultStream = dataStreamStore.selectEntries(filter); - + expectedResults.clear(); testAddAndSelectByKeywords_ExpectedResults(4); checkSelectedEntries(resultStream, expectedResults, filter); - + // select unknown keywords filter = new DataStreamFilter.Builder() - .withSystems(sysID3) - .withKeywords("lidar", "humidity") - .build(); + .withSystems(sysID3) + .withKeywords("lidar", "humidity") + .build(); resultStream = dataStreamStore.selectEntries(filter); - + expectedResults.clear(); testAddAndSelectByKeywords_ExpectedResults(5); checkSelectedEntries(resultStream, expectedResults, filter); } - - + + protected void testAddAndSelectByKeywords_ExpectedResults(int testCaseIdx) { switch (testCaseIdx) @@ -722,10 +787,10 @@ protected void testAddAndSelectByKeywords_ExpectedResults(int testCaseIdx) case 2: addToExpectedResults(0, 1, 4, 5); break; case 3: addToExpectedResults(2, 4, 5); break; case 4: addToExpectedResults(4); break; - } + } } - - + + @Test(expected = DataStoreException.class) public void testErrorAddWithExistingOutput() throws Exception { @@ -735,18 +800,18 @@ public void testErrorAddWithExistingOutput() throws Exception addSimpleDataStream(sysID1, "out1", TimeExtent.beginAt(now)); dataStreamStore.commit(); } - - + + @Test(expected = IllegalStateException.class) public void testErrorWithSystemFilterJoin() throws Exception { try { dataStreamStore.selectEntries(new DataStreamFilter.Builder() - .withSystems() + .withSystems() .withKeywords("thermometer") .done() - .build()); + .build()); } catch (Exception e) { diff --git a/sensorhub-core/src/testFixtures/java/org/sensorhub/impl/datastore/AbstractTestFeatureStore.java b/sensorhub-core/src/testFixtures/java/org/sensorhub/impl/datastore/AbstractTestFeatureStore.java index bcf9d73746..b4fcafe54d 100644 --- a/sensorhub-core/src/testFixtures/java/org/sensorhub/impl/datastore/AbstractTestFeatureStore.java +++ b/sensorhub-core/src/testFixtures/java/org/sensorhub/impl/datastore/AbstractTestFeatureStore.java @@ -860,7 +860,8 @@ public void testAddAndRemoveByTimeRange() throws Exception .withValidTimeDuring(timeFilter) .build()); System.out.println(count + " features removed"); - + + forceReadBackFromStorage(); // generate truth by removing entries from allFeatures map var it = allFeatures.values().iterator(); while (it.hasNext()) @@ -916,8 +917,11 @@ public void testSelectByParentID() throws Exception { useAdd = true; BigId group1Id = addFeatureCollection("col1", "collection 1"); + forceReadBackFromStorage(); BigId group2Id = addFeatureCollection("col2", "collection 2"); + forceReadBackFromStorage(); BigId group3Id = addFeatureCollection("col3", "collection 3"); + forceReadBackFromStorage(); addGeoFeaturesPoint2D(group1Id, 0, 20); addNonGeoFeatures(group2Id, 40, 35); forceReadBackFromStorage(); @@ -945,8 +949,11 @@ public void testSelectByParentIDAndTime() throws Exception { useAdd = true; BigId group1Id = addFeatureCollection("col1", "collection 1"); + forceReadBackFromStorage(); BigId group2Id = addFeatureCollection("col2", "collection 2"); + forceReadBackFromStorage(); BigId group3Id = addFeatureCollection("col3", "collection 3"); + forceReadBackFromStorage(); addGeoFeaturesPoint2D(group1Id, 0, 20); addNonGeoFeatures(group2Id, 40, 35); addTemporalGeoFeatures(group3Id, 100, 46); @@ -1082,8 +1089,11 @@ public void testSelectByParentUID() throws Exception { useAdd = true; BigId group1Id = addFeatureCollection("col1", "collection 1"); + forceReadBackFromStorage(); BigId group2Id = addFeatureCollection("col2", "collection 2"); + forceReadBackFromStorage(); BigId group3Id = addFeatureCollection("col3", "collection 3"); + forceReadBackFromStorage(); addGeoFeaturesPoint2D(group1Id, 0, 20); addNonGeoFeatures(group2Id, 40, 35); addTemporalGeoFeatures(group3Id, 100, 46); diff --git a/sensorhub-core/src/testFixtures/java/org/sensorhub/impl/datastore/AbstractTestObsDatabase.java b/sensorhub-core/src/testFixtures/java/org/sensorhub/impl/datastore/AbstractTestObsDatabase.java index 9c71b66714..05ac1b855a 100644 --- a/sensorhub-core/src/testFixtures/java/org/sensorhub/impl/datastore/AbstractTestObsDatabase.java +++ b/sensorhub-core/src/testFixtures/java/org/sensorhub/impl/datastore/AbstractTestObsDatabase.java @@ -112,14 +112,14 @@ public void testSelectDatastreamWithSystemFilterJoin() throws Exception int procUids[] = {13, 5, 25}; var procIds = addSystems(procUids); - dataStreamTests.addSimpleDataStream(procIds[0], "out1", TimeExtent.beginAt(Instant.EPOCH)); - var dsId1 = dataStreamTests.addSimpleDataStream(procIds[0], "out2", TimeExtent.beginAt(Instant.EPOCH)); + dataStreamTests.addSimpleDataStream(PROC_UID_PREFIX+procUids[0], procIds[0], "out1", TimeExtent.beginAt(Instant.EPOCH)); + var dsId1 = dataStreamTests.addSimpleDataStream(PROC_UID_PREFIX+procUids[0], procIds[0], "out2", TimeExtent.beginAt(Instant.EPOCH)); - dataStreamTests.addSimpleDataStream(procIds[1], "out1", TimeExtent.beginAt(Instant.EPOCH)); - dataStreamTests.addSimpleDataStream(procIds[1], "out2", TimeExtent.beginAt(Instant.EPOCH)); + dataStreamTests.addSimpleDataStream(PROC_UID_PREFIX+procUids[1], procIds[1], "out1", TimeExtent.beginAt(Instant.EPOCH)); + dataStreamTests.addSimpleDataStream(PROC_UID_PREFIX+procUids[1], procIds[1], "out2", TimeExtent.beginAt(Instant.EPOCH)); - dataStreamTests.addSimpleDataStream(procIds[2], "out1", TimeExtent.beginAt(Instant.EPOCH)); - var dsId2 = dataStreamTests.addSimpleDataStream(procIds[2], "out2", TimeExtent.beginAt(Instant.EPOCH)); + dataStreamTests.addSimpleDataStream(PROC_UID_PREFIX+procUids[2], procIds[2], "out1", TimeExtent.beginAt(Instant.EPOCH)); + var dsId2 = dataStreamTests.addSimpleDataStream(PROC_UID_PREFIX+procUids[2], procIds[2], "out2", TimeExtent.beginAt(Instant.EPOCH)); var filter = new DataStreamFilter.Builder() .withSystems() diff --git a/sensorhub-core/src/testFixtures/java/org/sensorhub/impl/datastore/AbstractTestObsStore.java b/sensorhub-core/src/testFixtures/java/org/sensorhub/impl/datastore/AbstractTestObsStore.java index 42186fc9b9..a519d91361 100644 --- a/sensorhub-core/src/testFixtures/java/org/sensorhub/impl/datastore/AbstractTestObsStore.java +++ b/sensorhub-core/src/testFixtures/java/org/sensorhub/impl/datastore/AbstractTestObsStore.java @@ -214,9 +214,10 @@ public void testGetNumRecordsOneDataStream() throws Exception { int totalObs = 0, numObs; var dsID = addSimpleDataStream(bigId(10), "out1"); - + // add obs w/o FOI addSimpleObsWithoutResultTime(dsID, BigId.NONE, Instant.parse("2000-01-01T00:00:00Z"), numObs=100); + forceReadBackFromStorage(); assertEquals(totalObs += numObs, obsStore.getNumRecords()); forceReadBackFromStorage(); @@ -233,13 +234,13 @@ public void testGetNumRecordsTwoDataStreams() throws Exception // add obs with proc1 addSimpleObsWithoutResultTime(ds1, BigId.NONE, Instant.parse("2000-06-21T14:36:12Z"), numObs=100); + forceReadBackFromStorage(); assertEquals(totalObs += numObs, obsStore.getNumRecords()); // add obs with proc2 addSimpleObsWithoutResultTime(ds2, BigId.NONE, Instant.parse("1970-01-01T00:00:00Z"), numObs=50); - assertEquals(totalObs += numObs, obsStore.getNumRecords()); - forceReadBackFromStorage(); + assertEquals(totalObs += numObs, obsStore.getNumRecords()); assertEquals(totalObs, obsStore.getNumRecords()); } @@ -252,14 +253,14 @@ public void testAddAndGetByKeyOneDataStream() throws Exception // add obs w/o FOI addSimpleObsWithoutResultTime(dsID, BigId.NONE, Instant.parse("2000-01-01T00:00:00Z"), numObs=100); - checkGetObs(totalObs += numObs); forceReadBackFromStorage(); + checkGetObs(totalObs += numObs); checkGetObs(totalObs); // add obs with FOI addSimpleObsWithoutResultTime(dsID, bigId(1001), Instant.parse("9080-02-01T00:00:00Z"), numObs=30); - checkGetObs(totalObs += numObs); forceReadBackFromStorage(); + checkGetObs(totalObs += numObs); checkGetObs(totalObs); } @@ -345,6 +346,11 @@ protected void checkRemoveAllKeys() throws Exception long t0 = System.currentTimeMillis(); allObs.forEach((k, f) -> { obsStore.remove(k); + try { + obsStore.commit(); + } catch (DataStoreException e) { + throw new RuntimeException(e); + } assertFalse(obsStore.containsKey(k)); assertTrue(obsStore.get(k) == null); }); @@ -363,16 +369,14 @@ public void testAddAndRemoveByKey() throws Exception var dsID = addSimpleDataStream(bigId(10), "out1"); addSimpleObsWithoutResultTime(dsID, BigId.NONE, Instant.parse("1900-01-01T00:00:00Z"), 100); + forceReadBackFromStorage(); checkRemoveAllKeys(); addSimpleObsWithoutResultTime(dsID, bigId(563), Instant.parse("2900-01-01T00:00:00Z"), 100); forceReadBackFromStorage(); checkRemoveAllKeys(); - forceReadBackFromStorage(); addSimpleObsWithoutResultTime(dsID, bigId(1003), Instant.parse("0001-01-01T00:00:00Z"), 100); - checkRemoveAllKeys(); - forceReadBackFromStorage(); checkRemoveAllKeys(); } @@ -516,6 +520,8 @@ public void testSelectObsByDataStreamIDAndTime() throws Exception Instant startTime2 = Instant.parse("2019-05-31T10:46:03.258Z"); Map obsBatch2 = addSimpleObsWithoutResultTime(dsID, bigId(104), startTime2, 100, 10000); + forceReadBackFromStorage(); + // correct system ID and all times filter = new ObsFilter.Builder() .withDataStreams(dsID) @@ -545,7 +551,6 @@ public void testSelectObsByDataStreamIDAndTime() throws Exception .withDataStreams(dsID) .withPhenomenonTimeDuring(startTime2, startTime2.plus(1, ChronoUnit.DAYS)) .build(); - forceReadBackFromStorage(); resultStream = obsStore.selectEntries(filter); checkSelectedEntries(resultStream, obsBatch2, filter); @@ -589,6 +594,8 @@ public void testSelectObsByDataStreamIDAndFoiID() throws Exception Instant startProc2Batch3 = Instant.parse("2020-05-31T10:46:03.258Z"); Map proc2Batch3 = addSimpleObsWithoutResultTime(ds2, bigId(104), startProc2Batch3, 50, 24*3600*1000L); + forceReadBackFromStorage(); + // proc1 and all times filter = new ObsFilter.Builder() .withDataStreams(ds1) @@ -683,6 +690,7 @@ public void testSelectObsByDataStreamIDAndPredicates() throws Exception Instant startProc2Batch1 = Instant.parse("2018-02-11T08:12:06.897Z"); addSimpleObsWithoutResultTime(ds2, bigId(23), startProc2Batch1, 10, 10*24*3600*1000L); + forceReadBackFromStorage(); // proc1 and predicate to select NO FOI filter = new ObsFilter.Builder() .withDataStreams(ds1) @@ -720,6 +728,7 @@ public void testSelectObsByDataStreamFilter() throws Exception Instant startBatch2 = Instant.parse("2018-02-11T08:11:48.125Z"); Map obsBatch2 = addSimpleObsWithoutResultTime(ds2, bigId(23), startBatch2, 10, 1200); + forceReadBackFromStorage(); // datastream 2 by ID filter = new ObsFilter.Builder() .withDataStreams(ds2) @@ -859,6 +868,11 @@ protected void addAndCheckObsConcurrent(List series) int numObs = totalObs; long t0 = System.currentTimeMillis(); addObsConcurrent(series).thenRun(() -> { + try { + forceReadBackFromStorage(); + } catch (Exception e) { + throw new RuntimeException(e); + } readAndCheckSeries(series); double dt = System.currentTimeMillis() - t0; @@ -975,6 +989,11 @@ public void testConcurrentReadWrite() throws Throwable // wait for end of writes and check datastore content long t0 = System.currentTimeMillis(); addObsConcurrent(obsSeries).thenRun(() -> { + try { + forceReadBackFromStorage(); + } catch (Exception e) { + throw new RuntimeException(e); + } readAndCheckSeries(obsSeries); double dt = System.currentTimeMillis() - t0; diff --git a/sensorhub-datastore-h2/src/main/java/org/h2/mvstore/RangeCursor.java b/sensorhub-datastore-h2/src/main/java/org/h2/mvstore/RangeCursor.java index fa2b409a1e..d99b10d339 100644 --- a/sensorhub-datastore-h2/src/main/java/org/h2/mvstore/RangeCursor.java +++ b/sensorhub-datastore-h2/src/main/java/org/h2/mvstore/RangeCursor.java @@ -48,6 +48,7 @@ public RangeCursor(MVMap map, K from) public RangeCursor(MVMap map, K from, K to) { + // TODO: Update to use reverse-order cursor in newer H2 version super(map.cursor(from)); this.map = map; this.to = to; diff --git a/sensorhub-datastore-h2/src/main/java/org/sensorhub/impl/datastore/h2/MVCommandStoreImpl.java b/sensorhub-datastore-h2/src/main/java/org/sensorhub/impl/datastore/h2/MVCommandStoreImpl.java index a64fd7d897..526fcc7fbd 100644 --- a/sensorhub-datastore-h2/src/main/java/org/sensorhub/impl/datastore/h2/MVCommandStoreImpl.java +++ b/sensorhub-datastore-h2/src/main/java/org/sensorhub/impl/datastore/h2/MVCommandStoreImpl.java @@ -20,12 +20,7 @@ import java.nio.ByteBuffer; import java.time.Duration; import java.time.Instant; -import java.util.AbstractSet; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Iterator; -import java.util.Objects; -import java.util.Set; +import java.util.*; import java.util.stream.Stream; import java.util.stream.StreamSupport; import org.h2.mvstore.MVBTreeMap; @@ -300,10 +295,12 @@ public Stream> selectEntries(CommandFilter filter, Se return getPostFilteredResultStream(cmdStream, filter); })); - + Comparator> comparator = Comparator.comparing(e -> e.getValue().getIssueTime()); + if (filter.getIssueTime() != null && filter.getIssueTime().descendingOrder()) + comparator = comparator.reversed(); + // stream and merge commands from all selected command streams and time periods - var mergeSortIt = new MergeSortSpliterator>(cmdStreams, - (e1, e2) -> e1.getValue().getIssueTime().compareTo(e2.getValue().getIssueTime())); + var mergeSortIt = new MergeSortSpliterator>(cmdStreams, comparator); // stream output of merge sort iterator + apply limit return StreamSupport.stream(mergeSortIt, false) diff --git a/sensorhub-datastore-h2/src/main/java/org/sensorhub/impl/datastore/h2/MVFeatureDatabase.java b/sensorhub-datastore-h2/src/main/java/org/sensorhub/impl/datastore/h2/MVFeatureDatabase.java index 85b94da097..821cf4f1dc 100644 --- a/sensorhub-datastore-h2/src/main/java/org/sensorhub/impl/datastore/h2/MVFeatureDatabase.java +++ b/sensorhub-datastore-h2/src/main/java/org/sensorhub/impl/datastore/h2/MVFeatureDatabase.java @@ -100,6 +100,9 @@ protected void doStop() throws SensorHubException { if (mvStore != null) { + // must call commit first to make sure kryo persistent class resolver + // is updated before we serialize it again in close + mvStore.commit(); mvStore.close(); mvStore = null; } diff --git a/sensorhub-datastore-h2/src/main/java/org/sensorhub/impl/datastore/h2/MVObsStoreImpl.java b/sensorhub-datastore-h2/src/main/java/org/sensorhub/impl/datastore/h2/MVObsStoreImpl.java index 7c977e6706..24bb242124 100644 --- a/sensorhub-datastore-h2/src/main/java/org/sensorhub/impl/datastore/h2/MVObsStoreImpl.java +++ b/sensorhub-datastore-h2/src/main/java/org/sensorhub/impl/datastore/h2/MVObsStoreImpl.java @@ -20,12 +20,7 @@ import java.nio.ByteBuffer; import java.time.Duration; import java.time.Instant; -import java.util.AbstractSet; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Iterator; -import java.util.Objects; -import java.util.Set; +import java.util.*; import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicReference; import java.util.stream.Collectors; @@ -34,6 +29,7 @@ import org.h2.mvstore.MVBTreeMap; import org.h2.mvstore.MVStore; import org.h2.mvstore.RangeCursor; +import org.sensorhub.api.command.ICommandData; import org.sensorhub.api.common.BigId; import org.sensorhub.api.data.IObsData; import org.sensorhub.api.datastore.feature.IFoiStore; @@ -463,10 +459,13 @@ public Stream> selectEntries(ObsFilter filter, Set> comparator = Comparator.comparing(e -> e.getValue().getPhenomenonTime()); + if (filter.getPhenomenonTime() != null && filter.getPhenomenonTime().descendingOrder()) + comparator = comparator.reversed(); // stream and merge obs from all selected datastreams and time periods - var mergeSortIt = new MergeSortSpliterator>(obsStreams, - (e1, e2) -> e1.getValue().getPhenomenonTime().compareTo(e2.getValue().getPhenomenonTime())); + var mergeSortIt = new MergeSortSpliterator>(obsStreams, comparator); // stream output of merge sort iterator + apply limit return StreamSupport.stream(mergeSortIt, false) diff --git a/sensorhub-service-consys/src/main/java/org/sensorhub/impl/service/consys/BaseHandler.java b/sensorhub-service-consys/src/main/java/org/sensorhub/impl/service/consys/BaseHandler.java index 656eeb9b32..8619e65f81 100644 --- a/sensorhub-service-consys/src/main/java/org/sensorhub/impl/service/consys/BaseHandler.java +++ b/sensorhub-service-consys/src/main/java/org/sensorhub/impl/service/consys/BaseHandler.java @@ -275,31 +275,37 @@ protected IdCollection parseResourceIdsOrUids(String paramName, final Map queryParams) throws InvalidRequestException + { + var builder = parseTimeStampArgToBuilder(paramName, queryParams); + if (builder == null) + return null; + return builder.build(); + } + + + protected TemporalFilter.Builder parseTimeStampArgToBuilder(String paramName, final Map queryParams) throws InvalidRequestException { var timeVal = getSingleParam(paramName, queryParams); if (timeVal == null) return null; - + try { if (timeVal.equals("latest")) { return new TemporalFilter.Builder() - .withLatestTime() - .build(); + .withLatestTime(); } else if (timeVal.startsWith("latest/")) { return new TemporalFilter.Builder() - .withLatestTime() - .withRangeBeginningNow(Instant.MAX) - .build(); + .withLatestTime() + .withRangeBeginningNow(Instant.MAX); } else { return new TemporalFilter.Builder() - .fromTimeExtent(TimeExtent.parse(timeVal)) - .build(); + .fromTimeExtent(TimeExtent.parse(timeVal)); } } catch (Exception e) diff --git a/sensorhub-service-consys/src/main/java/org/sensorhub/impl/service/consys/HandlerContext.java b/sensorhub-service-consys/src/main/java/org/sensorhub/impl/service/consys/HandlerContext.java index 3e98faa8fc..53ad87be16 100644 --- a/sensorhub-service-consys/src/main/java/org/sensorhub/impl/service/consys/HandlerContext.java +++ b/sensorhub-service-consys/src/main/java/org/sensorhub/impl/service/consys/HandlerContext.java @@ -42,6 +42,7 @@ import org.sensorhub.impl.service.consys.property.PropertyStoreWrapper; import org.sensorhub.impl.service.consys.system.SystemStoreWrapper; import org.sensorhub.impl.service.consys.task.CommandStoreWrapper; +import org.sensorhub.impl.service.consys.task.CommandStreamIdEncoder; import org.sensorhub.impl.service.consys.task.CommandStreamStoreWrapper; import org.vast.util.Asserts; @@ -308,7 +309,10 @@ public IdEncoder getObsIdEncoder() public IdEncoder getCommandStreamIdEncoder() { - return idEncoders.getCommandStreamIdEncoder(); + return new CommandStreamIdEncoder( + idEncoders.getCommandStreamIdEncoder(), + curieResolver, + commandStreamStore); } diff --git a/sensorhub-service-consys/src/main/java/org/sensorhub/impl/service/consys/client/ConSysApiClient.java b/sensorhub-service-consys/src/main/java/org/sensorhub/impl/service/consys/client/ConSysApiClient.java index 398a46a2f3..4cbb853a18 100644 --- a/sensorhub-service-consys/src/main/java/org/sensorhub/impl/service/consys/client/ConSysApiClient.java +++ b/sensorhub-service-consys/src/main/java/org/sensorhub/impl/service/consys/client/ConSysApiClient.java @@ -36,6 +36,7 @@ import java.net.http.HttpResponse.BodySubscriber; import java.net.http.HttpResponse.BodySubscribers; import java.nio.charset.StandardCharsets; +import java.time.Instant; import java.util.Arrays; import java.util.Collection; import java.util.Collections; @@ -52,6 +53,7 @@ import net.opengis.swe.v20.BinaryEncoding; import org.sensorhub.api.command.CommandStreamInfo; import org.sensorhub.api.command.ICommandData; +import org.sensorhub.api.command.ICommandStatus; import org.sensorhub.api.command.ICommandStreamInfo; import org.sensorhub.api.common.BigId; import org.sensorhub.api.data.DataStreamInfo; @@ -80,6 +82,11 @@ import org.sensorhub.impl.service.consys.resource.ResourceLink; import org.sensorhub.impl.service.consys.system.SystemBindingGeoJson; import org.sensorhub.impl.service.consys.system.SystemBindingSmlJson; +import org.sensorhub.impl.service.consys.task.CommandBindingJson; +import org.sensorhub.impl.service.consys.task.CommandBindingSweCommon; +import org.sensorhub.impl.service.consys.task.CommandHandler; +import org.sensorhub.impl.service.consys.task.CommandStatusBindingJson; +import org.sensorhub.impl.service.consys.task.CommandStatusHandler.CommandStatusHandlerContextData; import org.sensorhub.impl.service.consys.task.CommandStreamBindingJson; import org.sensorhub.impl.service.consys.task.CommandStreamSchemaBindingJson; import org.sensorhub.utils.Lambdas; @@ -90,6 +97,10 @@ import org.vast.util.BaseBuilder; import com.google.common.base.Strings; import com.google.common.net.HttpHeaders; +import com.google.common.net.UrlEscapers; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import com.google.gson.JsonSyntaxException; import com.google.gson.stream.JsonReader; import com.google.gson.stream.JsonWriter; @@ -101,8 +112,9 @@ public class ConSysApiClient static final String SYSTEMS_COLLECTION = "systems"; static final String DEPLOYMENTS_COLLECTION = "deployments"; static final String DATASTREAMS_COLLECTION = "datastreams"; - static final String CONTROLS_COLLECTION = "controlstreams"; static final String OBSERVATIONS_COLLECTION = "observations"; + static final String CONTROLSTREAMS_COLLECTION = "controlstreams"; + static final String COMMANDS_COLLECTION = "commands"; static final String SUBSYSTEMS_COLLECTION = "subsystems"; static final String SF_COLLECTION = "samplingFeatures"; @@ -123,6 +135,7 @@ public class ConSysApiClient protected Authenticator authenticator; protected HttpClient http; protected URI endpoint; + protected String token; protected ConSysApiClient() {} @@ -134,7 +147,7 @@ protected ConSysApiClient() {} public CompletableFuture getPropertyById(String id, ResourceFormat format) { - return sendGetRequest(endpoint.resolve(PROPERTIES_COLLECTION + "/" + id), format, body -> { + return sendGetRequest(endpoint.resolve(PROPERTIES_COLLECTION + "/" + urlPathEncode(id)), format, body -> { try { var ctx = new RequestContext(body); @@ -246,7 +259,7 @@ protected void endJsonCollection(JsonWriter writer, Collection lin public CompletableFuture getProcedureById(String id, ResourceFormat format) { - return sendGetRequest(endpoint.resolve(PROCEDURES_COLLECTION + "/" + id), format, body -> { + return sendGetRequest(endpoint.resolve(PROCEDURES_COLLECTION + "/" + urlPathEncode(id)), format, body -> { try { var ctx = new RequestContext(body); @@ -264,7 +277,7 @@ public CompletableFuture getProcedureById(String id, Resourc public CompletableFuture getProcedureByUid(String uid, ResourceFormat format) { - return sendGetRequest(endpoint.resolve(PROCEDURES_COLLECTION + "?id=" + uid), format, body -> { + return sendGetRequest(endpoint.resolve(PROCEDURES_COLLECTION + "?id=" + urlQueryEncode(uid)), format, body -> { try { var ctx = new RequestContext(body); @@ -361,7 +374,7 @@ protected void endJsonCollection(JsonWriter writer, Collection lin public CompletableFuture getSystemById(String id, ResourceFormat format) { - return sendGetRequest(endpoint.resolve(SYSTEMS_COLLECTION + "/" + id), format, body -> { + return sendGetRequest(endpoint.resolve(SYSTEMS_COLLECTION + "/" + urlPathEncode(id)), format, body -> { try { var ctx = new RequestContext(body); @@ -379,7 +392,7 @@ public CompletableFuture getSystemById(String id, ResourceForma public CompletableFuture getSystemByUid(String uid, ResourceFormat format) throws ExecutionException, InterruptedException { - return sendGetRequest(endpoint.resolve(SYSTEMS_COLLECTION + "?id=" + uid), format, body -> { + return sendGetRequest(endpoint.resolve(SYSTEMS_COLLECTION + "?id=" + urlQueryEncode(uid)), format, body -> { try { var ctx = new RequestContext(body); @@ -560,10 +573,10 @@ public CompletableFuture updateSamplingFeature(String featureId, IFeatu } - public CompletableFuture getSamplingFeatureById(String featureId) + public CompletableFuture getSamplingFeatureById(String id) { return sendGetRequest( - endpoint.resolve(SF_COLLECTION + "/" + featureId), + endpoint.resolve(SF_COLLECTION + "/" + urlPathEncode(id)), ResourceFormat.GEOJSON, body -> { try @@ -582,7 +595,7 @@ public CompletableFuture getSamplingFeatureById(String featureId) public CompletableFuture getSamplingFeatureByUid(String uid, ResourceFormat format) { - return sendGetRequest(endpoint.resolve(SF_COLLECTION + "?id=" + uid), format, body -> { + return sendGetRequest(endpoint.resolve(SF_COLLECTION + "?id=" + urlQueryEncode(uid)), format, body -> { try { var ctx = new RequestContext(body); @@ -626,9 +639,9 @@ public CompletableFuture> getSystemSamplingFeatures(String syst } - protected CompletableFuture> getSystemSamplingFeatures(String systemId, ResourceFormat format, int pageSize, int offset) + protected CompletableFuture> getSystemSamplingFeatures(String sysId, ResourceFormat format, int pageSize, int offset) { - var request = SYSTEMS_COLLECTION + "/" + systemId + "/" + SF_COLLECTION + "?f=" + format + "&limit=" + pageSize + "&offset=" + offset; + var request = SYSTEMS_COLLECTION + "/" + urlPathEncode(sysId) + "/" + SF_COLLECTION + "?f=" + format + "&limit=" + pageSize + "&offset=" + offset; log.debug("{}", request); return sendGetRequest(endpoint.resolve(request), format, body -> { @@ -705,7 +718,7 @@ public Spliterator trySplit() public CompletableFuture getDatastreamById(String id, ResourceFormat format, boolean fetchSchema) { - var cf1 = sendGetRequest(endpoint.resolve(DATASTREAMS_COLLECTION + "/" + id), format, body -> { + var cf1 = sendGetRequest(endpoint.resolve(DATASTREAMS_COLLECTION + "/" + urlPathEncode(id)), format, body -> { try { var ctx = new RequestContext(body); @@ -740,8 +753,8 @@ public CompletableFuture getDatastreamById(String id, ResourceF public CompletableFuture getDatastreamSchema(String id, ResourceFormat obsFormat, ResourceFormat format) { - var obsFormatStr = URLEncoder.encode(obsFormat.getMimeType(), StandardCharsets.UTF_8); - return sendGetRequest(endpoint.resolve(DATASTREAMS_COLLECTION + "/" + id + "/schema?obsFormat="+obsFormatStr), format, body -> { + var obsFormatStr = urlQueryEncode(obsFormat.getMimeType()); + return sendGetRequest(endpoint.resolve(DATASTREAMS_COLLECTION + "/" + urlPathEncode(id) + "/schema?obsFormat="+obsFormatStr), format, body -> { try { var ctx = new RequestContext(body); @@ -761,7 +774,7 @@ public CompletableFuture getDatastreamSchema(String id, Resourc } - public CompletableFuture addDataStream(String systemId, IDataStreamInfo datastream) + public CompletableFuture addDataStream(String sysId, IDataStreamInfo datastream) { try { @@ -772,7 +785,7 @@ public CompletableFuture addDataStream(String systemId, IDataStreamInfo binding.serialize(null, datastream, false); return sendPostRequest( - endpoint.resolve(SYSTEMS_COLLECTION + "/" + systemId + "/" + DATASTREAMS_COLLECTION), + endpoint.resolve(SYSTEMS_COLLECTION + "/" + urlPathEncode(sysId) + "/" + DATASTREAMS_COLLECTION), ResourceFormat.JSON, buffer.toByteArray()); } @@ -789,7 +802,7 @@ public CompletableFuture> addDataStreams(String systemId, IDataStrea } - public CompletableFuture> addDataStreams(String systemId, Collection datastreams) + public CompletableFuture> addDataStreams(String sysId, Collection datastreams) { try { @@ -815,7 +828,7 @@ protected void endJsonCollection(JsonWriter writer, Collection lin binding.endCollection(Collections.emptyList()); return sendBatchPostRequest( - endpoint.resolve(SYSTEMS_COLLECTION + "/" + systemId + "/" + DATASTREAMS_COLLECTION), + endpoint.resolve(SYSTEMS_COLLECTION + "/" + urlPathEncode(sysId) + "/" + DATASTREAMS_COLLECTION), ResourceFormat.JSON, buffer.toByteArray()); } @@ -830,7 +843,7 @@ protected void endJsonCollection(JsonWriter writer, Collection lin /* Control Streams */ /*-----------------*/ - public CompletableFuture addControlStream(String systemId, ICommandStreamInfo cmdstream) + public CompletableFuture addControlStream(String sysId, ICommandStreamInfo cmdstream) { try { @@ -841,7 +854,7 @@ public CompletableFuture addControlStream(String systemId, ICommandStrea binding.serializeCreate(cmdstream); return sendPostRequest( - endpoint.resolve(SYSTEMS_COLLECTION + "/" + systemId + "/" + CONTROLS_COLLECTION), + endpoint.resolve(SYSTEMS_COLLECTION + "/" + urlPathEncode(sysId) + "/" + CONTROLSTREAMS_COLLECTION), ResourceFormat.JSON, buffer.toByteArray()); } @@ -858,7 +871,7 @@ public CompletableFuture> addControlStreams(String systemId, IComman } - public CompletableFuture> addControlStreams(String systemId, Collection cmdstreams) + public CompletableFuture> addControlStreams(String sysId, Collection cmdstreams) { try { @@ -884,7 +897,7 @@ protected void endJsonCollection(JsonWriter writer, Collection lin binding.endCollection(Collections.emptyList()); return sendBatchPostRequest( - endpoint.resolve(SYSTEMS_COLLECTION + "/" + systemId + "/" + CONTROLS_COLLECTION), + endpoint.resolve(SYSTEMS_COLLECTION + "/" + urlPathEncode(sysId) + "/" + CONTROLSTREAMS_COLLECTION), ResourceFormat.JSON, buffer.toByteArray()); } @@ -897,7 +910,7 @@ protected void endJsonCollection(JsonWriter writer, Collection lin public CompletableFuture getControlStreamById(String id, ResourceFormat format, boolean fetchSchema) { - var cf1 = sendGetRequest(endpoint.resolve(CONTROLS_COLLECTION + "/" + id), format, body -> { + var cf1 = sendGetRequest(endpoint.resolve(CONTROLSTREAMS_COLLECTION + "/" + urlPathEncode(id)), format, body -> { try { var ctx = new RequestContext(body); @@ -932,7 +945,8 @@ public CompletableFuture getControlStreamById(String id, Res public CompletableFuture getControlStreamSchema(String id, ResourceFormat obsFormat, ResourceFormat format) { - return sendGetRequest(endpoint.resolve(CONTROLS_COLLECTION + "/" + id + "/schema?obsFormat=" + obsFormat), format, body -> { + var obsFormatStr = urlQueryEncode(format.getMimeType()); + return sendGetRequest(endpoint.resolve(CONTROLSTREAMS_COLLECTION + "/" + urlPathEncode(id) + "/schema?obsFormat=" + obsFormatStr), format, body -> { try { var ctx = new RequestContext(body); @@ -952,13 +966,13 @@ public CompletableFuture getControlStreamSchema(String id, R /* Observations */ /*--------------*/ // TODO: Be able to push different kinds of observations such as video - public CompletableFuture pushObs(String dataStreamId, IDataStreamInfo dataStream, IObsData obs) + public CompletableFuture pushObs(String dsId, IDataStreamInfo dataStream, IObsData obs) { try { var buffer = new ByteArrayOutputStream(); var ctx = new RequestContext(buffer); - ctx.setParent(null, dataStreamId, obs.getDataStreamID()); + ctx.setParent(null, dsId, obs.getDataStreamID()); ObsHandler.ObsHandlerContextData contextData = new ObsHandler.ObsHandlerContextData(); contextData.dsInfo = dataStream; ctx.setData(contextData); @@ -975,7 +989,7 @@ public CompletableFuture pushObs(String dataStreamId, IDataStreamInfo da } return sendPostRequest( - endpoint.resolve(DATASTREAMS_COLLECTION + "/" + dataStreamId + "/" + OBSERVATIONS_COLLECTION), + endpoint.resolve(DATASTREAMS_COLLECTION + "/" + urlPathEncode(dsId) + "/" + OBSERVATIONS_COLLECTION), ctx.getFormat(), buffer.toByteArray()); } @@ -1006,7 +1020,7 @@ public CompletableFuture> getObservations(String dsId, IDataStr protected CompletableFuture> getObservations(String dsId, IDataStreamInfo dsInfo, TemporalFilter timeFilter, Set foiIds, ResourceFormat format, int pageSize, int offset) { - var request = DATASTREAMS_COLLECTION + "/" + dsId + "/observations?f=" + format + "&limit=" + pageSize + "&offset=" + offset; + var request = DATASTREAMS_COLLECTION + "/" + urlPathEncode(dsId) + "/observations?f=" + format + "&limit=" + pageSize + "&offset=" + offset; if (foiIds != null) request += "&foi=" + String.join(",", foiIds); @@ -1015,6 +1029,24 @@ protected CompletableFuture> getObservations(String dsId, IData { if (timeFilter.isLatestTime()) request += "&resultTime=latest"; + else { + request += "&phenomenonTime="; + + if (timeFilter.isCurrentTime()) + request += "now"; + else if (timeFilter.endsNow()) + request += timeFilter.getMin() + "/now"; + else if (timeFilter.beginsNow()) + request += "now/" + timeFilter.getMax(); + else if (timeFilter.isAllTimes()) + request += "../.."; + else if (timeFilter.getMin() == Instant.MIN) + request += "../" + timeFilter.getMax(); + else if (timeFilter.getMax() == Instant.MAX) + request += timeFilter.getMin() + "/.."; + else + request += timeFilter.getMin() + "/" + timeFilter.getMax(); + } } return sendGetRequest(endpoint.resolve(request), format, body -> { @@ -1087,9 +1119,54 @@ public Spliterator trySplit() /* Commands */ /*----------*/ - public CompletableFuture sendCommand(String controlId, ICommandData cmd) + public CompletableFuture sendCommand(String csId, ICommandStreamInfo cmdStream, ICommandData cmd) { - return null; + try + { + var buffer = new ByteArrayOutputStream(); + var ctx = new RequestContext(buffer); + ctx.setParent(null, csId, cmd.getCommandStreamID()); + var contextData = new CommandHandler.CommandHandlerContextData(); + contextData.csInfo = cmdStream; + ctx.setData(contextData); + + if (cmdStream != null && cmdStream.getRecordEncoding() instanceof BinaryEncoding) { + ctx.setData(contextData); + ctx.setFormat(ResourceFormat.SWE_BINARY); + var binding = new CommandBindingSweCommon(ctx, new IdEncodersBase32(), false, null); + binding.serialize(null, cmd, false); + } else { + ctx.setFormat(ResourceFormat.JSON); + var binding = new CommandBindingJson(ctx, new IdEncodersBase32(), false, null); + binding.serialize(null, cmd, false); + } + + return sendPostRequestAndReadResponse( + endpoint.resolve(CONTROLSTREAMS_COLLECTION + "/" + urlPathEncode(csId) + "/" + COMMANDS_COLLECTION), + ctx.getFormat(), + buffer.toByteArray(), + responseBody -> { + try + { + var respCtx = new RequestContext(responseBody); + var respCtxData = new CommandStatusHandlerContextData(); + respCtxData.csInfo = cmdStream; + respCtx.setData(respCtxData); + respCtx.setFormat(ResourceFormat.JSON); + var binding = new CommandStatusBindingJson(respCtx, new IdEncodersBase32(), true, null); + return binding.deserialize(); + } + catch (IOException e) + { + e.printStackTrace(); + throw new CompletionException(e); + } + }); + } + catch (IOException e) + { + throw new IllegalStateException("Error initializing binding", e); + } } @@ -1103,27 +1180,35 @@ protected CompletableFuture sendGetRequest(URI collectionUri, ResourceFor if (!isHttpClientAvailable) return sendGetRequestFallback(collectionUri, format, bodyMapper); - var req = HttpRequest.newBuilder() + var builder = HttpRequest.newBuilder() .uri(collectionUri) .GET() - .header(HttpHeaders.ACCEPT, format.getMimeType()) - .build(); - + .header(HttpHeaders.ACCEPT, format.getMimeType()); + + if (token != null) + builder.header(HttpHeaders.AUTHORIZATION, "Bearer " + token); + + var req = builder.build(); BodyHandler bodyHandler = resp -> { BodySubscriber upstream = BodySubscribers.ofByteArray(); return BodySubscribers.mapping(upstream, body -> { - var is = new ByteArrayInputStream(body); - return bodyMapper.apply(is); + if (resp.statusCode() == 200) { + var is = new ByteArrayInputStream(body); + return bodyMapper.apply(is); + } else { + var error = new String(body); + throw new CompletionException("HTTP error " + resp.statusCode() + ": " + error, null); + } }); }; return http.sendAsync(req, bodyHandler) - .thenApply(resp -> { - if (resp.statusCode() == 200) - return resp.body(); - else - throw new CompletionException("HTTP error " + resp.statusCode(), null); - }); + .thenApply(resp -> { + if (resp.statusCode() == 200) + return resp.body(); + else + throw new CompletionException("HTTP error " + resp.statusCode(), null); + }); } @@ -1143,6 +1228,8 @@ protected CompletableFuture sendGetRequestFallback(URI collectionUri, Res connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("GET"); connection.setRequestProperty(HttpHeaders.ACCEPT, format.getMimeType()); + if (token != null) + connection.setRequestProperty(HttpHeaders.AUTHORIZATION, "Bearer " + token); int responseCode = connection.getResponseCode(); if (responseCode == 200) { @@ -1168,13 +1255,16 @@ protected CompletableFuture sendPostRequest(URI collectionUri, ResourceF if (!isHttpClientAvailable) return sendPostRequestFallback(collectionUri, format, body); - var req = HttpRequest.newBuilder() + var builder = HttpRequest.newBuilder() .uri(collectionUri) .POST(HttpRequest.BodyPublishers.ofByteArray(body)) .header(HttpHeaders.ACCEPT, ResourceFormat.JSON.getMimeType()) - .header(HttpHeaders.CONTENT_TYPE, format.getMimeType()) - .build(); - + .header(HttpHeaders.CONTENT_TYPE, format.getMimeType()); + + if (token != null) + builder.header(HttpHeaders.AUTHORIZATION, "Bearer " + token); + + var req = builder.build(); return http.sendAsync(req, BodyHandlers.ofString()) .thenApply(resp -> { if (resp.statusCode() == 201 || resp.statusCode() == 303) { @@ -1188,6 +1278,50 @@ protected CompletableFuture sendPostRequest(URI collectionUri, ResourceF } + protected CompletableFuture sendPostRequestAndReadResponse(URI collectionUri, ResourceFormat format, byte[] requestBody, Function responseBodyMapper) + { + //if (!isHttpClientAvailable) + // return sendPostRequestFallback(collectionUri, format, body); + + var builder = HttpRequest.newBuilder() + .uri(collectionUri) + .POST(HttpRequest.BodyPublishers.ofByteArray(requestBody)) + .header(HttpHeaders.ACCEPT, ResourceFormat.JSON.getMimeType()) + .header(HttpHeaders.CONTENT_TYPE, format.getMimeType()); + + if (token != null) + builder.header(HttpHeaders.AUTHORIZATION, "Bearer " + token); + + + var req = builder.build(); + BodyHandler bodyHandler = resp -> { + BodySubscriber upstream = BodySubscribers.ofByteArray(); + return BodySubscribers.mapping(upstream, body -> { + if (resp.statusCode() == 200) { + var is = new ByteArrayInputStream(body); + return responseBodyMapper.apply(is); + } else { + var bodyStr = new String(body); + try { + var jsonError = (JsonObject)JsonParser.parseString(bodyStr); + throw new CompletionException(jsonError.get("message").getAsString(), null); + } catch (JsonSyntaxException e) { + throw new CompletionException("HTTP error " + resp.statusCode() + ": " + bodyStr, null); + } + } + }); + }; + + return http.sendAsync(req, bodyHandler) + .thenApply(resp -> { + if (resp.statusCode() == 200) + return resp.body(); + else + throw new CompletionException("HTTP error " + resp.statusCode(), null); + }); + } + + /** * Fallback method for sending requests using HttpURLConnection. * This is used when HttpClient is not available (e.g., on Android). @@ -1205,6 +1339,8 @@ protected CompletableFuture sendPostRequestFallback(URI collectionUri, R connection.setRequestMethod("POST"); connection.setRequestProperty(HttpHeaders.ACCEPT, ResourceFormat.JSON.getMimeType()); connection.setRequestProperty(HttpHeaders.CONTENT_TYPE, format.getMimeType()); + if (token != null) + connection.setRequestProperty(HttpHeaders.AUTHORIZATION, "Bearer " + token); connection.setDoOutput(true); try (OutputStream os = connection.getOutputStream()) { @@ -1237,13 +1373,16 @@ protected CompletableFuture sendPutRequest(URI collectionUri, ResourceF if (!isHttpClientAvailable) return sendPutRequestFallback(collectionUri, format, body); - var req = HttpRequest.newBuilder() + var builder = HttpRequest.newBuilder() .uri(collectionUri) .PUT(HttpRequest.BodyPublishers.ofByteArray(body)) .header(HttpHeaders.ACCEPT, ResourceFormat.JSON.getMimeType()) - .header(HttpHeaders.CONTENT_TYPE, format.getMimeType()) - .build(); - + .header(HttpHeaders.CONTENT_TYPE, format.getMimeType()); + + if (token != null) + builder.header(HttpHeaders.AUTHORIZATION, "Bearer " + token); + + var req = builder.build(); return http.sendAsync(req, BodyHandlers.ofString()) .thenApply(HttpResponse::statusCode); } @@ -1266,6 +1405,8 @@ protected CompletableFuture sendPutRequestFallback(URI collectionUri, R connection.setRequestMethod("PUT"); connection.setRequestProperty(HttpHeaders.ACCEPT, ResourceFormat.JSON.getMimeType()); connection.setRequestProperty(HttpHeaders.CONTENT_TYPE, format.getMimeType()); + if (token != null) + connection.setRequestProperty(HttpHeaders.AUTHORIZATION, "Bearer " + token); connection.setDoOutput(true); try (OutputStream os = connection.getOutputStream()) { @@ -1289,12 +1430,15 @@ protected CompletableFuture> sendBatchPostRequest(URI collectionUri, if (!isHttpClientAvailable) return sendBatchPostRequestFallback(collectionUri, format, body); - var req = HttpRequest.newBuilder() + var builder = HttpRequest.newBuilder() .uri(collectionUri) .POST(HttpRequest.BodyPublishers.ofByteArray(body)) - .header(HttpHeaders.CONTENT_TYPE, format.getMimeType()) - .build(); - + .header(HttpHeaders.CONTENT_TYPE, format.getMimeType()); + + if (token != null) + builder.header(HttpHeaders.AUTHORIZATION, "Bearer " + token); + + var req = builder.build(); return http.sendAsync(req, BodyHandlers.ofString()) .thenApply(Lambdas.checked(resp -> { if (resp.statusCode() == 201 || resp.statusCode() == 303) { @@ -1331,6 +1475,8 @@ protected CompletableFuture> sendBatchPostRequestFallback(URI collec connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("POST"); connection.setRequestProperty(HttpHeaders.CONTENT_TYPE, format.getMimeType()); + if (token != null) + connection.setRequestProperty(HttpHeaders.AUTHORIZATION, "Bearer " + token); connection.setDoOutput(true); try (OutputStream os = connection.getOutputStream()) { @@ -1442,6 +1588,24 @@ protected void skipToCollectionItems(JsonReader reader) throws IOException } } + + protected String urlPathEncode(String value) + { + return UrlEscapers.urlPathSegmentEscaper().escape(value); + } + + + protected String urlQueryEncode(String value) + { + return URLEncoder.encode(value, StandardCharsets.UTF_8); + } + + + public void setAuthToken(String token) + { + this.token = token; + } + /* Builder stuff */ diff --git a/sensorhub-service-consys/src/main/java/org/sensorhub/impl/service/consys/obs/DataStreamBindingJson.java b/sensorhub-service-consys/src/main/java/org/sensorhub/impl/service/consys/obs/DataStreamBindingJson.java index 7b29488a97..859110e11f 100644 --- a/sensorhub-service-consys/src/main/java/org/sensorhub/impl/service/consys/obs/DataStreamBindingJson.java +++ b/sensorhub-service-consys/src/main/java/org/sensorhub/impl/service/consys/obs/DataStreamBindingJson.java @@ -394,7 +394,10 @@ else if (hasVector) @Override public void startCollection() throws IOException { - startJsonCollection(writer); + if (reader != null) + startJsonCollection(reader); + else + startJsonCollection(writer); } diff --git a/sensorhub-service-consys/src/main/java/org/sensorhub/impl/service/consys/obs/DataStreamHandler.java b/sensorhub-service-consys/src/main/java/org/sensorhub/impl/service/consys/obs/DataStreamHandler.java index 278ad178dd..f945575b5b 100644 --- a/sensorhub-service-consys/src/main/java/org/sensorhub/impl/service/consys/obs/DataStreamHandler.java +++ b/sensorhub-service-consys/src/main/java/org/sensorhub/impl/service/consys/obs/DataStreamHandler.java @@ -141,6 +141,16 @@ protected void buildFilter(final ResourceRef parent, final Map { builder.withObservedProperties(obsProps); } + + // system param + var sysIDs = parseResourceIdsOrUids("system", queryParams, idEncoders.getSystemIdEncoder()); + if (sysIDs != null && !sysIDs.isEmpty()) + { + if (sysIDs.isUids()) + builder.withSystems().withUniqueIDs(sysIDs.getUids()).includeMembers(true).done(); + else + builder.withSystems().withInternalIDs(sysIDs.getBigIds()).includeMembers(true).done(); + } } diff --git a/sensorhub-service-consys/src/main/java/org/sensorhub/impl/service/consys/obs/DataStreamSchemaBindingOmJson.java b/sensorhub-service-consys/src/main/java/org/sensorhub/impl/service/consys/obs/DataStreamSchemaBindingOmJson.java index 054c55fdd9..f61913f85c 100644 --- a/sensorhub-service-consys/src/main/java/org/sensorhub/impl/service/consys/obs/DataStreamSchemaBindingOmJson.java +++ b/sensorhub-service-consys/src/main/java/org/sensorhub/impl/service/consys/obs/DataStreamSchemaBindingOmJson.java @@ -107,8 +107,10 @@ public IDataStreamInfo deserialize(JsonReader reader) throws IOException } else { + if (resultStruct.getName() == null) + resultStruct.setName("result"); + resultStruct = swe.createRecord() - .name(resultStruct.getName() + "_rec") .addField("time", swe.createTime().asPhenomenonTimeIsoUTC()) .addField(resultStruct.getName(), resultStruct) .build(); diff --git a/sensorhub-service-consys/src/main/java/org/sensorhub/impl/service/consys/obs/ObsBindingOmJson.java b/sensorhub-service-consys/src/main/java/org/sensorhub/impl/service/consys/obs/ObsBindingOmJson.java index bf001a4d82..abf3421283 100644 --- a/sensorhub-service-consys/src/main/java/org/sensorhub/impl/service/consys/obs/ObsBindingOmJson.java +++ b/sensorhub-service-consys/src/main/java/org/sensorhub/impl/service/consys/obs/ObsBindingOmJson.java @@ -245,19 +245,8 @@ protected JsonDataParserGson getSweCommonParser(IDataStreamInfo dsInfo, JsonRead @Override public void startCollection() throws IOException { - if (reader != null) { - // if we're reading, just skip to the items array - // calls to deserialize() will take it from there - // TODO generalize this to all bindings - reader.beginObject(); - while (reader.hasNext()) { - var propName = reader.nextName(); - if (propName.equals(getItemsPropertyName())) - return; - else - reader.skipValue(); - } - } + if (reader != null) + startJsonCollection(reader); else startJsonCollection(writer); } diff --git a/sensorhub-service-consys/src/main/java/org/sensorhub/impl/service/consys/obs/ObsHandler.java b/sensorhub-service-consys/src/main/java/org/sensorhub/impl/service/consys/obs/ObsHandler.java index 7081ff9757..a0cccfca1a 100644 --- a/sensorhub-service-consys/src/main/java/org/sensorhub/impl/service/consys/obs/ObsHandler.java +++ b/sensorhub-service-consys/src/main/java/org/sensorhub/impl/service/consys/obs/ObsHandler.java @@ -16,6 +16,7 @@ import java.io.IOException; import java.time.Instant; +import java.util.ArrayList; import java.util.Map; import java.util.Map.Entry; import java.util.concurrent.TimeUnit; @@ -27,6 +28,12 @@ import java.util.concurrent.Flow.Subscription; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ScheduledFuture; + +import org.geotools.api.filter.Filter; +import org.geotools.factory.CommonFactoryFinder; +import org.geotools.filter.Filters; +import org.geotools.filter.text.cql2.CQL; +import org.geotools.filter.text.cql2.CQLException; import org.sensorhub.api.common.BigId; import org.sensorhub.api.data.IDataStreamInfo; import org.sensorhub.api.data.IObsData; @@ -34,6 +41,7 @@ import org.sensorhub.api.database.IObsSystemDatabase; import org.sensorhub.api.datastore.DataStoreException; import org.sensorhub.api.datastore.SpatialFilter; +import org.sensorhub.api.datastore.TemporalFilter; import org.sensorhub.api.datastore.obs.DataStreamKey; import org.sensorhub.api.datastore.obs.IObsStore; import org.sensorhub.api.datastore.obs.ObsFilter; @@ -477,12 +485,26 @@ protected ObsFilter getFilter(ResourceRef parent, Map queryPar // filter on parent if needed if (parent.internalID != null) builder.withDataStreams(parent.internalID); - + + // TODO attach to phenomenonTime + var phenomenonTimeFilterBuilder = new TemporalFilter.Builder(); + // phenomenonTime param - var phenomenonTime = parseTimeStampArg("phenomenonTime", queryParams); + var phenomenonTime = parseTimeStampArgToBuilder("phenomenonTime", queryParams); if (phenomenonTime != null) - builder.withPhenomenonTime(phenomenonTime); - + phenomenonTimeFilterBuilder = phenomenonTime; + + // chronological order, attached to phenomenonTime filter + var descendingOrder = getSingleParam("order", queryParams); + if (descendingOrder != null && !descendingOrder.isBlank() + && ("desc".equals(descendingOrder) || "descending".equals(descendingOrder))) + { + phenomenonTimeFilterBuilder.descendingOrder(true); + } + + if (phenomenonTime != null || descendingOrder != null) + builder.withPhenomenonTime(phenomenonTimeFilterBuilder.build()); + // resultTime param var resultTime = parseTimeStampArg("resultTime", queryParams); if (resultTime != null) @@ -535,6 +557,28 @@ protected ObsFilter getFilter(ResourceRef parent, Map queryPar .withRoi(geom) .build()); } + + // CQL filter + var cqlPredicates = parseMultiValuesArg("filter", queryParams); + if (cqlPredicates != null && !cqlPredicates.isEmpty()) + { + var ff = CommonFactoryFinder.getFilterFactory(); + var cqlFilters = new ArrayList(); + for (var cqlPredicate : cqlPredicates) + { + try + { + var filter = CQL.toFilter(cqlPredicate); + cqlFilters.add(filter); + } + catch (CQLException e) + { + throw new IllegalArgumentException("Invalid CQL2 filter " + cqlPredicate, e); + } + } + if (!cqlFilters.isEmpty()) + builder.withCQLFilter(Filters.and(ff, cqlFilters)); + } // limit // need to limit to offset+limit+1 since we rescan from the beginning for now diff --git a/sensorhub-service-consys/src/main/java/org/sensorhub/impl/service/consys/resource/BaseResourceHandler.java b/sensorhub-service-consys/src/main/java/org/sensorhub/impl/service/consys/resource/BaseResourceHandler.java index a79de70239..b520458c21 100644 --- a/sensorhub-service-consys/src/main/java/org/sensorhub/impl/service/consys/resource/BaseResourceHandler.java +++ b/sensorhub-service-consys/src/main/java/org/sensorhub/impl/service/consys/resource/BaseResourceHandler.java @@ -265,7 +265,9 @@ protected void list(final RequestContext ctx) throws IOException // stream and serialize all resources to servlet output var binding = getBinding(ctx, false); binding.startCollection(); - + + var data = dataStore.selectEntries(filter).toList(); + // fetch from DB and temporarily handle paging here try (var results = postProcessResultList(dataStore.selectEntries(filter), filter)) { diff --git a/sensorhub-service-consys/src/main/java/org/sensorhub/impl/service/consys/resource/ResourceBindingJson.java b/sensorhub-service-consys/src/main/java/org/sensorhub/impl/service/consys/resource/ResourceBindingJson.java index 97df4799c7..ab68dc5a55 100644 --- a/sensorhub-service-consys/src/main/java/org/sensorhub/impl/service/consys/resource/ResourceBindingJson.java +++ b/sensorhub-service-consys/src/main/java/org/sensorhub/impl/service/consys/resource/ResourceBindingJson.java @@ -166,6 +166,21 @@ protected void startJsonCollection(JsonWriter writer) throws IOException } + protected void startJsonCollection(JsonReader reader) throws IOException + { + // if we're reading, just skip to the items array + // calls to deserialize() will take it from there + reader.beginObject(); + while (reader.hasNext()) { + var propName = reader.nextName(); + if (propName.equals(getItemsPropertyName())) + return; + else + reader.skipValue(); + } + } + + protected String getItemsPropertyName() { return "items"; diff --git a/sensorhub-service-consys/src/main/java/org/sensorhub/impl/service/consys/sensorml/SMLConverter.java b/sensorhub-service-consys/src/main/java/org/sensorhub/impl/service/consys/sensorml/SMLConverter.java index d412f69d43..cf09dde545 100644 --- a/sensorhub-service-consys/src/main/java/org/sensorhub/impl/service/consys/sensorml/SMLConverter.java +++ b/sensorhub-service-consys/src/main/java/org/sensorhub/impl/service/consys/sensorml/SMLConverter.java @@ -14,37 +14,24 @@ package org.sensorhub.impl.service.consys.sensorml; -import java.time.ZoneOffset; import javax.xml.namespace.QName; +import org.vast.ogc.gml.GMLUtils; import org.vast.ogc.gml.IFeature; import org.vast.ogc.xlink.IXlinkReference; import org.vast.sensorML.SMLBuilders.AbstractProcessBuilder; import org.vast.sensorML.SMLBuilders.DeploymentBuilder; import org.vast.sensorML.SMLBuilders.PhysicalSystemBuilder; +import org.vast.swe.SWEConstants; import org.vast.sensorML.SMLFactory; import org.vast.sensorML.SMLHelper; import net.opengis.gml.v32.Point; +import net.opengis.gml.v32.TimePeriod; import net.opengis.sensorml.v20.AbstractProcess; import net.opengis.sensorml.v20.Deployment; public class SMLConverter extends SMLHelper { - static final String SOSA_NS = "http://www.w3.org/ns/sosa/"; - static final String SOSA_SYSTEM = SOSA_NS + "System"; - static final String SOSA_SENSOR = SOSA_NS + "Sensor"; - static final String SOSA_ACTUATOR = SOSA_NS + "Actuator"; - static final String SOSA_SAMPLER = SOSA_NS + "Sampler"; - static final String SOSA_PROCEDURE = SOSA_NS + "Procedure"; - static final String SOSA_OBS_PROCEDURE = SOSA_NS + "ObservingProcedure"; - static final String SOSA_ACT_PROCEDURE = SOSA_NS + "ActuatingProcedure"; - static final String SOSA_SAM_PROCEDURE = SOSA_NS + "SamplingProcedure"; - static final String SOSA_DEPLOYMENT = SOSA_NS + "Deployment"; - - static final String SSN_NS = "http://www.w3.org/ns/ssn/"; - static final String SSN_SYSTEM = SSN_NS + "System"; - static final String SSN_DEPLOYMENT = SSN_NS + "Deployment"; - public SMLConverter() { @@ -72,14 +59,26 @@ public AbstractProcess genericFeatureToSystem(IFeature f) AbstractProcessBuilder builder = null; var type = checkFeatureType(f); - if (SOSA_SYSTEM.equals(type) || - SSN_SYSTEM.equals(type) || - SOSA_SENSOR.equals(type) || - SOSA_ACTUATOR.equals(type) || - SOSA_SAMPLER.equals(type)) + // resolve CURIEs + type = type.replaceFirst("sosa:", SWEConstants.SOSA_URI_PREFIX) + .replaceFirst("ssn:", SWEConstants.SSN_URI_PREFIX); + + var assetType = (String)f.getProperties().get(new QName("assetType")); + + if (SWEConstants.DEF_SYSTEM.equals(type) || + SWEConstants.DEF_SENSOR.equals(type) || + SWEConstants.DEF_ACTUATOR.equals(type) || + SWEConstants.DEF_SAMPLER.equals(type) || + SWEConstants.DEF_PLATFORM.equals(type) || + SWEConstants.DEF_SYSTEM_SSN.equals(type) || + SWEConstants.DEF_PROCESS.equals(type)) { - builder = createPhysicalSystem() - .uniqueID(f.getUniqueIdentifier()) + builder = SWEConstants.DEF_PROCESS.equals(type) || + SWEConstants.ASSET_TYPE_PROCESS.equals(assetType) || + SWEConstants.ASSET_TYPE_SIMULATION.equals(assetType) ? + createSimpleProcess() : createPhysicalSystem(); + + builder.uniqueID(f.getUniqueIdentifier()) .name(f.getName()) .description(f.getDescription()) .definition(f.getType()); @@ -87,12 +86,11 @@ public AbstractProcess genericFeatureToSystem(IFeature f) var validTime = f.getValidTime(); if (f.getValidTime() != null) { - builder.validTimePeriod( - validTime.begin().atOffset(ZoneOffset.UTC), - validTime.end().atOffset(ZoneOffset.UTC)); + var timePrimitive = GMLUtils.timeExtentToTimePrimitive(validTime, true); + builder.validTimePeriod((TimePeriod)timePrimitive); } - if (f.getGeometry() != null) + if (f.getGeometry() != null && builder instanceof PhysicalSystemBuilder) { if (f.getGeometry() instanceof Point) ((PhysicalSystemBuilder)builder).location((Point)f.getGeometry()); @@ -121,10 +119,16 @@ public AbstractProcess genericFeatureToProcedure(IFeature f) AbstractProcessBuilder builder = null; var type = checkFeatureType(f); - if (SOSA_SYSTEM.equals(type) || - SOSA_SENSOR.equals(type) || - SOSA_ACTUATOR.equals(type) || - SOSA_SAMPLER.equals(type)) + // resolve CURIEs + type = type.replaceFirst("sosa:", SWEConstants.SOSA_URI_PREFIX) + .replaceFirst("ssn:", SWEConstants.SSN_URI_PREFIX); + + if (SWEConstants.DEF_SYSTEM.equals(type) || + SWEConstants.DEF_SENSOR.equals(type) || + SWEConstants.DEF_ACTUATOR.equals(type) || + SWEConstants.DEF_SAMPLER.equals(type) || + SWEConstants.DEF_PLATFORM.equals(type) || + SWEConstants.DEF_SYSTEM_SSN.equals(type)) { builder = createPhysicalSystem() .uniqueID(f.getUniqueIdentifier()) @@ -132,10 +136,10 @@ public AbstractProcess genericFeatureToProcedure(IFeature f) .description(f.getDescription()) .definition(f.getType()); } - else if (SOSA_PROCEDURE.equals(type) || - SOSA_OBS_PROCEDURE.equals(type) || - SOSA_ACT_PROCEDURE.equals(type) || - SOSA_SAM_PROCEDURE.equals(type)) + else if (SWEConstants.DEF_PROCEDURE.equals(type) || + SWEConstants.DEF_OBS_PROCEDURE.equals(type) || + SWEConstants.DEF_ACT_PROCEDURE.equals(type) || + SWEConstants.DEF_SAM_PROCEDURE.equals(type)) { builder = createSimpleProcess() .uniqueID(f.getUniqueIdentifier()) @@ -150,9 +154,8 @@ else if (SOSA_PROCEDURE.equals(type) || var validTime = f.getValidTime(); if (f.getValidTime() != null) { - builder.validTimePeriod( - validTime.begin().atOffset(ZoneOffset.UTC), - validTime.end().atOffset(ZoneOffset.UTC)); + var timePrimitive = GMLUtils.timeExtentToTimePrimitive(validTime, true); + builder.validTimePeriod((TimePeriod)timePrimitive); } return builder.build(); @@ -164,14 +167,21 @@ public Deployment genericFeatureToDeployment(IFeature f) DeploymentBuilder builder = null; var type = checkFeatureType(f); - if (SOSA_DEPLOYMENT.equals(type) || - SSN_DEPLOYMENT.equals(type)) + if (SWEConstants.DEF_DEPLOYMENT.equals(type) || + SWEConstants.DEF_DEPLOYMENT_SSN.equals(type)) { builder = createDeployment() .uniqueID(f.getUniqueIdentifier()) .name(f.getName()) .description(f.getDescription()); + var validTime = f.getValidTime(); + if (f.getValidTime() != null) + { + var timePrimitive = GMLUtils.timeExtentToTimePrimitive(validTime, true); + builder.validTimePeriod((TimePeriod)timePrimitive); + } + if (f.getGeometry() != null) ((DeploymentBuilder)builder).location(f.getGeometry()); } diff --git a/sensorhub-service-consys/src/main/java/org/sensorhub/impl/service/consys/system/SystemBindingGeoJson.java b/sensorhub-service-consys/src/main/java/org/sensorhub/impl/service/consys/system/SystemBindingGeoJson.java index f1319ec0e8..854c97eb09 100644 --- a/sensorhub-service-consys/src/main/java/org/sensorhub/impl/service/consys/system/SystemBindingGeoJson.java +++ b/sensorhub-service-consys/src/main/java/org/sensorhub/impl/service/consys/system/SystemBindingGeoJson.java @@ -31,11 +31,13 @@ import org.vast.ogc.gml.GeoJsonBindings; import org.vast.ogc.gml.IFeature; import org.vast.ogc.xlink.IXlinkReference; +import org.vast.swe.SWEConstants; import org.vast.util.Asserts; import org.vast.util.TimeExtent; import com.google.gson.stream.JsonReader; import com.google.gson.stream.JsonWriter; import net.opengis.gml.v32.AbstractGeometry; +import net.opengis.sensorml.v20.AbstractPhysicalProcess; import net.opengis.sensorml.v20.AbstractProcess; @@ -86,6 +88,12 @@ protected void writeCustomFeatureProperties(JsonWriter writer, IFeature bean) th var sml = ((ISystemWithDesc)bean).getFullDescription(); if (sml != null) { + var assetType = sml.getAssetType(); + if (assetType != null) + writer.name("assetType").value(assetType); + else if (!(sml instanceof AbstractPhysicalProcess)) + writer.name("assetType").value(SWEConstants.ASSET_TYPE_PROCESS); + var typeOf = sml.getTypeOf(); if (typeOf != null) { diff --git a/sensorhub-service-consys/src/main/java/org/sensorhub/impl/service/consys/task/CommandBindingJson.java b/sensorhub-service-consys/src/main/java/org/sensorhub/impl/service/consys/task/CommandBindingJson.java index 621c79079b..83d6be3293 100644 --- a/sensorhub-service-consys/src/main/java/org/sensorhub/impl/service/consys/task/CommandBindingJson.java +++ b/sensorhub-service-consys/src/main/java/org/sensorhub/impl/service/consys/task/CommandBindingJson.java @@ -35,10 +35,12 @@ import org.sensorhub.impl.service.consys.resource.ResourceBindingJson; import org.sensorhub.impl.service.consys.resource.ResourceLink; import org.sensorhub.impl.service.consys.task.CommandHandler.CommandHandlerContextData; +import org.sensorhub.utils.SWEDataUtils; import org.vast.cdm.common.DataStreamWriter; import org.vast.swe.BinaryDataWriter; import org.vast.swe.IComponentFilter; import org.vast.swe.SWEConstants; +import org.vast.swe.ScalarIndexer; import org.vast.swe.fast.JsonDataParserGson; import org.vast.swe.fast.JsonDataWriterGson; import org.vast.util.ReaderException; @@ -56,6 +58,7 @@ public class CommandBindingJson extends ResourceBindingJson ICommandStore cmdStore; JsonDataParserGson paramsReader; Map paramsWriters; + ScalarIndexer timeStampIndexer; String userID; @@ -67,7 +70,8 @@ public CommandBindingJson(RequestContext ctx, IdEncoders idEncoders, boolean for if (forReading) { - this.paramsReader = getSweCommonParser(contextData.dsInfo, reader); + this.paramsReader = getSweCommonParser(contextData.csInfo, reader); + this.timeStampIndexer = SWEDataUtils.getTimeStampIndexer(contextData.csInfo.getRecordStructure()); var user = ctx.getSecurityHandler().getCurrentUser(); this.userID = user != null ? user.getId() : "api"; @@ -78,9 +82,9 @@ public CommandBindingJson(RequestContext ctx, IdEncoders idEncoders, boolean for // init params writer only in case of single command stream // otherwise we'll do it later - if (contextData.dsInfo != null) + if (contextData.csInfo != null) { - var resultWriter = getSweCommonWriter(contextData.dsInfo, writer, ctx.getPropertyFilter()); + var resultWriter = getSweCommonWriter(contextData.csInfo, writer, ctx.getPropertyFilter()); paramsWriters.put(ctx.getParentID(), resultWriter); } } @@ -104,16 +108,21 @@ public ICommandData deserialize(JsonReader reader) throws IOException try { reader.beginObject(); - + while (reader.hasNext()) { var propName = reader.nextName(); - if ("issueTime".equals(propName)) - cmd.withIssueTime(OffsetDateTime.parse(reader.nextString()).toInstant()); + if ("issueTime".equals(propName)) { + if (reader.peek() != JsonToken.NULL) { + cmd.withIssueTime(OffsetDateTime.parse(reader.nextString()).toInstant()); + } else { + reader.nextNull(); + } + } //else if ("foi".equals(propName)) // obs.withFoi(id) - else if ("params".equals(propName)) + else if ("parameters".equals(propName)) { var result = paramsReader.parseNextBlock(); cmd.withParams(result); @@ -133,11 +142,18 @@ else if ("params".equals(propName)) throw new ResourceParseException(INVALID_JSON_ERROR_MSG + e.getMessage()); } - if (contextData.foiId != null) + if (contextData.foiId != null && contextData.foiId != BigId.NONE) cmd.withFoi(contextData.foiId); - // also set timestamp - return cmd.build(); + // set timestamp in params data if present in schema + var newCmd = cmd.build(); + if (timeStampIndexer != null) + { + var issueTimeIdx = timeStampIndexer.getDataIndex(newCmd.getParams()); + newCmd.getParams().setDoubleValue(issueTimeIdx, newCmd.getIssueTime().toEpochMilli() / 1000.0); + } + + return newCmd; } @@ -154,16 +170,18 @@ public void serialize(BigId key, ICommandData cmd, boolean showLinks, JsonWriter writer.name("id").value(cmdId); } - writer.name("control@id").value(controlId); + writer.name("controlstream@id").value(controlId); if (cmd.hasFoi()) { var foiId = idEncoders.getFoiIdEncoder().encodeID(cmd.getFoiID()); - writer.name("foi@id").value(foiId); + writer.name("samplingFeature@id").value(foiId); } + + // TODO: needs "procedure@link" referencing the associated procdure writer.name("issueTime").value(cmd.getIssueTime().toString()); - writer.name("userId").value(cmd.getSenderID()); + writer.name("sender").value(cmd.getSenderID()); // print out current status if (key != null) @@ -174,11 +192,11 @@ public void serialize(BigId key, ICommandData cmd, boolean showLinks, JsonWriter .build()) .findFirst().orElse(null); if (status != null) - writer.name("status").value(status.getStatusCode().toString()); + writer.name("currentStatus").value(status.getStatusCode().toString()); } // create or reuse existing params writer and write param data - writer.name("params"); + writer.name("parameters"); var paramWriter = paramsWriters.computeIfAbsent(cmd.getCommandStreamID(), k -> getSweCommonWriter(k, writer, ctx.getPropertyFilter()) ); @@ -271,7 +289,10 @@ protected boolean allowNonBinaryFormat(ICommandStreamInfo dsInfo) @Override public void startCollection() throws IOException { - startJsonCollection(writer); + if (reader != null) + startJsonCollection(reader); + else + startJsonCollection(writer); } diff --git a/sensorhub-service-consys/src/main/java/org/sensorhub/impl/service/consys/task/CommandBindingSweCommon.java b/sensorhub-service-consys/src/main/java/org/sensorhub/impl/service/consys/task/CommandBindingSweCommon.java index 353b21cf08..98cfdaf7a7 100644 --- a/sensorhub-service-consys/src/main/java/org/sensorhub/impl/service/consys/task/CommandBindingSweCommon.java +++ b/sensorhub-service-consys/src/main/java/org/sensorhub/impl/service/consys/task/CommandBindingSweCommon.java @@ -53,12 +53,12 @@ public CommandBindingSweCommon(RequestContext ctx, IdEncoders idEncoders, boolea super(ctx, idEncoders); this.contextData = (CommandHandlerContextData)ctx.getData(); - var dsInfo = contextData.dsInfo; + var dsInfo = contextData.csInfo; if (forReading) { var is = ctx.getInputStream(); paramsReader = getSweCommonParser(dsInfo, is, ctx.getFormat()); - timeStampIndexer = SWEHelper.getTimeStampIndexer(contextData.dsInfo.getRecordStructure()); + timeStampIndexer = SWEHelper.getTimeStampIndexer(contextData.csInfo.getRecordStructure()); var user = ctx.getSecurityHandler().getCurrentUser(); this.userID = user != null ? user.getId() : "api"; diff --git a/sensorhub-service-consys/src/main/java/org/sensorhub/impl/service/consys/task/CommandHandler.java b/sensorhub-service-consys/src/main/java/org/sensorhub/impl/service/consys/task/CommandHandler.java index d9db3a052b..739c3ade72 100644 --- a/sensorhub-service-consys/src/main/java/org/sensorhub/impl/service/consys/task/CommandHandler.java +++ b/sensorhub-service-consys/src/main/java/org/sensorhub/impl/service/consys/task/CommandHandler.java @@ -33,6 +33,7 @@ import org.sensorhub.api.database.IObsSystemDatabase; import org.sensorhub.api.command.ICommandStatus.CommandStatusCode; import org.sensorhub.api.datastore.DataStoreException; +import org.sensorhub.api.datastore.TemporalFilter; import org.sensorhub.api.datastore.command.CommandFilter; import org.sensorhub.api.datastore.command.CommandStatusFilter; import org.sensorhub.api.datastore.command.CommandStreamKey; @@ -73,7 +74,7 @@ public class CommandHandler extends BaseResourceHandler getBinding(RequestContext ctx, bo // try to fetch command stream since it's needed to configure binding var dsID = ctx.getParentID(); if (dsID != null) - contextData.dsInfo = db.getCommandStreamStore().get(new CommandStreamKey(dsID)); + contextData.csInfo = db.getCommandStreamStore().get(new CommandStreamKey(dsID)); if (forReading) { // when ingesting commands, datastream should be known at this stage - Asserts.checkNotNull(contextData.dsInfo, ICommandStreamInfo.class); + Asserts.checkNotNull(contextData.csInfo, ICommandStreamInfo.class); // create transaction handler here so it can be reused multiple times contextData.streamID = dsID; @@ -216,7 +217,7 @@ public BigId load(String uid) throws Exception });*/ // init event to obs converter - var dsInfo = ((CommandHandlerContextData)ctx.getData()).dsInfo; + var dsInfo = ((CommandHandlerContextData)ctx.getData()).csInfo; var streamHandler = ctx.getStreamHandler(); // create subscriber @@ -307,11 +308,24 @@ protected CommandFilter getFilter(ResourceRef parent, Map quer // filter on parent if needed if (parent.internalID != null) builder.withCommandStreams(parent.internalID); - + + var issueTimeFilterBuilder = new TemporalFilter.Builder(); + // issueTime param - var issueTime = parseTimeStampArg("issueTime", queryParams); + var issueTime = parseTimeStampArgToBuilder("issueTime", queryParams); if (issueTime != null) - builder.withIssueTime(issueTime); + issueTimeFilterBuilder = issueTime; + + // chronological order, attached to issueTime filter + var descendingOrder = getSingleParam("order", queryParams); + if (descendingOrder != null && !descendingOrder.isBlank() + && ("desc".equals(descendingOrder) || "descending".equals(descendingOrder))) + { + issueTimeFilterBuilder.descendingOrder(true); + } + + if (issueTime != null || descendingOrder != null) + builder.withIssueTime(issueTimeFilterBuilder.build()); // status filter params var statusCodes = parseMultiValuesArg("statusCode", queryParams); @@ -387,23 +401,10 @@ protected BigId addEntry(RequestContext ctx, ICommandData cmd) throws DataStoreE // serialize status info we received in response if (ctx.getOutputStream() != null) { - if (status.getResult() != null) - { - // if there is a result, just write the result - var resultHandler = (CommandResultHandler)subResources.get(CommandResultHandler.NAMES[0]); - var resultBinding = resultHandler.getBinding(ctx, false); - resultBinding.startCollection(); - resultBinding.serialize(null, status, false); - resultBinding.endCollection(null); - } - else - { - // else write the complete status report - var statusHandler = (CommandStatusHandler)subResources.get(CommandStatusHandler.NAMES[0]); - ctx.setResponseFormat(ResourceFormat.JSON); - var statusBinding = statusHandler.getBinding(ctx, false); - statusBinding.serialize(null, status, false); - } + var statusHandler = (CommandStatusHandler)subResources.get(CommandStatusHandler.NAMES[0]); + ctx.setResponseFormat(ResourceFormat.JSON); + var statusBinding = statusHandler.getBinding(ctx, false); + statusBinding.serialize(null, status, false); } return status.getCommandID(); diff --git a/sensorhub-service-consys/src/main/java/org/sensorhub/impl/service/consys/task/CommandResultBindingSweCommon.java b/sensorhub-service-consys/src/main/java/org/sensorhub/impl/service/consys/task/CommandResultBindingSweCommon.java index 0c0f102805..9120e206b2 100644 --- a/sensorhub-service-consys/src/main/java/org/sensorhub/impl/service/consys/task/CommandResultBindingSweCommon.java +++ b/sensorhub-service-consys/src/main/java/org/sensorhub/impl/service/consys/task/CommandResultBindingSweCommon.java @@ -18,13 +18,15 @@ import java.io.InputStream; import java.io.OutputStream; import java.util.Collection; +import org.sensorhub.api.command.CommandResult; +import org.sensorhub.api.command.CommandStatus; import org.sensorhub.api.command.ICommandStatus; import org.sensorhub.api.command.ICommandStreamInfo; import org.sensorhub.api.common.BigId; import org.sensorhub.api.common.IdEncoders; import org.sensorhub.api.database.IObsSystemDatabase; +import org.sensorhub.impl.service.consys.ResourceParseException; import org.sensorhub.impl.service.consys.SWECommonUtils; -import org.sensorhub.impl.service.consys.ServiceErrors; import org.sensorhub.impl.service.consys.resource.PropertyFilter; import org.sensorhub.impl.service.consys.resource.RequestContext; import org.sensorhub.impl.service.consys.resource.ResourceBinding; @@ -33,6 +35,9 @@ import org.sensorhub.impl.service.consys.task.CommandStatusHandler.CommandStatusHandlerContextData; import org.vast.cdm.common.DataStreamParser; import org.vast.cdm.common.DataStreamWriter; +import org.vast.swe.fast.JsonDataParserGson; +import org.vast.swe.fast.JsonDataWriterGson; +import com.google.gson.stream.JsonWriter; public class CommandResultBindingSweCommon extends ResourceBinding @@ -75,10 +80,38 @@ else if (ctx.getFormat().equals(ResourceFormat.SWE_XML)) } + public CommandResultBindingSweCommon(RequestContext ctx, IdEncoders idEncoders, boolean forReading, IObsSystemDatabase db, JsonWriter writer) throws IOException + { + super(ctx, idEncoders); + this.contextData = (CommandStatusHandlerContextData)ctx.getData(); + var csInfo = contextData.csInfo; + + resultWriter = new JsonDataWriterGson(writer); + resultWriter.setDataComponents(csInfo.getResultStructure()); + + ctx.setResponseContentType(ctx.getFormat().getMimeType()); + } + + @Override public ICommandStatus deserialize() throws IOException { - throw ServiceErrors.notWritable(); + try + { + var rec = resultReader.parseNextBlock(); + if (rec == null) + return null; + + var result = CommandResult.withData(rec); + return new CommandStatus.Builder() + .withCommand(BigId.NONE) + .withResult(result) + .build(); + } + catch (IOException e) + { + throw new ResourceParseException(e.getMessage()); + } } @@ -86,11 +119,11 @@ public ICommandStatus deserialize() throws IOException public void serialize(BigId key, ICommandStatus status, boolean showLinks) throws IOException { // if embedded result - var obsList = status.getResult().getObservations(); - if (obsList != null) + var inlineRecords = status.getResult().getInlineRecords(); + if (inlineRecords != null) { - for (var obs: obsList) - resultWriter.write(obs.getResult()); + for (var rec: inlineRecords) + resultWriter.write(rec); } } @@ -114,7 +147,11 @@ protected DataStreamWriter getSweCommonWriter(ICommandStreamInfo csInfo, OutputS @Override public void startCollection() throws IOException { - resultWriter.startStream(true); + if (resultReader != null && resultReader instanceof JsonDataParserGson) { + ((JsonDataParserGson)resultReader).setHasArrayWrapper(); + } + else + resultWriter.startStream(true); } diff --git a/sensorhub-service-consys/src/main/java/org/sensorhub/impl/service/consys/task/CommandStatusBindingJson.java b/sensorhub-service-consys/src/main/java/org/sensorhub/impl/service/consys/task/CommandStatusBindingJson.java index 5a765a41f5..51e2d53045 100644 --- a/sensorhub-service-consys/src/main/java/org/sensorhub/impl/service/consys/task/CommandStatusBindingJson.java +++ b/sensorhub-service-consys/src/main/java/org/sensorhub/impl/service/consys/task/CommandStatusBindingJson.java @@ -17,8 +17,11 @@ import java.io.IOException; import java.time.OffsetDateTime; import java.time.format.DateTimeParseException; +import java.util.ArrayList; import java.util.Collection; +import org.sensorhub.api.command.CommandResult; import org.sensorhub.api.command.CommandStatus; +import org.sensorhub.api.command.ICommandResult; import org.sensorhub.api.command.ICommandStatus; import org.sensorhub.api.command.ICommandStatus.CommandStatusCode; import org.sensorhub.api.common.BigId; @@ -29,17 +32,24 @@ import org.sensorhub.impl.service.consys.resource.ResourceBindingJson; import org.sensorhub.impl.service.consys.resource.ResourceLink; import org.sensorhub.impl.service.consys.task.CommandStatusHandler.CommandStatusHandlerContextData; +import org.vast.cdm.common.DataStreamParser; +import org.vast.cdm.common.DataStreamWriter; +import org.vast.swe.fast.JsonDataParserGson; +import org.vast.swe.fast.JsonDataWriterGson; import org.vast.util.ReaderException; import org.vast.util.TimeExtent; import com.google.gson.stream.JsonReader; import com.google.gson.stream.JsonToken; import com.google.gson.stream.JsonWriter; +import net.opengis.swe.v20.DataBlock; public class CommandStatusBindingJson extends ResourceBindingJson { CommandStatusHandlerContextData contextData; ICommandStatusStore statusStore; + DataStreamParser resultReader; + DataStreamWriter resultWriter; public CommandStatusBindingJson(RequestContext ctx, IdEncoders idEncoders, boolean forReading, ICommandStatusStore cmdStore) throws IOException @@ -90,7 +100,7 @@ else if ("statusCode".equals(propName)) var code = CommandStatusCode.valueOf(reader.nextString()); status.withStatusCode(code); } - else if ("progress".equals(propName)) + else if ("percentCompletion".equals(propName)) { var percent = reader.nextInt(); status.withProgress(percent); @@ -100,6 +110,47 @@ else if ("message".equals(propName)) var msg = reader.nextString().trim(); status.withMessage(msg); } + else if ("results".equals(propName)) + { + var dsIdList = new ArrayList(); + var obsIdList = new ArrayList(); + var recList = new ArrayList(); + + reader.beginArray(); + while (reader.hasNext()) + { + reader.beginObject(); + + while (reader.hasNext()) + { + propName = reader.nextName(); + + if (propName.equals("data")) { + var resultReader = new JsonDataParserGson(reader); + resultReader.setDataComponents(contextData.csInfo.getResultStructure()); + recList.add(resultReader.parseNextBlock()); + } + else + reader.skipValue(); + + // TODO add support for observation and datastream references + } + + reader.endObject(); + } + reader.endArray(); + + ICommandResult result = null; + if (!recList.isEmpty()) + result = CommandResult.withData(recList); + else if (!obsIdList.isEmpty()) + result = CommandResult.withObservations(obsIdList); + else if (!dsIdList.isEmpty()) + result = CommandResult.withDatastreams(dsIdList); + + if (result != null) + status.withResult(result); + } else reader.skipValue(); } @@ -142,6 +193,9 @@ public void serialize(BigId key, ICommandStatus status, boolean showLinks, boole writer.name("reportTime").value(status.getReportTime().toString()); writer.name("statusCode").value(status.getStatusCode().toString()); + if (status.getProgress() >= 0) + writer.name("percentCompletion").value(status.getProgress()); + if (status.getExecutionTime() != null) { writer.name("executionTime").beginArray() @@ -150,43 +204,63 @@ public void serialize(BigId key, ICommandStatus status, boolean showLinks, boole .endArray(); } - if (status.getProgress() >= 0) - writer.name("progress").value(status.getProgress()); + if (status.getMessage() != null) + writer.name("message").value(status.getMessage()); + int resultNum = 1; // temporary ID for now if (status.getResult() != null) { var result = status.getResult(); - writer.name("result").beginObject(); + writer.name("results").beginArray(); - // whole datastream - if (result.getDataStreamID() != null) + // datastream references + if (result.getDataStreamIDs() != null) { - var dsId = idEncoders.getDataStreamIdEncoder().encodeID(result.getDataStreamID()); - writer.name("datastream@id").value(dsId); + for (var dsId: result.getDataStreamIDs()) { + writer.beginObject(); + writer.name("id").value(Integer.toString(resultNum++)); + var id = idEncoders.getDataStreamIdEncoder().encodeID(dsId); + writer.name("datastream@id").value(id); + writer.name("datastream@link").value(ctx.getApiRootURL() + "/datastreams/" + id); + writer.endObject(); + } } - // obs references - else if (result.getObservationRefs() != null) + // observation references + else if (result.getObservationIDs() != null) { - writer.name("obsRefs").beginArray(); - for (var bigId: result.getObservationRefs()) + for (var obsId: result.getObservationIDs()) { - var obsId = idEncoders.getObsIdEncoder().encodeID(bigId); - writer.value(obsId); + writer.beginObject(); + writer.name("id").value(Integer.toString(resultNum++)); + var id = idEncoders.getObsIdEncoder().encodeID(obsId); + writer.name("observation@id").value(id); + writer.name("observation@link").value(ctx.getApiRootURL() + "/observations/" + id); + writer.endObject(); } - writer.endArray(); } - // inline obs - else if (status.getResult().getObservations() != null) - writer.name("inline").value(true); + // inline data + else if (status.getResult().getInlineRecords() != null) + { + var resultWriter = new JsonDataWriterGson(writer); + resultWriter.setDataComponents(contextData.csInfo.getResultStructure()); + + writer.setSerializeNulls(true); + for (var rec: result.getInlineRecords()) + { + writer.beginObject(); + writer.name("id").value(Integer.toString(resultNum++)); + writer.name("data"); + resultWriter.write(rec); + writer.endObject(); + } + writer.setSerializeNulls(false); + } - writer.endObject(); + writer.endArray(); } - if (status.getMessage() != null) - writer.name("message").value(status.getMessage()); - writer.endObject(); writer.flush(); } diff --git a/sensorhub-service-consys/src/main/java/org/sensorhub/impl/service/consys/task/CommandStatusHandler.java b/sensorhub-service-consys/src/main/java/org/sensorhub/impl/service/consys/task/CommandStatusHandler.java index 6fe35d559b..798e7f895b 100644 --- a/sensorhub-service-consys/src/main/java/org/sensorhub/impl/service/consys/task/CommandStatusHandler.java +++ b/sensorhub-service-consys/src/main/java/org/sensorhub/impl/service/consys/task/CommandStatusHandler.java @@ -28,6 +28,7 @@ import org.sensorhub.api.common.BigId; import org.sensorhub.api.database.IObsSystemDatabase; import org.sensorhub.api.datastore.DataStoreException; +import org.sensorhub.api.datastore.TemporalFilter; import org.sensorhub.api.datastore.command.CommandStatusFilter; import org.sensorhub.api.datastore.command.CommandStreamKey; import org.sensorhub.api.datastore.command.ICommandStatusStore; @@ -60,12 +61,12 @@ public class CommandStatusHandler extends BaseResourceHandler getBinding(RequestContext ctx, ctx.setData(contextData); // try to fetch command stream since it's needed to configure binding - var dsID = ctx.getParentID(); - if (dsID != null) + Asserts.checkState(ctx.getParentID() != null); + BigId csID = null; + if (ctx.getParentRef().type instanceof CommandHandler) { - var parentType = ctx.getParentRef().type; - if (parentType instanceof CommandStreamHandler) - contextData.csInfo = db.getCommandStreamStore().get(new CommandStreamKey(dsID)); + var cmd = db.getCommandStore().get(ctx.getParentID()); + csID = cmd.getCommandStreamID(); } + else if (ctx.getParentRef().type instanceof CommandStreamHandler) + csID = ctx.getParentID(); + + Asserts.checkNotNull(csID, BigId.class); + contextData.csInfo = db.getCommandStreamStore().get(new CommandStreamKey(csID)); + Asserts.checkNotNull(contextData.csInfo, ICommandStreamInfo.class); if (forReading) { @@ -103,7 +110,7 @@ protected ResourceBinding getBinding(RequestContext ctx, Asserts.checkNotNull(contextData.csInfo, ICommandStreamInfo.class); // create transaction handler here so it can be reused multiple times - contextData.streamID = dsID; + contextData.streamID = csID; contextData.csHandler = transactionHandler.getCommandStreamHandler(contextData.streamID); if (contextData.csHandler == null) throw ServiceErrors.notWritable(); @@ -258,11 +265,24 @@ else if (parent.type instanceof CommandStreamHandler) var cmdIDs = parseResourceIds("commands", queryParams, idEncoders.getCommandIdEncoder()); if (parent.internalID == null && cmdIDs != null && !cmdIDs.isEmpty()) builder.withCommands(cmdIDs); - + + var reportTimeFilterBuilder = new TemporalFilter.Builder(); + // reportTime param - var issueTime = parseTimeStampArg("reportTime", queryParams); + var issueTime = parseTimeStampArgToBuilder("reportTime", queryParams); if (issueTime != null) - builder.withReportTime(issueTime); + reportTimeFilterBuilder = issueTime; + + // chronological order. attach to reportTime filter + var descendingOrder = getSingleParam("order", queryParams); + if (descendingOrder != null && !descendingOrder.isBlank() + && ("desc".equals(descendingOrder) || "descending".equals(descendingOrder))) + { + reportTimeFilterBuilder.descendingOrder(true); + } + + if (issueTime != null || descendingOrder != null) + builder.withReportTime(reportTimeFilterBuilder.build()); // executionTime param var execTime = parseTimeStampArg("executionTime", queryParams); diff --git a/sensorhub-service-consys/src/main/java/org/sensorhub/impl/service/consys/task/CommandStreamBindingJson.java b/sensorhub-service-consys/src/main/java/org/sensorhub/impl/service/consys/task/CommandStreamBindingJson.java index f90cb29903..b57b19d185 100644 --- a/sensorhub-service-consys/src/main/java/org/sensorhub/impl/service/consys/task/CommandStreamBindingJson.java +++ b/sensorhub-service-consys/src/main/java/org/sensorhub/impl/service/consys/task/CommandStreamBindingJson.java @@ -311,7 +311,10 @@ public void serialize(CommandStreamKey key, ICommandStreamInfo csInfo, boolean s @Override public void startCollection() throws IOException { - startJsonCollection(writer); + if (reader != null) + startJsonCollection(reader); + else + startJsonCollection(writer); } diff --git a/sensorhub-service-consys/src/main/java/org/sensorhub/impl/service/consys/task/CommandStreamHandler.java b/sensorhub-service-consys/src/main/java/org/sensorhub/impl/service/consys/task/CommandStreamHandler.java index cdc6096327..5d7ed8bd2a 100644 --- a/sensorhub-service-consys/src/main/java/org/sensorhub/impl/service/consys/task/CommandStreamHandler.java +++ b/sensorhub-service-consys/src/main/java/org/sensorhub/impl/service/consys/task/CommandStreamHandler.java @@ -126,6 +126,16 @@ protected void buildFilter(final ResourceRef parent, final Map .withInternalIDs(foiIDs) .done(); }*/ + + // system param + var sysIDs = parseResourceIdsOrUids("system", queryParams, idEncoders.getSystemIdEncoder()); + if (sysIDs != null && !sysIDs.isEmpty()) + { + if (sysIDs.isUids()) + builder.withSystems().withUniqueIDs(sysIDs.getUids()).includeMembers(true).done(); + else + builder.withSystems().withInternalIDs(sysIDs.getBigIds()).includeMembers(true).done(); + } } diff --git a/sensorhub-service-consys/src/main/java/org/sensorhub/impl/service/consys/task/CommandStreamSchemaBindingJson.java b/sensorhub-service-consys/src/main/java/org/sensorhub/impl/service/consys/task/CommandStreamSchemaBindingJson.java index 3b722d453d..caf18caa12 100644 --- a/sensorhub-service-consys/src/main/java/org/sensorhub/impl/service/consys/task/CommandStreamSchemaBindingJson.java +++ b/sensorhub-service-consys/src/main/java/org/sensorhub/impl/service/consys/task/CommandStreamSchemaBindingJson.java @@ -75,8 +75,10 @@ public ICommandStreamInfo deserialize(JsonReader reader) throws IOException { DataComponent commandStruct = null; DataComponent resultStruct = null; + DataComponent feasibilityResultStruct = null; DataEncoding commandEncoding = new TextEncodingImpl(); DataEncoding resultEncoding = new TextEncodingImpl(); + DataEncoding feasibilityResultEncoding = new TextEncodingImpl(); try { @@ -89,7 +91,7 @@ public ICommandStreamInfo deserialize(JsonReader reader) throws IOException { var prop = reader.nextName(); - if ("paramsSchema".equals(prop)) + if ("parametersSchema".equals(prop)) { commandStruct = sweBindings.readDataComponent(reader); commandStruct.setName(SWECommonUtils.NO_NAME); @@ -107,6 +109,16 @@ else if ("resultEncoding".equals(prop)) { resultEncoding = sweBindings.readEncoding(reader); } + else if("feasibilityResultSchema".equals(prop)) + { + // TODO: feasibility results are dropped currently + feasibilityResultStruct = sweBindings.readDataComponent(reader); + feasibilityResultStruct.setName(SWECommonUtils.NO_NAME); + } + else if("feasibilityResultEncoding".equals(prop)) + { + feasibilityResultEncoding = sweBindings.readEncoding(reader); + } else reader.skipValue(); } @@ -128,6 +140,8 @@ else if ("resultEncoding".equals(prop)) .withRecordEncoding(commandEncoding) .withResultDescription(resultStruct) .withResultEncoding(resultEncoding) + .withFeasibilityResultDescription(feasibilityResultStruct) + .withFeasibilityResultEncoding(feasibilityResultEncoding) .build(); } @@ -141,7 +155,7 @@ public void serialize(CommandStreamKey key, ICommandStreamInfo dsInfo, boolean s // param structure & encoding try { - writer.name("paramsSchema"); + writer.name("parametersSchema"); sweBindings.writeDataComponent(writer, dsInfo.getRecordStructure(), false); } catch (Exception e) @@ -162,6 +176,20 @@ public void serialize(CommandStreamKey key, ICommandStreamInfo dsInfo, boolean s throw new IOException("Error writing command structure", e); } } + + // feasibility result schema + if (dsInfo.hasFeasibilityResult()) + { + try + { + writer.name("feasibilityResultSchema"); + sweBindings.writeDataComponent(writer, dsInfo.getFeasibilityResultStructure(), false); + } + catch (Exception e) + { + throw new IOException("Error writing feasibility result structure", e); + } + } writer.endObject(); writer.flush(); diff --git a/sensorhub-service-consys/src/test/java/org/sensorhub/impl/service/consys/TestControlStreams.java b/sensorhub-service-consys/src/test/java/org/sensorhub/impl/service/consys/TestControlStreams.java index cff552f6db..da86f348f7 100644 --- a/sensorhub-service-consys/src/test/java/org/sensorhub/impl/service/consys/TestControlStreams.java +++ b/sensorhub-service-consys/src/test/java/org/sensorhub/impl/service/consys/TestControlStreams.java @@ -109,7 +109,7 @@ protected JsonObject createControlJson(DataComponent paramStruct) throws Excepti { var sweBindings = new SWEJsonBindings(); writer.name("schema").beginObject(); - writer.name("paramsSchema"); + writer.name("parametersSchema"); sweBindings.writeDataComponent(writer, paramStruct, false); writer.endObject(); diff --git a/sensorhub-service-consys/src/test/java/org/sensorhub/impl/service/consys/client/TestClientDataStreams.java b/sensorhub-service-consys/src/test/java/org/sensorhub/impl/service/consys/client/TestClientDataStreams.java index aa7461c300..d29a437d65 100644 --- a/sensorhub-service-consys/src/test/java/org/sensorhub/impl/service/consys/client/TestClientDataStreams.java +++ b/sensorhub-service-consys/src/test/java/org/sensorhub/impl/service/consys/client/TestClientDataStreams.java @@ -22,7 +22,6 @@ import java.util.Set; import org.junit.Before; import org.junit.Test; -import org.sensorhub.api.common.BigId; import org.sensorhub.api.common.SensorHubException; import org.sensorhub.api.data.DataStreamInfo; import org.sensorhub.api.data.IDataStreamInfo; @@ -40,6 +39,15 @@ public class TestClientDataStreams extends TestClientBase TestClientSystems systemTests; + public TestClientDataStreams() {} + + + TestClientDataStreams(String apiRootUrl) + { + this.apiRootUrl = apiRootUrl; + } + + @Before public void setup() throws IOException, SensorHubException { diff --git a/sensorhub-service-consys/src/test/java/org/sensorhub/impl/service/consys/client/TestClientObs.java b/sensorhub-service-consys/src/test/java/org/sensorhub/impl/service/consys/client/TestClientObs.java new file mode 100644 index 0000000000..0d55b3edf4 --- /dev/null +++ b/sensorhub-service-consys/src/test/java/org/sensorhub/impl/service/consys/client/TestClientObs.java @@ -0,0 +1,107 @@ +/***************************** BEGIN LICENSE BLOCK *************************** + +The contents of this file are subject to the Mozilla Public License, v. 2.0. +If a copy of the MPL was not distributed with this file, You can obtain one +at http://mozilla.org/MPL/2.0/. + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the License. + +Copyright (C) 2023 Sensia Software LLC. All Rights Reserved. + +******************************* END LICENSE BLOCK ***************************/ + +package org.sensorhub.impl.service.consys.client; + +import static org.junit.Assert.assertFalse; +import java.io.IOException; +import java.time.Instant; +import java.time.temporal.ChronoUnit; +import java.util.ArrayList; +import java.util.concurrent.CompletableFuture; +import org.junit.Before; +import org.junit.Test; +import org.sensorhub.api.common.SensorHubException; +import org.sensorhub.api.data.ObsData; +import org.sensorhub.impl.service.consys.resource.ResourceFormat; +import org.vast.swe.helper.GeoPosHelper; +import com.google.common.base.Strings; + + +public class TestClientObs extends TestClientBase +{ + TestClientSystems systemTests; + TestClientDataStreams dsTests; + + + @Before + public void setup() throws IOException, SensorHubException + { + super.setup(); + //this.apiRootUrl = "http://localhost:8181/sensorhub/api"; + dsTests = new TestClientDataStreams(apiRootUrl); + systemTests = new TestClientSystems(apiRootUrl); + } + + + @Test + public void testAddObs() throws Exception + { + var sysId = systemTests.addSystem(1, true); + + var swe = new GeoPosHelper(); + var recordStruct = swe.createLocationVectorLLA() + .name("pos") + .build(); + + var dsId = dsTests.addDataStream(sysId, 3, recordStruct, true); + + addObs(dsId, 0, 100, true); + } + + + protected void addObs(String dsId, int start, int count, boolean checkHead) throws Exception + { + var client = ConSysApiClient + .newBuilder(apiRootUrl) + .build(); + + var dsInfo = client.getDatastreamSchema(dsId, ResourceFormat.SWE_JSON, ResourceFormat.JSON).get(); + var recordStruct = dsInfo.getRecordStructure(); + + var now = Instant.now().truncatedTo(ChronoUnit.SECONDS).minusSeconds(3600); + var allFutures = new ArrayList>(); + for (int i = start; i < start+count; i++) { + var ts = now.plusSeconds(i*1); + var data = recordStruct.createDataBlock(); + data.setDoubleValue(0, ts.getEpochSecond()*1000); + data.setDoubleValue(1, i); + data.setDoubleValue(2, i+1); + data.setDoubleValue(3, i+2); + var obs = new ObsData.Builder() + .withPhenomenonTime(ts) + .withResult(data) + .build(); + var f = client.pushObs(dsId, dsInfo, obs); + allFutures.add(f); + } + + // wait for all requests to be complete + CompletableFuture.allOf(allFutures.toArray(new CompletableFuture[0])).join(); + + if (checkHead) { + for (var f: allFutures) { + var id = f.get(); + assertFalse(Strings.isNullOrEmpty(id)); + checkObsIdExists(id); + } + } + } + + + protected void checkObsIdExists(String id) throws Exception + { + checkUriExists(apiRootUrl + "/" + OBS_COLLECTION + "/" + id); + } +} diff --git a/sensorhub-service-consys/src/test/java/org/sensorhub/impl/service/consys/demodata/Api.java b/sensorhub-service-consys/src/test/java/org/sensorhub/impl/service/consys/demodata/Api.java index 8173a66c61..3e954c0cca 100644 --- a/sensorhub-service-consys/src/test/java/org/sensorhub/impl/service/consys/demodata/Api.java +++ b/sensorhub-service-consys/src/test/java/org/sensorhub/impl/service/consys/demodata/Api.java @@ -49,9 +49,7 @@ public class Api { static String API_ROOT = "http://localhost:8181/sensorhub/api/"; - static String CREDENTIALS = "admin:test"; -// static String API_ROOT = "https://api.georobotix.io/ogc/demo1/api/"; -// static String CREDENTIALS = "admin:admin@demo"; + static String CREDENTIALS = System.getProperty("osh.test.credentials", "admin:test"); static Gson gson = new GsonBuilder().setPrettyPrinting().create(); diff --git a/sensorhub-service-consys/src/test/java/org/sensorhub/impl/service/consys/demodata/GfsModel.java b/sensorhub-service-consys/src/test/java/org/sensorhub/impl/service/consys/demodata/GfsModel.java index 94564d72b4..1d7abe8c22 100644 --- a/sensorhub-service-consys/src/test/java/org/sensorhub/impl/service/consys/demodata/GfsModel.java +++ b/sensorhub-service-consys/src/test/java/org/sensorhub/impl/service/consys/demodata/GfsModel.java @@ -57,7 +57,8 @@ static void addResources() throws IOException static AbstractProcess createGFSModelSpecs() { return sml.createSimpleProcess() - .definition(SWEConstants.DEF_MODELSIM) + .definition(SWEConstants.DEF_SYSTEM) + .assetType(SWEConstants.ASSET_TYPE_SIMULATION) .uniqueID(GFS_PROC_UID) .name("Global Forecast System (GFS)") .description("The Global Forecast System (GFS) is a global weather forecast model developed " @@ -144,7 +145,8 @@ static AbstractProcess createGFSModelSpecs() static AbstractProcess createModelInstance(Instant startTime) { return sml.createSimpleProcess() - .definition(SWEConstants.DEF_MODELSIM) + .definition(SWEConstants.DEF_SYSTEM) + .assetType(SWEConstants.ASSET_TYPE_SIMULATION) .uniqueID("urn:x-noaa:forecast:gfs:ncep") .name("GFS Weather Forecast at NCEP") .description("Instance of GFS model running at NCEP. This instance outputs data with a base " diff --git a/sensorhub-webui-core/build.gradle b/sensorhub-webui-core/build.gradle index 073aa2d315..7a7173621f 100644 --- a/sensorhub-webui-core/build.gradle +++ b/sensorhub-webui-core/build.gradle @@ -28,6 +28,9 @@ dependencies { embeddedImpl 'com.vaadin:vaadin-compatibility-client-compiled:' + vaadinVersion embeddedImpl 'com.vaadin:vaadin-themes:' + vaadinVersion + embeddedImpl 'com.google.zxing:core:3.5.3' + embeddedImpl 'com.google.zxing:javase:3.5.3' + compileOnly 'org.osgi:org.osgi.core:5.0.0' compileOnly 'org.apache.felix:org.apache.felix.bundlerepository:2.0.10' diff --git a/sensorhub-webui-core/src/main/java/org/sensorhub/ui/AdminUI.java b/sensorhub-webui-core/src/main/java/org/sensorhub/ui/AdminUI.java index 9fa4aea16d..5009eaf5f0 100644 --- a/sensorhub-webui-core/src/main/java/org/sensorhub/ui/AdminUI.java +++ b/sensorhub-webui-core/src/main/java/org/sensorhub/ui/AdminUI.java @@ -1,16 +1,16 @@ /***************************** BEGIN LICENSE BLOCK *************************** -The contents of this file are subject to the Mozilla Public License, v. 2.0. -If a copy of the MPL was not distributed with this file, You can obtain one -at http://mozilla.org/MPL/2.0/. - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the License. - -Copyright (C) 2012-2015 Sensia Software LLC. All Rights Reserved. - -******************************* END LICENSE BLOCK ***************************/ + The contents of this file are subject to the Mozilla Public License, v. 2.0. + If a copy of the MPL was not distributed with this file, You can obtain one + at http://mozilla.org/MPL/2.0/. + + Software distributed under the License is distributed on an "AS IS" basis, + WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + for the specific language governing rights and limitations under the License. + + Copyright (C) 2012-2015 Sensia Software LLC. All Rights Reserved. + + ******************************* END LICENSE BLOCK ***************************/ package org.sensorhub.ui; @@ -22,8 +22,11 @@ import java.util.Map; import java.util.Timer; import java.util.TimerTask; +import java.util.Collection; import java.util.concurrent.Flow.Subscription; import javax.servlet.ServletContext; + +import com.vaadin.shared.ui.MultiSelectMode; import org.sensorhub.api.ISensorHub; import org.sensorhub.api.client.ClientConfig; import org.sensorhub.api.comm.NetworkConfig; @@ -43,6 +46,7 @@ import org.sensorhub.api.system.ISystemGroupDriver; import org.sensorhub.impl.module.ModuleRegistry; import org.sensorhub.impl.sensor.SensorSystem; +import org.sensorhub.impl.sensor.SensorSystemConfig; import org.sensorhub.impl.sensor.SensorSystemConfig.SystemMember; import org.sensorhub.ui.ModuleTypeSelectionPopup.ModuleTypeSelectionCallback; import org.sensorhub.ui.api.IModuleAdminPanel; @@ -78,11 +82,19 @@ import com.vaadin.ui.Alignment; import com.vaadin.ui.Button; import com.vaadin.ui.Component; +import com.vaadin.ui.FormLayout; import com.vaadin.ui.HorizontalLayout; import com.vaadin.ui.HorizontalSplitPanel; import com.vaadin.ui.Image; import com.vaadin.ui.Label; import com.vaadin.ui.Notification; +import com.vaadin.ui.PasswordField; +import com.vaadin.event.ShortcutAction; +import com.vaadin.ui.TextField; +import org.sensorhub.api.security.IUserInfo; +import org.eclipse.jetty.util.security.Credential; +import org.sensorhub.impl.security.BasicSecurityRealmConfig.UserConfig; +import org.sensorhub.impl.security.TOTPUtils; import com.vaadin.ui.Button.ClickEvent; import com.vaadin.ui.Button.ClickListener; import com.vaadin.ui.TabSheet.SelectedTabChangeEvent; @@ -96,6 +108,9 @@ import com.vaadin.ui.Window; import com.vaadin.ui.Window.CloseEvent; import com.vaadin.ui.Window.CloseListener; +import com.vaadin.v7.ui.ComboBox; +import com.vaadin.v7.data.Property.ValueChangeEvent; +import com.vaadin.v7.data.Property.ValueChangeListener; @Theme("sensorhub") @@ -105,20 +120,49 @@ public class AdminUI extends com.vaadin.ui.UI implements UIConstants { private static final String LOG_INIT_MSG = "New connection to admin UI (from ip={}, user={})"; private static final String LOG_ACTION_MSG = "New UI action: {} (from ip={}, user={})"; - - private static final Action ADD_MODULE_ACTION = new Action("Add New Module", new ThemeResource("icons/module_add.png")); - private static final Action ADD_SUBMODULE_ACTION = new Action("Add Submodule", new ThemeResource("icons/module_add.png")); - private static final Action REMOVE_MODULE_ACTION = new Action("Remove Module", new ThemeResource("icons/module_delete.png")); - private static final Action REMOVE_SUBMODULE_ACTION = new Action("Remove Submodule", new ThemeResource("icons/module_delete.png")); - private static final Action START_MODULE_ACTION = new Action("Start", new ThemeResource("icons/enable.png")); - private static final Action STOP_MODULE_ACTION = new Action("Stop", new ThemeResource("icons/disable.gif")); - private static final Action RESTART_MODULE_ACTION = new Action("Restart", new ThemeResource("icons/refresh.gif")); - private static final Action REINIT_MODULE_ACTION = new Action("Force Init", new ThemeResource("icons/refresh.gif")); + + private Action ADD_MODULE_ACTION; + private Action ADD_SUBMODULE_ACTION; + private Action REMOVE_MODULE_ACTION; + private Action REMOVE_SUBMODULE_ACTION; + private Action START_MODULE_ACTION; + private Action STOP_MODULE_ACTION; + private Action RESTART_MODULE_ACTION; + private Action REINIT_MODULE_ACTION; + private Action SELECT_ALL_MODULES_ACTION; + private Action DESELECT_ALL_MODULES_ACTION; private static final Resource LOGO_ICON = new ThemeResource("icons/osh_logo_small.png"); private static final String STYLE_LOGO = "logo"; private static final String PROP_STATE = "state"; private static final String PROP_MODULE_OBJECT = "module"; - + + static final Map SUPPORTED_LOCALES = new HashMap<>(); + static { + SUPPORTED_LOCALES.put("English", Locale.ENGLISH); + SUPPORTED_LOCALES.put("Español", new Locale("es")); + SUPPORTED_LOCALES.put("Français", new Locale("fr")); + SUPPORTED_LOCALES.put("العربية", new Locale("ar")); + SUPPORTED_LOCALES.put("Русский", new Locale("ru")); + SUPPORTED_LOCALES.put("简体中文", new Locale("zh", "CN")); + SUPPORTED_LOCALES.put("日本語", new Locale("ja")); + SUPPORTED_LOCALES.put("한국어", new Locale("ko")); + SUPPORTED_LOCALES.put("العربية (الأردن)", new Locale("ar", "JO")); + SUPPORTED_LOCALES.put("Latviešu", new Locale("lv")); + SUPPORTED_LOCALES.put("Eesti", new Locale("et")); + SUPPORTED_LOCALES.put("Português", new Locale("pt")); + SUPPORTED_LOCALES.put("Deutsch", new Locale("de")); + SUPPORTED_LOCALES.put("ไทย", new Locale("th")); + SUPPORTED_LOCALES.put("हिन्दी", new Locale("hi")); + SUPPORTED_LOCALES.put("বাংলা", new Locale("bn")); + SUPPORTED_LOCALES.put("پنجابی", new Locale("pa", "PK")); + SUPPORTED_LOCALES.put("Tiếng Việt", new Locale("vi")); + SUPPORTED_LOCALES.put("粵語", new Locale("yue")); + SUPPORTED_LOCALES.put("Türkçe", new Locale("tr")); + SUPPORTED_LOCALES.put("Bahasa Indonesia", new Locale("id")); + SUPPORTED_LOCALES.put("اردو", new Locale("ur")); + SUPPORTED_LOCALES.put("Italiano", new Locale("it")); + } + transient Logger log; transient ISensorHub hub; transient AdminUIModule adminModule; @@ -130,8 +174,8 @@ public class AdminUI extends com.vaadin.ui.UI implements UIConstants transient Accordion moduleStack; transient VerticalLayout configArea; transient IModule visibleModule; - - + + @Override protected void init(VaadinRequest request) { @@ -149,10 +193,22 @@ protected void init(VaadinRequest request) { throw new IllegalStateException("Cannot get UI module configuration", e); } - + // log request logInitRequest(request); - + + // init actions + ADD_MODULE_ACTION = new Action(I18N.get("action.addModule"), new ThemeResource("icons/module_add.png")); + ADD_SUBMODULE_ACTION = new Action(I18N.get("action.addSubmodule"), new ThemeResource("icons/module_add.png")); + REMOVE_MODULE_ACTION = new Action(I18N.get("action.removeModule"), new ThemeResource("icons/module_delete.png")); + REMOVE_SUBMODULE_ACTION = new Action(I18N.get("action.removeSubmodule"), new ThemeResource("icons/module_delete.png")); + START_MODULE_ACTION = new Action(I18N.get("action.start"), new ThemeResource("icons/enable.png")); + STOP_MODULE_ACTION = new Action(I18N.get("action.stop"), new ThemeResource("icons/disable.gif")); + RESTART_MODULE_ACTION = new Action(I18N.get("action.restart"), new ThemeResource("icons/refresh.gif")); + REINIT_MODULE_ACTION = new Action(I18N.get("action.forceInit"), new ThemeResource("icons/refresh.gif")); + SELECT_ALL_MODULES_ACTION = new Action(I18N.get("action.selectAll")); + DESELECT_ALL_MODULES_ACTION = new Action(I18N.get("action.deselectAll")); + // security check if (!securityHandler.hasPermission(securityHandler.admin_access)) { @@ -160,7 +216,7 @@ protected void init(VaadinRequest request) securityHandler.clearCurrentUser(); return; } - + // register new field converter for integer numbers ConverterFactory converterFactory = new DefaultConverterFactory() { @Override @@ -169,7 +225,7 @@ protected Converter findConverter( Class presentationType, Class modelType) { // Handle String <-> Integer/Short/Long if (presentationType == String.class && - (modelType == Long.class || modelType == Integer.class || modelType == Short.class )) { + (modelType == Long.class || modelType == Integer.class || modelType == Short.class )) { return (Converter) new StringToIntegerConverter() { @Override protected NumberFormat getFormat(Locale locale) { @@ -184,20 +240,20 @@ protected NumberFormat getFormat(Locale locale) { } }; VaadinSession.getCurrent().setConverterFactory(converterFactory); - + // init main panels HorizontalSplitPanel splitPanel = new HorizontalSplitPanel(); splitPanel.setMinSplitPosition(300.0f, Unit.PIXELS); splitPanel.setMaxSplitPosition(30.0f, Unit.PERCENTAGE); splitPanel.setSplitPosition(350.0f, Unit.PIXELS); setContent(splitPanel); - + // build left pane VerticalLayout leftPane = new VerticalLayout(); leftPane.setSizeFull(); leftPane.setSpacing(false); leftPane.setMargin(false); - + // header image and title Component header = buildHeader(); leftPane.addComponent(header); @@ -207,7 +263,7 @@ protected NumberFormat getFormat(Locale locale) { Component toolbar = buildToolbar(); leftPane.addComponent(toolbar); leftPane.setExpandRatio(toolbar, 0); - + // accordion with several sections moduleTables.clear(); final var stack = moduleStack = new Accordion(); @@ -221,75 +277,86 @@ public void selectedTabChange(SelectedTabChangeEvent event) }); VerticalLayout layout; Tab tab; - + layout = new VerticalLayout(); - tab = stack.addTab(layout, "Sensors"); + tab = stack.addTab(layout, I18N.get("tab.sensors")); //tab.setIcon(ACC_TAB_ICON); //tab.setIcon(FontAwesome.VIDEO_CAMERA); //tab.setIcon(FontAwesome.STETHOSCOPE); tab.setIcon(FontAwesome.RSS); buildModuleList(layout, SensorConfig.class); - + layout = new VerticalLayout(); - tab = stack.addTab(layout, "Databases"); + tab = stack.addTab(layout, I18N.get("tab.databases")); //tab.setIcon(ACC_TAB_ICON); tab.setIcon(FontAwesome.DATABASE); buildModuleList(layout, DatabaseConfig.class); - + layout = new VerticalLayout(); - tab = stack.addTab(layout, "Processing"); + tab = stack.addTab(layout, I18N.get("tab.processing")); //tab.setIcon(ACC_TAB_ICON); tab.setIcon(FontAwesome.GEARS); buildModuleList(layout, ProcessConfig.class); - + layout = new VerticalLayout(); - tab = stack.addTab(layout, "Services"); + tab = stack.addTab(layout, I18N.get("tab.services")); //tab.setIcon(ACC_TAB_ICON); //tab.setIcon(FontAwesome.CLOUD_DOWNLOAD); //tab.setIcon(FontAwesome.CUBES); tab.setIcon(FontAwesome.TASKS); buildModuleList(layout, ServiceConfig.class); - + layout = new VerticalLayout(); - tab = stack.addTab(layout, "Clients"); + tab = stack.addTab(layout, I18N.get("tab.clients")); //tab.setIcon(ACC_TAB_ICON); tab.setIcon(FontAwesome.CLOUD_UPLOAD); buildModuleList(layout, ClientConfig.class); - + layout = new VerticalLayout(); - tab = stack.addTab(layout, "Network"); + tab = stack.addTab(layout, I18N.get("tab.network")); //tab.setIcon(ACC_TAB_ICON); //tab.setIcon(FontAwesome.SIGNAL); tab.setIcon(FontAwesome.SITEMAP); buildNetworkModuleList(layout); - + layout = new VerticalLayout(); - tab = stack.addTab(layout, "Security"); + tab = stack.addTab(layout, I18N.get("tab.security")); //tab.setIcon(ACC_TAB_ICON); tab.setIcon(FontAwesome.LOCK); buildModuleList(layout, SecurityModuleConfig.class); - + leftPane.addComponent(stack); leftPane.setExpandRatio(stack, 1); splitPanel.addComponent(leftPane); - + // init config area configArea = new VerticalLayout(); configArea.setMargin(true); splitPanel.addComponent(configArea); - + // select first tab stack.setSelectedTab(0); selectStackItem(stack); - - // register to module registry events - hub.getEventBus().newSubscription() - .withTopicID(ModuleRegistry.EVENT_GROUP_ID) - .consume(this::handleEvent) - .thenAccept(s -> moduleEventsSub = s); + + // check 2FA before building main UI + String remoteUser = request.getRemoteUser(); + if (remoteUser != null) { + org.sensorhub.api.security.IUserInfo userInfo = hub.getSecurityManager().getUserInfo(remoteUser); + if (userInfo instanceof org.sensorhub.impl.security.BasicSecurityRealmConfig.UserConfig) { + org.sensorhub.impl.security.BasicSecurityRealmConfig.UserConfig userConfig = (org.sensorhub.impl.security.BasicSecurityRealmConfig.UserConfig) userInfo; + if (userConfig.isTwoFactorEnabled) { + Boolean verified = (Boolean) request.getWrappedSession().getAttribute("2FA_VERIFIED"); + if (verified == null || !verified) { + showTwoFactorAuth(userInfo, null); + return; + } + } + } + } + buildMainUI(); } - - + + protected void selectStackItem(Accordion stack) { VerticalLayout tabLayout = (VerticalLayout)stack.getSelectedTab(); @@ -297,6 +364,8 @@ protected void selectStackItem(Accordion stack) { TreeTable table = (TreeTable)tabLayout.getComponent(0); Object itemId = table.getValue(); + if(itemId instanceof Collection) + itemId = ((Collection)itemId).stream().findFirst().orElse(null); if (itemId != null) { IModule module = (IModule)table.getItem(itemId).getItemProperty(PROP_MODULE_OBJECT).getValue(); @@ -306,22 +375,22 @@ protected void selectStackItem(Accordion stack) selectNone(table); } } - + protected Component buildHeader() { HorizontalLayout header = new HorizontalLayout(); header.setMargin(false); header.setWidth(100.0f, Unit.PERCENTAGE); - + // logo Image img = new Image(null, LOGO_ICON); img.setStyleName(STYLE_LOGO); header.addComponent(img); header.setExpandRatio(img, 0); header.setComponentAlignment(img, Alignment.MIDDLE_LEFT); - + // title - Label title = new Label("OpenSensorHub"); + Label title = new Label(I18N.get("app.title")); //title.addStyleName(STYLE_H2); title.addStyleName(STYLE_LOGO); //title.setWidth(null); @@ -341,7 +410,7 @@ public void buttonClick(ClickEvent event) { String version = ModuleUtils.getModuleInfo(getClass()).getModuleVersion(); String buildNumber = ModuleUtils.getBuildNumber(getClass()); - Window popup = new Window("About OpenSensorHub"); + Window popup = new Window("" + I18N.get("about.title") + ""); popup.setIcon(LOGO_ICON); popup.setCaptionAsHtml(true); popup.setModal(true); @@ -351,16 +420,15 @@ public void buttonClick(ClickEvent event) VerticalLayout content = new VerticalLayout(); content.setMargin(true); content.setSpacing(true); - content.addComponent(new Label("A software platform for building smart sensor networks and the Internet of Things")); - content.addComponent(new Label("Licenced under Mozilla Public License v2.0", ContentMode.HTML)); - content.addComponent(new Label("Version: " + (version != null ? version: "?"), ContentMode.HTML)); - content.addComponent(new Label("Build Number: " + (buildNumber != null ? buildNumber: "?"), ContentMode.HTML)); + content.addComponent(new Label(I18N.get("about.desc"))); + content.addComponent(new Label(I18N.get("about.license"), ContentMode.HTML)); + content.addComponent(new Label("" + I18N.get("about.version") + " " + (version != null ? version: "?"), ContentMode.HTML)); + content.addComponent(new Label("" + I18N.get("about.build") + " " + (buildNumber != null ? buildNumber: "?"), ContentMode.HTML)); // If the config has a friendly node name if (adminModule.getConfiguration().deploymentName != null && !adminModule.getConfiguration().deploymentName.isEmpty()) { - content.addComponent(new Label("Deployment Name: " + adminModule.getConfiguration().deploymentName, ContentMode.HTML)); + content.addComponent(new Label("" + I18N.get("about.deployment") + " " + adminModule.getConfiguration().deploymentName, ContentMode.HTML)); } popup.setContent(content); addWindow(popup); @@ -368,25 +436,74 @@ public void buttonClick(ClickEvent event) }); header.addComponent(about); header.setExpandRatio(about, 0); - + return header; } - - + + protected Component buildToolbar() { - HorizontalLayout toolbar = new HorizontalLayout(); + VerticalLayout toolbar = new VerticalLayout(); toolbar.setWidth(100.0f, Unit.PERCENTAGE); toolbar.setSpacing(true); toolbar.setStyleName("toolbar"); - + + com.vaadin.ui.CssLayout topToolbar = new com.vaadin.ui.CssLayout(); + topToolbar.setWidth(100.0f, Unit.PERCENTAGE); + topToolbar.addStyleName("toolbar-row"); + + com.vaadin.ui.CssLayout bottomToolbar = new com.vaadin.ui.CssLayout(); + bottomToolbar.setWidth(100.0f, Unit.PERCENTAGE); + bottomToolbar.addStyleName("toolbar-row"); + + // Language Selector + final ComboBox langSelect = new ComboBox(); + langSelect.setTextInputAllowed(false); + langSelect.setNullSelectionAllowed(false); + langSelect.setWidth(100.0f, Unit.PERCENTAGE); + langSelect.addStyleName(STYLE_SMALL); + langSelect.addStyleName("toolbar-flex-item"); + + for (String lang : SUPPORTED_LOCALES.keySet()) { + langSelect.addItem(lang); + } + + // Set current value + Locale current = getLocale(); + if (current == null) current = Locale.ENGLISH; + + // Find best match + String selectedLang = "English"; + for (Map.Entry entry : SUPPORTED_LOCALES.entrySet()) { + if (entry.getValue().getLanguage().equals(current.getLanguage())) { + selectedLang = entry.getKey(); + break; + } + } + langSelect.setValue(selectedLang); + + langSelect.addValueChangeListener(new ValueChangeListener() { + @Override + public void valueChange(ValueChangeEvent event) { + String selected = (String) event.getProperty().getValue(); + if (selected != null) { + Locale newLocale = SUPPORTED_LOCALES.get(selected); + getSession().setLocale(newLocale); + getPage().reload(); + } + } + }); + bottomToolbar.addComponent(langSelect); + // shutdown button - Button shutdownButton = new Button("Shutdown"); - shutdownButton.setDescription("Shutdown SensorHub"); + Button shutdownButton = new Button(I18N.get("action.shutdown")); + shutdownButton.setDescription(I18N.get("tooltip.shutdown")); //shutdownButton.setIcon(DEL_ICON); shutdownButton.setIcon(FontAwesome.POWER_OFF); shutdownButton.addStyleName(STYLE_SMALL); shutdownButton.addStyleName(STYLE_BORDERLESS); + shutdownButton.addStyleName("toolbar-btn"); + shutdownButton.addStyleName("toolbar-flex-item"); shutdownButton.setWidth(100.0f, Unit.PERCENTAGE); shutdownButton.addClickListener(new Button.ClickListener() { @Override @@ -398,8 +515,8 @@ public void buttonClick(ClickEvent event) DisplayUtils.showUnauthorizedAccess(securityHandler.osh_shutdown.getErrorMessage()); return; } - - final ConfirmDialog popup = new ConfirmDialog("Are you sure you want to shutdown the sensor hub?"); + + final ConfirmDialog popup = new ConfirmDialog(I18N.get("dialog.shutdown.confirm")); popup.addCloseListener(new CloseListener() { @Override public void windowClose(CloseEvent e) @@ -407,20 +524,20 @@ public void windowClose(CloseEvent e) if (popup.isConfirmed()) { logAction(securityHandler.osh_shutdown.getName()); - + disconnectFromModuleRegistry(); - + Notification notif = new Notification( - FontAwesome.WARNING.getHtml() + "  Shutdown Initiated...", - "UI will stop responding", + FontAwesome.WARNING.getHtml() + "  " + I18N.get("dialog.shutdown.title"), + I18N.get("dialog.shutdown.message"), Notification.Type.ERROR_MESSAGE); notif.setHtmlContentAllowed(true); notif.show(getPage()); - + // disable push mode since it's sometimes throwing an exception // during HTTP server stop process getUI().getPushConfiguration().setPushMode(PushMode.DISABLED); - + // shutdown in separate thread new Timer().schedule(new TimerTask() { @Override @@ -433,24 +550,26 @@ public void run() } } }); - + addWindow(popup); } }); - toolbar.addComponent(shutdownButton); - + topToolbar.addComponent(shutdownButton); + // logout button - Button logoutButton = new Button("Logout"); - logoutButton.setDescription("Logout from OSH node"); + Button logoutButton = new Button(I18N.get("action.logout")); + logoutButton.setDescription(I18N.get("tooltip.logout")); logoutButton.setIcon(FontAwesome.SIGN_OUT); logoutButton.addStyleName(STYLE_SMALL); logoutButton.addStyleName(STYLE_BORDERLESS); + logoutButton.addStyleName("toolbar-btn"); + logoutButton.addStyleName("toolbar-flex-item"); logoutButton.setWidth(100.0f, Unit.PERCENTAGE); logoutButton.addClickListener(new Button.ClickListener() { @Override public void buttonClick(ClickEvent event) { - final ConfirmDialog popup = new ConfirmDialog("Are you sure you want to logout?"); + final ConfirmDialog popup = new ConfirmDialog(I18N.get("dialog.logout.confirm")); popup.addCloseListener(new CloseListener() { @Override public void windowClose(CloseEvent e) @@ -459,25 +578,27 @@ public void windowClose(CloseEvent e) { logAction("logout"); disconnectFromModuleRegistry(); - + getUI().getSession().close(); var currentUrl = getUI().getPage().getLocation(); getUI().getPage().setLocation(currentUrl.resolve("logout")); } } }); - + addWindow(popup); } }); - toolbar.addComponent(logoutButton); - + topToolbar.addComponent(logoutButton); + // apply changes button - Button saveButton = new Button("Save"); - saveButton.setDescription("Save SensorHub Configuration"); + Button saveButton = new Button(I18N.get("action.save")); + saveButton.setDescription(I18N.get("tooltip.save")); saveButton.setIcon(APPLY_ICON); saveButton.addStyleName(STYLE_SMALL); saveButton.addStyleName(STYLE_BORDERLESS); + saveButton.addStyleName("toolbar-btn"); + saveButton.addStyleName("toolbar-flex-item"); saveButton.setWidth(100.0f, Unit.PERCENTAGE); saveButton.addClickListener(new Button.ClickListener() { @Override @@ -489,8 +610,8 @@ public void buttonClick(ClickEvent event) DisplayUtils.showUnauthorizedAccess(securityHandler.osh_saveconfig.getErrorMessage()); return; } - - final ConfirmDialog popup = new ConfirmDialog("Are you sure you want to save the configuration (and override the previous one)?"); + + final ConfirmDialog popup = new ConfirmDialog(I18N.get("dialog.save.confirm")); popup.addCloseListener(new CloseListener() { @Override public void windowClose(CloseEvent e) @@ -498,34 +619,37 @@ public void windowClose(CloseEvent e) if (popup.isConfirmed()) { logAction(securityHandler.osh_saveconfig.getName()); - + try { moduleRegistry.saveModulesConfiguration(); - DisplayUtils.showOperationSuccessful("SensorHub Configuration Saved"); + DisplayUtils.showOperationSuccessful(I18N.get("msg.configSaved")); } catch (Exception ex) { - String msg = "Cannot save configuration"; + String msg = I18N.get("msg.configSaveError"); DisplayUtils.showErrorPopup(msg, ex); } } } }); - + addWindow(popup); } }); - toolbar.addComponent(saveButton); - + bottomToolbar.addComponent(saveButton); + + toolbar.addComponent(topToolbar); + toolbar.addComponent(bottomToolbar); + return toolbar; } - - + + protected void buildNetworkModuleList(VerticalLayout layout) { ArrayList> moduleList = new ArrayList<>(); - + // add network modules to list moduleList.add(moduleRegistry.getModuleByType(IHttpServer.class)); for (IModule module: moduleRegistry.getLoadedModules()) @@ -534,19 +658,19 @@ protected void buildNetworkModuleList(VerticalLayout layout) if (config != null && NetworkConfig.class.isAssignableFrom(config.getClass())) moduleList.add(module); } - + buildModuleList(layout, moduleList, NetworkConfig.class); } - - + + protected void buildModuleList(VerticalLayout layout, final Class configType) { ArrayList> moduleList = new ArrayList<>(); - + // add federated database if (configType == DatabaseConfig.class) moduleList.add(new FederatedDbModuleAdapter(getParentHub())); - + // add selected modules to list for (IModule module: moduleRegistry.getLoadedModules()) { @@ -554,11 +678,21 @@ protected void buildModuleList(VerticalLayout layout, final Class configType) if (config != null && configType.isAssignableFrom(config.getClass())) moduleList.add(module); } - + buildModuleList(layout, moduleList, configType); } - - + + protected List getVisiblySelectedItemIds(TreeTable table) + { + List visiblySelectedItemIds = new ArrayList<>(); + for(var visibleItemId : table.getVisibleItemIds()) + { + if(table.isSelected(visibleItemId)) + visiblySelectedItemIds.add(visibleItemId); + } + return visiblySelectedItemIds; + } + protected void buildModuleList(VerticalLayout layout, List> moduleList, final Class configType) { // create table to display module list @@ -574,15 +708,20 @@ protected void buildModuleList(VerticalLayout layout, List> moduleLis table.setColumnWidth(PROP_STATE, 100); table.setColumnHeaderMode(ColumnHeaderMode.HIDDEN); layout.addComponent(table); + + // Multiselect functionality + table.setMultiSelect(true); + table.setMultiSelectMode(MultiSelectMode.DEFAULT); + moduleTables.put(configType, table); - + // add modules info as table items for (IModule module: moduleList) addModuleToTable(module, table); - + // hide module object column! table.setVisibleColumns(PROP_NAME, PROP_STATE); - + // value converter for state field -> display as text and icon table.setConverter(PROP_STATE, new Converter() { @Override @@ -609,7 +748,7 @@ public Class getPresentationType() return String.class; } }); - + table.setCellStyleGenerator(new CellStyleGenerator() { @Override public String getStyle(Table source, Object itemId, Object propertyId) @@ -619,7 +758,7 @@ public String getStyle(Table source, Object itemId, Object propertyId) ModuleState state = (ModuleState)table.getItem(itemId).getItemProperty(propertyId).getValue(); IModule module = (IModule)table.getItem(itemId).getItemProperty(PROP_MODULE_OBJECT).getValue(); Throwable error = module.getCurrentError(); - + if (error == null) { if (state == ModuleState.STARTED) @@ -632,12 +771,12 @@ public String getStyle(Table source, Object itemId, Object propertyId) return "error"; } } - + return null; } }); - - table.setItemDescriptionGenerator(new ItemDescriptionGenerator() { + + table.setItemDescriptionGenerator(new ItemDescriptionGenerator() { @Override public String generateDescription(Component source, Object itemId, Object propertyId) { if (propertyId != null && propertyId.equals(PROP_STATE)) @@ -658,11 +797,11 @@ public String generateDescription(Component source, Object itemId, Object proper else return module.getStatusMessage(); } - + return null; } }); - + // item click listener to display selected module settings table.addItemClickListener(new ItemClickListener() { @@ -681,14 +820,14 @@ public void itemClick(ItemClickEvent event) } } }); - + // context menu table.addActionHandler(new Handler() { @Override public Action[] getActions(Object target, Object sender) { List actions = new ArrayList<>(10); - + if (target != null) { var item = table.getItem(target); @@ -698,45 +837,52 @@ public Action[] getActions(Object target, Object sender) actions.add(RESTART_MODULE_ACTION); else actions.add(START_MODULE_ACTION); - + actions.add(STOP_MODULE_ACTION); actions.add(REINIT_MODULE_ACTION); - + actions.add(new Action("-------------------------------")); - + if (module instanceof SensorSystem) actions.add(ADD_SUBMODULE_ACTION); - + if (table.getParent(target) != null) actions.add(REMOVE_SUBMODULE_ACTION); else actions.add(REMOVE_MODULE_ACTION); - + actions.add(ADD_MODULE_ACTION); } else actions.add(ADD_MODULE_ACTION); - + + if(!table.getVisibleItemIds().isEmpty()) + { + actions.add(SELECT_ALL_MODULES_ACTION); + actions.add(DESELECT_ALL_MODULES_ACTION); + } + return actions.toArray(new Action[0]); } - + @Override public void handleAction(final Action action, Object sender, Object target) { - // retrieve selected module if any - final Item selectedItem; - final IModule selectedModule; - if (target != null) - { - selectedItem = table.getItem(target); - selectedModule = (IModule)selectedItem.getItemProperty(PROP_MODULE_OBJECT).getValue(); - } - else + // retrieve multi-selected modules + final List> selectedModules = new ArrayList<>(); + + final List selectedItemIds = getVisiblySelectedItemIds(table); + + // When using multi-select, retrieve all selected modules + if(target != null && !getVisiblySelectedItemIds(table).isEmpty()) { - selectedItem = null; - selectedModule = null; + for(var itemId : selectedItemIds) + { + var item = table.getItem(itemId); + selectedModules.add((IModule)item.getItemProperty(PROP_MODULE_OBJECT).getValue()); + } } - + if (action == ADD_MODULE_ACTION) { // security check @@ -745,7 +891,7 @@ public void handleAction(final Action action, Object sender, Object target) DisplayUtils.showUnauthorizedAccess(securityHandler.module_add.getErrorMessage()); return; } - + // show popup to select among available module types ModuleTypeSelectionPopup popup = new ModuleTypeSelectionPopup(configType, new ModuleTypeSelectionCallback() { @Override @@ -755,14 +901,18 @@ public void onSelected(ModuleConfigBase config) { // log action logAction(action, config.moduleClass); - + // load module instance IModule module = moduleRegistry.loadModule((ModuleConfig)config); - + // no need to add module to table here // it will be loaded when the LOADED event is received - + moduleAddedFromUI = module; + + // unselect other items after adding a new one, so that only the new item is selected + for(var itemId : selectedItemIds) + table.unselect(itemId); } catch (NoClassDefFoundError e) { @@ -777,13 +927,24 @@ public void onSelected(ModuleConfigBase config) popup.setModal(true); addWindow(popup); } - - else if (selectedModule != null) + + else if (action == SELECT_ALL_MODULES_ACTION) + { + for(var itemId : table.getVisibleItemIds()) + table.select(itemId); + } + + else if (action == DESELECT_ALL_MODULES_ACTION) + { + for(var itemId : table.getVisibleItemIds()) + table.unselect(itemId); + selectNone(table); + } + + // Module actions supporting multiselect + else if (!selectedModules.isEmpty()) { - // possible actions when a module is selected - final String moduleId = (String)target; - final String moduleName = (String)selectedItem.getItemProperty(PROP_NAME).getValue(); - + // possible actions when a module or modules are selected if (action == REMOVE_MODULE_ACTION) { // security check @@ -792,44 +953,76 @@ else if (selectedModule != null) DisplayUtils.showUnauthorizedAccess(securityHandler.module_remove.getErrorMessage()); return; } - - final ConfirmDialog popup = new ConfirmDialog("Are you sure you want to remove module " + moduleName + "?
All settings will be lost."); + + var targetText = (selectedModules.size() == 1) ? selectedModules.get(0).getName() : selectedModules.size() + " modules"; + final ConfirmDialog popup = new ConfirmDialog(I18N.get("dialog.remove.confirm", targetText)); popup.addCloseListener(new CloseListener() { @Override public void windowClose(CloseEvent e) { if (popup.isConfirmed()) { - // log action - logAction(action, selectedModule); - - try + // log module actions + for(var module : selectedModules) { - moduleRegistry.destroyModule(moduleId); - - table.removeItem(moduleId); - selectNone(table); + logAction(action, module); } - catch (SensorHubException ex) + + for(var module : selectedModules) { - DisplayUtils.showErrorPopup("Error removing module", ex); + try + { + // Parent handles submodule destruction, so error would be thrown if we try to destroy it ourselves. REMOVE_SUBMODULE_ACTION is for submodules + if(module instanceof ISystemDriver && ((ISystemDriver) module).getParentSystem() != null) + { + // Only remove submodule from UI if parent is also being removed + if(selectedModules.contains((IModule) ((ISystemDriver) module).getParentSystem())) + { + // Only remove from UI + table.removeItem(module.getLocalID()); + } + continue; + } + + if(table.hasChildren(module.getLocalID())) + { + var childrenIds = new ArrayList<>(table.getChildren(module.getLocalID())); + // Remove children of parent, so children are not moved to top level when parent is removed + for(var childId : childrenIds) + table.removeItem(childId); + } + + // TODO dont allow REMOVE_MODULE to remove submodules, let parents remove submodules + if(table.getParent(module.getLocalID()) == null) + { + moduleRegistry.destroyModule(module.getLocalID()); + table.removeItem(module.getLocalID()); + } + selectNone(table); + } + catch (SensorHubException ex) + { + DisplayUtils.showErrorPopup(I18N.get("msg.removeError", module.getName()), ex); + } } } } }); - + addWindow(popup); } - - else if (action == ADD_SUBMODULE_ACTION) + else if (action == ADD_SUBMODULE_ACTION && selectedModules.size() == 1) { - // security check + var selectedModule = selectedModules.get(0); + var moduleId = selectedModule.getLocalID(); + + // security check if (!securityHandler.hasPermission(securityHandler.module_add)) { DisplayUtils.showUnauthorizedAccess(securityHandler.module_add.getErrorMessage()); return; } - + // show popup to select among available module types ModuleTypeSelectionPopup popup = new ModuleTypeSelectionPopup(ISystemDriver.class, new ModuleTypeSelectionCallback() { @Override @@ -839,12 +1032,12 @@ public void onSelected(ModuleConfigBase config) { // log action logAction(action, config.moduleClass); - + var newMember = new SystemMember(); newMember.config = (ModuleConfig)config; - + var newModule = ((SensorSystem)selectedModule).addSubsystem(newMember); - + var memberId = newModule.getLocalID(); //table.addItem(new Object[] {newModule.getName(), newModule.getCurrentState(), newModule}, memberID); Item newItem = table.addItem(memberId); @@ -853,20 +1046,21 @@ public void onSelected(ModuleConfigBase config) newItem.getItemProperty(PROP_MODULE_OBJECT).setValue(newModule); table.setParent(memberId, moduleId); table.setChildrenAllowed(memberId, false); - + selectModule(newModule, table); moduleAddedFromUI = newModule; + // Need to unselect parent because of multiselect + table.unselect(moduleId); } catch (Exception e) { - DisplayUtils.showErrorPopup("Cannot add submodule ", e); + DisplayUtils.showErrorPopup(I18N.get("msg.addSubmoduleError"), e); } } }); popup.setModal(true); addWindow(popup); } - else if (action == REMOVE_SUBMODULE_ACTION) { // security check @@ -875,38 +1069,44 @@ else if (action == REMOVE_SUBMODULE_ACTION) DisplayUtils.showUnauthorizedAccess(securityHandler.module_remove.getErrorMessage()); return; } - - final ConfirmDialog popup = new ConfirmDialog("Are you sure you want to remove module " + moduleName + "?
All settings will be lost."); + + var targetText = (selectedModules.size() == 1) ? selectedModules.get(0).getName() : selectedModules.size() + " modules"; + final ConfirmDialog popup = new ConfirmDialog(I18N.get("dialog.remove.confirm", targetText)); popup.addCloseListener(new CloseListener() { @Override public void windowClose(CloseEvent e) { if (popup.isConfirmed()) { - // log action - logAction(action, selectedModule); - - try + // log module actions + for(var module : selectedModules) { - // get parent module - var parentId = table.getParent(moduleId); - var parentModule = (SensorSystem)table.getItem(parentId).getItemProperty(PROP_MODULE_OBJECT).getValue(); - parentModule.removeSubSystem(moduleId); - - table.removeItem(moduleId); - selectNone(table); + logAction(action, module); } - catch (SensorHubException ex) + + for(var module : selectedModules) { - DisplayUtils.showErrorPopup("Error removing submodule could not be removed", ex); + try + { + // get parent module + var parentId = table.getParent(module.getLocalID()); + var parentModule = (SensorSystem)table.getItem(parentId).getItemProperty(PROP_MODULE_OBJECT).getValue(); + parentModule.removeSubSystem(module.getLocalID()); + + table.removeItem(module.getLocalID()); + selectNone(table); + } + catch (SensorHubException ex) + { + DisplayUtils.showErrorPopup(I18N.get("msg.removeError", "Submodule " + module.getName()), ex); + } } } } }); - + addWindow(popup); } - else if (action == START_MODULE_ACTION) { // security check @@ -915,30 +1115,47 @@ else if (action == START_MODULE_ACTION) DisplayUtils.showUnauthorizedAccess(securityHandler.module_start.getErrorMessage()); return; } - - final ConfirmDialog popup = new ConfirmDialog("Are you sure you want to start module " + moduleName + "?"); + + var targetText = (selectedModules.size() == 1) ? selectedModules.get(0).getName() : selectedModules.size() + " modules"; + final ConfirmDialog popup = new ConfirmDialog(I18N.get("areYouSureYouWantToStart01", targetText)); popup.addCloseListener(new CloseListener() { @Override public void windowClose(CloseEvent e) { if (popup.isConfirmed()) { - // log action - logAction(action, selectedModule); - - try + // log module actions + for(var module : selectedModules) { - if (selectedModule != null) - moduleRegistry.startModuleAsync(selectedModule); + logAction(action, module); } - catch (SensorHubException ex) + + for(var module : selectedModules) { - DisplayUtils.showErrorPopup("The module could not be started", ex); + try + { + // If submodule is selected, wait for parent to start before starting + if (module instanceof ISystemDriver + && selectedModules.contains((IModule) ((ISystemDriver)module).getParentSystem()) + && !((IModule) ((ISystemDriver)module).getParentSystem()).getCurrentState().equals(ModuleState.STARTED)) + { + ((IModule) ((ISystemDriver)module).getParentSystem()).waitForState(ModuleState.STARTED, 3000); + if(!module.isStarted()) + moduleRegistry.startModuleAsync(module); + } + + if (module != null) + moduleRegistry.startModuleAsync(module); + } + catch (SensorHubException ex) + { + DisplayUtils.showErrorPopup(I18N.get("msg.startError", module.getName()), ex); + } } } } }); - + addWindow(popup); } else if (action == STOP_MODULE_ACTION) @@ -949,30 +1166,37 @@ else if (action == STOP_MODULE_ACTION) DisplayUtils.showUnauthorizedAccess(securityHandler.module_stop.getErrorMessage()); return; } - - final ConfirmDialog popup = new ConfirmDialog("Are you sure you want to stop module " + moduleName + "?"); + + var targetText = (selectedModules.size() == 1) ? selectedModules.get(0).getName() : selectedModules.size() + " modules"; + final ConfirmDialog popup = new ConfirmDialog(I18N.get("areYouSureYouWantToStop01", targetText)); popup.addCloseListener(new CloseListener() { @Override public void windowClose(CloseEvent e) { if (popup.isConfirmed()) { - // log action - logAction(action, selectedModule); - - try + // log module actions + for(var module : selectedModules) { - if (selectedModule != null) - moduleRegistry.stopModuleAsync(selectedModule); + logAction(action, module); } - catch (SensorHubException ex) + + for(var module : selectedModules) { - DisplayUtils.showErrorPopup("The module could not be stopped", ex); + try + { + if (module != null) + moduleRegistry.stopModuleAsync(module); + } + catch (SensorHubException ex) + { + DisplayUtils.showErrorPopup(I18N.get("msg.stopError", module.getName()), ex); + } } } } }); - + addWindow(popup); } else if (action == RESTART_MODULE_ACTION) @@ -983,30 +1207,37 @@ else if (action == RESTART_MODULE_ACTION) DisplayUtils.showUnauthorizedAccess(securityHandler.module_restart.getErrorMessage()); return; } - - final ConfirmDialog popup = new ConfirmDialog("Are you sure you want to restart module " + moduleName + "?"); + + var targetText = (selectedModules.size() == 1) ? selectedModules.get(0).getName() : selectedModules.size() + " modules"; + final ConfirmDialog popup = new ConfirmDialog(I18N.get("areYouSureYouWantToRestart01", targetText)); popup.addCloseListener(new CloseListener() { @Override public void windowClose(CloseEvent e) { if (popup.isConfirmed()) { - // log action - logAction(action, selectedModule); - - try + // log module actions + for(var module : selectedModules) { - if (selectedModule != null) - moduleRegistry.restartModuleAsync(selectedModule); + logAction(action, module); } - catch (SensorHubException ex) + + for(var module : selectedModules) { - DisplayUtils.showErrorPopup("The module could not be restarted", ex); + try + { + if (module != null) + moduleRegistry.restartModuleAsync(module); + } + catch (SensorHubException ex) + { + DisplayUtils.showErrorPopup(I18N.get("msg.restartError", module.getName()), ex); + } } } } }); - + addWindow(popup); } else if (action == REINIT_MODULE_ACTION) @@ -1017,53 +1248,60 @@ else if (action == REINIT_MODULE_ACTION) DisplayUtils.showUnauthorizedAccess(securityHandler.module_init.getErrorMessage()); return; } - - final ConfirmDialog popup = new ConfirmDialog("Are you sure you want to force re-init module " + moduleName + "?"); + + var targetText = (selectedModules.size() == 1) ? selectedModules.get(0).getName() : selectedModules.size() + " modules"; + final ConfirmDialog popup = new ConfirmDialog(I18N.get("areYouSureYouWantToForceReInit01", targetText)); popup.addCloseListener(new CloseListener() { @Override public void windowClose(CloseEvent e) { if (popup.isConfirmed()) { - // log action - logAction(action, selectedModule); - - try + // log module actions + for(var module : selectedModules) { - if (selectedModule != null) - moduleRegistry.initModuleAsync(selectedModule); + logAction(action, module); } - catch (SensorHubException ex) + + for(var module : selectedModules) { - DisplayUtils.showErrorPopup("The module could not be reinitialized", ex); + try + { + if (module != null) + moduleRegistry.initModuleAsync(module); + } + catch (SensorHubException ex) + { + DisplayUtils.showErrorPopup(I18N.get("msg.reinitError", module.getName()), ex); + } } } } }); - + addWindow(popup); } } } }); - + layout.setSizeFull(); layout.setMargin(false); } - - + + protected void addModuleToTable(IModule module, TreeTable table) { String moduleID = module.getLocalID(); - + Item newItem = table.addItem(moduleID); if (newItem == null) // in case module was already added return; - + newItem.getItemProperty(PROP_NAME).setValue(module.getName()); newItem.getItemProperty(PROP_STATE).setValue(module.getCurrentState()); newItem.getItemProperty(PROP_MODULE_OBJECT).setValue(module); - + // add submodules if (module instanceof ISystemGroupDriver) { @@ -1084,20 +1322,20 @@ protected void addModuleToTable(IModule module, TreeTable table) { table.setChildrenAllowed(moduleID, false); } - + // select if module was just added from UI if (moduleAddedFromUI == module) { selectModule(module, table); moduleAddedFromUI = null; } - + // also select if first item added else if (table.size() == 1) table.select(moduleID); } - - + + protected void selectModule(IModule module, TreeTable table) { table.select(module.getLocalID()); @@ -1105,8 +1343,8 @@ protected void selectModule(IModule module, TreeTable table) MyBeanItem beanItem = new MyBeanItem<>(config); openModuleInfo(beanItem, module); } - - + + protected void selectNone(TreeTable table) { Object itemId = table.getValue(); @@ -1114,22 +1352,22 @@ protected void selectNone(TreeTable table) table.unselect(itemId); configArea.removeAllComponents(); } - - + + protected void openModuleInfo(MyBeanItem beanItem, IModule module) { // do nothing if config area hasn't been created yet if (configArea == null) return; - + configArea.removeAllComponents(); - + // get panel for this config object IModuleAdminPanel> panel = adminModule.generatePanel(module); - Label moduleVersion = new Label("Version: " + getModuleVersion(module), ContentMode.HTML); + Label moduleVersion = new Label("" + I18N.get("version1") + ": " + getModuleVersion(module), ContentMode.HTML); panel.addComponent(moduleVersion); panel.build(beanItem, module); - + // generate module admin panel configArea.addComponent(panel); visibleModule = module; @@ -1142,7 +1380,7 @@ public void handleEvent(final org.sensorhub.api.event.Event e) { final IModule module = (IModule)e.getSource(); final ModuleConfig config = module.getConfiguration(); - + // find table and item corresponding to module TreeTable table = null; Item item = null; @@ -1155,7 +1393,7 @@ public void handleEvent(final org.sensorhub.api.event.Event e) break; } } - + // if no table was found, perhaps module was just loaded // so try to find table to add it to if (table == null) @@ -1169,7 +1407,7 @@ public void handleEvent(final org.sensorhub.api.event.Event e) } } } - + // update table according to event type final TreeTable foundTable = table; final Item foundItem = item; @@ -1192,7 +1430,7 @@ public void run() }); } break; - + case DELETED: if (foundTable != null) { @@ -1207,17 +1445,17 @@ public void run() foundTable.removeItem(module.getLocalID()); if (wasSelected) selectNone(foundTable); - + // cleanup error state setModuleErrorState(foundTable, module, false); - + push(); } } }); } break; - + case CONFIG_CHANGED: if (foundItem != null) { @@ -1225,6 +1463,27 @@ public void run() @Override public void run() { + // Add submodule if added NOT from UI + if (config instanceof SensorSystemConfig && module instanceof SensorSystem) + { + for (var subsystem : ((SensorSystemConfig) config).subsystems) + { + // Only add non-existent children + if(foundTable.getChildren(module.getLocalID()) == null + || !foundTable.getChildren(module.getLocalID()).contains(subsystem.config.id)) + { + // Get submodule from parent and add to module table + IModule member = ((SensorSystem) module).getMembers().get(subsystem.config.id); + var memberId = member.getLocalID(); + Item newItem = foundTable.addItem(memberId); + newItem.getItemProperty(PROP_NAME).setValue(member.getName()); + newItem.getItemProperty(PROP_STATE).setValue(member.getCurrentState()); + newItem.getItemProperty(PROP_MODULE_OBJECT).setValue(member); + foundTable.setParent(memberId, module.getLocalID()); + foundTable.setChildrenAllowed(memberId, false); + } + } + } // update module name foundItem.getItemProperty(PROP_NAME).setValue(config.name); push(); @@ -1232,7 +1491,7 @@ public void run() }); } break; - + case STATE_CHANGED: case ERROR: if (foundItem != null) @@ -1245,39 +1504,39 @@ public void run() ModuleState state = ((IModule)e.getSource()).getCurrentState(); if (foundItem != null) foundItem.getItemProperty(PROP_STATE).setValue(state); - + // set/clear error flags on accordion headers if (foundTable != null) setModuleErrorState(foundTable, module, module.getCurrentError() != null); - + // update config panel if currently visible if (module == visibleModule) selectModule(module, foundTable); - + push(); } }); } break; - + default: } } } - - + + protected void setModuleErrorState(TreeTable moduleTable, IModule module, boolean hasError) { var tab = moduleStack.getTab(moduleTable.getParent()); if (tab != null) { var errors = (ModuleErrors)tab.getComponentError(); - + if (hasError) { if (errors == null) errors = new ModuleErrors(); - + errors.setModuleErrorState(module, true); tab.setComponentError(errors); } @@ -1291,8 +1550,8 @@ protected void setModuleErrorState(TreeTable moduleTable, IModule module, boo } } } - - + + protected void logInitRequest(VaadinRequest req) { if (log.isInfoEnabled()) @@ -1302,8 +1561,8 @@ protected void logInitRequest(VaadinRequest req) log.info(LOG_INIT_MSG, ip, user); } } - - + + protected void logAction(String action) { if (log.isInfoEnabled()) @@ -1314,34 +1573,34 @@ protected void logAction(String action) log.info(LOG_ACTION_MSG, action, ip, user); } } - - + + protected void logAction(String action, String item) { if (log.isInfoEnabled()) logAction(action + " " + item); } - - + + protected void logAction(String action, IModule module) { if (log.isInfoEnabled()) logAction(action, MsgUtils.moduleString(module)); } - - + + protected void logAction(Action action, String item) { logAction(action.getCaption(), item); } - - + + protected void logAction(Action action, IModule module) { logAction(action.getCaption(), module); } - - + + protected void disconnectFromModuleRegistry() { // unregister from module registry events @@ -1356,31 +1615,278 @@ public void detach() disconnectFromModuleRegistry(); super.detach(); } - - + + public ISensorHub getParentHub() { return hub; } - - + + public AdminUIModule getParentModule() { return adminModule; } - - + + public AdminUISecurity getSecurityHandler() { return securityHandler; } - - + + public Logger getOshLogger() { return adminModule.getLogger(); } + protected void showLogin() + { + Window loginWindow = new Window(I18N.get("login1")); + loginWindow.setModal(true); + loginWindow.setClosable(false); + loginWindow.setResizable(false); + loginWindow.setWidth("300px"); + loginWindow.center(); + + FormLayout layout = new FormLayout(); + layout.setMargin(true); + layout.setSpacing(true); + + TextField username = new TextField(I18N.get("username1")); + username.focus(); + layout.addComponent(username); + + PasswordField password = new PasswordField(I18N.get("password1")); + layout.addComponent(password); + + Button loginButton = new Button(I18N.get("login1")); + loginButton.setClickShortcut(ShortcutAction.KeyCode.ENTER); + loginButton.addClickListener(e -> { + String user = username.getValue(); + String pass = password.getValue(); + + // Check credentials + IUserInfo userInfo = hub.getSecurityManager().getUserInfo(user); + if (userInfo != null && userInfo.getPassword() != null) + { + Credential stored = Credential.getCredential(userInfo.getPassword()); + if (stored.check(pass)) + { + if (userInfo instanceof UserConfig && ((UserConfig)userInfo).isTwoFactorEnabled) + { + loginWindow.close(); + showTwoFactorAuth(userInfo, pass); + } + else + { + loginWindow.close(); + performLogin(userInfo, pass); + } + return; + } + } + + Notification.show(I18N.get("loginFailed1"), I18N.get("invalidUsernameOrPassword1"), Notification.Type.ERROR_MESSAGE); + }); + layout.addComponent(loginButton); + + loginWindow.setContent(layout); + addWindow(loginWindow); + } + + protected void showTwoFactorAuth(IUserInfo user, String password) + { + Window totpWindow = new Window(I18N.get("twofactorAuthentication1")); + totpWindow.setModal(true); + totpWindow.setClosable(false); + totpWindow.setResizable(false); + totpWindow.setWidth("300px"); + totpWindow.center(); + + FormLayout layout = new FormLayout(); + layout.setMargin(true); + layout.setSpacing(true); + + TextField code = new TextField(I18N.get("verificationCode1")); + code.focus(); + layout.addComponent(code); + + Button verifyButton = new Button(I18N.get("verify1")); + verifyButton.setClickShortcut(ShortcutAction.KeyCode.ENTER); + verifyButton.addClickListener(e -> { + String c = code.getValue(); + String secret = ((UserConfig)user).twoFactorSecret; + + if (TOTPUtils.validateCode(secret, c)) + { + totpWindow.close(); + performLogin(user, password); + } + else + { + Notification.show(I18N.get("verificationFailed1"), I18N.get("invalidCode1"), Notification.Type.ERROR_MESSAGE); + } + }); + layout.addComponent(verifyButton); + + totpWindow.setContent(layout); + addWindow(totpWindow); + } + + protected void performLogin(IUserInfo user, String password) + { + try { + VaadinService.getCurrentRequest().getWrappedSession().setAttribute("2FA_VERIFIED", true); + javax.servlet.http.HttpServletRequest req = (javax.servlet.http.HttpServletRequest) VaadinService.getCurrentRequest(); + org.sensorhub.impl.service.OshLoginService.bridgeAllCookies(req, user.getId(), getParentHub().getSecurityManager()); + securityHandler.setCurrentUser(user.getId()); + buildMainUI(); + } catch (Exception e) { + DisplayUtils.showErrorPopup("Login Error", e); + } + } + + protected void buildMainUI() { + // log request + logInitRequest(VaadinService.getCurrentRequest()); + + // security check + if (!securityHandler.hasPermission(securityHandler.admin_access)) + { + DisplayUtils.showUnauthorizedAccess(securityHandler.admin_access.getErrorMessage()); + securityHandler.clearCurrentUser(); + return; + } + + // register new field converter for integer numbers + ConverterFactory converterFactory = new DefaultConverterFactory() { + @Override + @SuppressWarnings("unchecked") + protected Converter findConverter( + Class presentationType, Class modelType) { + // Handle String <-> Integer/Short/Long + if (presentationType == String.class && + (modelType == Long.class || modelType == Integer.class || modelType == Short.class )) { + return (Converter) new StringToIntegerConverter() { + @Override + protected NumberFormat getFormat(Locale locale) { + NumberFormat format = super.getFormat(Locale.US); + format.setGroupingUsed(false); + return format; + } + }; + } + // Let default factory handle the rest + return super.findConverter(presentationType, modelType); + } + }; + VaadinSession.getCurrent().setConverterFactory(converterFactory); + + // init main panels + HorizontalSplitPanel splitPanel = new HorizontalSplitPanel(); + splitPanel.setMinSplitPosition(300.0f, Unit.PIXELS); + splitPanel.setMaxSplitPosition(30.0f, Unit.PERCENTAGE); + splitPanel.setSplitPosition(350.0f, Unit.PIXELS); + setContent(splitPanel); + + // build left pane + VerticalLayout leftPane = new VerticalLayout(); + leftPane.setSizeFull(); + leftPane.setSpacing(false); + leftPane.setMargin(false); + + // header image and title + Component header = buildHeader(); + leftPane.addComponent(header); + leftPane.setExpandRatio(header, 0); + + // toolbar + Component toolbar = buildToolbar(); + leftPane.addComponent(toolbar); + leftPane.setExpandRatio(toolbar, 0); + + // accordion with several sections + moduleTables.clear(); + final var stack = moduleStack = new Accordion(); + stack.setSizeFull(); + stack.addSelectedTabChangeListener(new SelectedTabChangeListener() { + @Override + public void selectedTabChange(SelectedTabChangeEvent event) + { + selectStackItem(stack); + } + }); + VerticalLayout layout; + Tab tab; + + layout = new VerticalLayout(); + tab = stack.addTab(layout, I18N.get("tab.sensors")); + //tab.setIcon(ACC_TAB_ICON); + //tab.setIcon(FontAwesome.VIDEO_CAMERA); + //tab.setIcon(FontAwesome.STETHOSCOPE); + tab.setIcon(FontAwesome.RSS); + buildModuleList(layout, SensorConfig.class); + + layout = new VerticalLayout(); + tab = stack.addTab(layout, I18N.get("tab.databases")); + //tab.setIcon(ACC_TAB_ICON); + tab.setIcon(FontAwesome.DATABASE); + buildModuleList(layout, DatabaseConfig.class); + + layout = new VerticalLayout(); + tab = stack.addTab(layout, I18N.get("tab.processing")); + //tab.setIcon(ACC_TAB_ICON); + tab.setIcon(FontAwesome.GEARS); + buildModuleList(layout, ProcessConfig.class); + + layout = new VerticalLayout(); + tab = stack.addTab(layout, I18N.get("tab.services")); + //tab.setIcon(ACC_TAB_ICON); + //tab.setIcon(FontAwesome.CLOUD_DOWNLOAD); + //tab.setIcon(FontAwesome.CUBES); + tab.setIcon(FontAwesome.TASKS); + buildModuleList(layout, ServiceConfig.class); + + layout = new VerticalLayout(); + tab = stack.addTab(layout, I18N.get("tab.clients")); + //tab.setIcon(ACC_TAB_ICON); + tab.setIcon(FontAwesome.CLOUD_UPLOAD); + buildModuleList(layout, ClientConfig.class); + + layout = new VerticalLayout(); + tab = stack.addTab(layout, I18N.get("tab.network")); + //tab.setIcon(ACC_TAB_ICON); + //tab.setIcon(FontAwesome.SIGNAL); + tab.setIcon(FontAwesome.SITEMAP); + buildNetworkModuleList(layout); + + layout = new VerticalLayout(); + tab = stack.addTab(layout, I18N.get("tab.security")); + //tab.setIcon(ACC_TAB_ICON); + tab.setIcon(FontAwesome.LOCK); + buildModuleList(layout, SecurityModuleConfig.class); + + leftPane.addComponent(stack); + leftPane.setExpandRatio(stack, 1); + splitPanel.addComponent(leftPane); + + // init config area + configArea = new VerticalLayout(); + configArea.setMargin(true); + splitPanel.addComponent(configArea); + + // select first tab + stack.setSelectedTab(0); + selectStackItem(stack); + + // register to module registry events + hub.getEventBus().newSubscription() + .withTopicID(ModuleRegistry.EVENT_GROUP_ID) + .consume(this::handleEvent) + .thenAccept(s -> moduleEventsSub = s); + } + protected String getModuleVersion(IModule module){ return ModuleUtils.getModuleInfo(module.getClass()).getModuleVersion(); } diff --git a/sensorhub-webui-core/src/main/java/org/sensorhub/ui/AdminUIModule.java b/sensorhub-webui-core/src/main/java/org/sensorhub/ui/AdminUIModule.java index a307ea801a..b7a50c0b37 100644 --- a/sensorhub-webui-core/src/main/java/org/sensorhub/ui/AdminUIModule.java +++ b/sensorhub-webui-core/src/main/java/org/sensorhub/ui/AdminUIModule.java @@ -189,6 +189,7 @@ public void write(int b) { } httpServer.deployServlet(landingServlet, initLandingParams, "/*"); adminUIServlet.getServletContext().setAttribute(SERVLET_PARAM_MODULE, this); landingServlet.getServletContext().setAttribute(SERVLET_PARAM_MODULE, this); + // httpServer.addServletSecurity("/*", true); httpServer.addServletSecurity("/*", true); var server = getParentHub().getModuleRegistry().getModuleByType(HttpServer.class); @@ -208,6 +209,8 @@ public void write(int b) { } System.setErr(oldStdErr); // setup security + // httpServer.addServletSecurity("/admin/*", true); + // httpServer.addServletSecurity("/VAADIN/*", true); httpServer.addServletSecurity("/admin/*", true); httpServer.addServletSecurity("/VAADIN/*", true); diff --git a/sensorhub-webui-core/src/main/java/org/sensorhub/ui/AdminUIServlet.java b/sensorhub-webui-core/src/main/java/org/sensorhub/ui/AdminUIServlet.java index 7e40230b63..18364d7165 100644 --- a/sensorhub-webui-core/src/main/java/org/sensorhub/ui/AdminUIServlet.java +++ b/sensorhub-webui-core/src/main/java/org/sensorhub/ui/AdminUIServlet.java @@ -45,9 +45,10 @@ protected void service(HttpServletRequest request, HttpServletResponse response) { Principal user = request.getUserPrincipal(); if (user != null) + { securityHandler.setCurrentUser(user.getName()); - - securityHandler.checkPermission(securityHandler.admin_access); + securityHandler.checkPermission(securityHandler.admin_access); + } this.getService().setClassLoader(this.getClass().getClassLoader()); super.service(request, response); diff --git a/sensorhub-webui-core/src/main/java/org/sensorhub/ui/BasicSecurityConfigForm.java b/sensorhub-webui-core/src/main/java/org/sensorhub/ui/BasicSecurityConfigForm.java index 920100270b..479069463c 100644 --- a/sensorhub-webui-core/src/main/java/org/sensorhub/ui/BasicSecurityConfigForm.java +++ b/sensorhub-webui-core/src/main/java/org/sensorhub/ui/BasicSecurityConfigForm.java @@ -38,12 +38,27 @@ import com.vaadin.ui.HorizontalLayout; import com.vaadin.v7.ui.Table; import com.vaadin.v7.ui.TreeTable; +import com.vaadin.v7.ui.Field; import com.vaadin.ui.VerticalLayout; import com.vaadin.ui.Window; +import com.vaadin.ui.Notification; import com.vaadin.ui.Button.ClickEvent; import com.vaadin.ui.Button.ClickListener; import com.vaadin.v7.ui.Table.CellStyleGenerator; import com.vaadin.v7.ui.Table.ColumnHeaderMode; +import com.vaadin.ui.Label; +import com.vaadin.shared.ui.ContentMode; +import com.vaadin.ui.TextField; +import org.sensorhub.impl.security.TOTPUtils; +import org.sensorhub.impl.service.OshLoginService; +import com.vaadin.server.StreamResource; +import com.vaadin.ui.Image; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import com.google.zxing.BarcodeFormat; +import com.google.zxing.client.j2se.MatrixToImageWriter; +import com.google.zxing.common.BitMatrix; +import com.google.zxing.qrcode.QRCodeWriter; @SuppressWarnings("serial") @@ -71,6 +86,262 @@ public void build(String title, String popupText, MyBeanItem beanItem, b this.permConfig = (PermissionsConfig)beanItem.getBean(); super.build(title, popupText, beanItem, includeSubForms); + + if (beanItem.getBean() instanceof BasicSecurityRealmConfig.UserConfig) + { + buildTwoFactorSection((BasicSecurityRealmConfig.UserConfig)beanItem.getBean()); + buildApiKeySection((BasicSecurityRealmConfig.UserConfig)beanItem.getBean()); + } + } + + @Override + protected boolean isFieldVisible(String propId) + { + if (propId.endsWith("twoFactorSecret") || propId.endsWith("isTwoFactorEnabled") || propId.endsWith("apiKeys")) + return false; + + return super.isFieldVisible(propId); + } + + private void buildTwoFactorSection(final BasicSecurityRealmConfig.UserConfig userConfig) + { + VerticalLayout layout = new VerticalLayout(); + layout.setCaption(I18N.get("twofactorAuthentication1")); + layout.setMargin(true); + layout.setSpacing(true); + + final Label statusLabel = new Label(); + statusLabel.setContentMode(ContentMode.HTML); + update2FAStatusLabel(statusLabel, userConfig.isTwoFactorEnabled); + layout.addComponent(statusLabel); + + final Button setupButton = new Button(userConfig.isTwoFactorEnabled ? I18N.get("reset2FA1") : I18N.get("enable2FA1")); + setupButton.addClickListener(new ClickListener() { + @Override + public void buttonClick(ClickEvent event) + { + show2FASetupPopup(userConfig, statusLabel, setupButton); + } + }); + layout.addComponent(setupButton); + + this.addComponent(layout); + } + + private void update2FAStatusLabel(Label label, boolean enabled) + { + if (enabled) + label.setValue("Status: ENABLED"); + else + label.setValue("Status: DISABLED"); + } + + private void buildApiKeySection(final BasicSecurityRealmConfig.UserConfig userConfig) + { + VerticalLayout layout = new VerticalLayout(); + layout.setCaption("API Keys"); + layout.setMargin(true); + layout.setSpacing(true); + + final Table keyTable = new Table(); + keyTable.setWidth(100, Unit.PERCENTAGE); + keyTable.setHeight("150px"); + keyTable.setSelectable(true); + keyTable.addContainerProperty("ID", String.class, null); + keyTable.addContainerProperty("Name", String.class, null); + keyTable.addContainerProperty("Created", java.util.Date.class, null); + + refreshApiKeyTable(keyTable, userConfig); + layout.addComponent(keyTable); + + HorizontalLayout buttons = new HorizontalLayout(); + buttons.setSpacing(true); + + Button addBtn = new Button("Generate Key", FontAwesome.PLUS); + addBtn.addClickListener(new ClickListener() { + @Override + public void buttonClick(ClickEvent event) { + showApiKeyGeneratePopup(userConfig, keyTable); + } + }); + buttons.addComponent(addBtn); + + Button revokeBtn = new Button("Revoke", FontAwesome.TRASH_O); + revokeBtn.addClickListener(new ClickListener() { + @Override + public void buttonClick(ClickEvent event) { + Object itemId = keyTable.getValue(); + if (itemId != null) { + userConfig.apiKeys.remove((int)itemId); + refreshApiKeyTable(keyTable, userConfig); + } + } + }); + buttons.addComponent(revokeBtn); + + layout.addComponent(buttons); + this.addComponent(layout); + } + + private void refreshApiKeyTable(Table table, BasicSecurityRealmConfig.UserConfig userConfig) + { + table.removeAllItems(); + if (userConfig.apiKeys != null) { + for (int i = 0; i < userConfig.apiKeys.size(); i++) { + BasicSecurityRealmConfig.ApiKeyConfig key = userConfig.apiKeys.get(i); + table.addItem(new Object[]{key.id, key.name, new java.util.Date(key.created)}, i); + } + } + } + + private void showApiKeyGeneratePopup(final BasicSecurityRealmConfig.UserConfig userConfig, final Table keyTable) + { + final Window popup = new Window("Generate API Key"); + popup.setModal(true); + popup.setWidth("400px"); + popup.center(); + + VerticalLayout content = new VerticalLayout(); + content.setMargin(true); + content.setSpacing(true); + + final TextField nameField = new TextField("Name/Description"); + nameField.setWidth(100, Unit.PERCENTAGE); + content.addComponent(nameField); + + Button generateBtn = new Button("Generate"); + generateBtn.addClickListener(new ClickListener() { + @Override + public void buttonClick(ClickEvent event) { + String name = nameField.getValue(); + if (name == null || name.isEmpty()) { + Notification.show("Please enter a name", Notification.Type.WARNING_MESSAGE); + return; + } + + String rawKey = OshLoginService.generateApiKey(); + BasicSecurityRealmConfig.ApiKeyConfig keyConfig = new BasicSecurityRealmConfig.ApiKeyConfig(); + keyConfig.id = java.util.UUID.randomUUID().toString().substring(0, 8); + keyConfig.name = name; + keyConfig.keyHash = OshLoginService.hashApiKey(rawKey); + keyConfig.created = System.currentTimeMillis(); + + if (userConfig.apiKeys == null) userConfig.apiKeys = new ArrayList<>(); + userConfig.apiKeys.add(keyConfig); + refreshApiKeyTable(keyTable, userConfig); + + content.removeAllComponents(); + content.addComponent(new Label("Key generated successfully!", ContentMode.HTML)); + content.addComponent(new Label("Copy this key now. You will not be able to see it again.")); + TextField keyDisplay = new TextField(); + keyDisplay.setValue(rawKey); + keyDisplay.setWidth(100, Unit.PERCENTAGE); + keyDisplay.setReadOnly(true); + content.addComponent(keyDisplay); + + Button closeBtn = new Button("Close"); + closeBtn.addClickListener(e -> popup.close()); + content.addComponent(closeBtn); + } + }); + content.addComponent(generateBtn); + + popup.setContent(content); + getUI().addWindow(popup); + } + + private void show2FASetupPopup(final BasicSecurityRealmConfig.UserConfig userConfig, final Label statusLabel, final Button setupButton) + { + // retrieve user ID from field if possible as it may have changed + String userID = userConfig.userID; + if (this.fieldGroup != null) + { + Field field = this.fieldGroup.getField("userID"); + if (field != null && field.getValue() != null) + userID = field.getValue().toString(); + } + + if (userID == null || userID.trim().isEmpty()) + { + Notification.show(I18N.get("pleaseEnterAUserIDFirst1"), Notification.Type.WARNING_MESSAGE); + return; + } + + final Window popup = new Window(I18N.get("setupTwoFactorAuthentication1")); + popup.setModal(true); + popup.setWidth("400px"); + popup.center(); + + VerticalLayout content = new VerticalLayout(); + content.setMargin(true); + content.setSpacing(true); + + final String secret = TOTPUtils.generateSecret(); + final String qrUrl = TOTPUtils.getQRUrl(userID, secret); + + content.addComponent(new Label(I18N.get("1ScanThisQrCodeWithYourAuthenticatorApp1"))); + + if (qrUrl != null) + { + try + { + StreamResource resource = new StreamResource(() -> { + try { + QRCodeWriter qrCodeWriter = new QRCodeWriter(); + BitMatrix bitMatrix = qrCodeWriter.encode(qrUrl, BarcodeFormat.QR_CODE, 200, 200); + ByteArrayOutputStream pngOutputStream = new ByteArrayOutputStream(); + MatrixToImageWriter.writeToStream(bitMatrix, "PNG", pngOutputStream); + return new ByteArrayInputStream(pngOutputStream.toByteArray()); + } catch (Exception e) { + e.printStackTrace(); + return null; + } + }, "qr_" + System.currentTimeMillis() + ".png"); + + Image qrImage = new Image(null, resource); + content.addComponent(qrImage); + } + catch (Exception e) + { + content.addComponent(new Label(I18N.get("errorGeneratingQrCode1"))); + } + } + + content.addComponent(new Label(I18N.get("orEnterThisSecretKeyManually1"))); + + // format secret for display + String secretDisplay = secret.replaceAll("(.{4})", "$1 ").trim(); + content.addComponent(new Label("" + secretDisplay + "", ContentMode.HTML)); + + content.addComponent(new Label(I18N.get("2EnterThe6digitCodeGeneratedByTheApp1"))); + + final TextField codeField = new TextField(); + content.addComponent(codeField); + + Button verifyButton = new Button(I18N.get("verifyAndEnable1")); + verifyButton.addClickListener(new ClickListener() { + @Override + public void buttonClick(ClickEvent event) + { + if (TOTPUtils.validateCode(secret, codeField.getValue())) + { + userConfig.twoFactorSecret = secret; + userConfig.isTwoFactorEnabled = true; + update2FAStatusLabel(statusLabel, true); + setupButton.setCaption(I18N.get("reset2FA1")); + popup.close(); + com.vaadin.ui.Notification.show(I18N.get("twoFAEnabledSuccessfully1")); + } + else + { + com.vaadin.ui.Notification.show(I18N.get("invalidCode1"), com.vaadin.ui.Notification.Type.ERROR_MESSAGE); + } + } + }); + content.addComponent(verifyButton); + + popup.setContent(content); + getUI().addWindow(popup); } @@ -99,8 +370,8 @@ protected void buildListComponent(final String propId, final ContainerProperty p HorizontalLayout layout = new HorizontalLayout(); layout.setWidth(100.0f, Unit.PERCENTAGE); layout.setSpacing(true); - layout.setCaption("Permissions"); - layout.setDescription("Allowed and denied permissions for users with this role"); + layout.setCaption(I18N.get("permissions1")); + layout.setDescription(I18N.get("allowedAndDeniedPermissionsForUsersWithThisRole1")); // permission table buildTable(layout); @@ -334,7 +605,7 @@ private void buildButtons(HorizontalLayout layout) @Override public void buttonClick(ClickEvent event) { - // get list of top level permissions registered with security manager + // get list of top level permissions registered with security manager Collection valueList = getParentHub().getSecurityManager().getAllModulePermissions(); // create callback to add new value diff --git a/sensorhub-webui-core/src/main/java/org/sensorhub/ui/CommProviderConfigForm.java b/sensorhub-webui-core/src/main/java/org/sensorhub/ui/CommProviderConfigForm.java index 317647fe61..8ed4713dce 100644 --- a/sensorhub-webui-core/src/main/java/org/sensorhub/ui/CommProviderConfigForm.java +++ b/sensorhub-webui-core/src/main/java/org/sensorhub/ui/CommProviderConfigForm.java @@ -66,7 +66,7 @@ else if (propId.endsWith(UIConstants.PROP_NAME)) else if (propId.endsWith(UIConstants.PROP_AUTOSTART)) field.setVisible(false); else if (propId.endsWith(UIConstants.PROP_MODULECLASS)) - field.setCaption("Provider Class"); + field.setCaption(I18N.get("providerClass1")); return field; } diff --git a/sensorhub-webui-core/src/main/java/org/sensorhub/ui/DataSourceAdminPanel.java b/sensorhub-webui-core/src/main/java/org/sensorhub/ui/DataSourceAdminPanel.java index 0fbb4f307c..4fc694b52d 100644 --- a/sensorhub-webui-core/src/main/java/org/sensorhub/ui/DataSourceAdminPanel.java +++ b/sensorhub-webui-core/src/main/java/org/sensorhub/ui/DataSourceAdminPanel.java @@ -78,17 +78,17 @@ public void build(final MyBeanItem beanItem, final ModuleType modu // sensor info panel if (module.isInitialized()) { - Label sectionLabel = new Label("Data Source Info"); + Label sectionLabel = new Label(I18N.get("dataSourceInfo1")); sectionLabel.addStyleName(STYLE_H3); sectionLabel.addStyleName(STYLE_COLORED); addComponent(sectionLabel); - addComponent(new Label("Unique ID: " + module.getUniqueIdentifier(), ContentMode.HTML)); + addComponent(new Label("" + I18N.get("uniqueID1") + ": " + module.getUniqueIdentifier(), ContentMode.HTML)); // display list of FOIs var fois = module.getCurrentFeaturesOfInterest().keySet(); if (fois != null && !fois.isEmpty()) { - addComponent(new Label("FOI IDs:", ContentMode.HTML)); + addComponent(new Label("" + I18N.get("foiIDs1") + ":", ContentMode.HTML)); ListSelect list = new ListSelect(); list.setRows(4); list.setNullSelectionAllowed(false); @@ -104,7 +104,7 @@ public void build(final MyBeanItem beanItem, final ModuleType modu addComponent(new Spacing()); HorizontalLayout titleBar = new HorizontalLayout(); titleBar.setSpacing(true); - sectionLabel = new Label("Outputs"); + sectionLabel = new Label(I18N.get("outputs1")); sectionLabel.addStyleName(STYLE_H3); sectionLabel.addStyleName(STYLE_COLORED); titleBar.addComponent(sectionLabel); @@ -112,8 +112,8 @@ public void build(final MyBeanItem beanItem, final ModuleType modu // refresh button final Timer timer = new Timer(); - final Button refreshButton = new Button("Refresh"); - refreshButton.setDescription("Toggle auto-refresh data once per second"); + final Button refreshButton = new Button(I18N.get("refresh1")); + refreshButton.setDescription(I18N.get("toggleAutoRefreshDataOncePerSecond1")); refreshButton.setIcon(REFRESH_ICON); refreshButton.addStyleName(STYLE_SMALL); refreshButton.addStyleName(STYLE_QUIET); @@ -158,13 +158,13 @@ public void run() }; timer.schedule(autoRefreshTask, 0L, 1000L); refreshButton.setIcon(FontAwesome.TIMES); - refreshButton.setCaption("Stop"); + refreshButton.setCaption(I18N.get("stop1")); } else { autoRefreshTask.cancel(); refreshButton.setIcon(REFRESH_ICON); - refreshButton.setCaption("Refresh"); + refreshButton.setCaption(I18N.get("refresh1")); } } }); diff --git a/sensorhub-webui-core/src/main/java/org/sensorhub/ui/DatabaseAdminPanel.java b/sensorhub-webui-core/src/main/java/org/sensorhub/ui/DatabaseAdminPanel.java index 561085ad8a..86840d18ca 100644 --- a/sensorhub-webui-core/src/main/java/org/sensorhub/ui/DatabaseAdminPanel.java +++ b/sensorhub-webui-core/src/main/java/org/sensorhub/ui/DatabaseAdminPanel.java @@ -96,7 +96,7 @@ public void build(final MyBeanItem beanItem, final IObsSystemDatab //layout.addComponent(new Label("")); HorizontalLayout titleBar = new HorizontalLayout(); titleBar.setSpacing(true); - Label sectionLabel = new Label("Database Content"); + Label sectionLabel = new Label(I18N.get("databaseContent1")); sectionLabel.addStyleName(STYLE_H3); sectionLabel.addStyleName(STYLE_COLORED); titleBar.addComponent(sectionLabel); @@ -138,7 +138,7 @@ public void handleAction(Action action, Object sender, Object target) if (action == DELETE_SYSTEM_ACTION) { - final ConfirmDialog popup = new ConfirmDialog("Are you sure you want to remove all data and metadata associated with system:
" + uid + "?"); + final ConfirmDialog popup = new ConfirmDialog(I18N.get("areYouSureYouWantToRemoveAllDataAndMetadataAssociatedWithSystem01", uid)); popup.addCloseListener(event -> { if (popup.isConfirmed()) { @@ -159,7 +159,7 @@ public void handleAction(Action action, Object sender, Object target) } else if (action == DELETE_OBS_ACTION) { - final ConfirmDialog popup = new ConfirmDialog("Are you sure you want to remove all observations from system:
" + uid + "?"); + final ConfirmDialog popup = new ConfirmDialog(I18N.get("areYouSureYouWantToRemoveAllObservationsFromSystem01", uid)); popup.addCloseListener(event -> { if (popup.isConfirmed()) { diff --git a/sensorhub-webui-core/src/main/java/org/sensorhub/ui/DatabaseStreamPanel.java b/sensorhub-webui-core/src/main/java/org/sensorhub/ui/DatabaseStreamPanel.java index 9857feee34..3a9f4cac19 100644 --- a/sensorhub-webui-core/src/main/java/org/sensorhub/ui/DatabaseStreamPanel.java +++ b/sensorhub-webui-core/src/main/java/org/sensorhub/ui/DatabaseStreamPanel.java @@ -185,10 +185,10 @@ protected Component buildTimeRangeRow() timeRangeLabel.addStyleName(UIConstants.STYLE_SMALL); updateTimeRange(); layout.addComponent(timeRangeLabel); - layout.setCaption("Time Range:"); + layout.setCaption(I18N.get("timeRange1")); final Button btn = new Button(FontAwesome.BAR_CHART); - btn.setDescription(detailChart == null ? "Show Histogram" : "Hide Histogram"); + btn.setDescription(detailChart == null ? I18N.get("showHistogram1") : I18N.get("hideHistogram1")); btn.setEnabled(dsInfo.getPhenomenonTimeRange() != null); btn.addStyleName(UIConstants.STYLE_SMALL); btn.addStyleName(UIConstants.STYLE_QUIET); @@ -206,13 +206,13 @@ public void buttonClick(ClickEvent event) Component timeline = buildHistogram(); int idx = panelLayout.getComponentIndex(layout.getParent()); panelLayout.addComponent(timeline, idx+1); - btn.setDescription("Hide Histogram"); + btn.setDescription(I18N.get("hideHistogram1")); } else { // remove histogram panelLayout.removeComponent(detailChart.getParent()); - btn.setDescription("Show Histogram"); + btn.setDescription(I18N.get("showHistogram1")); detailChart = null; navigatorChart = null; } @@ -220,8 +220,8 @@ public void buttonClick(ClickEvent event) }); // refresh button - Button refreshButton = new Button("Refresh"); - refreshButton.setDescription("Reload data from database"); + Button refreshButton = new Button(I18N.get("refresh1")); + refreshButton.setDescription(I18N.get("reloadDataFromDatabase1")); refreshButton.setIcon(UIConstants.REFRESH_ICON); refreshButton.addStyleName(UIConstants.STYLE_SMALL); refreshButton.addStyleName(UIConstants.STYLE_QUIET); @@ -283,7 +283,7 @@ protected Component buildHeaderInfo() if (!foiEntries.isEmpty()) { - final ComboBox selectBox = new ComboBox("FOIs"); + final ComboBox selectBox = new ComboBox(I18N.get("fois1")); selectBox.setNullSelectionAllowed(false); selectBox.addStyleName(UIConstants.STYLE_SMALL); selectBox.setWidth(50, Unit.EM); @@ -515,10 +515,10 @@ protected Component buildTable() PagedTableControls controls = table.createControls(); controls.getItemsPerPageLabel().setValue("Items"); - controls.getBtnFirst().setCaption("First"); - controls.getBtnLast().setCaption("Last"); - controls.getBtnNext().setCaption("Next"); - controls.getBtnPrevious().setCaption("Previous"); + controls.getBtnFirst().setCaption(I18N.get("first1")); + controls.getBtnLast().setCaption(I18N.get("last1")); + controls.getBtnNext().setCaption(I18N.get("next1")); + controls.getBtnPrevious().setCaption(I18N.get("previous1")); //controls.getPageLabel().setValue("Current:"); tableLayout.addComponent(controls); diff --git a/sensorhub-webui-core/src/main/java/org/sensorhub/ui/DefaultModulePanel.java b/sensorhub-webui-core/src/main/java/org/sensorhub/ui/DefaultModulePanel.java index d631bc81da..372c6103ea 100644 --- a/sensorhub-webui-core/src/main/java/org/sensorhub/ui/DefaultModulePanel.java +++ b/sensorhub-webui-core/src/main/java/org/sensorhub/ui/DefaultModulePanel.java @@ -87,7 +87,7 @@ public void build(final MyBeanItem beanItem, final ModuleType modu if (!module.getLocalID().startsWith("$$")) { // apply changes button - Button applyButton = new Button("Apply Changes"); + Button applyButton = new Button(I18N.get("applyChanges1")); applyButton.setIcon(APPLY_ICON); applyButton.addStyleName(STYLE_SMALL); applyButton.addStyleName("apply-button"); @@ -99,7 +99,7 @@ public void build(final MyBeanItem beanItem, final ModuleType modu configTabs = tabbedConfigForm.configTabs; try { - configTabs.addTab(new ReadmePanel(beanItem), "README"); + configTabs.addTab(new ReadmePanel(beanItem), I18N.get("tab.readme")); addComponent(tabbedConfigForm); } catch (Exception e) { throw new RuntimeException(e); @@ -244,7 +244,7 @@ protected void refreshContent() protected IModuleConfigForm getConfigForm(MyBeanItem beanItem) { IModuleConfigForm form = getParentProducer().generateForm(beanItem.getBean().getClass()); - form.build(GenericConfigForm.MAIN_CONFIG, "General module configuration", (MyBeanItem)beanItem, false); + form.build(I18N.get("tab.general"), "General module configuration", (MyBeanItem)beanItem, false); return form; } diff --git a/sensorhub-webui-core/src/main/java/org/sensorhub/ui/DisplayUtils.java b/sensorhub-webui-core/src/main/java/org/sensorhub/ui/DisplayUtils.java index 4f600b6f39..fc9ca01e1e 100644 --- a/sensorhub-webui-core/src/main/java/org/sensorhub/ui/DisplayUtils.java +++ b/sensorhub-webui-core/src/main/java/org/sensorhub/ui/DisplayUtils.java @@ -30,6 +30,12 @@ public class DisplayUtils public static String getPrettyName(String text) { StringBuilder buf = new StringBuilder(text.substring(text.lastIndexOf('.')+1)); + String key = text.substring(text.lastIndexOf('.')+1); + String i18nValue = I18N.get(key); + if (!i18nValue.startsWith("!") || !i18nValue.endsWith("!")) + return i18nValue; + + buf = new StringBuilder(key); for (int i=0; i repoUrls, BundleContext osgiC ProgressBar pb = new ProgressBar(); pb.setIndeterminate(true); loading.addComponent(pb); - loading.addComponent(new Label("Loading Bundles Information...")); + loading.addComponent(new Label(I18N.get("loadingBundlesInformation1"))); layout.addComponent(loading); // buttons bar @@ -81,11 +81,11 @@ public DownloadOsgiBundlesPopup(Collection repoUrls, BundleContext osgiC layout.setComponentAlignment(buttons, Alignment.MIDDLE_CENTER); // OK button - Button installBtn = new Button("Install Selected"); + Button installBtn = new Button(I18N.get("installSelected1")); installBtn.addStyleName(UIConstants.STYLE_SMALL); buttons.addComponent(installBtn); - Button cancelBtn = new Button("Cancel"); + Button cancelBtn = new Button(I18N.get("cancel1")); cancelBtn.addStyleName(UIConstants.STYLE_SMALL); cancelBtn.addClickListener(event -> DownloadOsgiBundlesPopup.this.close()); buttons.addComponent(cancelBtn); diff --git a/sensorhub-webui-core/src/main/java/org/sensorhub/ui/GenericConfigForm.java b/sensorhub-webui-core/src/main/java/org/sensorhub/ui/GenericConfigForm.java index 87bd0f4667..905d064ab9 100644 --- a/sensorhub-webui-core/src/main/java/org/sensorhub/ui/GenericConfigForm.java +++ b/sensorhub-webui-core/src/main/java/org/sensorhub/ui/GenericConfigForm.java @@ -138,6 +138,8 @@ public void build(String propId, ComplexProperty prop, boolean includeSubForms) String title = prop.getLabel(); if (title == null) title = DisplayUtils.getPrettyName(propId); + else + title = I18N.get(title); build(title, prop.getDescription(), prop.getValue(), includeSubForms); } @@ -201,6 +203,8 @@ else if (prop instanceof ComplexProperty) label = ((FieldProperty)prop).getLabel(); if (label == null) label = DisplayUtils.getPrettyName((String)propId); + else + label = I18N.get(label); String desc = null; if (prop instanceof FieldProperty) @@ -441,7 +445,7 @@ protected Component initContent() // select system button Button selectBtn = new Button(FontAwesome.SEARCH); - selectBtn.setDescription("Lookup System"); + selectBtn.setDescription(I18N.get("lookupSystem1")); selectBtn.addStyleName(STYLE_QUIET); layout.addComponent(selectBtn); layout.setComponentAlignment(selectBtn, Alignment.MIDDLE_LEFT); @@ -484,7 +488,7 @@ protected Component initContent() // select module button Button selectBtn = new Button(FontAwesome.SEARCH); - selectBtn.setDescription("Lookup Module"); + selectBtn.setDescription(I18N.get("lookupModule1")); selectBtn.addStyleName(STYLE_QUIET); layout.addComponent(selectBtn); layout.setComponentAlignment(selectBtn, Alignment.MIDDLE_LEFT); @@ -529,7 +533,7 @@ protected Component initContent() // select module button Button selectBtn = new Button(FontAwesome.SEARCH); - selectBtn.setDescription("Lookup Address"); + selectBtn.setDescription(I18N.get("lookupAddress1")); selectBtn.addStyleName(STYLE_QUIET); layout.addComponent(selectBtn); layout.setComponentAlignment(selectBtn, Alignment.MIDDLE_LEFT); @@ -599,7 +603,7 @@ protected Component initContent() // show/hide button final Button showBtn = new Button(FontAwesome.EYE); showBtn.addStyleName(STYLE_QUIET); - showBtn.setDescription("Show Password"); + showBtn.setDescription(I18N.get("showPassword1")); showBtn.setData(false); layout.addComponent(showBtn); layout.setComponentAlignment(showBtn, Alignment.MIDDLE_LEFT); @@ -673,9 +677,9 @@ protected void addChangeModuleButton(final ComponentContainer parentForm, final chgButton.addStyleName(STYLE_SECTION_BUTTONS); chgButton.setIcon(EDIT_ICON); if (prop.getValue() == null) - chgButton.setCaption("Add"); + chgButton.setCaption(I18N.get("add1")); else - chgButton.setCaption("Modify"); + chgButton.setCaption(I18N.get("modify1")); chgButton.addClickListener(new ClickListener() { @Override @@ -725,9 +729,9 @@ protected void addChangeObjectButton(final ComponentContainer parentForm, final chgButton.addStyleName(STYLE_SECTION_BUTTONS); chgButton.setIcon(EDIT_ICON); if (prop.getValue() == null) - chgButton.setCaption("Add"); + chgButton.setCaption(I18N.get("add1")); else - chgButton.setCaption("Modify"); + chgButton.setCaption(I18N.get("modify1")); // show popup to select among available module types final ObjectTypeSelectionWithClearCallback callback = new ObjectTypeSelectionWithClearCallback() { @@ -762,7 +766,7 @@ public void onClearSelection() // don't display remove button if value is required if (prop.isRequired()) return; - chgButton.setCaption("Remove"); + chgButton.setCaption(I18N.get("remove1")); } chgButton.addClickListener(new ClickListener() { @@ -872,6 +876,8 @@ protected Component buildSimpleList(final String propId, final ContainerProperty String label = prop.getLabel(); if (label == null) label = DisplayUtils.getPrettyName((String)propId); + else + label = I18N.get(label); final MyBeanItemContainer container = prop.getValue(); final ListSelect listBox = new ListSelect(label, container); @@ -1093,6 +1099,8 @@ public void commit() String title = prop.getLabel(); if (title == null) title = DisplayUtils.getPrettyName((String)propId); + else + title = I18N.get(title); wrapper.setCaption(title); wrapper.setDescription(prop.getDescription()); @@ -1110,6 +1118,8 @@ protected Component buildTabs(final String propId, final ContainerProperty prop, String title = prop.getLabel(); if (title == null) title = DisplayUtils.getPrettyName((String)propId); + else + title = I18N.get(title); layout.setCaption(title); layout.setDescription(prop.getDescription()); @@ -1144,7 +1154,7 @@ public void onTabClose(TabSheet tabsheet, Component tabContent) { final Tab tab = tabs.getTab(tabContent); - final ConfirmDialog popup = new ConfirmDialog("Are you sure you want to delete " + tab.getCaption() + "?
All settings will be lost."); + final ConfirmDialog popup = new ConfirmDialog(I18N.get("areYouSureYouWantToDelete0AllSettingsWillBeLost1", tab.getCaption())); popup.addCloseListener(new CloseListener() { private static final long serialVersionUID = 1L; @Override diff --git a/sensorhub-webui-core/src/main/java/org/sensorhub/ui/I18N.java b/sensorhub-webui-core/src/main/java/org/sensorhub/ui/I18N.java new file mode 100644 index 0000000000..07d4eb2dfb --- /dev/null +++ b/sensorhub-webui-core/src/main/java/org/sensorhub/ui/I18N.java @@ -0,0 +1,53 @@ +package org.sensorhub.ui; + +import java.util.Locale; +import java.util.ResourceBundle; +import java.util.MissingResourceException; +import com.vaadin.server.VaadinSession; +import java.text.MessageFormat; + +public class I18N { + private static final String BUNDLE_NAME = "org.sensorhub.ui.i18n.messages"; + + public static String get(String key) { + Locale locale = null; + if (VaadinSession.getCurrent() != null) { + locale = VaadinSession.getCurrent().getLocale(); + } + + if (locale == null) { + locale = Locale.ENGLISH; + } + + try { + ResourceBundle bundle = ResourceBundle.getBundle(BUNDLE_NAME, locale); + String value = bundle.getString(key); + // Always format to handle escaped quotes (e.g., '' -> ') + return MessageFormat.format(value, new Object[0]); + } catch (MissingResourceException e) { + return "!" + key + "!"; + } + } + + public static String get(String key, Object... args) { + // We cannot call get(key) here because it would format once, and then format again below + // which might break if the first format produced something that looks like a pattern. + // Instead, retrieve raw string and format once. + Locale locale = null; + if (VaadinSession.getCurrent() != null) { + locale = VaadinSession.getCurrent().getLocale(); + } + + if (locale == null) { + locale = Locale.ENGLISH; + } + + try { + ResourceBundle bundle = ResourceBundle.getBundle(BUNDLE_NAME, locale); + String value = bundle.getString(key); + return MessageFormat.format(value, args); + } catch (MissingResourceException e) { + return "!" + key + "!"; + } + } +} diff --git a/sensorhub-webui-core/src/main/java/org/sensorhub/ui/LandingUI.java b/sensorhub-webui-core/src/main/java/org/sensorhub/ui/LandingUI.java index 99df077fb6..b16b19c58a 100644 --- a/sensorhub-webui-core/src/main/java/org/sensorhub/ui/LandingUI.java +++ b/sensorhub-webui-core/src/main/java/org/sensorhub/ui/LandingUI.java @@ -192,7 +192,7 @@ private Panel createPanel(String title, String path, String permissions) { * @return button or label */ private Component buildEndpointComponent(String endpoint) { - Button button = new Button("VIEW"); + Button button = new Button(I18N.get("view1")); button.addStyleNames(ValoTheme.BUTTON_LARGE, ValoTheme.BUTTON_ICON_ALIGN_RIGHT); String title = "No accessible endpoint"; @@ -264,8 +264,8 @@ private Component buildHeader() { */ private Component createLogoutButton(){ // logout button - Button logoutButton = new Button("Logout"); - logoutButton.setDescription("Logout from OSH node"); + Button logoutButton = new Button(I18N.get("logout1")); + logoutButton.setDescription(I18N.get("logoutFromOshNode1")); logoutButton.setIcon(FontAwesome.SIGN_OUT); logoutButton.addStyleName(ValoTheme.BUTTON_LARGE); logoutButton.setWidth("200px"); @@ -275,7 +275,7 @@ private Component createLogoutButton(){ @Override public void buttonClick(Button.ClickEvent event) { - final ConfirmDialog popup = new ConfirmDialog("Are you sure you want to logout?"); + final ConfirmDialog popup = new ConfirmDialog(I18N.get("areYouSureYouWantToLogout1")); popup.addCloseListener(new Window.CloseListener() { @Override public void windowClose(Window.CloseEvent e) diff --git a/sensorhub-webui-core/src/main/java/org/sensorhub/ui/ModuleInstanceSelectionPopup.java b/sensorhub-webui-core/src/main/java/org/sensorhub/ui/ModuleInstanceSelectionPopup.java index 2762a27df7..4de6d1a9ce 100644 --- a/sensorhub-webui-core/src/main/java/org/sensorhub/ui/ModuleInstanceSelectionPopup.java +++ b/sensorhub-webui-core/src/main/java/org/sensorhub/ui/ModuleInstanceSelectionPopup.java @@ -71,7 +71,7 @@ public ModuleInstanceSelectionPopup(final Class moduleType, final ModuleInsta layout.addComponent(table); // add OK button - Button okButton = new Button("OK"); + Button okButton = new Button(I18N.get("ok1")); okButton.addClickListener(new Button.ClickListener() { private static final long serialVersionUID = 1L; diff --git a/sensorhub-webui-core/src/main/java/org/sensorhub/ui/ModuleTypeSelectionPopup.java b/sensorhub-webui-core/src/main/java/org/sensorhub/ui/ModuleTypeSelectionPopup.java index 5b7c5b265c..0f5d98105c 100644 --- a/sensorhub-webui-core/src/main/java/org/sensorhub/ui/ModuleTypeSelectionPopup.java +++ b/sensorhub-webui-core/src/main/java/org/sensorhub/ui/ModuleTypeSelectionPopup.java @@ -123,7 +123,7 @@ protected void buildDialog(Collection moduleProviders, final Mo var osgiCtx = ((AdminUI)UI.getCurrent()).getParentHub().getOsgiContext(); if (osgiCtx != null) { - Button installNew = new Button("Install More Modules..."); + Button installNew = new Button(I18N.get("installMoreModules1")); installNew.setStyleName(STYLE_LINK); installNew.addStyleName(UIConstants.STYLE_SMALL); layout.addComponent(installNew); @@ -151,7 +151,7 @@ public void buttonClick(ClickEvent event) // OK button final ModuleRegistry registry = ((AdminUI)UI.getCurrent()).getParentHub().getModuleRegistry(); - Button okButton = new Button("OK"); + Button okButton = new Button(I18N.get("ok1")); okButton.addStyleName(UIConstants.STYLE_SMALL); okButton.addClickListener(new Button.ClickListener() { private static final long serialVersionUID = 1L; @@ -196,7 +196,7 @@ public void buttonClick(ClickEvent event) if (callback instanceof ModuleTypeSelectionWithClearCallback) { // add clear button - Button clearButton = new Button("Select None"); + Button clearButton = new Button(I18N.get("selectNone1")); clearButton.addStyleName(UIConstants.STYLE_SMALL); clearButton.addClickListener(new Button.ClickListener() { private static final long serialVersionUID = 1L; diff --git a/sensorhub-webui-core/src/main/java/org/sensorhub/ui/NetworkAddressSelectionPopup.java b/sensorhub-webui-core/src/main/java/org/sensorhub/ui/NetworkAddressSelectionPopup.java index 2cdae74a91..8fd9e153cd 100644 --- a/sensorhub-webui-core/src/main/java/org/sensorhub/ui/NetworkAddressSelectionPopup.java +++ b/sensorhub-webui-core/src/main/java/org/sensorhub/ui/NetworkAddressSelectionPopup.java @@ -61,7 +61,7 @@ public NetworkAddressSelectionPopup(final NetworkType addressType, final Address layout.setComponentAlignment(buttons, Alignment.MIDDLE_CENTER); // add useAddress button - Button okAddressButton = new Button("Use Address"); + Button okAddressButton = new Button(I18N.get("useAddress1")); okAddressButton.addClickListener(new Button.ClickListener() { @Override public void buttonClick(ClickEvent event) @@ -72,7 +72,7 @@ public void buttonClick(ClickEvent event) buttons.addComponent(okAddressButton); // add useName button - Button okNameButton = new Button("Use Name"); + Button okNameButton = new Button(I18N.get("useName1")); okNameButton.addClickListener(new Button.ClickListener() { @Override public void buttonClick(ClickEvent event) diff --git a/sensorhub-webui-core/src/main/java/org/sensorhub/ui/NetworkAdminPanel.java b/sensorhub-webui-core/src/main/java/org/sensorhub/ui/NetworkAdminPanel.java index dbf813a75d..9af1daf623 100644 --- a/sensorhub-webui-core/src/main/java/org/sensorhub/ui/NetworkAdminPanel.java +++ b/sensorhub-webui-core/src/main/java/org/sensorhub/ui/NetworkAdminPanel.java @@ -77,7 +77,7 @@ public NetworkScanPanel(final ICommNetwork module) protected void addAvailableNetworks() { // section title - Label sectionLabel = new Label("Available Networks"); + Label sectionLabel = new Label(I18N.get("availableNetworks1")); sectionLabel.addStyleName(STYLE_H3); sectionLabel.addStyleName(STYLE_COLORED); addComponent(sectionLabel); @@ -112,13 +112,13 @@ protected void addAvailableNetworks() protected void addScannedDevicesTable() { // section title - Label sectionLabel = new Label("Detected Devices"); + Label sectionLabel = new Label(I18N.get("detectedDevices1")); sectionLabel.addStyleName(STYLE_H3); sectionLabel.addStyleName(STYLE_COLORED); addComponent(sectionLabel); // scan button - scanButton = new Button("Start Scan"); + scanButton = new Button(I18N.get("startScan1")); scanButton.setIcon(REFRESH_ICON); scanButton.addStyleName("scan-button"); scanButton.setEnabled(module.isStarted()); @@ -145,7 +145,7 @@ public void buttonClick(ClickEvent event) { if (!module.getDeviceScanner().isScanning()) { - scanButton.setCaption("Stop Scan"); + scanButton.setCaption(I18N.get("stopScan1")); deviceTable.removeAllItems(); new Thread() { @@ -240,7 +240,7 @@ public void stopScan() ui.access(new Runnable() { @Override public void run() { - scanButton.setCaption("Start Scan"); + scanButton.setCaption(I18N.get("startScan1")); ui.push(); } }); diff --git a/sensorhub-webui-core/src/main/java/org/sensorhub/ui/ObjectTypeSelectionPopup.java b/sensorhub-webui-core/src/main/java/org/sensorhub/ui/ObjectTypeSelectionPopup.java index 087d4e9a8b..2d36dfa046 100644 --- a/sensorhub-webui-core/src/main/java/org/sensorhub/ui/ObjectTypeSelectionPopup.java +++ b/sensorhub-webui-core/src/main/java/org/sensorhub/ui/ObjectTypeSelectionPopup.java @@ -77,7 +77,7 @@ public ObjectTypeSelectionPopup(String title, final Map> typeLi layout.setComponentAlignment(buttons, Alignment.MIDDLE_CENTER); // add OK button - Button okButton = new Button("OK"); + Button okButton = new Button(I18N.get("ok1")); okButton.addClickListener(new Button.ClickListener() { private static final long serialVersionUID = 1L; @@ -102,7 +102,7 @@ public void buttonClick(ClickEvent event) if (callback instanceof ModuleTypeSelectionWithClearCallback) { // add clear button - Button clearButton = new Button("Select None"); + Button clearButton = new Button(I18N.get("selectNone1")); clearButton.addClickListener(new Button.ClickListener() { private static final long serialVersionUID = 1L; diff --git a/sensorhub-webui-core/src/main/java/org/sensorhub/ui/ProcessAdminPanel.java b/sensorhub-webui-core/src/main/java/org/sensorhub/ui/ProcessAdminPanel.java index 32136e95a0..005cc8aa9f 100644 --- a/sensorhub-webui-core/src/main/java/org/sensorhub/ui/ProcessAdminPanel.java +++ b/sensorhub-webui-core/src/main/java/org/sensorhub/ui/ProcessAdminPanel.java @@ -85,7 +85,7 @@ public void build(final MyBeanItem beanItem, final IProcessModule< addComponent(new Spacing()); HorizontalLayout titleBar = new HorizontalLayout(); titleBar.setSpacing(true); - Label sectionLabel = new Label("Process Inputs"); + Label sectionLabel = new Label(I18N.get("processInputs1")); sectionLabel.addStyleName(STYLE_H3); sectionLabel.addStyleName(STYLE_COLORED); titleBar.addComponent(sectionLabel); @@ -104,7 +104,7 @@ public void build(final MyBeanItem beanItem, final IProcessModule< addComponent(new Spacing()); HorizontalLayout titleBar = new HorizontalLayout(); titleBar.setSpacing(true); - Label sectionLabel = new Label("Process Parameters"); + Label sectionLabel = new Label(I18N.get("processParameters1")); sectionLabel.addStyleName(STYLE_H3); sectionLabel.addStyleName(STYLE_COLORED); titleBar.addComponent(sectionLabel); @@ -183,7 +183,7 @@ protected void addProcessFlowEditor(final SMLProcessImpl module) addComponent(buttonBar); // add data source button - Button addDatasrcBtn = new Button("Datasource", ADD_ICON); + Button addDatasrcBtn = new Button(I18N.get("datasource1"), ADD_ICON); addDatasrcBtn.addStyleName(STYLE_SMALL); buttonBar.addComponent(addDatasrcBtn); addDatasrcBtn.addClickListener(new ClickListener() { @@ -208,7 +208,7 @@ public void onSelected(IModule module) throws ProcessingException }); // add process button - Button addProcessBtn = new Button("Process", ADD_ICON); + Button addProcessBtn = new Button(I18N.get("process1"), ADD_ICON); addProcessBtn.addStyleName(STYLE_SMALL); buttonBar.addComponent(addProcessBtn); addProcessBtn.addClickListener(new ClickListener() { diff --git a/sensorhub-webui-core/src/main/java/org/sensorhub/ui/ProcessFlowDiagram.java b/sensorhub-webui-core/src/main/java/org/sensorhub/ui/ProcessFlowDiagram.java index a9a3de7d5c..246ac12008 100644 --- a/sensorhub-webui-core/src/main/java/org/sensorhub/ui/ProcessFlowDiagram.java +++ b/sensorhub-webui-core/src/main/java/org/sensorhub/ui/ProcessFlowDiagram.java @@ -284,7 +284,7 @@ protected void setParamValues(String blockName, String portName) protected void editValues(DataComponent component) { - Window popup = new Window("Set Parameter"); + Window popup = new Window(I18N.get("setParameter1")); VerticalLayout content = new VerticalLayout(); popup.setContent(content); popup.center(); diff --git a/sensorhub-webui-core/src/main/java/org/sensorhub/ui/ProcessSelectionPopup.java b/sensorhub-webui-core/src/main/java/org/sensorhub/ui/ProcessSelectionPopup.java index b54feb5926..e6c6dca012 100644 --- a/sensorhub-webui-core/src/main/java/org/sensorhub/ui/ProcessSelectionPopup.java +++ b/sensorhub-webui-core/src/main/java/org/sensorhub/ui/ProcessSelectionPopup.java @@ -113,7 +113,7 @@ protected void buildDialog(Collection providers, final Process layout.addComponent(table); // link to more modules - Button installNew = new Button("Install More Packages..."); + Button installNew = new Button(I18N.get("installMorePackages1")); installNew.setStyleName(STYLE_LINK); layout.addComponent(installNew); layout.setComponentAlignment(installNew, Alignment.MIDDLE_RIGHT); @@ -134,12 +134,12 @@ public void buttonClick(ClickEvent event) layout.setComponentAlignment(buttons, Alignment.MIDDLE_LEFT); // name text box - buttons.addComponent(new Label("Process Name:")); + buttons.addComponent(new Label(I18N.get("processName1"))); final TextField textBox = new TextField(); buttons.addComponent(textBox); // OK button - Button okButton = new Button("OK"); + Button okButton = new Button(I18N.get("ok1")); okButton.addClickListener(new Button.ClickListener() { @Override public void buttonClick(ClickEvent event) diff --git a/sensorhub-webui-core/src/main/java/org/sensorhub/ui/ReadmePanel.java b/sensorhub-webui-core/src/main/java/org/sensorhub/ui/ReadmePanel.java index c582d34195..7a4ee82eca 100644 --- a/sensorhub-webui-core/src/main/java/org/sensorhub/ui/ReadmePanel.java +++ b/sensorhub-webui-core/src/main/java/org/sensorhub/ui/ReadmePanel.java @@ -74,12 +74,12 @@ public ReadmePanel(final MyBeanItem beanItem) { // Otherwise, display instructions for adding a readme file var header = new HorizontalLayout(); header.setSpacing(true); - Label title = new Label("No README"); + Label title = new Label(I18N.get("noReadme1")); title.addStyleName(UIConstants.STYLE_H2); header.addComponent(title); addComponent(header); - Button detailsBtn = new Button("Detailed Instructions"); + Button detailsBtn = new Button(I18N.get("detailedInstructions1")); detailsBtn.setIcon(FontAwesome.CARET_RIGHT); //detailsBtn.setWidth(100.0f, Unit.PERCENTAGE); diff --git a/sensorhub-webui-core/src/main/java/org/sensorhub/ui/SOSAdminPanel.java b/sensorhub-webui-core/src/main/java/org/sensorhub/ui/SOSAdminPanel.java index b764be471c..1d09297cda 100644 --- a/sensorhub-webui-core/src/main/java/org/sensorhub/ui/SOSAdminPanel.java +++ b/sensorhub-webui-core/src/main/java/org/sensorhub/ui/SOSAdminPanel.java @@ -97,7 +97,7 @@ public void build(final MyBeanItem beanItem, final SOSService modu //ComponentContainer parent = (ComponentContainer)configTabs.getTab(0).getComponent(); VerticalLayout parent = new VerticalLayout(); - configTabs.addTab(parent, "Test Links"); + configTabs.addTab(parent, I18N.get("testLinks1")); LinkItem linkItem; baseUrl += "?service=SOS&version=2.0&request="; diff --git a/sensorhub-webui-core/src/main/java/org/sensorhub/ui/SPSAdminPanel.java b/sensorhub-webui-core/src/main/java/org/sensorhub/ui/SPSAdminPanel.java index a762093d36..970464a216 100644 --- a/sensorhub-webui-core/src/main/java/org/sensorhub/ui/SPSAdminPanel.java +++ b/sensorhub-webui-core/src/main/java/org/sensorhub/ui/SPSAdminPanel.java @@ -93,7 +93,7 @@ public void build(final MyBeanItem beanItem, final SPSService modu //ComponentContainer parent = (ComponentContainer)configTabs.getTab(0).getComponent(); VerticalLayout parent = new VerticalLayout(); - configTabs.addTab(parent, "Test Links"); + configTabs.addTab(parent, I18N.get("testLinks1")); LinkItem linkItem; baseUrl += "?service=SPS&version=2.0&request="; diff --git a/sensorhub-webui-core/src/main/java/org/sensorhub/ui/SWEControlForm.java b/sensorhub-webui-core/src/main/java/org/sensorhub/ui/SWEControlForm.java index d22c364541..a88ea87e1f 100644 --- a/sensorhub-webui-core/src/main/java/org/sensorhub/ui/SWEControlForm.java +++ b/sensorhub-webui-core/src/main/java/org/sensorhub/ui/SWEControlForm.java @@ -83,7 +83,7 @@ protected void buildForm() super.buildForm(); // send button - Button sendBtn = new Button("Send Command"); + Button sendBtn = new Button(I18N.get("sendCommand1")); sendBtn.addStyleName(UIConstants.STYLE_SMALL); addComponent(sendBtn); setComponentAlignment(sendBtn, Alignment.MIDDLE_LEFT); diff --git a/sensorhub-webui-core/src/main/java/org/sensorhub/ui/SWEEditForm.java b/sensorhub-webui-core/src/main/java/org/sensorhub/ui/SWEEditForm.java index f02f93bff0..7110b74eea 100644 --- a/sensorhub-webui-core/src/main/java/org/sensorhub/ui/SWEEditForm.java +++ b/sensorhub-webui-core/src/main/java/org/sensorhub/ui/SWEEditForm.java @@ -148,7 +148,7 @@ public void valueChange(ValueChangeEvent event) else if (component instanceof DataArray) { HorizontalLayout layout = getCaptionLayout(component); - layout.addComponent(new Label("Array component not supported")); + layout.addComponent(new Label(I18N.get("arrayComponentNotSupported1"))); return layout; } else diff --git a/sensorhub-webui-core/src/main/java/org/sensorhub/ui/SensorAdminPanel.java b/sensorhub-webui-core/src/main/java/org/sensorhub/ui/SensorAdminPanel.java index d9acc40dee..712c76a846 100644 --- a/sensorhub-webui-core/src/main/java/org/sensorhub/ui/SensorAdminPanel.java +++ b/sensorhub-webui-core/src/main/java/org/sensorhub/ui/SensorAdminPanel.java @@ -58,7 +58,7 @@ public void build(final MyBeanItem beanItem, final ISensorModule"); - private Button btnLast = new Button(">>"); + private Button btnFirst = new Button(I18N.get("first2")); + private Button btnPrevious = new Button(I18N.get("previous2")); + private Button btnNext = new Button(I18N.get("next2")); + private Button btnLast = new Button(I18N.get("last2")); private TextField currentPageTextField = new TextField(); @SuppressWarnings("deprecation") diff --git a/sensorhub-webui-core/src/main/resources/org/sensorhub/ui/i18n/messages.properties b/sensorhub-webui-core/src/main/resources/org/sensorhub/ui/i18n/messages.properties new file mode 100644 index 0000000000..4108fd01c3 --- /dev/null +++ b/sensorhub-webui-core/src/main/resources/org/sensorhub/ui/i18n/messages.properties @@ -0,0 +1,543 @@ +app.title=OpenSensorHub +tab.sensors=Sensors +tab.databases=Databases +tab.processing=Processing +tab.services=Services +tab.clients=Clients +tab.network=Network +tab.security=Security +action.shutdown=Shutdown +action.logout=Logout +action.save=Save +action.addModule=Add New Module +action.addSubmodule=Add Submodule +action.removeModule=Remove Module +action.removeSubmodule=Remove Submodule +action.start=Start +action.stop=Stop +action.restart=Restart +action.forceInit=Force Init +action.selectAll=Select All Modules +action.deselectAll=Deselect All Modules +dialog.shutdown.title=Shutdown Initiated... +dialog.shutdown.message=UI will stop responding +dialog.shutdown.confirm=Are you sure you want to shutdown the sensor hub? +dialog.logout.confirm=Are you sure you want to logout? +dialog.save.confirm=Are you sure you want to save the configuration (and override the previous one)? +msg.configSaved=SensorHub Configuration Saved +msg.configSaveError=Cannot save configuration +dialog.remove.confirm=Are you sure you want to remove {0}?
All settings will be lost. +msg.removeError={0} could not be removed +msg.startError={0} could not be started +msg.stopError={0} could not be stopped +msg.restartError={0} could not be restarted +msg.reinitError={0} could not be reinitialized +msg.loadError=Cannot load module +msg.addSubmoduleError=Cannot add submodule +about.title=About OpenSensorHub +about.desc=A software platform for building smart sensor networks and the Internet of Things +about.license=Licenced under Mozilla Public License v2.0 +about.version=Version: +about.build=Build Number: +about.deployment=Deployment Name: +tooltip.shutdown=Shutdown SensorHub +tooltip.logout=Logout from OSH node +tooltip.save=Save SensorHub Configuration +dialog.start.confirm=Are you sure you want to start {0}? +dialog.stop.confirm=Are you sure you want to stop {0}? +dialog.restart.confirm=Are you sure you want to restart {0}? +dialog.reinit.confirm=Are you sure you want to force re-init {0}? +backgroundUpdate=Background Update +sigmaThreshold=Sigma Threshold +nuclideIdentification=Nuclide Identification +tamperAlarm=Tamper Alarm +occupancySensor=Occupancy Sensor +stateOfHealth=State of Health +soh=SOH +1ScanThisQrCodeWithYourAuthenticatorApp=1. Scan this QR Code with your authenticator app: +2EnterThe6digitCodeGeneratedByTheApp=2. Enter the 6-digit code generated by the app: +orEnterThisSecretKeyManually=Or enter this Secret Key manually: +loadingBundlesInformation=Loading Bundles Information... +loadingPackageInformation=Loading Package Information... +arrayComponentNotSupported=Array component not supported +twofactorAuthentication=Two-Factor Authentication +installMorePackages=Install More Packages... +errorGeneratingQrCode=Error generating QR Code +installMoreModules=Install More Modules... +detailedInstructions=Detailed Instructions +availableNetworks=Available Networks +processParameters=Process Parameters +verifyAndEnable=Verify and Enable +dataSourceInfo=Data Source Info +detectedDevices=Detected Devices +installSelected=Install Selected +databaseContent=Database Content +itemsPerPage=Items per page: +commandInputs=Command Inputs +processInputs=Process Inputs +providerClass=Provider Class +processName=Process Name: +configuration=Configuration +applyChanges=Apply Changes +sendCommand=Send Command +useAddress=Use Address +selectNone=Select None +timeRange=Time Range: +permissions=Permissions +startScan=Start Scan +noReadme=No README +stopScan=Stop Scan +reset2fa=Reset 2FA +previous=Previous +useName=Use Name +outputs=Outputs +refresh=Refresh +modify=Modify +cancel=Cancel +logout=Logout +remove=Remove +verify=Verify +first=First +login=Login +last=Last +view=VIEW +next=Next +stop=Stop +add=Add +ui.empty=<< +ok=OK +1ScanThisQrCodeWithYourAuthenticatorApp1=1. Scan this QR Code with your authenticator app: +2EnterThe6digitCodeGeneratedByTheApp1=2. Enter the 6-digit code generated by the app: +orEnterThisSecretKeyManually1=Or enter this Secret Key manually: +loadingPackageInformation1=Loading Package Information... +loadingBundlesInformation1=Loading Bundles Information... +arrayComponentNotSupported1=Array component not supported +twofactorAuthentication1=Two-Factor Authentication +errorGeneratingQrCode1=Error generating QR Code +installMorePackages1=Install More Packages... +installMoreModules1=Install More Modules... +detailedInstructions1=Detailed Instructions +processParameters1=Process Parameters +availableNetworks1=Available Networks +verifyAndEnable1=Verify and Enable +databaseContent1=Database Content +installSelected1=Install Selected +dataSourceInfo1=Data Source Info +detectedDevices1=Detected Devices +itemsPerPage1=Items per page: +processInputs1=Process Inputs +commandInputs1=Command Inputs +providerClass1=Provider Class +configuration1=Configuration +processName1=Process Name: +applyChanges1=Apply Changes +sendCommand1=Send Command +timeRange1=Time Range: +useAddress1=Use Address +permissions1=Permissions +selectNone1=Select None +startScan1=Start Scan +noReadme1=No README +reset2fa1=Reset 2FA +stopScan1=Stop Scan +useName1=Use Name +previous1=Previous +refresh1=Refresh +outputs1=Outputs +cancel1=Cancel +logout1=Logout +modify1=Modify +remove1=Remove +verify1=Verify +first1=First +login1=Login +view1=VIEW +stop1=Stop +next1=Next +last1=Last +add1=Add +last2=>> +first2=<< +ok1=OK +next2=> +previous2=< + +pleaseEnterAUserIDFirst1=Please enter a User ID first +reset2FA1=Reset 2FA +enable2FA1=Enable 2FA +twoFAEnabledSuccessfully1=2FA Enabled Successfully +invalidCode1=Invalid Code +allowedAndDeniedPermissionsForUsersWithThisRole1=Allowed and denied permissions for users with this role +manualEntry1=Manual Entry +toggleAutoRefreshDataOncePerSecond1=Toggle auto-refresh data once per second +lookupSystem1=Lookup System +lookupModule1=Lookup Module +lookupAddress1=Lookup Address +showPassword1=Show Password +showHistogram1=Show Histogram +hideHistogram1=Hide Histogram +reloadDataFromDatabase1=Reload data from database +fois1=FOIs +username1=Username +password1=Password +loginFailed1=Login Failed +invalidUsernameOrPassword1=Invalid username or password +verificationCode1=Verification Code +verificationFailed1=Verification Failed +datasource1=Datasource +process1=Process +logoutFromOshNode1=Logout from OSH node +setParameter1=Set Parameter +setupTwoFactorAuthentication1=Setup Two-Factor Authentication + +action.new_item=New {0} +Lane\ System=Lane System +Module\ Class=Module Class +Module\ Name=Module Name +Module\ ID=Module ID +Description=Description +SensorML\ URL=SensorML URL +UniqueID=UniqueID +Last\ Updated=Last Updated +Auto\ Start=Auto Start +Delete\ Data\ on\ Lane\ Removal=Delete Data on Lane Removal +Latitude=Latitude +Longitude=Longitude +Altitude=Altitude +Initial\ RPM\ Config=Initial RPM Config +Initial\ Camera\ Config=Initial Camera Config +Lane\ Options\ Config=Lane Options Config +tab.general=General +tab.readme=README +Fixed\ Location=Fixed Location +Fixed\ Orientation=Fixed Orientation +# Auto-extracted DisplayInfo labels and descriptions +URL\ of\ SensorML\ file\ providing\ the\ base\ description\ of\ the\ sensor=URL of SensorML file providing the base description of the sensor +Time\ at\ which\ the\ SensorML\ description\ was\ last\ updated=Time at which the SensorML description was last updated +Geodetic\ latitude,\ in\ degrees=Geodetic latitude, in degrees +Longitude,\ in\ degrees=Longitude, in degrees +Height\ above\ ellipsoid,\ in\ meters=Height above ellipsoid, in meters +X\ coordinate,\ in\ meters=X coordinate, in meters +Y\ coordinate,\ in\ meters=Y coordinate, in meters +Z\ coordinate,\ in\ meters=Z coordinate, in meters +Pitch\ angle\ about\ Y\ axis,\ in\ degrees=Pitch angle about Y axis, in degrees +Roll\ angle\ about\ X\ axis,\ in\ degrees=Roll angle about X axis, in degrees +Location\ in\ EPSG\:4979\ coordinate\ reference\ frame=Location in EPSG:4979 coordinate reference frame +Database\ Number=Database Number +Numerical\ identifier\ of\ the\ database.\ Each\ database\ that\ should\ be\ exposed\ via\ the\ federated\ database\ API\ must\ have\ a\ unique\ number\ on\ the\ sensor\ hub.\ If\ visibility\ through\ the\ federated\ database\ is\ not\ desired,\ it\ can\ be\ omitted.=Numerical identifier of the database. Each database that should be exposed via the federated database API must have a unique number on the sensor hub. If visibility through the federated database is not desired, it can be omitted. +Enables\ fine-grained\ permission-based\ access\ control\ for\ this\ module=Enables fine-grained permission-based access control for this module +Require\ Authentication=Require Authentication +Set\ to\ require\ remote\ users\ to\ be\ authentified\ before\ they\ can\ use\ this\ service=Set to require remote users to be authentified before they can use this service +Endpoint=Endpoint +Unique\ local\ ID\ of\ the\ module=Unique local ID of the module +User\ description\ for\ the\ module=User description for the module +Set\ to\ automatically\ start\ the\ module\ when\ it\ is\ loaded=Set to automatically start the module when it is loaded +Module\ implementation\ class=Module implementation class +User\ chosen\ name\ for\ the\ module=User chosen name for the module +Name\ of\ topic/queue\ to\ use=Name of topic/queue to use +Enable/disable\ writing\ to\ queue=Enable/disable writing to queue +Enable/disable\ reading\ from\ queue=Enable/disable reading from queue +Protocol\ Options=Protocol Options +Common\ Configuration=Common Configuration +Common\ configuration\ for\ sensors\ in\ the\ array=Common configuration for sensors in the array +Sensors\ Configuration=Sensors Configuration +Subsystem\ Config=Subsystem Config +Configuration\ of\ the\ subsystem=Configuration of the subsystem +Relative\ Location=Relative Location +Location\ of\ this\ subsystem\ relative\ to\ the\ main\ system\ or\ platform\ reference\ frame=Location of this subsystem relative to the main system or platform reference frame +Relative\ Orientation=Relative Orientation +Orientation\ of\ this\ subsystem\ relative\ to\ the\ main\ system\ or\ platform\ reference\ frame=Orientation of this subsystem relative to the main system or platform reference frame +Fixed\ system\ orientation\ in\ the\ local\ NED\ reference\ frame=Fixed system orientation in the local NED reference frame +Subsystems=Subsystems +Configuration\ of\ components\ of\ this\ sensor\ system=Configuration of components of this sensor system +Database\ Config=Database Config +Configuration\ of\ underlying\ database=Configuration of underlying database +System\ UIDs=System UIDs +Unique\ IDs\ of\ system\ drivers\ handled\ by\ this\ database=Unique IDs of system drivers handled by this database +Automatic\ Purge\ Policy=Automatic Purge Policy +Policy\ for\ automatically\ purging\ historical\ data=Policy for automatically purging historical data +Uncheck\ to\ disable\ auto-purge\ temporarily=Uncheck to disable auto-purge temporarily +Purge\ Execution\ Period=Purge Execution Period +Unique\ IDs\ of\ system\ drivers\ to\ purge=Unique IDs of system drivers to purge +Max\ Record\ Age=Max Record Age +SensorML\ File=SensorML File +Path\ of\ SensorML\ description\ of\ the\ process=Path of SensorML description of the process +List\ of\ users\ allowed\ access\ to\ this\ system=List of users allowed access to this system +List\ of\ security\ roles=List of security roles +User\ ID=User ID +Role\ ID=Role ID +Source\ Database\ ID=Source Database ID +ID\ of\ database\ module\ to\ read\ data\ from\ (Federated\ database\ will\ be\ used\ if\ not\ set=ID of database module to read data from (Federated database will be used if not set +HTTP\ Port=HTTP Port +HTTPS\ Port=HTTPS Port +Root\ URL\ where\ static\ web\ content\ will\ be\ served.=Root URL where static web content will be served. +Directory\ where\ static\ web\ content\ is\ located.=Directory where static web content is located. +Root\ URL\ where\ the\ server\ will\ accept\ requests.\ This\ will\ be\ the\ prefix\ to\ all\ servlet\ URLs.=Root URL where the server will accept requests. This will be the prefix to all servlet URLs. +Proxy\ Base\ URL=Proxy Base URL +Public\ URL\ as\ viewed\ from\ the\ outside\ when\ requests\ transit\ through\ a\ proxy\ server.=Public URL as viewed from the outside when requests transit through a proxy server. +Authentication\ Method=Authentication Method +Method\ used\ to\ authenticate\ users\ on\ this\ server=Method used to authenticate users on this server +Path\ to\ a\ key\ store\ containing\ the\ certificate\ and\ keypair\ that\ this\ server\ will\ present\ to\ clients\ when\ accessed\ over\ HTTPS.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ \"javax.net.ssl.keyStore\"\ system\ property.\=Path to a key store containing the certificate and keypair that this server will present to clients when accessed over HTTPS. If this value is blank, will default to using the value of the \"javax.net.ssl.keyStore\" system property. +Alias\ for\ the\ public/private\ keypair\ within\ the\ key\ store\ that\ will\ be\ used\ to\ identify\ this\ server.=Alias for the public/private keypair within the key store that will be used to identify this server. +Path\ to\ the\ TLS\ trust\ store\ that\ is\ used\ when\ client\ authentication\ is\ required.\ Ignored\ if\ client\ certificate\ authentication\ is\ not\ used.\ Certificates\ in\ this\ file\ designate\ the\ signing\ authorities\ for\ client\ certificates\ that\ will\ be\ trusted.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ \"javax.net.ssl.trustStore\"\ system\ property.\=Path to the TLS trust store that is used when client authentication is required. Ignored if client certificate authentication is not used. Certificates in this file designate the signing authorities for client certificates that will be trusted. If this value is blank, will default to using the value of the \"javax.net.ssl.trustStore\" system property. +Password\ for\ the\ trust\ store.\ Ignored\ if\ client\ certificate\ authentication\ is\ not\ used.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ \"javax.net.ssl.trustStorePassword\"\ system\ property.\=Password for the trust store. Ignored if client certificate authentication is not used. If this value is blank, will default to using the value of the \"javax.net.ssl.trustStorePassword\" system property. +Enable\ CORS=Enable CORS +Enable\ generation\ of\ CORS\ headers\ to\ allow\ cross-domain\ requests\ from\ browsers=Enable generation of CORS headers to allow cross-domain requests from browsers +Capabilities\ Info=Capabilities Info +Information\ included\ in\ the\ service\ capabilities\ document=Information included in the service capabilities document +Enable\ HTTP\ GET=Enable HTTP GET +Enables/disables\ HTTP\ GET\ bindings\ on\ operations\ that\ support\ it=Enables/disables HTTP GET bindings on operations that support it +Enable\ HTTP\ POST=Enable HTTP POST +Enables/disables\ HTTP\ POST\ bindings\ on\ operations\ that\ support\ it=Enables/disables HTTP POST bindings on operations that support it +Enable\ HTTP\ SOAP=Enable HTTP SOAP +Enables/disables\ HTTP\ SOAP\ bindings\ on\ operations\ that\ support\ it=Enables/disables HTTP SOAP bindings on operations that support it +Connection\ Timeout=Connection Timeout +Reconnect\ Period=Reconnect Period +Max\ Reconnect\ Attempts=Max Reconnect Attempts +Maximum\ number\ of\ times\ the\ client\ will\ attempt\ to\ reconnect\ when\ the\ connection\ is\ not\ available\ or\ lost.\ A\ negative\ value\ means\ that\ there\ is\ no\ limit\ to\ the\ number\ of\ reconnection\ attempts.\ Zero\ means\ not\ to\ attempt\ reconnection.=Maximum number of times the client will attempt to reconnect when the connection is not available or lost. A negative value means that there is no limit to the number of reconnection attempts. Zero means not to attempt reconnection. +IP\ or\ DNS\ name\ of\ remote\ host=IP or DNS name of remote host +IP\ of\ local\ network\ interface\ to\ bind\ to\ or\ 'AUTO'\ to\ select\ it\ automatically=IP of local network interface to bind to or ''AUTO'' to select it automatically +Connection\ Options=Connection Options +Serial\ port\ device\ name.\ Usually\ something\ like\ /dev/ttyXXX\ on\ Linux=Serial port device name. Usually something like /dev/ttyXXX on Linux +Minimum\ number\ of\ bytes\ to\ receive\ before\ they\ are\ sent\ to\ the\ caller=Minimum number of bytes to receive before they are sent to the caller +Local\ port\ number\ to\ use\ on\ the\ local\ host=Local port number to use on the local host +Physical\ address\ of\ Bluetooth\ device\ to\ connect\ to=Physical address of Bluetooth device to connect to +Port\ number\ to\ connect\ to\ on\ remote\ host=Port number to connect to on remote host +User\ Name=User Name +Remote\ user\ name=Remote user name +Password=Password +Remote\ password=Remote password +Secure\ communications\ with\ SSL/TLS=Secure communications with SSL/TLS +Enable\ to\ check\ if\ remote\ host\ is\ reachable\ before\ attempting\ further\ operations=Enable to check if remote host is reachable before attempting further operations +Path\ or\ resource\ or\ service\ relative\ to\ server\ root=Path or resource or service relative to server root +Unique\ ID\ of\ system\ group=Unique ID of system group +Name\ of\ system\ group=Name of system group +Description\ of\ system\ group=Description of system group +List\ of\ bundle\ repository\ URLs=List of bundle repository URLs +A\ human\ readable\ friendly\ identifier\ for\ the\ deployment=A human readable friendly identifier for the deployment +Enable\ Landing\ Page=Enable Landing Page +Enable\ Landing\ Servlet\ to\ redirect\ users\ to\ landing\ page=Enable Landing Servlet to redirect users to landing page +Config\ Class=Config Class +Type\ of\ module\ config\ class\ for\ which\ a\ custom\ panel\ must\ be\ generated=Type of module config class for which a custom panel must be generated +UI\ Class=UI Class +Fully\ qualified\ name\ of\ class\ implementing\ IModuleAdminPanel=Fully qualified name of class implementing IModuleAdminPanel + +# Auto-extracted property IDs +sensorML=Sensor Ml +lastUpdated=Last Updated +lat=Lat +lon=Lon +alt=Alt +x=X +y=Y +z=Z +heading=Heading +pitch=Pitch +roll=Roll +location=Location +orientation=Orientation +databaseNum=Database Num +enableAccessControl=Enable Access Control +requireAuth=Require Auth +mimeType=Mime Type +className=Class Name +endPoint=End Point +id=Id +description=Description +autoStart=Auto Start +topicName=Topic Name +enablePublish=Enable Publish +enableSubscribe=Enable Subscribe +protocol=Protocol +moduleConfigPath=Module Config Path +moduleDataPath=Module Data Path +commonConfig=Common Config +sensors=Sensors +config=Config +uniqueID=Unique Id +subsystems=Subsystems +dbConfig=Db Config +systemUIDs=System Uids +autoPurgeConfig=Auto Purge Config +minCommitPeriod=Min Commit Period +enabled=Enabled +purgePeriod=Purge Period +maxRecordAge=Max Record Age +users=Users +roles=Roles +allow=Allow +deny=Deny +userID=User Id +name=Name +password=Password +certificate=Certificate +twoFactorSecret=Two Factor Secret +isTwoFactorEnabled=Is Two Factor Enabled +roleID=Role Id +sourceDatabaseId=Source Database Id +includeFilter=Include Filter +excludeFilter=Exclude Filter +httpPort=Http Port +httpsPort=Https Port +staticDocsRootUrl=Static Docs Root Url +staticDocsRootDir=Static Docs Root Dir +servletsRootUrl=Servlets Root Url +proxyBaseUrl=Proxy Base Url +authMethod=Auth Method +keyStorePath=Key Store Path +keyStorePassword=Key Store Password +keyAlias=Key Alias +trustStorePath=Trust Store Path +trustStorePassword=Trust Store Password +xmlConfigFile=Xml Config File +enableCORS=Enable Cors +title=Title +keywords=Keywords +fees=Fees +accessConstraints=Access Constraints +serviceProvider=Service Provider +ogcCapabilitiesInfo=Ogc Capabilities Info +enableHttpGET=Enable Http Get +enableHttpPOST=Enable Http Post +enableSOAP=Enable Soap +connectTimeout=Connect Timeout +reconnectPeriod=Reconnect Period +reconnectAttempts=Reconnect Attempts +deviceID=Device Id +deviceClass=Device Class +remoteHost=Remote Host +localAddress=Local Address +connection=Connection +portName=Port Name +baudRate=Baud Rate +dataBits=Data Bits +stopBits=Stop Bits +parity=Parity +receiveTimeout=Receive Timeout +receiveThreshold=Receive Threshold +remotePort=Remote Port +localPort=Local Port +deviceAddress=Device Address +deviceName=Device Name +serviceUuid=Service Uuid +user=User +enableTLS=Enable Tls +checkReachability=Check Reachability +resourcePath=Resource Path +uid=Uid +securityRole=Security Role +passwordField=Password Field +widgetSet=Widget Set +bundleRepoUrls=Bundle Repo Urls +customPanels=Custom Panels +customForms=Custom Forms +deploymentName=Deployment Name +enableLandingPage=Enable Landing Page +configClass=Config Class +uiClass=Ui Class +moduleClass=Module Class + +# Auto-extracted hardcoded UI strings +testLinks1=Test Links +uniqueID1=Unique ID +foiIDs1=FOI IDs +version1=Version + +Connected\ Systems\ Endpoint=Connected Systems Endpoint +Connected\ Systems\ endpoint\ where\ the\ requests\ are\ sent=Connected Systems endpoint where the requests are sent +Connection\ Settings=Connection Settings +Custom\ connector\ configurations=Custom connector configurations +Custom\ provider\ configurations=Custom provider configurations +Database\ ID=Database ID +Default\ live\ time-out\ for\ all\ offerings,\ unless\ overriden\ by\ custom\ provider\ settings=Default live time-out for all offerings, unless overriden by custom provider settings +Default\ live\ time-out\ for\ new\ offerings\ created\ via\ SOS-T=Default live time-out for new offerings created via SOS-T +Enable\ to\ use\ a\ persistent\ HTTP\ connection\ for\ InsertResult=Enable to use a persistent HTTP connection for InsertResult +Execution\ period\ of\ the\ purge\ policy\ (in\ seconds)=Execution period of the purge policy (in seconds) +Filtered\ view\ to\ select\ systems\ exposed\ as\ read-only\ through\ this\ service=Filtered view to select systems exposed as read-only through this service +Filtered\ view\ to\ select\ systems/datastreams\ to\ register\ with\ Connected\ Systems=Filtered view to select systems/datastreams to register with Connected Systems +Filtered\ view\ to\ select\ systems/datastreams\ to\ register\ with\ remote\ SOS=Filtered view to select systems/datastreams to register with remote SOS +Fixed\ system\ location\ in\ EPSG\ 4979\ (WGS84)\ coordinate\ system=Fixed system location in EPSG 4979 (WGS84) coordinate system +For\ each\ connection\ or\ reconnection\ attempt,\ the\ client\ will\ wait\ for\ the\ remote\ side\ to\ respond\ until\ this\ timeout\ expires\ (in\ ms)=For each connection or reconnection attempt, the client will wait for the remote side to respond until this timeout expires (in ms) +Heading\ (or\ yaw)\ angle\ about\ Z\ axis\ in\ degrees=Heading (or yaw) angle about Z axis in degrees +How\ long\ the\ client\ will\ wait\ after\ connection\ is\ lost\ before\ it\ will\ attempt\ to\ reconnect\ (in\ ms)=How long the client will wait after connection is lost before it will attempt to reconnect (in ms) +ID\ Generator=ID Generator +ID\ of\ database\ module\ used\ for\ persisting\ data\ received\ by\ this\ service.\ If\ none\ is\ provided,\ new\ systems\ registered\ through\ this\ service\ will\ be\ available\ on\ the\ hub,\ but\ with\ no\ persistence\ guarantee\ across\ restarts.=ID of database module used for persisting data received by this service. If none is provided, new systems registered through this service will be available on the hub, but with no persistence guarantee across restarts. +ID\ of\ database\ module\ used\ for\ persisting\ data\ received\ by\ this\ service.\ If\ none\ is\ provided,\ new\ systems\ registered\ through\ this\ service\ will\ be\ available\ on\ the\ hub,\ but\ with\ no\ persistence\ guarantee\ across\ restarts.\ Only\ the\ latest\ observation\ from\ each\ datastream\ will\ be\ available\ and\ older\ observations\ will\ be\ discarded=ID of database module used for persisting data received by this service. If none is provided, new systems registered through this service will be available on the hub, but with no persistence guarantee across restarts. Only the latest observation from each datastream will be available and older observations will be discarded +Individual\ configuration\ of\ sensors\ in\ the\ array\ (will\ override\ common\ configuration)=Individual configuration of sensors in the array (will override common configuration) +List\ of\ observed\ properties\ URI\ to\ make\ available\ as\ outputs=List of observed properties URI to make available as outputs +Mapping\ of\ custom\ formats\ mime-types\ to\ custom\ serializer\ classes=Mapping of custom formats mime-types to custom serializer classes +Mappings\ used\ by\ CURIE\ to\ URI\ resolver=Mappings used by CURIE to URI resolver +Max\ Limit=Max Limit +Max\ Observations\ Returned=Max Observations Returned +Max\ Records\ Returned=Max Records Returned +Max\ delay\ between\ auto-commit\ execution,\ in\ seconds.\ 0\ to\ disable\ time-based\ auto-commit=Max delay between auto-commit execution, in seconds. 0 to disable time-based auto-commit +Maximum\ age\ of\ data\ to\ be\ kept\ in\ storage\ (in\ seconds)=Maximum age of data to be kept in storage (in seconds) +Maximum\ number\ of\ FoI\ IDs\ listed\ in\ capabilities=Maximum number of FoI IDs listed in capabilities +Maximum\ number\ of\ observations\ returned\ \ by\ a\ historical\ GetObservation\ request\ (for\ each\ selected\ offering)=Maximum number of observations returned by a historical GetObservation request (for each selected offering) +Maximum\ number\ of\ records\ in\ upload\ queue\ (used\ to\ compensate\ for\ variable\ bandwidth)=Maximum number of records in upload queue (used to compensate for variable bandwidth) +Maximum\ number\ of\ resources\ returned\ in\ a\ single\ page=Maximum number of resources returned in a single page +Maximum\ number\ of\ result\ records\ returned\ by\ a\ historical\ GetResult\ request=Maximum number of result records returned by a historical GetResult request +Maximum\ number\ of\ stream\ errors\ before\ we\ try\ to\ reconnect\ to\ remote\ server=Maximum number of stream errors before we try to reconnect to remote server +Memory\ cache\ size\ for\ page\ chunks,\ in\ KB=Memory cache size for page chunks, in KB +Metadata\ of\ system\ group\ that\ will\ be\ created\ to\ contain\ all\ procedures/sensors\ registered\ through\ this\ service.\ Only\ sensors\ in\ this\ group\ will\ be\ modifiable\ by\ this\ service=Metadata of system group that will be created to contain all procedures/sensors registered through this service. Only sensors in this group will be modifiable by this service +Metadata\ of\ system\ group\ that\ will\ be\ created\ to\ contain\ all\ systems\ registered\ through\ this\ service.\ Only\ systems\ in\ this\ group\ will\ be\ modifiable\ by\ this\ service=Metadata of system group that will be created to contain all systems registered through this service. Only systems in this group will be modifiable by this service +Method\ used\ to\ generate\ new\ resource\ IDs=Method used to generate new resource IDs +Minimum\ fillrate\ above\ which\ auto\ compact\ operations\ may\ be\ triggered=Minimum fillrate above which auto compact operations may be triggered +Minimum\ period\ between\ database\ commits\ (in\ ms)=Minimum period between database commits (in ms) +Names\ of\ datastreams\ whose\ data\ will\ be\ hidden\ from\ the\ SOS.\ If\ this\ is\ null,\ all\ streams\ produced\ by\ the\ procedure\ are\ exposed=Names of datastreams whose data will be hidden from the SOS. If this is null, all streams produced by the procedure are exposed +Observed\ Properties=Observed Properties +Offering\ URI\ as\ exposed\ in\ capabilities.\ (if\ null,\ the\ procedure\ UID\ is\ used)=Offering URI as exposed in capabilities. (if null, the procedure UID is used) +Offering\ description\ (if\ null,\ it\ will\ be\ auto-generated)=Offering description (if null, it will be auto-generated) +Offering\ name\ (if\ null,\ the\ procedure\ name\ is\ used)=Offering name (if null, the procedure name is used) +Orientation\ as\ Euler\ angles\ in\ NED\ coordinate\ reference\ frame.\nOrder\ of\ rotations\ is\ z-y\u2019-x"\ (in\ rotating\ frame)\ or\ x-y-z\ (in\ fixed\ frame)=Orientation as Euler angles in NED coordinate reference frame.\nOrder of rotations is z-y\u2019-x" (in rotating frame) or x-y-z (in fixed frame) +Password\ for\ the\ key\ store\ (and\ for\ the\ keypair\ within\ the\ keystore).\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ "javax.net.ssl.keyStorePassword"\ system\ property.\ This\ value\ can\ use\ variable\ expansion\ expressions\ of\ the\ form\ "$${name}"\ (for\ environment\ variables\ and\ system\ properties)\ or\ "$${file;/path/to/file}"\ (for\ secret\ file\ contents).=Password for the key store (and for the keypair within the keystore). If this value is blank, will default to using the value of the "javax.net.ssl.keyStorePassword" system property. This value can use variable expansion expressions of the form "$${name}" (for environment variables and system properties) or "$${file;/path/to/file}" (for secret file contents). +Password\ for\ the\ trust\ store.\ Ignored\ if\ client\ certificate\ authentication\ is\ not\ used.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ "javax.net.ssl.trustStorePassword"\ system\ property.\ This\ value\ can\ use\ variable\ expansion\ expressions\ of\ the\ form\ "$${name}"\ (for\ environment\ variables\ and\ system\ properties)\ or\ "$${file;/path/to/file}"\ (for\ secret\ file\ contents).=Password for the trust store. Ignored if client certificate authentication is not used. If this value is blank, will default to using the value of the "javax.net.ssl.trustStorePassword" system property. This value can use variable expansion expressions of the form "$${name}" (for environment variables and system properties) or "$${file;/path/to/file}" (for secret file contents). +Path\ of\ service\ endpoint\ relative\ to\ the\ context\ URL\ (e.g.\ http\://server.net/sensorhub)=Path of service endpoint relative to the context URL (e.g. http://server.net/sensorhub) +Path\ to\ a\ key\ store\ containing\ the\ certificate\ and\ keypair\ that\ this\ server\ will\ present\ to\ clients\ when\ accessed\ over\ HTTPS.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ "javax.net.ssl.keyStore"\ system\ property.\ This\ value\ can\ use\ variable\ expansion\ expressions\ of\ the\ form\ "$${name}"\ (for\ environment\ variables\ and\ system\ properties)\ or\ "$${file;/path/to/file}"\ (for\ secret\ file\ contents).=Path to a key store containing the certificate and keypair that this server will present to clients when accessed over HTTPS. If this value is blank, will default to using the value of the "javax.net.ssl.keyStore" system property. This value can use variable expansion expressions of the form "$${name}" (for environment variables and system properties) or "$${file;/path/to/file}" (for secret file contents). +Path\ to\ database\ file=Path to database file +Path\ to\ external\ config\ file\ (in\ Jetty\ IOC\ XML\ format)=Path to external config file (in Jetty IOC XML format) +Path\ to\ the\ TLS\ trust\ store\ that\ is\ used\ when\ client\ authentication\ is\ required.\ Ignored\ if\ client\ certificate\ authentication\ is\ not\ used.\ Certificates\ in\ this\ file\ designate\ the\ signing\ authorities\ for\ client\ certificates\ that\ will\ be\ trusted.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ "javax.net.ssl.trustStore"\ system\ property.\ This\ value\ can\ use\ variable\ expansion\ expressions\ of\ the\ form\ "$${name}"\ (for\ environment\ variables\ and\ system\ properties)\ or\ "$${file;/path/to/file}"\ (for\ secret\ file\ contents).=Path to the TLS trust store that is used when client authentication is required. Ignored if client certificate authentication is not used. Certificates in this file designate the signing authorities for client certificates that will be trusted. If this value is blank, will default to using the value of the "javax.net.ssl.trustStore" system property. This value can use variable expansion expressions of the form "$${name}" (for environment variables and system properties) or "$${file;/path/to/file}" (for secret file contents). +Port\ number\ to\ connect\ to\ on\ remote\ host\ (0\ to\ automatically\ select\ a\ port)=Port number to connect to on remote host (0 to automatically select a port) +SOS\ Endpoint=SOS Endpoint +SOS\ endpoint\ to\ fetch\ data\ from=SOS endpoint to fetch data from +SOS\ endpoint\ where\ the\ requests\ are\ sent=SOS endpoint where the requests are sent +SPS\ Endpoint=SPS Endpoint +SPS\ endpoint\ to\ send\ commands\ to=SPS endpoint to send commands to +Security\ related\ options=Security related options +Sensor\ UID=Sensor UID +Set\ if\ WebSocket\ protocol\ should\ be\ used\ to\ get\ streaming\ data\ from\ SOS=Set if WebSocket protocol should be used to get streaming data from SOS +Set\ if\ offering\ is\ enabled,\ unset\ if\ disabled=Set if offering is enabled, unset if disabled +Set\ if\ websockets\ protocol\ should\ be\ used\ to\ send\ commands\ to\ SPS=Set if websockets protocol should be used to send commands to SPS +Set\ to\ compact\ the\ database\ file\ when\ the\ database\ module\ is\ stopped\ or\ restarted=Set to compact the database file when the database module is stopped or restarted +Set\ to\ compress\ underlying\ file\ storage=Set to compress underlying file storage +Set\ to\ display\ MVStore\ debug\ info\ when\ database\ is\ closed\ (only\ if\ DEBUG\ log\ is\ also\ enabled)=Set to display MVStore debug info when database is closed (only if DEBUG log is also enabled) +Set\ to\ enable\ spatial\ indexing\ of\ individual\ observations\ sampling\ locations\ (when\ provided)=Set to enable spatial indexing of individual observations sampling locations (when provided) +Set\ to\ open\ the\ database\ as\ read-only=Set to open the database as read-only +Set\ to\ true\ to\ enable\ transactional\ operation\ support=Set to true to enable transactional operation support +Size\ of\ the\ auto-commit\ write\ buffer,\ in\ KB=Size of the auto-commit write buffer, in KB +TCP\ port\ where\ server\ will\ listen\ for\ secure\ HTTP\ (HTTPS)\ connections\ (use\ 0\ to\ disable\ HTTPS).=TCP port where server will listen for secure HTTP (HTTPS) connections (use 0 to disable HTTPS). +TCP\ port\ where\ server\ will\ listen\ for\ unsecure\ HTTP\ connections\ (use\ 0\ to\ disable\ HTTP).=TCP port where server will listen for unsecure HTTP connections (use 0 to disable HTTP). +Time-out\ after\ which\ real-time\ requests\ are\ disabled\ if\ no\ more\ measurements\ are\ received\ (in\ seconds).\ Real-time\ is\ reactivated\ as\ soon\ as\ new\ records\ start\ being\ received\ again=Time-out after which real-time requests are disabled if no more measurements are received (in seconds). Real-time is reactivated as soon as new records start being received again +Time-out\ period\ after\ which\ a\ template\ ID\ reserved\ using\ InsertResultTemplate\ will\ expire\ if\ not\ used\ in\ InsertResult\ requests\ (in\ seconds)=Time-out period after which a template ID reserved using InsertResultTemplate will expire if not used in InsertResult requests (in seconds) +Timeout\ after\ which\ data\ is\ released\ to\ the\ caller\ if\ at\ least\ one\ byte\ was\ received\ (in\ ms)=Timeout after which data is released to the caller if at least one byte was received (in ms) +URI\ Prefix\ Map=URI Prefix Map +Unique\ ID\ (full\ URN\ or\ only\ suffix)\ to\ use\ for\ the\ sensor\ system\ or\ 'auto'\ to\ use\ the\ UUID\ randomly\ generated\ the\ first\ time\ the\ module\ is\ initialized=Unique ID (full URN or only suffix) to use for the sensor system or ''auto'' to use the UUID randomly generated the first time the module is initialized +Unique\ ID\ of\ a\ system\ that\ this\ configuration\ applies\ to.\nCan\ include\ a\ trailing\ wildcard\ '*'\ to\ match\ several\ systems\ at\ once.=Unique ID of a system that this configuration applies to.\nCan include a trailing wildcard ''*'' to match several systems at once. +Unique\ ID\ of\ sensor\ to\ connect\ to\ on\ SOS\ and\ SPS\ servers=Unique ID of sensor to connect to on SOS and SPS servers +Unique\ ID\ of\ system\ that\ this\ configuration\ applies\ to.\nCan\ include\ a\ trailing\ wildcard\ '*'\ to\ match\ several\ systems\ at\ once.=Unique ID of system that this configuration applies to.\nCan include a trailing wildcard ''*'' to match several systems at once. +Use\ WebSockets\ for\ SOS=Use WebSockets for SOS +Use\ WebSockets\ for\ SPS=Use WebSockets for SPS + +Node\ ID=Node ID +Stats\ Frequency\ (min)=Stats Frequency (min) +Database\ URL=Database URL +Database\ Name=Database Name +ID\ Generator=ID Generator +Database\ Number=Database Number +Remote\ Host=Remote Host +Remote\ Port=Remote Port +Lane\ Width\ (m)=Lane Width (m) +Enable\ EML\ Analysis=Enable EML Analysis +Is\ Collimated=Is Collimated +Stream\ Path=Stream Path +Lane\ Options\ Config=Lane Options Config diff --git a/sensorhub-webui-core/src/main/resources/org/sensorhub/ui/i18n/messages_ar.properties b/sensorhub-webui-core/src/main/resources/org/sensorhub/ui/i18n/messages_ar.properties new file mode 100644 index 0000000000..170d1e5802 --- /dev/null +++ b/sensorhub-webui-core/src/main/resources/org/sensorhub/ui/i18n/messages_ar.properties @@ -0,0 +1,543 @@ +app.title=OpenSensorHub +tab.sensors=\u0623\u062c\u0647\u0632\u0629 \u0627\u0644\u0627\u0633\u062a\u0634\u0639\u0627\u0631 +tab.databases=\u0642\u0648\u0627\u0639\u062f \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a +tab.processing=\u0627\u0644\u0645\u0639\u0627\u0644\u062c +tab.services=\u0627\u0644\u062e\u062f\u0645\u0627\u062a +tab.clients=\u0627\u0644\u0639\u0645\u0644\u0627\u0621 +tab.network=\u0627\u0644\u0634\u0628\u0643\u0629 +tab.security=\u0627\u0644\u0623\u0645\u0627\u0646 +action.shutdown=\u0625\u064a\u0642\u0627\u0641 \u0627\u0644\u062a\u0634\u063a\u064a\u0644 +action.logout=\u062a\u0633\u062c\u064a\u0644 \u0627\u0644\u062e\u0631\u0648\u062c +action.save=\u062d\u0641\u0638 +action.addModule=\u0625\u0636\u0627\u0641\u0629 \u0648\u062d\u062f\u0629 \u062c\u062f\u064a\u062f\u0629 +action.addSubmodule=\u0625\u0636\u0627\u0641\u0629 \u0648\u062d\u062f\u0629 \u0641\u0631\u0639\u064a\u0629 +action.removeModule=\u0625\u0632\u0627\u0644\u0629 \u0627\u0644\u0648\u062d\u062f\u0629 +action.removeSubmodule=\u0625\u0632\u0627\u0644\u0629 \u0627\u0644\u0648\u062d\u062f\u0629 \u0627\u0644\u0641\u0631\u0639\u064a\u0629 +action.start=\u0628\u062f\u0621 +action.stop=\u0625\u064a\u0642\u0627\u0641 +action.restart=\u0625\u0639\u0627\u062f\u0629 \u0627\u0644\u062a\u0634\u063a\u064a\u0644 +action.forceInit=\u0641\u0631\u0636 \u0627\u0644\u062a\u0647\u064a\u0626\u0629 +action.selectAll=\u062a\u062d\u062f\u064a\u062f \u0627\u0644\u0643\u0644 +action.deselectAll=\u0625\u0644\u063a\u0627\u0621 \u062a\u062d\u062f\u064a\u062f \u0627\u0644\u0643\u0644 +dialog.shutdown.title=\u062a\u0645 \u0628\u062f\u0621 \u0625\u064a\u0642\u0627\u0641 \u0627\u0644\u062a\u0634\u063a\u064a\u0644... +dialog.shutdown.message=\u0633\u064a\u062a\u0648\u0642\u0641 \u0648\u0627\u062c\u0647\u0629 \u0627\u0644\u0645\u0633\u062a\u062e\u062f\u0645 \u0639\u0646 \u0627\u0644\u0627\u0633\u062a\u062c\u0627\u0628\u0629 +dialog.shutdown.confirm=\u0647\u0644 \u0623\u0646\u062a \u0645\u062a\u0623\u0643\u062f \u0623\u0646\u0643 \u062a\u0631\u064a\u062f \u0625\u064a\u0642\u0627\u0641 \u062a\u0634\u063a\u064a\u0644 \u0645\u0631\u0643\u0632 \u0627\u0644\u0627\u0633\u062a\u0634\u0639\u0627\u0631\u061f +dialog.logout.confirm=\u0647\u0644 \u0623\u0646\u062a \u0645\u062a\u0623\u0643\u062f \u0623\u0646\u0643 \u062a\u0631\u064a\u062f \u062a\u0633\u062c\u064a\u0644 \u0627\u0644\u062e\u0631\u0648\u062c\u061f +dialog.save.confirm=\u0647\u0644 \u0623\u0646\u062a \u0645\u062a\u0623\u0643\u062f \u0623\u0646\u0643 \u062a\u0631\u064a\u062f \u062d\u0641\u0638 \u0627\u0644\u062a\u0643\u0648\u064a\u0646 (\u0648\u0627\u0644\u0643\u062a\u0627\u0628\u0629 \u0641\u0648\u0642 \u0627\u0644\u0633\u0627\u0628\u0642)\u061f +msg.configSaved=\u062a\u0645 \u062d\u0641\u0638 \u062a\u0643\u0648\u064a\u0646 SensorHub +msg.configSaveError=\u0644\u0627 \u064a\u0645\u0643\u0646 \u062d\u0641\u0638 \u0627\u0644\u062a\u0643\u0648\u064a\u0646 +dialog.remove.confirm=\u0647\u0644 \u0623\u0646\u062a \u0645\u062a\u0623\u0643\u062f \u0623\u0646\u0643 \u062a\u0631\u064a\u062f \u0625\u0632\u0627\u0644\u0629 {0}\u061f
\u0633\u062a\u0641\u0642\u062f \u062c\u0645\u064a\u0639 \u0627\u0644\u0625\u0639\u062f\u0627\u062f\u0627\u062a. +msg.removeError=\u0644\u0645 \u064a\u062a\u0645 \u0625\u0632\u0627\u0644\u0629 {0} +msg.startError=\u0644\u0645 \u064a\u062a\u0645 \u0628\u062f\u0621 {0} +msg.stopError=\u0644\u0645 \u064a\u062a\u0645 \u0625\u064a\u0642\u0627\u0641 {0} +msg.restartError=\u0644\u0645 \u064a\u062a\u0645 \u0625\u0639\u0627\u062f\u0629 \u062a\u0634\u063a\u064a\u0644 {0} +msg.reinitError=\u0644\u0645 \u064a\u062a\u0645 \u0625\u0639\u0627\u062f\u0629 \u062a\u0647\u064a\u0626\u0629 {0} +msg.loadError=\u0644\u0627 \u064a\u0645\u0643\u0646 \u062a\u062d\u0645\u064a\u0644 \u0627\u0644\u0648\u062d\u062f\u0629 +msg.addSubmoduleError=\u0644\u0627 \u064a\u0645\u0643\u0646 \u0625\u0636\u0627\u0641\u0629 \u0648\u062d\u062f\u0629 \u0641\u0631\u0639\u064a\u0629 +about.title=\u062d\u0648\u0644 OpenSensorHub +about.desc=\u0645\u0646\u0635\u0629 \u0628\u0631\u0645\u062c\u064a\u0629 \u0644\u0628\u0646\u0627\u0621 \u0634\u0628\u0643\u0627\u062a \u0627\u0644\u0627\u0633\u062a\u0634\u0639\u0627\u0631 \u0627\u0644\u0630\u0643\u064a\u0629 \u0648\u0625\u0646\u062a\u0631\u0646\u062a \u0627\u0644\u0623\u0634\u064a\u0627\u0621 +about.license=\u0645\u0631\u062e\u0635 \u0628\u0645\u0648\u062c\u0628 \u0631\u062e\u0635\u0629 \u0645\u0648\u0632\u064a\u0644\u0627 \u0627\u0644\u0639\u0627\u0645\u0629 v2.0 +about.version=\u0627\u0644\u0625\u0635\u062f\u0627\u0631: +about.build=\u0631\u0642\u0645 \u0627\u0644\u0628\u0646\u0627\u0621: +about.deployment=\u0627\u0633\u0645 \u0627\u0644\u0646\u0634\u0631: +tooltip.shutdown=\u0625\u064a\u0642\u0627\u0641 \u062a\u0634\u063a\u064a\u0644 SensorHub +tooltip.logout=\u062a\u0633\u062c\u064a\u0644 \u0627\u0644\u062e\u0631\u0648\u062c \u0645\u0646 \u0639\u0642\u062f\u0629 OSH +tooltip.save=\u062d\u0641\u0638 \u062a\u0643\u0648\u064a\u0646 SensorHub +dialog.start.confirm=\u0647\u0644 \u0623\u0646\u062a \u0645\u062a\u0623\u0643\u062f \u0623\u0646\u0643 \u062a\u0631\u064a\u062f \u0628\u062f\u0621 {0}\u061f +dialog.stop.confirm=\u0647\u0644 \u0623\u0646\u062a \u0645\u062a\u0623\u0643\u062f \u0623\u0646\u0643 \u062a\u0631\u064a\u062f \u0625\u064a\u0642\u0627\u0641 {0}\u061f +dialog.restart.confirm=\u0647\u0644 \u0623\u0646\u062a \u0645\u062a\u0623\u0643\u062f \u0623\u0646\u0643 \u062a\u0631\u064a\u062f \u0625\u0639\u0627\u062f\u0629 \u062a\u0634\u063a\u064a\u0644 {0}\u061f +dialog.reinit.confirm=\u0647\u0644 \u0623\u0646\u062a \u0645\u062a\u0623\u0643\u062f \u0623\u0646\u0643 \u062a\u0631\u064a\u062f \u0641\u0631\u0636 \u0625\u0639\u0627\u062f\u0629 \u062a\u0647\u064a\u0626\u0629 {0}\u061f +backgroundUpdate=\u062a\u062d\u062f\u064a\u062b \u0627\u0644\u062e\u0644\u0641\u064a\u0629 +sigmaThreshold=\u0639\u062a\u0628\u0629 \u0633\u064a\u062c\u0645\u0627 +nuclideIdentification=\u062a\u062d\u062f\u064a\u062f \u0627\u0644\u0646\u0648\u064a\u062f\u0627\u062a +tamperAlarm=\u0625\u0646\u0630\u0627\u0631 \u0627\u0644\u062a\u0644\u0627\u0639\u0628 +occupancySensor=\u0645\u0633\u062a\u0634\u0639\u0631 \u0627\u0644\u0625\u0634\u063a\u0627\u0644 +stateOfHealth=\u062d\u0627\u0644\u0629 \u0627\u0644\u0635\u062d\u0629 +soh=\u0633\u0648\u0647 +1ScanThisQrCodeWithYourAuthenticatorApp=1. \u0627\u0645\u0633\u062d \u0631\u0645\u0632 \u0627\u0644\u0627\u0633\u062a\u062c\u0627\u0628\u0629 \u0627\u0644\u0633\u0631\u064a\u0639\u0629 \u0636\u0648\u0626\u064a\u064b\u0627 \u0628\u0627\u0633\u062a\u062e\u062f\u0627\u0645 \u062a\u0637\u0628\u064a\u0642 \u0627\u0644\u0645\u0635\u0627\u062f\u0642\u0629 \u0627\u0644\u062e\u0627\u0635 \u0628\u0643: +2EnterThe6digitCodeGeneratedByTheApp=2. \u0623\u062f\u062e\u0644 \u0627\u0644\u0631\u0645\u0632 \u0627\u0644\u0645\u0643\u0648\u0646 \u0645\u0646 6 \u0623\u0631\u0642\u0627\u0645 \u0627\u0644\u0630\u064a \u0623\u0646\u0634\u0623\u0647 \u0627\u0644\u062a\u0637\u0628\u064a\u0642: +orEnterThisSecretKeyManually=\u0623\u0648 \u0623\u062f\u062e\u0644 \u0647\u0630\u0627 \u0627\u0644\u0645\u0641\u062a\u0627\u062d \u0627\u0644\u0633\u0631\u064a \u064a\u062f\u0648\u064a\u064b\u0627: +loadingBundlesInformation=\u062c\u0627\u0631\u064d \u062a\u062d\u0645\u064a\u0644 \u0645\u0639\u0644\u0648\u0645\u0627\u062a \u0627\u0644\u062d\u0632\u0645... +loadingPackageInformation=\u062c\u0627\u0631\u064d \u062a\u062d\u0645\u064a\u0644 \u0645\u0639\u0644\u0648\u0645\u0627\u062a \u0627\u0644\u062d\u0632\u0645\u0629... +arrayComponentNotSupported=\u0645\u0643\u0648\u0646 \u0627\u0644\u0635\u0641\u064a\u0641 \u063a\u064a\u0631 \u0645\u062f\u0639\u0648\u0645 +twofactorAuthentication=\u0627\u0644\u0645\u0635\u0627\u062f\u0642\u0629 \u0627\u0644\u062b\u0646\u0627\u0626\u064a\u0629 +installMorePackages=\u062a\u062b\u0628\u064a\u062a \u0627\u0644\u0645\u0632\u064a\u062f \u0645\u0646 \u0627\u0644\u062d\u0632\u0645... +errorGeneratingQrCode=\u062d\u062f\u062b \u062e\u0637\u0623 \u0623\u062b\u0646\u0627\u0621 \u0625\u0646\u0634\u0627\u0621 \u0631\u0645\u0632 \u0627\u0644\u0627\u0633\u062a\u062c\u0627\u0628\u0629 \u0627\u0644\u0633\u0631\u064a\u0639\u0629 +installMoreModules=\u062a\u062b\u0628\u064a\u062a \u0627\u0644\u0645\u0632\u064a\u062f \u0645\u0646 \u0627\u0644\u0648\u062d\u062f\u0627\u062a... +detailedInstructions=\u062a\u0639\u0644\u064a\u0645\u0627\u062a \u0645\u0641\u0635\u0644\u0629 +availableNetworks=\u0627\u0644\u0634\u0628\u0643\u0627\u062a \u0627\u0644\u0645\u062a\u0627\u062d\u0629 +processParameters=\u0645\u0639\u0644\u0645\u0627\u062a \u0627\u0644\u0639\u0645\u0644\u064a\u0629 +verifyAndEnable=\u0627\u0644\u062a\u062d\u0642\u0642 \u0648\u0627\u0644\u062a\u0645\u0643\u064a\u0646 +dataSourceInfo=\u0645\u0639\u0644\u0648\u0645\u0627\u062a \u0645\u0635\u062f\u0631 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a +detectedDevices=\u0627\u0644\u0623\u062c\u0647\u0632\u0629 \u0627\u0644\u0645\u0643\u062a\u0634\u0641\u0629 +installSelected=\u062a\u062b\u0628\u064a\u062a \u0627\u0644\u0645\u062d\u062f\u062f +databaseContent=\u0645\u062d\u062a\u0648\u0649 \u0642\u0627\u0639\u062f\u0629 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a +itemsPerPage=\u0627\u0644\u0639\u0646\u0627\u0635\u0631 \u0644\u0643\u0644 \u0635\u0641\u062d\u0629: +commandInputs=\u0645\u062f\u062e\u0644\u0627\u062a \u0627\u0644\u0623\u0648\u0627\u0645\u0631 +processInputs=\u0645\u062f\u062e\u0644\u0627\u062a \u0627\u0644\u0639\u0645\u0644\u064a\u0629 +providerClass=\u0641\u0626\u0629 \u0627\u0644\u0645\u0632\u0648\u062f +processName=\u0627\u0633\u0645 \u0627\u0644\u0639\u0645\u0644\u064a\u0629: +configuration=\u0625\u0639\u062f\u0627\u062f\u0627\u062a +applyChanges=\u062a\u0637\u0628\u064a\u0642 \u0627\u0644\u062a\u063a\u064a\u064a\u0631\u0627\u062a +sendCommand=\u0625\u0631\u0633\u0627\u0644 \u0627\u0644\u0623\u0645\u0631 +useAddress=\u0627\u0633\u062a\u062e\u062f\u0645 \u0627\u0644\u0639\u0646\u0648\u0627\u0646 +selectNone=\u062d\u062f\u062f \u0644\u0627 \u0634\u064a\u0621 +timeRange=\u0627\u0644\u0646\u0637\u0627\u0642 \u0627\u0644\u0632\u0645\u0646\u064a: +permissions=\u0627\u0644\u0623\u0630\u0648\u0646\u0627\u062a +startScan=\u0627\u0628\u062f\u0623 \u0627\u0644\u0645\u0633\u062d +noReadme=\u0644\u0627 \u064a\u0648\u062c\u062f \u0645\u0644\u0641 \u062a\u0645\u0647\u064a\u062f\u064a +stopScan=\u0625\u064a\u0642\u0627\u0641 \u0627\u0644\u0645\u0633\u062d +reset2fa=\u0625\u0639\u0627\u062f\u0629 \u062a\u0639\u064a\u064a\u0646 2FA +previous=\u0633\u0627\u0628\u0642 +useName=\u0627\u0633\u062a\u062e\u062f\u0645 \u0627\u0644\u0627\u0633\u0645 +outputs=\u0627\u0644\u0646\u0648\u0627\u062a\u062c +refresh=\u064a\u0646\u0639\u0634 +modify=\u064a\u064f\u0639\u062f\u0651\u0650\u0644 +cancel=\u064a\u0644\u063a\u064a +logout=\u062a\u0633\u062c\u064a\u0644 \u0627\u0644\u062e\u0631\u0648\u062c +remove=\u064a\u0632\u064a\u0644 +verify=\u064a\u0624\u0643\u062f +first=\u0623\u0648\u0644\u0627\u064b +login=\u062a\u0633\u062c\u064a\u0644 \u0627\u0644\u062f\u062e\u0648\u0644 +last=\u0622\u062e\u0631 +view=\u0645\u0646\u0638\u0631 +next=\u0627\u0644\u062a\u0627\u0644\u064a +stop=\u0642\u0641 +add=\u064a\u0636\u064a\u0641 +ui.empty=< +ok=\u0646\u0639\u0645 +1ScanThisQrCodeWithYourAuthenticatorApp1=1. \u0627\u0645\u0633\u062d \u0631\u0645\u0632 \u0627\u0644\u0627\u0633\u062a\u062c\u0627\u0628\u0629 \u0627\u0644\u0633\u0631\u064a\u0639\u0629 \u0636\u0648\u0626\u064a\u064b\u0627 \u0628\u0627\u0633\u062a\u062e\u062f\u0627\u0645 \u062a\u0637\u0628\u064a\u0642 \u0627\u0644\u0645\u0635\u0627\u062f\u0642\u0629 \u0627\u0644\u062e\u0627\u0635 \u0628\u0643: +2EnterThe6digitCodeGeneratedByTheApp1=2. \u0623\u062f\u062e\u0644 \u0627\u0644\u0631\u0645\u0632 \u0627\u0644\u0645\u0643\u0648\u0646 \u0645\u0646 6 \u0623\u0631\u0642\u0627\u0645 \u0627\u0644\u0630\u064a \u0623\u0646\u0634\u0623\u0647 \u0627\u0644\u062a\u0637\u0628\u064a\u0642: +orEnterThisSecretKeyManually1=\u0623\u0648 \u0623\u062f\u062e\u0644 \u0647\u0630\u0627 \u0627\u0644\u0645\u0641\u062a\u0627\u062d \u0627\u0644\u0633\u0631\u064a \u064a\u062f\u0648\u064a\u064b\u0627: +loadingPackageInformation1=\u062c\u0627\u0631\u064d \u062a\u062d\u0645\u064a\u0644 \u0645\u0639\u0644\u0648\u0645\u0627\u062a \u0627\u0644\u062d\u0632\u0645\u0629... +loadingBundlesInformation1=\u062c\u0627\u0631\u064d \u062a\u062d\u0645\u064a\u0644 \u0645\u0639\u0644\u0648\u0645\u0627\u062a \u0627\u0644\u062d\u0632\u0645... +arrayComponentNotSupported1=\u0645\u0643\u0648\u0646 \u0627\u0644\u0635\u0641\u064a\u0641 \u063a\u064a\u0631 \u0645\u062f\u0639\u0648\u0645 +twofactorAuthentication1=\u0627\u0644\u0645\u0635\u0627\u062f\u0642\u0629 \u0627\u0644\u062b\u0646\u0627\u0626\u064a\u0629 +errorGeneratingQrCode1=\u062d\u062f\u062b \u062e\u0637\u0623 \u0623\u062b\u0646\u0627\u0621 \u0625\u0646\u0634\u0627\u0621 \u0631\u0645\u0632 \u0627\u0644\u0627\u0633\u062a\u062c\u0627\u0628\u0629 \u0627\u0644\u0633\u0631\u064a\u0639\u0629 +installMorePackages1=\u062a\u062b\u0628\u064a\u062a \u0627\u0644\u0645\u0632\u064a\u062f \u0645\u0646 \u0627\u0644\u062d\u0632\u0645... +installMoreModules1=\u062a\u062b\u0628\u064a\u062a \u0627\u0644\u0645\u0632\u064a\u062f \u0645\u0646 \u0627\u0644\u0648\u062d\u062f\u0627\u062a... +detailedInstructions1=\u062a\u0639\u0644\u064a\u0645\u0627\u062a \u0645\u0641\u0635\u0644\u0629 +processParameters1=\u0645\u0639\u0644\u0645\u0627\u062a \u0627\u0644\u0639\u0645\u0644\u064a\u0629 +availableNetworks1=\u0627\u0644\u0634\u0628\u0643\u0627\u062a \u0627\u0644\u0645\u062a\u0627\u062d\u0629 +verifyAndEnable1=\u0627\u0644\u062a\u062d\u0642\u0642 \u0648\u0627\u0644\u062a\u0645\u0643\u064a\u0646 +databaseContent1=\u0645\u062d\u062a\u0648\u0649 \u0642\u0627\u0639\u062f\u0629 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a +installSelected1=\u062a\u062b\u0628\u064a\u062a \u0627\u0644\u0645\u062d\u062f\u062f +dataSourceInfo1=\u0645\u0639\u0644\u0648\u0645\u0627\u062a \u0645\u0635\u062f\u0631 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a +detectedDevices1=\u0627\u0644\u0623\u062c\u0647\u0632\u0629 \u0627\u0644\u0645\u0643\u062a\u0634\u0641\u0629 +itemsPerPage1=\u0627\u0644\u0639\u0646\u0627\u0635\u0631 \u0644\u0643\u0644 \u0635\u0641\u062d\u0629: +processInputs1=\u0645\u062f\u062e\u0644\u0627\u062a \u0627\u0644\u0639\u0645\u0644\u064a\u0629 +commandInputs1=\u0645\u062f\u062e\u0644\u0627\u062a \u0627\u0644\u0623\u0648\u0627\u0645\u0631 +providerClass1=\u0641\u0626\u0629 \u0627\u0644\u0645\u0632\u0648\u062f +configuration1=\u0625\u0639\u062f\u0627\u062f\u0627\u062a +processName1=\u0627\u0633\u0645 \u0627\u0644\u0639\u0645\u0644\u064a\u0629: +applyChanges1=\u062a\u0637\u0628\u064a\u0642 \u0627\u0644\u062a\u063a\u064a\u064a\u0631\u0627\u062a +sendCommand1=\u0625\u0631\u0633\u0627\u0644 \u0627\u0644\u0623\u0645\u0631 +timeRange1=\u0627\u0644\u0646\u0637\u0627\u0642 \u0627\u0644\u0632\u0645\u0646\u064a: +useAddress1=\u0627\u0633\u062a\u062e\u062f\u0645 \u0627\u0644\u0639\u0646\u0648\u0627\u0646 +permissions1=\u0627\u0644\u0623\u0630\u0648\u0646\u0627\u062a +selectNone1=\u062d\u062f\u062f \u0644\u0627 \u0634\u064a\u0621 +startScan1=\u0627\u0628\u062f\u0623 \u0627\u0644\u0645\u0633\u062d +noReadme1=\u0644\u0627 \u064a\u0648\u062c\u062f \u0645\u0644\u0641 \u062a\u0645\u0647\u064a\u062f\u064a +reset2fa1=\u0625\u0639\u0627\u062f\u0629 \u062a\u0639\u064a\u064a\u0646 2FA +stopScan1=\u0625\u064a\u0642\u0627\u0641 \u0627\u0644\u0645\u0633\u062d +useName1=\u0627\u0633\u062a\u062e\u062f\u0645 \u0627\u0644\u0627\u0633\u0645 +previous1=\u0633\u0627\u0628\u0642 +refresh1=\u064a\u0646\u0639\u0634 +outputs1=\u0627\u0644\u0646\u0648\u0627\u062a\u062c +cancel1=\u064a\u0644\u063a\u064a +logout1=\u062a\u0633\u062c\u064a\u0644 \u0627\u0644\u062e\u0631\u0648\u062c +modify1=\u064a\u064f\u0639\u062f\u0651\u0650\u0644 +remove1=\u064a\u0632\u064a\u0644 +verify1=\u064a\u0624\u0643\u062f +first1=\u0623\u0648\u0644\u0627\u064b +login1=\u062a\u0633\u062c\u064a\u0644 \u0627\u0644\u062f\u062e\u0648\u0644 +view1=\u0645\u0646\u0638\u0631 +stop1=\u0642\u0641 +next1=\u0627\u0644\u062a\u0627\u0644\u064a +last1=\u0622\u062e\u0631 +add1=\u064a\u0636\u064a\u0641 +last2=>> +first2=<< +ok1=\u0646\u0639\u0645 +next2=> +previous2=< + +pleaseEnterAUserIDFirst1=\u0627\u0644\u0631\u062c\u0627\u0621 \u0625\u062f\u062e\u0627\u0644 \u0645\u0639\u0631\u0641 \u0627\u0644\u0645\u0633\u062a\u062e\u062f\u0645 \u0623\u0648\u0644\u0627\u064b +reset2FA1=\u0625\u0639\u0627\u062f\u0629 \u062a\u0639\u064a\u064a\u0646 2FA +enable2FA1=\u062a\u0645\u0643\u064a\u0646 2FA +twoFAEnabledSuccessfully1=\u062a\u0645 \u062a\u0645\u0643\u064a\u0646 \u0627\u0644\u0645\u0635\u0627\u062f\u0642\u0629 \u0627\u0644\u062b\u0646\u0627\u0626\u064a\u0629 (2FA) \u0628\u0646\u062c\u0627\u062d +invalidCode1=\u0631\u0645\u0632 \u063a\u064a\u0631 \u0635\u0627\u0644\u062d +allowedAndDeniedPermissionsForUsersWithThisRole1=\u0627\u0644\u0623\u0630\u0648\u0646\u0627\u062a \u0627\u0644\u0645\u0633\u0645\u0648\u062d \u0628\u0647\u0627 \u0648\u0627\u0644\u0645\u0631\u0641\u0648\u0636\u0629 \u0644\u0644\u0645\u0633\u062a\u062e\u062f\u0645\u064a\u0646 \u0627\u0644\u0630\u064a\u0646 \u0644\u062f\u064a\u0647\u0645 \u0647\u0630\u0627 \u0627\u0644\u062f\u0648\u0631 +manualEntry1=\u0627\u0644\u0625\u062f\u062e\u0627\u0644 \u0627\u0644\u064a\u062f\u0648\u064a +toggleAutoRefreshDataOncePerSecond1=\u062a\u0628\u062f\u064a\u0644 \u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u062a\u062d\u062f\u064a\u062b \u0627\u0644\u062a\u0644\u0642\u0627\u0626\u064a \u0645\u0631\u0629 \u0648\u0627\u062d\u062f\u0629 \u0641\u064a \u0627\u0644\u062b\u0627\u0646\u064a\u0629 +lookupSystem1=\u0646\u0638\u0627\u0645 \u0627\u0644\u0628\u062d\u062b +lookupModule1=\u0648\u062d\u062f\u0629 \u0627\u0644\u0628\u062d\u062b +lookupAddress1=\u0639\u0646\u0648\u0627\u0646 \u0627\u0644\u0628\u062d\u062b +showPassword1=\u0625\u0638\u0647\u0627\u0631 \u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631 +showHistogram1=\u0639\u0631\u0636 \u0627\u0644\u0631\u0633\u0645 \u0627\u0644\u0628\u064a\u0627\u0646\u064a +hideHistogram1=\u0625\u062e\u0641\u0627\u0621 \u0627\u0644\u0631\u0633\u0645 \u0627\u0644\u0628\u064a\u0627\u0646\u064a +reloadDataFromDatabase1=\u0625\u0639\u0627\u062f\u0629 \u062a\u062d\u0645\u064a\u0644 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0645\u0646 \u0642\u0627\u0639\u062f\u0629 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a +fois1=\u062d\u0631\u064a\u0629 \u0627\u0644\u0645\u0639\u0644\u0648\u0645\u0627\u062a +username1=\u0627\u0633\u0645 \u0627\u0644\u0645\u0633\u062a\u062e\u062f\u0645 +password1=\u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631 +loginFailed1=\u0641\u0634\u0644 \u062a\u0633\u062c\u064a\u0644 \u0627\u0644\u062f\u062e\u0648\u0644 +invalidUsernameOrPassword1=\u0627\u0633\u0645 \u0627\u0644\u0645\u0633\u062a\u062e\u062f\u0645 \u0623\u0648 \u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631 \u063a\u064a\u0631 \u0635\u0627\u0644\u062d\u0629 +verificationCode1=\u0631\u0645\u0632 \u0627\u0644\u062a\u062d\u0642\u0642 +verificationFailed1=\u0641\u0634\u0644 \u0627\u0644\u062a\u062d\u0642\u0642 +datasource1=\u0645\u0635\u062f\u0631 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a +process1=\u0639\u0645\u0644\u064a\u0629 +logoutFromOshNode1=\u062a\u0633\u062c\u064a\u0644 \u0627\u0644\u062e\u0631\u0648\u062c \u0645\u0646 \u0639\u0642\u062f\u0629 OSH +setParameter1=\u062a\u0639\u064a\u064a\u0646 \u0627\u0644\u0645\u0639\u0644\u0645\u0629 +setupTwoFactorAuthentication1=\u0625\u0639\u062f\u0627\u062f \u0627\u0644\u0645\u0635\u0627\u062f\u0642\u0629 \u0627\u0644\u062b\u0646\u0627\u0626\u064a\u0629 + +action.new_item=\u062c\u062f\u064a\u062f {0} +Lane\ System=\u0646\u0638\u0627\u0645 \u0644\u064a\u0646 +Module\ Class=\u0641\u0626\u0629 \u0627\u0644\u0648\u062d\u062f\u0629 \u0627\u0644\u0646\u0645\u0637\u064a\u0629 +Module\ Name=\u0627\u0633\u0645 \u0627\u0644\u0648\u062d\u062f\u0629 +Module\ ID=\u0645\u0639\u0631\u0641 \u0627\u0644\u0648\u062d\u062f\u0629 +Description=\u0648\u0635\u0641 +SensorML\ URL=\u0639\u0646\u0648\u0627\u0646 URL \u0627\u0644\u062e\u0627\u0635 \u0628\u0640 SensorML +UniqueID=\u0645\u0639\u0631\u0641 \u0641\u0631\u064a\u062f +Last\ Updated=\u0622\u062e\u0631 \u062a\u062d\u062f\u064a\u062b +Auto\ Start=\u0627\u0644\u0628\u062f\u0621 \u0627\u0644\u062a\u0644\u0642\u0627\u0626\u064a +Delete\ Data\ on\ Lane\ Removal=\u062d\u0630\u0641 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0639\u0646\u062f \u0625\u0632\u0627\u0644\u0629 \u0627\u0644\u0645\u0633\u0627\u0631 +Latitude=\u062e\u0637 \u0627\u0644\u0639\u0631\u0636 +Longitude=\u062e\u0637 \u0627\u0644\u0637\u0648\u0644 +Altitude=\u0627\u0631\u062a\u0641\u0627\u0639 +Initial\ RPM\ Config=\u062a\u0643\u0648\u064a\u0646 RPM \u0627\u0644\u0623\u0648\u0644\u064a +Initial\ Camera\ Config=\u0627\u0644\u062a\u0643\u0648\u064a\u0646 \u0627\u0644\u0623\u0648\u0644\u064a \u0644\u0644\u0643\u0627\u0645\u064a\u0631\u0627 +Lane\ Options\ Config=\u062a\u0643\u0648\u064a\u0646 \u062e\u064a\u0627\u0631\u0627\u062a \u0627\u0644\u0645\u0633\u0627\u0631 +tab.general=\u0639\u0627\u0645 +tab.readme=\u0627\u0644\u062a\u0645\u0647\u064a\u062f\u064a +Fixed\ Location=\u0627\u0644\u0645\u0648\u0642\u0639 \u0627\u0644\u062b\u0627\u0628\u062a +Fixed\ Orientation=\u0627\u0644\u062a\u0648\u062c\u0647 \u0627\u0644\u062b\u0627\u0628\u062a +# Auto-extracted DisplayInfo labels and descriptions +URL\ of\ SensorML\ file\ providing\ the\ base\ description\ of\ the\ sensor=\u0639\u0646\u0648\u0627\u0646 URL \u0644\u0645\u0644\u0641 SensorML \u0627\u0644\u0630\u064a \u064a\u0648\u0641\u0631 \u0627\u0644\u0648\u0635\u0641 \u0627\u0644\u0623\u0633\u0627\u0633\u064a \u0644\u0644\u0645\u0633\u062a\u0634\u0639\u0631 +Time\ at\ which\ the\ SensorML\ description\ was\ last\ updated=\u0627\u0644\u0648\u0642\u062a \u0627\u0644\u0630\u064a \u062a\u0645 \u0641\u064a\u0647 \u0622\u062e\u0631 \u062a\u062d\u062f\u064a\u062b \u0644\u0648\u0635\u0641 SensorML +Geodetic\ latitude,\ in\ degrees=\u062e\u0637 \u0627\u0644\u0639\u0631\u0636 \u0627\u0644\u062c\u064a\u0648\u062f\u064a\u0633\u064a\u060c \u0628\u0627\u0644\u062f\u0631\u062c\u0627\u062a +Longitude,\ in\ degrees=\u062e\u0637 \u0627\u0644\u0637\u0648\u0644\u060c \u0628\u0627\u0644\u062f\u0631\u062c\u0627\u062a +Height\ above\ ellipsoid,\ in\ meters=\u0627\u0644\u0627\u0631\u062a\u0641\u0627\u0639 \u0641\u0648\u0642 \u0627\u0644\u0634\u0643\u0644 \u0627\u0644\u0646\u0627\u0642\u0635\u060c \u0628\u0627\u0644\u0623\u0645\u062a\u0627\u0631 +X\ coordinate,\ in\ meters=\u0627\u0644\u0625\u062d\u062f\u0627\u062b\u064a\u0627\u062a X\u060c \u0628\u0627\u0644\u0623\u0645\u062a\u0627\u0631 +Y\ coordinate,\ in\ meters=\u0627\u0644\u0625\u062d\u062f\u0627\u062b\u064a\u0627\u062a Y\u060c \u0628\u0627\u0644\u0623\u0645\u062a\u0627\u0631 +Z\ coordinate,\ in\ meters=\u0627\u0644\u0625\u062d\u062f\u0627\u062b\u064a Z\u060c \u0628\u0627\u0644\u0623\u0645\u062a\u0627\u0631 +Pitch\ angle\ about\ Y\ axis,\ in\ degrees=\u0632\u0627\u0648\u064a\u0629 \u0627\u0644\u0645\u064a\u0644 \u062d\u0648\u0644 \u0627\u0644\u0645\u062d\u0648\u0631 Y \u0628\u0627\u0644\u062f\u0631\u062c\u0627\u062a +Roll\ angle\ about\ X\ axis,\ in\ degrees=\u0632\u0627\u0648\u064a\u0629 \u0627\u0644\u062f\u0648\u0631\u0627\u0646 \u062d\u0648\u0644 \u0627\u0644\u0645\u062d\u0648\u0631 X \u0628\u0627\u0644\u062f\u0631\u062c\u0627\u062a +Location\ in\ EPSG\:4979\ coordinate\ reference\ frame=\u0627\u0644\u0645\u0648\u0642\u0639 \u0641\u064a \u0625\u0637\u0627\u0631 \u0645\u0631\u062c\u0639\u064a \u062a\u0646\u0633\u064a\u0642\u064a EPSG:4979 +Database\ Number=\u0631\u0642\u0645 \u0642\u0627\u0639\u062f\u0629 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a +Numerical\ identifier\ of\ the\ database.\ Each\ database\ that\ should\ be\ exposed\ via\ the\ federated\ database\ API\ must\ have\ a\ unique\ number\ on\ the\ sensor\ hub.\ If\ visibility\ through\ the\ federated\ database\ is\ not\ desired,\ it\ can\ be\ omitted.=\u0627\u0644\u0645\u0639\u0631\u0641 \u0627\u0644\u0631\u0642\u0645\u064a \u0644\u0642\u0627\u0639\u062f\u0629 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a. \u064a\u062c\u0628 \u0623\u0646 \u062a\u062d\u062a\u0648\u064a \u0643\u0644 \u0642\u0627\u0639\u062f\u0629 \u0628\u064a\u0627\u0646\u0627\u062a \u064a\u062c\u0628 \u0639\u0631\u0636\u0647\u0627 \u0639\u0628\u0631 \u0648\u0627\u062c\u0647\u0629 \u0628\u0631\u0645\u062c\u0629 \u062a\u0637\u0628\u064a\u0642\u0627\u062a \u0642\u0627\u0639\u062f\u0629 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u0645\u0648\u062d\u062f\u0629 \u0639\u0644\u0649 \u0631\u0642\u0645 \u0641\u0631\u064a\u062f \u0639\u0644\u0649 \u0645\u0631\u0643\u0632 \u0627\u0644\u0645\u0633\u062a\u0634\u0639\u0631. \u0625\u0630\u0627 \u0643\u0627\u0646\u062a \u0627\u0644\u0631\u0624\u064a\u0629 \u0645\u0646 \u062e\u0644\u0627\u0644 \u0642\u0627\u0639\u062f\u0629 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u0645\u0648\u062d\u062f\u0629 \u063a\u064a\u0631 \u0645\u0631\u063a\u0648\u0628 \u0641\u064a\u0647\u0627\u060c \u0641\u064a\u0645\u0643\u0646 \u062d\u0630\u0641\u0647\u0627. +Enables\ fine-grained\ permission-based\ access\ control\ for\ this\ module=\u062a\u0645\u0643\u064a\u0646 \u0627\u0644\u062a\u062d\u0643\u0645 \u0627\u0644\u062f\u0642\u064a\u0642 \u0641\u064a \u0627\u0644\u0648\u0635\u0648\u0644 \u0627\u0644\u0645\u0633\u062a\u0646\u062f \u0625\u0644\u0649 \u0627\u0644\u0623\u0630\u0648\u0646\u0627\u062a \u0644\u0647\u0630\u0647 \u0627\u0644\u0648\u062d\u062f\u0629 +Require\ Authentication=\u062a\u062a\u0637\u0644\u0628 \u0627\u0644\u0645\u0635\u0627\u062f\u0642\u0629 +Set\ to\ require\ remote\ users\ to\ be\ authentified\ before\ they\ can\ use\ this\ service=\u0642\u0645 \u0628\u0627\u0644\u062a\u0639\u064a\u064a\u0646 \u0644\u0644\u0645\u0637\u0627\u0644\u0628\u0629 \u0628\u0645\u0635\u0627\u062f\u0642\u0629 \u0627\u0644\u0645\u0633\u062a\u062e\u062f\u0645\u064a\u0646 \u0627\u0644\u0628\u0639\u064a\u062f\u064a\u0646 \u0642\u0628\u0644 \u0623\u0646 \u064a\u062a\u0645\u0643\u0646\u0648\u0627 \u0645\u0646 \u0627\u0633\u062a\u062e\u062f\u0627\u0645 \u0647\u0630\u0647 \u0627\u0644\u062e\u062f\u0645\u0629 +Endpoint=\u0646\u0642\u0637\u0629 \u0627\u0644\u0646\u0647\u0627\u064a\u0629 +Unique\ local\ ID\ of\ the\ module=\u0645\u0639\u0631\u0641 \u0645\u062d\u0644\u064a \u0641\u0631\u064a\u062f \u0644\u0644\u0648\u062d\u062f\u0629 +User\ description\ for\ the\ module=\u0648\u0635\u0641 \u0627\u0644\u0645\u0633\u062a\u062e\u062f\u0645 \u0644\u0644\u0648\u062d\u062f\u0629 +Set\ to\ automatically\ start\ the\ module\ when\ it\ is\ loaded=\u0627\u0636\u0628\u0637 \u0644\u0628\u062f\u0621 \u062a\u0634\u063a\u064a\u0644 \u0627\u0644\u0648\u062d\u062f\u0629 \u062a\u0644\u0642\u0627\u0626\u064a\u064b\u0627 \u0639\u0646\u062f \u062a\u062d\u0645\u064a\u0644\u0647\u0627 +Module\ implementation\ class=\u0641\u0626\u0629 \u062a\u0646\u0641\u064a\u0630 \u0627\u0644\u0648\u062d\u062f\u0629 \u0627\u0644\u0646\u0645\u0637\u064a\u0629 +User\ chosen\ name\ for\ the\ module=\u0627\u0644\u0627\u0633\u0645 \u0627\u0644\u0630\u064a \u0627\u062e\u062a\u0627\u0631\u0647 \u0627\u0644\u0645\u0633\u062a\u062e\u062f\u0645 \u0644\u0644\u0648\u062d\u062f\u0629 +Name\ of\ topic/queue\ to\ use=\u0627\u0633\u0645 \u0627\u0644\u0645\u0648\u0636\u0648\u0639/\u0642\u0627\u0626\u0645\u0629 \u0627\u0644\u0627\u0646\u062a\u0638\u0627\u0631 \u0627\u0644\u0645\u0631\u0627\u062f \u0627\u0633\u062a\u062e\u062f\u0627\u0645\u0647\u0627 +Enable/disable\ writing\ to\ queue=\u062a\u0645\u0643\u064a\u0646/\u062a\u0639\u0637\u064a\u0644 \u0627\u0644\u0643\u062a\u0627\u0628\u0629 \u0625\u0644\u0649 \u0642\u0627\u0626\u0645\u0629 \u0627\u0644\u0627\u0646\u062a\u0638\u0627\u0631 +Enable/disable\ reading\ from\ queue=\u062a\u0645\u0643\u064a\u0646/\u062a\u0639\u0637\u064a\u0644 \u0627\u0644\u0642\u0631\u0627\u0621\u0629 \u0645\u0646 \u0642\u0627\u0626\u0645\u0629 \u0627\u0644\u0627\u0646\u062a\u0638\u0627\u0631 +Protocol\ Options=\u062e\u064a\u0627\u0631\u0627\u062a \u0627\u0644\u0628\u0631\u0648\u062a\u0648\u0643\u0648\u0644 +Common\ Configuration=\u0627\u0644\u062a\u0643\u0648\u064a\u0646 \u0627\u0644\u0645\u0634\u062a\u0631\u0643 +Common\ configuration\ for\ sensors\ in\ the\ array=\u0627\u0644\u062a\u0643\u0648\u064a\u0646 \u0627\u0644\u0645\u0634\u062a\u0631\u0643 \u0644\u0623\u062c\u0647\u0632\u0629 \u0627\u0644\u0627\u0633\u062a\u0634\u0639\u0627\u0631 \u0641\u064a \u0627\u0644\u0645\u0635\u0641\u0648\u0641\u0629 +Sensors\ Configuration=\u062a\u0643\u0648\u064a\u0646 \u0623\u062c\u0647\u0632\u0629 \u0627\u0644\u0627\u0633\u062a\u0634\u0639\u0627\u0631 +Subsystem\ Config=\u062a\u0643\u0648\u064a\u0646 \u0627\u0644\u0646\u0638\u0627\u0645 \u0627\u0644\u0641\u0631\u0639\u064a +Configuration\ of\ the\ subsystem=\u062a\u0643\u0648\u064a\u0646 \u0627\u0644\u0646\u0638\u0627\u0645 \u0627\u0644\u0641\u0631\u0639\u064a +Relative\ Location=\u0627\u0644\u0645\u0648\u0642\u0639 \u0627\u0644\u0646\u0633\u0628\u064a +Location\ of\ this\ subsystem\ relative\ to\ the\ main\ system\ or\ platform\ reference\ frame=\u0645\u0648\u0642\u0639 \u0647\u0630\u0627 \u0627\u0644\u0646\u0638\u0627\u0645 \u0627\u0644\u0641\u0631\u0639\u064a \u0628\u0627\u0644\u0646\u0633\u0628\u0629 \u0644\u0644\u0646\u0638\u0627\u0645 \u0627\u0644\u0631\u0626\u064a\u0633\u064a \u0623\u0648 \u0627\u0644\u0625\u0637\u0627\u0631 \u0627\u0644\u0645\u0631\u062c\u0639\u064a \u0644\u0644\u0646\u0638\u0627\u0645 \u0627\u0644\u0623\u0633\u0627\u0633\u064a +Relative\ Orientation=\u0627\u0644\u062a\u0648\u062c\u0647 \u0627\u0644\u0646\u0633\u0628\u064a +Orientation\ of\ this\ subsystem\ relative\ to\ the\ main\ system\ or\ platform\ reference\ frame=\u0627\u062a\u062c\u0627\u0647 \u0647\u0630\u0627 \u0627\u0644\u0646\u0638\u0627\u0645 \u0627\u0644\u0641\u0631\u0639\u064a \u0628\u0627\u0644\u0646\u0633\u0628\u0629 \u0644\u0644\u0646\u0638\u0627\u0645 \u0627\u0644\u0631\u0626\u064a\u0633\u064a \u0623\u0648 \u0627\u0644\u0625\u0637\u0627\u0631 \u0627\u0644\u0645\u0631\u062c\u0639\u064a \u0644\u0644\u0646\u0638\u0627\u0645 \u0627\u0644\u0623\u0633\u0627\u0633\u064a +Fixed\ system\ orientation\ in\ the\ local\ NED\ reference\ frame=\u062a\u0645 \u0625\u0635\u0644\u0627\u062d \u0627\u062a\u062c\u0627\u0647 \u0627\u0644\u0646\u0638\u0627\u0645 \u0641\u064a \u0627\u0644\u0625\u0637\u0627\u0631 \u0627\u0644\u0645\u0631\u062c\u0639\u064a \u0627\u0644\u0645\u062d\u0644\u064a \u0644\u0640 NED +Subsystems=\u0627\u0644\u0623\u0646\u0638\u0645\u0629 \u0627\u0644\u0641\u0631\u0639\u064a\u0629 +Configuration\ of\ components\ of\ this\ sensor\ system=\u062a\u0643\u0648\u064a\u0646 \u0645\u0643\u0648\u0646\u0627\u062a \u0646\u0638\u0627\u0645 \u0627\u0644\u0627\u0633\u062a\u0634\u0639\u0627\u0631 \u0647\u0630\u0627 +Database\ Config=\u062a\u0643\u0648\u064a\u0646 \u0642\u0627\u0639\u062f\u0629 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a +Configuration\ of\ underlying\ database=\u062a\u0643\u0648\u064a\u0646 \u0642\u0627\u0639\u062f\u0629 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u0623\u0633\u0627\u0633\u064a\u0629 +System\ UIDs=\u0645\u0639\u0631\u0641\u0627\u062a \u0627\u0644\u0646\u0638\u0627\u0645 +Unique\ IDs\ of\ system\ drivers\ handled\ by\ this\ database=\u0627\u0644\u0645\u0639\u0631\u0641\u0627\u062a \u0627\u0644\u0641\u0631\u064a\u062f\u0629 \u0644\u0628\u0631\u0627\u0645\u062c \u062a\u0634\u063a\u064a\u0644 \u0627\u0644\u0646\u0638\u0627\u0645 \u0627\u0644\u062a\u064a \u062a\u0639\u0627\u0644\u062c\u0647\u0627 \u0642\u0627\u0639\u062f\u0629 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0647\u0630\u0647 +Automatic\ Purge\ Policy=\u0633\u064a\u0627\u0633\u0629 \u0627\u0644\u062a\u0637\u0647\u064a\u0631 \u0627\u0644\u062a\u0644\u0642\u0627\u0626\u064a +Policy\ for\ automatically\ purging\ historical\ data=\u0633\u064a\u0627\u0633\u0629 \u0627\u0644\u062a\u0637\u0647\u064a\u0631 \u0627\u0644\u062a\u0644\u0642\u0627\u0626\u064a \u0644\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u062a\u0627\u0631\u064a\u062e\u064a\u0629 +Uncheck\ to\ disable\ auto-purge\ temporarily=\u0642\u0645 \u0628\u0625\u0644\u063a\u0627\u0621 \u0627\u0644\u062a\u062d\u062f\u064a\u062f \u0644\u062a\u0639\u0637\u064a\u0644 \u0627\u0644\u062a\u0637\u0647\u064a\u0631 \u0627\u0644\u062a\u0644\u0642\u0627\u0626\u064a \u0645\u0624\u0642\u062a\u064b\u0627 +Purge\ Execution\ Period=\u0641\u062a\u0631\u0629 \u062a\u0646\u0641\u064a\u0630 \u0627\u0644\u062a\u0637\u0647\u064a\u0631 +Unique\ IDs\ of\ system\ drivers\ to\ purge=\u0627\u0644\u0645\u0639\u0631\u0641\u0627\u062a \u0627\u0644\u0641\u0631\u064a\u062f\u0629 \u0644\u0628\u0631\u0627\u0645\u062c \u062a\u0634\u063a\u064a\u0644 \u0627\u0644\u0646\u0638\u0627\u0645 \u0627\u0644\u0645\u0631\u0627\u062f \u062a\u0637\u0647\u064a\u0631\u0647\u0627 +Max\ Record\ Age=\u0627\u0644\u062d\u062f \u0627\u0644\u0623\u0642\u0635\u0649 \u0644\u0639\u0645\u0631 \u0627\u0644\u062a\u0633\u062c\u064a\u0644 +SensorML\ File=\u0645\u0644\u0641 \u0633\u064a\u0646\u0633\u0648\u0631\u0645\u0644 +Path\ of\ SensorML\ description\ of\ the\ process=\u0645\u0633\u0627\u0631 \u0648\u0635\u0641 SensorML \u0644\u0644\u0639\u0645\u0644\u064a\u0629 +List\ of\ users\ allowed\ access\ to\ this\ system=\u0642\u0627\u0626\u0645\u0629 \u0627\u0644\u0645\u0633\u062a\u062e\u062f\u0645\u064a\u0646 \u0627\u0644\u0645\u0633\u0645\u0648\u062d \u0644\u0647\u0645 \u0628\u0627\u0644\u0648\u0635\u0648\u0644 \u0625\u0644\u0649 \u0647\u0630\u0627 \u0627\u0644\u0646\u0638\u0627\u0645 +List\ of\ security\ roles=\u0642\u0627\u0626\u0645\u0629 \u0627\u0644\u0623\u062f\u0648\u0627\u0631 \u0627\u0644\u0623\u0645\u0646\u064a\u0629 +User\ ID=\u0645\u0639\u0631\u0641 \u0627\u0644\u0645\u0633\u062a\u062e\u062f\u0645 +Role\ ID=\u0645\u0639\u0631\u0641 \u0627\u0644\u062f\u0648\u0631 +Source\ Database\ ID=\u0645\u0639\u0631\u0641 \u0642\u0627\u0639\u062f\u0629 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u0645\u0635\u062f\u0631 +ID\ of\ database\ module\ to\ read\ data\ from\ (Federated\ database\ will\ be\ used\ if\ not\ set=\u0645\u0639\u0631\u0641 \u0648\u062d\u062f\u0629 \u0642\u0627\u0639\u062f\u0629 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u0645\u0631\u0627\u062f \u0642\u0631\u0627\u0621\u0629 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0645\u0646\u0647\u0627 (\u0633\u064a\u062a\u0645 \u0627\u0633\u062a\u062e\u062f\u0627\u0645 \u0642\u0627\u0639\u062f\u0629 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u0645\u0648\u062d\u062f\u0629 \u0625\u0630\u0627 \u0644\u0645 \u064a\u062a\u0645 \u062a\u0639\u064a\u064a\u0646\u0647\u0627 +HTTP\ Port=\u0645\u0646\u0641\u0630 HTTP +HTTPS\ Port=\u0645\u0646\u0641\u0630 HTTPS +Root\ URL\ where\ static\ web\ content\ will\ be\ served.=\u0639\u0646\u0648\u0627\u0646 URL \u0627\u0644\u062c\u0630\u0631 \u062d\u064a\u062b \u0633\u064a\u062a\u0645 \u062a\u0642\u062f\u064a\u0645 \u0645\u062d\u062a\u0648\u0649 \u0627\u0644\u0648\u064a\u0628 \u0627\u0644\u062b\u0627\u0628\u062a. +Directory\ where\ static\ web\ content\ is\ located.=\u0627\u0644\u062f\u0644\u064a\u0644 \u0627\u0644\u0630\u064a \u064a\u0648\u062c\u062f \u0628\u0647 \u0645\u062d\u062a\u0648\u0649 \u0627\u0644\u0648\u064a\u0628 \u0627\u0644\u062b\u0627\u0628\u062a. +Root\ URL\ where\ the\ server\ will\ accept\ requests.\ This\ will\ be\ the\ prefix\ to\ all\ servlet\ URLs.=\u0639\u0646\u0648\u0627\u0646 URL \u0627\u0644\u062c\u0630\u0631 \u062d\u064a\u062b \u0633\u064a\u0642\u0628\u0644 \u0627\u0644\u062e\u0627\u062f\u0645 \u0627\u0644\u0637\u0644\u0628\u0627\u062a. \u0633\u062a\u0643\u0648\u0646 \u0647\u0630\u0647 \u0647\u064a \u0627\u0644\u0628\u0627\u062f\u0626\u0629 \u0644\u062c\u0645\u064a\u0639 \u0639\u0646\u0627\u0648\u064a\u0646 URL \u0627\u0644\u062e\u0627\u0635\u0629 \u0628\u0640 servlet. +Proxy\ Base\ URL=\u0639\u0646\u0648\u0627\u0646 URL \u0644\u0642\u0627\u0639\u062f\u0629 \u0627\u0644\u0648\u0643\u064a\u0644 +Public\ URL\ as\ viewed\ from\ the\ outside\ when\ requests\ transit\ through\ a\ proxy\ server.=\u0639\u0646\u0648\u0627\u0646 URL \u0627\u0644\u0639\u0627\u0645 \u0643\u0645\u0627 \u064a\u062a\u0645 \u0639\u0631\u0636\u0647 \u0645\u0646 \u0627\u0644\u062e\u0627\u0631\u062c \u0639\u0646\u062f \u0645\u0631\u0648\u0631 \u0627\u0644\u0637\u0644\u0628\u0627\u062a \u0639\u0628\u0631 \u062e\u0627\u062f\u0645 \u0648\u0643\u064a\u0644. +Authentication\ Method=\u0637\u0631\u064a\u0642\u0629 \u0627\u0644\u0645\u0635\u0627\u062f\u0642\u0629 +Method\ used\ to\ authenticate\ users\ on\ this\ server=\u0627\u0644\u0637\u0631\u064a\u0642\u0629 \u0627\u0644\u0645\u0633\u062a\u062e\u062f\u0645\u0629 \u0644\u0645\u0635\u0627\u062f\u0642\u0629 \u0627\u0644\u0645\u0633\u062a\u062e\u062f\u0645\u064a\u0646 \u0639\u0644\u0649 \u0647\u0630\u0627 \u0627\u0644\u062e\u0627\u062f\u0645 +Path\ to\ a\ key\ store\ containing\ the\ certificate\ and\ keypair\ that\ this\ server\ will\ present\ to\ clients\ when\ accessed\ over\ HTTPS.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ \"javax.net.ssl.keyStore\"\ system\ property.\=Path to a key store containing the certificate and keypair that this server will present to clients when accessed over HTTPS. If this value is blank, will default to using the value of the \"javax.net.ssl.keyStore\" system property. +Alias\ for\ the\ public/private\ keypair\ within\ the\ key\ store\ that\ will\ be\ used\ to\ identify\ this\ server.=\u0627\u0644\u0627\u0633\u0645 \u0627\u0644\u0645\u0633\u062a\u0639\u0627\u0631 \u0644\u0632\u0648\u062c \u0627\u0644\u0645\u0641\u0627\u062a\u064a\u062d \u0627\u0644\u0639\u0627\u0645/\u0627\u0644\u062e\u0627\u0635 \u062f\u0627\u062e\u0644 \u0645\u062e\u0632\u0646 \u0627\u0644\u0645\u0641\u0627\u062a\u064a\u062d \u0627\u0644\u0630\u064a \u0633\u064a\u062a\u0645 \u0627\u0633\u062a\u062e\u062f\u0627\u0645\u0647 \u0644\u062a\u0639\u0631\u064a\u0641 \u0647\u0630\u0627 \u0627\u0644\u062e\u0627\u062f\u0645. +Path\ to\ the\ TLS\ trust\ store\ that\ is\ used\ when\ client\ authentication\ is\ required.\ Ignored\ if\ client\ certificate\ authentication\ is\ not\ used.\ Certificates\ in\ this\ file\ designate\ the\ signing\ authorities\ for\ client\ certificates\ that\ will\ be\ trusted.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ \"javax.net.ssl.trustStore\"\ system\ property.\=Path to the TLS trust store that is used when client authentication is required. Ignored if client certificate authentication is not used. Certificates in this file designate the signing authorities for client certificates that will be trusted. If this value is blank, will default to using the value of the \"javax.net.ssl.trustStore\" system property. +Password\ for\ the\ trust\ store.\ Ignored\ if\ client\ certificate\ authentication\ is\ not\ used.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ \"javax.net.ssl.trustStorePassword\"\ system\ property.\=Password for the trust store. Ignored if client certificate authentication is not used. If this value is blank, will default to using the value of the \"javax.net.ssl.trustStorePassword\" system property. +Enable\ CORS=\u062a\u0645\u0643\u064a\u0646 \u0643\u0648\u0631\u0633 +Enable\ generation\ of\ CORS\ headers\ to\ allow\ cross-domain\ requests\ from\ browsers=\u062a\u0645\u0643\u064a\u0646 \u0625\u0646\u0634\u0627\u0621 \u0631\u0624\u0648\u0633 CORS \u0644\u0644\u0633\u0645\u0627\u062d \u0628\u0627\u0644\u0637\u0644\u0628\u0627\u062a \u0639\u0628\u0631 \u0627\u0644\u0646\u0637\u0627\u0642 \u0645\u0646 \u0627\u0644\u0645\u062a\u0635\u0641\u062d\u0627\u062a +Capabilities\ Info=\u0645\u0639\u0644\u0648\u0645\u0627\u062a \u0627\u0644\u0642\u062f\u0631\u0627\u062a +Information\ included\ in\ the\ service\ capabilities\ document=\u0627\u0644\u0645\u0639\u0644\u0648\u0645\u0627\u062a \u0627\u0644\u0645\u0636\u0645\u0646\u0629 \u0641\u064a \u0648\u062b\u064a\u0642\u0629 \u0642\u062f\u0631\u0627\u062a \u0627\u0644\u062e\u062f\u0645\u0629 +Enable\ HTTP\ GET=\u062a\u0645\u0643\u064a\u0646 HTTP GET +Enables/disables\ HTTP\ GET\ bindings\ on\ operations\ that\ support\ it=\u062a\u0645\u0643\u064a\u0646/\u062a\u0639\u0637\u064a\u0644 \u0631\u0648\u0627\u0628\u0637 HTTP GET \u0639\u0644\u0649 \u0627\u0644\u0639\u0645\u0644\u064a\u0627\u062a \u0627\u0644\u062a\u064a \u062a\u062f\u0639\u0645\u0647\u0627 +Enable\ HTTP\ POST=\u062a\u0645\u0643\u064a\u0646 HTTP POST +Enables/disables\ HTTP\ POST\ bindings\ on\ operations\ that\ support\ it=\u062a\u0645\u0643\u064a\u0646/\u062a\u0639\u0637\u064a\u0644 \u0631\u0648\u0627\u0628\u0637 HTTP POST \u0639\u0644\u0649 \u0627\u0644\u0639\u0645\u0644\u064a\u0627\u062a \u0627\u0644\u062a\u064a \u062a\u062f\u0639\u0645\u0647\u0627 +Enable\ HTTP\ SOAP=\u062a\u0645\u0643\u064a\u0646 HTTP SOAP +Enables/disables\ HTTP\ SOAP\ bindings\ on\ operations\ that\ support\ it=\u062a\u0645\u0643\u064a\u0646/\u062a\u0639\u0637\u064a\u0644 \u0631\u0648\u0627\u0628\u0637 HTTP SOAP \u0639\u0644\u0649 \u0627\u0644\u0639\u0645\u0644\u064a\u0627\u062a \u0627\u0644\u062a\u064a \u062a\u062f\u0639\u0645\u0647\u0627 +Connection\ Timeout=\u0645\u0647\u0644\u0629 \u0627\u0644\u0627\u062a\u0635\u0627\u0644 +Reconnect\ Period=\u0641\u062a\u0631\u0629 \u0625\u0639\u0627\u062f\u0629 \u0627\u0644\u0627\u062a\u0635\u0627\u0644 +Max\ Reconnect\ Attempts=\u0627\u0644\u062d\u062f \u0627\u0644\u0623\u0642\u0635\u0649 \u0644\u0645\u062d\u0627\u0648\u0644\u0627\u062a \u0625\u0639\u0627\u062f\u0629 \u0627\u0644\u0627\u062a\u0635\u0627\u0644 +Maximum\ number\ of\ times\ the\ client\ will\ attempt\ to\ reconnect\ when\ the\ connection\ is\ not\ available\ or\ lost.\ A\ negative\ value\ means\ that\ there\ is\ no\ limit\ to\ the\ number\ of\ reconnection\ attempts.\ Zero\ means\ not\ to\ attempt\ reconnection.=\u0627\u0644\u062d\u062f \u0627\u0644\u0623\u0642\u0635\u0649 \u0644\u0639\u062f\u062f \u0627\u0644\u0645\u0631\u0627\u062a \u0627\u0644\u062a\u064a \u0633\u064a\u062d\u0627\u0648\u0644 \u0641\u064a\u0647\u0627 \u0627\u0644\u0639\u0645\u064a\u0644 \u0625\u0639\u0627\u062f\u0629 \u0627\u0644\u0627\u062a\u0635\u0627\u0644 \u0639\u0646\u062f\u0645\u0627 \u0644\u0627 \u064a\u0643\u0648\u0646 \u0627\u0644\u0627\u062a\u0635\u0627\u0644 \u0645\u062a\u0627\u062d\u064b\u0627 \u0623\u0648 \u0645\u0641\u0642\u0648\u062f\u064b\u0627. \u062a\u0639\u0646\u064a \u0627\u0644\u0642\u064a\u0645\u0629 \u0627\u0644\u0633\u0627\u0644\u0628\u0629 \u0623\u0646\u0647 \u0644\u0627 \u064a\u0648\u062c\u062f \u062d\u062f \u0644\u0639\u062f\u062f \u0645\u062d\u0627\u0648\u0644\u0627\u062a \u0625\u0639\u0627\u062f\u0629 \u0627\u0644\u0627\u062a\u0635\u0627\u0644. \u0627\u0644\u0635\u0641\u0631 \u064a\u0639\u0646\u064a \u0639\u062f\u0645 \u0645\u062d\u0627\u0648\u0644\u0629 \u0625\u0639\u0627\u062f\u0629 \u0627\u0644\u0627\u062a\u0635\u0627\u0644. +IP\ or\ DNS\ name\ of\ remote\ host=\u0627\u0633\u0645 IP \u0623\u0648 DNS \u0644\u0644\u0645\u0636\u064a\u0641 \u0627\u0644\u0628\u0639\u064a\u062f +IP\ of\ local\ network\ interface\ to\ bind\ to\ or\ 'AUTO'\ to\ select\ it\ automatically=IP \u0644\u0648\u0627\u062c\u0647\u0629 \u0627\u0644\u0634\u0628\u0643\u0629 \u0627\u0644\u0645\u062d\u0644\u064a\u0629 \u0644\u0644\u0631\u0628\u0637 \u0628\u0647\u0627 \u0623\u0648 "AUTO" \u0644\u062a\u062d\u062f\u064a\u062f\u0647\u0627 \u062a\u0644\u0642\u0627\u0626\u064a\u064b\u0627 +Connection\ Options=\u062e\u064a\u0627\u0631\u0627\u062a \u0627\u0644\u0627\u062a\u0635\u0627\u0644 +Serial\ port\ device\ name.\ Usually\ something\ like\ /dev/ttyXXX\ on\ Linux=\u0627\u0633\u0645 \u062c\u0647\u0627\u0632 \u0627\u0644\u0645\u0646\u0641\u0630 \u0627\u0644\u062a\u0633\u0644\u0633\u0644\u064a. \u0639\u0627\u062f\u0629\u064b \u0645\u0627 \u064a\u0643\u0648\u0646 \u0634\u064a\u0626\u064b\u0627 \u0645\u062b\u0644 /dev/ttyXXX \u0639\u0644\u0649 Linux +Minimum\ number\ of\ bytes\ to\ receive\ before\ they\ are\ sent\ to\ the\ caller=\u0627\u0644\u062d\u062f \u0627\u0644\u0623\u062f\u0646\u0649 \u0644\u0639\u062f\u062f \u0627\u0644\u0628\u0627\u064a\u062a\u0627\u062a \u0627\u0644\u062a\u064a \u0633\u064a\u062a\u0645 \u062a\u0644\u0642\u064a\u0647\u0627 \u0642\u0628\u0644 \u0625\u0631\u0633\u0627\u0644\u0647\u0627 \u0625\u0644\u0649 \u0627\u0644\u0645\u062a\u0635\u0644 +Local\ port\ number\ to\ use\ on\ the\ local\ host=\u0631\u0642\u0645 \u0627\u0644\u0645\u0646\u0641\u0630 \u0627\u0644\u0645\u062d\u0644\u064a \u0644\u0627\u0633\u062a\u062e\u062f\u0627\u0645\u0647 \u0639\u0644\u0649 \u0627\u0644\u0645\u0636\u064a\u0641 \u0627\u0644\u0645\u062d\u0644\u064a +Physical\ address\ of\ Bluetooth\ device\ to\ connect\ to=\u0627\u0644\u0639\u0646\u0648\u0627\u0646 \u0627\u0644\u0641\u0639\u0644\u064a \u0644\u062c\u0647\u0627\u0632 Bluetooth \u0644\u0644\u0627\u062a\u0635\u0627\u0644 \u0628\u0647 +Port\ number\ to\ connect\ to\ on\ remote\ host=\u0631\u0642\u0645 \u0627\u0644\u0645\u0646\u0641\u0630 \u0644\u0644\u0627\u062a\u0635\u0627\u0644 \u0628\u0647 \u0639\u0644\u0649 \u0627\u0644\u0645\u0636\u064a\u0641 \u0627\u0644\u0628\u0639\u064a\u062f +User\ Name=\u0627\u0633\u0645 \u0627\u0644\u0645\u0633\u062a\u062e\u062f\u0645 +Remote\ user\ name=\u0627\u0633\u0645 \u0627\u0644\u0645\u0633\u062a\u062e\u062f\u0645 \u0627\u0644\u0628\u0639\u064a\u062f +Password=\u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631 +Remote\ password=\u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631 \u0639\u0646 \u0628\u0639\u062f +Secure\ communications\ with\ SSL/TLS=\u0627\u062a\u0635\u0627\u0644\u0627\u062a \u0622\u0645\u0646\u0629 \u0645\u0639 SSL/TLS +Enable\ to\ check\ if\ remote\ host\ is\ reachable\ before\ attempting\ further\ operations=\u0642\u0645 \u0628\u0627\u0644\u062a\u0645\u0643\u064a\u0646 \u0644\u0644\u062a\u062d\u0642\u0642 \u0645\u0646 \u0625\u0645\u0643\u0627\u0646\u064a\u0629 \u0627\u0644\u0648\u0635\u0648\u0644 \u0625\u0644\u0649 \u0627\u0644\u0645\u0636\u064a\u0641 \u0627\u0644\u0628\u0639\u064a\u062f \u0642\u0628\u0644 \u0645\u062d\u0627\u0648\u0644\u0629 \u0625\u062c\u0631\u0627\u0621 \u0627\u0644\u0645\u0632\u064a\u062f \u0645\u0646 \u0627\u0644\u0639\u0645\u0644\u064a\u0627\u062a +Path\ or\ resource\ or\ service\ relative\ to\ server\ root=\u0627\u0644\u0645\u0633\u0627\u0631 \u0623\u0648 \u0627\u0644\u0645\u0648\u0631\u062f \u0623\u0648 \u0627\u0644\u062e\u062f\u0645\u0629 \u0627\u0644\u0645\u062a\u0639\u0644\u0642\u0629 \u0628\u062c\u0630\u0631 \u0627\u0644\u062e\u0627\u062f\u0645 +Unique\ ID\ of\ system\ group=\u0645\u0639\u0631\u0641 \u0641\u0631\u064a\u062f \u0644\u0645\u062c\u0645\u0648\u0639\u0629 \u0627\u0644\u0646\u0638\u0627\u0645 +Name\ of\ system\ group=\u0627\u0633\u0645 \u0645\u062c\u0645\u0648\u0639\u0629 \u0627\u0644\u0646\u0638\u0627\u0645 +Description\ of\ system\ group=\u0648\u0635\u0641 \u0645\u062c\u0645\u0648\u0639\u0629 \u0627\u0644\u0646\u0638\u0627\u0645 +List\ of\ bundle\ repository\ URLs=\u0642\u0627\u0626\u0645\u0629 \u0639\u0646\u0627\u0648\u064a\u0646 URL \u0644\u0645\u0633\u062a\u0648\u062f\u0639 \u0627\u0644\u062d\u0632\u0645\u0629 +A\ human\ readable\ friendly\ identifier\ for\ the\ deployment=\u0645\u0639\u0631\u0641 \u0633\u0647\u0644 \u0627\u0644\u0642\u0631\u0627\u0621\u0629 \u0644\u0644\u0625\u0646\u0633\u0627\u0646 \u0644\u0644\u0646\u0634\u0631 +Enable\ Landing\ Page=\u062a\u0645\u0643\u064a\u0646 \u0627\u0644\u0635\u0641\u062d\u0629 \u0627\u0644\u0645\u0642\u0635\u0648\u062f\u0629 +Enable\ Landing\ Servlet\ to\ redirect\ users\ to\ landing\ page=\u062a\u0645\u0643\u064a\u0646 Landing Servlet \u0644\u0625\u0639\u0627\u062f\u0629 \u062a\u0648\u062c\u064a\u0647 \u0627\u0644\u0645\u0633\u062a\u062e\u062f\u0645\u064a\u0646 \u0625\u0644\u0649 \u0627\u0644\u0635\u0641\u062d\u0629 \u0627\u0644\u0645\u0642\u0635\u0648\u062f\u0629 +Config\ Class=\u0641\u0626\u0629 \u0627\u0644\u062a\u0643\u0648\u064a\u0646 +Type\ of\ module\ config\ class\ for\ which\ a\ custom\ panel\ must\ be\ generated=\u0646\u0648\u0639 \u0641\u0626\u0629 \u062a\u0643\u0648\u064a\u0646 \u0627\u0644\u0648\u062d\u062f\u0629 \u0627\u0644\u0646\u0645\u0637\u064a\u0629 \u0627\u0644\u062a\u064a \u064a\u062c\u0628 \u0625\u0646\u0634\u0627\u0621 \u0644\u0648\u062d\u0629 \u0645\u062e\u0635\u0635\u0629 \u0644\u0647\u0627 +UI\ Class=\u0641\u0626\u0629 \u0648\u0627\u062c\u0647\u0629 \u0627\u0644\u0645\u0633\u062a\u062e\u062f\u0645 +Fully\ qualified\ name\ of\ class\ implementing\ IModuleAdminPanel=\u0627\u0633\u0645 \u0645\u0624\u0647\u0644 \u0628\u0627\u0644\u0643\u0627\u0645\u0644 \u0644\u0644\u0641\u0626\u0629 \u0627\u0644\u062a\u064a \u062a\u0637\u0628\u0642 IModuleAdminPanel + +# Auto-extracted property IDs +sensorML=\u0627\u0644\u0627\u0633\u062a\u0634\u0639\u0627\u0631 \u0645\u0644 +lastUpdated=\u0622\u062e\u0631 \u062a\u062d\u062f\u064a\u062b +lat=\u062e\u0637 \u0627\u0644\u0639\u0631\u0636 +lon=\u062e\u0637 \u0627\u0644\u0637\u0648\u0644 +alt=\u0628\u062f\u064a\u0644 +x=X +y=Y +z=\u0632 +heading=\u0639\u0646\u0648\u0627\u0646 +pitch=\u064a\u0642\u0630\u0641 +roll=\u0644\u0641\u0627\u0641\u0629 +location=\u0645\u0648\u0642\u0639 +orientation=\u062a\u0648\u062c\u064a\u0647 +databaseNum=\u0631\u0642\u0645 \u0642\u0627\u0639\u062f\u0629 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a +enableAccessControl=\u062a\u0645\u0643\u064a\u0646 \u0627\u0644\u062a\u062d\u0643\u0645 \u0641\u064a \u0627\u0644\u0648\u0635\u0648\u0644 +requireAuth=\u062a\u062a\u0637\u0644\u0628 \u0627\u0644\u0645\u0635\u0627\u062f\u0642\u0629 +mimeType=\u0646\u0648\u0639 \u0627\u0644\u062a\u0645\u062b\u064a\u0644 \u0627\u0644\u0635\u0627\u0645\u062a +className=\u0627\u0633\u0645 \u0627\u0644\u0641\u0626\u0629 +endPoint=\u0646\u0642\u0637\u0629 \u0627\u0644\u0646\u0647\u0627\u064a\u0629 +id=\u0628\u0637\u0627\u0642\u0629 \u062a\u0639\u0631\u064a\u0641 +description=\u0648\u0635\u0641 +autoStart=\u0627\u0644\u0628\u062f\u0621 \u0627\u0644\u062a\u0644\u0642\u0627\u0626\u064a +topicName=\u0627\u0633\u0645 \u0627\u0644\u0645\u0648\u0636\u0648\u0639 +enablePublish=\u062a\u0645\u0643\u064a\u0646 \u0627\u0644\u0646\u0634\u0631 +enableSubscribe=\u062a\u0645\u0643\u064a\u0646 \u0627\u0644\u0627\u0634\u062a\u0631\u0627\u0643 +protocol=\u0628\u0631\u0648\u062a\u0648\u0643\u0648\u0644 +moduleConfigPath=\u0645\u0633\u0627\u0631 \u062a\u0643\u0648\u064a\u0646 \u0627\u0644\u0648\u062d\u062f\u0629 \u0627\u0644\u0646\u0645\u0637\u064a\u0629 +moduleDataPath=\u0645\u0633\u0627\u0631 \u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u0648\u062d\u062f\u0629 \u0627\u0644\u0646\u0645\u0637\u064a\u0629 +commonConfig=\u0627\u0644\u062a\u0643\u0648\u064a\u0646 \u0627\u0644\u0645\u0634\u062a\u0631\u0643 +sensors=Sensors +config=\u0627\u0644\u062a\u0643\u0648\u064a\u0646 +uniqueID=\u0645\u0639\u0631\u0641 \u0641\u0631\u064a\u062f +subsystems=\u0627\u0644\u0623\u0646\u0638\u0645\u0629 \u0627\u0644\u0641\u0631\u0639\u064a\u0629 +dbConfig=\u062a\u0643\u0648\u064a\u0646 \u062f\u064a\u0633\u064a\u0628\u0644 +systemUIDs=\u0645\u0639\u0631\u0641\u0627\u062a \u0627\u0644\u0646\u0638\u0627\u0645 +autoPurgeConfig=\u062a\u0643\u0648\u064a\u0646 \u0627\u0644\u062a\u0637\u0647\u064a\u0631 \u0627\u0644\u062a\u0644\u0642\u0627\u0626\u064a +minCommitPeriod=\u0627\u0644\u062d\u062f \u0627\u0644\u0623\u062f\u0646\u0649 \u0644\u0641\u062a\u0631\u0629 \u0627\u0644\u0627\u0644\u062a\u0632\u0627\u0645 +enabled=\u0645\u0645\u0643\u0651\u0646 +purgePeriod=\u0641\u062a\u0631\u0629 \u0627\u0644\u062a\u0637\u0647\u064a\u0631 +maxRecordAge=\u0627\u0644\u062d\u062f \u0627\u0644\u0623\u0642\u0635\u0649 \u0644\u0639\u0645\u0631 \u0627\u0644\u062a\u0633\u062c\u064a\u0644 +users=\u0627\u0644\u0645\u0633\u062a\u062e\u062f\u0645\u064a\u0646 +roles=\u0627\u0644\u0623\u062f\u0648\u0627\u0631 +allow=\u064a\u0633\u0645\u062d +deny=\u064a\u0646\u0643\u0631 +userID=\u0645\u0639\u0631\u0641 \u0627\u0644\u0645\u0633\u062a\u062e\u062f\u0645 +name=\u0627\u0633\u0645 +password=\u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631 +certificate=\u0634\u0647\u0627\u062f\u0629 +twoFactorSecret=\u0633\u0631 \u0639\u0627\u0645\u0644\u064a\u0646 +isTwoFactorEnabled=\u0647\u0644 \u062a\u0645 \u062a\u0645\u0643\u064a\u0646 \u0639\u0627\u0645\u0644\u064a\u0646\u061f +roleID=\u0645\u0639\u0631\u0641 \u0627\u0644\u062f\u0648\u0631 +sourceDatabaseId=\u0645\u0639\u0631\u0641 \u0642\u0627\u0639\u062f\u0629 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u0645\u0635\u062f\u0631 +includeFilter=\u062a\u0636\u0645\u064a\u0646 \u0639\u0627\u0645\u0644 \u0627\u0644\u062a\u0635\u0641\u064a\u0629 +excludeFilter=\u0627\u0633\u062a\u0628\u0639\u0627\u062f \u0639\u0627\u0645\u0644 \u0627\u0644\u062a\u0635\u0641\u064a\u0629 +httpPort=\u0645\u0646\u0641\u0630 \u0627\u0644\u0645\u062a\u0634\u0639\u0628 +httpsPort=\u0645\u0646\u0641\u0630 \u0647\u062a\u0628\u0633 +staticDocsRootUrl=\u0639\u0646\u0648\u0627\u0646 URL \u0644\u062c\u0630\u0631 \u0627\u0644\u0645\u0633\u062a\u0646\u062f\u0627\u062a \u0627\u0644\u062b\u0627\u0628\u062a\u0629 +staticDocsRootDir=\u0645\u062c\u0644\u062f \u062c\u0630\u0631 \u0627\u0644\u0645\u0633\u062a\u0646\u062f\u0627\u062a \u0627\u0644\u062b\u0627\u0628\u062a\u0629 +servletsRootUrl=\u0639\u0646\u0648\u0627\u0646 URL \u0644\u062c\u0630\u0631 Servlets +proxyBaseUrl=\u0639\u0646\u0648\u0627\u0646 URL \u0644\u0642\u0627\u0639\u062f\u0629 \u0627\u0644\u0648\u0643\u064a\u0644 +authMethod=\u0637\u0631\u064a\u0642\u0629 \u0627\u0644\u0645\u0635\u0627\u062f\u0642\u0629 +keyStorePath=\u0645\u0633\u0627\u0631 \u0645\u062e\u0632\u0646 \u0627\u0644\u0645\u0641\u0627\u062a\u064a\u062d +keyStorePassword=\u0643\u0644\u0645\u0629 \u0645\u0631\u0648\u0631 \u0627\u0644\u0645\u062a\u062c\u0631 \u0627\u0644\u0631\u0626\u064a\u0633\u064a +keyAlias=\u0627\u0644\u0627\u0633\u0645 \u0627\u0644\u0645\u0633\u062a\u0639\u0627\u0631 \u0627\u0644\u0631\u0626\u064a\u0633\u064a +trustStorePath=\u0645\u0633\u0627\u0631 \u0645\u062a\u062c\u0631 \u0627\u0644\u062b\u0642\u0629 +trustStorePassword=\u0627\u0644\u062b\u0642\u0629 \u0641\u064a \u0643\u0644\u0645\u0629 \u0645\u0631\u0648\u0631 \u0627\u0644\u0645\u062a\u062c\u0631 +xmlConfigFile=\u0645\u0644\u0641 \u062a\u0643\u0648\u064a\u0646 XML +enableCORS=\u062a\u0645\u0643\u064a\u0646 \u0643\u0648\u0631\u0633 +title=Title +keywords=\u0627\u0644\u0643\u0644\u0645\u0627\u062a \u0627\u0644\u0631\u0626\u064a\u0633\u064a\u0629 +fees=\u0645\u0635\u0627\u0631\u064a\u0641 +accessConstraints=\u0642\u064a\u0648\u062f \u0627\u0644\u0648\u0635\u0648\u0644 +serviceProvider=\u0645\u0632\u0648\u062f \u0627\u0644\u062e\u062f\u0645\u0629 +ogcCapabilitiesInfo=\u0645\u0639\u0644\u0648\u0645\u0627\u062a \u0642\u062f\u0631\u0627\u062a OGC +enableHttpGET=\u062a\u0645\u0643\u064a\u0646 \u0627\u0644\u0645\u062a\u0634\u0639\u0628 \u0627\u0644\u062d\u0635\u0648\u0644 +enableHttpPOST=\u062a\u0645\u0643\u064a\u0646 \u0645\u0634\u0627\u0631\u0643\u0629 \u0627\u0644\u0645\u062a\u0634\u0639\u0628 +enableSOAP=\u062a\u0645\u0643\u064a\u0646 \u0627\u0644\u0635\u0627\u0628\u0648\u0646 +connectTimeout=\u0627\u062a\u0635\u0627\u0644 \u0627\u0644\u0645\u0647\u0644\u0629 +reconnectPeriod=\u0641\u062a\u0631\u0629 \u0625\u0639\u0627\u062f\u0629 \u0627\u0644\u0627\u062a\u0635\u0627\u0644 +reconnectAttempts=\u0645\u062d\u0627\u0648\u0644\u0627\u062a \u0625\u0639\u0627\u062f\u0629 \u0627\u0644\u0627\u062a\u0635\u0627\u0644 +deviceID=\u0645\u0639\u0631\u0641 \u0627\u0644\u062c\u0647\u0627\u0632 +deviceClass=\u0641\u0626\u0629 \u0627\u0644\u062c\u0647\u0627\u0632 +remoteHost=\u0627\u0644\u0645\u0636\u064a\u0641 \u0627\u0644\u0628\u0639\u064a\u062f +localAddress=\u0627\u0644\u0639\u0646\u0648\u0627\u0646 \u0627\u0644\u0645\u062d\u0644\u064a +connection=\u0627\u062a\u0635\u0627\u0644 +portName=\u0627\u0633\u0645 \u0627\u0644\u0645\u0646\u0641\u0630 +baudRate=\u0645\u0639\u062f\u0644 \u0627\u0644\u0628\u0627\u0648\u062f +dataBits=\u0628\u062a\u0627\u062a \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a +stopBits=\u0648\u0642\u0641 \u0628\u062a +parity=\u0627\u0644\u062a\u0643\u0627\u0641\u0624 +receiveTimeout=\u062a\u0644\u0642\u064a \u0627\u0644\u0645\u0647\u0644\u0629 +receiveThreshold=\u0639\u062a\u0628\u0629 \u0627\u0644\u0627\u0633\u062a\u0644\u0627\u0645 +remotePort=\u0627\u0644\u0645\u0646\u0641\u0630 \u0627\u0644\u0628\u0639\u064a\u062f +localPort=\u0645\u064a\u0646\u0627\u0621 \u0645\u062d\u0644\u064a +deviceAddress=\u0639\u0646\u0648\u0627\u0646 \u0627\u0644\u062c\u0647\u0627\u0632 +deviceName=\u0627\u0633\u0645 \u0627\u0644\u062c\u0647\u0627\u0632 +serviceUuid=Uuid \u0627\u0644\u062e\u062f\u0645\u0629 +user=\u0645\u0633\u062a\u062e\u062f\u0645 +enableTLS=\u062a\u0645\u0643\u064a\u0646 Tls +checkReachability=\u062a\u062d\u0642\u0642 \u0645\u0646 \u0625\u0645\u0643\u0627\u0646\u064a\u0629 \u0627\u0644\u0648\u0635\u0648\u0644 +resourcePath=\u0645\u0633\u0627\u0631 \u0627\u0644\u0645\u0648\u0627\u0631\u062f +uid=\u0645\u0639\u0631\u0641 \u0645\u0639\u0631\u0641\u064a +securityRole=\u0627\u0644\u062f\u0648\u0631 \u0627\u0644\u0623\u0645\u0646\u064a +passwordField=\u062d\u0642\u0644 \u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631 +widgetSet=\u0645\u062c\u0645\u0648\u0639\u0629 \u0627\u0644\u0642\u0637\u0639\u0629 +bundleRepoUrls=\u0639\u0646\u0627\u0648\u064a\u0646 URL \u0644\u062d\u0632\u0645\u0629 \u0627\u0644\u0631\u064a\u0628\u0648 +customPanels=\u0644\u0648\u062d\u0627\u062a \u0645\u062e\u0635\u0635\u0629 +customForms=\u0627\u0644\u0646\u0645\u0627\u0630\u062c \u0627\u0644\u0645\u062e\u0635\u0635\u0629 +deploymentName=\u0627\u0633\u0645 \u0627\u0644\u0646\u0634\u0631 +enableLandingPage=\u062a\u0645\u0643\u064a\u0646 \u0627\u0644\u0635\u0641\u062d\u0629 \u0627\u0644\u0645\u0642\u0635\u0648\u062f\u0629 +configClass=\u0641\u0626\u0629 \u0627\u0644\u062a\u0643\u0648\u064a\u0646 +uiClass=\u0641\u0626\u0629 \u0648\u0627\u062c\u0647\u0629 \u0627\u0644\u0645\u0633\u062a\u062e\u062f\u0645 +moduleClass=\u0641\u0626\u0629 \u0627\u0644\u0648\u062d\u062f\u0629 \u0627\u0644\u0646\u0645\u0637\u064a\u0629 + +# Auto-extracted hardcoded UI strings +testLinks1=\u0631\u0648\u0627\u0628\u0637 \u0627\u0644\u0627\u062e\u062a\u0628\u0627\u0631 +uniqueID1=\u0645\u0639\u0631\u0641 \u0641\u0631\u064a\u062f +foiIDs1=\u0645\u0639\u0631\u0641\u0627\u062a \u062d\u0631\u064a\u0629 \u0627\u0644\u0645\u0639\u0644\u0648\u0645\u0627\u062a +version1=\u0625\u0635\u062f\u0627\u0631 + +Connected\ Systems\ Endpoint=\u0646\u0642\u0637\u0629 \u0646\u0647\u0627\u064a\u0629 \u0627\u0644\u0623\u0646\u0638\u0645\u0629 \u0627\u0644\u0645\u062a\u0635\u0644\u0629 +Connected\ Systems\ endpoint\ where\ the\ requests\ are\ sent=\u0646\u0642\u0637\u0629 \u0646\u0647\u0627\u064a\u0629 \u0627\u0644\u0623\u0646\u0638\u0645\u0629 \u0627\u0644\u0645\u062a\u0635\u0644\u0629 \u062d\u064a\u062b \u064a\u062a\u0645 \u0625\u0631\u0633\u0627\u0644 \u0627\u0644\u0637\u0644\u0628\u0627\u062a +Connection\ Settings=\u0625\u0639\u062f\u0627\u062f\u0627\u062a \u0627\u0644\u0627\u062a\u0635\u0627\u0644 +Custom\ connector\ configurations=\u062a\u0643\u0648\u064a\u0646\u0627\u062a \u0627\u0644\u0645\u0648\u0635\u0644 \u0627\u0644\u0645\u062e\u0635\u0635\u0629 +Custom\ provider\ configurations=\u062a\u0643\u0648\u064a\u0646\u0627\u062a \u0627\u0644\u0645\u0648\u0641\u0631 \u0627\u0644\u0645\u062e\u0635\u0635\u0629 +Database\ ID=\u0645\u0639\u0631\u0641 \u0642\u0627\u0639\u062f\u0629 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a +Default\ live\ time-out\ for\ all\ offerings,\ unless\ overriden\ by\ custom\ provider\ settings=\u0627\u0644\u0645\u0647\u0644\u0629 \u0627\u0644\u0645\u0628\u0627\u0634\u0631\u0629 \u0627\u0644\u0627\u0641\u062a\u0631\u0627\u0636\u064a\u0629 \u0644\u062c\u0645\u064a\u0639 \u0627\u0644\u0639\u0631\u0648\u0636\u060c \u0645\u0627 \u0644\u0645 \u064a\u062a\u0645 \u062a\u062c\u0627\u0648\u0632\u0647\u0627 \u0628\u0648\u0627\u0633\u0637\u0629 \u0625\u0639\u062f\u0627\u062f\u0627\u062a \u0627\u0644\u0645\u0648\u0641\u0631 \u0627\u0644\u0645\u062e\u0635\u0635\u0629 +Default\ live\ time-out\ for\ new\ offerings\ created\ via\ SOS-T=\u0627\u0644\u0645\u0647\u0644\u0629 \u0627\u0644\u0645\u0628\u0627\u0634\u0631\u0629 \u0627\u0644\u0627\u0641\u062a\u0631\u0627\u0636\u064a\u0629 \u0644\u0644\u0639\u0631\u0648\u0636 \u0627\u0644\u062c\u062f\u064a\u062f\u0629 \u0627\u0644\u062a\u064a \u062a\u0645 \u0625\u0646\u0634\u0627\u0624\u0647\u0627 \u0639\u0628\u0631 SOS-T +Enable\ to\ use\ a\ persistent\ HTTP\ connection\ for\ InsertResult=\u062a\u0645\u0643\u064a\u0646 \u0627\u0633\u062a\u062e\u062f\u0627\u0645 \u0627\u062a\u0635\u0627\u0644 HTTP \u0627\u0644\u0645\u0633\u062a\u0645\u0631 \u0644\u0640 InsertResult +Execution\ period\ of\ the\ purge\ policy\ (in\ seconds)=\u0645\u062f\u0629 \u062a\u0646\u0641\u064a\u0630 \u0633\u064a\u0627\u0633\u0629 \u0627\u0644\u062a\u0637\u0647\u064a\u0631 (\u0628\u0627\u0644\u062b\u0648\u0627\u0646\u064a) +Filtered\ view\ to\ select\ systems\ exposed\ as\ read-only\ through\ this\ service=\u0639\u0631\u0636 \u062a\u0645\u062a \u062a\u0635\u0641\u064a\u062a\u0647 \u0644\u062a\u062d\u062f\u064a\u062f \u0627\u0644\u0623\u0646\u0638\u0645\u0629 \u0627\u0644\u0645\u0643\u0634\u0648\u0641\u0629 \u0644\u0644\u0642\u0631\u0627\u0621\u0629 \u0641\u0642\u0637 \u0645\u0646 \u062e\u0644\u0627\u0644 \u0647\u0630\u0647 \u0627\u0644\u062e\u062f\u0645\u0629 +Filtered\ view\ to\ select\ systems/datastreams\ to\ register\ with\ Connected\ Systems=\u0637\u0631\u064a\u0642\u0629 \u0627\u0644\u0639\u0631\u0636 \u0627\u0644\u0645\u0641\u0644\u062a\u0631\u0629 \u0644\u062a\u062d\u062f\u064a\u062f \u0627\u0644\u0623\u0646\u0638\u0645\u0629/\u062a\u062f\u0641\u0642\u0627\u062a \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0644\u0644\u062a\u0633\u062c\u064a\u0644 \u0641\u064a \u0627\u0644\u0623\u0646\u0638\u0645\u0629 \u0627\u0644\u0645\u062a\u0635\u0644\u0629 +Filtered\ view\ to\ select\ systems/datastreams\ to\ register\ with\ remote\ SOS=\u0639\u0631\u0636 \u062a\u0645\u062a \u062a\u0635\u0641\u064a\u062a\u0647 \u0644\u062a\u062d\u062f\u064a\u062f \u0627\u0644\u0623\u0646\u0638\u0645\u0629/\u062a\u062f\u0641\u0642\u0627\u062a \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0644\u0644\u062a\u0633\u062c\u064a\u0644 \u0641\u064a SOS \u0639\u0646 \u0628\u0639\u062f +Fixed\ system\ location\ in\ EPSG\ 4979\ (WGS84)\ coordinate\ system=\u0645\u0648\u0642\u0639 \u0627\u0644\u0646\u0638\u0627\u0645 \u0627\u0644\u062b\u0627\u0628\u062a \u0641\u064a \u0646\u0638\u0627\u0645 \u0627\u0644\u0625\u062d\u062f\u0627\u062b\u064a\u0627\u062a EPSG 4979 (WGS84). +For\ each\ connection\ or\ reconnection\ attempt,\ the\ client\ will\ wait\ for\ the\ remote\ side\ to\ respond\ until\ this\ timeout\ expires\ (in\ ms)=\u0644\u0643\u0644 \u0645\u062d\u0627\u0648\u0644\u0629 \u0627\u062a\u0635\u0627\u0644 \u0623\u0648 \u0625\u0639\u0627\u062f\u0629 \u0627\u062a\u0635\u0627\u0644\u060c \u0633\u064a\u0646\u062a\u0638\u0631 \u0627\u0644\u0639\u0645\u064a\u0644 \u062d\u062a\u0649 \u064a\u0633\u062a\u062c\u064a\u0628 \u0627\u0644\u062c\u0627\u0646\u0628 \u0627\u0644\u0628\u0639\u064a\u062f \u062d\u062a\u0649 \u062a\u0646\u062a\u0647\u064a \u0647\u0630\u0647 \u0627\u0644\u0645\u0647\u0644\u0629 (\u0628\u0627\u0644\u0645\u0644\u0644\u064a \u062b\u0627\u0646\u064a\u0629) +Heading\ (or\ yaw)\ angle\ about\ Z\ axis\ in\ degrees=\u0632\u0627\u0648\u064a\u0629 \u0627\u0644\u0627\u062a\u062c\u0627\u0647 (\u0623\u0648 \u0627\u0644\u0627\u0646\u0639\u0631\u0627\u062c) \u062d\u0648\u0644 \u0627\u0644\u0645\u062d\u0648\u0631 Z \u0628\u0627\u0644\u062f\u0631\u062c\u0627\u062a +How\ long\ the\ client\ will\ wait\ after\ connection\ is\ lost\ before\ it\ will\ attempt\ to\ reconnect\ (in\ ms)=\u0627\u0644\u0645\u062f\u0629 \u0627\u0644\u062a\u064a \u0633\u064a\u0646\u062a\u0638\u0631\u0647\u0627 \u0627\u0644\u0639\u0645\u064a\u0644 \u0628\u0639\u062f \u0641\u0642\u062f\u0627\u0646 \u0627\u0644\u0627\u062a\u0635\u0627\u0644 \u0642\u0628\u0644 \u0623\u0646 \u064a\u062d\u0627\u0648\u0644 \u0625\u0639\u0627\u062f\u0629 \u0627\u0644\u0627\u062a\u0635\u0627\u0644 (\u0628\u0627\u0644\u0645\u0644\u0644\u064a \u062b\u0627\u0646\u064a\u0629) +ID\ Generator=\u0645\u0648\u0644\u062f \u0627\u0644\u0647\u0648\u064a\u0629 +ID\ of\ database\ module\ used\ for\ persisting\ data\ received\ by\ this\ service.\ If\ none\ is\ provided,\ new\ systems\ registered\ through\ this\ service\ will\ be\ available\ on\ the\ hub,\ but\ with\ no\ persistence\ guarantee\ across\ restarts.=\u0645\u0639\u0631\u0641 \u0648\u062d\u062f\u0629 \u0642\u0627\u0639\u062f\u0629 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u0645\u0633\u062a\u062e\u062f\u0645\u0629 \u0644\u0627\u0633\u062a\u0645\u0631\u0627\u0631 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u062a\u064a \u062a\u062a\u0644\u0642\u0627\u0647\u0627 \u0647\u0630\u0647 \u0627\u0644\u062e\u062f\u0645\u0629. \u0625\u0630\u0627 \u0644\u0645 \u064a\u062a\u0645 \u062a\u0648\u0641\u064a\u0631 \u0623\u064a \u0634\u064a\u0621\u060c \u0641\u0633\u062a\u0643\u0648\u0646 \u0627\u0644\u0623\u0646\u0638\u0645\u0629 \u0627\u0644\u062c\u062f\u064a\u062f\u0629 \u0627\u0644\u0645\u0633\u062c\u0644\u0629 \u0645\u0646 \u062e\u0644\u0627\u0644 \u0647\u0630\u0647 \u0627\u0644\u062e\u062f\u0645\u0629 \u0645\u062a\u0627\u062d\u0629 \u0639\u0644\u0649 \u0627\u0644\u0645\u0631\u0643\u0632\u060c \u0648\u0644\u0643\u0646 \u0645\u0639 \u0639\u062f\u0645 \u0648\u062c\u0648\u062f \u0636\u0645\u0627\u0646 \u0644\u0644\u0627\u0633\u062a\u0645\u0631\u0627\u0631\u064a\u0629 \u0639\u0628\u0631 \u0639\u0645\u0644\u064a\u0627\u062a \u0625\u0639\u0627\u062f\u0629 \u0627\u0644\u062a\u0634\u063a\u064a\u0644. +ID\ of\ database\ module\ used\ for\ persisting\ data\ received\ by\ this\ service.\ If\ none\ is\ provided,\ new\ systems\ registered\ through\ this\ service\ will\ be\ available\ on\ the\ hub,\ but\ with\ no\ persistence\ guarantee\ across\ restarts.\ Only\ the\ latest\ observation\ from\ each\ datastream\ will\ be\ available\ and\ older\ observations\ will\ be\ discarded=\u0645\u0639\u0631\u0641 \u0648\u062d\u062f\u0629 \u0642\u0627\u0639\u062f\u0629 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u0645\u0633\u062a\u062e\u062f\u0645\u0629 \u0644\u0627\u0633\u062a\u0645\u0631\u0627\u0631 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u062a\u064a \u062a\u062a\u0644\u0642\u0627\u0647\u0627 \u0647\u0630\u0647 \u0627\u0644\u062e\u062f\u0645\u0629. \u0625\u0630\u0627 \u0644\u0645 \u064a\u062a\u0645 \u062a\u0648\u0641\u064a\u0631 \u0623\u064a \u0634\u064a\u0621\u060c \u0641\u0633\u062a\u0643\u0648\u0646 \u0627\u0644\u0623\u0646\u0638\u0645\u0629 \u0627\u0644\u062c\u062f\u064a\u062f\u0629 \u0627\u0644\u0645\u0633\u062c\u0644\u0629 \u0645\u0646 \u062e\u0644\u0627\u0644 \u0647\u0630\u0647 \u0627\u0644\u062e\u062f\u0645\u0629 \u0645\u062a\u0627\u062d\u0629 \u0639\u0644\u0649 \u0627\u0644\u0645\u0631\u0643\u0632\u060c \u0648\u0644\u0643\u0646 \u0645\u0639 \u0639\u062f\u0645 \u0648\u062c\u0648\u062f \u0636\u0645\u0627\u0646 \u0644\u0644\u0627\u0633\u062a\u0645\u0631\u0627\u0631\u064a\u0629 \u0639\u0628\u0631 \u0639\u0645\u0644\u064a\u0627\u062a \u0625\u0639\u0627\u062f\u0629 \u0627\u0644\u062a\u0634\u063a\u064a\u0644. \u0644\u0646 \u062a\u062a\u0648\u0641\u0631 \u0633\u0648\u0649 \u0623\u062d\u062f\u062b \u0645\u0644\u0627\u062d\u0638\u0629 \u0645\u0646 \u0643\u0644 \u0645\u0635\u062f\u0631 \u0628\u064a\u0627\u0646\u0627\u062a \u0648\u0633\u064a\u062a\u0645 \u062a\u062c\u0627\u0647\u0644 \u0627\u0644\u0645\u0644\u0627\u062d\u0638\u0627\u062a \u0627\u0644\u0623\u0642\u062f\u0645 +Individual\ configuration\ of\ sensors\ in\ the\ array\ (will\ override\ common\ configuration)=\u0627\u0644\u062a\u0643\u0648\u064a\u0646 \u0627\u0644\u0641\u0631\u062f\u064a \u0644\u0623\u062c\u0647\u0632\u0629 \u0627\u0644\u0627\u0633\u062a\u0634\u0639\u0627\u0631 \u0641\u064a \u0627\u0644\u0645\u0635\u0641\u0648\u0641\u0629 (\u0633\u064a\u062a\u062c\u0627\u0648\u0632 \u0627\u0644\u062a\u0643\u0648\u064a\u0646 \u0627\u0644\u0645\u0634\u062a\u0631\u0643) +List\ of\ observed\ properties\ URI\ to\ make\ available\ as\ outputs=\u0642\u0627\u0626\u0645\u0629 URI \u0644\u0644\u062e\u0635\u0627\u0626\u0635 \u0627\u0644\u062a\u064a \u062a\u0645\u062a \u0645\u0644\u0627\u062d\u0638\u062a\u0647\u0627 \u0644\u0625\u062a\u0627\u062d\u062a\u0647\u0627 \u0643\u0645\u062e\u0631\u062c\u0627\u062a +Mapping\ of\ custom\ formats\ mime-types\ to\ custom\ serializer\ classes=\u062a\u0639\u064a\u064a\u0646 \u0623\u0646\u0648\u0627\u0639 mime \u0644\u0644\u062a\u0646\u0633\u064a\u0642\u0627\u062a \u0627\u0644\u0645\u062e\u0635\u0635\u0629 \u0644\u0641\u0626\u0627\u062a \u0627\u0644\u062a\u0633\u0644\u0633\u0644 \u0627\u0644\u0645\u062e\u0635\u0635\u0629 +Mappings\ used\ by\ CURIE\ to\ URI\ resolver=\u0627\u0644\u062a\u0639\u064a\u064a\u0646\u0627\u062a \u0627\u0644\u0645\u0633\u062a\u062e\u062f\u0645\u0629 \u0628\u0648\u0627\u0633\u0637\u0629 CURIE \u0644\u0645\u062d\u0644\u0644 URI +Max\ Limit=\u0627\u0644\u062d\u062f \u0627\u0644\u0623\u0642\u0635\u0649 +Max\ Observations\ Returned=\u062a\u0645 \u0625\u0631\u062c\u0627\u0639 \u0645\u0627\u0643\u0633 \u0627\u0644\u0645\u0644\u0627\u062d\u0638\u0627\u062a +Max\ Records\ Returned=\u062a\u0645 \u0625\u0631\u062c\u0627\u0639 \u0645\u0627\u0643\u0633 \u0627\u0644\u0633\u062c\u0644\u0627\u062a +Max\ delay\ between\ auto-commit\ execution,\ in\ seconds.\ 0\ to\ disable\ time-based\ auto-commit=\u0627\u0644\u062d\u062f \u0627\u0644\u0623\u0642\u0635\u0649 \u0644\u0644\u062a\u0623\u062e\u064a\u0631 \u0628\u064a\u0646 \u062a\u0646\u0641\u064a\u0630 \u0627\u0644\u0627\u0644\u062a\u0632\u0627\u0645 \u0627\u0644\u062a\u0644\u0642\u0627\u0626\u064a\u060c \u0628\u0627\u0644\u062b\u0648\u0627\u0646\u064a. 0 \u0644\u062a\u0639\u0637\u064a\u0644 \u0627\u0644\u0627\u0644\u062a\u0632\u0627\u0645 \u0627\u0644\u062a\u0644\u0642\u0627\u0626\u064a \u0627\u0644\u0645\u0633\u062a\u0646\u062f \u0625\u0644\u0649 \u0627\u0644\u0648\u0642\u062a +Maximum\ age\ of\ data\ to\ be\ kept\ in\ storage\ (in\ seconds)=\u0627\u0644\u062d\u062f \u0627\u0644\u0623\u0642\u0635\u0649 \u0644\u0639\u0645\u0631 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u062a\u064a \u0633\u064a\u062a\u0645 \u0627\u0644\u0627\u062d\u062a\u0641\u0627\u0638 \u0628\u0647\u0627 \u0641\u064a \u0627\u0644\u062a\u062e\u0632\u064a\u0646 (\u0628\u0627\u0644\u062b\u0648\u0627\u0646\u064a) +Maximum\ number\ of\ FoI\ IDs\ listed\ in\ capabilities=\u0627\u0644\u062d\u062f \u0627\u0644\u0623\u0642\u0635\u0649 \u0644\u0639\u062f\u062f \u0645\u0639\u0631\u0641\u0627\u062a FoI \u0627\u0644\u0645\u062f\u0631\u062c\u0629 \u0641\u064a \u0627\u0644\u0625\u0645\u0643\u0627\u0646\u0627\u062a +Maximum\ number\ of\ observations\ returned\ \ by\ a\ historical\ GetObservation\ request\ (for\ each\ selected\ offering)=\u0627\u0644\u062d\u062f \u0627\u0644\u0623\u0642\u0635\u0649 \u0644\u0639\u062f\u062f \u0627\u0644\u0645\u0644\u0627\u062d\u0638\u0627\u062a \u0627\u0644\u062a\u064a \u064a\u062a\u0645 \u0625\u0631\u062c\u0627\u0639\u0647\u0627 \u0628\u0648\u0627\u0633\u0637\u0629 \u0637\u0644\u0628 GetObservation \u0627\u0644\u062a\u0627\u0631\u064a\u062e\u064a (\u0644\u0643\u0644 \u0639\u0631\u0636 \u0645\u062d\u062f\u062f) +Maximum\ number\ of\ records\ in\ upload\ queue\ (used\ to\ compensate\ for\ variable\ bandwidth)=\u0627\u0644\u062d\u062f \u0627\u0644\u0623\u0642\u0635\u0649 \u0644\u0639\u062f\u062f \u0627\u0644\u0633\u062c\u0644\u0627\u062a \u0641\u064a \u0642\u0627\u0626\u0645\u0629 \u0627\u0646\u062a\u0638\u0627\u0631 \u0627\u0644\u062a\u062d\u0645\u064a\u0644 (\u064a\u0633\u062a\u062e\u062f\u0645 \u0644\u0644\u062a\u0639\u0648\u064a\u0636 \u0639\u0646 \u0627\u0644\u0646\u0637\u0627\u0642 \u0627\u0644\u062a\u0631\u062f\u062f\u064a \u0627\u0644\u0645\u062a\u063a\u064a\u0631) +Maximum\ number\ of\ resources\ returned\ in\ a\ single\ page=\u0627\u0644\u062d\u062f \u0627\u0644\u0623\u0642\u0635\u0649 \u0644\u0639\u062f\u062f \u0627\u0644\u0645\u0648\u0627\u0631\u062f \u0627\u0644\u062a\u064a \u064a\u062a\u0645 \u0625\u0631\u062c\u0627\u0639\u0647\u0627 \u0641\u064a \u0635\u0641\u062d\u0629 \u0648\u0627\u062d\u062f\u0629 +Maximum\ number\ of\ result\ records\ returned\ by\ a\ historical\ GetResult\ request=\u0627\u0644\u062d\u062f \u0627\u0644\u0623\u0642\u0635\u0649 \u0644\u0639\u062f\u062f \u0633\u062c\u0644\u0627\u062a \u0627\u0644\u0646\u062a\u0627\u0626\u062c \u0627\u0644\u062a\u064a \u064a\u062a\u0645 \u0625\u0631\u062c\u0627\u0639\u0647\u0627 \u0628\u0648\u0627\u0633\u0637\u0629 \u0637\u0644\u0628 GetResult \u0627\u0644\u062a\u0627\u0631\u064a\u062e\u064a +Maximum\ number\ of\ stream\ errors\ before\ we\ try\ to\ reconnect\ to\ remote\ server=\u0627\u0644\u062d\u062f \u0627\u0644\u0623\u0642\u0635\u0649 \u0644\u0639\u062f\u062f \u0623\u062e\u0637\u0627\u0621 \u0627\u0644\u062f\u0641\u0642 \u0642\u0628\u0644 \u0623\u0646 \u0646\u062d\u0627\u0648\u0644 \u0625\u0639\u0627\u062f\u0629 \u0627\u0644\u0627\u062a\u0635\u0627\u0644 \u0628\u0627\u0644\u062e\u0627\u062f\u0645 \u0627\u0644\u0628\u0639\u064a\u062f +Memory\ cache\ size\ for\ page\ chunks,\ in\ KB=\u062d\u062c\u0645 \u0630\u0627\u0643\u0631\u0629 \u0627\u0644\u062a\u062e\u0632\u064a\u0646 \u0627\u0644\u0645\u0624\u0642\u062a \u0644\u0623\u062c\u0632\u0627\u0621 \u0627\u0644\u0635\u0641\u062d\u0629\u060c \u0628\u0627\u0644\u0643\u064a\u0644\u0648\u0628\u0627\u064a\u062a +Metadata\ of\ system\ group\ that\ will\ be\ created\ to\ contain\ all\ procedures/sensors\ registered\ through\ this\ service.\ Only\ sensors\ in\ this\ group\ will\ be\ modifiable\ by\ this\ service=\u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u0648\u0635\u0641\u064a\u0629 \u0644\u0645\u062c\u0645\u0648\u0639\u0629 \u0627\u0644\u0646\u0638\u0627\u0645 \u0627\u0644\u062a\u064a \u0633\u064a\u062a\u0645 \u0625\u0646\u0634\u0627\u0624\u0647\u0627 \u0644\u062a\u062d\u062a\u0648\u064a \u0639\u0644\u0649 \u062c\u0645\u064a\u0639 \u0627\u0644\u0625\u062c\u0631\u0627\u0621\u0627\u062a/\u0627\u0644\u0645\u0633\u062a\u0634\u0639\u0631\u0627\u062a \u0627\u0644\u0645\u0633\u062c\u0644\u0629 \u0645\u0646 \u062e\u0644\u0627\u0644 \u0647\u0630\u0647 \u0627\u0644\u062e\u062f\u0645\u0629. \u0633\u064a\u062a\u0645 \u062a\u0639\u062f\u064a\u0644 \u0623\u062c\u0647\u0632\u0629 \u0627\u0644\u0627\u0633\u062a\u0634\u0639\u0627\u0631 \u0627\u0644\u0645\u0648\u062c\u0648\u062f\u0629 \u0641\u064a \u0647\u0630\u0647 \u0627\u0644\u0645\u062c\u0645\u0648\u0639\u0629 \u0641\u0642\u0637 \u0628\u0648\u0627\u0633\u0637\u0629 \u0647\u0630\u0647 \u0627\u0644\u062e\u062f\u0645\u0629 +Metadata\ of\ system\ group\ that\ will\ be\ created\ to\ contain\ all\ systems\ registered\ through\ this\ service.\ Only\ systems\ in\ this\ group\ will\ be\ modifiable\ by\ this\ service=\u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u0648\u0635\u0641\u064a\u0629 \u0644\u0645\u062c\u0645\u0648\u0639\u0629 \u0627\u0644\u0646\u0638\u0627\u0645 \u0627\u0644\u062a\u064a \u0633\u064a\u062a\u0645 \u0625\u0646\u0634\u0627\u0624\u0647\u0627 \u0644\u062a\u0634\u0645\u0644 \u062c\u0645\u064a\u0639 \u0627\u0644\u0623\u0646\u0638\u0645\u0629 \u0627\u0644\u0645\u0633\u062c\u0644\u0629 \u0645\u0646 \u062e\u0644\u0627\u0644 \u0647\u0630\u0647 \u0627\u0644\u062e\u062f\u0645\u0629. \u0627\u0644\u0623\u0646\u0638\u0645\u0629 \u0627\u0644\u0645\u0648\u062c\u0648\u062f\u0629 \u0641\u064a \u0647\u0630\u0647 \u0627\u0644\u0645\u062c\u0645\u0648\u0639\u0629 \u0641\u0642\u0637 \u0647\u064a \u0627\u0644\u062a\u064a \u0633\u062a\u0643\u0648\u0646 \u0642\u0627\u0628\u0644\u0629 \u0644\u0644\u062a\u0639\u062f\u064a\u0644 \u0628\u0648\u0627\u0633\u0637\u0629 \u0647\u0630\u0647 \u0627\u0644\u062e\u062f\u0645\u0629 +Method\ used\ to\ generate\ new\ resource\ IDs=\u0627\u0644\u0637\u0631\u064a\u0642\u0629 \u0627\u0644\u0645\u0633\u062a\u062e\u062f\u0645\u0629 \u0644\u0625\u0646\u0634\u0627\u0621 \u0645\u0639\u0631\u0641\u0627\u062a \u0627\u0644\u0645\u0648\u0627\u0631\u062f \u0627\u0644\u062c\u062f\u064a\u062f\u0629 +Minimum\ fillrate\ above\ which\ auto\ compact\ operations\ may\ be\ triggered=\u0627\u0644\u062d\u062f \u0627\u0644\u0623\u062f\u0646\u0649 \u0644\u0645\u0639\u062f\u0644 \u0627\u0644\u062a\u0639\u0628\u0626\u0629 \u0627\u0644\u0630\u064a \u0642\u062f \u064a\u062a\u0645 \u062a\u0634\u063a\u064a\u0644 \u0639\u0645\u0644\u064a\u0627\u062a \u0627\u0644\u0636\u063a\u0637 \u0627\u0644\u062a\u0644\u0642\u0627\u0626\u064a \u0641\u0648\u0642\u0647 +Minimum\ period\ between\ database\ commits\ (in\ ms)=\u0627\u0644\u062d\u062f \u0627\u0644\u0623\u062f\u0646\u0649 \u0644\u0644\u0641\u062a\u0631\u0629 \u0628\u064a\u0646 \u0639\u0645\u0644\u064a\u0627\u062a \u062a\u0646\u0641\u064a\u0630 \u0642\u0627\u0639\u062f\u0629 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a (\u0628\u0627\u0644\u0645\u0644\u0644\u064a \u062b\u0627\u0646\u064a\u0629) +Names\ of\ datastreams\ whose\ data\ will\ be\ hidden\ from\ the\ SOS.\ If\ this\ is\ null,\ all\ streams\ produced\ by\ the\ procedure\ are\ exposed=\u0623\u0633\u0645\u0627\u0621 \u062a\u062f\u0641\u0642\u0627\u062a \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u062a\u064a \u0633\u064a\u062a\u0645 \u0625\u062e\u0641\u0627\u0621 \u0628\u064a\u0627\u0646\u0627\u062a\u0647\u0627 \u0639\u0646 \u062e\u062f\u0645\u0629 SOS. \u0625\u0630\u0627 \u0643\u0627\u0646 \u0647\u0630\u0627 \u0641\u0627\u0631\u063a\u064b\u0627\u060c \u0641\u0633\u064a\u062a\u0645 \u0643\u0634\u0641 \u0643\u0627\u0641\u0629 \u0627\u0644\u062a\u062f\u0641\u0642\u0627\u062a \u0627\u0644\u0646\u0627\u062a\u062c\u0629 \u0639\u0646 \u0627\u0644\u0625\u062c\u0631\u0627\u0621 +Observed\ Properties=\u0627\u0644\u062e\u0635\u0627\u0626\u0635 \u0627\u0644\u0645\u0631\u0635\u0648\u062f\u0629 +Offering\ URI\ as\ exposed\ in\ capabilities.\ (if\ null,\ the\ procedure\ UID\ is\ used)=\u062a\u0642\u062f\u064a\u0645 URI \u0643\u0645\u0627 \u0647\u0648 \u0645\u0648\u0636\u062d \u0641\u064a \u0627\u0644\u0642\u062f\u0631\u0627\u062a. (\u0625\u0630\u0627 \u0643\u0627\u0646 \u0641\u0627\u0631\u063a\u064b\u0627\u060c \u0641\u0633\u064a\u062a\u0645 \u0627\u0633\u062a\u062e\u062f\u0627\u0645 UID \u0644\u0644\u0625\u062c\u0631\u0627\u0621) +Offering\ description\ (if\ null,\ it\ will\ be\ auto-generated)=\u0648\u0635\u0641 \u0627\u0644\u0639\u0631\u0636 (\u0625\u0630\u0627 \u0643\u0627\u0646 \u0641\u0627\u0631\u063a\u064b\u0627\u060c \u0641\u0633\u064a\u062a\u0645 \u0625\u0646\u0634\u0627\u0624\u0647 \u062a\u0644\u0642\u0627\u0626\u064a\u064b\u0627) +Offering\ name\ (if\ null,\ the\ procedure\ name\ is\ used)=\u0627\u0633\u0645 \u0627\u0644\u0639\u0631\u0636 (\u0625\u0630\u0627 \u0643\u0627\u0646 \u0641\u0627\u0631\u063a\u064b\u0627\u060c \u064a\u062a\u0645 \u0627\u0633\u062a\u062e\u062f\u0627\u0645 \u0627\u0633\u0645 \u0627\u0644\u0625\u062c\u0631\u0627\u0621) +Orientation\ as\ Euler\ angles\ in\ NED\ coordinate\ reference\ frame.\nOrder\ of\ rotations\ is\ z-y\u2019-x"\ (in\ rotating\ frame)\ or\ x-y-z\ (in\ fixed\ frame)=\u0627\u0644\u0627\u062a\u062c\u0627\u0647 \u0643\u0632\u0648\u0627\u064a\u0627 \u0623\u0648\u064a\u0644\u0631 \u0641\u064a \u0627\u0644\u0625\u0637\u0627\u0631 \u0627\u0644\u0645\u0631\u062c\u0639\u064a \u0627\u0644\u0625\u062d\u062f\u0627\u062b\u064a NED.\n\u062a\u0631\u062a\u064a\u0628 \u0627\u0644\u062f\u0648\u0631\u0627\u062a \u0647\u0648 z-y''-x" (\u0641\u064a \u0627\u0644\u0625\u0637\u0627\u0631 \u0627\u0644\u062f\u0648\u0627\u0631) \u0623\u0648 x-y-z (\u0641\u064a \u0627\u0644\u0625\u0637\u0627\u0631 \u0627\u0644\u062b\u0627\u0628\u062a) +Password\ for\ the\ key\ store\ (and\ for\ the\ keypair\ within\ the\ keystore).\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ "javax.net.ssl.keyStorePassword"\ system\ property.\ This\ value\ can\ use\ variable\ expansion\ expressions\ of\ the\ form\ "$${name}"\ (for\ environment\ variables\ and\ system\ properties)\ or\ "$${file;/path/to/file}"\ (for\ secret\ file\ contents).=\u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631 \u0644\u0645\u062e\u0632\u0646 \u0627\u0644\u0645\u0641\u0627\u062a\u064a\u062d (\u0648\u0644\u0632\u0648\u062c \u0627\u0644\u0645\u0641\u0627\u062a\u064a\u062d \u062f\u0627\u062e\u0644 \u0645\u062e\u0632\u0646 \u0627\u0644\u0645\u0641\u0627\u062a\u064a\u062d). \u0625\u0630\u0627 \u0643\u0627\u0646\u062a \u0647\u0630\u0647 \u0627\u0644\u0642\u064a\u0645\u0629 \u0641\u0627\u0631\u063a\u0629\u060c \u0641\u0633\u064a\u062a\u0645 \u0627\u0633\u062a\u062e\u062f\u0627\u0645 \u0642\u064a\u0645\u0629 \u062e\u0627\u0635\u064a\u0629 \u0627\u0644\u0646\u0638\u0627\u0645 "javax.net.ssl.keyStorePassword" \u0628\u0634\u0643\u0644 \u0627\u0641\u062a\u0631\u0627\u0636\u064a. \u064a\u0645\u0643\u0646 \u0644\u0647\u0630\u0647 \u0627\u0644\u0642\u064a\u0645\u0629 \u0627\u0633\u062a\u062e\u062f\u0627\u0645 \u062a\u0639\u0628\u064a\u0631\u0627\u062a \u062a\u0648\u0633\u064a\u0639 \u0645\u062a\u063a\u064a\u0631\u0629 \u0645\u0646 \u0627\u0644\u0646\u0645\u0648\u0630\u062c "$${name}" (\u0644\u0645\u062a\u063a\u064a\u0631\u0627\u062a \u0627\u0644\u0628\u064a\u0626\u0629 \u0648\u062e\u0635\u0627\u0626\u0635 \u0627\u0644\u0646\u0638\u0627\u0645) \u0623\u0648 "$${file;/path/to/file}" (\u0644\u0645\u062d\u062a\u0648\u064a\u0627\u062a \u0627\u0644\u0645\u0644\u0641 \u0627\u0644\u0633\u0631\u064a). +Password\ for\ the\ trust\ store.\ Ignored\ if\ client\ certificate\ authentication\ is\ not\ used.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ "javax.net.ssl.trustStorePassword"\ system\ property.\ This\ value\ can\ use\ variable\ expansion\ expressions\ of\ the\ form\ "$${name}"\ (for\ environment\ variables\ and\ system\ properties)\ or\ "$${file;/path/to/file}"\ (for\ secret\ file\ contents).=\u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631 \u0644\u0645\u062a\u062c\u0631 \u0627\u0644\u062b\u0642\u0629. \u064a\u062a\u0645 \u062a\u062c\u0627\u0647\u0644\u0647 \u0625\u0630\u0627 \u0644\u0645 \u064a\u062a\u0645 \u0627\u0633\u062a\u062e\u062f\u0627\u0645 \u0645\u0635\u0627\u062f\u0642\u0629 \u0634\u0647\u0627\u062f\u0629 \u0627\u0644\u0639\u0645\u064a\u0644. \u0625\u0630\u0627 \u0643\u0627\u0646\u062a \u0647\u0630\u0647 \u0627\u0644\u0642\u064a\u0645\u0629 \u0641\u0627\u0631\u063a\u0629\u060c \u0641\u0633\u064a\u062a\u0645 \u0627\u0633\u062a\u062e\u062f\u0627\u0645 \u0642\u064a\u0645\u0629 \u062e\u0627\u0635\u064a\u0629 \u0627\u0644\u0646\u0638\u0627\u0645 "javax.net.ssl.trustStorePassword" \u0628\u0634\u0643\u0644 \u0627\u0641\u062a\u0631\u0627\u0636\u064a. \u064a\u0645\u0643\u0646 \u0644\u0647\u0630\u0647 \u0627\u0644\u0642\u064a\u0645\u0629 \u0627\u0633\u062a\u062e\u062f\u0627\u0645 \u062a\u0639\u0628\u064a\u0631\u0627\u062a \u062a\u0648\u0633\u064a\u0639 \u0645\u062a\u063a\u064a\u0631\u0629 \u0645\u0646 \u0627\u0644\u0646\u0645\u0648\u0630\u062c "$${name}" (\u0644\u0645\u062a\u063a\u064a\u0631\u0627\u062a \u0627\u0644\u0628\u064a\u0626\u0629 \u0648\u062e\u0635\u0627\u0626\u0635 \u0627\u0644\u0646\u0638\u0627\u0645) \u0623\u0648 "$${file;/path/to/file}" (\u0644\u0645\u062d\u062a\u0648\u064a\u0627\u062a \u0627\u0644\u0645\u0644\u0641 \u0627\u0644\u0633\u0631\u064a). +Path\ of\ service\ endpoint\ relative\ to\ the\ context\ URL\ (e.g.\ http\://server.net/sensorhub)=\u0645\u0633\u0627\u0631 \u0646\u0642\u0637\u0629 \u0646\u0647\u0627\u064a\u0629 \u0627\u0644\u062e\u062f\u0645\u0629 \u0628\u0627\u0644\u0646\u0633\u0628\u0629 \u0625\u0644\u0649 \u0639\u0646\u0648\u0627\u0646 URL \u0644\u0644\u0633\u064a\u0627\u0642 (\u0639\u0644\u0649 \u0633\u0628\u064a\u0644 \u0627\u0644\u0645\u062b\u0627\u0644 http://server.net/sensorhub) +Path\ to\ a\ key\ store\ containing\ the\ certificate\ and\ keypair\ that\ this\ server\ will\ present\ to\ clients\ when\ accessed\ over\ HTTPS.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ "javax.net.ssl.keyStore"\ system\ property.\ This\ value\ can\ use\ variable\ expansion\ expressions\ of\ the\ form\ "$${name}"\ (for\ environment\ variables\ and\ system\ properties)\ or\ "$${file;/path/to/file}"\ (for\ secret\ file\ contents).=\u0627\u0644\u0645\u0633\u0627\u0631 \u0625\u0644\u0649 \u0645\u062e\u0632\u0646 \u0627\u0644\u0645\u0641\u0627\u062a\u064a\u062d \u0627\u0644\u0630\u064a \u064a\u062d\u062a\u0648\u064a \u0639\u0644\u0649 \u0627\u0644\u0634\u0647\u0627\u062f\u0629 \u0648\u0632\u0648\u062c \u0627\u0644\u0645\u0641\u0627\u062a\u064a\u062d \u0627\u0644\u0630\u064a \u0633\u064a\u0642\u062f\u0645\u0647 \u0647\u0630\u0627 \u0627\u0644\u062e\u0627\u062f\u0645 \u0644\u0644\u0639\u0645\u0644\u0627\u0621 \u0639\u0646\u062f \u0627\u0644\u0648\u0635\u0648\u0644 \u0625\u0644\u064a\u0647 \u0639\u0628\u0631 HTTPS. \u0625\u0630\u0627 \u0643\u0627\u0646\u062a \u0647\u0630\u0647 \u0627\u0644\u0642\u064a\u0645\u0629 \u0641\u0627\u0631\u063a\u0629\u060c \u0641\u0633\u064a\u062a\u0645 \u0627\u0633\u062a\u062e\u062f\u0627\u0645 \u0642\u064a\u0645\u0629 \u062e\u0627\u0635\u064a\u0629 \u0627\u0644\u0646\u0638\u0627\u0645 "javax.net.ssl.keyStore" \u0628\u0634\u0643\u0644 \u0627\u0641\u062a\u0631\u0627\u0636\u064a. \u064a\u0645\u0643\u0646 \u0644\u0647\u0630\u0647 \u0627\u0644\u0642\u064a\u0645\u0629 \u0627\u0633\u062a\u062e\u062f\u0627\u0645 \u062a\u0639\u0628\u064a\u0631\u0627\u062a \u062a\u0648\u0633\u064a\u0639 \u0645\u062a\u063a\u064a\u0631\u0629 \u0645\u0646 \u0627\u0644\u0646\u0645\u0648\u0630\u062c "$${name}" (\u0644\u0645\u062a\u063a\u064a\u0631\u0627\u062a \u0627\u0644\u0628\u064a\u0626\u0629 \u0648\u062e\u0635\u0627\u0626\u0635 \u0627\u0644\u0646\u0638\u0627\u0645) \u0623\u0648 "$${file;/path/to/file}" (\u0644\u0645\u062d\u062a\u0648\u064a\u0627\u062a \u0627\u0644\u0645\u0644\u0641 \u0627\u0644\u0633\u0631\u064a). +Path\ to\ database\ file=\u0627\u0644\u0645\u0633\u0627\u0631 \u0625\u0644\u0649 \u0645\u0644\u0641 \u0642\u0627\u0639\u062f\u0629 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a +Path\ to\ external\ config\ file\ (in\ Jetty\ IOC\ XML\ format)=\u0627\u0644\u0645\u0633\u0627\u0631 \u0625\u0644\u0649 \u0645\u0644\u0641 \u0627\u0644\u062a\u0643\u0648\u064a\u0646 \u0627\u0644\u062e\u0627\u0631\u062c\u064a (\u0628\u062a\u0646\u0633\u064a\u0642 Jetty IOC XML) +Path\ to\ the\ TLS\ trust\ store\ that\ is\ used\ when\ client\ authentication\ is\ required.\ Ignored\ if\ client\ certificate\ authentication\ is\ not\ used.\ Certificates\ in\ this\ file\ designate\ the\ signing\ authorities\ for\ client\ certificates\ that\ will\ be\ trusted.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ "javax.net.ssl.trustStore"\ system\ property.\ This\ value\ can\ use\ variable\ expansion\ expressions\ of\ the\ form\ "$${name}"\ (for\ environment\ variables\ and\ system\ properties)\ or\ "$${file;/path/to/file}"\ (for\ secret\ file\ contents).=\u0627\u0644\u0645\u0633\u0627\u0631 \u0625\u0644\u0649 \u0645\u062e\u0632\u0646 \u062b\u0642\u0629 TLS \u0627\u0644\u0630\u064a \u064a\u062a\u0645 \u0627\u0633\u062a\u062e\u062f\u0627\u0645\u0647 \u0639\u0646\u062f\u0645\u0627 \u062a\u0643\u0648\u0646 \u0645\u0635\u0627\u062f\u0642\u0629 \u0627\u0644\u0639\u0645\u064a\u0644 \u0645\u0637\u0644\u0648\u0628\u0629. \u064a\u062a\u0645 \u062a\u062c\u0627\u0647\u0644\u0647 \u0625\u0630\u0627 \u0644\u0645 \u064a\u062a\u0645 \u0627\u0633\u062a\u062e\u062f\u0627\u0645 \u0645\u0635\u0627\u062f\u0642\u0629 \u0634\u0647\u0627\u062f\u0629 \u0627\u0644\u0639\u0645\u064a\u0644. \u062a\u062d\u062f\u062f \u0627\u0644\u0634\u0647\u0627\u062f\u0627\u062a \u0627\u0644\u0645\u0648\u062c\u0648\u062f\u0629 \u0641\u064a \u0647\u0630\u0627 \u0627\u0644\u0645\u0644\u0641 \u0635\u0644\u0627\u062d\u064a\u0627\u062a \u0627\u0644\u062a\u0648\u0642\u064a\u0639 \u0644\u0634\u0647\u0627\u062f\u0627\u062a \u0627\u0644\u0639\u0645\u064a\u0644 \u0627\u0644\u062a\u064a \u0633\u064a\u062a\u0645 \u0627\u0644\u0648\u062b\u0648\u0642 \u0628\u0647\u0627. \u0625\u0630\u0627 \u0643\u0627\u0646\u062a \u0647\u0630\u0647 \u0627\u0644\u0642\u064a\u0645\u0629 \u0641\u0627\u0631\u063a\u0629\u060c \u0641\u0633\u064a\u062a\u0645 \u0627\u0633\u062a\u062e\u062f\u0627\u0645 \u0642\u064a\u0645\u0629 \u062e\u0627\u0635\u064a\u0629 \u0627\u0644\u0646\u0638\u0627\u0645 "javax.net.ssl.trustStore" \u0628\u0634\u0643\u0644 \u0627\u0641\u062a\u0631\u0627\u0636\u064a. \u064a\u0645\u0643\u0646 \u0644\u0647\u0630\u0647 \u0627\u0644\u0642\u064a\u0645\u0629 \u0627\u0633\u062a\u062e\u062f\u0627\u0645 \u062a\u0639\u0628\u064a\u0631\u0627\u062a \u062a\u0648\u0633\u064a\u0639 \u0645\u062a\u063a\u064a\u0631\u0629 \u0645\u0646 \u0627\u0644\u0646\u0645\u0648\u0630\u062c "$${name}" (\u0644\u0645\u062a\u063a\u064a\u0631\u0627\u062a \u0627\u0644\u0628\u064a\u0626\u0629 \u0648\u062e\u0635\u0627\u0626\u0635 \u0627\u0644\u0646\u0638\u0627\u0645) \u0623\u0648 "$${file;/path/to/file}" (\u0644\u0645\u062d\u062a\u0648\u064a\u0627\u062a \u0627\u0644\u0645\u0644\u0641 \u0627\u0644\u0633\u0631\u064a). +Port\ number\ to\ connect\ to\ on\ remote\ host\ (0\ to\ automatically\ select\ a\ port)=\u0631\u0642\u0645 \u0627\u0644\u0645\u0646\u0641\u0630 \u0644\u0644\u0627\u062a\u0635\u0627\u0644 \u0628\u0647 \u0639\u0644\u0649 \u0627\u0644\u0645\u0636\u064a\u0641 \u0627\u0644\u0628\u0639\u064a\u062f (0 \u0644\u062a\u062d\u062f\u064a\u062f \u0645\u0646\u0641\u0630 \u062a\u0644\u0642\u0627\u0626\u064a\u064b\u0627) +SOS\ Endpoint=\u0646\u0642\u0637\u0629 \u0646\u0647\u0627\u064a\u0629 SOS +SOS\ endpoint\ to\ fetch\ data\ from=\u0646\u0642\u0637\u0629 \u0646\u0647\u0627\u064a\u0629 SOS \u0644\u062c\u0644\u0628 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0645\u0646\u0647\u0627 +SOS\ endpoint\ where\ the\ requests\ are\ sent=\u0646\u0642\u0637\u0629 \u0646\u0647\u0627\u064a\u0629 SOS \u062d\u064a\u062b \u064a\u062a\u0645 \u0625\u0631\u0633\u0627\u0644 \u0627\u0644\u0637\u0644\u0628\u0627\u062a +SPS\ Endpoint=\u0646\u0642\u0637\u0629 \u0646\u0647\u0627\u064a\u0629 SPS +SPS\ endpoint\ to\ send\ commands\ to=\u0646\u0642\u0637\u0629 \u0646\u0647\u0627\u064a\u0629 SPS \u0644\u0625\u0631\u0633\u0627\u0644 \u0627\u0644\u0623\u0648\u0627\u0645\u0631 \u0625\u0644\u064a\u0647\u0627 +Security\ related\ options=\u0627\u0644\u062e\u064a\u0627\u0631\u0627\u062a \u0627\u0644\u0645\u062a\u0639\u0644\u0642\u0629 \u0628\u0627\u0644\u0623\u0645\u0646 +Sensor\ UID=\u0645\u0639\u0631\u0641 \u0627\u0644\u0645\u0633\u062a\u0634\u0639\u0631 \u0627\u0644\u0641\u0631\u064a\u062f +Set\ if\ WebSocket\ protocol\ should\ be\ used\ to\ get\ streaming\ data\ from\ SOS=\u0642\u0645 \u0628\u062a\u0639\u064a\u064a\u0646 \u0645\u0627 \u0625\u0630\u0627 \u0643\u0627\u0646 \u064a\u062c\u0628 \u0627\u0633\u062a\u062e\u062f\u0627\u0645 \u0628\u0631\u0648\u062a\u0648\u0643\u0648\u0644 WebSocket \u0644\u0644\u062d\u0635\u0648\u0644 \u0639\u0644\u0649 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u0645\u062a\u062f\u0641\u0642\u0629 \u0645\u0646 SOS +Set\ if\ offering\ is\ enabled,\ unset\ if\ disabled=\u0642\u0645 \u0628\u062a\u0639\u064a\u064a\u0646 \u0645\u0627 \u0625\u0630\u0627 \u0643\u0627\u0646 \u0627\u0644\u0639\u0631\u0636 \u0645\u0645\u0643\u0651\u0646\u064b\u0627\u060c \u0648\u0625\u0644\u063a\u0627\u0621 \u0627\u0644\u0636\u0628\u0637 \u0625\u0630\u0627 \u062a\u0645 \u062a\u0639\u0637\u064a\u0644\u0647 +Set\ if\ websockets\ protocol\ should\ be\ used\ to\ send\ commands\ to\ SPS=\u0642\u0645 \u0628\u062a\u0639\u064a\u064a\u0646 \u0645\u0627 \u0625\u0630\u0627 \u0643\u0627\u0646 \u064a\u062c\u0628 \u0627\u0633\u062a\u062e\u062f\u0627\u0645 \u0628\u0631\u0648\u062a\u0648\u0643\u0648\u0644 websockets \u0644\u0625\u0631\u0633\u0627\u0644 \u0627\u0644\u0623\u0648\u0627\u0645\u0631 \u0625\u0644\u0649 SPS +Set\ to\ compact\ the\ database\ file\ when\ the\ database\ module\ is\ stopped\ or\ restarted=\u0642\u0645 \u0628\u0627\u0644\u062a\u0639\u064a\u064a\u0646 \u0644\u0636\u063a\u0637 \u0645\u0644\u0641 \u0642\u0627\u0639\u062f\u0629 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0639\u0646\u062f \u0625\u064a\u0642\u0627\u0641 \u0648\u062d\u062f\u0629 \u0642\u0627\u0639\u062f\u0629 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0623\u0648 \u0625\u0639\u0627\u062f\u0629 \u062a\u0634\u063a\u064a\u0644\u0647\u0627 +Set\ to\ compress\ underlying\ file\ storage=\u0627\u0636\u0628\u0637 \u0644\u0636\u063a\u0637 \u062a\u062e\u0632\u064a\u0646 \u0627\u0644\u0645\u0644\u0641\u0627\u062a \u0627\u0644\u0623\u0633\u0627\u0633\u064a\u0629 +Set\ to\ display\ MVStore\ debug\ info\ when\ database\ is\ closed\ (only\ if\ DEBUG\ log\ is\ also\ enabled)=\u0627\u0636\u0628\u0637 \u0644\u0639\u0631\u0636 \u0645\u0639\u0644\u0648\u0645\u0627\u062a \u062a\u0635\u062d\u064a\u062d MVStore \u0639\u0646\u062f \u0625\u063a\u0644\u0627\u0642 \u0642\u0627\u0639\u062f\u0629 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a (\u0641\u0642\u0637 \u0641\u064a \u062d\u0627\u0644\u0629 \u062a\u0645\u0643\u064a\u0646 \u0633\u062c\u0644 DEBUG \u0623\u064a\u0636\u064b\u0627) +Set\ to\ enable\ spatial\ indexing\ of\ individual\ observations\ sampling\ locations\ (when\ provided)=\u062a\u0645 \u062a\u0639\u064a\u064a\u0646\u0647 \u0644\u062a\u0645\u0643\u064a\u0646 \u0627\u0644\u0641\u0647\u0631\u0633\u0629 \u0627\u0644\u0645\u0643\u0627\u0646\u064a\u0629 \u0644\u0645\u0648\u0627\u0642\u0639 \u0623\u062e\u0630 \u0639\u064a\u0646\u0627\u062a \u0627\u0644\u0645\u0644\u0627\u062d\u0638\u0627\u062a \u0627\u0644\u0641\u0631\u062f\u064a\u0629 (\u0639\u0646\u062f \u062a\u0648\u0641\u0631\u0647\u0627) +Set\ to\ open\ the\ database\ as\ read-only=\u062a\u0639\u064a\u064a\u0646 \u0644\u0641\u062a\u062d \u0642\u0627\u0639\u062f\u0629 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0644\u0644\u0642\u0631\u0627\u0621\u0629 \u0641\u0642\u0637 +Set\ to\ true\ to\ enable\ transactional\ operation\ support=\u0627\u0636\u0628\u0637 \u0639\u0644\u0649 "\u0635\u062d\u064a\u062d" \u0644\u062a\u0645\u0643\u064a\u0646 \u062f\u0639\u0645 \u0639\u0645\u0644\u064a\u0627\u062a \u0627\u0644\u0645\u0639\u0627\u0645\u0644\u0627\u062a +Size\ of\ the\ auto-commit\ write\ buffer,\ in\ KB=\u062d\u062c\u0645 \u0627\u0644\u0645\u062e\u0632\u0646 \u0627\u0644\u0645\u0624\u0642\u062a \u0644\u0644\u0643\u062a\u0627\u0628\u0629 \u0627\u0644\u062a\u0644\u0642\u0627\u0626\u064a\u060c \u0628\u0627\u0644\u0643\u064a\u0644\u0648\u0628\u0627\u064a\u062a +TCP\ port\ where\ server\ will\ listen\ for\ secure\ HTTP\ (HTTPS)\ connections\ (use\ 0\ to\ disable\ HTTPS).=\u0645\u0646\u0641\u0630 TCP \u062d\u064a\u062b \u0633\u064a\u0633\u062a\u0645\u0639 \u0627\u0644\u062e\u0627\u062f\u0645 \u0625\u0644\u0649 \u0627\u062a\u0635\u0627\u0644\u0627\u062a HTTP (HTTPS) \u0627\u0644\u0622\u0645\u0646\u0629 (\u0627\u0633\u062a\u062e\u062f\u0645 0 \u0644\u062a\u0639\u0637\u064a\u0644 HTTPS). +TCP\ port\ where\ server\ will\ listen\ for\ unsecure\ HTTP\ connections\ (use\ 0\ to\ disable\ HTTP).=\u0645\u0646\u0641\u0630 TCP \u062d\u064a\u062b \u0633\u064a\u0633\u062a\u0645\u0639 \u0627\u0644\u062e\u0627\u062f\u0645 \u0625\u0644\u0649 \u0627\u062a\u0635\u0627\u0644\u0627\u062a HTTP \u063a\u064a\u0631 \u0627\u0644\u0622\u0645\u0646\u0629 (\u0627\u0633\u062a\u062e\u062f\u0645 0 \u0644\u062a\u0639\u0637\u064a\u0644 HTTP). +Time-out\ after\ which\ real-time\ requests\ are\ disabled\ if\ no\ more\ measurements\ are\ received\ (in\ seconds).\ Real-time\ is\ reactivated\ as\ soon\ as\ new\ records\ start\ being\ received\ again=\u0627\u0644\u0645\u0647\u0644\u0629 \u0627\u0644\u062a\u064a \u064a\u062a\u0645 \u0628\u0639\u062f\u0647\u0627 \u062a\u0639\u0637\u064a\u0644 \u0637\u0644\u0628\u0627\u062a \u0627\u0644\u0648\u0642\u062a \u0627\u0644\u0641\u0639\u0644\u064a \u0641\u064a \u062d\u0627\u0644\u0629 \u0639\u062f\u0645 \u062a\u0644\u0642\u064a \u0627\u0644\u0645\u0632\u064a\u062f \u0645\u0646 \u0627\u0644\u0642\u064a\u0627\u0633\u0627\u062a (\u0628\u0627\u0644\u062b\u0648\u0627\u0646\u064a). \u062a\u062a\u0645 \u0625\u0639\u0627\u062f\u0629 \u062a\u0646\u0634\u064a\u0637 \u0627\u0644\u0648\u0642\u062a \u0627\u0644\u0641\u0639\u0644\u064a \u0628\u0645\u062c\u0631\u062f \u0628\u062f\u0621 \u062a\u0644\u0642\u064a \u0627\u0644\u0633\u062c\u0644\u0627\u062a \u0627\u0644\u062c\u062f\u064a\u062f\u0629 \u0645\u0631\u0629 \u0623\u062e\u0631\u0649 +Time-out\ period\ after\ which\ a\ template\ ID\ reserved\ using\ InsertResultTemplate\ will\ expire\ if\ not\ used\ in\ InsertResult\ requests\ (in\ seconds)=\u0641\u062a\u0631\u0629 \u0627\u0644\u0645\u0647\u0644\u0629 \u0627\u0644\u062a\u064a \u062a\u0646\u062a\u0647\u064a \u0628\u0639\u062f\u0647\u0627 \u0635\u0644\u0627\u062d\u064a\u0629 \u0645\u0639\u0631\u0641 \u0627\u0644\u0642\u0627\u0644\u0628 \u0627\u0644\u0645\u062d\u062c\u0648\u0632 \u0628\u0627\u0633\u062a\u062e\u062f\u0627\u0645 InsertResultTemplate \u0625\u0630\u0627 \u0644\u0645 \u064a\u062a\u0645 \u0627\u0633\u062a\u062e\u062f\u0627\u0645\u0647 \u0641\u064a \u0637\u0644\u0628\u0627\u062a InsertResult (\u0628\u0627\u0644\u062b\u0648\u0627\u0646\u064a) +Timeout\ after\ which\ data\ is\ released\ to\ the\ caller\ if\ at\ least\ one\ byte\ was\ received\ (in\ ms)=\u0627\u0644\u0645\u0647\u0644\u0629 \u0627\u0644\u062a\u064a \u064a\u062a\u0645 \u0628\u0639\u062f\u0647\u0627 \u0625\u0635\u062f\u0627\u0631 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0644\u0644\u0645\u062a\u0635\u0644 \u0625\u0630\u0627 \u062a\u0645 \u0627\u0633\u062a\u0644\u0627\u0645 \u0628\u0627\u064a\u062a \u0648\u0627\u062d\u062f \u0639\u0644\u0649 \u0627\u0644\u0623\u0642\u0644 (\u0628\u0627\u0644\u0645\u0644\u0644\u064a \u062b\u0627\u0646\u064a\u0629) +URI\ Prefix\ Map=\u062e\u0631\u064a\u0637\u0629 \u0628\u0627\u062f\u0626\u0629 URI +Unique\ ID\ (full\ URN\ or\ only\ suffix)\ to\ use\ for\ the\ sensor\ system\ or\ 'auto'\ to\ use\ the\ UUID\ randomly\ generated\ the\ first\ time\ the\ module\ is\ initialized=\u0645\u0639\u0631\u0641 \u0641\u0631\u064a\u062f (URN \u0643\u0627\u0645\u0644 \u0623\u0648 \u0644\u0627\u062d\u0642\u0629 \u0641\u0642\u0637) \u0644\u0627\u0633\u062a\u062e\u062f\u0627\u0645\u0647 \u0641\u064a \u0646\u0638\u0627\u0645 \u0627\u0644\u0627\u0633\u062a\u0634\u0639\u0627\u0631 \u0623\u0648 "\u062a\u0644\u0642\u0627\u0626\u064a" \u0644\u0627\u0633\u062a\u062e\u062f\u0627\u0645 UUID \u0627\u0644\u0630\u064a \u062a\u0645 \u0625\u0646\u0634\u0627\u0624\u0647 \u0628\u0634\u0643\u0644 \u0639\u0634\u0648\u0627\u0626\u064a \u0641\u064a \u0627\u0644\u0645\u0631\u0629 \u0627\u0644\u0623\u0648\u0644\u0649 \u0627\u0644\u062a\u064a \u062a\u062a\u0645 \u0641\u064a\u0647\u0627 \u062a\u0647\u064a\u0626\u0629 \u0627\u0644\u0648\u062d\u062f\u0629 +Unique\ ID\ of\ a\ system\ that\ this\ configuration\ applies\ to.\nCan\ include\ a\ trailing\ wildcard\ '*'\ to\ match\ several\ systems\ at\ once.=\u0627\u0644\u0645\u0639\u0631\u0641 \u0627\u0644\u0641\u0631\u064a\u062f \u0644\u0644\u0646\u0638\u0627\u0645 \u0627\u0644\u0630\u064a \u064a\u0646\u0637\u0628\u0642 \u0639\u0644\u064a\u0647 \u0647\u0630\u0627 \u0627\u0644\u062a\u0643\u0648\u064a\u0646.\n\u064a\u0645\u0643\u0646 \u0623\u0646 \u064a\u062a\u0636\u0645\u0646 \u062d\u0631\u0641 \u0628\u062f\u0644 \u0632\u0627\u0626\u062f\u0629 "*" \u0644\u0645\u0637\u0627\u0628\u0642\u0629 \u0639\u062f\u0629 \u0623\u0646\u0638\u0645\u0629 \u0641\u064a \u0648\u0642\u062a \u0648\u0627\u062d\u062f. +Unique\ ID\ of\ sensor\ to\ connect\ to\ on\ SOS\ and\ SPS\ servers=\u0645\u0639\u0631\u0641 \u0641\u0631\u064a\u062f \u0644\u0644\u0645\u0633\u062a\u0634\u0639\u0631 \u0644\u0644\u0627\u062a\u0635\u0627\u0644 \u0628\u0647 \u0639\u0644\u0649 \u062e\u0648\u0627\u062f\u0645 SOS \u0648SPS +Unique\ ID\ of\ system\ that\ this\ configuration\ applies\ to.\nCan\ include\ a\ trailing\ wildcard\ '*'\ to\ match\ several\ systems\ at\ once.=\u0627\u0644\u0645\u0639\u0631\u0641 \u0627\u0644\u0641\u0631\u064a\u062f \u0644\u0644\u0646\u0638\u0627\u0645 \u0627\u0644\u0630\u064a \u064a\u0646\u0637\u0628\u0642 \u0639\u0644\u064a\u0647 \u0647\u0630\u0627 \u0627\u0644\u062a\u0643\u0648\u064a\u0646.\n\u064a\u0645\u0643\u0646 \u0623\u0646 \u064a\u062a\u0636\u0645\u0646 \u062d\u0631\u0641 \u0628\u062f\u0644 \u0632\u0627\u0626\u062f\u0629 "*" \u0644\u0645\u0637\u0627\u0628\u0642\u0629 \u0639\u062f\u0629 \u0623\u0646\u0638\u0645\u0629 \u0641\u064a \u0648\u0642\u062a \u0648\u0627\u062d\u062f. +Use\ WebSockets\ for\ SOS=\u0627\u0633\u062a\u062e\u062f\u0645 WebSockets \u0644\u0640 SOS +Use\ WebSockets\ for\ SPS=\u0627\u0633\u062a\u062e\u062f\u0645 WebSockets \u0644\u0640 SPS + +Node\ ID=\u0645\u0639\u0631\u0641 \u0627\u0644\u0639\u0642\u062f\u0629 +Stats\ Frequency\ (min)=\u0627\u062d\u0635\u0627\u0626\u064a\u0627\u062a \u0627\u0644\u062a\u0631\u062f\u062f (\u062f\u0642\u064a\u0642\u0629) +Database\ URL=\u0639\u0646\u0648\u0627\u0646 URL \u0644\u0642\u0627\u0639\u062f\u0629 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a +Database\ Name=\u0627\u0633\u0645 \u0642\u0627\u0639\u062f\u0629 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a +ID\ Generator=\u0645\u0648\u0644\u062f \u0627\u0644\u0647\u0648\u064a\u0629 +Database\ Number=\u0631\u0642\u0645 \u0642\u0627\u0639\u062f\u0629 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a +Remote\ Host=\u0627\u0644\u0645\u0636\u064a\u0641 \u0627\u0644\u0628\u0639\u064a\u062f +Remote\ Port=\u0627\u0644\u0645\u0646\u0641\u0630 \u0627\u0644\u0628\u0639\u064a\u062f +Lane\ Width\ (m)=\u0639\u0631\u0636 \u0627\u0644\u0645\u0633\u0627\u0631 (\u0645) +Enable\ EML\ Analysis=\u062a\u0645\u0643\u064a\u0646 \u062a\u062d\u0644\u064a\u0644 EML +Is\ Collimated=\u064a\u062a\u0645 \u0645\u0648\u0627\u0632\u0627\u0629 +Stream\ Path=\u0645\u0633\u0627\u0631 \u0627\u0644\u062f\u0641\u0642 +Lane\ Options\ Config=\u062a\u0643\u0648\u064a\u0646 \u062e\u064a\u0627\u0631\u0627\u062a \u0627\u0644\u0645\u0633\u0627\u0631 diff --git a/sensorhub-webui-core/src/main/resources/org/sensorhub/ui/i18n/messages_ar_JO.properties b/sensorhub-webui-core/src/main/resources/org/sensorhub/ui/i18n/messages_ar_JO.properties new file mode 100644 index 0000000000..170d1e5802 --- /dev/null +++ b/sensorhub-webui-core/src/main/resources/org/sensorhub/ui/i18n/messages_ar_JO.properties @@ -0,0 +1,543 @@ +app.title=OpenSensorHub +tab.sensors=\u0623\u062c\u0647\u0632\u0629 \u0627\u0644\u0627\u0633\u062a\u0634\u0639\u0627\u0631 +tab.databases=\u0642\u0648\u0627\u0639\u062f \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a +tab.processing=\u0627\u0644\u0645\u0639\u0627\u0644\u062c +tab.services=\u0627\u0644\u062e\u062f\u0645\u0627\u062a +tab.clients=\u0627\u0644\u0639\u0645\u0644\u0627\u0621 +tab.network=\u0627\u0644\u0634\u0628\u0643\u0629 +tab.security=\u0627\u0644\u0623\u0645\u0627\u0646 +action.shutdown=\u0625\u064a\u0642\u0627\u0641 \u0627\u0644\u062a\u0634\u063a\u064a\u0644 +action.logout=\u062a\u0633\u062c\u064a\u0644 \u0627\u0644\u062e\u0631\u0648\u062c +action.save=\u062d\u0641\u0638 +action.addModule=\u0625\u0636\u0627\u0641\u0629 \u0648\u062d\u062f\u0629 \u062c\u062f\u064a\u062f\u0629 +action.addSubmodule=\u0625\u0636\u0627\u0641\u0629 \u0648\u062d\u062f\u0629 \u0641\u0631\u0639\u064a\u0629 +action.removeModule=\u0625\u0632\u0627\u0644\u0629 \u0627\u0644\u0648\u062d\u062f\u0629 +action.removeSubmodule=\u0625\u0632\u0627\u0644\u0629 \u0627\u0644\u0648\u062d\u062f\u0629 \u0627\u0644\u0641\u0631\u0639\u064a\u0629 +action.start=\u0628\u062f\u0621 +action.stop=\u0625\u064a\u0642\u0627\u0641 +action.restart=\u0625\u0639\u0627\u062f\u0629 \u0627\u0644\u062a\u0634\u063a\u064a\u0644 +action.forceInit=\u0641\u0631\u0636 \u0627\u0644\u062a\u0647\u064a\u0626\u0629 +action.selectAll=\u062a\u062d\u062f\u064a\u062f \u0627\u0644\u0643\u0644 +action.deselectAll=\u0625\u0644\u063a\u0627\u0621 \u062a\u062d\u062f\u064a\u062f \u0627\u0644\u0643\u0644 +dialog.shutdown.title=\u062a\u0645 \u0628\u062f\u0621 \u0625\u064a\u0642\u0627\u0641 \u0627\u0644\u062a\u0634\u063a\u064a\u0644... +dialog.shutdown.message=\u0633\u064a\u062a\u0648\u0642\u0641 \u0648\u0627\u062c\u0647\u0629 \u0627\u0644\u0645\u0633\u062a\u062e\u062f\u0645 \u0639\u0646 \u0627\u0644\u0627\u0633\u062a\u062c\u0627\u0628\u0629 +dialog.shutdown.confirm=\u0647\u0644 \u0623\u0646\u062a \u0645\u062a\u0623\u0643\u062f \u0623\u0646\u0643 \u062a\u0631\u064a\u062f \u0625\u064a\u0642\u0627\u0641 \u062a\u0634\u063a\u064a\u0644 \u0645\u0631\u0643\u0632 \u0627\u0644\u0627\u0633\u062a\u0634\u0639\u0627\u0631\u061f +dialog.logout.confirm=\u0647\u0644 \u0623\u0646\u062a \u0645\u062a\u0623\u0643\u062f \u0623\u0646\u0643 \u062a\u0631\u064a\u062f \u062a\u0633\u062c\u064a\u0644 \u0627\u0644\u062e\u0631\u0648\u062c\u061f +dialog.save.confirm=\u0647\u0644 \u0623\u0646\u062a \u0645\u062a\u0623\u0643\u062f \u0623\u0646\u0643 \u062a\u0631\u064a\u062f \u062d\u0641\u0638 \u0627\u0644\u062a\u0643\u0648\u064a\u0646 (\u0648\u0627\u0644\u0643\u062a\u0627\u0628\u0629 \u0641\u0648\u0642 \u0627\u0644\u0633\u0627\u0628\u0642)\u061f +msg.configSaved=\u062a\u0645 \u062d\u0641\u0638 \u062a\u0643\u0648\u064a\u0646 SensorHub +msg.configSaveError=\u0644\u0627 \u064a\u0645\u0643\u0646 \u062d\u0641\u0638 \u0627\u0644\u062a\u0643\u0648\u064a\u0646 +dialog.remove.confirm=\u0647\u0644 \u0623\u0646\u062a \u0645\u062a\u0623\u0643\u062f \u0623\u0646\u0643 \u062a\u0631\u064a\u062f \u0625\u0632\u0627\u0644\u0629 {0}\u061f
\u0633\u062a\u0641\u0642\u062f \u062c\u0645\u064a\u0639 \u0627\u0644\u0625\u0639\u062f\u0627\u062f\u0627\u062a. +msg.removeError=\u0644\u0645 \u064a\u062a\u0645 \u0625\u0632\u0627\u0644\u0629 {0} +msg.startError=\u0644\u0645 \u064a\u062a\u0645 \u0628\u062f\u0621 {0} +msg.stopError=\u0644\u0645 \u064a\u062a\u0645 \u0625\u064a\u0642\u0627\u0641 {0} +msg.restartError=\u0644\u0645 \u064a\u062a\u0645 \u0625\u0639\u0627\u062f\u0629 \u062a\u0634\u063a\u064a\u0644 {0} +msg.reinitError=\u0644\u0645 \u064a\u062a\u0645 \u0625\u0639\u0627\u062f\u0629 \u062a\u0647\u064a\u0626\u0629 {0} +msg.loadError=\u0644\u0627 \u064a\u0645\u0643\u0646 \u062a\u062d\u0645\u064a\u0644 \u0627\u0644\u0648\u062d\u062f\u0629 +msg.addSubmoduleError=\u0644\u0627 \u064a\u0645\u0643\u0646 \u0625\u0636\u0627\u0641\u0629 \u0648\u062d\u062f\u0629 \u0641\u0631\u0639\u064a\u0629 +about.title=\u062d\u0648\u0644 OpenSensorHub +about.desc=\u0645\u0646\u0635\u0629 \u0628\u0631\u0645\u062c\u064a\u0629 \u0644\u0628\u0646\u0627\u0621 \u0634\u0628\u0643\u0627\u062a \u0627\u0644\u0627\u0633\u062a\u0634\u0639\u0627\u0631 \u0627\u0644\u0630\u0643\u064a\u0629 \u0648\u0625\u0646\u062a\u0631\u0646\u062a \u0627\u0644\u0623\u0634\u064a\u0627\u0621 +about.license=\u0645\u0631\u062e\u0635 \u0628\u0645\u0648\u062c\u0628 \u0631\u062e\u0635\u0629 \u0645\u0648\u0632\u064a\u0644\u0627 \u0627\u0644\u0639\u0627\u0645\u0629 v2.0 +about.version=\u0627\u0644\u0625\u0635\u062f\u0627\u0631: +about.build=\u0631\u0642\u0645 \u0627\u0644\u0628\u0646\u0627\u0621: +about.deployment=\u0627\u0633\u0645 \u0627\u0644\u0646\u0634\u0631: +tooltip.shutdown=\u0625\u064a\u0642\u0627\u0641 \u062a\u0634\u063a\u064a\u0644 SensorHub +tooltip.logout=\u062a\u0633\u062c\u064a\u0644 \u0627\u0644\u062e\u0631\u0648\u062c \u0645\u0646 \u0639\u0642\u062f\u0629 OSH +tooltip.save=\u062d\u0641\u0638 \u062a\u0643\u0648\u064a\u0646 SensorHub +dialog.start.confirm=\u0647\u0644 \u0623\u0646\u062a \u0645\u062a\u0623\u0643\u062f \u0623\u0646\u0643 \u062a\u0631\u064a\u062f \u0628\u062f\u0621 {0}\u061f +dialog.stop.confirm=\u0647\u0644 \u0623\u0646\u062a \u0645\u062a\u0623\u0643\u062f \u0623\u0646\u0643 \u062a\u0631\u064a\u062f \u0625\u064a\u0642\u0627\u0641 {0}\u061f +dialog.restart.confirm=\u0647\u0644 \u0623\u0646\u062a \u0645\u062a\u0623\u0643\u062f \u0623\u0646\u0643 \u062a\u0631\u064a\u062f \u0625\u0639\u0627\u062f\u0629 \u062a\u0634\u063a\u064a\u0644 {0}\u061f +dialog.reinit.confirm=\u0647\u0644 \u0623\u0646\u062a \u0645\u062a\u0623\u0643\u062f \u0623\u0646\u0643 \u062a\u0631\u064a\u062f \u0641\u0631\u0636 \u0625\u0639\u0627\u062f\u0629 \u062a\u0647\u064a\u0626\u0629 {0}\u061f +backgroundUpdate=\u062a\u062d\u062f\u064a\u062b \u0627\u0644\u062e\u0644\u0641\u064a\u0629 +sigmaThreshold=\u0639\u062a\u0628\u0629 \u0633\u064a\u062c\u0645\u0627 +nuclideIdentification=\u062a\u062d\u062f\u064a\u062f \u0627\u0644\u0646\u0648\u064a\u062f\u0627\u062a +tamperAlarm=\u0625\u0646\u0630\u0627\u0631 \u0627\u0644\u062a\u0644\u0627\u0639\u0628 +occupancySensor=\u0645\u0633\u062a\u0634\u0639\u0631 \u0627\u0644\u0625\u0634\u063a\u0627\u0644 +stateOfHealth=\u062d\u0627\u0644\u0629 \u0627\u0644\u0635\u062d\u0629 +soh=\u0633\u0648\u0647 +1ScanThisQrCodeWithYourAuthenticatorApp=1. \u0627\u0645\u0633\u062d \u0631\u0645\u0632 \u0627\u0644\u0627\u0633\u062a\u062c\u0627\u0628\u0629 \u0627\u0644\u0633\u0631\u064a\u0639\u0629 \u0636\u0648\u0626\u064a\u064b\u0627 \u0628\u0627\u0633\u062a\u062e\u062f\u0627\u0645 \u062a\u0637\u0628\u064a\u0642 \u0627\u0644\u0645\u0635\u0627\u062f\u0642\u0629 \u0627\u0644\u062e\u0627\u0635 \u0628\u0643: +2EnterThe6digitCodeGeneratedByTheApp=2. \u0623\u062f\u062e\u0644 \u0627\u0644\u0631\u0645\u0632 \u0627\u0644\u0645\u0643\u0648\u0646 \u0645\u0646 6 \u0623\u0631\u0642\u0627\u0645 \u0627\u0644\u0630\u064a \u0623\u0646\u0634\u0623\u0647 \u0627\u0644\u062a\u0637\u0628\u064a\u0642: +orEnterThisSecretKeyManually=\u0623\u0648 \u0623\u062f\u062e\u0644 \u0647\u0630\u0627 \u0627\u0644\u0645\u0641\u062a\u0627\u062d \u0627\u0644\u0633\u0631\u064a \u064a\u062f\u0648\u064a\u064b\u0627: +loadingBundlesInformation=\u062c\u0627\u0631\u064d \u062a\u062d\u0645\u064a\u0644 \u0645\u0639\u0644\u0648\u0645\u0627\u062a \u0627\u0644\u062d\u0632\u0645... +loadingPackageInformation=\u062c\u0627\u0631\u064d \u062a\u062d\u0645\u064a\u0644 \u0645\u0639\u0644\u0648\u0645\u0627\u062a \u0627\u0644\u062d\u0632\u0645\u0629... +arrayComponentNotSupported=\u0645\u0643\u0648\u0646 \u0627\u0644\u0635\u0641\u064a\u0641 \u063a\u064a\u0631 \u0645\u062f\u0639\u0648\u0645 +twofactorAuthentication=\u0627\u0644\u0645\u0635\u0627\u062f\u0642\u0629 \u0627\u0644\u062b\u0646\u0627\u0626\u064a\u0629 +installMorePackages=\u062a\u062b\u0628\u064a\u062a \u0627\u0644\u0645\u0632\u064a\u062f \u0645\u0646 \u0627\u0644\u062d\u0632\u0645... +errorGeneratingQrCode=\u062d\u062f\u062b \u062e\u0637\u0623 \u0623\u062b\u0646\u0627\u0621 \u0625\u0646\u0634\u0627\u0621 \u0631\u0645\u0632 \u0627\u0644\u0627\u0633\u062a\u062c\u0627\u0628\u0629 \u0627\u0644\u0633\u0631\u064a\u0639\u0629 +installMoreModules=\u062a\u062b\u0628\u064a\u062a \u0627\u0644\u0645\u0632\u064a\u062f \u0645\u0646 \u0627\u0644\u0648\u062d\u062f\u0627\u062a... +detailedInstructions=\u062a\u0639\u0644\u064a\u0645\u0627\u062a \u0645\u0641\u0635\u0644\u0629 +availableNetworks=\u0627\u0644\u0634\u0628\u0643\u0627\u062a \u0627\u0644\u0645\u062a\u0627\u062d\u0629 +processParameters=\u0645\u0639\u0644\u0645\u0627\u062a \u0627\u0644\u0639\u0645\u0644\u064a\u0629 +verifyAndEnable=\u0627\u0644\u062a\u062d\u0642\u0642 \u0648\u0627\u0644\u062a\u0645\u0643\u064a\u0646 +dataSourceInfo=\u0645\u0639\u0644\u0648\u0645\u0627\u062a \u0645\u0635\u062f\u0631 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a +detectedDevices=\u0627\u0644\u0623\u062c\u0647\u0632\u0629 \u0627\u0644\u0645\u0643\u062a\u0634\u0641\u0629 +installSelected=\u062a\u062b\u0628\u064a\u062a \u0627\u0644\u0645\u062d\u062f\u062f +databaseContent=\u0645\u062d\u062a\u0648\u0649 \u0642\u0627\u0639\u062f\u0629 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a +itemsPerPage=\u0627\u0644\u0639\u0646\u0627\u0635\u0631 \u0644\u0643\u0644 \u0635\u0641\u062d\u0629: +commandInputs=\u0645\u062f\u062e\u0644\u0627\u062a \u0627\u0644\u0623\u0648\u0627\u0645\u0631 +processInputs=\u0645\u062f\u062e\u0644\u0627\u062a \u0627\u0644\u0639\u0645\u0644\u064a\u0629 +providerClass=\u0641\u0626\u0629 \u0627\u0644\u0645\u0632\u0648\u062f +processName=\u0627\u0633\u0645 \u0627\u0644\u0639\u0645\u0644\u064a\u0629: +configuration=\u0625\u0639\u062f\u0627\u062f\u0627\u062a +applyChanges=\u062a\u0637\u0628\u064a\u0642 \u0627\u0644\u062a\u063a\u064a\u064a\u0631\u0627\u062a +sendCommand=\u0625\u0631\u0633\u0627\u0644 \u0627\u0644\u0623\u0645\u0631 +useAddress=\u0627\u0633\u062a\u062e\u062f\u0645 \u0627\u0644\u0639\u0646\u0648\u0627\u0646 +selectNone=\u062d\u062f\u062f \u0644\u0627 \u0634\u064a\u0621 +timeRange=\u0627\u0644\u0646\u0637\u0627\u0642 \u0627\u0644\u0632\u0645\u0646\u064a: +permissions=\u0627\u0644\u0623\u0630\u0648\u0646\u0627\u062a +startScan=\u0627\u0628\u062f\u0623 \u0627\u0644\u0645\u0633\u062d +noReadme=\u0644\u0627 \u064a\u0648\u062c\u062f \u0645\u0644\u0641 \u062a\u0645\u0647\u064a\u062f\u064a +stopScan=\u0625\u064a\u0642\u0627\u0641 \u0627\u0644\u0645\u0633\u062d +reset2fa=\u0625\u0639\u0627\u062f\u0629 \u062a\u0639\u064a\u064a\u0646 2FA +previous=\u0633\u0627\u0628\u0642 +useName=\u0627\u0633\u062a\u062e\u062f\u0645 \u0627\u0644\u0627\u0633\u0645 +outputs=\u0627\u0644\u0646\u0648\u0627\u062a\u062c +refresh=\u064a\u0646\u0639\u0634 +modify=\u064a\u064f\u0639\u062f\u0651\u0650\u0644 +cancel=\u064a\u0644\u063a\u064a +logout=\u062a\u0633\u062c\u064a\u0644 \u0627\u0644\u062e\u0631\u0648\u062c +remove=\u064a\u0632\u064a\u0644 +verify=\u064a\u0624\u0643\u062f +first=\u0623\u0648\u0644\u0627\u064b +login=\u062a\u0633\u062c\u064a\u0644 \u0627\u0644\u062f\u062e\u0648\u0644 +last=\u0622\u062e\u0631 +view=\u0645\u0646\u0638\u0631 +next=\u0627\u0644\u062a\u0627\u0644\u064a +stop=\u0642\u0641 +add=\u064a\u0636\u064a\u0641 +ui.empty=< +ok=\u0646\u0639\u0645 +1ScanThisQrCodeWithYourAuthenticatorApp1=1. \u0627\u0645\u0633\u062d \u0631\u0645\u0632 \u0627\u0644\u0627\u0633\u062a\u062c\u0627\u0628\u0629 \u0627\u0644\u0633\u0631\u064a\u0639\u0629 \u0636\u0648\u0626\u064a\u064b\u0627 \u0628\u0627\u0633\u062a\u062e\u062f\u0627\u0645 \u062a\u0637\u0628\u064a\u0642 \u0627\u0644\u0645\u0635\u0627\u062f\u0642\u0629 \u0627\u0644\u062e\u0627\u0635 \u0628\u0643: +2EnterThe6digitCodeGeneratedByTheApp1=2. \u0623\u062f\u062e\u0644 \u0627\u0644\u0631\u0645\u0632 \u0627\u0644\u0645\u0643\u0648\u0646 \u0645\u0646 6 \u0623\u0631\u0642\u0627\u0645 \u0627\u0644\u0630\u064a \u0623\u0646\u0634\u0623\u0647 \u0627\u0644\u062a\u0637\u0628\u064a\u0642: +orEnterThisSecretKeyManually1=\u0623\u0648 \u0623\u062f\u062e\u0644 \u0647\u0630\u0627 \u0627\u0644\u0645\u0641\u062a\u0627\u062d \u0627\u0644\u0633\u0631\u064a \u064a\u062f\u0648\u064a\u064b\u0627: +loadingPackageInformation1=\u062c\u0627\u0631\u064d \u062a\u062d\u0645\u064a\u0644 \u0645\u0639\u0644\u0648\u0645\u0627\u062a \u0627\u0644\u062d\u0632\u0645\u0629... +loadingBundlesInformation1=\u062c\u0627\u0631\u064d \u062a\u062d\u0645\u064a\u0644 \u0645\u0639\u0644\u0648\u0645\u0627\u062a \u0627\u0644\u062d\u0632\u0645... +arrayComponentNotSupported1=\u0645\u0643\u0648\u0646 \u0627\u0644\u0635\u0641\u064a\u0641 \u063a\u064a\u0631 \u0645\u062f\u0639\u0648\u0645 +twofactorAuthentication1=\u0627\u0644\u0645\u0635\u0627\u062f\u0642\u0629 \u0627\u0644\u062b\u0646\u0627\u0626\u064a\u0629 +errorGeneratingQrCode1=\u062d\u062f\u062b \u062e\u0637\u0623 \u0623\u062b\u0646\u0627\u0621 \u0625\u0646\u0634\u0627\u0621 \u0631\u0645\u0632 \u0627\u0644\u0627\u0633\u062a\u062c\u0627\u0628\u0629 \u0627\u0644\u0633\u0631\u064a\u0639\u0629 +installMorePackages1=\u062a\u062b\u0628\u064a\u062a \u0627\u0644\u0645\u0632\u064a\u062f \u0645\u0646 \u0627\u0644\u062d\u0632\u0645... +installMoreModules1=\u062a\u062b\u0628\u064a\u062a \u0627\u0644\u0645\u0632\u064a\u062f \u0645\u0646 \u0627\u0644\u0648\u062d\u062f\u0627\u062a... +detailedInstructions1=\u062a\u0639\u0644\u064a\u0645\u0627\u062a \u0645\u0641\u0635\u0644\u0629 +processParameters1=\u0645\u0639\u0644\u0645\u0627\u062a \u0627\u0644\u0639\u0645\u0644\u064a\u0629 +availableNetworks1=\u0627\u0644\u0634\u0628\u0643\u0627\u062a \u0627\u0644\u0645\u062a\u0627\u062d\u0629 +verifyAndEnable1=\u0627\u0644\u062a\u062d\u0642\u0642 \u0648\u0627\u0644\u062a\u0645\u0643\u064a\u0646 +databaseContent1=\u0645\u062d\u062a\u0648\u0649 \u0642\u0627\u0639\u062f\u0629 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a +installSelected1=\u062a\u062b\u0628\u064a\u062a \u0627\u0644\u0645\u062d\u062f\u062f +dataSourceInfo1=\u0645\u0639\u0644\u0648\u0645\u0627\u062a \u0645\u0635\u062f\u0631 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a +detectedDevices1=\u0627\u0644\u0623\u062c\u0647\u0632\u0629 \u0627\u0644\u0645\u0643\u062a\u0634\u0641\u0629 +itemsPerPage1=\u0627\u0644\u0639\u0646\u0627\u0635\u0631 \u0644\u0643\u0644 \u0635\u0641\u062d\u0629: +processInputs1=\u0645\u062f\u062e\u0644\u0627\u062a \u0627\u0644\u0639\u0645\u0644\u064a\u0629 +commandInputs1=\u0645\u062f\u062e\u0644\u0627\u062a \u0627\u0644\u0623\u0648\u0627\u0645\u0631 +providerClass1=\u0641\u0626\u0629 \u0627\u0644\u0645\u0632\u0648\u062f +configuration1=\u0625\u0639\u062f\u0627\u062f\u0627\u062a +processName1=\u0627\u0633\u0645 \u0627\u0644\u0639\u0645\u0644\u064a\u0629: +applyChanges1=\u062a\u0637\u0628\u064a\u0642 \u0627\u0644\u062a\u063a\u064a\u064a\u0631\u0627\u062a +sendCommand1=\u0625\u0631\u0633\u0627\u0644 \u0627\u0644\u0623\u0645\u0631 +timeRange1=\u0627\u0644\u0646\u0637\u0627\u0642 \u0627\u0644\u0632\u0645\u0646\u064a: +useAddress1=\u0627\u0633\u062a\u062e\u062f\u0645 \u0627\u0644\u0639\u0646\u0648\u0627\u0646 +permissions1=\u0627\u0644\u0623\u0630\u0648\u0646\u0627\u062a +selectNone1=\u062d\u062f\u062f \u0644\u0627 \u0634\u064a\u0621 +startScan1=\u0627\u0628\u062f\u0623 \u0627\u0644\u0645\u0633\u062d +noReadme1=\u0644\u0627 \u064a\u0648\u062c\u062f \u0645\u0644\u0641 \u062a\u0645\u0647\u064a\u062f\u064a +reset2fa1=\u0625\u0639\u0627\u062f\u0629 \u062a\u0639\u064a\u064a\u0646 2FA +stopScan1=\u0625\u064a\u0642\u0627\u0641 \u0627\u0644\u0645\u0633\u062d +useName1=\u0627\u0633\u062a\u062e\u062f\u0645 \u0627\u0644\u0627\u0633\u0645 +previous1=\u0633\u0627\u0628\u0642 +refresh1=\u064a\u0646\u0639\u0634 +outputs1=\u0627\u0644\u0646\u0648\u0627\u062a\u062c +cancel1=\u064a\u0644\u063a\u064a +logout1=\u062a\u0633\u062c\u064a\u0644 \u0627\u0644\u062e\u0631\u0648\u062c +modify1=\u064a\u064f\u0639\u062f\u0651\u0650\u0644 +remove1=\u064a\u0632\u064a\u0644 +verify1=\u064a\u0624\u0643\u062f +first1=\u0623\u0648\u0644\u0627\u064b +login1=\u062a\u0633\u062c\u064a\u0644 \u0627\u0644\u062f\u062e\u0648\u0644 +view1=\u0645\u0646\u0638\u0631 +stop1=\u0642\u0641 +next1=\u0627\u0644\u062a\u0627\u0644\u064a +last1=\u0622\u062e\u0631 +add1=\u064a\u0636\u064a\u0641 +last2=>> +first2=<< +ok1=\u0646\u0639\u0645 +next2=> +previous2=< + +pleaseEnterAUserIDFirst1=\u0627\u0644\u0631\u062c\u0627\u0621 \u0625\u062f\u062e\u0627\u0644 \u0645\u0639\u0631\u0641 \u0627\u0644\u0645\u0633\u062a\u062e\u062f\u0645 \u0623\u0648\u0644\u0627\u064b +reset2FA1=\u0625\u0639\u0627\u062f\u0629 \u062a\u0639\u064a\u064a\u0646 2FA +enable2FA1=\u062a\u0645\u0643\u064a\u0646 2FA +twoFAEnabledSuccessfully1=\u062a\u0645 \u062a\u0645\u0643\u064a\u0646 \u0627\u0644\u0645\u0635\u0627\u062f\u0642\u0629 \u0627\u0644\u062b\u0646\u0627\u0626\u064a\u0629 (2FA) \u0628\u0646\u062c\u0627\u062d +invalidCode1=\u0631\u0645\u0632 \u063a\u064a\u0631 \u0635\u0627\u0644\u062d +allowedAndDeniedPermissionsForUsersWithThisRole1=\u0627\u0644\u0623\u0630\u0648\u0646\u0627\u062a \u0627\u0644\u0645\u0633\u0645\u0648\u062d \u0628\u0647\u0627 \u0648\u0627\u0644\u0645\u0631\u0641\u0648\u0636\u0629 \u0644\u0644\u0645\u0633\u062a\u062e\u062f\u0645\u064a\u0646 \u0627\u0644\u0630\u064a\u0646 \u0644\u062f\u064a\u0647\u0645 \u0647\u0630\u0627 \u0627\u0644\u062f\u0648\u0631 +manualEntry1=\u0627\u0644\u0625\u062f\u062e\u0627\u0644 \u0627\u0644\u064a\u062f\u0648\u064a +toggleAutoRefreshDataOncePerSecond1=\u062a\u0628\u062f\u064a\u0644 \u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u062a\u062d\u062f\u064a\u062b \u0627\u0644\u062a\u0644\u0642\u0627\u0626\u064a \u0645\u0631\u0629 \u0648\u0627\u062d\u062f\u0629 \u0641\u064a \u0627\u0644\u062b\u0627\u0646\u064a\u0629 +lookupSystem1=\u0646\u0638\u0627\u0645 \u0627\u0644\u0628\u062d\u062b +lookupModule1=\u0648\u062d\u062f\u0629 \u0627\u0644\u0628\u062d\u062b +lookupAddress1=\u0639\u0646\u0648\u0627\u0646 \u0627\u0644\u0628\u062d\u062b +showPassword1=\u0625\u0638\u0647\u0627\u0631 \u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631 +showHistogram1=\u0639\u0631\u0636 \u0627\u0644\u0631\u0633\u0645 \u0627\u0644\u0628\u064a\u0627\u0646\u064a +hideHistogram1=\u0625\u062e\u0641\u0627\u0621 \u0627\u0644\u0631\u0633\u0645 \u0627\u0644\u0628\u064a\u0627\u0646\u064a +reloadDataFromDatabase1=\u0625\u0639\u0627\u062f\u0629 \u062a\u062d\u0645\u064a\u0644 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0645\u0646 \u0642\u0627\u0639\u062f\u0629 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a +fois1=\u062d\u0631\u064a\u0629 \u0627\u0644\u0645\u0639\u0644\u0648\u0645\u0627\u062a +username1=\u0627\u0633\u0645 \u0627\u0644\u0645\u0633\u062a\u062e\u062f\u0645 +password1=\u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631 +loginFailed1=\u0641\u0634\u0644 \u062a\u0633\u062c\u064a\u0644 \u0627\u0644\u062f\u062e\u0648\u0644 +invalidUsernameOrPassword1=\u0627\u0633\u0645 \u0627\u0644\u0645\u0633\u062a\u062e\u062f\u0645 \u0623\u0648 \u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631 \u063a\u064a\u0631 \u0635\u0627\u0644\u062d\u0629 +verificationCode1=\u0631\u0645\u0632 \u0627\u0644\u062a\u062d\u0642\u0642 +verificationFailed1=\u0641\u0634\u0644 \u0627\u0644\u062a\u062d\u0642\u0642 +datasource1=\u0645\u0635\u062f\u0631 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a +process1=\u0639\u0645\u0644\u064a\u0629 +logoutFromOshNode1=\u062a\u0633\u062c\u064a\u0644 \u0627\u0644\u062e\u0631\u0648\u062c \u0645\u0646 \u0639\u0642\u062f\u0629 OSH +setParameter1=\u062a\u0639\u064a\u064a\u0646 \u0627\u0644\u0645\u0639\u0644\u0645\u0629 +setupTwoFactorAuthentication1=\u0625\u0639\u062f\u0627\u062f \u0627\u0644\u0645\u0635\u0627\u062f\u0642\u0629 \u0627\u0644\u062b\u0646\u0627\u0626\u064a\u0629 + +action.new_item=\u062c\u062f\u064a\u062f {0} +Lane\ System=\u0646\u0638\u0627\u0645 \u0644\u064a\u0646 +Module\ Class=\u0641\u0626\u0629 \u0627\u0644\u0648\u062d\u062f\u0629 \u0627\u0644\u0646\u0645\u0637\u064a\u0629 +Module\ Name=\u0627\u0633\u0645 \u0627\u0644\u0648\u062d\u062f\u0629 +Module\ ID=\u0645\u0639\u0631\u0641 \u0627\u0644\u0648\u062d\u062f\u0629 +Description=\u0648\u0635\u0641 +SensorML\ URL=\u0639\u0646\u0648\u0627\u0646 URL \u0627\u0644\u062e\u0627\u0635 \u0628\u0640 SensorML +UniqueID=\u0645\u0639\u0631\u0641 \u0641\u0631\u064a\u062f +Last\ Updated=\u0622\u062e\u0631 \u062a\u062d\u062f\u064a\u062b +Auto\ Start=\u0627\u0644\u0628\u062f\u0621 \u0627\u0644\u062a\u0644\u0642\u0627\u0626\u064a +Delete\ Data\ on\ Lane\ Removal=\u062d\u0630\u0641 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0639\u0646\u062f \u0625\u0632\u0627\u0644\u0629 \u0627\u0644\u0645\u0633\u0627\u0631 +Latitude=\u062e\u0637 \u0627\u0644\u0639\u0631\u0636 +Longitude=\u062e\u0637 \u0627\u0644\u0637\u0648\u0644 +Altitude=\u0627\u0631\u062a\u0641\u0627\u0639 +Initial\ RPM\ Config=\u062a\u0643\u0648\u064a\u0646 RPM \u0627\u0644\u0623\u0648\u0644\u064a +Initial\ Camera\ Config=\u0627\u0644\u062a\u0643\u0648\u064a\u0646 \u0627\u0644\u0623\u0648\u0644\u064a \u0644\u0644\u0643\u0627\u0645\u064a\u0631\u0627 +Lane\ Options\ Config=\u062a\u0643\u0648\u064a\u0646 \u062e\u064a\u0627\u0631\u0627\u062a \u0627\u0644\u0645\u0633\u0627\u0631 +tab.general=\u0639\u0627\u0645 +tab.readme=\u0627\u0644\u062a\u0645\u0647\u064a\u062f\u064a +Fixed\ Location=\u0627\u0644\u0645\u0648\u0642\u0639 \u0627\u0644\u062b\u0627\u0628\u062a +Fixed\ Orientation=\u0627\u0644\u062a\u0648\u062c\u0647 \u0627\u0644\u062b\u0627\u0628\u062a +# Auto-extracted DisplayInfo labels and descriptions +URL\ of\ SensorML\ file\ providing\ the\ base\ description\ of\ the\ sensor=\u0639\u0646\u0648\u0627\u0646 URL \u0644\u0645\u0644\u0641 SensorML \u0627\u0644\u0630\u064a \u064a\u0648\u0641\u0631 \u0627\u0644\u0648\u0635\u0641 \u0627\u0644\u0623\u0633\u0627\u0633\u064a \u0644\u0644\u0645\u0633\u062a\u0634\u0639\u0631 +Time\ at\ which\ the\ SensorML\ description\ was\ last\ updated=\u0627\u0644\u0648\u0642\u062a \u0627\u0644\u0630\u064a \u062a\u0645 \u0641\u064a\u0647 \u0622\u062e\u0631 \u062a\u062d\u062f\u064a\u062b \u0644\u0648\u0635\u0641 SensorML +Geodetic\ latitude,\ in\ degrees=\u062e\u0637 \u0627\u0644\u0639\u0631\u0636 \u0627\u0644\u062c\u064a\u0648\u062f\u064a\u0633\u064a\u060c \u0628\u0627\u0644\u062f\u0631\u062c\u0627\u062a +Longitude,\ in\ degrees=\u062e\u0637 \u0627\u0644\u0637\u0648\u0644\u060c \u0628\u0627\u0644\u062f\u0631\u062c\u0627\u062a +Height\ above\ ellipsoid,\ in\ meters=\u0627\u0644\u0627\u0631\u062a\u0641\u0627\u0639 \u0641\u0648\u0642 \u0627\u0644\u0634\u0643\u0644 \u0627\u0644\u0646\u0627\u0642\u0635\u060c \u0628\u0627\u0644\u0623\u0645\u062a\u0627\u0631 +X\ coordinate,\ in\ meters=\u0627\u0644\u0625\u062d\u062f\u0627\u062b\u064a\u0627\u062a X\u060c \u0628\u0627\u0644\u0623\u0645\u062a\u0627\u0631 +Y\ coordinate,\ in\ meters=\u0627\u0644\u0625\u062d\u062f\u0627\u062b\u064a\u0627\u062a Y\u060c \u0628\u0627\u0644\u0623\u0645\u062a\u0627\u0631 +Z\ coordinate,\ in\ meters=\u0627\u0644\u0625\u062d\u062f\u0627\u062b\u064a Z\u060c \u0628\u0627\u0644\u0623\u0645\u062a\u0627\u0631 +Pitch\ angle\ about\ Y\ axis,\ in\ degrees=\u0632\u0627\u0648\u064a\u0629 \u0627\u0644\u0645\u064a\u0644 \u062d\u0648\u0644 \u0627\u0644\u0645\u062d\u0648\u0631 Y \u0628\u0627\u0644\u062f\u0631\u062c\u0627\u062a +Roll\ angle\ about\ X\ axis,\ in\ degrees=\u0632\u0627\u0648\u064a\u0629 \u0627\u0644\u062f\u0648\u0631\u0627\u0646 \u062d\u0648\u0644 \u0627\u0644\u0645\u062d\u0648\u0631 X \u0628\u0627\u0644\u062f\u0631\u062c\u0627\u062a +Location\ in\ EPSG\:4979\ coordinate\ reference\ frame=\u0627\u0644\u0645\u0648\u0642\u0639 \u0641\u064a \u0625\u0637\u0627\u0631 \u0645\u0631\u062c\u0639\u064a \u062a\u0646\u0633\u064a\u0642\u064a EPSG:4979 +Database\ Number=\u0631\u0642\u0645 \u0642\u0627\u0639\u062f\u0629 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a +Numerical\ identifier\ of\ the\ database.\ Each\ database\ that\ should\ be\ exposed\ via\ the\ federated\ database\ API\ must\ have\ a\ unique\ number\ on\ the\ sensor\ hub.\ If\ visibility\ through\ the\ federated\ database\ is\ not\ desired,\ it\ can\ be\ omitted.=\u0627\u0644\u0645\u0639\u0631\u0641 \u0627\u0644\u0631\u0642\u0645\u064a \u0644\u0642\u0627\u0639\u062f\u0629 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a. \u064a\u062c\u0628 \u0623\u0646 \u062a\u062d\u062a\u0648\u064a \u0643\u0644 \u0642\u0627\u0639\u062f\u0629 \u0628\u064a\u0627\u0646\u0627\u062a \u064a\u062c\u0628 \u0639\u0631\u0636\u0647\u0627 \u0639\u0628\u0631 \u0648\u0627\u062c\u0647\u0629 \u0628\u0631\u0645\u062c\u0629 \u062a\u0637\u0628\u064a\u0642\u0627\u062a \u0642\u0627\u0639\u062f\u0629 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u0645\u0648\u062d\u062f\u0629 \u0639\u0644\u0649 \u0631\u0642\u0645 \u0641\u0631\u064a\u062f \u0639\u0644\u0649 \u0645\u0631\u0643\u0632 \u0627\u0644\u0645\u0633\u062a\u0634\u0639\u0631. \u0625\u0630\u0627 \u0643\u0627\u0646\u062a \u0627\u0644\u0631\u0624\u064a\u0629 \u0645\u0646 \u062e\u0644\u0627\u0644 \u0642\u0627\u0639\u062f\u0629 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u0645\u0648\u062d\u062f\u0629 \u063a\u064a\u0631 \u0645\u0631\u063a\u0648\u0628 \u0641\u064a\u0647\u0627\u060c \u0641\u064a\u0645\u0643\u0646 \u062d\u0630\u0641\u0647\u0627. +Enables\ fine-grained\ permission-based\ access\ control\ for\ this\ module=\u062a\u0645\u0643\u064a\u0646 \u0627\u0644\u062a\u062d\u0643\u0645 \u0627\u0644\u062f\u0642\u064a\u0642 \u0641\u064a \u0627\u0644\u0648\u0635\u0648\u0644 \u0627\u0644\u0645\u0633\u062a\u0646\u062f \u0625\u0644\u0649 \u0627\u0644\u0623\u0630\u0648\u0646\u0627\u062a \u0644\u0647\u0630\u0647 \u0627\u0644\u0648\u062d\u062f\u0629 +Require\ Authentication=\u062a\u062a\u0637\u0644\u0628 \u0627\u0644\u0645\u0635\u0627\u062f\u0642\u0629 +Set\ to\ require\ remote\ users\ to\ be\ authentified\ before\ they\ can\ use\ this\ service=\u0642\u0645 \u0628\u0627\u0644\u062a\u0639\u064a\u064a\u0646 \u0644\u0644\u0645\u0637\u0627\u0644\u0628\u0629 \u0628\u0645\u0635\u0627\u062f\u0642\u0629 \u0627\u0644\u0645\u0633\u062a\u062e\u062f\u0645\u064a\u0646 \u0627\u0644\u0628\u0639\u064a\u062f\u064a\u0646 \u0642\u0628\u0644 \u0623\u0646 \u064a\u062a\u0645\u0643\u0646\u0648\u0627 \u0645\u0646 \u0627\u0633\u062a\u062e\u062f\u0627\u0645 \u0647\u0630\u0647 \u0627\u0644\u062e\u062f\u0645\u0629 +Endpoint=\u0646\u0642\u0637\u0629 \u0627\u0644\u0646\u0647\u0627\u064a\u0629 +Unique\ local\ ID\ of\ the\ module=\u0645\u0639\u0631\u0641 \u0645\u062d\u0644\u064a \u0641\u0631\u064a\u062f \u0644\u0644\u0648\u062d\u062f\u0629 +User\ description\ for\ the\ module=\u0648\u0635\u0641 \u0627\u0644\u0645\u0633\u062a\u062e\u062f\u0645 \u0644\u0644\u0648\u062d\u062f\u0629 +Set\ to\ automatically\ start\ the\ module\ when\ it\ is\ loaded=\u0627\u0636\u0628\u0637 \u0644\u0628\u062f\u0621 \u062a\u0634\u063a\u064a\u0644 \u0627\u0644\u0648\u062d\u062f\u0629 \u062a\u0644\u0642\u0627\u0626\u064a\u064b\u0627 \u0639\u0646\u062f \u062a\u062d\u0645\u064a\u0644\u0647\u0627 +Module\ implementation\ class=\u0641\u0626\u0629 \u062a\u0646\u0641\u064a\u0630 \u0627\u0644\u0648\u062d\u062f\u0629 \u0627\u0644\u0646\u0645\u0637\u064a\u0629 +User\ chosen\ name\ for\ the\ module=\u0627\u0644\u0627\u0633\u0645 \u0627\u0644\u0630\u064a \u0627\u062e\u062a\u0627\u0631\u0647 \u0627\u0644\u0645\u0633\u062a\u062e\u062f\u0645 \u0644\u0644\u0648\u062d\u062f\u0629 +Name\ of\ topic/queue\ to\ use=\u0627\u0633\u0645 \u0627\u0644\u0645\u0648\u0636\u0648\u0639/\u0642\u0627\u0626\u0645\u0629 \u0627\u0644\u0627\u0646\u062a\u0638\u0627\u0631 \u0627\u0644\u0645\u0631\u0627\u062f \u0627\u0633\u062a\u062e\u062f\u0627\u0645\u0647\u0627 +Enable/disable\ writing\ to\ queue=\u062a\u0645\u0643\u064a\u0646/\u062a\u0639\u0637\u064a\u0644 \u0627\u0644\u0643\u062a\u0627\u0628\u0629 \u0625\u0644\u0649 \u0642\u0627\u0626\u0645\u0629 \u0627\u0644\u0627\u0646\u062a\u0638\u0627\u0631 +Enable/disable\ reading\ from\ queue=\u062a\u0645\u0643\u064a\u0646/\u062a\u0639\u0637\u064a\u0644 \u0627\u0644\u0642\u0631\u0627\u0621\u0629 \u0645\u0646 \u0642\u0627\u0626\u0645\u0629 \u0627\u0644\u0627\u0646\u062a\u0638\u0627\u0631 +Protocol\ Options=\u062e\u064a\u0627\u0631\u0627\u062a \u0627\u0644\u0628\u0631\u0648\u062a\u0648\u0643\u0648\u0644 +Common\ Configuration=\u0627\u0644\u062a\u0643\u0648\u064a\u0646 \u0627\u0644\u0645\u0634\u062a\u0631\u0643 +Common\ configuration\ for\ sensors\ in\ the\ array=\u0627\u0644\u062a\u0643\u0648\u064a\u0646 \u0627\u0644\u0645\u0634\u062a\u0631\u0643 \u0644\u0623\u062c\u0647\u0632\u0629 \u0627\u0644\u0627\u0633\u062a\u0634\u0639\u0627\u0631 \u0641\u064a \u0627\u0644\u0645\u0635\u0641\u0648\u0641\u0629 +Sensors\ Configuration=\u062a\u0643\u0648\u064a\u0646 \u0623\u062c\u0647\u0632\u0629 \u0627\u0644\u0627\u0633\u062a\u0634\u0639\u0627\u0631 +Subsystem\ Config=\u062a\u0643\u0648\u064a\u0646 \u0627\u0644\u0646\u0638\u0627\u0645 \u0627\u0644\u0641\u0631\u0639\u064a +Configuration\ of\ the\ subsystem=\u062a\u0643\u0648\u064a\u0646 \u0627\u0644\u0646\u0638\u0627\u0645 \u0627\u0644\u0641\u0631\u0639\u064a +Relative\ Location=\u0627\u0644\u0645\u0648\u0642\u0639 \u0627\u0644\u0646\u0633\u0628\u064a +Location\ of\ this\ subsystem\ relative\ to\ the\ main\ system\ or\ platform\ reference\ frame=\u0645\u0648\u0642\u0639 \u0647\u0630\u0627 \u0627\u0644\u0646\u0638\u0627\u0645 \u0627\u0644\u0641\u0631\u0639\u064a \u0628\u0627\u0644\u0646\u0633\u0628\u0629 \u0644\u0644\u0646\u0638\u0627\u0645 \u0627\u0644\u0631\u0626\u064a\u0633\u064a \u0623\u0648 \u0627\u0644\u0625\u0637\u0627\u0631 \u0627\u0644\u0645\u0631\u062c\u0639\u064a \u0644\u0644\u0646\u0638\u0627\u0645 \u0627\u0644\u0623\u0633\u0627\u0633\u064a +Relative\ Orientation=\u0627\u0644\u062a\u0648\u062c\u0647 \u0627\u0644\u0646\u0633\u0628\u064a +Orientation\ of\ this\ subsystem\ relative\ to\ the\ main\ system\ or\ platform\ reference\ frame=\u0627\u062a\u062c\u0627\u0647 \u0647\u0630\u0627 \u0627\u0644\u0646\u0638\u0627\u0645 \u0627\u0644\u0641\u0631\u0639\u064a \u0628\u0627\u0644\u0646\u0633\u0628\u0629 \u0644\u0644\u0646\u0638\u0627\u0645 \u0627\u0644\u0631\u0626\u064a\u0633\u064a \u0623\u0648 \u0627\u0644\u0625\u0637\u0627\u0631 \u0627\u0644\u0645\u0631\u062c\u0639\u064a \u0644\u0644\u0646\u0638\u0627\u0645 \u0627\u0644\u0623\u0633\u0627\u0633\u064a +Fixed\ system\ orientation\ in\ the\ local\ NED\ reference\ frame=\u062a\u0645 \u0625\u0635\u0644\u0627\u062d \u0627\u062a\u062c\u0627\u0647 \u0627\u0644\u0646\u0638\u0627\u0645 \u0641\u064a \u0627\u0644\u0625\u0637\u0627\u0631 \u0627\u0644\u0645\u0631\u062c\u0639\u064a \u0627\u0644\u0645\u062d\u0644\u064a \u0644\u0640 NED +Subsystems=\u0627\u0644\u0623\u0646\u0638\u0645\u0629 \u0627\u0644\u0641\u0631\u0639\u064a\u0629 +Configuration\ of\ components\ of\ this\ sensor\ system=\u062a\u0643\u0648\u064a\u0646 \u0645\u0643\u0648\u0646\u0627\u062a \u0646\u0638\u0627\u0645 \u0627\u0644\u0627\u0633\u062a\u0634\u0639\u0627\u0631 \u0647\u0630\u0627 +Database\ Config=\u062a\u0643\u0648\u064a\u0646 \u0642\u0627\u0639\u062f\u0629 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a +Configuration\ of\ underlying\ database=\u062a\u0643\u0648\u064a\u0646 \u0642\u0627\u0639\u062f\u0629 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u0623\u0633\u0627\u0633\u064a\u0629 +System\ UIDs=\u0645\u0639\u0631\u0641\u0627\u062a \u0627\u0644\u0646\u0638\u0627\u0645 +Unique\ IDs\ of\ system\ drivers\ handled\ by\ this\ database=\u0627\u0644\u0645\u0639\u0631\u0641\u0627\u062a \u0627\u0644\u0641\u0631\u064a\u062f\u0629 \u0644\u0628\u0631\u0627\u0645\u062c \u062a\u0634\u063a\u064a\u0644 \u0627\u0644\u0646\u0638\u0627\u0645 \u0627\u0644\u062a\u064a \u062a\u0639\u0627\u0644\u062c\u0647\u0627 \u0642\u0627\u0639\u062f\u0629 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0647\u0630\u0647 +Automatic\ Purge\ Policy=\u0633\u064a\u0627\u0633\u0629 \u0627\u0644\u062a\u0637\u0647\u064a\u0631 \u0627\u0644\u062a\u0644\u0642\u0627\u0626\u064a +Policy\ for\ automatically\ purging\ historical\ data=\u0633\u064a\u0627\u0633\u0629 \u0627\u0644\u062a\u0637\u0647\u064a\u0631 \u0627\u0644\u062a\u0644\u0642\u0627\u0626\u064a \u0644\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u062a\u0627\u0631\u064a\u062e\u064a\u0629 +Uncheck\ to\ disable\ auto-purge\ temporarily=\u0642\u0645 \u0628\u0625\u0644\u063a\u0627\u0621 \u0627\u0644\u062a\u062d\u062f\u064a\u062f \u0644\u062a\u0639\u0637\u064a\u0644 \u0627\u0644\u062a\u0637\u0647\u064a\u0631 \u0627\u0644\u062a\u0644\u0642\u0627\u0626\u064a \u0645\u0624\u0642\u062a\u064b\u0627 +Purge\ Execution\ Period=\u0641\u062a\u0631\u0629 \u062a\u0646\u0641\u064a\u0630 \u0627\u0644\u062a\u0637\u0647\u064a\u0631 +Unique\ IDs\ of\ system\ drivers\ to\ purge=\u0627\u0644\u0645\u0639\u0631\u0641\u0627\u062a \u0627\u0644\u0641\u0631\u064a\u062f\u0629 \u0644\u0628\u0631\u0627\u0645\u062c \u062a\u0634\u063a\u064a\u0644 \u0627\u0644\u0646\u0638\u0627\u0645 \u0627\u0644\u0645\u0631\u0627\u062f \u062a\u0637\u0647\u064a\u0631\u0647\u0627 +Max\ Record\ Age=\u0627\u0644\u062d\u062f \u0627\u0644\u0623\u0642\u0635\u0649 \u0644\u0639\u0645\u0631 \u0627\u0644\u062a\u0633\u062c\u064a\u0644 +SensorML\ File=\u0645\u0644\u0641 \u0633\u064a\u0646\u0633\u0648\u0631\u0645\u0644 +Path\ of\ SensorML\ description\ of\ the\ process=\u0645\u0633\u0627\u0631 \u0648\u0635\u0641 SensorML \u0644\u0644\u0639\u0645\u0644\u064a\u0629 +List\ of\ users\ allowed\ access\ to\ this\ system=\u0642\u0627\u0626\u0645\u0629 \u0627\u0644\u0645\u0633\u062a\u062e\u062f\u0645\u064a\u0646 \u0627\u0644\u0645\u0633\u0645\u0648\u062d \u0644\u0647\u0645 \u0628\u0627\u0644\u0648\u0635\u0648\u0644 \u0625\u0644\u0649 \u0647\u0630\u0627 \u0627\u0644\u0646\u0638\u0627\u0645 +List\ of\ security\ roles=\u0642\u0627\u0626\u0645\u0629 \u0627\u0644\u0623\u062f\u0648\u0627\u0631 \u0627\u0644\u0623\u0645\u0646\u064a\u0629 +User\ ID=\u0645\u0639\u0631\u0641 \u0627\u0644\u0645\u0633\u062a\u062e\u062f\u0645 +Role\ ID=\u0645\u0639\u0631\u0641 \u0627\u0644\u062f\u0648\u0631 +Source\ Database\ ID=\u0645\u0639\u0631\u0641 \u0642\u0627\u0639\u062f\u0629 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u0645\u0635\u062f\u0631 +ID\ of\ database\ module\ to\ read\ data\ from\ (Federated\ database\ will\ be\ used\ if\ not\ set=\u0645\u0639\u0631\u0641 \u0648\u062d\u062f\u0629 \u0642\u0627\u0639\u062f\u0629 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u0645\u0631\u0627\u062f \u0642\u0631\u0627\u0621\u0629 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0645\u0646\u0647\u0627 (\u0633\u064a\u062a\u0645 \u0627\u0633\u062a\u062e\u062f\u0627\u0645 \u0642\u0627\u0639\u062f\u0629 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u0645\u0648\u062d\u062f\u0629 \u0625\u0630\u0627 \u0644\u0645 \u064a\u062a\u0645 \u062a\u0639\u064a\u064a\u0646\u0647\u0627 +HTTP\ Port=\u0645\u0646\u0641\u0630 HTTP +HTTPS\ Port=\u0645\u0646\u0641\u0630 HTTPS +Root\ URL\ where\ static\ web\ content\ will\ be\ served.=\u0639\u0646\u0648\u0627\u0646 URL \u0627\u0644\u062c\u0630\u0631 \u062d\u064a\u062b \u0633\u064a\u062a\u0645 \u062a\u0642\u062f\u064a\u0645 \u0645\u062d\u062a\u0648\u0649 \u0627\u0644\u0648\u064a\u0628 \u0627\u0644\u062b\u0627\u0628\u062a. +Directory\ where\ static\ web\ content\ is\ located.=\u0627\u0644\u062f\u0644\u064a\u0644 \u0627\u0644\u0630\u064a \u064a\u0648\u062c\u062f \u0628\u0647 \u0645\u062d\u062a\u0648\u0649 \u0627\u0644\u0648\u064a\u0628 \u0627\u0644\u062b\u0627\u0628\u062a. +Root\ URL\ where\ the\ server\ will\ accept\ requests.\ This\ will\ be\ the\ prefix\ to\ all\ servlet\ URLs.=\u0639\u0646\u0648\u0627\u0646 URL \u0627\u0644\u062c\u0630\u0631 \u062d\u064a\u062b \u0633\u064a\u0642\u0628\u0644 \u0627\u0644\u062e\u0627\u062f\u0645 \u0627\u0644\u0637\u0644\u0628\u0627\u062a. \u0633\u062a\u0643\u0648\u0646 \u0647\u0630\u0647 \u0647\u064a \u0627\u0644\u0628\u0627\u062f\u0626\u0629 \u0644\u062c\u0645\u064a\u0639 \u0639\u0646\u0627\u0648\u064a\u0646 URL \u0627\u0644\u062e\u0627\u0635\u0629 \u0628\u0640 servlet. +Proxy\ Base\ URL=\u0639\u0646\u0648\u0627\u0646 URL \u0644\u0642\u0627\u0639\u062f\u0629 \u0627\u0644\u0648\u0643\u064a\u0644 +Public\ URL\ as\ viewed\ from\ the\ outside\ when\ requests\ transit\ through\ a\ proxy\ server.=\u0639\u0646\u0648\u0627\u0646 URL \u0627\u0644\u0639\u0627\u0645 \u0643\u0645\u0627 \u064a\u062a\u0645 \u0639\u0631\u0636\u0647 \u0645\u0646 \u0627\u0644\u062e\u0627\u0631\u062c \u0639\u0646\u062f \u0645\u0631\u0648\u0631 \u0627\u0644\u0637\u0644\u0628\u0627\u062a \u0639\u0628\u0631 \u062e\u0627\u062f\u0645 \u0648\u0643\u064a\u0644. +Authentication\ Method=\u0637\u0631\u064a\u0642\u0629 \u0627\u0644\u0645\u0635\u0627\u062f\u0642\u0629 +Method\ used\ to\ authenticate\ users\ on\ this\ server=\u0627\u0644\u0637\u0631\u064a\u0642\u0629 \u0627\u0644\u0645\u0633\u062a\u062e\u062f\u0645\u0629 \u0644\u0645\u0635\u0627\u062f\u0642\u0629 \u0627\u0644\u0645\u0633\u062a\u062e\u062f\u0645\u064a\u0646 \u0639\u0644\u0649 \u0647\u0630\u0627 \u0627\u0644\u062e\u0627\u062f\u0645 +Path\ to\ a\ key\ store\ containing\ the\ certificate\ and\ keypair\ that\ this\ server\ will\ present\ to\ clients\ when\ accessed\ over\ HTTPS.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ \"javax.net.ssl.keyStore\"\ system\ property.\=Path to a key store containing the certificate and keypair that this server will present to clients when accessed over HTTPS. If this value is blank, will default to using the value of the \"javax.net.ssl.keyStore\" system property. +Alias\ for\ the\ public/private\ keypair\ within\ the\ key\ store\ that\ will\ be\ used\ to\ identify\ this\ server.=\u0627\u0644\u0627\u0633\u0645 \u0627\u0644\u0645\u0633\u062a\u0639\u0627\u0631 \u0644\u0632\u0648\u062c \u0627\u0644\u0645\u0641\u0627\u062a\u064a\u062d \u0627\u0644\u0639\u0627\u0645/\u0627\u0644\u062e\u0627\u0635 \u062f\u0627\u062e\u0644 \u0645\u062e\u0632\u0646 \u0627\u0644\u0645\u0641\u0627\u062a\u064a\u062d \u0627\u0644\u0630\u064a \u0633\u064a\u062a\u0645 \u0627\u0633\u062a\u062e\u062f\u0627\u0645\u0647 \u0644\u062a\u0639\u0631\u064a\u0641 \u0647\u0630\u0627 \u0627\u0644\u062e\u0627\u062f\u0645. +Path\ to\ the\ TLS\ trust\ store\ that\ is\ used\ when\ client\ authentication\ is\ required.\ Ignored\ if\ client\ certificate\ authentication\ is\ not\ used.\ Certificates\ in\ this\ file\ designate\ the\ signing\ authorities\ for\ client\ certificates\ that\ will\ be\ trusted.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ \"javax.net.ssl.trustStore\"\ system\ property.\=Path to the TLS trust store that is used when client authentication is required. Ignored if client certificate authentication is not used. Certificates in this file designate the signing authorities for client certificates that will be trusted. If this value is blank, will default to using the value of the \"javax.net.ssl.trustStore\" system property. +Password\ for\ the\ trust\ store.\ Ignored\ if\ client\ certificate\ authentication\ is\ not\ used.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ \"javax.net.ssl.trustStorePassword\"\ system\ property.\=Password for the trust store. Ignored if client certificate authentication is not used. If this value is blank, will default to using the value of the \"javax.net.ssl.trustStorePassword\" system property. +Enable\ CORS=\u062a\u0645\u0643\u064a\u0646 \u0643\u0648\u0631\u0633 +Enable\ generation\ of\ CORS\ headers\ to\ allow\ cross-domain\ requests\ from\ browsers=\u062a\u0645\u0643\u064a\u0646 \u0625\u0646\u0634\u0627\u0621 \u0631\u0624\u0648\u0633 CORS \u0644\u0644\u0633\u0645\u0627\u062d \u0628\u0627\u0644\u0637\u0644\u0628\u0627\u062a \u0639\u0628\u0631 \u0627\u0644\u0646\u0637\u0627\u0642 \u0645\u0646 \u0627\u0644\u0645\u062a\u0635\u0641\u062d\u0627\u062a +Capabilities\ Info=\u0645\u0639\u0644\u0648\u0645\u0627\u062a \u0627\u0644\u0642\u062f\u0631\u0627\u062a +Information\ included\ in\ the\ service\ capabilities\ document=\u0627\u0644\u0645\u0639\u0644\u0648\u0645\u0627\u062a \u0627\u0644\u0645\u0636\u0645\u0646\u0629 \u0641\u064a \u0648\u062b\u064a\u0642\u0629 \u0642\u062f\u0631\u0627\u062a \u0627\u0644\u062e\u062f\u0645\u0629 +Enable\ HTTP\ GET=\u062a\u0645\u0643\u064a\u0646 HTTP GET +Enables/disables\ HTTP\ GET\ bindings\ on\ operations\ that\ support\ it=\u062a\u0645\u0643\u064a\u0646/\u062a\u0639\u0637\u064a\u0644 \u0631\u0648\u0627\u0628\u0637 HTTP GET \u0639\u0644\u0649 \u0627\u0644\u0639\u0645\u0644\u064a\u0627\u062a \u0627\u0644\u062a\u064a \u062a\u062f\u0639\u0645\u0647\u0627 +Enable\ HTTP\ POST=\u062a\u0645\u0643\u064a\u0646 HTTP POST +Enables/disables\ HTTP\ POST\ bindings\ on\ operations\ that\ support\ it=\u062a\u0645\u0643\u064a\u0646/\u062a\u0639\u0637\u064a\u0644 \u0631\u0648\u0627\u0628\u0637 HTTP POST \u0639\u0644\u0649 \u0627\u0644\u0639\u0645\u0644\u064a\u0627\u062a \u0627\u0644\u062a\u064a \u062a\u062f\u0639\u0645\u0647\u0627 +Enable\ HTTP\ SOAP=\u062a\u0645\u0643\u064a\u0646 HTTP SOAP +Enables/disables\ HTTP\ SOAP\ bindings\ on\ operations\ that\ support\ it=\u062a\u0645\u0643\u064a\u0646/\u062a\u0639\u0637\u064a\u0644 \u0631\u0648\u0627\u0628\u0637 HTTP SOAP \u0639\u0644\u0649 \u0627\u0644\u0639\u0645\u0644\u064a\u0627\u062a \u0627\u0644\u062a\u064a \u062a\u062f\u0639\u0645\u0647\u0627 +Connection\ Timeout=\u0645\u0647\u0644\u0629 \u0627\u0644\u0627\u062a\u0635\u0627\u0644 +Reconnect\ Period=\u0641\u062a\u0631\u0629 \u0625\u0639\u0627\u062f\u0629 \u0627\u0644\u0627\u062a\u0635\u0627\u0644 +Max\ Reconnect\ Attempts=\u0627\u0644\u062d\u062f \u0627\u0644\u0623\u0642\u0635\u0649 \u0644\u0645\u062d\u0627\u0648\u0644\u0627\u062a \u0625\u0639\u0627\u062f\u0629 \u0627\u0644\u0627\u062a\u0635\u0627\u0644 +Maximum\ number\ of\ times\ the\ client\ will\ attempt\ to\ reconnect\ when\ the\ connection\ is\ not\ available\ or\ lost.\ A\ negative\ value\ means\ that\ there\ is\ no\ limit\ to\ the\ number\ of\ reconnection\ attempts.\ Zero\ means\ not\ to\ attempt\ reconnection.=\u0627\u0644\u062d\u062f \u0627\u0644\u0623\u0642\u0635\u0649 \u0644\u0639\u062f\u062f \u0627\u0644\u0645\u0631\u0627\u062a \u0627\u0644\u062a\u064a \u0633\u064a\u062d\u0627\u0648\u0644 \u0641\u064a\u0647\u0627 \u0627\u0644\u0639\u0645\u064a\u0644 \u0625\u0639\u0627\u062f\u0629 \u0627\u0644\u0627\u062a\u0635\u0627\u0644 \u0639\u0646\u062f\u0645\u0627 \u0644\u0627 \u064a\u0643\u0648\u0646 \u0627\u0644\u0627\u062a\u0635\u0627\u0644 \u0645\u062a\u0627\u062d\u064b\u0627 \u0623\u0648 \u0645\u0641\u0642\u0648\u062f\u064b\u0627. \u062a\u0639\u0646\u064a \u0627\u0644\u0642\u064a\u0645\u0629 \u0627\u0644\u0633\u0627\u0644\u0628\u0629 \u0623\u0646\u0647 \u0644\u0627 \u064a\u0648\u062c\u062f \u062d\u062f \u0644\u0639\u062f\u062f \u0645\u062d\u0627\u0648\u0644\u0627\u062a \u0625\u0639\u0627\u062f\u0629 \u0627\u0644\u0627\u062a\u0635\u0627\u0644. \u0627\u0644\u0635\u0641\u0631 \u064a\u0639\u0646\u064a \u0639\u062f\u0645 \u0645\u062d\u0627\u0648\u0644\u0629 \u0625\u0639\u0627\u062f\u0629 \u0627\u0644\u0627\u062a\u0635\u0627\u0644. +IP\ or\ DNS\ name\ of\ remote\ host=\u0627\u0633\u0645 IP \u0623\u0648 DNS \u0644\u0644\u0645\u0636\u064a\u0641 \u0627\u0644\u0628\u0639\u064a\u062f +IP\ of\ local\ network\ interface\ to\ bind\ to\ or\ 'AUTO'\ to\ select\ it\ automatically=IP \u0644\u0648\u0627\u062c\u0647\u0629 \u0627\u0644\u0634\u0628\u0643\u0629 \u0627\u0644\u0645\u062d\u0644\u064a\u0629 \u0644\u0644\u0631\u0628\u0637 \u0628\u0647\u0627 \u0623\u0648 "AUTO" \u0644\u062a\u062d\u062f\u064a\u062f\u0647\u0627 \u062a\u0644\u0642\u0627\u0626\u064a\u064b\u0627 +Connection\ Options=\u062e\u064a\u0627\u0631\u0627\u062a \u0627\u0644\u0627\u062a\u0635\u0627\u0644 +Serial\ port\ device\ name.\ Usually\ something\ like\ /dev/ttyXXX\ on\ Linux=\u0627\u0633\u0645 \u062c\u0647\u0627\u0632 \u0627\u0644\u0645\u0646\u0641\u0630 \u0627\u0644\u062a\u0633\u0644\u0633\u0644\u064a. \u0639\u0627\u062f\u0629\u064b \u0645\u0627 \u064a\u0643\u0648\u0646 \u0634\u064a\u0626\u064b\u0627 \u0645\u062b\u0644 /dev/ttyXXX \u0639\u0644\u0649 Linux +Minimum\ number\ of\ bytes\ to\ receive\ before\ they\ are\ sent\ to\ the\ caller=\u0627\u0644\u062d\u062f \u0627\u0644\u0623\u062f\u0646\u0649 \u0644\u0639\u062f\u062f \u0627\u0644\u0628\u0627\u064a\u062a\u0627\u062a \u0627\u0644\u062a\u064a \u0633\u064a\u062a\u0645 \u062a\u0644\u0642\u064a\u0647\u0627 \u0642\u0628\u0644 \u0625\u0631\u0633\u0627\u0644\u0647\u0627 \u0625\u0644\u0649 \u0627\u0644\u0645\u062a\u0635\u0644 +Local\ port\ number\ to\ use\ on\ the\ local\ host=\u0631\u0642\u0645 \u0627\u0644\u0645\u0646\u0641\u0630 \u0627\u0644\u0645\u062d\u0644\u064a \u0644\u0627\u0633\u062a\u062e\u062f\u0627\u0645\u0647 \u0639\u0644\u0649 \u0627\u0644\u0645\u0636\u064a\u0641 \u0627\u0644\u0645\u062d\u0644\u064a +Physical\ address\ of\ Bluetooth\ device\ to\ connect\ to=\u0627\u0644\u0639\u0646\u0648\u0627\u0646 \u0627\u0644\u0641\u0639\u0644\u064a \u0644\u062c\u0647\u0627\u0632 Bluetooth \u0644\u0644\u0627\u062a\u0635\u0627\u0644 \u0628\u0647 +Port\ number\ to\ connect\ to\ on\ remote\ host=\u0631\u0642\u0645 \u0627\u0644\u0645\u0646\u0641\u0630 \u0644\u0644\u0627\u062a\u0635\u0627\u0644 \u0628\u0647 \u0639\u0644\u0649 \u0627\u0644\u0645\u0636\u064a\u0641 \u0627\u0644\u0628\u0639\u064a\u062f +User\ Name=\u0627\u0633\u0645 \u0627\u0644\u0645\u0633\u062a\u062e\u062f\u0645 +Remote\ user\ name=\u0627\u0633\u0645 \u0627\u0644\u0645\u0633\u062a\u062e\u062f\u0645 \u0627\u0644\u0628\u0639\u064a\u062f +Password=\u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631 +Remote\ password=\u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631 \u0639\u0646 \u0628\u0639\u062f +Secure\ communications\ with\ SSL/TLS=\u0627\u062a\u0635\u0627\u0644\u0627\u062a \u0622\u0645\u0646\u0629 \u0645\u0639 SSL/TLS +Enable\ to\ check\ if\ remote\ host\ is\ reachable\ before\ attempting\ further\ operations=\u0642\u0645 \u0628\u0627\u0644\u062a\u0645\u0643\u064a\u0646 \u0644\u0644\u062a\u062d\u0642\u0642 \u0645\u0646 \u0625\u0645\u0643\u0627\u0646\u064a\u0629 \u0627\u0644\u0648\u0635\u0648\u0644 \u0625\u0644\u0649 \u0627\u0644\u0645\u0636\u064a\u0641 \u0627\u0644\u0628\u0639\u064a\u062f \u0642\u0628\u0644 \u0645\u062d\u0627\u0648\u0644\u0629 \u0625\u062c\u0631\u0627\u0621 \u0627\u0644\u0645\u0632\u064a\u062f \u0645\u0646 \u0627\u0644\u0639\u0645\u0644\u064a\u0627\u062a +Path\ or\ resource\ or\ service\ relative\ to\ server\ root=\u0627\u0644\u0645\u0633\u0627\u0631 \u0623\u0648 \u0627\u0644\u0645\u0648\u0631\u062f \u0623\u0648 \u0627\u0644\u062e\u062f\u0645\u0629 \u0627\u0644\u0645\u062a\u0639\u0644\u0642\u0629 \u0628\u062c\u0630\u0631 \u0627\u0644\u062e\u0627\u062f\u0645 +Unique\ ID\ of\ system\ group=\u0645\u0639\u0631\u0641 \u0641\u0631\u064a\u062f \u0644\u0645\u062c\u0645\u0648\u0639\u0629 \u0627\u0644\u0646\u0638\u0627\u0645 +Name\ of\ system\ group=\u0627\u0633\u0645 \u0645\u062c\u0645\u0648\u0639\u0629 \u0627\u0644\u0646\u0638\u0627\u0645 +Description\ of\ system\ group=\u0648\u0635\u0641 \u0645\u062c\u0645\u0648\u0639\u0629 \u0627\u0644\u0646\u0638\u0627\u0645 +List\ of\ bundle\ repository\ URLs=\u0642\u0627\u0626\u0645\u0629 \u0639\u0646\u0627\u0648\u064a\u0646 URL \u0644\u0645\u0633\u062a\u0648\u062f\u0639 \u0627\u0644\u062d\u0632\u0645\u0629 +A\ human\ readable\ friendly\ identifier\ for\ the\ deployment=\u0645\u0639\u0631\u0641 \u0633\u0647\u0644 \u0627\u0644\u0642\u0631\u0627\u0621\u0629 \u0644\u0644\u0625\u0646\u0633\u0627\u0646 \u0644\u0644\u0646\u0634\u0631 +Enable\ Landing\ Page=\u062a\u0645\u0643\u064a\u0646 \u0627\u0644\u0635\u0641\u062d\u0629 \u0627\u0644\u0645\u0642\u0635\u0648\u062f\u0629 +Enable\ Landing\ Servlet\ to\ redirect\ users\ to\ landing\ page=\u062a\u0645\u0643\u064a\u0646 Landing Servlet \u0644\u0625\u0639\u0627\u062f\u0629 \u062a\u0648\u062c\u064a\u0647 \u0627\u0644\u0645\u0633\u062a\u062e\u062f\u0645\u064a\u0646 \u0625\u0644\u0649 \u0627\u0644\u0635\u0641\u062d\u0629 \u0627\u0644\u0645\u0642\u0635\u0648\u062f\u0629 +Config\ Class=\u0641\u0626\u0629 \u0627\u0644\u062a\u0643\u0648\u064a\u0646 +Type\ of\ module\ config\ class\ for\ which\ a\ custom\ panel\ must\ be\ generated=\u0646\u0648\u0639 \u0641\u0626\u0629 \u062a\u0643\u0648\u064a\u0646 \u0627\u0644\u0648\u062d\u062f\u0629 \u0627\u0644\u0646\u0645\u0637\u064a\u0629 \u0627\u0644\u062a\u064a \u064a\u062c\u0628 \u0625\u0646\u0634\u0627\u0621 \u0644\u0648\u062d\u0629 \u0645\u062e\u0635\u0635\u0629 \u0644\u0647\u0627 +UI\ Class=\u0641\u0626\u0629 \u0648\u0627\u062c\u0647\u0629 \u0627\u0644\u0645\u0633\u062a\u062e\u062f\u0645 +Fully\ qualified\ name\ of\ class\ implementing\ IModuleAdminPanel=\u0627\u0633\u0645 \u0645\u0624\u0647\u0644 \u0628\u0627\u0644\u0643\u0627\u0645\u0644 \u0644\u0644\u0641\u0626\u0629 \u0627\u0644\u062a\u064a \u062a\u0637\u0628\u0642 IModuleAdminPanel + +# Auto-extracted property IDs +sensorML=\u0627\u0644\u0627\u0633\u062a\u0634\u0639\u0627\u0631 \u0645\u0644 +lastUpdated=\u0622\u062e\u0631 \u062a\u062d\u062f\u064a\u062b +lat=\u062e\u0637 \u0627\u0644\u0639\u0631\u0636 +lon=\u062e\u0637 \u0627\u0644\u0637\u0648\u0644 +alt=\u0628\u062f\u064a\u0644 +x=X +y=Y +z=\u0632 +heading=\u0639\u0646\u0648\u0627\u0646 +pitch=\u064a\u0642\u0630\u0641 +roll=\u0644\u0641\u0627\u0641\u0629 +location=\u0645\u0648\u0642\u0639 +orientation=\u062a\u0648\u062c\u064a\u0647 +databaseNum=\u0631\u0642\u0645 \u0642\u0627\u0639\u062f\u0629 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a +enableAccessControl=\u062a\u0645\u0643\u064a\u0646 \u0627\u0644\u062a\u062d\u0643\u0645 \u0641\u064a \u0627\u0644\u0648\u0635\u0648\u0644 +requireAuth=\u062a\u062a\u0637\u0644\u0628 \u0627\u0644\u0645\u0635\u0627\u062f\u0642\u0629 +mimeType=\u0646\u0648\u0639 \u0627\u0644\u062a\u0645\u062b\u064a\u0644 \u0627\u0644\u0635\u0627\u0645\u062a +className=\u0627\u0633\u0645 \u0627\u0644\u0641\u0626\u0629 +endPoint=\u0646\u0642\u0637\u0629 \u0627\u0644\u0646\u0647\u0627\u064a\u0629 +id=\u0628\u0637\u0627\u0642\u0629 \u062a\u0639\u0631\u064a\u0641 +description=\u0648\u0635\u0641 +autoStart=\u0627\u0644\u0628\u062f\u0621 \u0627\u0644\u062a\u0644\u0642\u0627\u0626\u064a +topicName=\u0627\u0633\u0645 \u0627\u0644\u0645\u0648\u0636\u0648\u0639 +enablePublish=\u062a\u0645\u0643\u064a\u0646 \u0627\u0644\u0646\u0634\u0631 +enableSubscribe=\u062a\u0645\u0643\u064a\u0646 \u0627\u0644\u0627\u0634\u062a\u0631\u0627\u0643 +protocol=\u0628\u0631\u0648\u062a\u0648\u0643\u0648\u0644 +moduleConfigPath=\u0645\u0633\u0627\u0631 \u062a\u0643\u0648\u064a\u0646 \u0627\u0644\u0648\u062d\u062f\u0629 \u0627\u0644\u0646\u0645\u0637\u064a\u0629 +moduleDataPath=\u0645\u0633\u0627\u0631 \u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u0648\u062d\u062f\u0629 \u0627\u0644\u0646\u0645\u0637\u064a\u0629 +commonConfig=\u0627\u0644\u062a\u0643\u0648\u064a\u0646 \u0627\u0644\u0645\u0634\u062a\u0631\u0643 +sensors=Sensors +config=\u0627\u0644\u062a\u0643\u0648\u064a\u0646 +uniqueID=\u0645\u0639\u0631\u0641 \u0641\u0631\u064a\u062f +subsystems=\u0627\u0644\u0623\u0646\u0638\u0645\u0629 \u0627\u0644\u0641\u0631\u0639\u064a\u0629 +dbConfig=\u062a\u0643\u0648\u064a\u0646 \u062f\u064a\u0633\u064a\u0628\u0644 +systemUIDs=\u0645\u0639\u0631\u0641\u0627\u062a \u0627\u0644\u0646\u0638\u0627\u0645 +autoPurgeConfig=\u062a\u0643\u0648\u064a\u0646 \u0627\u0644\u062a\u0637\u0647\u064a\u0631 \u0627\u0644\u062a\u0644\u0642\u0627\u0626\u064a +minCommitPeriod=\u0627\u0644\u062d\u062f \u0627\u0644\u0623\u062f\u0646\u0649 \u0644\u0641\u062a\u0631\u0629 \u0627\u0644\u0627\u0644\u062a\u0632\u0627\u0645 +enabled=\u0645\u0645\u0643\u0651\u0646 +purgePeriod=\u0641\u062a\u0631\u0629 \u0627\u0644\u062a\u0637\u0647\u064a\u0631 +maxRecordAge=\u0627\u0644\u062d\u062f \u0627\u0644\u0623\u0642\u0635\u0649 \u0644\u0639\u0645\u0631 \u0627\u0644\u062a\u0633\u062c\u064a\u0644 +users=\u0627\u0644\u0645\u0633\u062a\u062e\u062f\u0645\u064a\u0646 +roles=\u0627\u0644\u0623\u062f\u0648\u0627\u0631 +allow=\u064a\u0633\u0645\u062d +deny=\u064a\u0646\u0643\u0631 +userID=\u0645\u0639\u0631\u0641 \u0627\u0644\u0645\u0633\u062a\u062e\u062f\u0645 +name=\u0627\u0633\u0645 +password=\u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631 +certificate=\u0634\u0647\u0627\u062f\u0629 +twoFactorSecret=\u0633\u0631 \u0639\u0627\u0645\u0644\u064a\u0646 +isTwoFactorEnabled=\u0647\u0644 \u062a\u0645 \u062a\u0645\u0643\u064a\u0646 \u0639\u0627\u0645\u0644\u064a\u0646\u061f +roleID=\u0645\u0639\u0631\u0641 \u0627\u0644\u062f\u0648\u0631 +sourceDatabaseId=\u0645\u0639\u0631\u0641 \u0642\u0627\u0639\u062f\u0629 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u0645\u0635\u062f\u0631 +includeFilter=\u062a\u0636\u0645\u064a\u0646 \u0639\u0627\u0645\u0644 \u0627\u0644\u062a\u0635\u0641\u064a\u0629 +excludeFilter=\u0627\u0633\u062a\u0628\u0639\u0627\u062f \u0639\u0627\u0645\u0644 \u0627\u0644\u062a\u0635\u0641\u064a\u0629 +httpPort=\u0645\u0646\u0641\u0630 \u0627\u0644\u0645\u062a\u0634\u0639\u0628 +httpsPort=\u0645\u0646\u0641\u0630 \u0647\u062a\u0628\u0633 +staticDocsRootUrl=\u0639\u0646\u0648\u0627\u0646 URL \u0644\u062c\u0630\u0631 \u0627\u0644\u0645\u0633\u062a\u0646\u062f\u0627\u062a \u0627\u0644\u062b\u0627\u0628\u062a\u0629 +staticDocsRootDir=\u0645\u062c\u0644\u062f \u062c\u0630\u0631 \u0627\u0644\u0645\u0633\u062a\u0646\u062f\u0627\u062a \u0627\u0644\u062b\u0627\u0628\u062a\u0629 +servletsRootUrl=\u0639\u0646\u0648\u0627\u0646 URL \u0644\u062c\u0630\u0631 Servlets +proxyBaseUrl=\u0639\u0646\u0648\u0627\u0646 URL \u0644\u0642\u0627\u0639\u062f\u0629 \u0627\u0644\u0648\u0643\u064a\u0644 +authMethod=\u0637\u0631\u064a\u0642\u0629 \u0627\u0644\u0645\u0635\u0627\u062f\u0642\u0629 +keyStorePath=\u0645\u0633\u0627\u0631 \u0645\u062e\u0632\u0646 \u0627\u0644\u0645\u0641\u0627\u062a\u064a\u062d +keyStorePassword=\u0643\u0644\u0645\u0629 \u0645\u0631\u0648\u0631 \u0627\u0644\u0645\u062a\u062c\u0631 \u0627\u0644\u0631\u0626\u064a\u0633\u064a +keyAlias=\u0627\u0644\u0627\u0633\u0645 \u0627\u0644\u0645\u0633\u062a\u0639\u0627\u0631 \u0627\u0644\u0631\u0626\u064a\u0633\u064a +trustStorePath=\u0645\u0633\u0627\u0631 \u0645\u062a\u062c\u0631 \u0627\u0644\u062b\u0642\u0629 +trustStorePassword=\u0627\u0644\u062b\u0642\u0629 \u0641\u064a \u0643\u0644\u0645\u0629 \u0645\u0631\u0648\u0631 \u0627\u0644\u0645\u062a\u062c\u0631 +xmlConfigFile=\u0645\u0644\u0641 \u062a\u0643\u0648\u064a\u0646 XML +enableCORS=\u062a\u0645\u0643\u064a\u0646 \u0643\u0648\u0631\u0633 +title=Title +keywords=\u0627\u0644\u0643\u0644\u0645\u0627\u062a \u0627\u0644\u0631\u0626\u064a\u0633\u064a\u0629 +fees=\u0645\u0635\u0627\u0631\u064a\u0641 +accessConstraints=\u0642\u064a\u0648\u062f \u0627\u0644\u0648\u0635\u0648\u0644 +serviceProvider=\u0645\u0632\u0648\u062f \u0627\u0644\u062e\u062f\u0645\u0629 +ogcCapabilitiesInfo=\u0645\u0639\u0644\u0648\u0645\u0627\u062a \u0642\u062f\u0631\u0627\u062a OGC +enableHttpGET=\u062a\u0645\u0643\u064a\u0646 \u0627\u0644\u0645\u062a\u0634\u0639\u0628 \u0627\u0644\u062d\u0635\u0648\u0644 +enableHttpPOST=\u062a\u0645\u0643\u064a\u0646 \u0645\u0634\u0627\u0631\u0643\u0629 \u0627\u0644\u0645\u062a\u0634\u0639\u0628 +enableSOAP=\u062a\u0645\u0643\u064a\u0646 \u0627\u0644\u0635\u0627\u0628\u0648\u0646 +connectTimeout=\u0627\u062a\u0635\u0627\u0644 \u0627\u0644\u0645\u0647\u0644\u0629 +reconnectPeriod=\u0641\u062a\u0631\u0629 \u0625\u0639\u0627\u062f\u0629 \u0627\u0644\u0627\u062a\u0635\u0627\u0644 +reconnectAttempts=\u0645\u062d\u0627\u0648\u0644\u0627\u062a \u0625\u0639\u0627\u062f\u0629 \u0627\u0644\u0627\u062a\u0635\u0627\u0644 +deviceID=\u0645\u0639\u0631\u0641 \u0627\u0644\u062c\u0647\u0627\u0632 +deviceClass=\u0641\u0626\u0629 \u0627\u0644\u062c\u0647\u0627\u0632 +remoteHost=\u0627\u0644\u0645\u0636\u064a\u0641 \u0627\u0644\u0628\u0639\u064a\u062f +localAddress=\u0627\u0644\u0639\u0646\u0648\u0627\u0646 \u0627\u0644\u0645\u062d\u0644\u064a +connection=\u0627\u062a\u0635\u0627\u0644 +portName=\u0627\u0633\u0645 \u0627\u0644\u0645\u0646\u0641\u0630 +baudRate=\u0645\u0639\u062f\u0644 \u0627\u0644\u0628\u0627\u0648\u062f +dataBits=\u0628\u062a\u0627\u062a \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a +stopBits=\u0648\u0642\u0641 \u0628\u062a +parity=\u0627\u0644\u062a\u0643\u0627\u0641\u0624 +receiveTimeout=\u062a\u0644\u0642\u064a \u0627\u0644\u0645\u0647\u0644\u0629 +receiveThreshold=\u0639\u062a\u0628\u0629 \u0627\u0644\u0627\u0633\u062a\u0644\u0627\u0645 +remotePort=\u0627\u0644\u0645\u0646\u0641\u0630 \u0627\u0644\u0628\u0639\u064a\u062f +localPort=\u0645\u064a\u0646\u0627\u0621 \u0645\u062d\u0644\u064a +deviceAddress=\u0639\u0646\u0648\u0627\u0646 \u0627\u0644\u062c\u0647\u0627\u0632 +deviceName=\u0627\u0633\u0645 \u0627\u0644\u062c\u0647\u0627\u0632 +serviceUuid=Uuid \u0627\u0644\u062e\u062f\u0645\u0629 +user=\u0645\u0633\u062a\u062e\u062f\u0645 +enableTLS=\u062a\u0645\u0643\u064a\u0646 Tls +checkReachability=\u062a\u062d\u0642\u0642 \u0645\u0646 \u0625\u0645\u0643\u0627\u0646\u064a\u0629 \u0627\u0644\u0648\u0635\u0648\u0644 +resourcePath=\u0645\u0633\u0627\u0631 \u0627\u0644\u0645\u0648\u0627\u0631\u062f +uid=\u0645\u0639\u0631\u0641 \u0645\u0639\u0631\u0641\u064a +securityRole=\u0627\u0644\u062f\u0648\u0631 \u0627\u0644\u0623\u0645\u0646\u064a +passwordField=\u062d\u0642\u0644 \u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631 +widgetSet=\u0645\u062c\u0645\u0648\u0639\u0629 \u0627\u0644\u0642\u0637\u0639\u0629 +bundleRepoUrls=\u0639\u0646\u0627\u0648\u064a\u0646 URL \u0644\u062d\u0632\u0645\u0629 \u0627\u0644\u0631\u064a\u0628\u0648 +customPanels=\u0644\u0648\u062d\u0627\u062a \u0645\u062e\u0635\u0635\u0629 +customForms=\u0627\u0644\u0646\u0645\u0627\u0630\u062c \u0627\u0644\u0645\u062e\u0635\u0635\u0629 +deploymentName=\u0627\u0633\u0645 \u0627\u0644\u0646\u0634\u0631 +enableLandingPage=\u062a\u0645\u0643\u064a\u0646 \u0627\u0644\u0635\u0641\u062d\u0629 \u0627\u0644\u0645\u0642\u0635\u0648\u062f\u0629 +configClass=\u0641\u0626\u0629 \u0627\u0644\u062a\u0643\u0648\u064a\u0646 +uiClass=\u0641\u0626\u0629 \u0648\u0627\u062c\u0647\u0629 \u0627\u0644\u0645\u0633\u062a\u062e\u062f\u0645 +moduleClass=\u0641\u0626\u0629 \u0627\u0644\u0648\u062d\u062f\u0629 \u0627\u0644\u0646\u0645\u0637\u064a\u0629 + +# Auto-extracted hardcoded UI strings +testLinks1=\u0631\u0648\u0627\u0628\u0637 \u0627\u0644\u0627\u062e\u062a\u0628\u0627\u0631 +uniqueID1=\u0645\u0639\u0631\u0641 \u0641\u0631\u064a\u062f +foiIDs1=\u0645\u0639\u0631\u0641\u0627\u062a \u062d\u0631\u064a\u0629 \u0627\u0644\u0645\u0639\u0644\u0648\u0645\u0627\u062a +version1=\u0625\u0635\u062f\u0627\u0631 + +Connected\ Systems\ Endpoint=\u0646\u0642\u0637\u0629 \u0646\u0647\u0627\u064a\u0629 \u0627\u0644\u0623\u0646\u0638\u0645\u0629 \u0627\u0644\u0645\u062a\u0635\u0644\u0629 +Connected\ Systems\ endpoint\ where\ the\ requests\ are\ sent=\u0646\u0642\u0637\u0629 \u0646\u0647\u0627\u064a\u0629 \u0627\u0644\u0623\u0646\u0638\u0645\u0629 \u0627\u0644\u0645\u062a\u0635\u0644\u0629 \u062d\u064a\u062b \u064a\u062a\u0645 \u0625\u0631\u0633\u0627\u0644 \u0627\u0644\u0637\u0644\u0628\u0627\u062a +Connection\ Settings=\u0625\u0639\u062f\u0627\u062f\u0627\u062a \u0627\u0644\u0627\u062a\u0635\u0627\u0644 +Custom\ connector\ configurations=\u062a\u0643\u0648\u064a\u0646\u0627\u062a \u0627\u0644\u0645\u0648\u0635\u0644 \u0627\u0644\u0645\u062e\u0635\u0635\u0629 +Custom\ provider\ configurations=\u062a\u0643\u0648\u064a\u0646\u0627\u062a \u0627\u0644\u0645\u0648\u0641\u0631 \u0627\u0644\u0645\u062e\u0635\u0635\u0629 +Database\ ID=\u0645\u0639\u0631\u0641 \u0642\u0627\u0639\u062f\u0629 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a +Default\ live\ time-out\ for\ all\ offerings,\ unless\ overriden\ by\ custom\ provider\ settings=\u0627\u0644\u0645\u0647\u0644\u0629 \u0627\u0644\u0645\u0628\u0627\u0634\u0631\u0629 \u0627\u0644\u0627\u0641\u062a\u0631\u0627\u0636\u064a\u0629 \u0644\u062c\u0645\u064a\u0639 \u0627\u0644\u0639\u0631\u0648\u0636\u060c \u0645\u0627 \u0644\u0645 \u064a\u062a\u0645 \u062a\u062c\u0627\u0648\u0632\u0647\u0627 \u0628\u0648\u0627\u0633\u0637\u0629 \u0625\u0639\u062f\u0627\u062f\u0627\u062a \u0627\u0644\u0645\u0648\u0641\u0631 \u0627\u0644\u0645\u062e\u0635\u0635\u0629 +Default\ live\ time-out\ for\ new\ offerings\ created\ via\ SOS-T=\u0627\u0644\u0645\u0647\u0644\u0629 \u0627\u0644\u0645\u0628\u0627\u0634\u0631\u0629 \u0627\u0644\u0627\u0641\u062a\u0631\u0627\u0636\u064a\u0629 \u0644\u0644\u0639\u0631\u0648\u0636 \u0627\u0644\u062c\u062f\u064a\u062f\u0629 \u0627\u0644\u062a\u064a \u062a\u0645 \u0625\u0646\u0634\u0627\u0624\u0647\u0627 \u0639\u0628\u0631 SOS-T +Enable\ to\ use\ a\ persistent\ HTTP\ connection\ for\ InsertResult=\u062a\u0645\u0643\u064a\u0646 \u0627\u0633\u062a\u062e\u062f\u0627\u0645 \u0627\u062a\u0635\u0627\u0644 HTTP \u0627\u0644\u0645\u0633\u062a\u0645\u0631 \u0644\u0640 InsertResult +Execution\ period\ of\ the\ purge\ policy\ (in\ seconds)=\u0645\u062f\u0629 \u062a\u0646\u0641\u064a\u0630 \u0633\u064a\u0627\u0633\u0629 \u0627\u0644\u062a\u0637\u0647\u064a\u0631 (\u0628\u0627\u0644\u062b\u0648\u0627\u0646\u064a) +Filtered\ view\ to\ select\ systems\ exposed\ as\ read-only\ through\ this\ service=\u0639\u0631\u0636 \u062a\u0645\u062a \u062a\u0635\u0641\u064a\u062a\u0647 \u0644\u062a\u062d\u062f\u064a\u062f \u0627\u0644\u0623\u0646\u0638\u0645\u0629 \u0627\u0644\u0645\u0643\u0634\u0648\u0641\u0629 \u0644\u0644\u0642\u0631\u0627\u0621\u0629 \u0641\u0642\u0637 \u0645\u0646 \u062e\u0644\u0627\u0644 \u0647\u0630\u0647 \u0627\u0644\u062e\u062f\u0645\u0629 +Filtered\ view\ to\ select\ systems/datastreams\ to\ register\ with\ Connected\ Systems=\u0637\u0631\u064a\u0642\u0629 \u0627\u0644\u0639\u0631\u0636 \u0627\u0644\u0645\u0641\u0644\u062a\u0631\u0629 \u0644\u062a\u062d\u062f\u064a\u062f \u0627\u0644\u0623\u0646\u0638\u0645\u0629/\u062a\u062f\u0641\u0642\u0627\u062a \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0644\u0644\u062a\u0633\u062c\u064a\u0644 \u0641\u064a \u0627\u0644\u0623\u0646\u0638\u0645\u0629 \u0627\u0644\u0645\u062a\u0635\u0644\u0629 +Filtered\ view\ to\ select\ systems/datastreams\ to\ register\ with\ remote\ SOS=\u0639\u0631\u0636 \u062a\u0645\u062a \u062a\u0635\u0641\u064a\u062a\u0647 \u0644\u062a\u062d\u062f\u064a\u062f \u0627\u0644\u0623\u0646\u0638\u0645\u0629/\u062a\u062f\u0641\u0642\u0627\u062a \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0644\u0644\u062a\u0633\u062c\u064a\u0644 \u0641\u064a SOS \u0639\u0646 \u0628\u0639\u062f +Fixed\ system\ location\ in\ EPSG\ 4979\ (WGS84)\ coordinate\ system=\u0645\u0648\u0642\u0639 \u0627\u0644\u0646\u0638\u0627\u0645 \u0627\u0644\u062b\u0627\u0628\u062a \u0641\u064a \u0646\u0638\u0627\u0645 \u0627\u0644\u0625\u062d\u062f\u0627\u062b\u064a\u0627\u062a EPSG 4979 (WGS84). +For\ each\ connection\ or\ reconnection\ attempt,\ the\ client\ will\ wait\ for\ the\ remote\ side\ to\ respond\ until\ this\ timeout\ expires\ (in\ ms)=\u0644\u0643\u0644 \u0645\u062d\u0627\u0648\u0644\u0629 \u0627\u062a\u0635\u0627\u0644 \u0623\u0648 \u0625\u0639\u0627\u062f\u0629 \u0627\u062a\u0635\u0627\u0644\u060c \u0633\u064a\u0646\u062a\u0638\u0631 \u0627\u0644\u0639\u0645\u064a\u0644 \u062d\u062a\u0649 \u064a\u0633\u062a\u062c\u064a\u0628 \u0627\u0644\u062c\u0627\u0646\u0628 \u0627\u0644\u0628\u0639\u064a\u062f \u062d\u062a\u0649 \u062a\u0646\u062a\u0647\u064a \u0647\u0630\u0647 \u0627\u0644\u0645\u0647\u0644\u0629 (\u0628\u0627\u0644\u0645\u0644\u0644\u064a \u062b\u0627\u0646\u064a\u0629) +Heading\ (or\ yaw)\ angle\ about\ Z\ axis\ in\ degrees=\u0632\u0627\u0648\u064a\u0629 \u0627\u0644\u0627\u062a\u062c\u0627\u0647 (\u0623\u0648 \u0627\u0644\u0627\u0646\u0639\u0631\u0627\u062c) \u062d\u0648\u0644 \u0627\u0644\u0645\u062d\u0648\u0631 Z \u0628\u0627\u0644\u062f\u0631\u062c\u0627\u062a +How\ long\ the\ client\ will\ wait\ after\ connection\ is\ lost\ before\ it\ will\ attempt\ to\ reconnect\ (in\ ms)=\u0627\u0644\u0645\u062f\u0629 \u0627\u0644\u062a\u064a \u0633\u064a\u0646\u062a\u0638\u0631\u0647\u0627 \u0627\u0644\u0639\u0645\u064a\u0644 \u0628\u0639\u062f \u0641\u0642\u062f\u0627\u0646 \u0627\u0644\u0627\u062a\u0635\u0627\u0644 \u0642\u0628\u0644 \u0623\u0646 \u064a\u062d\u0627\u0648\u0644 \u0625\u0639\u0627\u062f\u0629 \u0627\u0644\u0627\u062a\u0635\u0627\u0644 (\u0628\u0627\u0644\u0645\u0644\u0644\u064a \u062b\u0627\u0646\u064a\u0629) +ID\ Generator=\u0645\u0648\u0644\u062f \u0627\u0644\u0647\u0648\u064a\u0629 +ID\ of\ database\ module\ used\ for\ persisting\ data\ received\ by\ this\ service.\ If\ none\ is\ provided,\ new\ systems\ registered\ through\ this\ service\ will\ be\ available\ on\ the\ hub,\ but\ with\ no\ persistence\ guarantee\ across\ restarts.=\u0645\u0639\u0631\u0641 \u0648\u062d\u062f\u0629 \u0642\u0627\u0639\u062f\u0629 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u0645\u0633\u062a\u062e\u062f\u0645\u0629 \u0644\u0627\u0633\u062a\u0645\u0631\u0627\u0631 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u062a\u064a \u062a\u062a\u0644\u0642\u0627\u0647\u0627 \u0647\u0630\u0647 \u0627\u0644\u062e\u062f\u0645\u0629. \u0625\u0630\u0627 \u0644\u0645 \u064a\u062a\u0645 \u062a\u0648\u0641\u064a\u0631 \u0623\u064a \u0634\u064a\u0621\u060c \u0641\u0633\u062a\u0643\u0648\u0646 \u0627\u0644\u0623\u0646\u0638\u0645\u0629 \u0627\u0644\u062c\u062f\u064a\u062f\u0629 \u0627\u0644\u0645\u0633\u062c\u0644\u0629 \u0645\u0646 \u062e\u0644\u0627\u0644 \u0647\u0630\u0647 \u0627\u0644\u062e\u062f\u0645\u0629 \u0645\u062a\u0627\u062d\u0629 \u0639\u0644\u0649 \u0627\u0644\u0645\u0631\u0643\u0632\u060c \u0648\u0644\u0643\u0646 \u0645\u0639 \u0639\u062f\u0645 \u0648\u062c\u0648\u062f \u0636\u0645\u0627\u0646 \u0644\u0644\u0627\u0633\u062a\u0645\u0631\u0627\u0631\u064a\u0629 \u0639\u0628\u0631 \u0639\u0645\u0644\u064a\u0627\u062a \u0625\u0639\u0627\u062f\u0629 \u0627\u0644\u062a\u0634\u063a\u064a\u0644. +ID\ of\ database\ module\ used\ for\ persisting\ data\ received\ by\ this\ service.\ If\ none\ is\ provided,\ new\ systems\ registered\ through\ this\ service\ will\ be\ available\ on\ the\ hub,\ but\ with\ no\ persistence\ guarantee\ across\ restarts.\ Only\ the\ latest\ observation\ from\ each\ datastream\ will\ be\ available\ and\ older\ observations\ will\ be\ discarded=\u0645\u0639\u0631\u0641 \u0648\u062d\u062f\u0629 \u0642\u0627\u0639\u062f\u0629 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u0645\u0633\u062a\u062e\u062f\u0645\u0629 \u0644\u0627\u0633\u062a\u0645\u0631\u0627\u0631 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u062a\u064a \u062a\u062a\u0644\u0642\u0627\u0647\u0627 \u0647\u0630\u0647 \u0627\u0644\u062e\u062f\u0645\u0629. \u0625\u0630\u0627 \u0644\u0645 \u064a\u062a\u0645 \u062a\u0648\u0641\u064a\u0631 \u0623\u064a \u0634\u064a\u0621\u060c \u0641\u0633\u062a\u0643\u0648\u0646 \u0627\u0644\u0623\u0646\u0638\u0645\u0629 \u0627\u0644\u062c\u062f\u064a\u062f\u0629 \u0627\u0644\u0645\u0633\u062c\u0644\u0629 \u0645\u0646 \u062e\u0644\u0627\u0644 \u0647\u0630\u0647 \u0627\u0644\u062e\u062f\u0645\u0629 \u0645\u062a\u0627\u062d\u0629 \u0639\u0644\u0649 \u0627\u0644\u0645\u0631\u0643\u0632\u060c \u0648\u0644\u0643\u0646 \u0645\u0639 \u0639\u062f\u0645 \u0648\u062c\u0648\u062f \u0636\u0645\u0627\u0646 \u0644\u0644\u0627\u0633\u062a\u0645\u0631\u0627\u0631\u064a\u0629 \u0639\u0628\u0631 \u0639\u0645\u0644\u064a\u0627\u062a \u0625\u0639\u0627\u062f\u0629 \u0627\u0644\u062a\u0634\u063a\u064a\u0644. \u0644\u0646 \u062a\u062a\u0648\u0641\u0631 \u0633\u0648\u0649 \u0623\u062d\u062f\u062b \u0645\u0644\u0627\u062d\u0638\u0629 \u0645\u0646 \u0643\u0644 \u0645\u0635\u062f\u0631 \u0628\u064a\u0627\u0646\u0627\u062a \u0648\u0633\u064a\u062a\u0645 \u062a\u062c\u0627\u0647\u0644 \u0627\u0644\u0645\u0644\u0627\u062d\u0638\u0627\u062a \u0627\u0644\u0623\u0642\u062f\u0645 +Individual\ configuration\ of\ sensors\ in\ the\ array\ (will\ override\ common\ configuration)=\u0627\u0644\u062a\u0643\u0648\u064a\u0646 \u0627\u0644\u0641\u0631\u062f\u064a \u0644\u0623\u062c\u0647\u0632\u0629 \u0627\u0644\u0627\u0633\u062a\u0634\u0639\u0627\u0631 \u0641\u064a \u0627\u0644\u0645\u0635\u0641\u0648\u0641\u0629 (\u0633\u064a\u062a\u062c\u0627\u0648\u0632 \u0627\u0644\u062a\u0643\u0648\u064a\u0646 \u0627\u0644\u0645\u0634\u062a\u0631\u0643) +List\ of\ observed\ properties\ URI\ to\ make\ available\ as\ outputs=\u0642\u0627\u0626\u0645\u0629 URI \u0644\u0644\u062e\u0635\u0627\u0626\u0635 \u0627\u0644\u062a\u064a \u062a\u0645\u062a \u0645\u0644\u0627\u062d\u0638\u062a\u0647\u0627 \u0644\u0625\u062a\u0627\u062d\u062a\u0647\u0627 \u0643\u0645\u062e\u0631\u062c\u0627\u062a +Mapping\ of\ custom\ formats\ mime-types\ to\ custom\ serializer\ classes=\u062a\u0639\u064a\u064a\u0646 \u0623\u0646\u0648\u0627\u0639 mime \u0644\u0644\u062a\u0646\u0633\u064a\u0642\u0627\u062a \u0627\u0644\u0645\u062e\u0635\u0635\u0629 \u0644\u0641\u0626\u0627\u062a \u0627\u0644\u062a\u0633\u0644\u0633\u0644 \u0627\u0644\u0645\u062e\u0635\u0635\u0629 +Mappings\ used\ by\ CURIE\ to\ URI\ resolver=\u0627\u0644\u062a\u0639\u064a\u064a\u0646\u0627\u062a \u0627\u0644\u0645\u0633\u062a\u062e\u062f\u0645\u0629 \u0628\u0648\u0627\u0633\u0637\u0629 CURIE \u0644\u0645\u062d\u0644\u0644 URI +Max\ Limit=\u0627\u0644\u062d\u062f \u0627\u0644\u0623\u0642\u0635\u0649 +Max\ Observations\ Returned=\u062a\u0645 \u0625\u0631\u062c\u0627\u0639 \u0645\u0627\u0643\u0633 \u0627\u0644\u0645\u0644\u0627\u062d\u0638\u0627\u062a +Max\ Records\ Returned=\u062a\u0645 \u0625\u0631\u062c\u0627\u0639 \u0645\u0627\u0643\u0633 \u0627\u0644\u0633\u062c\u0644\u0627\u062a +Max\ delay\ between\ auto-commit\ execution,\ in\ seconds.\ 0\ to\ disable\ time-based\ auto-commit=\u0627\u0644\u062d\u062f \u0627\u0644\u0623\u0642\u0635\u0649 \u0644\u0644\u062a\u0623\u062e\u064a\u0631 \u0628\u064a\u0646 \u062a\u0646\u0641\u064a\u0630 \u0627\u0644\u0627\u0644\u062a\u0632\u0627\u0645 \u0627\u0644\u062a\u0644\u0642\u0627\u0626\u064a\u060c \u0628\u0627\u0644\u062b\u0648\u0627\u0646\u064a. 0 \u0644\u062a\u0639\u0637\u064a\u0644 \u0627\u0644\u0627\u0644\u062a\u0632\u0627\u0645 \u0627\u0644\u062a\u0644\u0642\u0627\u0626\u064a \u0627\u0644\u0645\u0633\u062a\u0646\u062f \u0625\u0644\u0649 \u0627\u0644\u0648\u0642\u062a +Maximum\ age\ of\ data\ to\ be\ kept\ in\ storage\ (in\ seconds)=\u0627\u0644\u062d\u062f \u0627\u0644\u0623\u0642\u0635\u0649 \u0644\u0639\u0645\u0631 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u062a\u064a \u0633\u064a\u062a\u0645 \u0627\u0644\u0627\u062d\u062a\u0641\u0627\u0638 \u0628\u0647\u0627 \u0641\u064a \u0627\u0644\u062a\u062e\u0632\u064a\u0646 (\u0628\u0627\u0644\u062b\u0648\u0627\u0646\u064a) +Maximum\ number\ of\ FoI\ IDs\ listed\ in\ capabilities=\u0627\u0644\u062d\u062f \u0627\u0644\u0623\u0642\u0635\u0649 \u0644\u0639\u062f\u062f \u0645\u0639\u0631\u0641\u0627\u062a FoI \u0627\u0644\u0645\u062f\u0631\u062c\u0629 \u0641\u064a \u0627\u0644\u0625\u0645\u0643\u0627\u0646\u0627\u062a +Maximum\ number\ of\ observations\ returned\ \ by\ a\ historical\ GetObservation\ request\ (for\ each\ selected\ offering)=\u0627\u0644\u062d\u062f \u0627\u0644\u0623\u0642\u0635\u0649 \u0644\u0639\u062f\u062f \u0627\u0644\u0645\u0644\u0627\u062d\u0638\u0627\u062a \u0627\u0644\u062a\u064a \u064a\u062a\u0645 \u0625\u0631\u062c\u0627\u0639\u0647\u0627 \u0628\u0648\u0627\u0633\u0637\u0629 \u0637\u0644\u0628 GetObservation \u0627\u0644\u062a\u0627\u0631\u064a\u062e\u064a (\u0644\u0643\u0644 \u0639\u0631\u0636 \u0645\u062d\u062f\u062f) +Maximum\ number\ of\ records\ in\ upload\ queue\ (used\ to\ compensate\ for\ variable\ bandwidth)=\u0627\u0644\u062d\u062f \u0627\u0644\u0623\u0642\u0635\u0649 \u0644\u0639\u062f\u062f \u0627\u0644\u0633\u062c\u0644\u0627\u062a \u0641\u064a \u0642\u0627\u0626\u0645\u0629 \u0627\u0646\u062a\u0638\u0627\u0631 \u0627\u0644\u062a\u062d\u0645\u064a\u0644 (\u064a\u0633\u062a\u062e\u062f\u0645 \u0644\u0644\u062a\u0639\u0648\u064a\u0636 \u0639\u0646 \u0627\u0644\u0646\u0637\u0627\u0642 \u0627\u0644\u062a\u0631\u062f\u062f\u064a \u0627\u0644\u0645\u062a\u063a\u064a\u0631) +Maximum\ number\ of\ resources\ returned\ in\ a\ single\ page=\u0627\u0644\u062d\u062f \u0627\u0644\u0623\u0642\u0635\u0649 \u0644\u0639\u062f\u062f \u0627\u0644\u0645\u0648\u0627\u0631\u062f \u0627\u0644\u062a\u064a \u064a\u062a\u0645 \u0625\u0631\u062c\u0627\u0639\u0647\u0627 \u0641\u064a \u0635\u0641\u062d\u0629 \u0648\u0627\u062d\u062f\u0629 +Maximum\ number\ of\ result\ records\ returned\ by\ a\ historical\ GetResult\ request=\u0627\u0644\u062d\u062f \u0627\u0644\u0623\u0642\u0635\u0649 \u0644\u0639\u062f\u062f \u0633\u062c\u0644\u0627\u062a \u0627\u0644\u0646\u062a\u0627\u0626\u062c \u0627\u0644\u062a\u064a \u064a\u062a\u0645 \u0625\u0631\u062c\u0627\u0639\u0647\u0627 \u0628\u0648\u0627\u0633\u0637\u0629 \u0637\u0644\u0628 GetResult \u0627\u0644\u062a\u0627\u0631\u064a\u062e\u064a +Maximum\ number\ of\ stream\ errors\ before\ we\ try\ to\ reconnect\ to\ remote\ server=\u0627\u0644\u062d\u062f \u0627\u0644\u0623\u0642\u0635\u0649 \u0644\u0639\u062f\u062f \u0623\u062e\u0637\u0627\u0621 \u0627\u0644\u062f\u0641\u0642 \u0642\u0628\u0644 \u0623\u0646 \u0646\u062d\u0627\u0648\u0644 \u0625\u0639\u0627\u062f\u0629 \u0627\u0644\u0627\u062a\u0635\u0627\u0644 \u0628\u0627\u0644\u062e\u0627\u062f\u0645 \u0627\u0644\u0628\u0639\u064a\u062f +Memory\ cache\ size\ for\ page\ chunks,\ in\ KB=\u062d\u062c\u0645 \u0630\u0627\u0643\u0631\u0629 \u0627\u0644\u062a\u062e\u0632\u064a\u0646 \u0627\u0644\u0645\u0624\u0642\u062a \u0644\u0623\u062c\u0632\u0627\u0621 \u0627\u0644\u0635\u0641\u062d\u0629\u060c \u0628\u0627\u0644\u0643\u064a\u0644\u0648\u0628\u0627\u064a\u062a +Metadata\ of\ system\ group\ that\ will\ be\ created\ to\ contain\ all\ procedures/sensors\ registered\ through\ this\ service.\ Only\ sensors\ in\ this\ group\ will\ be\ modifiable\ by\ this\ service=\u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u0648\u0635\u0641\u064a\u0629 \u0644\u0645\u062c\u0645\u0648\u0639\u0629 \u0627\u0644\u0646\u0638\u0627\u0645 \u0627\u0644\u062a\u064a \u0633\u064a\u062a\u0645 \u0625\u0646\u0634\u0627\u0624\u0647\u0627 \u0644\u062a\u062d\u062a\u0648\u064a \u0639\u0644\u0649 \u062c\u0645\u064a\u0639 \u0627\u0644\u0625\u062c\u0631\u0627\u0621\u0627\u062a/\u0627\u0644\u0645\u0633\u062a\u0634\u0639\u0631\u0627\u062a \u0627\u0644\u0645\u0633\u062c\u0644\u0629 \u0645\u0646 \u062e\u0644\u0627\u0644 \u0647\u0630\u0647 \u0627\u0644\u062e\u062f\u0645\u0629. \u0633\u064a\u062a\u0645 \u062a\u0639\u062f\u064a\u0644 \u0623\u062c\u0647\u0632\u0629 \u0627\u0644\u0627\u0633\u062a\u0634\u0639\u0627\u0631 \u0627\u0644\u0645\u0648\u062c\u0648\u062f\u0629 \u0641\u064a \u0647\u0630\u0647 \u0627\u0644\u0645\u062c\u0645\u0648\u0639\u0629 \u0641\u0642\u0637 \u0628\u0648\u0627\u0633\u0637\u0629 \u0647\u0630\u0647 \u0627\u0644\u062e\u062f\u0645\u0629 +Metadata\ of\ system\ group\ that\ will\ be\ created\ to\ contain\ all\ systems\ registered\ through\ this\ service.\ Only\ systems\ in\ this\ group\ will\ be\ modifiable\ by\ this\ service=\u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u0648\u0635\u0641\u064a\u0629 \u0644\u0645\u062c\u0645\u0648\u0639\u0629 \u0627\u0644\u0646\u0638\u0627\u0645 \u0627\u0644\u062a\u064a \u0633\u064a\u062a\u0645 \u0625\u0646\u0634\u0627\u0624\u0647\u0627 \u0644\u062a\u0634\u0645\u0644 \u062c\u0645\u064a\u0639 \u0627\u0644\u0623\u0646\u0638\u0645\u0629 \u0627\u0644\u0645\u0633\u062c\u0644\u0629 \u0645\u0646 \u062e\u0644\u0627\u0644 \u0647\u0630\u0647 \u0627\u0644\u062e\u062f\u0645\u0629. \u0627\u0644\u0623\u0646\u0638\u0645\u0629 \u0627\u0644\u0645\u0648\u062c\u0648\u062f\u0629 \u0641\u064a \u0647\u0630\u0647 \u0627\u0644\u0645\u062c\u0645\u0648\u0639\u0629 \u0641\u0642\u0637 \u0647\u064a \u0627\u0644\u062a\u064a \u0633\u062a\u0643\u0648\u0646 \u0642\u0627\u0628\u0644\u0629 \u0644\u0644\u062a\u0639\u062f\u064a\u0644 \u0628\u0648\u0627\u0633\u0637\u0629 \u0647\u0630\u0647 \u0627\u0644\u062e\u062f\u0645\u0629 +Method\ used\ to\ generate\ new\ resource\ IDs=\u0627\u0644\u0637\u0631\u064a\u0642\u0629 \u0627\u0644\u0645\u0633\u062a\u062e\u062f\u0645\u0629 \u0644\u0625\u0646\u0634\u0627\u0621 \u0645\u0639\u0631\u0641\u0627\u062a \u0627\u0644\u0645\u0648\u0627\u0631\u062f \u0627\u0644\u062c\u062f\u064a\u062f\u0629 +Minimum\ fillrate\ above\ which\ auto\ compact\ operations\ may\ be\ triggered=\u0627\u0644\u062d\u062f \u0627\u0644\u0623\u062f\u0646\u0649 \u0644\u0645\u0639\u062f\u0644 \u0627\u0644\u062a\u0639\u0628\u0626\u0629 \u0627\u0644\u0630\u064a \u0642\u062f \u064a\u062a\u0645 \u062a\u0634\u063a\u064a\u0644 \u0639\u0645\u0644\u064a\u0627\u062a \u0627\u0644\u0636\u063a\u0637 \u0627\u0644\u062a\u0644\u0642\u0627\u0626\u064a \u0641\u0648\u0642\u0647 +Minimum\ period\ between\ database\ commits\ (in\ ms)=\u0627\u0644\u062d\u062f \u0627\u0644\u0623\u062f\u0646\u0649 \u0644\u0644\u0641\u062a\u0631\u0629 \u0628\u064a\u0646 \u0639\u0645\u0644\u064a\u0627\u062a \u062a\u0646\u0641\u064a\u0630 \u0642\u0627\u0639\u062f\u0629 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a (\u0628\u0627\u0644\u0645\u0644\u0644\u064a \u062b\u0627\u0646\u064a\u0629) +Names\ of\ datastreams\ whose\ data\ will\ be\ hidden\ from\ the\ SOS.\ If\ this\ is\ null,\ all\ streams\ produced\ by\ the\ procedure\ are\ exposed=\u0623\u0633\u0645\u0627\u0621 \u062a\u062f\u0641\u0642\u0627\u062a \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u062a\u064a \u0633\u064a\u062a\u0645 \u0625\u062e\u0641\u0627\u0621 \u0628\u064a\u0627\u0646\u0627\u062a\u0647\u0627 \u0639\u0646 \u062e\u062f\u0645\u0629 SOS. \u0625\u0630\u0627 \u0643\u0627\u0646 \u0647\u0630\u0627 \u0641\u0627\u0631\u063a\u064b\u0627\u060c \u0641\u0633\u064a\u062a\u0645 \u0643\u0634\u0641 \u0643\u0627\u0641\u0629 \u0627\u0644\u062a\u062f\u0641\u0642\u0627\u062a \u0627\u0644\u0646\u0627\u062a\u062c\u0629 \u0639\u0646 \u0627\u0644\u0625\u062c\u0631\u0627\u0621 +Observed\ Properties=\u0627\u0644\u062e\u0635\u0627\u0626\u0635 \u0627\u0644\u0645\u0631\u0635\u0648\u062f\u0629 +Offering\ URI\ as\ exposed\ in\ capabilities.\ (if\ null,\ the\ procedure\ UID\ is\ used)=\u062a\u0642\u062f\u064a\u0645 URI \u0643\u0645\u0627 \u0647\u0648 \u0645\u0648\u0636\u062d \u0641\u064a \u0627\u0644\u0642\u062f\u0631\u0627\u062a. (\u0625\u0630\u0627 \u0643\u0627\u0646 \u0641\u0627\u0631\u063a\u064b\u0627\u060c \u0641\u0633\u064a\u062a\u0645 \u0627\u0633\u062a\u062e\u062f\u0627\u0645 UID \u0644\u0644\u0625\u062c\u0631\u0627\u0621) +Offering\ description\ (if\ null,\ it\ will\ be\ auto-generated)=\u0648\u0635\u0641 \u0627\u0644\u0639\u0631\u0636 (\u0625\u0630\u0627 \u0643\u0627\u0646 \u0641\u0627\u0631\u063a\u064b\u0627\u060c \u0641\u0633\u064a\u062a\u0645 \u0625\u0646\u0634\u0627\u0624\u0647 \u062a\u0644\u0642\u0627\u0626\u064a\u064b\u0627) +Offering\ name\ (if\ null,\ the\ procedure\ name\ is\ used)=\u0627\u0633\u0645 \u0627\u0644\u0639\u0631\u0636 (\u0625\u0630\u0627 \u0643\u0627\u0646 \u0641\u0627\u0631\u063a\u064b\u0627\u060c \u064a\u062a\u0645 \u0627\u0633\u062a\u062e\u062f\u0627\u0645 \u0627\u0633\u0645 \u0627\u0644\u0625\u062c\u0631\u0627\u0621) +Orientation\ as\ Euler\ angles\ in\ NED\ coordinate\ reference\ frame.\nOrder\ of\ rotations\ is\ z-y\u2019-x"\ (in\ rotating\ frame)\ or\ x-y-z\ (in\ fixed\ frame)=\u0627\u0644\u0627\u062a\u062c\u0627\u0647 \u0643\u0632\u0648\u0627\u064a\u0627 \u0623\u0648\u064a\u0644\u0631 \u0641\u064a \u0627\u0644\u0625\u0637\u0627\u0631 \u0627\u0644\u0645\u0631\u062c\u0639\u064a \u0627\u0644\u0625\u062d\u062f\u0627\u062b\u064a NED.\n\u062a\u0631\u062a\u064a\u0628 \u0627\u0644\u062f\u0648\u0631\u0627\u062a \u0647\u0648 z-y''-x" (\u0641\u064a \u0627\u0644\u0625\u0637\u0627\u0631 \u0627\u0644\u062f\u0648\u0627\u0631) \u0623\u0648 x-y-z (\u0641\u064a \u0627\u0644\u0625\u0637\u0627\u0631 \u0627\u0644\u062b\u0627\u0628\u062a) +Password\ for\ the\ key\ store\ (and\ for\ the\ keypair\ within\ the\ keystore).\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ "javax.net.ssl.keyStorePassword"\ system\ property.\ This\ value\ can\ use\ variable\ expansion\ expressions\ of\ the\ form\ "$${name}"\ (for\ environment\ variables\ and\ system\ properties)\ or\ "$${file;/path/to/file}"\ (for\ secret\ file\ contents).=\u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631 \u0644\u0645\u062e\u0632\u0646 \u0627\u0644\u0645\u0641\u0627\u062a\u064a\u062d (\u0648\u0644\u0632\u0648\u062c \u0627\u0644\u0645\u0641\u0627\u062a\u064a\u062d \u062f\u0627\u062e\u0644 \u0645\u062e\u0632\u0646 \u0627\u0644\u0645\u0641\u0627\u062a\u064a\u062d). \u0625\u0630\u0627 \u0643\u0627\u0646\u062a \u0647\u0630\u0647 \u0627\u0644\u0642\u064a\u0645\u0629 \u0641\u0627\u0631\u063a\u0629\u060c \u0641\u0633\u064a\u062a\u0645 \u0627\u0633\u062a\u062e\u062f\u0627\u0645 \u0642\u064a\u0645\u0629 \u062e\u0627\u0635\u064a\u0629 \u0627\u0644\u0646\u0638\u0627\u0645 "javax.net.ssl.keyStorePassword" \u0628\u0634\u0643\u0644 \u0627\u0641\u062a\u0631\u0627\u0636\u064a. \u064a\u0645\u0643\u0646 \u0644\u0647\u0630\u0647 \u0627\u0644\u0642\u064a\u0645\u0629 \u0627\u0633\u062a\u062e\u062f\u0627\u0645 \u062a\u0639\u0628\u064a\u0631\u0627\u062a \u062a\u0648\u0633\u064a\u0639 \u0645\u062a\u063a\u064a\u0631\u0629 \u0645\u0646 \u0627\u0644\u0646\u0645\u0648\u0630\u062c "$${name}" (\u0644\u0645\u062a\u063a\u064a\u0631\u0627\u062a \u0627\u0644\u0628\u064a\u0626\u0629 \u0648\u062e\u0635\u0627\u0626\u0635 \u0627\u0644\u0646\u0638\u0627\u0645) \u0623\u0648 "$${file;/path/to/file}" (\u0644\u0645\u062d\u062a\u0648\u064a\u0627\u062a \u0627\u0644\u0645\u0644\u0641 \u0627\u0644\u0633\u0631\u064a). +Password\ for\ the\ trust\ store.\ Ignored\ if\ client\ certificate\ authentication\ is\ not\ used.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ "javax.net.ssl.trustStorePassword"\ system\ property.\ This\ value\ can\ use\ variable\ expansion\ expressions\ of\ the\ form\ "$${name}"\ (for\ environment\ variables\ and\ system\ properties)\ or\ "$${file;/path/to/file}"\ (for\ secret\ file\ contents).=\u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631 \u0644\u0645\u062a\u062c\u0631 \u0627\u0644\u062b\u0642\u0629. \u064a\u062a\u0645 \u062a\u062c\u0627\u0647\u0644\u0647 \u0625\u0630\u0627 \u0644\u0645 \u064a\u062a\u0645 \u0627\u0633\u062a\u062e\u062f\u0627\u0645 \u0645\u0635\u0627\u062f\u0642\u0629 \u0634\u0647\u0627\u062f\u0629 \u0627\u0644\u0639\u0645\u064a\u0644. \u0625\u0630\u0627 \u0643\u0627\u0646\u062a \u0647\u0630\u0647 \u0627\u0644\u0642\u064a\u0645\u0629 \u0641\u0627\u0631\u063a\u0629\u060c \u0641\u0633\u064a\u062a\u0645 \u0627\u0633\u062a\u062e\u062f\u0627\u0645 \u0642\u064a\u0645\u0629 \u062e\u0627\u0635\u064a\u0629 \u0627\u0644\u0646\u0638\u0627\u0645 "javax.net.ssl.trustStorePassword" \u0628\u0634\u0643\u0644 \u0627\u0641\u062a\u0631\u0627\u0636\u064a. \u064a\u0645\u0643\u0646 \u0644\u0647\u0630\u0647 \u0627\u0644\u0642\u064a\u0645\u0629 \u0627\u0633\u062a\u062e\u062f\u0627\u0645 \u062a\u0639\u0628\u064a\u0631\u0627\u062a \u062a\u0648\u0633\u064a\u0639 \u0645\u062a\u063a\u064a\u0631\u0629 \u0645\u0646 \u0627\u0644\u0646\u0645\u0648\u0630\u062c "$${name}" (\u0644\u0645\u062a\u063a\u064a\u0631\u0627\u062a \u0627\u0644\u0628\u064a\u0626\u0629 \u0648\u062e\u0635\u0627\u0626\u0635 \u0627\u0644\u0646\u0638\u0627\u0645) \u0623\u0648 "$${file;/path/to/file}" (\u0644\u0645\u062d\u062a\u0648\u064a\u0627\u062a \u0627\u0644\u0645\u0644\u0641 \u0627\u0644\u0633\u0631\u064a). +Path\ of\ service\ endpoint\ relative\ to\ the\ context\ URL\ (e.g.\ http\://server.net/sensorhub)=\u0645\u0633\u0627\u0631 \u0646\u0642\u0637\u0629 \u0646\u0647\u0627\u064a\u0629 \u0627\u0644\u062e\u062f\u0645\u0629 \u0628\u0627\u0644\u0646\u0633\u0628\u0629 \u0625\u0644\u0649 \u0639\u0646\u0648\u0627\u0646 URL \u0644\u0644\u0633\u064a\u0627\u0642 (\u0639\u0644\u0649 \u0633\u0628\u064a\u0644 \u0627\u0644\u0645\u062b\u0627\u0644 http://server.net/sensorhub) +Path\ to\ a\ key\ store\ containing\ the\ certificate\ and\ keypair\ that\ this\ server\ will\ present\ to\ clients\ when\ accessed\ over\ HTTPS.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ "javax.net.ssl.keyStore"\ system\ property.\ This\ value\ can\ use\ variable\ expansion\ expressions\ of\ the\ form\ "$${name}"\ (for\ environment\ variables\ and\ system\ properties)\ or\ "$${file;/path/to/file}"\ (for\ secret\ file\ contents).=\u0627\u0644\u0645\u0633\u0627\u0631 \u0625\u0644\u0649 \u0645\u062e\u0632\u0646 \u0627\u0644\u0645\u0641\u0627\u062a\u064a\u062d \u0627\u0644\u0630\u064a \u064a\u062d\u062a\u0648\u064a \u0639\u0644\u0649 \u0627\u0644\u0634\u0647\u0627\u062f\u0629 \u0648\u0632\u0648\u062c \u0627\u0644\u0645\u0641\u0627\u062a\u064a\u062d \u0627\u0644\u0630\u064a \u0633\u064a\u0642\u062f\u0645\u0647 \u0647\u0630\u0627 \u0627\u0644\u062e\u0627\u062f\u0645 \u0644\u0644\u0639\u0645\u0644\u0627\u0621 \u0639\u0646\u062f \u0627\u0644\u0648\u0635\u0648\u0644 \u0625\u0644\u064a\u0647 \u0639\u0628\u0631 HTTPS. \u0625\u0630\u0627 \u0643\u0627\u0646\u062a \u0647\u0630\u0647 \u0627\u0644\u0642\u064a\u0645\u0629 \u0641\u0627\u0631\u063a\u0629\u060c \u0641\u0633\u064a\u062a\u0645 \u0627\u0633\u062a\u062e\u062f\u0627\u0645 \u0642\u064a\u0645\u0629 \u062e\u0627\u0635\u064a\u0629 \u0627\u0644\u0646\u0638\u0627\u0645 "javax.net.ssl.keyStore" \u0628\u0634\u0643\u0644 \u0627\u0641\u062a\u0631\u0627\u0636\u064a. \u064a\u0645\u0643\u0646 \u0644\u0647\u0630\u0647 \u0627\u0644\u0642\u064a\u0645\u0629 \u0627\u0633\u062a\u062e\u062f\u0627\u0645 \u062a\u0639\u0628\u064a\u0631\u0627\u062a \u062a\u0648\u0633\u064a\u0639 \u0645\u062a\u063a\u064a\u0631\u0629 \u0645\u0646 \u0627\u0644\u0646\u0645\u0648\u0630\u062c "$${name}" (\u0644\u0645\u062a\u063a\u064a\u0631\u0627\u062a \u0627\u0644\u0628\u064a\u0626\u0629 \u0648\u062e\u0635\u0627\u0626\u0635 \u0627\u0644\u0646\u0638\u0627\u0645) \u0623\u0648 "$${file;/path/to/file}" (\u0644\u0645\u062d\u062a\u0648\u064a\u0627\u062a \u0627\u0644\u0645\u0644\u0641 \u0627\u0644\u0633\u0631\u064a). +Path\ to\ database\ file=\u0627\u0644\u0645\u0633\u0627\u0631 \u0625\u0644\u0649 \u0645\u0644\u0641 \u0642\u0627\u0639\u062f\u0629 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a +Path\ to\ external\ config\ file\ (in\ Jetty\ IOC\ XML\ format)=\u0627\u0644\u0645\u0633\u0627\u0631 \u0625\u0644\u0649 \u0645\u0644\u0641 \u0627\u0644\u062a\u0643\u0648\u064a\u0646 \u0627\u0644\u062e\u0627\u0631\u062c\u064a (\u0628\u062a\u0646\u0633\u064a\u0642 Jetty IOC XML) +Path\ to\ the\ TLS\ trust\ store\ that\ is\ used\ when\ client\ authentication\ is\ required.\ Ignored\ if\ client\ certificate\ authentication\ is\ not\ used.\ Certificates\ in\ this\ file\ designate\ the\ signing\ authorities\ for\ client\ certificates\ that\ will\ be\ trusted.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ "javax.net.ssl.trustStore"\ system\ property.\ This\ value\ can\ use\ variable\ expansion\ expressions\ of\ the\ form\ "$${name}"\ (for\ environment\ variables\ and\ system\ properties)\ or\ "$${file;/path/to/file}"\ (for\ secret\ file\ contents).=\u0627\u0644\u0645\u0633\u0627\u0631 \u0625\u0644\u0649 \u0645\u062e\u0632\u0646 \u062b\u0642\u0629 TLS \u0627\u0644\u0630\u064a \u064a\u062a\u0645 \u0627\u0633\u062a\u062e\u062f\u0627\u0645\u0647 \u0639\u0646\u062f\u0645\u0627 \u062a\u0643\u0648\u0646 \u0645\u0635\u0627\u062f\u0642\u0629 \u0627\u0644\u0639\u0645\u064a\u0644 \u0645\u0637\u0644\u0648\u0628\u0629. \u064a\u062a\u0645 \u062a\u062c\u0627\u0647\u0644\u0647 \u0625\u0630\u0627 \u0644\u0645 \u064a\u062a\u0645 \u0627\u0633\u062a\u062e\u062f\u0627\u0645 \u0645\u0635\u0627\u062f\u0642\u0629 \u0634\u0647\u0627\u062f\u0629 \u0627\u0644\u0639\u0645\u064a\u0644. \u062a\u062d\u062f\u062f \u0627\u0644\u0634\u0647\u0627\u062f\u0627\u062a \u0627\u0644\u0645\u0648\u062c\u0648\u062f\u0629 \u0641\u064a \u0647\u0630\u0627 \u0627\u0644\u0645\u0644\u0641 \u0635\u0644\u0627\u062d\u064a\u0627\u062a \u0627\u0644\u062a\u0648\u0642\u064a\u0639 \u0644\u0634\u0647\u0627\u062f\u0627\u062a \u0627\u0644\u0639\u0645\u064a\u0644 \u0627\u0644\u062a\u064a \u0633\u064a\u062a\u0645 \u0627\u0644\u0648\u062b\u0648\u0642 \u0628\u0647\u0627. \u0625\u0630\u0627 \u0643\u0627\u0646\u062a \u0647\u0630\u0647 \u0627\u0644\u0642\u064a\u0645\u0629 \u0641\u0627\u0631\u063a\u0629\u060c \u0641\u0633\u064a\u062a\u0645 \u0627\u0633\u062a\u062e\u062f\u0627\u0645 \u0642\u064a\u0645\u0629 \u062e\u0627\u0635\u064a\u0629 \u0627\u0644\u0646\u0638\u0627\u0645 "javax.net.ssl.trustStore" \u0628\u0634\u0643\u0644 \u0627\u0641\u062a\u0631\u0627\u0636\u064a. \u064a\u0645\u0643\u0646 \u0644\u0647\u0630\u0647 \u0627\u0644\u0642\u064a\u0645\u0629 \u0627\u0633\u062a\u062e\u062f\u0627\u0645 \u062a\u0639\u0628\u064a\u0631\u0627\u062a \u062a\u0648\u0633\u064a\u0639 \u0645\u062a\u063a\u064a\u0631\u0629 \u0645\u0646 \u0627\u0644\u0646\u0645\u0648\u0630\u062c "$${name}" (\u0644\u0645\u062a\u063a\u064a\u0631\u0627\u062a \u0627\u0644\u0628\u064a\u0626\u0629 \u0648\u062e\u0635\u0627\u0626\u0635 \u0627\u0644\u0646\u0638\u0627\u0645) \u0623\u0648 "$${file;/path/to/file}" (\u0644\u0645\u062d\u062a\u0648\u064a\u0627\u062a \u0627\u0644\u0645\u0644\u0641 \u0627\u0644\u0633\u0631\u064a). +Port\ number\ to\ connect\ to\ on\ remote\ host\ (0\ to\ automatically\ select\ a\ port)=\u0631\u0642\u0645 \u0627\u0644\u0645\u0646\u0641\u0630 \u0644\u0644\u0627\u062a\u0635\u0627\u0644 \u0628\u0647 \u0639\u0644\u0649 \u0627\u0644\u0645\u0636\u064a\u0641 \u0627\u0644\u0628\u0639\u064a\u062f (0 \u0644\u062a\u062d\u062f\u064a\u062f \u0645\u0646\u0641\u0630 \u062a\u0644\u0642\u0627\u0626\u064a\u064b\u0627) +SOS\ Endpoint=\u0646\u0642\u0637\u0629 \u0646\u0647\u0627\u064a\u0629 SOS +SOS\ endpoint\ to\ fetch\ data\ from=\u0646\u0642\u0637\u0629 \u0646\u0647\u0627\u064a\u0629 SOS \u0644\u062c\u0644\u0628 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0645\u0646\u0647\u0627 +SOS\ endpoint\ where\ the\ requests\ are\ sent=\u0646\u0642\u0637\u0629 \u0646\u0647\u0627\u064a\u0629 SOS \u062d\u064a\u062b \u064a\u062a\u0645 \u0625\u0631\u0633\u0627\u0644 \u0627\u0644\u0637\u0644\u0628\u0627\u062a +SPS\ Endpoint=\u0646\u0642\u0637\u0629 \u0646\u0647\u0627\u064a\u0629 SPS +SPS\ endpoint\ to\ send\ commands\ to=\u0646\u0642\u0637\u0629 \u0646\u0647\u0627\u064a\u0629 SPS \u0644\u0625\u0631\u0633\u0627\u0644 \u0627\u0644\u0623\u0648\u0627\u0645\u0631 \u0625\u0644\u064a\u0647\u0627 +Security\ related\ options=\u0627\u0644\u062e\u064a\u0627\u0631\u0627\u062a \u0627\u0644\u0645\u062a\u0639\u0644\u0642\u0629 \u0628\u0627\u0644\u0623\u0645\u0646 +Sensor\ UID=\u0645\u0639\u0631\u0641 \u0627\u0644\u0645\u0633\u062a\u0634\u0639\u0631 \u0627\u0644\u0641\u0631\u064a\u062f +Set\ if\ WebSocket\ protocol\ should\ be\ used\ to\ get\ streaming\ data\ from\ SOS=\u0642\u0645 \u0628\u062a\u0639\u064a\u064a\u0646 \u0645\u0627 \u0625\u0630\u0627 \u0643\u0627\u0646 \u064a\u062c\u0628 \u0627\u0633\u062a\u062e\u062f\u0627\u0645 \u0628\u0631\u0648\u062a\u0648\u0643\u0648\u0644 WebSocket \u0644\u0644\u062d\u0635\u0648\u0644 \u0639\u0644\u0649 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u0645\u062a\u062f\u0641\u0642\u0629 \u0645\u0646 SOS +Set\ if\ offering\ is\ enabled,\ unset\ if\ disabled=\u0642\u0645 \u0628\u062a\u0639\u064a\u064a\u0646 \u0645\u0627 \u0625\u0630\u0627 \u0643\u0627\u0646 \u0627\u0644\u0639\u0631\u0636 \u0645\u0645\u0643\u0651\u0646\u064b\u0627\u060c \u0648\u0625\u0644\u063a\u0627\u0621 \u0627\u0644\u0636\u0628\u0637 \u0625\u0630\u0627 \u062a\u0645 \u062a\u0639\u0637\u064a\u0644\u0647 +Set\ if\ websockets\ protocol\ should\ be\ used\ to\ send\ commands\ to\ SPS=\u0642\u0645 \u0628\u062a\u0639\u064a\u064a\u0646 \u0645\u0627 \u0625\u0630\u0627 \u0643\u0627\u0646 \u064a\u062c\u0628 \u0627\u0633\u062a\u062e\u062f\u0627\u0645 \u0628\u0631\u0648\u062a\u0648\u0643\u0648\u0644 websockets \u0644\u0625\u0631\u0633\u0627\u0644 \u0627\u0644\u0623\u0648\u0627\u0645\u0631 \u0625\u0644\u0649 SPS +Set\ to\ compact\ the\ database\ file\ when\ the\ database\ module\ is\ stopped\ or\ restarted=\u0642\u0645 \u0628\u0627\u0644\u062a\u0639\u064a\u064a\u0646 \u0644\u0636\u063a\u0637 \u0645\u0644\u0641 \u0642\u0627\u0639\u062f\u0629 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0639\u0646\u062f \u0625\u064a\u0642\u0627\u0641 \u0648\u062d\u062f\u0629 \u0642\u0627\u0639\u062f\u0629 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0623\u0648 \u0625\u0639\u0627\u062f\u0629 \u062a\u0634\u063a\u064a\u0644\u0647\u0627 +Set\ to\ compress\ underlying\ file\ storage=\u0627\u0636\u0628\u0637 \u0644\u0636\u063a\u0637 \u062a\u062e\u0632\u064a\u0646 \u0627\u0644\u0645\u0644\u0641\u0627\u062a \u0627\u0644\u0623\u0633\u0627\u0633\u064a\u0629 +Set\ to\ display\ MVStore\ debug\ info\ when\ database\ is\ closed\ (only\ if\ DEBUG\ log\ is\ also\ enabled)=\u0627\u0636\u0628\u0637 \u0644\u0639\u0631\u0636 \u0645\u0639\u0644\u0648\u0645\u0627\u062a \u062a\u0635\u062d\u064a\u062d MVStore \u0639\u0646\u062f \u0625\u063a\u0644\u0627\u0642 \u0642\u0627\u0639\u062f\u0629 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a (\u0641\u0642\u0637 \u0641\u064a \u062d\u0627\u0644\u0629 \u062a\u0645\u0643\u064a\u0646 \u0633\u062c\u0644 DEBUG \u0623\u064a\u0636\u064b\u0627) +Set\ to\ enable\ spatial\ indexing\ of\ individual\ observations\ sampling\ locations\ (when\ provided)=\u062a\u0645 \u062a\u0639\u064a\u064a\u0646\u0647 \u0644\u062a\u0645\u0643\u064a\u0646 \u0627\u0644\u0641\u0647\u0631\u0633\u0629 \u0627\u0644\u0645\u0643\u0627\u0646\u064a\u0629 \u0644\u0645\u0648\u0627\u0642\u0639 \u0623\u062e\u0630 \u0639\u064a\u0646\u0627\u062a \u0627\u0644\u0645\u0644\u0627\u062d\u0638\u0627\u062a \u0627\u0644\u0641\u0631\u062f\u064a\u0629 (\u0639\u0646\u062f \u062a\u0648\u0641\u0631\u0647\u0627) +Set\ to\ open\ the\ database\ as\ read-only=\u062a\u0639\u064a\u064a\u0646 \u0644\u0641\u062a\u062d \u0642\u0627\u0639\u062f\u0629 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0644\u0644\u0642\u0631\u0627\u0621\u0629 \u0641\u0642\u0637 +Set\ to\ true\ to\ enable\ transactional\ operation\ support=\u0627\u0636\u0628\u0637 \u0639\u0644\u0649 "\u0635\u062d\u064a\u062d" \u0644\u062a\u0645\u0643\u064a\u0646 \u062f\u0639\u0645 \u0639\u0645\u0644\u064a\u0627\u062a \u0627\u0644\u0645\u0639\u0627\u0645\u0644\u0627\u062a +Size\ of\ the\ auto-commit\ write\ buffer,\ in\ KB=\u062d\u062c\u0645 \u0627\u0644\u0645\u062e\u0632\u0646 \u0627\u0644\u0645\u0624\u0642\u062a \u0644\u0644\u0643\u062a\u0627\u0628\u0629 \u0627\u0644\u062a\u0644\u0642\u0627\u0626\u064a\u060c \u0628\u0627\u0644\u0643\u064a\u0644\u0648\u0628\u0627\u064a\u062a +TCP\ port\ where\ server\ will\ listen\ for\ secure\ HTTP\ (HTTPS)\ connections\ (use\ 0\ to\ disable\ HTTPS).=\u0645\u0646\u0641\u0630 TCP \u062d\u064a\u062b \u0633\u064a\u0633\u062a\u0645\u0639 \u0627\u0644\u062e\u0627\u062f\u0645 \u0625\u0644\u0649 \u0627\u062a\u0635\u0627\u0644\u0627\u062a HTTP (HTTPS) \u0627\u0644\u0622\u0645\u0646\u0629 (\u0627\u0633\u062a\u062e\u062f\u0645 0 \u0644\u062a\u0639\u0637\u064a\u0644 HTTPS). +TCP\ port\ where\ server\ will\ listen\ for\ unsecure\ HTTP\ connections\ (use\ 0\ to\ disable\ HTTP).=\u0645\u0646\u0641\u0630 TCP \u062d\u064a\u062b \u0633\u064a\u0633\u062a\u0645\u0639 \u0627\u0644\u062e\u0627\u062f\u0645 \u0625\u0644\u0649 \u0627\u062a\u0635\u0627\u0644\u0627\u062a HTTP \u063a\u064a\u0631 \u0627\u0644\u0622\u0645\u0646\u0629 (\u0627\u0633\u062a\u062e\u062f\u0645 0 \u0644\u062a\u0639\u0637\u064a\u0644 HTTP). +Time-out\ after\ which\ real-time\ requests\ are\ disabled\ if\ no\ more\ measurements\ are\ received\ (in\ seconds).\ Real-time\ is\ reactivated\ as\ soon\ as\ new\ records\ start\ being\ received\ again=\u0627\u0644\u0645\u0647\u0644\u0629 \u0627\u0644\u062a\u064a \u064a\u062a\u0645 \u0628\u0639\u062f\u0647\u0627 \u062a\u0639\u0637\u064a\u0644 \u0637\u0644\u0628\u0627\u062a \u0627\u0644\u0648\u0642\u062a \u0627\u0644\u0641\u0639\u0644\u064a \u0641\u064a \u062d\u0627\u0644\u0629 \u0639\u062f\u0645 \u062a\u0644\u0642\u064a \u0627\u0644\u0645\u0632\u064a\u062f \u0645\u0646 \u0627\u0644\u0642\u064a\u0627\u0633\u0627\u062a (\u0628\u0627\u0644\u062b\u0648\u0627\u0646\u064a). \u062a\u062a\u0645 \u0625\u0639\u0627\u062f\u0629 \u062a\u0646\u0634\u064a\u0637 \u0627\u0644\u0648\u0642\u062a \u0627\u0644\u0641\u0639\u0644\u064a \u0628\u0645\u062c\u0631\u062f \u0628\u062f\u0621 \u062a\u0644\u0642\u064a \u0627\u0644\u0633\u062c\u0644\u0627\u062a \u0627\u0644\u062c\u062f\u064a\u062f\u0629 \u0645\u0631\u0629 \u0623\u062e\u0631\u0649 +Time-out\ period\ after\ which\ a\ template\ ID\ reserved\ using\ InsertResultTemplate\ will\ expire\ if\ not\ used\ in\ InsertResult\ requests\ (in\ seconds)=\u0641\u062a\u0631\u0629 \u0627\u0644\u0645\u0647\u0644\u0629 \u0627\u0644\u062a\u064a \u062a\u0646\u062a\u0647\u064a \u0628\u0639\u062f\u0647\u0627 \u0635\u0644\u0627\u062d\u064a\u0629 \u0645\u0639\u0631\u0641 \u0627\u0644\u0642\u0627\u0644\u0628 \u0627\u0644\u0645\u062d\u062c\u0648\u0632 \u0628\u0627\u0633\u062a\u062e\u062f\u0627\u0645 InsertResultTemplate \u0625\u0630\u0627 \u0644\u0645 \u064a\u062a\u0645 \u0627\u0633\u062a\u062e\u062f\u0627\u0645\u0647 \u0641\u064a \u0637\u0644\u0628\u0627\u062a InsertResult (\u0628\u0627\u0644\u062b\u0648\u0627\u0646\u064a) +Timeout\ after\ which\ data\ is\ released\ to\ the\ caller\ if\ at\ least\ one\ byte\ was\ received\ (in\ ms)=\u0627\u0644\u0645\u0647\u0644\u0629 \u0627\u0644\u062a\u064a \u064a\u062a\u0645 \u0628\u0639\u062f\u0647\u0627 \u0625\u0635\u062f\u0627\u0631 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0644\u0644\u0645\u062a\u0635\u0644 \u0625\u0630\u0627 \u062a\u0645 \u0627\u0633\u062a\u0644\u0627\u0645 \u0628\u0627\u064a\u062a \u0648\u0627\u062d\u062f \u0639\u0644\u0649 \u0627\u0644\u0623\u0642\u0644 (\u0628\u0627\u0644\u0645\u0644\u0644\u064a \u062b\u0627\u0646\u064a\u0629) +URI\ Prefix\ Map=\u062e\u0631\u064a\u0637\u0629 \u0628\u0627\u062f\u0626\u0629 URI +Unique\ ID\ (full\ URN\ or\ only\ suffix)\ to\ use\ for\ the\ sensor\ system\ or\ 'auto'\ to\ use\ the\ UUID\ randomly\ generated\ the\ first\ time\ the\ module\ is\ initialized=\u0645\u0639\u0631\u0641 \u0641\u0631\u064a\u062f (URN \u0643\u0627\u0645\u0644 \u0623\u0648 \u0644\u0627\u062d\u0642\u0629 \u0641\u0642\u0637) \u0644\u0627\u0633\u062a\u062e\u062f\u0627\u0645\u0647 \u0641\u064a \u0646\u0638\u0627\u0645 \u0627\u0644\u0627\u0633\u062a\u0634\u0639\u0627\u0631 \u0623\u0648 "\u062a\u0644\u0642\u0627\u0626\u064a" \u0644\u0627\u0633\u062a\u062e\u062f\u0627\u0645 UUID \u0627\u0644\u0630\u064a \u062a\u0645 \u0625\u0646\u0634\u0627\u0624\u0647 \u0628\u0634\u0643\u0644 \u0639\u0634\u0648\u0627\u0626\u064a \u0641\u064a \u0627\u0644\u0645\u0631\u0629 \u0627\u0644\u0623\u0648\u0644\u0649 \u0627\u0644\u062a\u064a \u062a\u062a\u0645 \u0641\u064a\u0647\u0627 \u062a\u0647\u064a\u0626\u0629 \u0627\u0644\u0648\u062d\u062f\u0629 +Unique\ ID\ of\ a\ system\ that\ this\ configuration\ applies\ to.\nCan\ include\ a\ trailing\ wildcard\ '*'\ to\ match\ several\ systems\ at\ once.=\u0627\u0644\u0645\u0639\u0631\u0641 \u0627\u0644\u0641\u0631\u064a\u062f \u0644\u0644\u0646\u0638\u0627\u0645 \u0627\u0644\u0630\u064a \u064a\u0646\u0637\u0628\u0642 \u0639\u0644\u064a\u0647 \u0647\u0630\u0627 \u0627\u0644\u062a\u0643\u0648\u064a\u0646.\n\u064a\u0645\u0643\u0646 \u0623\u0646 \u064a\u062a\u0636\u0645\u0646 \u062d\u0631\u0641 \u0628\u062f\u0644 \u0632\u0627\u0626\u062f\u0629 "*" \u0644\u0645\u0637\u0627\u0628\u0642\u0629 \u0639\u062f\u0629 \u0623\u0646\u0638\u0645\u0629 \u0641\u064a \u0648\u0642\u062a \u0648\u0627\u062d\u062f. +Unique\ ID\ of\ sensor\ to\ connect\ to\ on\ SOS\ and\ SPS\ servers=\u0645\u0639\u0631\u0641 \u0641\u0631\u064a\u062f \u0644\u0644\u0645\u0633\u062a\u0634\u0639\u0631 \u0644\u0644\u0627\u062a\u0635\u0627\u0644 \u0628\u0647 \u0639\u0644\u0649 \u062e\u0648\u0627\u062f\u0645 SOS \u0648SPS +Unique\ ID\ of\ system\ that\ this\ configuration\ applies\ to.\nCan\ include\ a\ trailing\ wildcard\ '*'\ to\ match\ several\ systems\ at\ once.=\u0627\u0644\u0645\u0639\u0631\u0641 \u0627\u0644\u0641\u0631\u064a\u062f \u0644\u0644\u0646\u0638\u0627\u0645 \u0627\u0644\u0630\u064a \u064a\u0646\u0637\u0628\u0642 \u0639\u0644\u064a\u0647 \u0647\u0630\u0627 \u0627\u0644\u062a\u0643\u0648\u064a\u0646.\n\u064a\u0645\u0643\u0646 \u0623\u0646 \u064a\u062a\u0636\u0645\u0646 \u062d\u0631\u0641 \u0628\u062f\u0644 \u0632\u0627\u0626\u062f\u0629 "*" \u0644\u0645\u0637\u0627\u0628\u0642\u0629 \u0639\u062f\u0629 \u0623\u0646\u0638\u0645\u0629 \u0641\u064a \u0648\u0642\u062a \u0648\u0627\u062d\u062f. +Use\ WebSockets\ for\ SOS=\u0627\u0633\u062a\u062e\u062f\u0645 WebSockets \u0644\u0640 SOS +Use\ WebSockets\ for\ SPS=\u0627\u0633\u062a\u062e\u062f\u0645 WebSockets \u0644\u0640 SPS + +Node\ ID=\u0645\u0639\u0631\u0641 \u0627\u0644\u0639\u0642\u062f\u0629 +Stats\ Frequency\ (min)=\u0627\u062d\u0635\u0627\u0626\u064a\u0627\u062a \u0627\u0644\u062a\u0631\u062f\u062f (\u062f\u0642\u064a\u0642\u0629) +Database\ URL=\u0639\u0646\u0648\u0627\u0646 URL \u0644\u0642\u0627\u0639\u062f\u0629 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a +Database\ Name=\u0627\u0633\u0645 \u0642\u0627\u0639\u062f\u0629 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a +ID\ Generator=\u0645\u0648\u0644\u062f \u0627\u0644\u0647\u0648\u064a\u0629 +Database\ Number=\u0631\u0642\u0645 \u0642\u0627\u0639\u062f\u0629 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a +Remote\ Host=\u0627\u0644\u0645\u0636\u064a\u0641 \u0627\u0644\u0628\u0639\u064a\u062f +Remote\ Port=\u0627\u0644\u0645\u0646\u0641\u0630 \u0627\u0644\u0628\u0639\u064a\u062f +Lane\ Width\ (m)=\u0639\u0631\u0636 \u0627\u0644\u0645\u0633\u0627\u0631 (\u0645) +Enable\ EML\ Analysis=\u062a\u0645\u0643\u064a\u0646 \u062a\u062d\u0644\u064a\u0644 EML +Is\ Collimated=\u064a\u062a\u0645 \u0645\u0648\u0627\u0632\u0627\u0629 +Stream\ Path=\u0645\u0633\u0627\u0631 \u0627\u0644\u062f\u0641\u0642 +Lane\ Options\ Config=\u062a\u0643\u0648\u064a\u0646 \u062e\u064a\u0627\u0631\u0627\u062a \u0627\u0644\u0645\u0633\u0627\u0631 diff --git a/sensorhub-webui-core/src/main/resources/org/sensorhub/ui/i18n/messages_bn.properties b/sensorhub-webui-core/src/main/resources/org/sensorhub/ui/i18n/messages_bn.properties new file mode 100644 index 0000000000..48dcd83084 --- /dev/null +++ b/sensorhub-webui-core/src/main/resources/org/sensorhub/ui/i18n/messages_bn.properties @@ -0,0 +1,543 @@ +app.title=OpenSensorHub +tab.sensors=\u09b8\u09c7\u09a8\u09cd\u09b8\u09b0 +tab.databases=\u09a1\u09c7\u099f\u09be\u09ac\u09c7\u09b8 +tab.processing=\u09aa\u09cd\u09b0\u0995\u09cd\u09b0\u09bf\u09af\u09bc\u09be\u0995\u09b0\u09a3 +tab.services=\u09aa\u09b0\u09bf\u09b7\u09c7\u09ac\u09be +tab.clients=\u0995\u09cd\u09b2\u09be\u09af\u09bc\u09c7\u09a8\u09cd\u099f +tab.network=\u09a8\u09c7\u099f\u0993\u09af\u09bc\u09be\u09b0\u09cd\u0995 +tab.security=\u09a8\u09bf\u09b0\u09be\u09aa\u09a4\u09cd\u09a4\u09be +action.shutdown=\u09b6\u09be\u099f\u09a1\u09be\u0989\u09a8 +action.logout=\u09b2\u0997 \u0986\u0989\u099f +action.save=\u09b8\u0982\u09b0\u0995\u09cd\u09b7\u09a3 +action.addModule=\u09a8\u09a4\u09c1\u09a8 \u09ae\u09a1\u09bf\u0989\u09b2 \u09af\u09cb\u0997 \u0995\u09b0\u09c1\u09a8 +action.addSubmodule=\u09b8\u09be\u09ac\u09ae\u09a1\u09bf\u0989\u09b2 \u09af\u09cb\u0997 \u0995\u09b0\u09c1\u09a8 +action.removeModule=\u09ae\u09a1\u09bf\u0989\u09b2 \u09b8\u09b0\u09be\u09a8 +action.removeSubmodule=\u09b8\u09be\u09ac\u09ae\u09a1\u09bf\u0989\u09b2 \u09b8\u09b0\u09be\u09a8 +action.start=\u09b6\u09c1\u09b0\u09c1 \u0995\u09b0\u09c1\u09a8 +action.stop=\u09a5\u09be\u09ae\u09be\u09a8 +action.restart=\u09aa\u09c1\u09a8\u09b0\u09be\u09af\u09bc \u099a\u09be\u09b2\u09c1 \u0995\u09b0\u09c1\u09a8 +action.forceInit=\u09ab\u09cb\u09b0\u09cd\u09b8 \u0987\u09a8\u09bf\u099f +action.selectAll=\u09b8\u09ae\u09b8\u09cd\u09a4 \u09ae\u09a1\u09bf\u0989\u09b2 \u09a8\u09bf\u09b0\u09cd\u09ac\u09be\u099a\u09a8 \u0995\u09b0\u09c1\u09a8 +action.deselectAll=\u09b8\u09ae\u09b8\u09cd\u09a4 \u0985\u09a8\u09bf\u09b0\u09cd\u09ac\u09be\u099a\u09a8 \u0995\u09b0\u09c1\u09a8 +dialog.shutdown.title=\u09b6\u09be\u099f\u09a1\u09be\u0989\u09a8 \u09b6\u09c1\u09b0\u09c1 \u09b9\u09af\u09bc\u09c7\u099b\u09c7... +dialog.shutdown.message=\u0987\u0989\u099c\u09be\u09b0 \u0987\u09a8\u09cd\u099f\u09be\u09b0\u09ab\u09c7\u09b8 \u09b8\u09be\u09a1\u09bc\u09be \u09a6\u09c7\u0993\u09af\u09bc\u09be \u09ac\u09a8\u09cd\u09a7 \u0995\u09b0\u09ac\u09c7 +dialog.shutdown.confirm=\u0986\u09aa\u09a8\u09bf \u0995\u09bf \u09a8\u09bf\u09b6\u09cd\u099a\u09bf\u09a4 \u09af\u09c7 \u0986\u09aa\u09a8\u09bf \u09b8\u09c7\u09a8\u09cd\u09b8\u09b0 \u09b9\u09be\u09ac \u09b6\u09be\u099f\u09a1\u09be\u0989\u09a8 \u0995\u09b0\u09a4\u09c7 \u099a\u09be\u09a8? +dialog.logout.confirm=\u0986\u09aa\u09a8\u09bf \u0995\u09bf \u09a8\u09bf\u09b6\u09cd\u099a\u09bf\u09a4 \u09af\u09c7 \u0986\u09aa\u09a8\u09bf \u09b2\u0997 \u0986\u0989\u099f \u0995\u09b0\u09a4\u09c7 \u099a\u09be\u09a8? +dialog.save.confirm=\u0986\u09aa\u09a8\u09bf \u0995\u09bf \u09a8\u09bf\u09b6\u09cd\u099a\u09bf\u09a4 \u09af\u09c7 \u0986\u09aa\u09a8\u09bf \u0995\u09a8\u09ab\u09bf\u0997\u09be\u09b0\u09c7\u09b6\u09a8 \u09b8\u0982\u09b0\u0995\u09cd\u09b7\u09a3 (\u098f\u09ac\u0982 \u0986\u0997\u09c7\u09b0\u099f\u09bf \u0993\u09ad\u09be\u09b0\u09b0\u09be\u0987\u099f) \u0995\u09b0\u09a4\u09c7 \u099a\u09be\u09a8? +msg.configSaved=SensorHub \u0995\u09a8\u09ab\u09bf\u0997\u09be\u09b0\u09c7\u09b6\u09a8 \u09b8\u0982\u09b0\u0995\u09cd\u09b7\u09bf\u09a4 \u09b9\u09af\u09bc\u09c7\u099b\u09c7 +msg.configSaveError=\u0995\u09a8\u09ab\u09bf\u0997\u09be\u09b0\u09c7\u09b6\u09a8 \u09b8\u0982\u09b0\u0995\u09cd\u09b7\u09a3 \u0995\u09b0\u09be \u09af\u09be\u099a\u09cd\u099b\u09c7 \u09a8\u09be +dialog.remove.confirm=\u0986\u09aa\u09a8\u09bf \u0995\u09bf \u09a8\u09bf\u09b6\u09cd\u099a\u09bf\u09a4 \u09af\u09c7 \u0986\u09aa\u09a8\u09bf {0} \u09b8\u09b0\u09be\u09a4\u09c7 \u099a\u09be\u09a8?
\u09b8\u09ae\u09b8\u09cd\u09a4 \u09b8\u09c7\u099f\u09bf\u0982\u09b8 \u09b9\u09be\u09b0\u09bf\u09af\u09bc\u09c7 \u09af\u09be\u09ac\u09c7\u0964 +msg.removeError={0} \u09b8\u09b0\u09be\u09a8\u09cb \u09af\u09be\u09af\u09bc\u09a8\u09bf +msg.startError={0} \u09b6\u09c1\u09b0\u09c1 \u0995\u09b0\u09be \u09af\u09be\u09af\u09bc\u09a8\u09bf +msg.stopError={0} \u09a5\u09be\u09ae\u09be\u09a8\u09cb \u09af\u09be\u09af\u09bc\u09a8\u09bf +msg.restartError={0} \u09aa\u09c1\u09a8\u09b0\u09be\u09af\u09bc \u099a\u09be\u09b2\u09c1 \u0995\u09b0\u09be \u09af\u09be\u09af\u09bc\u09a8\u09bf +msg.reinitError={0} \u09aa\u09c1\u09a8\u09b0\u09be\u09af\u09bc \u0986\u09b0\u09ae\u09cd\u09ad (re-init) \u0995\u09b0\u09be \u09af\u09be\u09af\u09bc\u09a8\u09bf +msg.loadError=\u09ae\u09a1\u09bf\u0989\u09b2 \u09b2\u09cb\u09a1 \u0995\u09b0\u09be \u09af\u09be\u099a\u09cd\u099b\u09c7 \u09a8\u09be +msg.addSubmoduleError=\u09b8\u09be\u09ac\u09ae\u09a1\u09bf\u0989\u09b2 \u09af\u09cb\u0997 \u0995\u09b0\u09be \u09af\u09be\u099a\u09cd\u099b\u09c7 \u09a8\u09be +about.title=OpenSensorHub \u09b8\u09ae\u09cd\u09aa\u09b0\u09cd\u0995\u09c7 +about.desc=\u09b8\u09cd\u09ae\u09be\u09b0\u09cd\u099f \u09b8\u09c7\u09a8\u09cd\u09b8\u09b0 \u09a8\u09c7\u099f\u0993\u09af\u09bc\u09be\u09b0\u09cd\u0995 \u098f\u09ac\u0982 \u0987\u09a8\u09cd\u099f\u09be\u09b0\u09a8\u09c7\u099f \u0985\u09ab \u09a5\u09bf\u0982\u09b8 (IoT) \u09a4\u09c8\u09b0\u09bf\u09b0 \u099c\u09a8\u09cd\u09af \u098f\u0995\u099f\u09bf \u09b8\u09ab\u099f\u0993\u09af\u09bc\u09cd\u09af\u09be\u09b0 \u09aa\u09cd\u09b2\u09cd\u09af\u09be\u099f\u09ab\u09b0\u09cd\u09ae +about.license=Mozilla Public License v2.0 \u098f\u09b0 \u0985\u09a7\u09c0\u09a8\u09c7 \u09b2\u09be\u0987\u09b8\u09c7\u09a8\u09cd\u09b8\u0995\u09c3\u09a4 +about.version=\u09b8\u0982\u09b8\u09cd\u0995\u09b0\u09a3: +about.build=\u09ac\u09bf\u09b2\u09cd\u09a1 \u09a8\u09ae\u09cd\u09ac\u09b0: +about.deployment=\u09a1\u09bf\u09aa\u09cd\u09b2\u09af\u09bc\u09ae\u09c7\u09a8\u09cd\u099f\u09c7\u09b0 \u09a8\u09be\u09ae: +tooltip.shutdown=SensorHub \u09b6\u09be\u099f\u09a1\u09be\u0989\u09a8 \u0995\u09b0\u09c1\u09a8 +tooltip.logout=OSH \u09a8\u09cb\u09a1 \u09a5\u09c7\u0995\u09c7 \u09b2\u0997 \u0986\u0989\u099f \u0995\u09b0\u09c1\u09a8 +tooltip.save=SensorHub \u0995\u09a8\u09ab\u09bf\u0997\u09be\u09b0\u09c7\u09b6\u09a8 \u09b8\u0982\u09b0\u0995\u09cd\u09b7\u09a3 \u0995\u09b0\u09c1\u09a8 +dialog.start.confirm=\u0986\u09aa\u09a8\u09bf \u0995\u09bf \u09a8\u09bf\u09b6\u09cd\u099a\u09bf\u09a4 \u09af\u09c7 \u0986\u09aa\u09a8\u09bf {0} \u09b6\u09c1\u09b0\u09c1 \u0995\u09b0\u09a4\u09c7 \u099a\u09be\u09a8? +dialog.stop.confirm=\u0986\u09aa\u09a8\u09bf \u0995\u09bf \u09a8\u09bf\u09b6\u09cd\u099a\u09bf\u09a4 \u09af\u09c7 \u0986\u09aa\u09a8\u09bf {0} \u09a5\u09be\u09ae\u09be\u09a4\u09c7 \u099a\u09be\u09a8? +dialog.restart.confirm=\u0986\u09aa\u09a8\u09bf \u0995\u09bf \u09a8\u09bf\u09b6\u09cd\u099a\u09bf\u09a4 \u09af\u09c7 \u0986\u09aa\u09a8\u09bf {0} \u09aa\u09c1\u09a8\u09b0\u09be\u09af\u09bc \u099a\u09be\u09b2\u09c1 \u0995\u09b0\u09a4\u09c7 \u099a\u09be\u09a8? +dialog.reinit.confirm=\u0986\u09aa\u09a8\u09bf \u0995\u09bf \u09a8\u09bf\u09b6\u09cd\u099a\u09bf\u09a4 \u09af\u09c7 \u0986\u09aa\u09a8\u09bf {0} \u099c\u09cb\u09b0\u09aa\u09c2\u09b0\u09cd\u09ac\u0995 \u09aa\u09c1\u09a8\u09b0\u09be\u09af\u09bc \u0986\u09b0\u09ae\u09cd\u09ad (force re-init) \u0995\u09b0\u09a4\u09c7 \u099a\u09be\u09a8? +backgroundUpdate=\u09ac\u09cd\u09af\u09be\u0995\u0997\u09cd\u09b0\u09be\u0989\u09a8\u09cd\u09a1 \u0986\u09aa\u09a1\u09c7\u099f +sigmaThreshold=\u09b8\u09bf\u0997\u09ae\u09be \u09a5\u09cd\u09b0\u09c7\u09b6\u09b9\u09cb\u09b2\u09cd\u09a1 +nuclideIdentification=\u09a8\u09bf\u0989\u0995\u09cd\u09b2\u09be\u0987\u09a1 \u09b8\u09a8\u09be\u0995\u09cd\u09a4\u0995\u09b0\u09a3 +tamperAlarm=\u099f\u09c7\u09ae\u09cd\u09aa\u09be\u09b0 \u0985\u09cd\u09af\u09be\u09b2\u09be\u09b0\u09cd\u09ae +occupancySensor=\u0985\u0995\u09c1\u09aa\u09c7\u09a8\u09cd\u09b8\u09bf \u09b8\u09c7\u09a8\u09cd\u09b8\u09b0 +stateOfHealth=\u09b8\u09cd\u09ac\u09be\u09b8\u09cd\u09a5\u09cd\u09af \u0985\u09ac\u09b8\u09cd\u09a5\u09be +soh=SOH +1ScanThisQrCodeWithYourAuthenticatorApp=1. \u0986\u09aa\u09a8\u09be\u09b0 \u09aa\u09cd\u09b0\u09ae\u09be\u09a3\u09c0\u0995\u09b0\u09a3\u0995\u09be\u09b0\u09c0 \u0985\u09cd\u09af\u09be\u09aa\u09c7\u09b0 \u09ae\u09be\u09a7\u09cd\u09af\u09ae\u09c7 \u098f\u0987 QR \u0995\u09cb\u09a1\u099f\u09bf \u09b8\u09cd\u0995\u09cd\u09af\u09be\u09a8 \u0995\u09b0\u09c1\u09a8: +2EnterThe6digitCodeGeneratedByTheApp=2. \u0985\u09cd\u09af\u09be\u09aa \u09a6\u09cd\u09ac\u09be\u09b0\u09be \u099c\u09c7\u09a8\u09be\u09b0\u09c7\u099f \u0995\u09b0\u09be 6-\u09b8\u0982\u0996\u09cd\u09af\u09be\u09b0 \u0995\u09cb\u09a1\u099f\u09bf \u09b2\u09bf\u0996\u09c1\u09a8: +orEnterThisSecretKeyManually=\u0985\u09a5\u09ac\u09be \u09ae\u09cd\u09af\u09be\u09a8\u09c1\u09af\u09bc\u09be\u09b2\u09bf \u098f\u0987 \u0997\u09cb\u09aa\u09a8 \u0995\u09c0 \u09b2\u09bf\u0996\u09c1\u09a8: +loadingBundlesInformation=\u09ac\u09be\u09a8\u09cd\u09a1\u09bf\u09b2 \u09a4\u09a5\u09cd\u09af \u09b2\u09cb\u09a1 \u09b9\u099a\u09cd\u099b\u09c7... +loadingPackageInformation=\u09aa\u09cd\u09af\u09be\u0995\u09c7\u099c \u09a4\u09a5\u09cd\u09af \u09b2\u09cb\u09a1 \u09b9\u099a\u09cd\u099b\u09c7... +arrayComponentNotSupported=\u0985\u09cd\u09af\u09be\u09b0\u09c7 \u0995\u09ae\u09cd\u09aa\u09cb\u09a8\u09c7\u09a8\u09cd\u099f \u09b8\u09ae\u09b0\u09cd\u09a5\u09bf\u09a4 \u09a8\u09af\u09bc +twofactorAuthentication=\u09a6\u09cd\u09ac\u09bf-\u09ab\u09cd\u09af\u09be\u0995\u09cd\u099f\u09b0 \u09aa\u09cd\u09b0\u09ae\u09be\u09a3\u09c0\u0995\u09b0\u09a3 +installMorePackages=\u0986\u09b0\u0993 \u09aa\u09cd\u09af\u09be\u0995\u09c7\u099c \u0987\u09a8\u09b8\u09cd\u099f\u09b2 \u0995\u09b0\u09c1\u09a8... +errorGeneratingQrCode=QR \u0995\u09cb\u09a1 \u09a4\u09c8\u09b0\u09bf \u0995\u09b0\u09be\u09b0 \u09b8\u09ae\u09af\u09bc \u09a4\u09cd\u09b0\u09c1\u099f\u09bf\u09f7 +installMoreModules=\u0986\u09b0\u0993 \u09ae\u09a1\u09bf\u0989\u09b2 \u0987\u09a8\u09b8\u09cd\u099f\u09b2 \u0995\u09b0\u09c1\u09a8... +detailedInstructions=\u09ac\u09bf\u09b8\u09cd\u09a4\u09be\u09b0\u09bf\u09a4 \u09a8\u09bf\u09b0\u09cd\u09a6\u09c7\u09b6\u09be\u09ac\u09b2\u09c0 +availableNetworks=\u0989\u09aa\u09b2\u09ac\u09cd\u09a7 \u09a8\u09c7\u099f\u0993\u09af\u09bc\u09be\u09b0\u09cd\u0995 +processParameters=\u09aa\u09cd\u09b0\u0995\u09cd\u09b0\u09bf\u09af\u09bc\u09be \u09aa\u09b0\u09be\u09ae\u09bf\u09a4\u09bf +verifyAndEnable=\u09af\u09be\u099a\u09be\u0987 \u0995\u09b0\u09c1\u09a8 \u098f\u09ac\u0982 \u09b8\u0995\u09cd\u09b7\u09ae \u0995\u09b0\u09c1\u09a8 +dataSourceInfo=\u09a4\u09a5\u09cd\u09af \u0989\u09ce\u09b8 \u09a4\u09a5\u09cd\u09af +detectedDevices=\u09b8\u09a8\u09be\u0995\u09cd\u09a4 \u0995\u09b0\u09be \u09a1\u09bf\u09ad\u09be\u0987\u09b8 +installSelected=\u09a8\u09bf\u09b0\u09cd\u09ac\u09be\u099a\u09bf\u09a4 \u0987\u09a8\u09b8\u09cd\u099f\u09b2 \u0995\u09b0\u09c1\u09a8 +databaseContent=\u09a1\u09be\u099f\u09be\u09ac\u09c7\u09b8 \u09ac\u09bf\u09b7\u09af\u09bc\u09ac\u09b8\u09cd\u09a4\u09c1 +itemsPerPage=\u09aa\u09c3\u09b7\u09cd\u09a0\u09be \u09aa\u09cd\u09b0\u09a4\u09bf \u0986\u0987\u099f\u09c7\u09ae: +commandInputs=\u0995\u09ae\u09be\u09a8\u09cd\u09a1 \u0987\u09a8\u09aa\u09c1\u099f +processInputs=\u09aa\u09cd\u09b0\u0995\u09cd\u09b0\u09bf\u09af\u09bc\u09be \u0987\u09a8\u09aa\u09c1\u099f +providerClass=\u09aa\u09cd\u09b0\u09a6\u09be\u09a8\u0995\u09be\u09b0\u09c0 \u0995\u09cd\u09b2\u09be\u09b8 +processName=\u09aa\u09cd\u09b0\u0995\u09cd\u09b0\u09bf\u09af\u09bc\u09be\u09b0 \u09a8\u09be\u09ae: +configuration=\u0995\u09a8\u09ab\u09bf\u0997\u09be\u09b0\u09c7\u09b6\u09a8 +applyChanges=\u09aa\u09b0\u09bf\u09ac\u09b0\u09cd\u09a4\u09a8\u0997\u09c1\u09b2\u09bf \u09aa\u09cd\u09b0\u09af\u09bc\u09cb\u0997 \u0995\u09b0\u09c1\u09a8 +sendCommand=\u0995\u09ae\u09be\u09a8\u09cd\u09a1 \u09aa\u09be\u09a0\u09be\u09a8 +useAddress=\u09a0\u09bf\u0995\u09be\u09a8\u09be \u09ac\u09cd\u09af\u09ac\u09b9\u09be\u09b0 \u0995\u09b0\u09c1\u09a8 +selectNone=\u0995\u09cb\u09a8\u099f\u09bf \u09a8\u09bf\u09b0\u09cd\u09ac\u09be\u099a\u09a8 \u0995\u09b0\u09c1\u09a8 +timeRange=\u09b8\u09ae\u09af\u09bc \u09aa\u09b0\u09bf\u09b8\u09c0\u09ae\u09be: +permissions=\u0985\u09a8\u09c1\u09ae\u09a4\u09bf +startScan=\u09b8\u09cd\u0995\u09cd\u09af\u09be\u09a8 \u09b6\u09c1\u09b0\u09c1 \u0995\u09b0\u09c1\u09a8 +noReadme=README \u09a8\u09c7\u0987 +stopScan=\u09b8\u09cd\u0995\u09cd\u09af\u09be\u09a8 \u09ac\u09a8\u09cd\u09a7 \u0995\u09b0\u09c1\u09a8 +reset2fa=2FA \u09b0\u09bf\u09b8\u09c7\u099f \u0995\u09b0\u09c1\u09a8 +previous=\u0986\u0997\u09c7\u09b0 +useName=\u09a8\u09be\u09ae \u09ac\u09cd\u09af\u09ac\u09b9\u09be\u09b0 \u0995\u09b0\u09c1\u09a8 +outputs=\u0986\u0989\u099f\u09aa\u09c1\u099f +refresh=\u09b0\u09bf\u09ab\u09cd\u09b0\u09c7\u09b6 +modify=\u09aa\u09b0\u09bf\u09ac\u09b0\u09cd\u09a4\u09a8 \u0995\u09b0\u09c1\u09a8 +cancel=\u09ac\u09be\u09a4\u09bf\u09b2 \u0995\u09b0\u09c1\u09a8 +logout=\u09b2\u0997\u0986\u0989\u099f +remove=\u09b8\u09b0\u09be\u09a8 +verify=\u09af\u09be\u099a\u09be\u0987 \u0995\u09b0\u09c1\u09a8 +first=\u09aa\u09cd\u09b0\u09a5\u09ae +login=\u09b2\u0997\u0987\u09a8 \u0995\u09b0\u09c1\u09a8 +last=\u09b6\u09c7\u09b7 +view=\u09a6\u09c7\u0996\u09c1\u09a8 +next=\u09aa\u09b0\u09ac\u09b0\u09cd\u09a4\u09c0 +stop=\u09a5\u09be\u09ae\u09cb +add=\u09af\u09cb\u0997 \u0995\u09b0\u09c1\u09a8 +ui.empty=< +ok=\u09a0\u09bf\u0995 \u0986\u099b\u09c7 +1ScanThisQrCodeWithYourAuthenticatorApp1=1. \u0986\u09aa\u09a8\u09be\u09b0 \u09aa\u09cd\u09b0\u09ae\u09be\u09a3\u09c0\u0995\u09b0\u09a3\u0995\u09be\u09b0\u09c0 \u0985\u09cd\u09af\u09be\u09aa\u09c7\u09b0 \u09ae\u09be\u09a7\u09cd\u09af\u09ae\u09c7 \u098f\u0987 QR \u0995\u09cb\u09a1\u099f\u09bf \u09b8\u09cd\u0995\u09cd\u09af\u09be\u09a8 \u0995\u09b0\u09c1\u09a8: +2EnterThe6digitCodeGeneratedByTheApp1=2. \u0985\u09cd\u09af\u09be\u09aa \u09a6\u09cd\u09ac\u09be\u09b0\u09be \u099c\u09c7\u09a8\u09be\u09b0\u09c7\u099f \u0995\u09b0\u09be 6-\u09b8\u0982\u0996\u09cd\u09af\u09be\u09b0 \u0995\u09cb\u09a1\u099f\u09bf \u09b2\u09bf\u0996\u09c1\u09a8: +orEnterThisSecretKeyManually1=\u0985\u09a5\u09ac\u09be \u09ae\u09cd\u09af\u09be\u09a8\u09c1\u09af\u09bc\u09be\u09b2\u09bf \u098f\u0987 \u0997\u09cb\u09aa\u09a8 \u0995\u09c0 \u09b2\u09bf\u0996\u09c1\u09a8: +loadingPackageInformation1=\u09aa\u09cd\u09af\u09be\u0995\u09c7\u099c \u09a4\u09a5\u09cd\u09af \u09b2\u09cb\u09a1 \u09b9\u099a\u09cd\u099b\u09c7... +loadingBundlesInformation1=\u09ac\u09be\u09a8\u09cd\u09a1\u09bf\u09b2 \u09a4\u09a5\u09cd\u09af \u09b2\u09cb\u09a1 \u09b9\u099a\u09cd\u099b\u09c7... +arrayComponentNotSupported1=\u0985\u09cd\u09af\u09be\u09b0\u09c7 \u0995\u09ae\u09cd\u09aa\u09cb\u09a8\u09c7\u09a8\u09cd\u099f \u09b8\u09ae\u09b0\u09cd\u09a5\u09bf\u09a4 \u09a8\u09af\u09bc +twofactorAuthentication1=\u09a6\u09cd\u09ac\u09bf-\u09ab\u09cd\u09af\u09be\u0995\u09cd\u099f\u09b0 \u09aa\u09cd\u09b0\u09ae\u09be\u09a3\u09c0\u0995\u09b0\u09a3 +errorGeneratingQrCode1=QR \u0995\u09cb\u09a1 \u09a4\u09c8\u09b0\u09bf \u0995\u09b0\u09be\u09b0 \u09b8\u09ae\u09af\u09bc \u09a4\u09cd\u09b0\u09c1\u099f\u09bf\u09f7 +installMorePackages1=\u0986\u09b0\u0993 \u09aa\u09cd\u09af\u09be\u0995\u09c7\u099c \u0987\u09a8\u09b8\u09cd\u099f\u09b2 \u0995\u09b0\u09c1\u09a8... +installMoreModules1=\u0986\u09b0\u0993 \u09ae\u09a1\u09bf\u0989\u09b2 \u0987\u09a8\u09b8\u09cd\u099f\u09b2 \u0995\u09b0\u09c1\u09a8... +detailedInstructions1=\u09ac\u09bf\u09b8\u09cd\u09a4\u09be\u09b0\u09bf\u09a4 \u09a8\u09bf\u09b0\u09cd\u09a6\u09c7\u09b6\u09be\u09ac\u09b2\u09c0 +processParameters1=\u09aa\u09cd\u09b0\u0995\u09cd\u09b0\u09bf\u09af\u09bc\u09be \u09aa\u09b0\u09be\u09ae\u09bf\u09a4\u09bf +availableNetworks1=\u0989\u09aa\u09b2\u09ac\u09cd\u09a7 \u09a8\u09c7\u099f\u0993\u09af\u09bc\u09be\u09b0\u09cd\u0995 +verifyAndEnable1=\u09af\u09be\u099a\u09be\u0987 \u0995\u09b0\u09c1\u09a8 \u098f\u09ac\u0982 \u09b8\u0995\u09cd\u09b7\u09ae \u0995\u09b0\u09c1\u09a8 +databaseContent1=\u09a1\u09be\u099f\u09be\u09ac\u09c7\u09b8 \u09ac\u09bf\u09b7\u09af\u09bc\u09ac\u09b8\u09cd\u09a4\u09c1 +installSelected1=\u09a8\u09bf\u09b0\u09cd\u09ac\u09be\u099a\u09bf\u09a4 \u0987\u09a8\u09b8\u09cd\u099f\u09b2 \u0995\u09b0\u09c1\u09a8 +dataSourceInfo1=\u09a4\u09a5\u09cd\u09af \u0989\u09ce\u09b8 \u09a4\u09a5\u09cd\u09af +detectedDevices1=\u09b8\u09a8\u09be\u0995\u09cd\u09a4 \u0995\u09b0\u09be \u09a1\u09bf\u09ad\u09be\u0987\u09b8 +itemsPerPage1=\u09aa\u09c3\u09b7\u09cd\u09a0\u09be \u09aa\u09cd\u09b0\u09a4\u09bf \u0986\u0987\u099f\u09c7\u09ae: +processInputs1=\u09aa\u09cd\u09b0\u0995\u09cd\u09b0\u09bf\u09af\u09bc\u09be \u0987\u09a8\u09aa\u09c1\u099f +commandInputs1=\u0995\u09ae\u09be\u09a8\u09cd\u09a1 \u0987\u09a8\u09aa\u09c1\u099f +providerClass1=\u09aa\u09cd\u09b0\u09a6\u09be\u09a8\u0995\u09be\u09b0\u09c0 \u0995\u09cd\u09b2\u09be\u09b8 +configuration1=\u0995\u09a8\u09ab\u09bf\u0997\u09be\u09b0\u09c7\u09b6\u09a8 +processName1=\u09aa\u09cd\u09b0\u0995\u09cd\u09b0\u09bf\u09af\u09bc\u09be\u09b0 \u09a8\u09be\u09ae: +applyChanges1=\u09aa\u09b0\u09bf\u09ac\u09b0\u09cd\u09a4\u09a8\u0997\u09c1\u09b2\u09bf \u09aa\u09cd\u09b0\u09af\u09bc\u09cb\u0997 \u0995\u09b0\u09c1\u09a8 +sendCommand1=\u0995\u09ae\u09be\u09a8\u09cd\u09a1 \u09aa\u09be\u09a0\u09be\u09a8 +timeRange1=\u09b8\u09ae\u09af\u09bc \u09aa\u09b0\u09bf\u09b8\u09c0\u09ae\u09be: +useAddress1=\u09a0\u09bf\u0995\u09be\u09a8\u09be \u09ac\u09cd\u09af\u09ac\u09b9\u09be\u09b0 \u0995\u09b0\u09c1\u09a8 +permissions1=\u0985\u09a8\u09c1\u09ae\u09a4\u09bf +selectNone1=\u0995\u09cb\u09a8\u099f\u09bf \u09a8\u09bf\u09b0\u09cd\u09ac\u09be\u099a\u09a8 \u0995\u09b0\u09c1\u09a8 +startScan1=\u09b8\u09cd\u0995\u09cd\u09af\u09be\u09a8 \u09b6\u09c1\u09b0\u09c1 \u0995\u09b0\u09c1\u09a8 +noReadme1=README \u09a8\u09c7\u0987 +reset2fa1=2FA \u09b0\u09bf\u09b8\u09c7\u099f \u0995\u09b0\u09c1\u09a8 +stopScan1=\u09b8\u09cd\u0995\u09cd\u09af\u09be\u09a8 \u09ac\u09a8\u09cd\u09a7 \u0995\u09b0\u09c1\u09a8 +useName1=\u09a8\u09be\u09ae \u09ac\u09cd\u09af\u09ac\u09b9\u09be\u09b0 \u0995\u09b0\u09c1\u09a8 +previous1=\u0986\u0997\u09c7\u09b0 +refresh1=\u09b0\u09bf\u09ab\u09cd\u09b0\u09c7\u09b6 +outputs1=\u0986\u0989\u099f\u09aa\u09c1\u099f +cancel1=\u09ac\u09be\u09a4\u09bf\u09b2 \u0995\u09b0\u09c1\u09a8 +logout1=\u09b2\u0997\u0986\u0989\u099f +modify1=\u09aa\u09b0\u09bf\u09ac\u09b0\u09cd\u09a4\u09a8 \u0995\u09b0\u09c1\u09a8 +remove1=\u09b8\u09b0\u09be\u09a8 +verify1=\u09af\u09be\u099a\u09be\u0987 \u0995\u09b0\u09c1\u09a8 +first1=\u09aa\u09cd\u09b0\u09a5\u09ae +login1=\u09b2\u0997\u0987\u09a8 \u0995\u09b0\u09c1\u09a8 +view1=\u09a6\u09c7\u0996\u09c1\u09a8 +stop1=\u09a5\u09be\u09ae\u09cb +next1=\u09aa\u09b0\u09ac\u09b0\u09cd\u09a4\u09c0 +last1=\u09b6\u09c7\u09b7 +add1=\u09af\u09cb\u0997 \u0995\u09b0\u09c1\u09a8 +last2=>> +first2=<< +ok1=\u09a0\u09bf\u0995 \u0986\u099b\u09c7 +next2=> +previous2=< + +pleaseEnterAUserIDFirst1=\u0985\u09a8\u09c1\u0997\u09cd\u09b0\u09b9 \u0995\u09b0\u09c7 \u09aa\u09cd\u09b0\u09a5\u09ae\u09c7 \u098f\u0995\u099f\u09bf \u0987\u0989\u099c\u09be\u09b0 \u0986\u0987\u09a1\u09bf \u09b2\u09bf\u0996\u09c1\u09a8 +reset2FA1=2FA \u09b0\u09bf\u09b8\u09c7\u099f \u0995\u09b0\u09c1\u09a8 +enable2FA1=2FA \u09b8\u0995\u09cd\u09b7\u09ae \u0995\u09b0\u09c1\u09a8 +twoFAEnabledSuccessfully1=2FA \u09b8\u09ab\u09b2\u09ad\u09be\u09ac\u09c7 \u09b8\u0995\u09cd\u09b7\u09ae \u09b9\u09af\u09bc\u09c7\u099b\u09c7\u09f7 +invalidCode1=\u0985\u09ac\u09c8\u09a7 \u0995\u09cb\u09a1 +allowedAndDeniedPermissionsForUsersWithThisRole1=\u098f\u0987 \u09ad\u09c2\u09ae\u09bf\u0995\u09be \u09b8\u09b9 \u09ac\u09cd\u09af\u09ac\u09b9\u09be\u09b0\u0995\u09be\u09b0\u09c0\u09a6\u09c7\u09b0 \u099c\u09a8\u09cd\u09af \u0985\u09a8\u09c1\u09ae\u09cb\u09a6\u09bf\u09a4 \u098f\u09ac\u0982 \u0985\u09b8\u09cd\u09ac\u09c0\u0995\u09c3\u09a4 \u0985\u09a8\u09c1\u09ae\u09a4\u09bf\u09f7 +manualEntry1=\u09ae\u09cd\u09af\u09be\u09a8\u09c1\u09af\u09bc\u09be\u09b2 \u098f\u09a8\u09cd\u099f\u09cd\u09b0\u09bf +toggleAutoRefreshDataOncePerSecond1=\u09aa\u09cd\u09b0\u09a4\u09bf \u09b8\u09c7\u0995\u09c7\u09a8\u09cd\u09a1\u09c7 \u098f\u0995\u09ac\u09be\u09b0 \u0985\u099f\u09cb-\u09b0\u09bf\u09ab\u09cd\u09b0\u09c7\u09b6 \u09a1\u09c7\u099f\u09be \u099f\u0997\u09b2 \u0995\u09b0\u09c1\u09a8 +lookupSystem1=\u09b2\u09c1\u0995\u0986\u09aa \u09b8\u09bf\u09b8\u09cd\u099f\u09c7\u09ae +lookupModule1=\u09b2\u09c1\u0995\u0986\u09aa \u09ae\u09a1\u09bf\u0989\u09b2 +lookupAddress1=\u09a0\u09bf\u0995\u09be\u09a8\u09be \u09b8\u09a8\u09cd\u09a7\u09be\u09a8 \u0995\u09b0\u09c1\u09a8 +showPassword1=\u09aa\u09be\u09b8\u0993\u09af\u09bc\u09be\u09b0\u09cd\u09a1 \u09a6\u09c7\u0996\u09be\u09a8 +showHistogram1=\u09b9\u09bf\u09b8\u09cd\u099f\u09cb\u0997\u09cd\u09b0\u09be\u09ae \u09a6\u09c7\u0996\u09be\u09a8 +hideHistogram1=\u09b9\u09bf\u09b8\u09cd\u099f\u09cb\u0997\u09cd\u09b0\u09be\u09ae \u09b2\u09c1\u0995\u09be\u09a8 +reloadDataFromDatabase1=\u09a1\u09be\u099f\u09be\u09ac\u09c7\u09b8 \u09a5\u09c7\u0995\u09c7 \u09a1\u09c7\u099f\u09be \u09aa\u09c1\u09a8\u09b0\u09be\u09af\u09bc \u09b2\u09cb\u09a1 \u0995\u09b0\u09c1\u09a8 +fois1=FOI +username1=\u09ac\u09cd\u09af\u09ac\u09b9\u09be\u09b0\u0995\u09be\u09b0\u09c0\u09b0 \u09a8\u09be\u09ae +password1=\u09aa\u09be\u09b8\u0993\u09af\u09bc\u09be\u09b0\u09cd\u09a1 +loginFailed1=\u09b2\u0997\u0987\u09a8 \u09ac\u09cd\u09af\u09b0\u09cd\u09a5 \u09b9\u09af\u09bc\u09c7\u099b\u09c7\u09f7 +invalidUsernameOrPassword1=\u0985\u09ac\u09c8\u09a7 \u09ac\u09cd\u09af\u09ac\u09b9\u09be\u09b0\u0995\u09be\u09b0\u09c0\u09b0 \u09a8\u09be\u09ae \u09ac\u09be \u09aa\u09be\u09b8\u0993\u09af\u09bc\u09be\u09b0\u09cd\u09a1 +verificationCode1=\u09af\u09be\u099a\u09be\u0987\u0995\u09b0\u09a3 \u0995\u09cb\u09a1 +verificationFailed1=\u09af\u09be\u099a\u09be\u0987\u0995\u09b0\u09a3 \u09ac\u09cd\u09af\u09b0\u09cd\u09a5 \u09b9\u09af\u09bc\u09c7\u099b\u09c7\u09f7 +datasource1=\u09a1\u09c7\u099f\u09be\u09b8\u09cb\u09b0\u09cd\u09b8 +process1=\u09aa\u09cd\u09b0\u0995\u09cd\u09b0\u09bf\u09af\u09bc\u09be +logoutFromOshNode1=OSH \u09a8\u09cb\u09a1 \u09a5\u09c7\u0995\u09c7 \u09b2\u0997\u0986\u0989\u099f \u0995\u09b0\u09c1\u09a8 +setParameter1=\u09aa\u09cd\u09af\u09be\u09b0\u09be\u09ae\u09bf\u099f\u09be\u09b0 \u09b8\u09c7\u099f \u0995\u09b0\u09c1\u09a8 +setupTwoFactorAuthentication1=\u099f\u09c1-\u09ab\u09cd\u09af\u09be\u0995\u09cd\u099f\u09b0 \u09aa\u09cd\u09b0\u09ae\u09be\u09a3\u09c0\u0995\u09b0\u09a3 \u09b8\u09c7\u099f\u0986\u09aa \u0995\u09b0\u09c1\u09a8 + +action.new_item=\u09a8\u09a4\u09c1\u09a8 {0} +Lane\ System=\u09b2\u09c7\u09a8 \u09b8\u09bf\u09b8\u09cd\u099f\u09c7\u09ae +Module\ Class=\u09ae\u09a1\u09bf\u0989\u09b2 \u0995\u09cd\u09b2\u09be\u09b8 +Module\ Name=\u09ae\u09a1\u09bf\u0989\u09b2 \u09a8\u09be\u09ae +Module\ ID=\u09ae\u09a1\u09bf\u0989\u09b2 \u0986\u0987\u09a1\u09bf +Description=\u09ac\u09b0\u09cd\u09a3\u09a8\u09be +SensorML\ URL=\u09b8\u09c7\u09a8\u09cd\u09b8\u09b0\u098f\u09ae\u098f\u09b2 \u0987\u0989\u0986\u09b0\u098f\u09b2 +UniqueID=\u0985\u09a8\u09a8\u09cd\u09af \u0986\u0987\u09a1\u09bf +Last\ Updated=\u09b8\u09b0\u09cd\u09ac\u09b6\u09c7\u09b7 \u0986\u09aa\u09a1\u09c7\u099f +Auto\ Start=\u0985\u099f\u09cb \u09b8\u09cd\u099f\u09be\u09b0\u09cd\u099f +Delete\ Data\ on\ Lane\ Removal=\u09b2\u09c7\u09a8 \u0985\u09aa\u09b8\u09be\u09b0\u09a3 \u09a1\u09c7\u099f\u09be \u09ae\u09c1\u099b\u09c1\u09a8 +Latitude=\u0985\u0995\u09cd\u09b7\u09be\u0982\u09b6 +Longitude=\u09a6\u09cd\u09b0\u09be\u0998\u09bf\u09ae\u09be\u0982\u09b6 +Altitude=\u0989\u099a\u09cd\u099a\u09a4\u09be +Initial\ RPM\ Config=\u09aa\u09cd\u09b0\u09be\u09a5\u09ae\u09bf\u0995 RPM \u0995\u09a8\u09ab\u09bf\u0997\u09be\u09b0\u09c7\u09b6\u09a8 +Initial\ Camera\ Config=\u09aa\u09cd\u09b0\u09be\u09a5\u09ae\u09bf\u0995 \u0995\u09cd\u09af\u09be\u09ae\u09c7\u09b0\u09be \u0995\u09a8\u09ab\u09bf\u0997\u09be\u09b0\u09c7\u09b6\u09a8 +Lane\ Options\ Config=\u09b2\u09c7\u09a8 \u0985\u09aa\u09b6\u09a8 \u0995\u09a8\u09ab\u09bf\u0997\u09be\u09b0\u09c7\u09b6\u09a8 +tab.general=\u09b8\u09be\u09a7\u09be\u09b0\u09a3 +tab.readme=\u09aa\u09dc\u09c1\u09a8 +Fixed\ Location=\u09b8\u09cd\u09a5\u09bf\u09b0 \u0985\u09ac\u09b8\u09cd\u09a5\u09be\u09a8 +Fixed\ Orientation=\u09b8\u09cd\u09a5\u09bf\u09b0 \u0985\u09ad\u09bf\u09af\u09cb\u099c\u09a8 +# Auto-extracted DisplayInfo labels and descriptions +URL\ of\ SensorML\ file\ providing\ the\ base\ description\ of\ the\ sensor=\u09b8\u09c7\u09a8\u09cd\u09b8\u09b0 \u098f\u09ae\u098f\u09b2 \u09ab\u09be\u0987\u09b2\u09c7\u09b0 URL \u09b8\u09c7\u09a8\u09cd\u09b8\u09b0\u09c7\u09b0 \u09ac\u09c7\u09b8 \u09ac\u09bf\u09ac\u09b0\u09a3 \u09aa\u09cd\u09b0\u09a6\u09be\u09a8 \u0995\u09b0\u09c7 +Time\ at\ which\ the\ SensorML\ description\ was\ last\ updated=\u09af\u09c7 \u09b8\u09ae\u09af\u09bc\u09c7 \u09b8\u09c7\u09a8\u09cd\u09b8\u09b0\u098f\u09ae\u098f\u09b2 \u09ac\u09bf\u09ac\u09b0\u09a3 \u09b6\u09c7\u09b7 \u0986\u09aa\u09a1\u09c7\u099f \u0995\u09b0\u09be \u09b9\u09af\u09bc\u09c7\u099b\u09bf\u09b2 +Geodetic\ latitude,\ in\ degrees=\u099c\u09bf\u0993\u09a1\u09c7\u099f\u09bf\u0995 \u0985\u0995\u09cd\u09b7\u09be\u0982\u09b6, \u09a1\u09bf\u0997\u09cd\u09b0\u09c0\u09a4\u09c7 +Longitude,\ in\ degrees=\u09a6\u09cd\u09b0\u09be\u0998\u09bf\u09ae\u09be\u0982\u09b6, \u09a1\u09bf\u0997\u09cd\u09b0\u09c0\u09a4\u09c7 +Height\ above\ ellipsoid,\ in\ meters=\u0989\u09aa\u09ac\u09c3\u09a4\u09cd\u09a4\u09be\u0995\u09be\u09b0 \u0989\u09aa\u09b0\u09c7 \u0989\u099a\u09cd\u099a\u09a4\u09be, \u09ae\u09bf\u099f\u09be\u09b0\u09c7 +X\ coordinate,\ in\ meters=X \u09b8\u09cd\u09a5\u09be\u09a8\u09be\u0999\u09cd\u0995, \u09ae\u09bf\u099f\u09be\u09b0\u09c7 +Y\ coordinate,\ in\ meters=Y \u09b8\u09cd\u09a5\u09be\u09a8\u09be\u0999\u09cd\u0995, \u09ae\u09bf\u099f\u09be\u09b0\u09c7 +Z\ coordinate,\ in\ meters=Z \u09b8\u09cd\u09a5\u09be\u09a8\u09be\u0999\u09cd\u0995, \u09ae\u09bf\u099f\u09be\u09b0\u09c7 +Pitch\ angle\ about\ Y\ axis,\ in\ degrees=Y \u0985\u0995\u09cd\u09b7 \u09b8\u09ae\u09cd\u09aa\u09b0\u09cd\u0995\u09c7 \u09aa\u09bf\u099a \u0995\u09cb\u09a3, \u09a1\u09bf\u0997\u09cd\u09b0\u09c0\u09a4\u09c7 +Roll\ angle\ about\ X\ axis,\ in\ degrees=\u09a1\u09bf\u0997\u09cd\u09b0\u09c0\u09a4\u09c7, X \u0985\u0995\u09cd\u09b7 \u09b8\u09ae\u09cd\u09aa\u09b0\u09cd\u0995\u09c7 \u09b0\u09cb\u09b2 \u0995\u09cb\u09a3 +Location\ in\ EPSG\:4979\ coordinate\ reference\ frame=EPSG-\u098f \u0985\u09ac\u09b8\u09cd\u09a5\u09be\u09a8: 4979 \u0995\u09cb\u0985\u09b0\u09cd\u09a1\u09bf\u09a8\u09c7\u099f \u09b0\u09c7\u09ab\u09be\u09b0\u09c7\u09a8\u09cd\u09b8 \u09ab\u09cd\u09b0\u09c7\u09ae +Database\ Number=\u09a1\u09be\u099f\u09be\u09ac\u09c7\u09b8 \u09a8\u09ae\u09cd\u09ac\u09b0 +Numerical\ identifier\ of\ the\ database.\ Each\ database\ that\ should\ be\ exposed\ via\ the\ federated\ database\ API\ must\ have\ a\ unique\ number\ on\ the\ sensor\ hub.\ If\ visibility\ through\ the\ federated\ database\ is\ not\ desired,\ it\ can\ be\ omitted.=\u09a1\u09be\u099f\u09be\u09ac\u09c7\u09b8\u09c7\u09b0 \u09b8\u0982\u0996\u09cd\u09af\u09be\u09b8\u09c2\u099a\u0995 \u09b6\u09a8\u09be\u0995\u09cd\u09a4\u0995\u09be\u09b0\u09c0\u0964 \u09aa\u09cd\u09b0\u09a4\u09bf\u099f\u09bf \u09a1\u09be\u099f\u09be\u09ac\u09c7\u09b8 \u09af\u09be \u09ab\u09c7\u09a1\u09be\u09b0\u09c7\u099f\u09c7\u09a1 \u09a1\u09be\u099f\u09be\u09ac\u09c7\u09b8 API \u098f\u09b0 \u09ae\u09be\u09a7\u09cd\u09af\u09ae\u09c7 \u09aa\u09cd\u09b0\u0995\u09be\u09b6 \u0995\u09b0\u09be \u0989\u099a\u09bf\u09a4 \u09b8\u09c7\u09a8\u09cd\u09b8\u09b0 \u09b9\u09be\u09ac\u09c7 \u098f\u0995\u099f\u09bf \u0985\u09a8\u09a8\u09cd\u09af \u09a8\u09ae\u09cd\u09ac\u09b0 \u09a5\u09be\u0995\u09a4\u09c7 \u09b9\u09ac\u09c7\u0964 \u09af\u09a6\u09bf \u09ab\u09c7\u09a1\u09be\u09b0\u09c7\u099f\u09c7\u09a1 \u09a1\u09be\u099f\u09be\u09ac\u09c7\u09b8\u09c7\u09b0 \u09ae\u09be\u09a7\u09cd\u09af\u09ae\u09c7 \u09a6\u09c3\u09b6\u09cd\u09af\u09ae\u09be\u09a8\u09a4\u09be \u09aa\u099b\u09a8\u09cd\u09a6\u09b8\u0987 \u09a8\u09be \u09b9\u09af\u09bc \u09a4\u09ac\u09c7 \u098f\u099f\u09bf \u09ac\u09be\u09a6 \u09a6\u09c7\u0993\u09af\u09bc\u09be \u09af\u09c7\u09a4\u09c7 \u09aa\u09be\u09b0\u09c7\u0964 +Enables\ fine-grained\ permission-based\ access\ control\ for\ this\ module=\u098f\u0987 \u09ae\u09a1\u09bf\u0989\u09b2\u099f\u09bf\u09b0 \u099c\u09a8\u09cd\u09af \u09b8\u09c2\u0995\u09cd\u09b7\u09cd\u09ae-\u09a6\u09be\u09a8\u09be\u09af\u09c1\u0995\u09cd\u09a4 \u0985\u09a8\u09c1\u09ae\u09a4\u09bf-\u09ad\u09bf\u09a4\u09cd\u09a4\u09bf\u0995 \u0985\u09cd\u09af\u09be\u0995\u09cd\u09b8\u09c7\u09b8 \u09a8\u09bf\u09af\u09bc\u09a8\u09cd\u09a4\u09cd\u09b0\u09a3 \u09b8\u0995\u09cd\u09b7\u09ae \u0995\u09b0\u09c7 +Require\ Authentication=\u09aa\u09cd\u09b0\u09ae\u09be\u09a3\u09c0\u0995\u09b0\u09a3 \u09aa\u09cd\u09b0\u09af\u09bc\u09cb\u099c\u09a8 +Set\ to\ require\ remote\ users\ to\ be\ authentified\ before\ they\ can\ use\ this\ service=\u09a6\u09c2\u09b0\u09ac\u09b0\u09cd\u09a4\u09c0 \u09ac\u09cd\u09af\u09ac\u09b9\u09be\u09b0\u0995\u09be\u09b0\u09c0\u09b0\u09be \u098f\u0987 \u09aa\u09b0\u09bf\u09b7\u09c7\u09ac\u09be\u099f\u09bf \u09ac\u09cd\u09af\u09ac\u09b9\u09be\u09b0 \u0995\u09b0\u09be\u09b0 \u0986\u0997\u09c7 \u09a4\u09be\u09a6\u09c7\u09b0 \u09aa\u09cd\u09b0\u09ae\u09be\u09a3\u09c0\u0995\u09b0\u09a3 \u0995\u09b0\u09a4\u09c7 \u09b9\u09ac\u09c7 \u09ac\u09b2\u09c7 \u09b8\u09c7\u099f \u0995\u09b0\u09c1\u09a8\u09f7 +Endpoint=\u09b6\u09c7\u09b7\u09ac\u09bf\u09a8\u09cd\u09a6\u09c1 +Unique\ local\ ID\ of\ the\ module=\u09ae\u09a1\u09bf\u0989\u09b2\u09c7\u09b0 \u0985\u09a8\u09a8\u09cd\u09af \u09b8\u09cd\u09a5\u09be\u09a8\u09c0\u09af\u09bc \u0986\u0987\u09a1\u09bf +User\ description\ for\ the\ module=\u09ae\u09a1\u09bf\u0989\u09b2\u09c7\u09b0 \u099c\u09a8\u09cd\u09af \u09ac\u09cd\u09af\u09ac\u09b9\u09be\u09b0\u0995\u09be\u09b0\u09c0\u09b0 \u09ac\u09bf\u09ac\u09b0\u09a3 +Set\ to\ automatically\ start\ the\ module\ when\ it\ is\ loaded=\u09ae\u09a1\u09bf\u0989\u09b2 \u09b2\u09cb\u09a1 \u09b9\u09b2\u09c7 \u09b8\u09cd\u09ac\u09af\u09bc\u0982\u0995\u09cd\u09b0\u09bf\u09af\u09bc\u09ad\u09be\u09ac\u09c7 \u09b6\u09c1\u09b0\u09c1 \u0995\u09b0\u09a4\u09c7 \u09b8\u09c7\u099f \u0995\u09b0\u09c1\u09a8 +Module\ implementation\ class=\u09ae\u09a1\u09bf\u0989\u09b2 \u09ac\u09be\u09b8\u09cd\u09a4\u09ac\u09be\u09af\u09bc\u09a8 \u0995\u09cd\u09b2\u09be\u09b8 +User\ chosen\ name\ for\ the\ module=\u09ae\u09a1\u09bf\u0989\u09b2\u09c7\u09b0 \u099c\u09a8\u09cd\u09af \u09ac\u09cd\u09af\u09ac\u09b9\u09be\u09b0\u0995\u09be\u09b0\u09c0\u09b0 \u09a8\u09bf\u09b0\u09cd\u09ac\u09be\u099a\u09bf\u09a4 \u09a8\u09be\u09ae +Name\ of\ topic/queue\ to\ use=\u09ac\u09cd\u09af\u09ac\u09b9\u09be\u09b0 \u0995\u09b0\u09be\u09b0 \u099c\u09a8\u09cd\u09af \u09ac\u09bf\u09b7\u09af\u09bc/\u09b8\u09be\u09b0\u09bf\u09b0 \u09a8\u09be\u09ae +Enable/disable\ writing\ to\ queue=\u09b8\u09be\u09b0\u09bf\u09a4\u09c7 \u09b2\u09c7\u0996\u09be \u09b8\u0995\u09cd\u09b0\u09bf\u09af\u09bc/\u0985\u0995\u09cd\u09b7\u09ae \u0995\u09b0\u09c1\u09a8 +Enable/disable\ reading\ from\ queue=\u09b8\u09be\u09b0\u09bf \u09a5\u09c7\u0995\u09c7 \u09aa\u09a1\u09bc\u09be \u09b8\u0995\u09cd\u09b7\u09ae/\u0985\u0995\u09cd\u09b7\u09ae \u0995\u09b0\u09c1\u09a8 +Protocol\ Options=\u09aa\u09cd\u09b0\u09cb\u099f\u09cb\u0995\u09b2 \u09ac\u09bf\u0995\u09b2\u09cd\u09aa +Common\ Configuration=\u09b8\u09be\u09a7\u09be\u09b0\u09a3 \u0995\u09a8\u09ab\u09bf\u0997\u09be\u09b0\u09c7\u09b6\u09a8 +Common\ configuration\ for\ sensors\ in\ the\ array=\u0985\u09cd\u09af\u09be\u09b0\u09c7\u09a4\u09c7 \u09b8\u09c7\u09a8\u09cd\u09b8\u09b0\u0997\u09c1\u09b2\u09bf\u09b0 \u099c\u09a8\u09cd\u09af \u09b8\u09be\u09a7\u09be\u09b0\u09a3 \u0995\u09a8\u09ab\u09bf\u0997\u09be\u09b0\u09c7\u09b6\u09a8 +Sensors\ Configuration=\u09b8\u09c7\u09a8\u09cd\u09b8\u09b0 \u0995\u09a8\u09ab\u09bf\u0997\u09be\u09b0\u09c7\u09b6\u09a8 +Subsystem\ Config=\u09b8\u09be\u09ac\u09b8\u09bf\u09b8\u09cd\u099f\u09c7\u09ae \u0995\u09a8\u09ab\u09bf\u0997\u09be\u09b0\u09c7\u09b6\u09a8 +Configuration\ of\ the\ subsystem=\u09b8\u09be\u09ac\u09b8\u09bf\u09b8\u09cd\u099f\u09c7\u09ae\u09c7\u09b0 \u0995\u09a8\u09ab\u09bf\u0997\u09be\u09b0\u09c7\u09b6\u09a8 +Relative\ Location=\u0986\u09aa\u09c7\u0995\u09cd\u09b7\u09bf\u0995 \u0985\u09ac\u09b8\u09cd\u09a5\u09be\u09a8 +Location\ of\ this\ subsystem\ relative\ to\ the\ main\ system\ or\ platform\ reference\ frame=\u09ae\u09c2\u09b2 \u09b8\u09bf\u09b8\u09cd\u099f\u09c7\u09ae \u09ac\u09be \u09aa\u09cd\u09b2\u09cd\u09af\u09be\u099f\u09ab\u09b0\u09cd\u09ae \u09b0\u09c7\u09ab\u09be\u09b0\u09c7\u09a8\u09cd\u09b8 \u09ab\u09cd\u09b0\u09c7\u09ae\u09c7\u09b0 \u09b8\u09be\u09a5\u09c7 \u09b8\u09ae\u09cd\u09aa\u09b0\u09cd\u0995\u09bf\u09a4 \u098f\u0987 \u09b8\u09be\u09ac\u09b8\u09bf\u09b8\u09cd\u099f\u09c7\u09ae\u09c7\u09b0 \u0985\u09ac\u09b8\u09cd\u09a5\u09be\u09a8 +Relative\ Orientation=\u0986\u09aa\u09c7\u0995\u09cd\u09b7\u09bf\u0995 \u0985\u09ad\u09bf\u09af\u09cb\u099c\u09a8 +Orientation\ of\ this\ subsystem\ relative\ to\ the\ main\ system\ or\ platform\ reference\ frame=\u09aa\u09cd\u09b0\u09a7\u09be\u09a8 \u09b8\u09bf\u09b8\u09cd\u099f\u09c7\u09ae \u09ac\u09be \u09aa\u09cd\u09b2\u09cd\u09af\u09be\u099f\u09ab\u09b0\u09cd\u09ae \u09b0\u09c7\u09ab\u09be\u09b0\u09c7\u09a8\u09cd\u09b8 \u09ab\u09cd\u09b0\u09c7\u09ae\u09c7\u09b0 \u09b8\u09be\u09a5\u09c7 \u09b8\u09ae\u09cd\u09aa\u09b0\u09cd\u0995\u09bf\u09a4 \u098f\u0987 \u09b8\u09be\u09ac\u09b8\u09bf\u09b8\u09cd\u099f\u09c7\u09ae\u09c7\u09b0 \u0993\u09b0\u09bf\u09af\u09bc\u09c7\u09a8\u09cd\u099f\u09c7\u09b6\u09a8 +Fixed\ system\ orientation\ in\ the\ local\ NED\ reference\ frame=\u09b8\u09cd\u09a5\u09be\u09a8\u09c0\u09af\u09bc \u098f\u09a8\u0987\u09a1\u09bf \u09b0\u09c7\u09ab\u09be\u09b0\u09c7\u09a8\u09cd\u09b8 \u09ab\u09cd\u09b0\u09c7\u09ae\u09c7 \u09ab\u09bf\u0995\u09cd\u09b8\u09a1 \u09b8\u09bf\u09b8\u09cd\u099f\u09c7\u09ae \u0993\u09b0\u09bf\u09af\u09bc\u09c7\u09a8\u09cd\u099f\u09c7\u09b6\u09a8 +Subsystems=\u09b8\u09be\u09ac\u09b8\u09bf\u09b8\u09cd\u099f\u09c7\u09ae +Configuration\ of\ components\ of\ this\ sensor\ system=\u098f\u0987 \u09b8\u09c7\u09a8\u09cd\u09b8\u09b0 \u09b8\u09bf\u09b8\u09cd\u099f\u09c7\u09ae\u09c7\u09b0 \u0989\u09aa\u09be\u09a6\u09be\u09a8\u0997\u09c1\u09b2\u09bf\u09b0 \u0995\u09a8\u09ab\u09bf\u0997\u09be\u09b0\u09c7\u09b6\u09a8 +Database\ Config=\u09a1\u09be\u099f\u09be\u09ac\u09c7\u09b8 \u0995\u09a8\u09ab\u09bf\u0997\u09be\u09b0\u09c7\u09b6\u09a8 +Configuration\ of\ underlying\ database=\u0985\u09a8\u09cd\u09a4\u09b0\u09cd\u09a8\u09bf\u09b9\u09bf\u09a4 \u09a1\u09be\u099f\u09be\u09ac\u09c7\u09b8\u09c7\u09b0 \u0995\u09a8\u09ab\u09bf\u0997\u09be\u09b0\u09c7\u09b6\u09a8 +System\ UIDs=\u09b8\u09bf\u09b8\u09cd\u099f\u09c7\u09ae \u0987\u0989\u0986\u0987\u09a1\u09bf +Unique\ IDs\ of\ system\ drivers\ handled\ by\ this\ database=\u098f\u0987 \u09a1\u09be\u099f\u09be\u09ac\u09c7\u09b8 \u09a6\u09cd\u09ac\u09be\u09b0\u09be \u09aa\u09b0\u09bf\u099a\u09be\u09b2\u09bf\u09a4 \u09b8\u09bf\u09b8\u09cd\u099f\u09c7\u09ae \u09a1\u09cd\u09b0\u09be\u0987\u09ad\u09be\u09b0\u09c7\u09b0 \u0985\u09a8\u09a8\u09cd\u09af \u0986\u0987\u09a1\u09bf +Automatic\ Purge\ Policy=\u09b8\u09cd\u09ac\u09af\u09bc\u0982\u0995\u09cd\u09b0\u09bf\u09af\u09bc \u09aa\u09b0\u09bf\u09b8\u09cd\u0995\u09be\u09b0 \u09a8\u09c0\u09a4\u09bf +Policy\ for\ automatically\ purging\ historical\ data=\u0990\u09a4\u09bf\u09b9\u09be\u09b8\u09bf\u0995 \u09a1\u09c7\u099f\u09be \u09b8\u09cd\u09ac\u09af\u09bc\u0982\u0995\u09cd\u09b0\u09bf\u09af\u09bc\u09ad\u09be\u09ac\u09c7 \u09b6\u09c1\u09a6\u09cd\u09a7 \u0995\u09b0\u09be\u09b0 \u09a8\u09c0\u09a4\u09bf\u09f7 +Uncheck\ to\ disable\ auto-purge\ temporarily=\u0985\u09b8\u09cd\u09a5\u09be\u09af\u09bc\u09c0\u09ad\u09be\u09ac\u09c7 \u09b8\u09cd\u09ac\u09a4\u0983-\u09b6\u09c1\u09a6\u09cd\u09a7\u09bf \u09a8\u09bf\u09b7\u09cd\u0995\u09cd\u09b0\u09bf\u09af\u09bc \u0995\u09b0\u09a4\u09c7 \u099f\u09bf\u0995 \u099a\u09bf\u09b9\u09cd\u09a8 \u09ae\u09c1\u0995\u09cd\u09a4 \u0995\u09b0\u09c1\u09a8 +Purge\ Execution\ Period=\u09aa\u09b0\u09bf\u09b8\u09cd\u0995\u09be\u09b0 \u09b8\u09ae\u09cd\u09aa\u09be\u09a6\u09a8\u09c7\u09b0 \u09b8\u09ae\u09af\u09bc\u0995\u09be\u09b2 +Unique\ IDs\ of\ system\ drivers\ to\ purge=\u09b8\u09bf\u09b8\u09cd\u099f\u09c7\u09ae \u09a1\u09cd\u09b0\u09be\u0987\u09ad\u09be\u09b0\u09c7\u09b0 \u0985\u09a8\u09a8\u09cd\u09af \u0986\u0987\u09a1\u09bf \u09aa\u09b0\u09bf\u09b7\u09cd\u0995\u09be\u09b0 \u0995\u09b0\u09be\u09b0 \u099c\u09a8\u09cd\u09af +Max\ Record\ Age=\u09b8\u09b0\u09cd\u09ac\u09cb\u099a\u09cd\u099a \u09b0\u09c7\u0995\u09b0\u09cd\u09a1 \u09ac\u09af\u09bc\u09b8 +SensorML\ File=\u09b8\u09c7\u09a8\u09cd\u09b8\u09b0\u098f\u09ae\u098f\u09b2 \u09ab\u09be\u0987\u09b2 +Path\ of\ SensorML\ description\ of\ the\ process=\u09aa\u09cd\u09b0\u0995\u09cd\u09b0\u09bf\u09af\u09bc\u09be\u09b0 \u09b8\u09c7\u09a8\u09cd\u09b8\u09b0\u098f\u09ae\u098f\u09b2 \u09ac\u09b0\u09cd\u09a3\u09a8\u09be\u09b0 \u09aa\u09a5 +List\ of\ users\ allowed\ access\ to\ this\ system=\u098f\u0987 \u09b8\u09bf\u09b8\u09cd\u099f\u09c7\u09ae\u09c7 \u0985\u09cd\u09af\u09be\u0995\u09cd\u09b8\u09c7\u09b8\u09c7\u09b0 \u0985\u09a8\u09c1\u09ae\u09a4\u09bf \u09a6\u09c7\u0993\u09af\u09bc\u09be \u09ac\u09cd\u09af\u09ac\u09b9\u09be\u09b0\u0995\u09be\u09b0\u09c0\u09a6\u09c7\u09b0 \u09a4\u09be\u09b2\u09bf\u0995\u09be +List\ of\ security\ roles=\u09a8\u09bf\u09b0\u09be\u09aa\u09a4\u09cd\u09a4\u09be \u09ad\u09c2\u09ae\u09bf\u0995\u09be\u09b0 \u09a4\u09be\u09b2\u09bf\u0995\u09be +User\ ID=\u0987\u0989\u099c\u09be\u09b0 \u0986\u0987\u09a1\u09bf +Role\ ID=\u09ad\u09c2\u09ae\u09bf\u0995\u09be \u0986\u0987\u09a1\u09bf +Source\ Database\ ID=\u0989\u09ce\u09b8 \u09a1\u09be\u099f\u09be\u09ac\u09c7\u09b8 \u0986\u0987\u09a1\u09bf +ID\ of\ database\ module\ to\ read\ data\ from\ (Federated\ database\ will\ be\ used\ if\ not\ set=\u09a1\u09c7\u099f\u09be\u09ac\u09c7\u09b8 \u09ae\u09a1\u09bf\u0989\u09b2\u09c7\u09b0 \u0986\u0987\u09a1\u09bf \u09a5\u09c7\u0995\u09c7 \u09a1\u09c7\u099f\u09be \u09aa\u09a1\u09bc\u09be\u09b0 \u099c\u09a8\u09cd\u09af (\u09b8\u09c7\u099f \u09a8\u09be \u09a5\u09be\u0995\u09b2\u09c7 \u09ab\u09c7\u09a1\u09be\u09b0\u09c7\u099f\u09c7\u09a1 \u09a1\u09be\u099f\u09be\u09ac\u09c7\u09b8 \u09ac\u09cd\u09af\u09ac\u09b9\u09be\u09b0 \u0995\u09b0\u09be \u09b9\u09ac\u09c7 +HTTP\ Port=HTTP \u09aa\u09cb\u09b0\u09cd\u099f +HTTPS\ Port=HTTPS \u09aa\u09cb\u09b0\u09cd\u099f +Root\ URL\ where\ static\ web\ content\ will\ be\ served.=\u09b0\u09c1\u099f \u0987\u0989\u0986\u09b0\u098f\u09b2 \u09af\u09c7\u0996\u09be\u09a8\u09c7 \u09b8\u09cd\u099f\u09cd\u09af\u09be\u099f\u09bf\u0995 \u0993\u09af\u09bc\u09c7\u09ac \u0995\u09a8\u09cd\u099f\u09c7\u09a8\u09cd\u099f \u09aa\u09b0\u09bf\u09ac\u09c7\u09b6\u09a8 \u0995\u09b0\u09be \u09b9\u09ac\u09c7\u0964 +Directory\ where\ static\ web\ content\ is\ located.=\u09a1\u09be\u0987\u09b0\u09c7\u0995\u09cd\u099f\u09b0\u09bf \u09af\u09c7\u0996\u09be\u09a8\u09c7 \u09b8\u09cd\u099f\u09cd\u09af\u09be\u099f\u09bf\u0995 \u0993\u09af\u09bc\u09c7\u09ac \u0995\u09a8\u09cd\u099f\u09c7\u09a8\u09cd\u099f \u0985\u09ac\u09b8\u09cd\u09a5\u09bf\u09a4\u0964 +Root\ URL\ where\ the\ server\ will\ accept\ requests.\ This\ will\ be\ the\ prefix\ to\ all\ servlet\ URLs.=\u09b0\u09c1\u099f URL \u09af\u09c7\u0996\u09be\u09a8\u09c7 \u09b8\u09be\u09b0\u09cd\u09ad\u09be\u09b0 \u0985\u09a8\u09c1\u09b0\u09cb\u09a7 \u0997\u09cd\u09b0\u09b9\u09a3 \u0995\u09b0\u09ac\u09c7\u0964 \u098f\u099f\u09bf \u09b8\u09ae\u09b8\u09cd\u09a4 \u09b8\u09be\u09b0\u09cd\u09b2\u09c7\u099f URL-\u098f\u09b0 \u0989\u09aa\u09b8\u09b0\u09cd\u0997 \u09b9\u09ac\u09c7\u0964 +Proxy\ Base\ URL=\u09aa\u09cd\u09b0\u0995\u09cd\u09b8\u09bf \u09ac\u09c7\u09b8 URL +Public\ URL\ as\ viewed\ from\ the\ outside\ when\ requests\ transit\ through\ a\ proxy\ server.=\u098f\u0995\u099f\u09bf \u09aa\u09cd\u09b0\u0995\u09cd\u09b8\u09bf \u09b8\u09be\u09b0\u09cd\u09ad\u09be\u09b0\u09c7\u09b0 \u09ae\u09be\u09a7\u09cd\u09af\u09ae\u09c7 \u099f\u09cd\u09b0\u09be\u09a8\u099c\u09bf\u099f \u0995\u09b0\u09be\u09b0 \u0985\u09a8\u09c1\u09b0\u09cb\u09a7\u09c7\u09b0 \u09b8\u09ae\u09af\u09bc \u09ac\u09be\u0987\u09b0\u09c7 \u09a5\u09c7\u0995\u09c7 \u09a6\u09c7\u0996\u09be \u09b9\u09bf\u09b8\u09be\u09ac\u09c7 \u09b8\u09b0\u09cd\u09ac\u099c\u09a8\u09c0\u09a8 URL\u0964 +Authentication\ Method=\u09aa\u09cd\u09b0\u09ae\u09be\u09a3\u09c0\u0995\u09b0\u09a3 \u09aa\u09a6\u09cd\u09a7\u09a4\u09bf +Method\ used\ to\ authenticate\ users\ on\ this\ server=\u098f\u0987 \u09b8\u09be\u09b0\u09cd\u09ad\u09be\u09b0\u09c7 \u09ac\u09cd\u09af\u09ac\u09b9\u09be\u09b0\u0995\u09be\u09b0\u09c0\u09a6\u09c7\u09b0 \u09aa\u09cd\u09b0\u09ae\u09be\u09a3\u09c0\u0995\u09b0\u09a3 \u0995\u09b0\u09a4\u09c7 \u09ac\u09cd\u09af\u09ac\u09b9\u09c3\u09a4 \u09aa\u09a6\u09cd\u09a7\u09a4\u09bf +Path\ to\ a\ key\ store\ containing\ the\ certificate\ and\ keypair\ that\ this\ server\ will\ present\ to\ clients\ when\ accessed\ over\ HTTPS.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ \"javax.net.ssl.keyStore\"\ system\ property.\=Path to a key store containing the certificate and keypair that this server will present to clients when accessed over HTTPS. If this value is blank, will default to using the value of the \"javax.net.ssl.keyStore\" system property. +Alias\ for\ the\ public/private\ keypair\ within\ the\ key\ store\ that\ will\ be\ used\ to\ identify\ this\ server.=\u0995\u09c0 \u09b8\u09cd\u099f\u09cb\u09b0\u09c7\u09b0 \u09ae\u09a7\u09cd\u09af\u09c7 \u09aa\u09be\u09ac\u09b2\u09bf\u0995/\u09aa\u09cd\u09b0\u09be\u0987\u09ad\u09c7\u099f \u0995\u09c0-\u09aa\u09c7\u09af\u09bc\u09be\u09b0\u09c7\u09b0 \u0989\u09aa\u09a8\u09be\u09ae \u09af\u09be \u098f\u0987 \u09b8\u09be\u09b0\u09cd\u09ad\u09be\u09b0\u0995\u09c7 \u09b6\u09a8\u09be\u0995\u09cd\u09a4 \u0995\u09b0\u09a4\u09c7 \u09ac\u09cd\u09af\u09ac\u09b9\u09be\u09b0 \u0995\u09b0\u09be \u09b9\u09ac\u09c7\u0964 +Path\ to\ the\ TLS\ trust\ store\ that\ is\ used\ when\ client\ authentication\ is\ required.\ Ignored\ if\ client\ certificate\ authentication\ is\ not\ used.\ Certificates\ in\ this\ file\ designate\ the\ signing\ authorities\ for\ client\ certificates\ that\ will\ be\ trusted.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ \"javax.net.ssl.trustStore\"\ system\ property.\=Path to the TLS trust store that is used when client authentication is required. Ignored if client certificate authentication is not used. Certificates in this file designate the signing authorities for client certificates that will be trusted. If this value is blank, will default to using the value of the \"javax.net.ssl.trustStore\" system property. +Password\ for\ the\ trust\ store.\ Ignored\ if\ client\ certificate\ authentication\ is\ not\ used.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ \"javax.net.ssl.trustStorePassword\"\ system\ property.\=Password for the trust store. Ignored if client certificate authentication is not used. If this value is blank, will default to using the value of the \"javax.net.ssl.trustStorePassword\" system property. +Enable\ CORS=CORS \u09b8\u0995\u09cd\u09b7\u09ae \u0995\u09b0\u09c1\u09a8 +Enable\ generation\ of\ CORS\ headers\ to\ allow\ cross-domain\ requests\ from\ browsers=\u09ac\u09cd\u09b0\u09be\u0989\u099c\u09be\u09b0 \u09a5\u09c7\u0995\u09c7 \u0995\u09cd\u09b0\u09b8-\u09a1\u09cb\u09ae\u09c7\u09a8 \u0985\u09a8\u09c1\u09b0\u09cb\u09a7\u09c7\u09b0 \u0985\u09a8\u09c1\u09ae\u09a4\u09bf \u09a6\u09bf\u09a4\u09c7 CORS \u09b6\u09bf\u09b0\u09cb\u09a8\u09be\u09ae \u09a4\u09c8\u09b0\u09bf \u0995\u09b0\u09a4\u09c7 \u09b8\u0995\u09cd\u09b7\u09ae \u0995\u09b0\u09c1\u09a8 +Capabilities\ Info=\u0995\u09cd\u09b7\u09ae\u09a4\u09be \u09a4\u09a5\u09cd\u09af +Information\ included\ in\ the\ service\ capabilities\ document=\u09aa\u09b0\u09bf\u09b7\u09c7\u09ac\u09be\u09b0 \u0995\u09cd\u09b7\u09ae\u09a4\u09be \u09a8\u09a5\u09bf\u09a4\u09c7 \u0985\u09a8\u09cd\u09a4\u09b0\u09cd\u09ad\u09c1\u0995\u09cd\u09a4 \u09a4\u09a5\u09cd\u09af +Enable\ HTTP\ GET=HTTP GET \u09b8\u0995\u09cd\u09b7\u09ae \u0995\u09b0\u09c1\u09a8 +Enables/disables\ HTTP\ GET\ bindings\ on\ operations\ that\ support\ it=\u098f\u099f\u09bf \u09b8\u09ae\u09b0\u09cd\u09a5\u09a8 \u0995\u09b0\u09c7 \u098f\u09ae\u09a8 \u0995\u09cd\u09b0\u09bf\u09af\u09bc\u09be\u0995\u09b2\u09be\u09aa\u0997\u09c1\u09b2\u09bf\u09a4\u09c7 HTTP GET \u09ac\u09be\u0987\u09a8\u09cd\u09a1\u09bf\u0982 \u09b8\u0995\u09cd\u09b7\u09ae/\u0985\u0995\u09cd\u09b7\u09ae \u0995\u09b0\u09c7\u09f7 +Enable\ HTTP\ POST=HTTP POST \u09b8\u0995\u09cd\u09b7\u09ae \u0995\u09b0\u09c1\u09a8\u09f7 +Enables/disables\ HTTP\ POST\ bindings\ on\ operations\ that\ support\ it=\u098f\u099f\u09bf\u0995\u09c7 \u09b8\u09ae\u09b0\u09cd\u09a5\u09a8 \u0995\u09b0\u09c7 \u098f\u09ae\u09a8 \u0995\u09cd\u09b0\u09bf\u09af\u09bc\u09be\u0995\u09b2\u09be\u09aa\u0997\u09c1\u09b2\u09bf\u09a4\u09c7 HTTP POST \u09ac\u09be\u0987\u09a8\u09cd\u09a1\u09bf\u0982 \u09b8\u0995\u09cd\u09b7\u09ae/\u0985\u0995\u09cd\u09b7\u09ae \u0995\u09b0\u09c7\u09f7 +Enable\ HTTP\ SOAP=HTTP SOAP \u09b8\u0995\u09cd\u09b7\u09ae \u0995\u09b0\u09c1\u09a8 +Enables/disables\ HTTP\ SOAP\ bindings\ on\ operations\ that\ support\ it=\u098f\u099f\u09bf \u09b8\u09ae\u09b0\u09cd\u09a5\u09a8 \u0995\u09b0\u09c7 \u098f\u09ae\u09a8 \u0995\u09cd\u09b0\u09bf\u09af\u09bc\u09be\u0995\u09b2\u09be\u09aa\u0997\u09c1\u09b2\u09bf\u09a4\u09c7 HTTP SOAP \u09ac\u09be\u0987\u09a8\u09cd\u09a1\u09bf\u0982\u0997\u09c1\u09b2\u09bf\u0995\u09c7 \u09b8\u0995\u09cd\u09b7\u09ae/\u0985\u0995\u09cd\u09b7\u09ae \u0995\u09b0\u09c7\u09f7 +Connection\ Timeout=\u09b8\u0982\u09af\u09cb\u0997\u09c7\u09b0 \u09b8\u09ae\u09af\u09bc\u09b8\u09c0\u09ae\u09be +Reconnect\ Period=\u09aa\u09bf\u09b0\u09bf\u09af\u09bc\u09a1 \u09aa\u09c1\u09a8\u09b0\u09be\u09af\u09bc \u09b8\u0982\u09af\u09cb\u0997 \u0995\u09b0\u09c1\u09a8 +Max\ Reconnect\ Attempts=\u09b8\u09b0\u09cd\u09ac\u09cb\u099a\u09cd\u099a \u09aa\u09c1\u09a8\u0983\u09b8\u0982\u09af\u09cb\u0997 \u09aa\u09cd\u09b0\u099a\u09c7\u09b7\u09cd\u099f\u09be +Maximum\ number\ of\ times\ the\ client\ will\ attempt\ to\ reconnect\ when\ the\ connection\ is\ not\ available\ or\ lost.\ A\ negative\ value\ means\ that\ there\ is\ no\ limit\ to\ the\ number\ of\ reconnection\ attempts.\ Zero\ means\ not\ to\ attempt\ reconnection.=\u09b8\u0982\u09af\u09cb\u0997 \u0989\u09aa\u09b2\u09ac\u09cd\u09a7 \u09a8\u09be \u09a5\u09be\u0995\u09b2\u09c7 \u09ac\u09be \u09b9\u09be\u09b0\u09bf\u09af\u09bc\u09c7 \u0997\u09c7\u09b2\u09c7 \u0995\u09cd\u09b2\u09be\u09af\u09bc\u09c7\u09a8\u09cd\u099f \u0995\u09a4\u09ac\u09be\u09b0 \u09aa\u09c1\u09a8\u09b0\u09be\u09af\u09bc \u09b8\u0982\u09af\u09cb\u0997 \u0995\u09b0\u09be\u09b0 \u099a\u09c7\u09b7\u09cd\u099f\u09be \u0995\u09b0\u09ac\u09c7\u0964 \u098f\u0995\u099f\u09bf \u09a8\u09c7\u09a4\u09bf\u09ac\u09be\u099a\u0995 \u09ae\u09be\u09a8 \u09ae\u09be\u09a8\u09c7 \u09b9\u09b2 \u09aa\u09c1\u09a8\u0983\u09b8\u0982\u09af\u09cb\u0997 \u09aa\u09cd\u09b0\u099a\u09c7\u09b7\u09cd\u099f\u09be\u09b0 \u09b8\u0982\u0996\u09cd\u09af\u09be\u09b0 \u0995\u09cb\u09a8 \u09b8\u09c0\u09ae\u09be \u09a8\u09c7\u0987\u0964 \u099c\u09bf\u09b0\u09cb \u09ae\u09be\u09a8\u09c7 \u09aa\u09c1\u09a8\u09b0\u09be\u09af\u09bc \u09b8\u0982\u09af\u09cb\u0997\u09c7\u09b0 \u099a\u09c7\u09b7\u09cd\u099f\u09be \u09a8\u09be \u0995\u09b0\u09be\u0964 +IP\ or\ DNS\ name\ of\ remote\ host=\u09a6\u09c2\u09b0\u09ac\u09b0\u09cd\u09a4\u09c0 \u09b9\u09cb\u09b8\u09cd\u099f\u09c7\u09b0 IP \u09ac\u09be DNS \u09a8\u09be\u09ae +IP\ of\ local\ network\ interface\ to\ bind\ to\ or\ 'AUTO'\ to\ select\ it\ automatically=\u09b8\u09cd\u09ac\u09af\u09bc\u0982\u0995\u09cd\u09b0\u09bf\u09af\u09bc\u09ad\u09be\u09ac\u09c7 \u09a8\u09bf\u09b0\u09cd\u09ac\u09be\u099a\u09a8 \u0995\u09b0\u09a4\u09c7 \u09b8\u09cd\u09a5\u09be\u09a8\u09c0\u09af\u09bc \u09a8\u09c7\u099f\u0993\u09af\u09bc\u09be\u09b0\u09cd\u0995 \u0987\u09a8\u09cd\u099f\u09be\u09b0\u09ab\u09c7\u09b8\u09c7\u09b0 \u0986\u0987\u09aa\u09bf \u09ac\u09be ''''\u0985\u099f\u09cb'''' \u098f\u09b0 \u09b8\u09be\u09a5\u09c7 \u0986\u09ac\u09a6\u09cd\u09a7 \u09b9\u09a4\u09c7 +Connection\ Options=\u09b8\u0982\u09af\u09cb\u0997 \u09ac\u09bf\u0995\u09b2\u09cd\u09aa +Serial\ port\ device\ name.\ Usually\ something\ like\ /dev/ttyXXX\ on\ Linux=\u09b8\u09bf\u09b0\u09bf\u09af\u09bc\u09be\u09b2 \u09aa\u09cb\u09b0\u09cd\u099f \u09a1\u09bf\u09ad\u09be\u0987\u09b8\u09c7\u09b0 \u09a8\u09be\u09ae\u0964 \u09b2\u09bf\u09a8\u09be\u0995\u09cd\u09b8\u09c7 \u09b8\u09be\u09a7\u09be\u09b0\u09a3\u09a4 /dev/ttyXXX \u098f\u09b0 \u09ae\u09a4\u09cb \u0995\u09bf\u099b\u09c1 +Minimum\ number\ of\ bytes\ to\ receive\ before\ they\ are\ sent\ to\ the\ caller=\u0995\u09b2\u09be\u09b0\u09c7\u09b0 \u0995\u09be\u099b\u09c7 \u09aa\u09be\u09a0\u09be\u09a8\u09cb\u09b0 \u0986\u0997\u09c7 \u09a8\u09cd\u09af\u09c2\u09a8\u09a4\u09ae \u09b8\u0982\u0996\u09cd\u09af\u0995 \u09ac\u09be\u0987\u099f \u0997\u09cd\u09b0\u09b9\u09a3 \u0995\u09b0\u09a4\u09c7 \u09b9\u09ac\u09c7 +Local\ port\ number\ to\ use\ on\ the\ local\ host=\u09b8\u09cd\u09a5\u09be\u09a8\u09c0\u09af\u09bc \u09b9\u09cb\u09b8\u09cd\u099f\u09c7 \u09ac\u09cd\u09af\u09ac\u09b9\u09be\u09b0 \u0995\u09b0\u09be\u09b0 \u099c\u09a8\u09cd\u09af \u09b8\u09cd\u09a5\u09be\u09a8\u09c0\u09af\u09bc \u09aa\u09cb\u09b0\u09cd\u099f \u09a8\u09ae\u09cd\u09ac\u09b0 +Physical\ address\ of\ Bluetooth\ device\ to\ connect\ to=\u09b8\u0982\u09af\u09cb\u0997 \u0995\u09b0\u09a4\u09c7 \u09ac\u09cd\u09b2\u09c1\u099f\u09c1\u09a5 \u09a1\u09bf\u09ad\u09be\u0987\u09b8\u09c7\u09b0 \u09aa\u09cd\u09b0\u0995\u09c3\u09a4 \u09a0\u09bf\u0995\u09be\u09a8\u09be +Port\ number\ to\ connect\ to\ on\ remote\ host=\u09a6\u09c2\u09b0\u09ac\u09b0\u09cd\u09a4\u09c0 \u09b9\u09cb\u09b8\u09cd\u099f\u09c7 \u09b8\u0982\u09af\u09cb\u0997 \u0995\u09b0\u09be\u09b0 \u099c\u09a8\u09cd\u09af \u09aa\u09cb\u09b0\u09cd\u099f \u09a8\u09ae\u09cd\u09ac\u09b0 +User\ Name=\u09ac\u09cd\u09af\u09ac\u09b9\u09be\u09b0\u0995\u09be\u09b0\u09c0\u09b0 \u09a8\u09be\u09ae +Remote\ user\ name=\u09a6\u09c2\u09b0\u09ac\u09b0\u09cd\u09a4\u09c0 \u09ac\u09cd\u09af\u09ac\u09b9\u09be\u09b0\u0995\u09be\u09b0\u09c0\u09b0 \u09a8\u09be\u09ae +Password=\u09aa\u09be\u09b8\u0993\u09af\u09bc\u09be\u09b0\u09cd\u09a1 +Remote\ password=\u09a6\u09c2\u09b0\u09ac\u09b0\u09cd\u09a4\u09c0 \u09aa\u09be\u09b8\u0993\u09af\u09bc\u09be\u09b0\u09cd\u09a1 +Secure\ communications\ with\ SSL/TLS=SSL/TLS \u098f\u09b0 \u09b8\u09be\u09a5\u09c7 \u09a8\u09bf\u09b0\u09be\u09aa\u09a6 \u09af\u09cb\u0997\u09be\u09af\u09cb\u0997 +Enable\ to\ check\ if\ remote\ host\ is\ reachable\ before\ attempting\ further\ operations=\u09aa\u09b0\u09ac\u09b0\u09cd\u09a4\u09c0 \u0995\u09cd\u09b0\u09bf\u09af\u09bc\u09be\u0995\u09b2\u09be\u09aa\u09c7\u09b0 \u099a\u09c7\u09b7\u09cd\u099f\u09be \u0995\u09b0\u09be\u09b0 \u0986\u0997\u09c7 \u09a6\u09c2\u09b0\u09ac\u09b0\u09cd\u09a4\u09c0 \u09b9\u09cb\u09b8\u09cd\u099f\u09c7\u09b0 \u0995\u09be\u099b\u09c7 \u09aa\u09cc\u0981\u099b\u09be\u09a8\u09cb \u09af\u09be\u09af\u09bc \u0995\u09bf\u09a8\u09be \u09a4\u09be \u09aa\u09b0\u09c0\u0995\u09cd\u09b7\u09be \u0995\u09b0\u09a4\u09c7 \u09b8\u0995\u09cd\u09b7\u09ae \u0995\u09b0\u09c1\u09a8\u09f7 +Path\ or\ resource\ or\ service\ relative\ to\ server\ root=\u09b8\u09be\u09b0\u09cd\u09ad\u09be\u09b0 \u09b0\u09c1\u099f\u09c7\u09b0 \u09b8\u09be\u09a5\u09c7 \u09b8\u09ae\u09cd\u09aa\u09b0\u09cd\u0995\u09bf\u09a4 \u09aa\u09a5 \u09ac\u09be \u09b8\u0982\u09b8\u09cd\u09a5\u09be\u09a8 \u09ac\u09be \u09aa\u09b0\u09bf\u09b7\u09c7\u09ac\u09be +Unique\ ID\ of\ system\ group=\u09b8\u09bf\u09b8\u09cd\u099f\u09c7\u09ae \u0997\u09cd\u09b0\u09c1\u09aa\u09c7\u09b0 \u0985\u09a8\u09a8\u09cd\u09af \u0986\u0987\u09a1\u09bf +Name\ of\ system\ group=\u09b8\u09bf\u09b8\u09cd\u099f\u09c7\u09ae \u0997\u09cd\u09b0\u09c1\u09aa\u09c7\u09b0 \u09a8\u09be\u09ae +Description\ of\ system\ group=\u09b8\u09bf\u09b8\u09cd\u099f\u09c7\u09ae \u0997\u09cd\u09b0\u09c1\u09aa\u09c7\u09b0 \u09ac\u09b0\u09cd\u09a3\u09a8\u09be +List\ of\ bundle\ repository\ URLs=\u09ac\u09be\u09a8\u09cd\u09a1\u09c7\u09b2 \u09b0\u09bf\u09aa\u09cb\u099c\u09bf\u099f\u09b0\u09bf URL-\u098f\u09b0 \u09a4\u09be\u09b2\u09bf\u0995\u09be +A\ human\ readable\ friendly\ identifier\ for\ the\ deployment=\u09b8\u09cd\u09a5\u09be\u09aa\u09a8\u09be\u09b0 \u099c\u09a8\u09cd\u09af \u098f\u0995\u099f\u09bf \u09ae\u09be\u09a8\u09ac \u09aa\u09be\u09a0\u09af\u09cb\u0997\u09cd\u09af \u09ac\u09a8\u09cd\u09a7\u09c1\u09a4\u09cd\u09ac\u09aa\u09c2\u09b0\u09cd\u09a3 \u09b8\u09a8\u09be\u0995\u09cd\u09a4\u0995\u09be\u09b0\u09c0 +Enable\ Landing\ Page=\u09b2\u09cd\u09af\u09be\u09a8\u09cd\u09a1\u09bf\u0982 \u09aa\u09c3\u09b7\u09cd\u09a0\u09be \u09b8\u0995\u09cd\u09b7\u09ae \u0995\u09b0\u09c1\u09a8 +Enable\ Landing\ Servlet\ to\ redirect\ users\ to\ landing\ page=\u09ac\u09cd\u09af\u09ac\u09b9\u09be\u09b0\u0995\u09be\u09b0\u09c0\u09a6\u09c7\u09b0 \u09b2\u09cd\u09af\u09be\u09a8\u09cd\u09a1\u09bf\u0982 \u09aa\u09c3\u09b7\u09cd\u09a0\u09be\u09af\u09bc \u09aa\u09c1\u09a8\u0983\u09a8\u09bf\u09b0\u09cd\u09a6\u09c7\u09b6\u09bf\u09a4 \u0995\u09b0\u09a4\u09c7 \u09b2\u09cd\u09af\u09be\u09a8\u09cd\u09a1\u09bf\u0982 \u09b8\u09be\u09b0\u09cd\u09ad\u09b2\u09c7\u099f \u09b8\u0995\u09cd\u09b7\u09ae \u0995\u09b0\u09c1\u09a8 +Config\ Class=\u0995\u09a8\u09ab\u09bf\u0997\u09be\u09b0 \u0995\u09cd\u09b2\u09be\u09b8 +Type\ of\ module\ config\ class\ for\ which\ a\ custom\ panel\ must\ be\ generated=\u09ae\u09a1\u09bf\u0989\u09b2 \u0995\u09a8\u09ab\u09bf\u0997\u09be\u09b0 \u0995\u09cd\u09b2\u09be\u09b8\u09c7\u09b0 \u09aa\u09cd\u09b0\u0995\u09be\u09b0 \u09af\u09be\u09b0 \u099c\u09a8\u09cd\u09af \u098f\u0995\u099f\u09bf \u0995\u09be\u09b8\u09cd\u099f\u09ae \u09aa\u09cd\u09af\u09be\u09a8\u09c7\u09b2 \u09a4\u09c8\u09b0\u09bf \u0995\u09b0\u09a4\u09c7 \u09b9\u09ac\u09c7 +UI\ Class=UI \u0995\u09cd\u09b2\u09be\u09b8 +Fully\ qualified\ name\ of\ class\ implementing\ IModuleAdminPanel=IModuleAdminPanel \u09ac\u09be\u09b8\u09cd\u09a4\u09ac\u09be\u09af\u09bc\u09a8\u0995\u09be\u09b0\u09c0 \u0995\u09cd\u09b2\u09be\u09b8\u09c7\u09b0 \u09b8\u09ae\u09cd\u09aa\u09c2\u09b0\u09cd\u09a3 \u09af\u09cb\u0997\u09cd\u09af \u09a8\u09be\u09ae + +# Auto-extracted property IDs +sensorML=\u09b8\u09c7\u09a8\u09cd\u09b8\u09b0 \u098f\u09ae.\u098f\u09b2 +lastUpdated=\u09b8\u09b0\u09cd\u09ac\u09b6\u09c7\u09b7 \u0986\u09aa\u09a1\u09c7\u099f +lat=\u09b2\u09cd\u09af\u09be\u099f +lon=\u09b2\u09a8 +alt=Alt +x=\u098f\u0995\u09cd\u09b8 +y=Y +z=\u099c\u09c7\u09a1 +heading=\u09b6\u09bf\u09b0\u09cb\u09a8\u09be\u09ae +pitch=\u09aa\u09bf\u099a +roll=\u09b0\u09cb\u09b2 +location=\u0985\u09ac\u09b8\u09cd\u09a5\u09be\u09a8 +orientation=\u0993\u09b0\u09bf\u09af\u09bc\u09c7\u09a8\u09cd\u099f\u09c7\u09b6\u09a8 +databaseNum=\u09a1\u09be\u099f\u09be\u09ac\u09c7\u09b8 \u09b8\u0982\u0996\u09cd\u09af\u09be +enableAccessControl=\u0985\u09cd\u09af\u09be\u0995\u09cd\u09b8\u09c7\u09b8 \u0995\u09a8\u09cd\u099f\u09cd\u09b0\u09cb\u09b2 \u09b8\u0995\u09cd\u09b7\u09ae \u0995\u09b0\u09c1\u09a8 +requireAuth=\u09aa\u09cd\u09b0\u09ae\u09be\u09a3 \u09aa\u09cd\u09b0\u09af\u09bc\u09cb\u099c\u09a8 +mimeType=\u09ae\u09be\u0987\u09ae \u099f\u09be\u0987\u09aa +className=\u0995\u09cd\u09b2\u09be\u09b8\u09c7\u09b0 \u09a8\u09be\u09ae +endPoint=\u09b6\u09c7\u09b7 \u09ac\u09bf\u09a8\u09cd\u09a6\u09c1 +id=\u0986\u0987\u09a1\u09bf +description=\u09ac\u09b0\u09cd\u09a3\u09a8\u09be +autoStart=\u0985\u099f\u09cb \u09b8\u09cd\u099f\u09be\u09b0\u09cd\u099f +topicName=\u09ac\u09bf\u09b7\u09af\u09bc\u09c7\u09b0 \u09a8\u09be\u09ae +enablePublish=\u09aa\u09cd\u09b0\u0995\u09be\u09b6\u09a8\u09be \u09b8\u0995\u09cd\u09b7\u09ae \u0995\u09b0\u09c1\u09a8 +enableSubscribe=\u09b8\u09a6\u09b8\u09cd\u09af\u09a4\u09be \u09b8\u0995\u09cd\u09b0\u09bf\u09af\u09bc \u0995\u09b0\u09c1\u09a8 +protocol=\u09aa\u09cd\u09b0\u09cb\u099f\u09cb\u0995\u09b2 +moduleConfigPath=\u09ae\u09a1\u09bf\u0989\u09b2 \u0995\u09a8\u09ab\u09bf\u0997\u09be\u09b0\u09c7\u09b6\u09a8 \u09aa\u09be\u09a5 +moduleDataPath=\u09ae\u09a1\u09bf\u0989\u09b2 \u09a1\u09c7\u099f\u09be \u09aa\u09be\u09a5 +commonConfig=\u09b8\u09be\u09a7\u09be\u09b0\u09a3 \u0995\u09a8\u09ab\u09bf\u0997\u09be\u09b0\u09c7\u09b6\u09a8 +sensors=Sensors +config=\u0995\u09a8\u09ab\u09bf\u0997\u09be\u09b0 +uniqueID=\u0985\u09a8\u09a8\u09cd\u09af \u0986\u0987\u09a1\u09bf +subsystems=\u09b8\u09be\u09ac\u09b8\u09bf\u09b8\u09cd\u099f\u09c7\u09ae +dbConfig=\u09a1\u09bf\u09ac\u09bf \u0995\u09a8\u09ab\u09bf\u0997\u09be\u09b0\u09c7\u09b6\u09a8 +systemUIDs=\u09b8\u09bf\u09b8\u09cd\u099f\u09c7\u09ae Uids +autoPurgeConfig=\u0985\u099f\u09cb \u09aa\u09be\u09b0\u09cd\u099c \u0995\u09a8\u09ab\u09bf\u0997\u09be\u09b0\u09c7\u09b6\u09a8 +minCommitPeriod=\u09b8\u09b0\u09cd\u09ac\u09a8\u09bf\u09ae\u09cd\u09a8 \u0995\u09ae\u09bf\u099f \u09b8\u09ae\u09af\u09bc\u0995\u09be\u09b2 +enabled=\u09b8\u0995\u09cd\u09b0\u09bf\u09af\u09bc +purgePeriod=\u09aa\u09b0\u099c \u09aa\u09bf\u09b0\u09bf\u09af\u09bc\u09a1 +maxRecordAge=\u09b8\u09b0\u09cd\u09ac\u09cb\u099a\u09cd\u099a \u09b0\u09c7\u0995\u09b0\u09cd\u09a1 \u09ac\u09af\u09bc\u09b8 +users=\u09ac\u09cd\u09af\u09ac\u09b9\u09be\u09b0\u0995\u09be\u09b0\u09c0\u09a6\u09c7\u09b0 +roles=\u09ad\u09c2\u09ae\u09bf\u0995\u09be +allow=\u0985\u09a8\u09c1\u09ae\u09a4\u09bf \u09a6\u09bf\u09a8 +deny=\u0985\u09b8\u09cd\u09ac\u09c0\u0995\u09be\u09b0 \u0995\u09b0\u09c1\u09a8 +userID=\u0987\u0989\u099c\u09be\u09b0 \u0986\u0987\u09a1\u09bf +name=\u09a8\u09be\u09ae +password=\u09aa\u09be\u09b8\u0993\u09af\u09bc\u09be\u09b0\u09cd\u09a1 +certificate=\u09b8\u09be\u09b0\u09cd\u099f\u09bf\u09ab\u09bf\u0995\u09c7\u099f +twoFactorSecret=\u099f\u09c1 \u09ab\u09cd\u09af\u09be\u0995\u09cd\u099f\u09b0 \u09b8\u09bf\u0995\u09cd\u09b0\u09c7\u099f +isTwoFactorEnabled=\u09a6\u09c1\u0987 \u09ab\u09cd\u09af\u09be\u0995\u09cd\u099f\u09b0 \u09b8\u0995\u09cd\u09b0\u09bf\u09af\u09bc \u0986\u099b\u09c7 +roleID=\u09ad\u09c2\u09ae\u09bf\u0995\u09be \u0986\u0987\u09a1\u09bf +sourceDatabaseId=\u0989\u09ce\u09b8 \u09a1\u09be\u099f\u09be\u09ac\u09c7\u09b8 \u0986\u0987\u09a1\u09bf +includeFilter=\u09ab\u09bf\u09b2\u09cd\u099f\u09be\u09b0 \u0985\u09a8\u09cd\u09a4\u09b0\u09cd\u09ad\u09c1\u0995\u09cd\u09a4 \u0995\u09b0\u09c1\u09a8 +excludeFilter=\u09ab\u09bf\u09b2\u09cd\u099f\u09be\u09b0 \u09ac\u09be\u09a6 \u09a6\u09bf\u09a8 +httpPort=Http \u09aa\u09cb\u09b0\u09cd\u099f +httpsPort=Https \u09aa\u09cb\u09b0\u09cd\u099f +staticDocsRootUrl=\u09b8\u09cd\u099f\u09cd\u09af\u09be\u099f\u09bf\u0995 \u09a1\u0995\u09cd\u09b8 \u09b0\u09c1\u099f \u0987\u0989\u0986\u09b0\u098f\u09b2 +staticDocsRootDir=\u09b8\u09cd\u099f\u09cd\u09af\u09be\u099f\u09bf\u0995 \u09a1\u0995\u09cd\u09b8 \u09b0\u09c1\u099f Dir +servletsRootUrl=\u09b8\u09be\u09b0\u09cd\u09ad\u09b2\u09c7\u099f\u09b8 \u09b0\u09c1\u099f \u0987\u0989\u0986\u09b0\u098f\u09b2 +proxyBaseUrl=\u09aa\u09cd\u09b0\u0995\u09cd\u09b8\u09bf \u09ac\u09c7\u09b8 \u0987\u0989\u0986\u09b0\u098f\u09b2 +authMethod=\u09aa\u09cd\u09b0\u09ae\u09be\u09a3 \u09aa\u09a6\u09cd\u09a7\u09a4\u09bf +keyStorePath=\u0995\u09c0 \u09b8\u09cd\u099f\u09cb\u09b0 \u09aa\u09be\u09a5 +keyStorePassword=\u0995\u09c0 \u09b8\u09cd\u099f\u09cb\u09b0 \u09aa\u09be\u09b8\u0993\u09af\u09bc\u09be\u09b0\u09cd\u09a1 +keyAlias=\u0995\u09c0 \u0989\u09aa\u09a8\u09be\u09ae +trustStorePath=\u099f\u09cd\u09b0\u09be\u09b8\u09cd\u099f \u09b8\u09cd\u099f\u09cb\u09b0 \u09aa\u09be\u09a5 +trustStorePassword=\u099f\u09cd\u09b0\u09be\u09b8\u09cd\u099f \u09b8\u09cd\u099f\u09cb\u09b0 \u09aa\u09be\u09b8\u0993\u09af\u09bc\u09be\u09b0\u09cd\u09a1 +xmlConfigFile=\u098f\u0995\u09cd\u09b8\u098f\u09ae\u098f\u09b2 \u0995\u09a8\u09ab\u09bf\u0997\u09be\u09b0\u09c7\u09b6\u09a8 \u09ab\u09be\u0987\u09b2 +enableCORS=Cors \u09b8\u0995\u09cd\u09b7\u09ae \u0995\u09b0\u09c1\u09a8 +title=Title +keywords=\u0995\u09c0\u0993\u09af\u09bc\u09be\u09b0\u09cd\u09a1 +fees=\u09ab\u09bf +accessConstraints=\u0985\u09cd\u09af\u09be\u0995\u09cd\u09b8\u09c7\u09b8 \u09b8\u09c0\u09ae\u09be\u09ac\u09a6\u09cd\u09a7\u09a4\u09be +serviceProvider=\u09aa\u09b0\u09bf\u09b7\u09c7\u09ac\u09be \u09aa\u09cd\u09b0\u09a6\u09be\u09a8\u0995\u09be\u09b0\u09c0 +ogcCapabilitiesInfo=Ogc \u0995\u09cd\u09b7\u09ae\u09a4\u09be \u09a4\u09a5\u09cd\u09af +enableHttpGET=Http Get \u09b8\u0995\u09cd\u09b7\u09ae \u0995\u09b0\u09c1\u09a8 +enableHttpPOST=Http \u09aa\u09cb\u09b8\u09cd\u099f \u09b8\u0995\u09cd\u09b7\u09ae \u0995\u09b0\u09c1\u09a8 +enableSOAP=\u09b8\u09be\u09ac\u09be\u09a8 \u09b8\u0995\u09cd\u09b7\u09ae \u0995\u09b0\u09c1\u09a8 +connectTimeout=\u099f\u09be\u0987\u09ae\u0986\u0989\u099f \u09b8\u0982\u09af\u09cb\u0997 \u0995\u09b0\u09c1\u09a8 +reconnectPeriod=\u09aa\u09bf\u09b0\u09bf\u09af\u09bc\u09a1 \u09aa\u09c1\u09a8\u09b0\u09be\u09af\u09bc \u09b8\u0982\u09af\u09cb\u0997 \u0995\u09b0\u09c1\u09a8 +reconnectAttempts=\u09aa\u09c1\u09a8\u09b0\u09be\u09af\u09bc \u09b8\u0982\u09af\u09cb\u0997\u09c7\u09b0 \u09aa\u09cd\u09b0\u099a\u09c7\u09b7\u09cd\u099f\u09be +deviceID=\u09a1\u09bf\u09ad\u09be\u0987\u09b8 \u0986\u0987\u09a1\u09bf +deviceClass=\u09a1\u09bf\u09ad\u09be\u0987\u09b8 \u0995\u09cd\u09b2\u09be\u09b8 +remoteHost=\u09a6\u09c2\u09b0\u09ac\u09b0\u09cd\u09a4\u09c0 \u09b9\u09cb\u09b8\u09cd\u099f +localAddress=\u09b8\u09cd\u09a5\u09be\u09a8\u09c0\u09af\u09bc \u09a0\u09bf\u0995\u09be\u09a8\u09be +connection=\u09b8\u0982\u09af\u09cb\u0997 +portName=\u09aa\u09cb\u09b0\u09cd\u099f\u09c7\u09b0 \u09a8\u09be\u09ae +baudRate=\u09ac\u09a1 \u09b0\u09c7\u099f +dataBits=\u09a1\u09c7\u099f\u09be \u09ac\u09bf\u099f +stopBits=\u09b8\u09cd\u099f\u09aa \u09ac\u09bf\u099f\u09b8 +parity=\u09b8\u09ae\u09a4\u09be +receiveTimeout=\u099f\u09be\u0987\u09ae\u0986\u0989\u099f \u0997\u09cd\u09b0\u09b9\u09a3 \u0995\u09b0\u09c1\u09a8 +receiveThreshold=\u09a5\u09cd\u09b0\u09c7\u09b6\u09b9\u09cb\u09b2\u09cd\u09a1 \u0997\u09cd\u09b0\u09b9\u09a3 +remotePort=\u09a6\u09c2\u09b0\u09ac\u09b0\u09cd\u09a4\u09c0 \u09aa\u09cb\u09b0\u09cd\u099f +localPort=\u09b8\u09cd\u09a5\u09be\u09a8\u09c0\u09af\u09bc \u09ac\u09a8\u09cd\u09a6\u09b0 +deviceAddress=\u09a1\u09bf\u09ad\u09be\u0987\u09b8\u09c7\u09b0 \u09a0\u09bf\u0995\u09be\u09a8\u09be +deviceName=\u09a1\u09bf\u09ad\u09be\u0987\u09b8\u09c7\u09b0 \u09a8\u09be\u09ae +serviceUuid=\u09b8\u09c7\u09ac\u09be Uuid +user=\u09ac\u09cd\u09af\u09ac\u09b9\u09be\u09b0\u0995\u09be\u09b0\u09c0 +enableTLS=Tls \u09b8\u0995\u09cd\u09b7\u09ae \u0995\u09b0\u09c1\u09a8 +checkReachability=\u09a8\u09be\u0997\u09be\u09b2\u09c7\u09b0 \u0995\u09cd\u09b7\u09ae\u09a4\u09be \u09aa\u09b0\u09c0\u0995\u09cd\u09b7\u09be \u0995\u09b0\u09c1\u09a8 +resourcePath=\u09b8\u09ae\u09cd\u09aa\u09a6 \u09aa\u09a5 +uid=Uid +securityRole=\u09a8\u09bf\u09b0\u09be\u09aa\u09a4\u09cd\u09a4\u09be \u09ad\u09c2\u09ae\u09bf\u0995\u09be +passwordField=\u09aa\u09be\u09b8\u0993\u09af\u09bc\u09be\u09b0\u09cd\u09a1 \u0995\u09cd\u09b7\u09c7\u09a4\u09cd\u09b0 +widgetSet=\u0989\u0987\u099c\u09c7\u099f \u09b8\u09c7\u099f +bundleRepoUrls=\u09ac\u09be\u09a8\u09cd\u09a1\u09c7\u09b2 \u09b0\u09c7\u09aa\u09cb \u0987\u0989\u0986\u09b0\u098f\u09b2 +customPanels=\u0995\u09be\u09b8\u09cd\u099f\u09ae \u09aa\u09cd\u09af\u09be\u09a8\u09c7\u09b2 +customForms=\u0995\u09be\u09b8\u09cd\u099f\u09ae \u09ab\u09b0\u09cd\u09ae +deploymentName=\u09b8\u09cd\u09a5\u09be\u09aa\u09a8\u09be\u09b0 \u09a8\u09be\u09ae +enableLandingPage=\u09b2\u09cd\u09af\u09be\u09a8\u09cd\u09a1\u09bf\u0982 \u09aa\u09c3\u09b7\u09cd\u09a0\u09be \u09b8\u0995\u09cd\u09b7\u09ae \u0995\u09b0\u09c1\u09a8 +configClass=\u0995\u09a8\u09ab\u09bf\u0997\u09be\u09b0 \u0995\u09cd\u09b2\u09be\u09b8 +uiClass=Ui \u0995\u09cd\u09b2\u09be\u09b8 +moduleClass=\u09ae\u09a1\u09bf\u0989\u09b2 \u0995\u09cd\u09b2\u09be\u09b8 + +# Auto-extracted hardcoded UI strings +testLinks1=\u09aa\u09b0\u09c0\u0995\u09cd\u09b7\u09be \u09b2\u09bf\u0999\u09cd\u0995 +uniqueID1=\u0987\u0989\u09a8\u09bf\u0995 \u0986\u0987\u09a1\u09bf +foiIDs1=FOI \u0986\u0987\u09a1\u09bf +version1=\u09b8\u0982\u09b8\u09cd\u0995\u09b0\u09a3 + +Connected\ Systems\ Endpoint=\u09b8\u0982\u09af\u09c1\u0995\u09cd\u09a4 \u09b8\u09bf\u09b8\u09cd\u099f\u09c7\u09ae \u098f\u09a8\u09cd\u09a1\u09aa\u09af\u09bc\u09c7\u09a8\u09cd\u099f +Connected\ Systems\ endpoint\ where\ the\ requests\ are\ sent=\u09b8\u0982\u09af\u09c1\u0995\u09cd\u09a4 \u09b8\u09bf\u09b8\u09cd\u099f\u09c7\u09ae\u09c7\u09b0 \u09b6\u09c7\u09b7 \u09aa\u09af\u09bc\u09c7\u09a8\u09cd\u099f \u09af\u09c7\u0996\u09be\u09a8\u09c7 \u0985\u09a8\u09c1\u09b0\u09cb\u09a7 \u09aa\u09be\u09a0\u09be\u09a8\u09cb \u09b9\u09af\u09bc +Connection\ Settings=\u09b8\u0982\u09af\u09cb\u0997 \u09b8\u09c7\u099f\u09bf\u0982\u09b8 +Custom\ connector\ configurations=\u0995\u09be\u09b8\u09cd\u099f\u09ae \u09b8\u0982\u09af\u09cb\u0997\u0995\u09be\u09b0\u09c0 \u0995\u09a8\u09ab\u09bf\u0997\u09be\u09b0\u09c7\u09b6\u09a8 +Custom\ provider\ configurations=\u0995\u09be\u09b8\u09cd\u099f\u09ae \u09aa\u09cd\u09b0\u09a6\u09be\u09a8\u0995\u09be\u09b0\u09c0 \u0995\u09a8\u09ab\u09bf\u0997\u09be\u09b0\u09c7\u09b6\u09a8 +Database\ ID=\u09a1\u09be\u099f\u09be\u09ac\u09c7\u09b8 \u0986\u0987\u09a1\u09bf +Default\ live\ time-out\ for\ all\ offerings,\ unless\ overriden\ by\ custom\ provider\ settings=\u09b8\u09ae\u09b8\u09cd\u09a4 \u0985\u09ab\u09be\u09b0\u0997\u09c1\u09b2\u09bf\u09b0 \u099c\u09a8\u09cd\u09af \u09a1\u09bf\u09ab\u09b2\u09cd\u099f \u09b2\u09be\u0987\u09ad \u099f\u09be\u0987\u09ae-\u0986\u0989\u099f, \u09af\u09a6\u09bf \u09a8\u09be \u0995\u09be\u09b8\u09cd\u099f\u09ae \u09aa\u09cd\u09b0\u09a6\u09be\u09a8\u0995\u09be\u09b0\u09c0 \u09b8\u09c7\u099f\u09bf\u0982\u09b8 \u09a6\u09cd\u09ac\u09be\u09b0\u09be \u0993\u09ad\u09be\u09b0\u09b0\u09be\u0987\u09a1 \u0995\u09b0\u09be \u09b9\u09af\u09bc\u09f7 +Default\ live\ time-out\ for\ new\ offerings\ created\ via\ SOS-T=SOS-T \u098f\u09b0 \u09ae\u09be\u09a7\u09cd\u09af\u09ae\u09c7 \u09a4\u09c8\u09b0\u09bf \u09a8\u09a4\u09c1\u09a8 \u0985\u09ab\u09be\u09b0\u0997\u09c1\u09b2\u09bf\u09b0 \u099c\u09a8\u09cd\u09af \u09a1\u09bf\u09ab\u09b2\u09cd\u099f \u09b2\u09be\u0987\u09ad \u099f\u09be\u0987\u09ae-\u0986\u0989\u099f\u09f7 +Enable\ to\ use\ a\ persistent\ HTTP\ connection\ for\ InsertResult=InsertResult-\u098f\u09b0 \u099c\u09a8\u09cd\u09af \u098f\u0995\u099f\u09bf \u09b8\u09cd\u09a5\u09be\u09af\u09bc\u09c0 HTTP \u09b8\u0982\u09af\u09cb\u0997 \u09ac\u09cd\u09af\u09ac\u09b9\u09be\u09b0 \u0995\u09b0\u09a4\u09c7 \u09b8\u0995\u09cd\u09b7\u09ae \u0995\u09b0\u09c1\u09a8\u09f7 +Execution\ period\ of\ the\ purge\ policy\ (in\ seconds)=\u09aa\u09b0\u09bf\u09b8\u09cd\u0995\u09be\u09b0 \u09a8\u09c0\u09a4\u09bf\u09b0 \u09b8\u09ae\u09cd\u09aa\u09be\u09a6\u09a8\u09c7\u09b0 \u09b8\u09ae\u09af\u09bc\u0995\u09be\u09b2 (\u09b8\u09c7\u0995\u09c7\u09a8\u09cd\u09a1\u09c7) +Filtered\ view\ to\ select\ systems\ exposed\ as\ read-only\ through\ this\ service=\u098f\u0987 \u09aa\u09b0\u09bf\u09b7\u09c7\u09ac\u09be\u09b0 \u09ae\u09be\u09a7\u09cd\u09af\u09ae\u09c7 \u09b6\u09c1\u09a7\u09c1\u09ae\u09be\u09a4\u09cd\u09b0 \u09aa\u09a0\u09a8 \u09b9\u09bf\u09b8\u09be\u09ac\u09c7 \u0989\u09a8\u09cd\u09ae\u09c1\u0995\u09cd\u09a4 \u09b8\u09bf\u09b8\u09cd\u099f\u09c7\u09ae\u0997\u09c1\u09b2\u09bf \u09a8\u09bf\u09b0\u09cd\u09ac\u09be\u099a\u09a8 \u0995\u09b0\u09a4\u09c7 \u09ab\u09bf\u09b2\u09cd\u099f\u09be\u09b0 \u0995\u09b0\u09be \u09a6\u09c3\u09b6\u09cd\u09af\u09f7 +Filtered\ view\ to\ select\ systems/datastreams\ to\ register\ with\ Connected\ Systems=\u0995\u09be\u09a8\u09c7\u0995\u09cd\u099f\u09c7\u09a1 \u09b8\u09bf\u09b8\u09cd\u099f\u09c7\u09ae\u09c7\u09b0 \u09b8\u09be\u09a5\u09c7 \u09a8\u09bf\u09ac\u09a8\u09cd\u09a7\u09a8\u09c7\u09b0 \u099c\u09a8\u09cd\u09af \u09b8\u09bf\u09b8\u09cd\u099f\u09c7\u09ae/\u09a1\u09c7\u099f\u09be\u09b8\u09cd\u099f\u09cd\u09b0\u09bf\u09ae \u09a8\u09bf\u09b0\u09cd\u09ac\u09be\u099a\u09a8 \u0995\u09b0\u09a4\u09c7 \u09ab\u09bf\u09b2\u09cd\u099f\u09be\u09b0 \u0995\u09b0\u09be \u09ad\u09bf\u0989 +Filtered\ view\ to\ select\ systems/datastreams\ to\ register\ with\ remote\ SOS=\u09a6\u09c2\u09b0\u09ac\u09b0\u09cd\u09a4\u09c0 SOS \u098f\u09b0 \u09b8\u09be\u09a5\u09c7 \u09a8\u09bf\u09ac\u09a8\u09cd\u09a7\u09a8 \u0995\u09b0\u09a4\u09c7 \u09b8\u09bf\u09b8\u09cd\u099f\u09c7\u09ae/\u09a1\u09c7\u099f\u09be\u09b8\u09cd\u099f\u09cd\u09b0\u09bf\u09ae \u09a8\u09bf\u09b0\u09cd\u09ac\u09be\u099a\u09a8 \u0995\u09b0\u09a4\u09c7 \u09ab\u09bf\u09b2\u09cd\u099f\u09be\u09b0 \u0995\u09b0\u09be \u09a6\u09c3\u09b6\u09cd\u09af +Fixed\ system\ location\ in\ EPSG\ 4979\ (WGS84)\ coordinate\ system=EPSG 4979 (WGS84) \u09b8\u09ae\u09a8\u09cd\u09ac\u09af\u09bc \u09b8\u09bf\u09b8\u09cd\u099f\u09c7\u09ae\u09c7 \u09b8\u09cd\u09a5\u09bf\u09b0 \u09b8\u09bf\u09b8\u09cd\u099f\u09c7\u09ae\u09c7\u09b0 \u0985\u09ac\u09b8\u09cd\u09a5\u09be\u09a8 +For\ each\ connection\ or\ reconnection\ attempt,\ the\ client\ will\ wait\ for\ the\ remote\ side\ to\ respond\ until\ this\ timeout\ expires\ (in\ ms)=\u09aa\u09cd\u09b0\u09a4\u09bf\u099f\u09bf \u09b8\u0982\u09af\u09cb\u0997 \u09ac\u09be \u09aa\u09c1\u09a8\u0983\u09b8\u0982\u09af\u09cb\u0997\u09c7\u09b0 \u09aa\u09cd\u09b0\u099a\u09c7\u09b7\u09cd\u099f\u09be\u09b0 \u099c\u09a8\u09cd\u09af, \u0995\u09cd\u09b2\u09be\u09af\u09bc\u09c7\u09a8\u09cd\u099f \u098f\u0987 \u09b8\u09ae\u09af\u09bc\u09b8\u09c0\u09ae\u09be \u09b6\u09c7\u09b7 \u09a8\u09be \u09b9\u0993\u09af\u09bc\u09be \u09aa\u09b0\u09cd\u09af\u09a8\u09cd\u09a4 \u09b0\u09bf\u09ae\u09cb\u099f \u09b8\u09be\u0987\u09a1\u09c7\u09b0 \u09aa\u09cd\u09b0\u09a4\u09bf\u0995\u09cd\u09b0\u09bf\u09af\u09bc\u09be\u09b0 \u099c\u09a8\u09cd\u09af \u0985\u09aa\u09c7\u0995\u09cd\u09b7\u09be \u0995\u09b0\u09ac\u09c7 (\u098f\u09ae\u098f\u09b8\u09c7) +Heading\ (or\ yaw)\ angle\ about\ Z\ axis\ in\ degrees=\u09a1\u09bf\u0997\u09cd\u09b0\u09c0\u09a4\u09c7 Z \u0985\u0995\u09cd\u09b7 \u09b8\u09ae\u09cd\u09aa\u09b0\u09cd\u0995\u09c7 \u09b6\u09bf\u09b0\u09cb\u09a8\u09be\u09ae (\u09ac\u09be \u0987\u09af\u09bc\u09be\u0993) \u0995\u09cb\u09a3 +How\ long\ the\ client\ will\ wait\ after\ connection\ is\ lost\ before\ it\ will\ attempt\ to\ reconnect\ (in\ ms)=\u09b8\u0982\u09af\u09cb\u0997 \u09ac\u09bf\u099a\u09cd\u099b\u09bf\u09a8\u09cd\u09a8 \u09b9\u0993\u09af\u09bc\u09be\u09b0 \u09aa\u09b0\u09c7 \u0995\u09cd\u09b2\u09be\u09af\u09bc\u09c7\u09a8\u09cd\u099f \u0995\u09a4\u0995\u09cd\u09b7\u09a3 \u0985\u09aa\u09c7\u0995\u09cd\u09b7\u09be \u0995\u09b0\u09ac\u09c7 \u09a4\u09be \u09aa\u09c1\u09a8\u09b0\u09be\u09af\u09bc \u09b8\u0982\u09af\u09cb\u0997 \u0995\u09b0\u09be\u09b0 \u099a\u09c7\u09b7\u09cd\u099f\u09be \u0995\u09b0\u09be\u09b0 \u0986\u0997\u09c7 (\u098f\u09ae\u098f\u09b8\u09c7) +ID\ Generator=\u0986\u0987\u09a1\u09bf \u099c\u09c7\u09a8\u09be\u09b0\u09c7\u099f\u09b0 +ID\ of\ database\ module\ used\ for\ persisting\ data\ received\ by\ this\ service.\ If\ none\ is\ provided,\ new\ systems\ registered\ through\ this\ service\ will\ be\ available\ on\ the\ hub,\ but\ with\ no\ persistence\ guarantee\ across\ restarts.=\u09a1\u09c7\u099f\u09be\u09ac\u09c7\u09b8 \u09ae\u09a1\u09bf\u0989\u09b2\u09c7\u09b0 \u0986\u0987\u09a1\u09bf \u098f\u0987 \u09aa\u09b0\u09bf\u09b7\u09c7\u09ac\u09be \u09a6\u09cd\u09ac\u09be\u09b0\u09be \u09aa\u09cd\u09b0\u09be\u09aa\u09cd\u09a4 \u09a1\u09c7\u099f\u09be \u09b8\u09cd\u09a5\u09be\u09af\u09bc\u09c0 \u0995\u09b0\u09be\u09b0 \u099c\u09a8\u09cd\u09af \u09ac\u09cd\u09af\u09ac\u09b9\u09c3\u09a4 \u09b9\u09af\u09bc\u0964 \u09af\u09a6\u09bf \u0995\u09cb\u09a8\u09cb\u099f\u09bf\u0987 \u09aa\u09cd\u09b0\u09a6\u09be\u09a8 \u09a8\u09be \u0995\u09b0\u09be \u09b9\u09af\u09bc, \u098f\u0987 \u09aa\u09b0\u09bf\u09b7\u09c7\u09ac\u09be\u09b0 \u09ae\u09be\u09a7\u09cd\u09af\u09ae\u09c7 \u09a8\u09bf\u09ac\u09a8\u09cd\u09a7\u09bf\u09a4 \u09a8\u09a4\u09c1\u09a8 \u09b8\u09bf\u09b8\u09cd\u099f\u09c7\u09ae\u0997\u09c1\u09b2\u09bf \u09b9\u09be\u09ac\u09c7 \u0989\u09aa\u09b2\u09ac\u09cd\u09a7 \u09b9\u09ac\u09c7, \u0995\u09bf\u09a8\u09cd\u09a4\u09c1 \u09aa\u09c1\u09a8\u09b0\u09be\u09af\u09bc \u0986\u09b0\u09ae\u09cd\u09ad \u0995\u09b0\u09be\u09b0 \u09b8\u09ae\u09af\u09bc \u0995\u09cb\u09a8 \u0985\u09ac\u09bf\u09b0\u09be\u09ae \u0997\u09cd\u09af\u09be\u09b0\u09be\u09a8\u09cd\u099f\u09bf \u099b\u09be\u09a1\u09bc\u09be\u0987\u0964 +ID\ of\ database\ module\ used\ for\ persisting\ data\ received\ by\ this\ service.\ If\ none\ is\ provided,\ new\ systems\ registered\ through\ this\ service\ will\ be\ available\ on\ the\ hub,\ but\ with\ no\ persistence\ guarantee\ across\ restarts.\ Only\ the\ latest\ observation\ from\ each\ datastream\ will\ be\ available\ and\ older\ observations\ will\ be\ discarded=\u09a1\u09c7\u099f\u09be\u09ac\u09c7\u09b8 \u09ae\u09a1\u09bf\u0989\u09b2\u09c7\u09b0 \u0986\u0987\u09a1\u09bf \u098f\u0987 \u09aa\u09b0\u09bf\u09b7\u09c7\u09ac\u09be \u09a6\u09cd\u09ac\u09be\u09b0\u09be \u09aa\u09cd\u09b0\u09be\u09aa\u09cd\u09a4 \u09a1\u09c7\u099f\u09be \u09b8\u09cd\u09a5\u09be\u09af\u09bc\u09c0 \u0995\u09b0\u09be\u09b0 \u099c\u09a8\u09cd\u09af \u09ac\u09cd\u09af\u09ac\u09b9\u09c3\u09a4 \u09b9\u09af\u09bc\u0964 \u09af\u09a6\u09bf \u0995\u09cb\u09a8\u09cb\u099f\u09bf\u0987 \u09aa\u09cd\u09b0\u09a6\u09be\u09a8 \u09a8\u09be \u0995\u09b0\u09be \u09b9\u09af\u09bc, \u098f\u0987 \u09aa\u09b0\u09bf\u09b7\u09c7\u09ac\u09be\u09b0 \u09ae\u09be\u09a7\u09cd\u09af\u09ae\u09c7 \u09a8\u09bf\u09ac\u09a8\u09cd\u09a7\u09bf\u09a4 \u09a8\u09a4\u09c1\u09a8 \u09b8\u09bf\u09b8\u09cd\u099f\u09c7\u09ae\u0997\u09c1\u09b2\u09bf \u09b9\u09be\u09ac\u09c7 \u0989\u09aa\u09b2\u09ac\u09cd\u09a7 \u09b9\u09ac\u09c7, \u0995\u09bf\u09a8\u09cd\u09a4\u09c1 \u09aa\u09c1\u09a8\u09b0\u09be\u09af\u09bc \u0986\u09b0\u09ae\u09cd\u09ad \u0995\u09b0\u09be\u09b0 \u09b8\u09ae\u09af\u09bc \u0995\u09cb\u09a8 \u0985\u09ac\u09bf\u09b0\u09be\u09ae \u0997\u09cd\u09af\u09be\u09b0\u09be\u09a8\u09cd\u099f\u09bf \u099b\u09be\u09a1\u09bc\u09be\u0987\u0964 \u09aa\u09cd\u09b0\u09a4\u09bf\u099f\u09bf \u09a1\u09c7\u099f\u09be\u09b8\u09cd\u099f\u09cd\u09b0\u09bf\u09ae \u09a5\u09c7\u0995\u09c7 \u09b6\u09c1\u09a7\u09c1\u09ae\u09be\u09a4\u09cd\u09b0 \u09b8\u09b0\u09cd\u09ac\u09b6\u09c7\u09b7 \u09aa\u09b0\u09cd\u09af\u09ac\u09c7\u0995\u09cd\u09b7\u09a3 \u0989\u09aa\u09b2\u09ac\u09cd\u09a7 \u09b9\u09ac\u09c7 \u098f\u09ac\u0982 \u09aa\u09c1\u09b0\u09be\u09a8\u09cb \u09aa\u09b0\u09cd\u09af\u09ac\u09c7\u0995\u09cd\u09b7\u09a3 \u09ac\u09be\u09a4\u09bf\u09b2 \u0995\u09b0\u09be \u09b9\u09ac\u09c7 +Individual\ configuration\ of\ sensors\ in\ the\ array\ (will\ override\ common\ configuration)=\u0985\u09cd\u09af\u09be\u09b0\u09c7\u09a4\u09c7 \u09b8\u09c7\u09a8\u09cd\u09b8\u09b0\u0997\u09c1\u09b2\u09bf\u09b0 \u09b8\u09cd\u09ac\u09a4\u09a8\u09cd\u09a4\u09cd\u09b0 \u0995\u09a8\u09ab\u09bf\u0997\u09be\u09b0\u09c7\u09b6\u09a8 (\u09b8\u09be\u09a7\u09be\u09b0\u09a3 \u0995\u09a8\u09ab\u09bf\u0997\u09be\u09b0\u09c7\u09b6\u09a8\u0995\u09c7 \u0993\u09ad\u09be\u09b0\u09b0\u09be\u0987\u09a1 \u0995\u09b0\u09ac\u09c7) +List\ of\ observed\ properties\ URI\ to\ make\ available\ as\ outputs=\u0986\u0989\u099f\u09aa\u09c1\u099f \u09b9\u09bf\u09b8\u09be\u09ac\u09c7 \u0989\u09aa\u09b2\u09ac\u09cd\u09a7 \u0995\u09b0\u09be\u09b0 \u099c\u09a8\u09cd\u09af \u09aa\u09b0\u09cd\u09af\u09ac\u09c7\u0995\u09cd\u09b7\u09a3 \u0995\u09b0\u09be \u09ac\u09c8\u09b6\u09bf\u09b7\u09cd\u099f\u09cd\u09af URI-\u098f\u09b0 \u09a4\u09be\u09b2\u09bf\u0995\u09be +Mapping\ of\ custom\ formats\ mime-types\ to\ custom\ serializer\ classes=\u0995\u09be\u09b8\u09cd\u099f\u09ae \u09b8\u09bf\u09b0\u09bf\u09af\u09bc\u09be\u09b2\u09be\u0987\u099c\u09be\u09b0 \u0995\u09cd\u09b2\u09be\u09b8\u09c7 \u0995\u09be\u09b8\u09cd\u099f\u09ae \u09ab\u09b0\u09ae\u09cd\u09af\u09be\u099f\u09c7\u09b0 \u09ae\u09be\u0987\u09ae-\u099f\u09be\u0987\u09aa \u09ae\u09cd\u09af\u09be\u09aa\u09bf\u0982 +Mappings\ used\ by\ CURIE\ to\ URI\ resolver=CURIE \u09a6\u09cd\u09ac\u09be\u09b0\u09be URI \u09b0\u09c7\u099c\u09b2\u09ad\u09be\u09b0\u09c7 \u09ac\u09cd\u09af\u09ac\u09b9\u09c3\u09a4 \u09ae\u09cd\u09af\u09be\u09aa\u09bf\u0982 +Max\ Limit=\u09b8\u09b0\u09cd\u09ac\u09cb\u099a\u09cd\u099a \u09b8\u09c0\u09ae\u09be +Max\ Observations\ Returned=\u09b8\u09b0\u09cd\u09ac\u09cb\u099a\u09cd\u099a \u09aa\u09b0\u09cd\u09af\u09ac\u09c7\u0995\u09cd\u09b7\u09a3 \u09ab\u09bf\u09b0\u09c7 \u098f\u09b8\u09c7\u099b\u09c7 +Max\ Records\ Returned=\u09b8\u09b0\u09cd\u09ac\u09cb\u099a\u09cd\u099a \u09b0\u09c7\u0995\u09b0\u09cd\u09a1 \u09ab\u09c7\u09b0\u09a4 +Max\ delay\ between\ auto-commit\ execution,\ in\ seconds.\ 0\ to\ disable\ time-based\ auto-commit=\u0985\u099f\u09cb-\u0995\u09ae\u09bf\u099f \u098f\u0995\u09cd\u09b8\u09bf\u0995\u09bf\u0989\u09b6\u09a8\u09c7\u09b0 \u09ae\u09a7\u09cd\u09af\u09c7 \u09b8\u09b0\u09cd\u09ac\u09cb\u099a\u09cd\u099a \u09ac\u09bf\u09b2\u09ae\u09cd\u09ac, \u09b8\u09c7\u0995\u09c7\u09a8\u09cd\u09a1\u09c7\u0964 \u09b8\u09ae\u09af\u09bc-\u09ad\u09bf\u09a4\u09cd\u09a4\u09bf\u0995 \u09b8\u09cd\u09ac\u09af\u09bc\u0982\u0995\u09cd\u09b0\u09bf\u09af\u09bc-\u0995\u09ae\u09bf\u099f \u09a8\u09bf\u09b7\u09cd\u0995\u09cd\u09b0\u09bf\u09af\u09bc \u0995\u09b0\u09a4\u09c7 0 +Maximum\ age\ of\ data\ to\ be\ kept\ in\ storage\ (in\ seconds)=\u09b8\u09cd\u099f\u09cb\u09b0\u09c7\u099c\u09c7 \u09b0\u09be\u0996\u09be \u09a1\u09c7\u099f\u09be\u09b0 \u09b8\u09b0\u09cd\u09ac\u09cb\u099a\u09cd\u099a \u09ac\u09af\u09bc\u09b8 (\u09b8\u09c7\u0995\u09c7\u09a8\u09cd\u09a1\u09c7) +Maximum\ number\ of\ FoI\ IDs\ listed\ in\ capabilities=\u09b8\u09b0\u09cd\u09ac\u09be\u09a7\u09bf\u0995 \u09b8\u0982\u0996\u09cd\u09af\u0995 FoI \u0986\u0987\u09a1\u09bf \u0995\u09cd\u09b7\u09ae\u09a4\u09be \u09a4\u09be\u09b2\u09bf\u0995\u09be\u09ad\u09c1\u0995\u09cd\u09a4 +Maximum\ number\ of\ observations\ returned\ \ by\ a\ historical\ GetObservation\ request\ (for\ each\ selected\ offering)=\u098f\u0995\u099f\u09bf \u0990\u09a4\u09bf\u09b9\u09be\u09b8\u09bf\u0995 GetObservation \u0985\u09a8\u09c1\u09b0\u09cb\u09a7 \u09a6\u09cd\u09ac\u09be\u09b0\u09be \u09aa\u09cd\u09b0\u09a4\u09cd\u09af\u09be\u09ac\u09b0\u09cd\u09a4\u09bf\u09a4 \u09aa\u09b0\u09cd\u09af\u09ac\u09c7\u0995\u09cd\u09b7\u09a3\u09c7\u09b0 \u09b8\u09b0\u09cd\u09ac\u09be\u09a7\u09bf\u0995 \u09b8\u0982\u0996\u09cd\u09af\u09be (\u09aa\u09cd\u09b0\u09a4\u09bf\u099f\u09bf \u09a8\u09bf\u09b0\u09cd\u09ac\u09be\u099a\u09bf\u09a4 \u0985\u09ab\u09be\u09b0\u0997\u09c1\u09b2\u09bf\u09b0 \u099c\u09a8\u09cd\u09af) +Maximum\ number\ of\ records\ in\ upload\ queue\ (used\ to\ compensate\ for\ variable\ bandwidth)=\u0986\u09aa\u09b2\u09cb\u09a1 \u09b8\u09be\u09b0\u09bf\u09a4\u09c7 \u09b0\u09c7\u0995\u09b0\u09cd\u09a1\u09c7\u09b0 \u09b8\u09b0\u09cd\u09ac\u09cb\u099a\u09cd\u099a \u09b8\u0982\u0996\u09cd\u09af\u09be (\u09ad\u09c7\u09b0\u09bf\u09af\u09bc\u09c7\u09ac\u09b2 \u09ac\u09cd\u09af\u09be\u09a8\u09cd\u09a1\u0989\u0987\u09a5\u09c7\u09b0 \u099c\u09a8\u09cd\u09af \u0995\u09cd\u09b7\u09a4\u09bf\u09aa\u09c2\u09b0\u09a3 \u09a6\u09bf\u09a4\u09c7 \u09ac\u09cd\u09af\u09ac\u09b9\u09c3\u09a4) +Maximum\ number\ of\ resources\ returned\ in\ a\ single\ page=\u098f\u0995\u099f\u09bf \u098f\u0995\u0995 \u09aa\u09c3\u09b7\u09cd\u09a0\u09be\u09af\u09bc \u09b8\u09b0\u09cd\u09ac\u09be\u09a7\u09bf\u0995 \u09b8\u0982\u0996\u09cd\u09af\u0995 \u09b8\u09ae\u09cd\u09aa\u09a6 \u09ab\u09c7\u09b0\u09a4 \u09a6\u09c7\u0993\u09af\u09bc\u09be \u09b9\u09af\u09bc\u09c7\u099b\u09c7 +Maximum\ number\ of\ result\ records\ returned\ by\ a\ historical\ GetResult\ request=\u098f\u0995\u099f\u09bf \u0990\u09a4\u09bf\u09b9\u09be\u09b8\u09bf\u0995 GetResult \u0985\u09a8\u09c1\u09b0\u09cb\u09a7 \u09a6\u09cd\u09ac\u09be\u09b0\u09be \u09aa\u09cd\u09b0\u09a4\u09cd\u09af\u09be\u09ac\u09b0\u09cd\u09a4\u09bf\u09a4 \u09ab\u09b2\u09be\u09ab\u09b2 \u09b0\u09c7\u0995\u09b0\u09cd\u09a1\u09c7\u09b0 \u09b8\u09b0\u09cd\u09ac\u09be\u09a7\u09bf\u0995 \u09b8\u0982\u0996\u09cd\u09af\u09be\u09f7 +Maximum\ number\ of\ stream\ errors\ before\ we\ try\ to\ reconnect\ to\ remote\ server=\u0986\u09ae\u09b0\u09be \u09b0\u09bf\u09ae\u09cb\u099f \u09b8\u09be\u09b0\u09cd\u09ad\u09be\u09b0\u09c7 \u09aa\u09c1\u09a8\u09b0\u09be\u09af\u09bc \u09b8\u0982\u09af\u09cb\u0997 \u0995\u09b0\u09be\u09b0 \u099a\u09c7\u09b7\u09cd\u099f\u09be \u0995\u09b0\u09be\u09b0 \u0986\u0997\u09c7 \u09b8\u09b0\u09cd\u09ac\u09be\u09a7\u09bf\u0995 \u09b8\u0982\u0996\u09cd\u09af\u0995 \u09b8\u09cd\u099f\u09cd\u09b0\u09bf\u09ae \u09a4\u09cd\u09b0\u09c1\u099f\u09bf +Memory\ cache\ size\ for\ page\ chunks,\ in\ KB=\u09aa\u09c3\u09b7\u09cd\u09a0\u09be\u09b0 \u0985\u0982\u09b6\u0997\u09c1\u09b2\u09bf\u09b0 \u099c\u09a8\u09cd\u09af \u09ae\u09c7\u09ae\u09b0\u09bf \u0995\u09cd\u09af\u09be\u09b6\u09c7\u09b0 \u0986\u0995\u09be\u09b0, KB-\u09a4\u09c7 +Metadata\ of\ system\ group\ that\ will\ be\ created\ to\ contain\ all\ procedures/sensors\ registered\ through\ this\ service.\ Only\ sensors\ in\ this\ group\ will\ be\ modifiable\ by\ this\ service=\u09b8\u09bf\u09b8\u09cd\u099f\u09c7\u09ae \u0997\u09cd\u09b0\u09c1\u09aa\u09c7\u09b0 \u09ae\u09c7\u099f\u09be\u09a1\u09c7\u099f\u09be \u09af\u09be \u098f\u0987 \u09aa\u09b0\u09bf\u09b7\u09c7\u09ac\u09be\u09b0 \u09ae\u09be\u09a7\u09cd\u09af\u09ae\u09c7 \u09a8\u09bf\u09ac\u09a8\u09cd\u09a7\u09bf\u09a4 \u09b8\u09ae\u09b8\u09cd\u09a4 \u09aa\u09a6\u09cd\u09a7\u09a4\u09bf/\u09b8\u09c7\u09a8\u09cd\u09b8\u09b0 \u09a7\u09be\u09b0\u09a3 \u0995\u09b0\u09be\u09b0 \u099c\u09a8\u09cd\u09af \u09a4\u09c8\u09b0\u09bf \u0995\u09b0\u09be \u09b9\u09ac\u09c7\u0964 \u098f\u0987 \u0997\u09cd\u09b0\u09c1\u09aa\u09c7 \u09b6\u09c1\u09a7\u09c1\u09ae\u09be\u09a4\u09cd\u09b0 \u09b8\u09c7\u09a8\u09cd\u09b8\u09b0 \u098f\u0987 \u09aa\u09b0\u09bf\u09b7\u09c7\u09ac\u09be \u09a6\u09cd\u09ac\u09be\u09b0\u09be \u09aa\u09b0\u09bf\u09ac\u09b0\u09cd\u09a4\u09a8\u09af\u09cb\u0997\u09cd\u09af \u09b9\u09ac\u09c7 +Metadata\ of\ system\ group\ that\ will\ be\ created\ to\ contain\ all\ systems\ registered\ through\ this\ service.\ Only\ systems\ in\ this\ group\ will\ be\ modifiable\ by\ this\ service=\u09b8\u09bf\u09b8\u09cd\u099f\u09c7\u09ae \u0997\u09cd\u09b0\u09c1\u09aa\u09c7\u09b0 \u09ae\u09c7\u099f\u09be\u09a1\u09c7\u099f\u09be \u09af\u09be \u098f\u0987 \u09aa\u09b0\u09bf\u09b7\u09c7\u09ac\u09be\u09b0 \u09ae\u09be\u09a7\u09cd\u09af\u09ae\u09c7 \u09a8\u09bf\u09ac\u09a8\u09cd\u09a7\u09bf\u09a4 \u09b8\u09ae\u09b8\u09cd\u09a4 \u09b8\u09bf\u09b8\u09cd\u099f\u09c7\u09ae \u09a7\u09be\u09b0\u09a3 \u0995\u09b0\u09be\u09b0 \u099c\u09a8\u09cd\u09af \u09a4\u09c8\u09b0\u09bf \u0995\u09b0\u09be \u09b9\u09ac\u09c7\u0964 \u09b6\u09c1\u09a7\u09c1\u09ae\u09be\u09a4\u09cd\u09b0 \u098f\u0987 \u0997\u09cd\u09b0\u09c1\u09aa\u09c7\u09b0 \u09b8\u09bf\u09b8\u09cd\u099f\u09c7\u09ae\u0997\u09c1\u09b2\u09bf \u098f\u0987 \u09aa\u09b0\u09bf\u09b7\u09c7\u09ac\u09be \u09a6\u09cd\u09ac\u09be\u09b0\u09be \u09aa\u09b0\u09bf\u09ac\u09b0\u09cd\u09a4\u09a8\u09af\u09cb\u0997\u09cd\u09af \u09b9\u09ac\u09c7 +Method\ used\ to\ generate\ new\ resource\ IDs=\u09a8\u09a4\u09c1\u09a8 \u09b0\u09bf\u09b8\u09cb\u09b0\u09cd\u09b8 \u0986\u0987\u09a1\u09bf \u09a4\u09c8\u09b0\u09bf \u0995\u09b0\u09a4\u09c7 \u09ac\u09cd\u09af\u09ac\u09b9\u09c3\u09a4 \u09aa\u09a6\u09cd\u09a7\u09a4\u09bf +Minimum\ fillrate\ above\ which\ auto\ compact\ operations\ may\ be\ triggered=\u09a8\u09cd\u09af\u09c2\u09a8\u09a4\u09ae \u09ab\u09bf\u09b2\u09b0\u09c7\u099f \u09af\u09be\u09b0 \u0989\u09aa\u09b0\u09c7 \u09b8\u09cd\u09ac\u09af\u09bc\u0982\u0995\u09cd\u09b0\u09bf\u09af\u09bc \u0995\u09ae\u09aa\u09cd\u09af\u09be\u0995\u09cd\u099f \u0985\u09aa\u09be\u09b0\u09c7\u09b6\u09a8 \u099f\u09cd\u09b0\u09bf\u0997\u09be\u09b0 \u09b9\u09a4\u09c7 \u09aa\u09be\u09b0\u09c7 +Minimum\ period\ between\ database\ commits\ (in\ ms)=\u09a1\u09be\u099f\u09be\u09ac\u09c7\u09b8 \u0995\u09ae\u09bf\u099f\u09c7\u09b0 \u09ae\u09a7\u09cd\u09af\u09c7 \u09a8\u09cd\u09af\u09c2\u09a8\u09a4\u09ae \u09b8\u09ae\u09af\u09bc\u0995\u09be\u09b2 (\u098f\u09ae\u098f\u09b8\u09c7) +Names\ of\ datastreams\ whose\ data\ will\ be\ hidden\ from\ the\ SOS.\ If\ this\ is\ null,\ all\ streams\ produced\ by\ the\ procedure\ are\ exposed=\u09a1\u09c7\u099f\u09be\u09b8\u09cd\u099f\u09cd\u09b0\u09bf\u09ae\u09c7\u09b0 \u09a8\u09be\u09ae \u09af\u09be\u09a6\u09c7\u09b0 \u09a1\u09c7\u099f\u09be SOS \u09a5\u09c7\u0995\u09c7 \u09b2\u09c1\u0995\u09be\u09a8\u09cb \u09b9\u09ac\u09c7\u0964 \u09af\u09a6\u09bf \u098f\u099f\u09bf \u09b6\u09c2\u09a8\u09cd\u09af \u09b9\u09af\u09bc, \u09aa\u09a6\u09cd\u09a7\u09a4\u09bf \u09a6\u09cd\u09ac\u09be\u09b0\u09be \u0989\u09a4\u09cd\u09aa\u09be\u09a6\u09bf\u09a4 \u09b8\u09ae\u09b8\u09cd\u09a4 \u09b8\u09cd\u099f\u09cd\u09b0\u09c0\u09ae \u0989\u09a8\u09cd\u09ae\u09c1\u0995\u09cd\u09a4 \u09b9\u09af\u09bc +Observed\ Properties=\u09aa\u09b0\u09cd\u09af\u09ac\u09c7\u0995\u09cd\u09b7\u09bf\u09a4 \u09ac\u09c8\u09b6\u09bf\u09b7\u09cd\u099f\u09cd\u09af +Offering\ URI\ as\ exposed\ in\ capabilities.\ (if\ null,\ the\ procedure\ UID\ is\ used)=\u0995\u09cd\u09b7\u09ae\u09a4\u09be\u09af\u09bc \u0989\u09a8\u09cd\u09ae\u09c1\u0995\u09cd\u09a4 \u09b9\u09bf\u09b8\u09be\u09ac\u09c7 URI \u0985\u09ab\u09be\u09b0 \u0995\u09b0\u09be\u0964 (\u09af\u09a6\u09bf \u09a8\u09be\u09b2 \u09a5\u09be\u0995\u09c7, \u09aa\u09a6\u09cd\u09a7\u09a4\u09bf UID \u09ac\u09cd\u09af\u09ac\u09b9\u09be\u09b0 \u0995\u09b0\u09be \u09b9\u09af\u09bc) +Offering\ description\ (if\ null,\ it\ will\ be\ auto-generated)=\u0985\u09ab\u09be\u09b0 \u0995\u09b0\u09be\u09b0 \u09ac\u09bf\u09ac\u09b0\u09a3 (\u09af\u09a6\u09bf \u09b6\u09c2\u09a8\u09cd\u09af \u09b9\u09af\u09bc, \u098f\u099f\u09bf \u09b8\u09cd\u09ac\u09af\u09bc\u0982\u0995\u09cd\u09b0\u09bf\u09af\u09bc\u09ad\u09be\u09ac\u09c7 \u09a4\u09c8\u09b0\u09bf \u09b9\u09ac\u09c7) +Offering\ name\ (if\ null,\ the\ procedure\ name\ is\ used)=\u0985\u09ab\u09be\u09b0 \u0995\u09b0\u09be\u09b0 \u09a8\u09be\u09ae (\u09a8\u09be\u09b2 \u09a5\u09be\u0995\u09b2\u09c7 \u09aa\u09a6\u09cd\u09a7\u09a4\u09bf\u09b0 \u09a8\u09be\u09ae \u09ac\u09cd\u09af\u09ac\u09b9\u09be\u09b0 \u0995\u09b0\u09be \u09b9\u09af\u09bc) +Orientation\ as\ Euler\ angles\ in\ NED\ coordinate\ reference\ frame.\nOrder\ of\ rotations\ is\ z-y\u2019-x"\ (in\ rotating\ frame)\ or\ x-y-z\ (in\ fixed\ frame)=NED \u09b8\u09cd\u09a5\u09be\u09a8\u09be\u0999\u09cd\u0995 \u09b0\u09c7\u09ab\u09be\u09b0\u09c7\u09a8\u09cd\u09b8 \u09ab\u09cd\u09b0\u09c7\u09ae\u09c7 \u0985\u09af\u09bc\u09b2\u09be\u09b0 \u0995\u09cb\u09a3 \u09b9\u09bf\u09b8\u09be\u09ac\u09c7 \u0985\u09ad\u09bf\u09af\u09cb\u099c\u09a8\u0964\n\u0998\u09c2\u09b0\u09cd\u09a3\u09a8\u09c7\u09b0 \u0995\u09cd\u09b0\u09ae \u09b9\u09b2 z-y\u2019-x" (\u0998\u09c2\u09b0\u09cd\u09a3\u09be\u09af\u09bc\u09ae\u09be\u09a8 \u09ab\u09cd\u09b0\u09c7\u09ae\u09c7) \u0985\u09a5\u09ac\u09be x-y-z (\u09b8\u09cd\u09a5\u09bf\u09b0 \u09ab\u09cd\u09b0\u09c7\u09ae\u09c7) +Password\ for\ the\ key\ store\ (and\ for\ the\ keypair\ within\ the\ keystore).\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ "javax.net.ssl.keyStorePassword"\ system\ property.\ This\ value\ can\ use\ variable\ expansion\ expressions\ of\ the\ form\ "$${name}"\ (for\ environment\ variables\ and\ system\ properties)\ or\ "$${file;/path/to/file}"\ (for\ secret\ file\ contents).=\u0995\u09c0 \u09b8\u09cd\u099f\u09cb\u09b0\u09c7\u09b0 \u099c\u09a8\u09cd\u09af \u09aa\u09be\u09b8\u0993\u09af\u09bc\u09be\u09b0\u09cd\u09a1 (\u098f\u09ac\u0982 \u0995\u09c0-\u09b8\u09cd\u099f\u09cb\u09b0\u09c7\u09b0 \u09ae\u09a7\u09cd\u09af\u09c7 \u0995\u09c0-\u09aa\u09c7\u09af\u09bc\u09be\u09b0\u09c7\u09b0 \u099c\u09a8\u09cd\u09af)\u0964 \u098f\u0987 \u09ae\u09be\u09a8\u099f\u09bf \u09ab\u09be\u0981\u0995\u09be \u09a5\u09be\u0995\u09b2\u09c7, "javax.net.ssl.keyStorePassword" \u09b8\u09bf\u09b8\u09cd\u099f\u09c7\u09ae \u09b8\u09ae\u09cd\u09aa\u09a4\u09cd\u09a4\u09bf\u09b0 \u09ae\u09be\u09a8 \u09ac\u09cd\u09af\u09ac\u09b9\u09be\u09b0 \u0995\u09b0\u09a4\u09c7 \u09a1\u09bf\u09ab\u09b2\u09cd\u099f \u09b9\u09ac\u09c7\u0964 \u098f\u0987 \u09ae\u09be\u09a8\u099f\u09bf "$${name}" (\u09aa\u09b0\u09bf\u09ac\u09c7\u09b6 \u09ad\u09c7\u09b0\u09bf\u09af\u09bc\u09c7\u09ac\u09b2 \u098f\u09ac\u0982 \u09b8\u09bf\u09b8\u09cd\u099f\u09c7\u09ae \u09ac\u09c8\u09b6\u09bf\u09b7\u09cd\u099f\u09cd\u09af\u09c7\u09b0 \u099c\u09a8\u09cd\u09af) \u09ac\u09be "$${file;/path/to/file}" (\u0997\u09cb\u09aa\u09a8 \u09ab\u09be\u0987\u09b2\u09c7\u09b0 \u09ac\u09bf\u09b7\u09af\u09bc\u09ac\u09b8\u09cd\u09a4\u09c1\u09b0 \u099c\u09a8\u09cd\u09af) \u09ab\u09b0\u09cd\u09ae\u09c7\u09b0 \u09aa\u09b0\u09bf\u09ac\u09b0\u09cd\u09a4\u09a8\u09b6\u09c0\u09b2 \u09b8\u09ae\u09cd\u09aa\u09cd\u09b0\u09b8\u09be\u09b0\u09a3 \u0985\u09ad\u09bf\u09ac\u09cd\u09af\u0995\u09cd\u09a4\u09bf \u09ac\u09cd\u09af\u09ac\u09b9\u09be\u09b0 \u0995\u09b0\u09a4\u09c7 \u09aa\u09be\u09b0\u09c7\u0964 +Password\ for\ the\ trust\ store.\ Ignored\ if\ client\ certificate\ authentication\ is\ not\ used.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ "javax.net.ssl.trustStorePassword"\ system\ property.\ This\ value\ can\ use\ variable\ expansion\ expressions\ of\ the\ form\ "$${name}"\ (for\ environment\ variables\ and\ system\ properties)\ or\ "$${file;/path/to/file}"\ (for\ secret\ file\ contents).=\u099f\u09cd\u09b0\u09be\u09b8\u09cd\u099f \u09b8\u09cd\u099f\u09cb\u09b0\u09c7\u09b0 \u099c\u09a8\u09cd\u09af \u09aa\u09be\u09b8\u0993\u09af\u09bc\u09be\u09b0\u09cd\u09a1\u0964 \u0995\u09cd\u09b2\u09be\u09af\u09bc\u09c7\u09a8\u09cd\u099f \u09b6\u0982\u09b8\u09be\u09aa\u09a4\u09cd\u09b0 \u09aa\u09cd\u09b0\u09ae\u09be\u09a3\u09c0\u0995\u09b0\u09a3 \u09ac\u09cd\u09af\u09ac\u09b9\u09be\u09b0 \u09a8\u09be \u0995\u09b0\u09be \u09b9\u09b2\u09c7 \u0989\u09aa\u09c7\u0995\u09cd\u09b7\u09be \u0995\u09b0\u09be \u09b9\u09af\u09bc\u0964 \u098f\u0987 \u09ae\u09be\u09a8\u099f\u09bf \u09ab\u09be\u0981\u0995\u09be \u09a5\u09be\u0995\u09b2\u09c7, "javax.net.ssl.trustStorePassword" \u09b8\u09bf\u09b8\u09cd\u099f\u09c7\u09ae \u09b8\u09ae\u09cd\u09aa\u09a4\u09cd\u09a4\u09bf\u09b0 \u09ae\u09be\u09a8 \u09ac\u09cd\u09af\u09ac\u09b9\u09be\u09b0 \u0995\u09b0\u09a4\u09c7 \u09a1\u09bf\u09ab\u09b2\u09cd\u099f \u09b9\u09ac\u09c7\u0964 \u098f\u0987 \u09ae\u09be\u09a8\u099f\u09bf "$${name}" (\u09aa\u09b0\u09bf\u09ac\u09c7\u09b6 \u09ad\u09c7\u09b0\u09bf\u09af\u09bc\u09c7\u09ac\u09b2 \u098f\u09ac\u0982 \u09b8\u09bf\u09b8\u09cd\u099f\u09c7\u09ae \u09ac\u09c8\u09b6\u09bf\u09b7\u09cd\u099f\u09cd\u09af\u09c7\u09b0 \u099c\u09a8\u09cd\u09af) \u09ac\u09be "$${file;/path/to/file}" (\u0997\u09cb\u09aa\u09a8 \u09ab\u09be\u0987\u09b2\u09c7\u09b0 \u09ac\u09bf\u09b7\u09af\u09bc\u09ac\u09b8\u09cd\u09a4\u09c1\u09b0 \u099c\u09a8\u09cd\u09af) \u09ab\u09b0\u09cd\u09ae\u09c7\u09b0 \u09aa\u09b0\u09bf\u09ac\u09b0\u09cd\u09a4\u09a8\u09b6\u09c0\u09b2 \u09b8\u09ae\u09cd\u09aa\u09cd\u09b0\u09b8\u09be\u09b0\u09a3 \u0985\u09ad\u09bf\u09ac\u09cd\u09af\u0995\u09cd\u09a4\u09bf \u09ac\u09cd\u09af\u09ac\u09b9\u09be\u09b0 \u0995\u09b0\u09a4\u09c7 \u09aa\u09be\u09b0\u09c7\u0964 +Path\ of\ service\ endpoint\ relative\ to\ the\ context\ URL\ (e.g.\ http\://server.net/sensorhub)=\u09aa\u09cd\u09b0\u09b8\u0999\u09cd\u0997 URL-\u098f\u09b0 \u09b8\u09be\u09aa\u09c7\u0995\u09cd\u09b7\u09c7 \u09aa\u09b0\u09bf\u09b7\u09c7\u09ac\u09be\u09b0 \u09b6\u09c7\u09b7 \u09aa\u09af\u09bc\u09c7\u09a8\u09cd\u099f\u09c7\u09b0 \u09aa\u09a5 (\u09af\u09c7\u09ae\u09a8 http://server.net/sensorhub) +Path\ to\ a\ key\ store\ containing\ the\ certificate\ and\ keypair\ that\ this\ server\ will\ present\ to\ clients\ when\ accessed\ over\ HTTPS.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ "javax.net.ssl.keyStore"\ system\ property.\ This\ value\ can\ use\ variable\ expansion\ expressions\ of\ the\ form\ "$${name}"\ (for\ environment\ variables\ and\ system\ properties)\ or\ "$${file;/path/to/file}"\ (for\ secret\ file\ contents).=HTTPS-\u098f\u09b0 \u09ae\u09be\u09a7\u09cd\u09af\u09ae\u09c7 \u0985\u09cd\u09af\u09be\u0995\u09cd\u09b8\u09c7\u09b8 \u0995\u09b0\u09be\u09b0 \u09b8\u09ae\u09af\u09bc \u098f\u0987 \u09b8\u09be\u09b0\u09cd\u09ad\u09be\u09b0\u099f\u09bf \u0995\u09cd\u09b2\u09be\u09af\u09bc\u09c7\u09a8\u09cd\u099f\u09a6\u09c7\u09b0 \u0995\u09be\u099b\u09c7 \u0989\u09aa\u09b8\u09cd\u09a5\u09be\u09aa\u09a8 \u0995\u09b0\u09ac\u09c7 \u09b6\u0982\u09b8\u09be\u09aa\u09a4\u09cd\u09b0 \u098f\u09ac\u0982 \u0995\u09c0-\u09aa\u09c7\u09af\u09bc\u09be\u09b0 \u09a7\u09be\u09b0\u09a3\u0995\u09be\u09b0\u09c0 \u098f\u0995\u099f\u09bf \u0995\u09c0 \u09b8\u09cd\u099f\u09cb\u09b0\u09c7\u09b0 \u09aa\u09a5\u0964 \u098f\u0987 \u09ae\u09be\u09a8\u099f\u09bf \u09ab\u09be\u0981\u0995\u09be \u09a5\u09be\u0995\u09b2\u09c7, "javax.net.ssl.keyStore" \u09b8\u09bf\u09b8\u09cd\u099f\u09c7\u09ae \u09b8\u09ae\u09cd\u09aa\u09a4\u09cd\u09a4\u09bf\u09b0 \u09ae\u09be\u09a8 \u09ac\u09cd\u09af\u09ac\u09b9\u09be\u09b0 \u0995\u09b0\u09a4\u09c7 \u09a1\u09bf\u09ab\u09b2\u09cd\u099f \u09b9\u09ac\u09c7\u0964 \u098f\u0987 \u09ae\u09be\u09a8\u099f\u09bf "$${name}" (\u09aa\u09b0\u09bf\u09ac\u09c7\u09b6 \u09ad\u09c7\u09b0\u09bf\u09af\u09bc\u09c7\u09ac\u09b2 \u098f\u09ac\u0982 \u09b8\u09bf\u09b8\u09cd\u099f\u09c7\u09ae \u09ac\u09c8\u09b6\u09bf\u09b7\u09cd\u099f\u09cd\u09af\u09c7\u09b0 \u099c\u09a8\u09cd\u09af) \u09ac\u09be "$${file;/path/to/file}" (\u0997\u09cb\u09aa\u09a8 \u09ab\u09be\u0987\u09b2\u09c7\u09b0 \u09ac\u09bf\u09b7\u09af\u09bc\u09ac\u09b8\u09cd\u09a4\u09c1\u09b0 \u099c\u09a8\u09cd\u09af) \u09ab\u09b0\u09cd\u09ae\u09c7\u09b0 \u09aa\u09b0\u09bf\u09ac\u09b0\u09cd\u09a4\u09a8\u09b6\u09c0\u09b2 \u09b8\u09ae\u09cd\u09aa\u09cd\u09b0\u09b8\u09be\u09b0\u09a3 \u0985\u09ad\u09bf\u09ac\u09cd\u09af\u0995\u09cd\u09a4\u09bf \u09ac\u09cd\u09af\u09ac\u09b9\u09be\u09b0 \u0995\u09b0\u09a4\u09c7 \u09aa\u09be\u09b0\u09c7\u0964 +Path\ to\ database\ file=\u09a1\u09be\u099f\u09be\u09ac\u09c7\u09b8 \u09ab\u09be\u0987\u09b2\u09c7\u09b0 \u09aa\u09a5 +Path\ to\ external\ config\ file\ (in\ Jetty\ IOC\ XML\ format)=\u09ac\u09be\u09b9\u09cd\u09af\u09bf\u0995 \u0995\u09a8\u09ab\u09bf\u0997\u09be\u09b0\u09c7\u09b6\u09a8 \u09ab\u09be\u0987\u09b2\u09c7\u09b0 \u09aa\u09a5 (\u099c\u09c7\u099f\u09bf \u0986\u0987\u0993\u09b8\u09bf \u098f\u0995\u09cd\u09b8\u098f\u09ae\u098f\u09b2 \u09ab\u09b0\u09cd\u09ae\u09cd\u09af\u09be\u099f\u09c7) +Path\ to\ the\ TLS\ trust\ store\ that\ is\ used\ when\ client\ authentication\ is\ required.\ Ignored\ if\ client\ certificate\ authentication\ is\ not\ used.\ Certificates\ in\ this\ file\ designate\ the\ signing\ authorities\ for\ client\ certificates\ that\ will\ be\ trusted.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ "javax.net.ssl.trustStore"\ system\ property.\ This\ value\ can\ use\ variable\ expansion\ expressions\ of\ the\ form\ "$${name}"\ (for\ environment\ variables\ and\ system\ properties)\ or\ "$${file;/path/to/file}"\ (for\ secret\ file\ contents).=TLS \u099f\u09cd\u09b0\u09be\u09b8\u09cd\u099f \u09b8\u09cd\u099f\u09cb\u09b0\u09c7\u09b0 \u09aa\u09be\u09a5 \u09af\u09be \u0995\u09cd\u09b2\u09be\u09af\u09bc\u09c7\u09a8\u09cd\u099f \u09aa\u09cd\u09b0\u09ae\u09be\u09a3\u09c0\u0995\u09b0\u09a3\u09c7\u09b0 \u09aa\u09cd\u09b0\u09af\u09bc\u09cb\u099c\u09a8 \u09b9\u09b2\u09c7 \u09ac\u09cd\u09af\u09ac\u09b9\u09c3\u09a4 \u09b9\u09af\u09bc\u0964 \u0995\u09cd\u09b2\u09be\u09af\u09bc\u09c7\u09a8\u09cd\u099f \u09b6\u0982\u09b8\u09be\u09aa\u09a4\u09cd\u09b0 \u09aa\u09cd\u09b0\u09ae\u09be\u09a3\u09c0\u0995\u09b0\u09a3 \u09ac\u09cd\u09af\u09ac\u09b9\u09be\u09b0 \u09a8\u09be \u0995\u09b0\u09be \u09b9\u09b2\u09c7 \u0989\u09aa\u09c7\u0995\u09cd\u09b7\u09be \u0995\u09b0\u09be \u09b9\u09af\u09bc\u0964 \u098f\u0987 \u09ab\u09be\u0987\u09b2\u09c7\u09b0 \u09b6\u0982\u09b8\u09be\u09aa\u09a4\u09cd\u09b0\u0997\u09c1\u09b2\u09bf \u0995\u09cd\u09b2\u09be\u09af\u09bc\u09c7\u09a8\u09cd\u099f \u09b6\u0982\u09b8\u09be\u09aa\u09a4\u09cd\u09b0\u0997\u09c1\u09b2\u09bf\u09b0 \u099c\u09a8\u09cd\u09af \u09b8\u09cd\u09ac\u09be\u0995\u09cd\u09b7\u09b0\u0995\u09be\u09b0\u09c0 \u0995\u09b0\u09cd\u09a4\u09c3\u09aa\u0995\u09cd\u09b7\u0995\u09c7 \u09ae\u09a8\u09cb\u09a8\u09c0\u09a4 \u0995\u09b0\u09c7 \u09af\u09be \u09ac\u09bf\u09b6\u09cd\u09ac\u09b8\u09cd\u09a4 \u09b9\u09ac\u09c7\u09f7 \u098f\u0987 \u09ae\u09be\u09a8\u099f\u09bf \u09ab\u09be\u0981\u0995\u09be \u09a5\u09be\u0995\u09b2\u09c7, "javax.net.ssl.trustStore" \u09b8\u09bf\u09b8\u09cd\u099f\u09c7\u09ae \u09b8\u09ae\u09cd\u09aa\u09a4\u09cd\u09a4\u09bf\u09b0 \u09ae\u09be\u09a8 \u09ac\u09cd\u09af\u09ac\u09b9\u09be\u09b0 \u0995\u09b0\u09a4\u09c7 \u09a1\u09bf\u09ab\u09b2\u09cd\u099f \u09b9\u09ac\u09c7\u0964 \u098f\u0987 \u09ae\u09be\u09a8\u099f\u09bf "$${name}" (\u09aa\u09b0\u09bf\u09ac\u09c7\u09b6 \u09ad\u09c7\u09b0\u09bf\u09af\u09bc\u09c7\u09ac\u09b2 \u098f\u09ac\u0982 \u09b8\u09bf\u09b8\u09cd\u099f\u09c7\u09ae \u09ac\u09c8\u09b6\u09bf\u09b7\u09cd\u099f\u09cd\u09af\u09c7\u09b0 \u099c\u09a8\u09cd\u09af) \u09ac\u09be "$${file;/path/to/file}" (\u0997\u09cb\u09aa\u09a8 \u09ab\u09be\u0987\u09b2\u09c7\u09b0 \u09ac\u09bf\u09b7\u09af\u09bc\u09ac\u09b8\u09cd\u09a4\u09c1\u09b0 \u099c\u09a8\u09cd\u09af) \u09ab\u09b0\u09cd\u09ae\u09c7\u09b0 \u09aa\u09b0\u09bf\u09ac\u09b0\u09cd\u09a4\u09a8\u09b6\u09c0\u09b2 \u09b8\u09ae\u09cd\u09aa\u09cd\u09b0\u09b8\u09be\u09b0\u09a3 \u0985\u09ad\u09bf\u09ac\u09cd\u09af\u0995\u09cd\u09a4\u09bf \u09ac\u09cd\u09af\u09ac\u09b9\u09be\u09b0 \u0995\u09b0\u09a4\u09c7 \u09aa\u09be\u09b0\u09c7\u0964 +Port\ number\ to\ connect\ to\ on\ remote\ host\ (0\ to\ automatically\ select\ a\ port)=\u09a6\u09c2\u09b0\u09ac\u09b0\u09cd\u09a4\u09c0 \u09b9\u09cb\u09b8\u09cd\u099f\u09c7 \u09b8\u0982\u09af\u09cb\u0997 \u0995\u09b0\u09be\u09b0 \u099c\u09a8\u09cd\u09af \u09aa\u09cb\u09b0\u09cd\u099f \u09a8\u09ae\u09cd\u09ac\u09b0 (0 \u09b8\u09cd\u09ac\u09af\u09bc\u0982\u0995\u09cd\u09b0\u09bf\u09af\u09bc\u09ad\u09be\u09ac\u09c7 \u098f\u0995\u099f\u09bf \u09aa\u09cb\u09b0\u09cd\u099f \u09a8\u09bf\u09b0\u09cd\u09ac\u09be\u099a\u09a8 \u0995\u09b0\u09a4\u09c7) +SOS\ Endpoint=\u098f\u09b8\u0993\u098f\u09b8 \u098f\u09a8\u09cd\u09a1\u09aa\u09af\u09bc\u09c7\u09a8\u09cd\u099f +SOS\ endpoint\ to\ fetch\ data\ from=\u098f\u09b8\u0993\u098f\u09b8 \u098f\u09a8\u09cd\u09a1\u09aa\u09af\u09bc\u09c7\u09a8\u09cd\u099f \u09a5\u09c7\u0995\u09c7 \u09a1\u09c7\u099f\u09be \u0986\u09a8\u09be\u09b0 \u099c\u09a8\u09cd\u09af +SOS\ endpoint\ where\ the\ requests\ are\ sent=SOS \u098f\u09a8\u09cd\u09a1\u09aa\u09af\u09bc\u09c7\u09a8\u09cd\u099f \u09af\u09c7\u0996\u09be\u09a8\u09c7 \u0985\u09a8\u09c1\u09b0\u09cb\u09a7 \u09aa\u09be\u09a0\u09be\u09a8\u09cb \u09b9\u09af\u09bc +SPS\ Endpoint=\u098f\u09b8\u09aa\u09bf\u098f\u09b8 \u098f\u09a8\u09cd\u09a1\u09aa\u09af\u09bc\u09c7\u09a8\u09cd\u099f +SPS\ endpoint\ to\ send\ commands\ to=\u0995\u09ae\u09be\u09a8\u09cd\u09a1 \u09aa\u09be\u09a0\u09be\u09a4\u09c7 \u098f\u09b8\u09aa\u09bf\u098f\u09b8 \u098f\u09a8\u09cd\u09a1\u09aa\u09af\u09bc\u09c7\u09a8\u09cd\u099f +Security\ related\ options=\u09a8\u09bf\u09b0\u09be\u09aa\u09a4\u09cd\u09a4\u09be \u09b8\u09ae\u09cd\u09aa\u09b0\u09cd\u0995\u09bf\u09a4 \u09ac\u09bf\u0995\u09b2\u09cd\u09aa +Sensor\ UID=\u09b8\u09c7\u09a8\u09cd\u09b8\u09b0 \u0987\u0989\u0986\u0987\u09a1\u09bf +Set\ if\ WebSocket\ protocol\ should\ be\ used\ to\ get\ streaming\ data\ from\ SOS=SOS \u09a5\u09c7\u0995\u09c7 \u09b8\u09cd\u099f\u09cd\u09b0\u09bf\u09ae\u09bf\u0982 \u09a1\u09c7\u099f\u09be \u09aa\u09c7\u09a4\u09c7 WebSocket \u09aa\u09cd\u09b0\u09cb\u099f\u09cb\u0995\u09b2 \u09ac\u09cd\u09af\u09ac\u09b9\u09be\u09b0 \u0995\u09b0\u09be \u0989\u099a\u09bf\u09a4 \u0995\u09bf\u09a8\u09be \u09a4\u09be \u09b8\u09c7\u099f \u0995\u09b0\u09c1\u09a8 +Set\ if\ offering\ is\ enabled,\ unset\ if\ disabled=\u0985\u09ab\u09be\u09b0 \u09b8\u0995\u09cd\u09b7\u09ae \u09b9\u09b2\u09c7 \u09b8\u09c7\u099f \u0995\u09b0\u09c1\u09a8, \u09a8\u09bf\u09b7\u09cd\u0995\u09cd\u09b0\u09bf\u09af\u09bc \u09a5\u09be\u0995\u09b2\u09c7 \u09b8\u09c7\u099f \u0995\u09b0\u09c1\u09a8 +Set\ if\ websockets\ protocol\ should\ be\ used\ to\ send\ commands\ to\ SPS=SPS-\u098f \u0995\u09ae\u09be\u09a8\u09cd\u09a1 \u09aa\u09be\u09a0\u09be\u09a4\u09c7 \u0993\u09af\u09bc\u09c7\u09ac\u09b8\u0995\u09c7\u099f \u09aa\u09cd\u09b0\u09cb\u099f\u09cb\u0995\u09b2 \u09ac\u09cd\u09af\u09ac\u09b9\u09be\u09b0 \u0995\u09b0\u09be \u09b9\u09ac\u09c7 \u0995\u09bf\u09a8\u09be \u09a4\u09be \u09b8\u09c7\u099f \u0995\u09b0\u09c1\u09a8 +Set\ to\ compact\ the\ database\ file\ when\ the\ database\ module\ is\ stopped\ or\ restarted=\u09a1\u09be\u099f\u09be\u09ac\u09c7\u09b8 \u09ae\u09a1\u09bf\u0989\u09b2 \u09ac\u09a8\u09cd\u09a7 \u09ac\u09be \u09aa\u09c1\u09a8\u0983\u09b8\u09c2\u099a\u09a8\u09be \u09b9\u09b2\u09c7 \u09a1\u09be\u099f\u09be\u09ac\u09c7\u09b8 \u09ab\u09be\u0987\u09b2 \u0995\u09ae\u09cd\u09aa\u09cd\u09af\u09be\u0995\u09cd\u099f \u0995\u09b0\u09a4\u09c7 \u09b8\u09c7\u099f \u0995\u09b0\u09c1\u09a8 +Set\ to\ compress\ underlying\ file\ storage=\u0985\u09a8\u09cd\u09a4\u09b0\u09cd\u09a8\u09bf\u09b9\u09bf\u09a4 \u09ab\u09be\u0987\u09b2 \u09b8\u099e\u09cd\u099a\u09af\u09bc\u09b8\u09cd\u09a5\u09be\u09a8 \u09b8\u0982\u0995\u09c1\u099a\u09bf\u09a4 \u0995\u09b0\u09a4\u09c7 \u09b8\u09c7\u099f \u0995\u09b0\u09c1\u09a8 +Set\ to\ display\ MVStore\ debug\ info\ when\ database\ is\ closed\ (only\ if\ DEBUG\ log\ is\ also\ enabled)=\u09a1\u09be\u099f\u09be\u09ac\u09c7\u09b8 \u09ac\u09a8\u09cd\u09a7 \u09a5\u09be\u0995\u09be \u0985\u09ac\u09b8\u09cd\u09a5\u09be\u09af\u09bc MVStore \u09a1\u09bf\u09ac\u09be\u0997 \u09a4\u09a5\u09cd\u09af \u09aa\u09cd\u09b0\u09a6\u09b0\u09cd\u09b6\u09a8\u09c7\u09b0 \u099c\u09a8\u09cd\u09af \u09b8\u09c7\u099f \u0995\u09b0\u09c1\u09a8 (\u0995\u09c7\u09ac\u09b2\u09ae\u09be\u09a4\u09cd\u09b0 \u09af\u09a6\u09bf \u09a1\u09bf\u09ac\u09be\u0997 \u09b2\u0997\u0993 \u09b8\u0995\u09cd\u09b0\u09bf\u09af\u09bc \u09a5\u09be\u0995\u09c7) +Set\ to\ enable\ spatial\ indexing\ of\ individual\ observations\ sampling\ locations\ (when\ provided)=\u09aa\u09c3\u09a5\u0995 \u09aa\u09b0\u09cd\u09af\u09ac\u09c7\u0995\u09cd\u09b7\u09a3\u09c7\u09b0 \u09a8\u09ae\u09c1\u09a8\u09be \u09b8\u09cd\u09a5\u09be\u09a8\u0997\u09c1\u09b2\u09bf\u09b0 \u09b8\u09cd\u09a5\u09be\u09a8\u09bf\u0995 \u09b8\u09c2\u099a\u09c0\u0995\u09b0\u09a3 \u09b8\u0995\u09cd\u09b7\u09ae \u0995\u09b0\u09a4\u09c7 \u09b8\u09c7\u099f \u0995\u09b0\u09c1\u09a8 (\u09af\u0996\u09a8 \u09aa\u09cd\u09b0\u09a6\u09be\u09a8 \u0995\u09b0\u09be \u09b9\u09af\u09bc) +Set\ to\ open\ the\ database\ as\ read-only=\u09b6\u09c1\u09a7\u09c1\u09ae\u09be\u09a4\u09cd\u09b0 \u09aa\u09a0\u09a8 \u09b9\u09bf\u09b8\u09be\u09ac\u09c7 \u09a1\u09be\u099f\u09be\u09ac\u09c7\u09b8 \u0996\u09c1\u09b2\u09a4\u09c7 \u09b8\u09c7\u099f \u0995\u09b0\u09c1\u09a8 +Set\ to\ true\ to\ enable\ transactional\ operation\ support=\u09b2\u09c7\u09a8\u09a6\u09c7\u09a8 \u0985\u09aa\u09be\u09b0\u09c7\u09b6\u09a8 \u09b8\u09ae\u09b0\u09cd\u09a5\u09a8 \u09b8\u0995\u09cd\u09b7\u09ae \u0995\u09b0\u09a4\u09c7 \u09b8\u09a4\u09cd\u09af \u09b8\u09c7\u099f \u0995\u09b0\u09c1\u09a8\u09f7 +Size\ of\ the\ auto-commit\ write\ buffer,\ in\ KB=KB-\u09a4\u09c7 \u09b8\u09cd\u09ac\u09af\u09bc\u0982\u0995\u09cd\u09b0\u09bf\u09af\u09bc-\u0995\u09ae\u09bf\u099f \u09b2\u09c7\u0996\u09be\u09b0 \u09ac\u09be\u09ab\u09be\u09b0\u09c7\u09b0 \u0986\u0995\u09be\u09b0 +TCP\ port\ where\ server\ will\ listen\ for\ secure\ HTTP\ (HTTPS)\ connections\ (use\ 0\ to\ disable\ HTTPS).=TCP \u09aa\u09cb\u09b0\u09cd\u099f \u09af\u09c7\u0996\u09be\u09a8\u09c7 \u09b8\u09be\u09b0\u09cd\u09ad\u09be\u09b0 \u09b8\u09c1\u09b0\u0995\u09cd\u09b7\u09bf\u09a4 HTTP (HTTPS) \u09b8\u0982\u09af\u09cb\u0997\u09c7\u09b0 \u099c\u09a8\u09cd\u09af \u09b6\u09c1\u09a8\u09ac\u09c7 (HTTPS \u09a8\u09bf\u09b7\u09cd\u0995\u09cd\u09b0\u09bf\u09af\u09bc \u0995\u09b0\u09a4\u09c7 0 \u09ac\u09cd\u09af\u09ac\u09b9\u09be\u09b0 \u0995\u09b0\u09c1\u09a8)\u0964 +TCP\ port\ where\ server\ will\ listen\ for\ unsecure\ HTTP\ connections\ (use\ 0\ to\ disable\ HTTP).=TCP \u09aa\u09cb\u09b0\u09cd\u099f \u09af\u09c7\u0996\u09be\u09a8\u09c7 \u09b8\u09be\u09b0\u09cd\u09ad\u09be\u09b0 \u0985\u09a8\u09bf\u09b0\u09be\u09aa\u09a6 HTTP \u09b8\u0982\u09af\u09cb\u0997\u09c7\u09b0 \u099c\u09a8\u09cd\u09af \u09b6\u09c1\u09a8\u09ac\u09c7 (HTTP \u09a8\u09bf\u09b7\u09cd\u0995\u09cd\u09b0\u09bf\u09af\u09bc \u0995\u09b0\u09a4\u09c7 0 \u09ac\u09cd\u09af\u09ac\u09b9\u09be\u09b0 \u0995\u09b0\u09c1\u09a8)\u0964 +Time-out\ after\ which\ real-time\ requests\ are\ disabled\ if\ no\ more\ measurements\ are\ received\ (in\ seconds).\ Real-time\ is\ reactivated\ as\ soon\ as\ new\ records\ start\ being\ received\ again=\u099f\u09be\u0987\u09ae-\u0986\u0989\u099f \u09af\u09be\u09b0 \u09aa\u09b0\u09c7 \u09b0\u09bf\u09af\u09bc\u09c7\u09b2-\u099f\u09be\u0987\u09ae \u0985\u09a8\u09c1\u09b0\u09cb\u09a7\u0997\u09c1\u09b2\u09bf \u0985\u0995\u09cd\u09b7\u09ae \u0995\u09b0\u09be \u09b9\u09af\u09bc \u09af\u09a6\u09bf \u0986\u09b0 \u0995\u09cb\u09a8\u0993 \u09aa\u09b0\u09bf\u09ae\u09be\u09aa \u09a8\u09be \u09aa\u09be\u0993\u09af\u09bc\u09be \u09af\u09be\u09af\u09bc (\u09b8\u09c7\u0995\u09c7\u09a8\u09cd\u09a1\u09c7)\u0964 \u09a8\u09a4\u09c1\u09a8 \u09b0\u09c7\u0995\u09b0\u09cd\u09a1 \u0986\u09ac\u09be\u09b0 \u09aa\u09be\u0993\u09af\u09bc\u09be \u09b6\u09c1\u09b0\u09c1 \u09b9\u0993\u09af\u09bc\u09be\u09b0 \u09b8\u09be\u09a5\u09c7 \u09b8\u09be\u09a5\u09c7 \u09b0\u09bf\u09af\u09bc\u09c7\u09b2-\u099f\u09be\u0987\u09ae \u09aa\u09c1\u09a8\u09b0\u09be\u09af\u09bc \u09b8\u0995\u09cd\u09b0\u09bf\u09af\u09bc \u0995\u09b0\u09be \u09b9\u09af\u09bc +Time-out\ period\ after\ which\ a\ template\ ID\ reserved\ using\ InsertResultTemplate\ will\ expire\ if\ not\ used\ in\ InsertResult\ requests\ (in\ seconds)=\u099f\u09be\u0987\u09ae-\u0986\u0989\u099f \u09b8\u09ae\u09af\u09bc\u0995\u09be\u09b2 \u09af\u09be\u09b0 \u09aa\u09b0\u09c7 InsertResultTemplate \u09ac\u09cd\u09af\u09ac\u09b9\u09be\u09b0 \u0995\u09b0\u09c7 \u09b8\u0982\u09b0\u0995\u09cd\u09b7\u09bf\u09a4 \u098f\u0995\u099f\u09bf \u099f\u09c7\u09ae\u09aa\u09cd\u09b2\u09c7\u099f \u0986\u0987\u09a1\u09bf \u09ae\u09c7\u09af\u09bc\u09be\u09a6 \u09b6\u09c7\u09b7 \u09b9\u09af\u09bc\u09c7 \u09af\u09be\u09ac\u09c7 \u09af\u09a6\u09bf InsertResult \u0985\u09a8\u09c1\u09b0\u09cb\u09a7\u09c7 \u09ac\u09cd\u09af\u09ac\u09b9\u09be\u09b0 \u09a8\u09be \u0995\u09b0\u09be \u09b9\u09af\u09bc (\u09b8\u09c7\u0995\u09c7\u09a8\u09cd\u09a1\u09c7) +Timeout\ after\ which\ data\ is\ released\ to\ the\ caller\ if\ at\ least\ one\ byte\ was\ received\ (in\ ms)=\u099f\u09be\u0987\u09ae\u0986\u0989\u099f \u09af\u09be\u09b0 \u09aa\u09b0\u09c7 \u0995\u09b2\u0995\u09be\u09b0\u09c0\u09b0 \u0995\u09be\u099b\u09c7 \u09a1\u09c7\u099f\u09be \u09aa\u09cd\u09b0\u0995\u09be\u09b6 \u0995\u09b0\u09be \u09b9\u09af\u09bc \u09af\u09a6\u09bf \u0995\u09ae\u09aa\u0995\u09cd\u09b7\u09c7 \u098f\u0995\u099f\u09bf \u09ac\u09be\u0987\u099f \u09aa\u09be\u0993\u09af\u09bc\u09be \u09af\u09be\u09af\u09bc (\u09ae\u09bf\u09b8\u09c7) +URI\ Prefix\ Map=URI \u0989\u09aa\u09b8\u09b0\u09cd\u0997 \u09ae\u09be\u09a8\u099a\u09bf\u09a4\u09cd\u09b0 +Unique\ ID\ (full\ URN\ or\ only\ suffix)\ to\ use\ for\ the\ sensor\ system\ or\ 'auto'\ to\ use\ the\ UUID\ randomly\ generated\ the\ first\ time\ the\ module\ is\ initialized=\u09b8\u09c7\u09a8\u09cd\u09b8\u09b0 \u09b8\u09bf\u09b8\u09cd\u099f\u09c7\u09ae\u09c7\u09b0 \u099c\u09a8\u09cd\u09af \u09ac\u09cd\u09af\u09ac\u09b9\u09be\u09b0 \u0995\u09b0\u09be\u09b0 \u099c\u09a8\u09cd\u09af \u0985\u09a8\u09a8\u09cd\u09af \u0986\u0987\u09a1\u09bf (\u09b8\u09ae\u09cd\u09aa\u09c2\u09b0\u09cd\u09a3 URN \u09ac\u09be \u09b6\u09c1\u09a7\u09c1\u09ae\u09be\u09a4\u09cd\u09b0 \u09aa\u09cd\u09b0\u09a4\u09cd\u09af\u09af\u09bc) \u09ac\u09be ''\u0985\u099f\u09cb'' \u09ac\u09cd\u09af\u09ac\u09b9\u09be\u09b0 \u0995\u09b0\u09be\u09b0 \u099c\u09a8\u09cd\u09af UUID \u098f\u09b2\u09cb\u09ae\u09c7\u09b2\u09cb\u09ad\u09be\u09ac\u09c7 \u09a4\u09c8\u09b0\u09bf \u0995\u09b0\u09be \u09b9\u09af\u09bc\u09c7\u099b\u09c7 \u09aa\u09cd\u09b0\u09a5\u09ae\u09ac\u09be\u09b0 \u09ae\u09a1\u09bf\u0989\u09b2 \u09b6\u09c1\u09b0\u09c1 \u0995\u09b0\u09be\u09b0 \u09b8\u09ae\u09af\u09bc +Unique\ ID\ of\ a\ system\ that\ this\ configuration\ applies\ to.\nCan\ include\ a\ trailing\ wildcard\ '*'\ to\ match\ several\ systems\ at\ once.=\u098f\u0987 \u0995\u09a8\u09ab\u09bf\u0997\u09be\u09b0\u09c7\u09b6\u09a8 \u09aa\u09cd\u09b0\u09af\u09cb\u099c\u09cd\u09af \u098f\u0995\u099f\u09bf \u09b8\u09bf\u09b8\u09cd\u099f\u09c7\u09ae\u09c7\u09b0 \u0985\u09a8\u09a8\u09cd\u09af ID\u0964\n\u098f\u0995\u09b8\u09be\u09a5\u09c7 \u098f\u0995\u09be\u09a7\u09bf\u0995 \u09b8\u09bf\u09b8\u09cd\u099f\u09c7\u09ae\u09c7\u09b0 \u09b8\u09be\u09a5\u09c7 \u09ae\u09c7\u09b2\u09c7 \u098f\u0995\u099f\u09bf \u099f\u09cd\u09b0\u09c7\u09b2\u09bf\u0982 \u0993\u09af\u09bc\u09be\u0987\u09b2\u09cd\u09a1\u0995\u09be\u09b0\u09cd\u09a1 ''*'' \u0985\u09a8\u09cd\u09a4\u09b0\u09cd\u09ad\u09c1\u0995\u09cd\u09a4 \u0995\u09b0\u09a4\u09c7 \u09aa\u09be\u09b0\u09c7\u0964 +Unique\ ID\ of\ sensor\ to\ connect\ to\ on\ SOS\ and\ SPS\ servers=SOS \u098f\u09ac\u0982 SPS \u09b8\u09be\u09b0\u09cd\u09ad\u09be\u09b0\u09c7 \u09b8\u0982\u09af\u09cb\u0997 \u0995\u09b0\u09be\u09b0 \u099c\u09a8\u09cd\u09af \u09b8\u09c7\u09a8\u09cd\u09b8\u09b0\u09c7\u09b0 \u0985\u09a8\u09a8\u09cd\u09af \u0986\u0987\u09a1\u09bf +Unique\ ID\ of\ system\ that\ this\ configuration\ applies\ to.\nCan\ include\ a\ trailing\ wildcard\ '*'\ to\ match\ several\ systems\ at\ once.=\u098f\u0987 \u0995\u09a8\u09ab\u09bf\u0997\u09be\u09b0\u09c7\u09b6\u09a8 \u09aa\u09cd\u09b0\u09af\u09cb\u099c\u09cd\u09af \u09b8\u09bf\u09b8\u09cd\u099f\u09c7\u09ae\u09c7\u09b0 \u0985\u09a8\u09a8\u09cd\u09af ID\u0964\n\u098f\u0995\u09b8\u09be\u09a5\u09c7 \u098f\u0995\u09be\u09a7\u09bf\u0995 \u09b8\u09bf\u09b8\u09cd\u099f\u09c7\u09ae\u09c7\u09b0 \u09b8\u09be\u09a5\u09c7 \u09ae\u09c7\u09b2\u09c7 \u098f\u0995\u099f\u09bf \u099f\u09cd\u09b0\u09c7\u09b2\u09bf\u0982 \u0993\u09af\u09bc\u09be\u0987\u09b2\u09cd\u09a1\u0995\u09be\u09b0\u09cd\u09a1 ''*'' \u0985\u09a8\u09cd\u09a4\u09b0\u09cd\u09ad\u09c1\u0995\u09cd\u09a4 \u0995\u09b0\u09a4\u09c7 \u09aa\u09be\u09b0\u09c7\u0964 +Use\ WebSockets\ for\ SOS=SOS \u098f\u09b0 \u099c\u09a8\u09cd\u09af WebSockets \u09ac\u09cd\u09af\u09ac\u09b9\u09be\u09b0 \u0995\u09b0\u09c1\u09a8 +Use\ WebSockets\ for\ SPS=SPS \u098f\u09b0 \u099c\u09a8\u09cd\u09af WebSockets \u09ac\u09cd\u09af\u09ac\u09b9\u09be\u09b0 \u0995\u09b0\u09c1\u09a8 + +Node\ ID=\u09a8\u09cb\u09a1 \u0986\u0987\u09a1\u09bf +Stats\ Frequency\ (min)=\u09aa\u09b0\u09bf\u09b8\u0982\u0996\u09cd\u09af\u09be\u09a8 \u09ab\u09cd\u09b0\u09bf\u0995\u09cb\u09af\u09bc\u09c7\u09a8\u09cd\u09b8\u09bf (\u09ae\u09bf\u09a8\u09bf\u099f) +Database\ URL=\u09a1\u09be\u099f\u09be\u09ac\u09c7\u09b8 URL +Database\ Name=\u09a1\u09be\u099f\u09be\u09ac\u09c7\u09b8\u09c7\u09b0 \u09a8\u09be\u09ae +ID\ Generator=\u0986\u0987\u09a1\u09bf \u099c\u09c7\u09a8\u09be\u09b0\u09c7\u099f\u09b0 +Database\ Number=\u09a1\u09be\u099f\u09be\u09ac\u09c7\u09b8 \u09a8\u09ae\u09cd\u09ac\u09b0 +Remote\ Host=\u09a6\u09c2\u09b0\u09ac\u09b0\u09cd\u09a4\u09c0 \u09b9\u09cb\u09b8\u09cd\u099f +Remote\ Port=\u09a6\u09c2\u09b0\u09ac\u09b0\u09cd\u09a4\u09c0 \u09aa\u09cb\u09b0\u09cd\u099f +Lane\ Width\ (m)=\u09b2\u09c7\u09a8\u09c7\u09b0 \u09aa\u09cd\u09b0\u09b8\u09cd\u09a5 (\u09ae\u09bf) +Enable\ EML\ Analysis=EML \u09ac\u09bf\u09b6\u09cd\u09b2\u09c7\u09b7\u09a3 \u09b8\u0995\u09cd\u09b7\u09ae \u0995\u09b0\u09c1\u09a8 +Is\ Collimated=\u0995\u09cb\u09b2\u09bf\u09ae\u09c7\u099f\u09c7\u09a1 \u09b9\u09af\u09bc +Stream\ Path=\u09b8\u09cd\u099f\u09cd\u09b0\u09c0\u09ae \u09aa\u09be\u09a5 +Lane\ Options\ Config=\u09b2\u09c7\u09a8 \u0985\u09aa\u09b6\u09a8 \u0995\u09a8\u09ab\u09bf\u0997\u09be\u09b0\u09c7\u09b6\u09a8 diff --git a/sensorhub-webui-core/src/main/resources/org/sensorhub/ui/i18n/messages_de.properties b/sensorhub-webui-core/src/main/resources/org/sensorhub/ui/i18n/messages_de.properties new file mode 100644 index 0000000000..0eb6d878e5 --- /dev/null +++ b/sensorhub-webui-core/src/main/resources/org/sensorhub/ui/i18n/messages_de.properties @@ -0,0 +1,543 @@ +app.title=OpenSensorHub +tab.sensors=Sensoren +tab.databases=Datenbanken +tab.processing=Verarbeitung +tab.services=Dienste +tab.clients=Kunden +tab.network=Netzwerk +tab.security=Sicherheit +action.shutdown=Herunterfahren +action.logout=Abmelden +action.save=Speichern +action.addModule=Neues Modul hinzuf\u00fcgen +action.addSubmodule=Untermodul hinzuf\u00fcgen +action.removeModule=Modul entfernen +action.removeSubmodule=Untermodul entfernen +action.start=Starten +action.stop=Stoppen +action.restart=Neustarten +action.forceInit=Init erzwingen +action.selectAll=Alle ausw\u00e4hlen +action.deselectAll=Alle abw\u00e4hlen +dialog.shutdown.title=Herunterfahren initiiert... +dialog.shutdown.message=Die Benutzeroberfl\u00e4che reagiert nicht mehr +dialog.shutdown.confirm=Sind Sie sicher, dass Sie den Sensor Hub herunterfahren m\u00f6chten? +dialog.logout.confirm=Sind Sie sicher, dass Sie sich abmelden m\u00f6chten? +dialog.save.confirm=Sind Sie sicher, dass Sie die Konfiguration speichern (und die vorherige \u00fcberschreiben) m\u00f6chten? +msg.configSaved=SensorHub-Konfiguration gespeichert +msg.configSaveError=Konfiguration kann nicht gespeichert werden +dialog.remove.confirm=Sind Sie sicher, dass Sie {0} entfernen m\u00f6chten?
Alle Einstellungen gehen verloren. +msg.removeError={0} konnte nicht entfernt werden +msg.startError={0} konnte nicht gestartet werden +msg.stopError={0} konnte nicht gestoppt werden +msg.restartError={0} konnte nicht neu gestartet werden +msg.reinitError={0} konnte nicht neu initialisiert werden +msg.loadError=Modul kann nicht geladen werden +msg.addSubmoduleError=Untermodul kann nicht hinzugef\u00fcgt werden +about.title=\u00dcber OpenSensorHub +about.desc=Eine Softwareplattform zum Aufbau intelligenter Sensornetzwerke und des Internets der Dinge +about.license=Lizenziert unter Mozilla Public License v2.0 +about.version=Version: +about.build=Build-Nummer: +about.deployment=Bereitstellungsname: +tooltip.shutdown=SensorHub herunterfahren +tooltip.logout=Vom OSH-Knoten abmelden +tooltip.save=SensorHub-Konfiguration speichern +dialog.start.confirm=Sind Sie sicher, dass Sie {0} starten m\u00f6chten? +dialog.stop.confirm=Sind Sie sicher, dass Sie {0} stoppen m\u00f6chten? +dialog.restart.confirm=Sind Sie sicher, dass Sie {0} neu starten m\u00f6chten? +dialog.reinit.confirm=Sind Sie sicher, dass Sie die Neuinitialisierung von {0} erzwingen m\u00f6chten? +backgroundUpdate=Hintergrundaktualisierung +sigmaThreshold=Sigma-Schwellenwert +nuclideIdentification=Nuklid-Identifizierung +tamperAlarm=Manipulationsalarm +occupancySensor=Pr\u00e4senzmelder +stateOfHealth=Gesundheitszustand +soh=SOH +1ScanThisQrCodeWithYourAuthenticatorApp=1. Scannen Sie diesen QR-Code mit Ihrer Authentifizierungs-App: +2EnterThe6digitCodeGeneratedByTheApp=2. Geben Sie den von der App generierten 6-stelligen Code ein: +orEnterThisSecretKeyManually=Oder geben Sie diesen Geheimschl\u00fcssel manuell ein: +loadingBundlesInformation=Bundle-Informationen werden geladen... +loadingPackageInformation=Paketinformationen werden geladen... +arrayComponentNotSupported=Array-Komponente wird nicht unterst\u00fctzt +twofactorAuthentication=Zwei-Faktor-Authentifizierung +installMorePackages=Weitere Pakete installieren... +errorGeneratingQrCode=Fehler beim Generieren des QR-Codes +installMoreModules=Weitere Module installieren... +detailedInstructions=Detaillierte Anweisungen +availableNetworks=Verf\u00fcgbare Netzwerke +processParameters=Prozessparameter +verifyAndEnable=\u00dcberpr\u00fcfen und aktivieren +dataSourceInfo=Informationen zur Datenquelle +detectedDevices=Erkannte Ger\u00e4te +installSelected=Ausgew\u00e4hlte installieren +databaseContent=Datenbankinhalt +itemsPerPage=Artikel pro Seite: +commandInputs=Befehlseingaben +processInputs=Prozesseingaben +providerClass=Anbieterklasse +processName=Prozessname: +configuration=Konfiguration +applyChanges=\u00c4nderungen \u00fcbernehmen +sendCommand=Befehl senden +useAddress=Adresse verwenden +selectNone=W\u00e4hlen Sie \u201eKeine\u201c aus +timeRange=Zeitbereich: +permissions=Berechtigungen +startScan=Starten Sie den Scan +noReadme=Keine README-Datei +stopScan=Stoppen Sie den Scan +reset2fa=2FA zur\u00fccksetzen +previous=Vorherige +useName=Name verwenden +outputs=Ausg\u00e4nge +refresh=Aktualisieren +modify=\u00c4ndern +cancel=Stornieren +logout=Abmelden +remove=Entfernen +verify=Verifizieren +first=Erste +login=Login +last=Zuletzt +view=SICHT +next=N\u00e4chste +stop=Stoppen +add=Hinzuf\u00fcgen +ui.empty=< +ok=OK +1ScanThisQrCodeWithYourAuthenticatorApp1=1. Scannen Sie diesen QR-Code mit Ihrer Authentifizierungs-App: +2EnterThe6digitCodeGeneratedByTheApp1=2. Geben Sie den von der App generierten 6-stelligen Code ein: +orEnterThisSecretKeyManually1=Oder geben Sie diesen Geheimschl\u00fcssel manuell ein: +loadingPackageInformation1=Paketinformationen werden geladen... +loadingBundlesInformation1=Bundle-Informationen werden geladen... +arrayComponentNotSupported1=Array-Komponente wird nicht unterst\u00fctzt +twofactorAuthentication1=Zwei-Faktor-Authentifizierung +errorGeneratingQrCode1=Fehler beim Generieren des QR-Codes +installMorePackages1=Weitere Pakete installieren... +installMoreModules1=Weitere Module installieren... +detailedInstructions1=Detaillierte Anweisungen +processParameters1=Prozessparameter +availableNetworks1=Verf\u00fcgbare Netzwerke +verifyAndEnable1=\u00dcberpr\u00fcfen und aktivieren +databaseContent1=Datenbankinhalt +installSelected1=Ausgew\u00e4hlte installieren +dataSourceInfo1=Informationen zur Datenquelle +detectedDevices1=Erkannte Ger\u00e4te +itemsPerPage1=Artikel pro Seite: +processInputs1=Prozesseingaben +commandInputs1=Befehlseingaben +providerClass1=Anbieterklasse +configuration1=Konfiguration +processName1=Prozessname: +applyChanges1=\u00c4nderungen \u00fcbernehmen +sendCommand1=Befehl senden +timeRange1=Zeitbereich: +useAddress1=Adresse verwenden +permissions1=Berechtigungen +selectNone1=W\u00e4hlen Sie \u201eKeine\u201c aus +startScan1=Starten Sie den Scan +noReadme1=Keine README-Datei +reset2fa1=2FA zur\u00fccksetzen +stopScan1=Stoppen Sie den Scan +useName1=Name verwenden +previous1=Vorherige +refresh1=Aktualisieren +outputs1=Ausg\u00e4nge +cancel1=Stornieren +logout1=Abmelden +modify1=\u00c4ndern +remove1=Entfernen +verify1=Verifizieren +first1=Erste +login1=Login +view1=SICHT +stop1=Stoppen +next1=N\u00e4chste +last1=Zuletzt +add1=Hinzuf\u00fcgen +last2=>> +first2=<< +ok1=OK +next2=> +previous2=< + +pleaseEnterAUserIDFirst1=Bitte geben Sie zun\u00e4chst eine Benutzer-ID ein +reset2FA1=2FA zur\u00fccksetzen +enable2FA1=Aktivieren Sie 2FA +twoFAEnabledSuccessfully1=2FA erfolgreich aktiviert +invalidCode1=Ung\u00fcltiger Code +allowedAndDeniedPermissionsForUsersWithThisRole1=Erlaubte und verweigerte Berechtigungen f\u00fcr Benutzer mit dieser Rolle +manualEntry1=Manuelle Eingabe +toggleAutoRefreshDataOncePerSecond1=Schalten Sie die automatische Datenaktualisierung einmal pro Sekunde um +lookupSystem1=Nachschlagesystem +lookupModule1=Nachschlagemodul +lookupAddress1=Suchadresse +showPassword1=Passwort anzeigen +showHistogram1=Histogramm anzeigen +hideHistogram1=Histogramm ausblenden +reloadDataFromDatabase1=Daten aus der Datenbank neu laden +fois1=FOIs +username1=Benutzername +password1=Passwort +loginFailed1=Fehler bei der Anmeldung +invalidUsernameOrPassword1=Ung\u00fcltiger Benutzername oder Passwort +verificationCode1=Best\u00e4tigungscode +verificationFailed1=\u00dcberpr\u00fcfung fehlgeschlagen +datasource1=Datenquelle +process1=Verfahren +logoutFromOshNode1=Abmelden vom OSH-Knoten +setParameter1=Parameter festlegen +setupTwoFactorAuthentication1=Richten Sie die Zwei-Faktor-Authentifizierung ein + +action.new_item=Neues {0} +Lane\ System=Spursystem +Module\ Class=Modulklasse +Module\ Name=Modulname +Module\ ID=Modul-ID +Description=Beschreibung +SensorML\ URL=SensorML-URL +UniqueID=UniqueID +Last\ Updated=Zuletzt aktualisiert +Auto\ Start=Autostart +Delete\ Data\ on\ Lane\ Removal=Daten zur Spurentfernung l\u00f6schen +Latitude=Breite +Longitude=L\u00e4nge +Altitude=H\u00f6he +Initial\ RPM\ Config=Erste RPM-Konfiguration +Initial\ Camera\ Config=Erstkonfiguration der Kamera +Lane\ Options\ Config=Spuroptionen-Konfig +tab.general=Allgemein +tab.readme=README +Fixed\ Location=Fester Standort +Fixed\ Orientation=Feste Ausrichtung +# Auto-extracted DisplayInfo labels and descriptions +URL\ of\ SensorML\ file\ providing\ the\ base\ description\ of\ the\ sensor=URL der SensorML-Datei mit der Basisbeschreibung des Sensors +Time\ at\ which\ the\ SensorML\ description\ was\ last\ updated=Zeitpunkt, zu dem die SensorML-Beschreibung zuletzt aktualisiert wurde +Geodetic\ latitude,\ in\ degrees=Geod\u00e4tischer Breitengrad in Grad +Longitude,\ in\ degrees=L\u00e4ngengrad in Grad +Height\ above\ ellipsoid,\ in\ meters=H\u00f6he \u00fcber dem Ellipsoid in Metern +X\ coordinate,\ in\ meters=X-Koordinate in Metern +Y\ coordinate,\ in\ meters=Y-Koordinate in Metern +Z\ coordinate,\ in\ meters=Z-Koordinate in Metern +Pitch\ angle\ about\ Y\ axis,\ in\ degrees=Neigungswinkel um die Y-Achse in Grad +Roll\ angle\ about\ X\ axis,\ in\ degrees=Rollwinkel um die X-Achse in Grad +Location\ in\ EPSG\:4979\ coordinate\ reference\ frame=Position im EPSG:4979-Koordinatenreferenzrahmen +Database\ Number=Datenbanknummer +Numerical\ identifier\ of\ the\ database.\ Each\ database\ that\ should\ be\ exposed\ via\ the\ federated\ database\ API\ must\ have\ a\ unique\ number\ on\ the\ sensor\ hub.\ If\ visibility\ through\ the\ federated\ database\ is\ not\ desired,\ it\ can\ be\ omitted.=Numerischer Bezeichner der Datenbank. Jede Datenbank, die \u00fcber die Verbunddatenbank-API verf\u00fcgbar gemacht werden soll, muss eine eindeutige Nummer auf dem Sensor-Hub haben. Wenn die Sichtbarkeit durch die f\u00f6derierte Datenbank nicht erw\u00fcnscht ist, kann sie weggelassen werden. +Enables\ fine-grained\ permission-based\ access\ control\ for\ this\ module=Erm\u00f6glicht eine detaillierte, berechtigungsbasierte Zugriffskontrolle f\u00fcr dieses Modul +Require\ Authentication=Authentifizierung erforderlich +Set\ to\ require\ remote\ users\ to\ be\ authentified\ before\ they\ can\ use\ this\ service=Legen Sie fest, dass Remotebenutzer authentifiziert werden m\u00fcssen, bevor sie diesen Dienst nutzen k\u00f6nnen +Endpoint=Endpunkt +Unique\ local\ ID\ of\ the\ module=Eindeutige lokale ID des Moduls +User\ description\ for\ the\ module=Benutzerbeschreibung f\u00fcr das Modul +Set\ to\ automatically\ start\ the\ module\ when\ it\ is\ loaded=Legen Sie fest, dass das Modul automatisch gestartet wird, wenn es geladen wird +Module\ implementation\ class=Modulimplementierungsklasse +User\ chosen\ name\ for\ the\ module=Vom Benutzer gew\u00e4hlter Name f\u00fcr das Modul +Name\ of\ topic/queue\ to\ use=Name des zu verwendenden Themas/der zu verwendenden Warteschlange +Enable/disable\ writing\ to\ queue=Aktivieren/deaktivieren Sie das Schreiben in die Warteschlange +Enable/disable\ reading\ from\ queue=Lesen aus der Warteschlange aktivieren/deaktivieren +Protocol\ Options=Protokolloptionen +Common\ Configuration=Gemeinsame Konfiguration +Common\ configuration\ for\ sensors\ in\ the\ array=Gemeinsame Konfiguration f\u00fcr Sensoren im Array +Sensors\ Configuration=Sensorkonfiguration +Subsystem\ Config=Subsystemkonfiguration +Configuration\ of\ the\ subsystem=Konfiguration des Subsystems +Relative\ Location=Relativer Standort +Location\ of\ this\ subsystem\ relative\ to\ the\ main\ system\ or\ platform\ reference\ frame=Position dieses Subsystems relativ zum Hauptsystem oder Plattform-Referenzrahmen +Relative\ Orientation=Relative Orientierung +Orientation\ of\ this\ subsystem\ relative\ to\ the\ main\ system\ or\ platform\ reference\ frame=Ausrichtung dieses Subsystems relativ zum Hauptsystem oder Plattform-Referenzrahmen +Fixed\ system\ orientation\ in\ the\ local\ NED\ reference\ frame=Systemausrichtung im lokalen NED-Referenzrahmen korrigiert +Subsystems=Subsysteme +Configuration\ of\ components\ of\ this\ sensor\ system=Konfiguration der Komponenten dieses Sensorsystems +Database\ Config=Datenbankkonfiguration +Configuration\ of\ underlying\ database=Konfiguration der zugrunde liegenden Datenbank +System\ UIDs=System-UIDs +Unique\ IDs\ of\ system\ drivers\ handled\ by\ this\ database=Eindeutige IDs der von dieser Datenbank verwalteten Systemtreiber +Automatic\ Purge\ Policy=Richtlinie zur automatischen Bereinigung +Policy\ for\ automatically\ purging\ historical\ data=Richtlinie zum automatischen L\u00f6schen historischer Daten +Uncheck\ to\ disable\ auto-purge\ temporarily=Deaktivieren Sie das Kontrollk\u00e4stchen, um die automatische Bereinigung vor\u00fcbergehend zu deaktivieren +Purge\ Execution\ Period=Bereinigungsausf\u00fchrungszeitraum +Unique\ IDs\ of\ system\ drivers\ to\ purge=Eindeutige IDs der zu l\u00f6schenden Systemtreiber +Max\ Record\ Age=Maximales Rekordalter +SensorML\ File=SensorML-Datei +Path\ of\ SensorML\ description\ of\ the\ process=Pfad der SensorML-Beschreibung des Prozesses +List\ of\ users\ allowed\ access\ to\ this\ system=Liste der Benutzer, denen der Zugriff auf dieses System gestattet ist +List\ of\ security\ roles=Liste der Sicherheitsrollen +User\ ID=Benutzer-ID +Role\ ID=Rollen-ID +Source\ Database\ ID=Quelldatenbank-ID +ID\ of\ database\ module\ to\ read\ data\ from\ (Federated\ database\ will\ be\ used\ if\ not\ set=ID des Datenbankmoduls, aus dem Daten gelesen werden sollen (F\u00f6derierte Datenbank wird verwendet, wenn nicht festgelegt). +HTTP\ Port=HTTP-Port +HTTPS\ Port=HTTPS-Port +Root\ URL\ where\ static\ web\ content\ will\ be\ served.=Stamm-URL, unter der statische Webinhalte bereitgestellt werden. +Directory\ where\ static\ web\ content\ is\ located.=Verzeichnis, in dem sich statische Webinhalte befinden. +Root\ URL\ where\ the\ server\ will\ accept\ requests.\ This\ will\ be\ the\ prefix\ to\ all\ servlet\ URLs.=Root-URL, unter der der Server Anfragen akzeptiert. Dies ist das Pr\u00e4fix f\u00fcr alle Servlet-URLs. +Proxy\ Base\ URL=Proxy-Basis-URL +Public\ URL\ as\ viewed\ from\ the\ outside\ when\ requests\ transit\ through\ a\ proxy\ server.=\u00d6ffentliche URL, wie sie von au\u00dfen angezeigt wird, wenn Anfragen \u00fcber einen Proxyserver \u00fcbertragen werden. +Authentication\ Method=Authentifizierungsmethode +Method\ used\ to\ authenticate\ users\ on\ this\ server=Methode zur Authentifizierung von Benutzern auf diesem Server +Path\ to\ a\ key\ store\ containing\ the\ certificate\ and\ keypair\ that\ this\ server\ will\ present\ to\ clients\ when\ accessed\ over\ HTTPS.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ \"javax.net.ssl.keyStore\"\ system\ property.\=Path to a key store containing the certificate and keypair that this server will present to clients when accessed over HTTPS. If this value is blank, will default to using the value of the \"javax.net.ssl.keyStore\" system property. +Alias\ for\ the\ public/private\ keypair\ within\ the\ key\ store\ that\ will\ be\ used\ to\ identify\ this\ server.=Alias \u200b\u200bf\u00fcr das \u00f6ffentliche/private Schl\u00fcsselpaar im Schl\u00fcsselspeicher, das zur Identifizierung dieses Servers verwendet wird. +Path\ to\ the\ TLS\ trust\ store\ that\ is\ used\ when\ client\ authentication\ is\ required.\ Ignored\ if\ client\ certificate\ authentication\ is\ not\ used.\ Certificates\ in\ this\ file\ designate\ the\ signing\ authorities\ for\ client\ certificates\ that\ will\ be\ trusted.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ \"javax.net.ssl.trustStore\"\ system\ property.\=Path to the TLS trust store that is used when client authentication is required. Ignored if client certificate authentication is not used. Certificates in this file designate the signing authorities for client certificates that will be trusted. If this value is blank, will default to using the value of the \"javax.net.ssl.trustStore\" system property. +Password\ for\ the\ trust\ store.\ Ignored\ if\ client\ certificate\ authentication\ is\ not\ used.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ \"javax.net.ssl.trustStorePassword\"\ system\ property.\=Password for the trust store. Ignored if client certificate authentication is not used. If this value is blank, will default to using the value of the \"javax.net.ssl.trustStorePassword\" system property. +Enable\ CORS=Aktivieren Sie CORS +Enable\ generation\ of\ CORS\ headers\ to\ allow\ cross-domain\ requests\ from\ browsers=Aktivieren Sie die Generierung von CORS-Headern, um dom\u00e4nen\u00fcbergreifende Anforderungen von Browsern zu erm\u00f6glichen +Capabilities\ Info=Informationen zu den F\u00e4higkeiten +Information\ included\ in\ the\ service\ capabilities\ document=Im Servicef\u00e4higkeitsdokument enthaltene Informationen +Enable\ HTTP\ GET=Aktivieren Sie HTTP GET +Enables/disables\ HTTP\ GET\ bindings\ on\ operations\ that\ support\ it=Aktiviert/deaktiviert HTTP-GET-Bindungen f\u00fcr Vorg\u00e4nge, die dies unterst\u00fctzen +Enable\ HTTP\ POST=Aktivieren Sie HTTP POST +Enables/disables\ HTTP\ POST\ bindings\ on\ operations\ that\ support\ it=Aktiviert/deaktiviert HTTP-POST-Bindungen f\u00fcr Vorg\u00e4nge, die dies unterst\u00fctzen +Enable\ HTTP\ SOAP=Aktivieren Sie HTTP SOAP +Enables/disables\ HTTP\ SOAP\ bindings\ on\ operations\ that\ support\ it=Aktiviert/deaktiviert HTTP-SOAP-Bindungen f\u00fcr Vorg\u00e4nge, die dies unterst\u00fctzen +Connection\ Timeout=Verbindungszeit\u00fcberschreitung +Reconnect\ Period=Wiederverbindungszeitraum +Max\ Reconnect\ Attempts=Max. Wiederverbindungsversuche +Maximum\ number\ of\ times\ the\ client\ will\ attempt\ to\ reconnect\ when\ the\ connection\ is\ not\ available\ or\ lost.\ A\ negative\ value\ means\ that\ there\ is\ no\ limit\ to\ the\ number\ of\ reconnection\ attempts.\ Zero\ means\ not\ to\ attempt\ reconnection.=Maximale Anzahl der Versuche des Clients, die Verbindung wiederherzustellen, wenn die Verbindung nicht verf\u00fcgbar ist oder verloren geht. Ein negativer Wert bedeutet, dass die Anzahl der Wiederverbindungsversuche unbegrenzt ist. Null bedeutet, dass keine erneute Verbindung versucht wird. +IP\ or\ DNS\ name\ of\ remote\ host=IP- oder DNS-Name des Remote-Hosts +IP\ of\ local\ network\ interface\ to\ bind\ to\ or\ 'AUTO'\ to\ select\ it\ automatically=IP der lokalen Netzwerkschnittstelle, an die gebunden werden soll, oder \u201eAUTO\u201c, um sie automatisch auszuw\u00e4hlen +Connection\ Options=Verbindungsoptionen +Serial\ port\ device\ name.\ Usually\ something\ like\ /dev/ttyXXX\ on\ Linux=Ger\u00e4tename des seriellen Ports. Normalerweise so etwas wie /dev/ttyXXX unter Linux +Minimum\ number\ of\ bytes\ to\ receive\ before\ they\ are\ sent\ to\ the\ caller=Mindestanzahl der zu empfangenden Bytes, bevor sie an den Aufrufer gesendet werden +Local\ port\ number\ to\ use\ on\ the\ local\ host=Lokale Portnummer, die auf dem lokalen Host verwendet werden soll +Physical\ address\ of\ Bluetooth\ device\ to\ connect\ to=Physische Adresse des Bluetooth-Ger\u00e4ts, mit dem eine Verbindung hergestellt werden soll +Port\ number\ to\ connect\ to\ on\ remote\ host=Portnummer f\u00fcr die Verbindung auf dem Remote-Host +User\ Name=Benutzername +Remote\ user\ name=Remote-Benutzername +Password=Passwort +Remote\ password=Remote-Passwort +Secure\ communications\ with\ SSL/TLS=Sichere Kommunikation mit SSL/TLS +Enable\ to\ check\ if\ remote\ host\ is\ reachable\ before\ attempting\ further\ operations=Aktivieren Sie diese Option, um zu pr\u00fcfen, ob der Remote-Host erreichbar ist, bevor Sie weitere Vorg\u00e4nge versuchen +Path\ or\ resource\ or\ service\ relative\ to\ server\ root=Pfad oder Ressource oder Dienst relativ zum Serverstamm +Unique\ ID\ of\ system\ group=Eindeutige ID der Systemgruppe +Name\ of\ system\ group=Name der Systemgruppe +Description\ of\ system\ group=Beschreibung der Systemgruppe +List\ of\ bundle\ repository\ URLs=Liste der Bundle-Repository-URLs +A\ human\ readable\ friendly\ identifier\ for\ the\ deployment=Eine f\u00fcr Menschen lesbare benutzerfreundliche Kennung f\u00fcr die Bereitstellung +Enable\ Landing\ Page=Landingpage aktivieren +Enable\ Landing\ Servlet\ to\ redirect\ users\ to\ landing\ page=Aktivieren Sie das Landing Servlet, um Benutzer zur Zielseite weiterzuleiten +Config\ Class=Konfigurationsklasse +Type\ of\ module\ config\ class\ for\ which\ a\ custom\ panel\ must\ be\ generated=Typ der Modulkonfigurationsklasse, f\u00fcr die ein benutzerdefiniertes Panel generiert werden muss +UI\ Class=UI-Klasse +Fully\ qualified\ name\ of\ class\ implementing\ IModuleAdminPanel=Vollqualifizierter Name der Klasse, die IModuleAdminPanel implementiert + +# Auto-extracted property IDs +sensorML=Sensor Ml +lastUpdated=Zuletzt aktualisiert +lat=Lat +lon=Lon +alt=Alt +x=X +y=Y +z=Z +heading=\u00dcberschrift +pitch=Tonh\u00f6he +roll=Rollen +location=Standort +orientation=Orientierung +databaseNum=Datenbanknr +enableAccessControl=Aktivieren Sie die Zugriffskontrolle +requireAuth=Authentifizierung erforderlich +mimeType=Mime-Typ +className=Klassenname +endPoint=Endpunkt +id=Ausweis +description=Beschreibung +autoStart=Autostart +topicName=Themenname +enablePublish=Aktivieren Sie Ver\u00f6ffentlichen +enableSubscribe=Abonnieren aktivieren +protocol=Protokoll +moduleConfigPath=Modulkonfigurationspfad +moduleDataPath=Moduldatenpfad +commonConfig=Gemeinsame Konfiguration +sensors=Sensors +config=Konfig +uniqueID=Eindeutige ID +subsystems=Subsysteme +dbConfig=Datenbankkonfiguration +systemUIDs=System-UIDs +autoPurgeConfig=Automatische Bereinigungskonfiguration +minCommitPeriod=Min. Commit-Zeitraum +enabled=Erm\u00f6glicht +purgePeriod=Bereinigungszeitraum +maxRecordAge=Maximales Rekordalter +users=Benutzer +roles=Rollen +allow=Erlauben +deny=Leugnen +userID=Benutzer-ID +name=Name +password=Passwort +certificate=Zertifikat +twoFactorSecret=Zwei-Faktoren-Geheimnis +isTwoFactorEnabled=Ist Zweifaktor aktiviert +roleID=Rollen-ID +sourceDatabaseId=Quelldatenbank-ID +includeFilter=Filter einschlie\u00dfen +excludeFilter=Filter ausschlie\u00dfen +httpPort=HTTP-Port +httpsPort=HTTPS-Port +staticDocsRootUrl=Stamm-URL f\u00fcr statische Dokumente +staticDocsRootDir=Stammverzeichnis f\u00fcr statische Dokumente +servletsRootUrl=Servlets-Stamm-URL +proxyBaseUrl=Proxy-Basis-URL +authMethod=Authentifizierungsmethode +keyStorePath=Schl\u00fcsselspeicherpfad +keyStorePassword=Schl\u00fcsselspeicher-Passwort +keyAlias=Schl\u00fcsselalias +trustStorePath=Trust Store-Pfad +trustStorePassword=Trust Store-Passwort +xmlConfigFile=XML-Konfigurationsdatei +enableCORS=Cors aktivieren +title=Title +keywords=Schl\u00fcsselw\u00f6rter +fees=Geb\u00fchren +accessConstraints=Zugriffsbeschr\u00e4nkungen +serviceProvider=Dienstleister +ogcCapabilitiesInfo=Informationen zu Ogc-F\u00e4higkeiten +enableHttpGET=Aktivieren Sie HTTP Get +enableHttpPOST=Aktivieren Sie HTTP-Post +enableSOAP=Soap aktivieren +connectTimeout=Verbindungs-Timeout +reconnectPeriod=Wiederverbindungszeitraum +reconnectAttempts=Wiederverbindungsversuche +deviceID=Ger\u00e4te-ID +deviceClass=Ger\u00e4teklasse +remoteHost=Remote-Host +localAddress=Lokale Adresse +connection=Verbindung +portName=Portname +baudRate=Baudrate +dataBits=Datenbits +stopBits=Stoppbits +parity=Parit\u00e4t +receiveTimeout=Zeit\u00fcberschreitung beim Empfang +receiveThreshold=Schwellenwert empfangen +remotePort=Remote-Port +localPort=Lokaler Hafen +deviceAddress=Ger\u00e4teadresse +deviceName=Ger\u00e4tename +serviceUuid=Dienst-UUID +user=Benutzer +enableTLS=Tls aktivieren +checkReachability=\u00dcberpr\u00fcfen Sie die Erreichbarkeit +resourcePath=Ressourcenpfad +uid=Uid +securityRole=Sicherheitsrolle +passwordField=Passwortfeld +widgetSet=Widget-Set +bundleRepoUrls=Bundle-Repo-URLs +customPanels=Benutzerdefinierte Panels +customForms=Benutzerdefinierte Formulare +deploymentName=Bereitstellungsname +enableLandingPage=Landingpage aktivieren +configClass=Konfigurationsklasse +uiClass=Ui-Klasse +moduleClass=Modulklasse + +# Auto-extracted hardcoded UI strings +testLinks1=Testlinks +uniqueID1=Eindeutige ID +foiIDs1=FOI-IDs +version1=Version + +Connected\ Systems\ Endpoint=Endpunkt verbundener Systeme +Connected\ Systems\ endpoint\ where\ the\ requests\ are\ sent=Connected Systems-Endpunkt, an den die Anfragen gesendet werden +Connection\ Settings=Verbindungseinstellungen +Custom\ connector\ configurations=Benutzerdefinierte Steckerkonfigurationen +Custom\ provider\ configurations=Benutzerdefinierte Anbieterkonfigurationen +Database\ ID=Datenbank-ID +Default\ live\ time-out\ for\ all\ offerings,\ unless\ overriden\ by\ custom\ provider\ settings=Standardm\u00e4\u00dfiges Live-Timeout f\u00fcr alle Angebote, sofern es nicht durch benutzerdefinierte Anbietereinstellungen au\u00dfer Kraft gesetzt wird +Default\ live\ time-out\ for\ new\ offerings\ created\ via\ SOS-T=Standardm\u00e4\u00dfiges Live-Timeout f\u00fcr neue Angebote, die \u00fcber SOS-T erstellt wurden +Enable\ to\ use\ a\ persistent\ HTTP\ connection\ for\ InsertResult=Aktivieren Sie diese Option, um eine dauerhafte HTTP-Verbindung f\u00fcr InsertResult zu verwenden +Execution\ period\ of\ the\ purge\ policy\ (in\ seconds)=Ausf\u00fchrungszeitraum der Bereinigungsrichtlinie (in Sekunden) +Filtered\ view\ to\ select\ systems\ exposed\ as\ read-only\ through\ this\ service=Gefilterte Ansicht zur Auswahl von Systemen, die \u00fcber diesen Dienst als schreibgesch\u00fctzt verf\u00fcgbar gemacht werden +Filtered\ view\ to\ select\ systems/datastreams\ to\ register\ with\ Connected\ Systems=Gefilterte Ansicht zur Auswahl von Systemen/Datenstr\u00f6men zur Registrierung bei Connected Systems +Filtered\ view\ to\ select\ systems/datastreams\ to\ register\ with\ remote\ SOS=Gefilterte Ansicht zur Auswahl von Systemen/Datenstr\u00f6men zur Registrierung bei Remote SOS +Fixed\ system\ location\ in\ EPSG\ 4979\ (WGS84)\ coordinate\ system=Fester Systemstandort im Koordinatensystem EPSG 4979 (WGS84). +For\ each\ connection\ or\ reconnection\ attempt,\ the\ client\ will\ wait\ for\ the\ remote\ side\ to\ respond\ until\ this\ timeout\ expires\ (in\ ms)=Bei jedem Verbindungs- oder Wiederverbindungsversuch wartet der Client auf die Antwort der Gegenseite, bis diese Zeit\u00fcberschreitung (in ms) abl\u00e4uft. +Heading\ (or\ yaw)\ angle\ about\ Z\ axis\ in\ degrees=Kurs- (oder Gier-)Winkel um die Z-Achse in Grad +How\ long\ the\ client\ will\ wait\ after\ connection\ is\ lost\ before\ it\ will\ attempt\ to\ reconnect\ (in\ ms)=Wie lange der Client nach einem Verbindungsverlust wartet, bevor er versucht, die Verbindung wiederherzustellen (in ms) +ID\ Generator=ID-Generator +ID\ of\ database\ module\ used\ for\ persisting\ data\ received\ by\ this\ service.\ If\ none\ is\ provided,\ new\ systems\ registered\ through\ this\ service\ will\ be\ available\ on\ the\ hub,\ but\ with\ no\ persistence\ guarantee\ across\ restarts.=ID des Datenbankmoduls, das zum Beibehalten der von diesem Dienst empfangenen Daten verwendet wird. Wenn keine Angabe erfolgt, sind \u00fcber diesen Dienst registrierte neue Systeme auf dem Hub verf\u00fcgbar, jedoch ohne Persistenzgarantie bei Neustarts. +ID\ of\ database\ module\ used\ for\ persisting\ data\ received\ by\ this\ service.\ If\ none\ is\ provided,\ new\ systems\ registered\ through\ this\ service\ will\ be\ available\ on\ the\ hub,\ but\ with\ no\ persistence\ guarantee\ across\ restarts.\ Only\ the\ latest\ observation\ from\ each\ datastream\ will\ be\ available\ and\ older\ observations\ will\ be\ discarded=ID des Datenbankmoduls, das zum Beibehalten der von diesem Dienst empfangenen Daten verwendet wird. Wenn keine Angabe erfolgt, sind \u00fcber diesen Dienst registrierte neue Systeme auf dem Hub verf\u00fcgbar, jedoch ohne Persistenzgarantie bei Neustarts. Von jedem Datenstrom ist nur die neueste Beobachtung verf\u00fcgbar und \u00e4ltere Beobachtungen werden verworfen +Individual\ configuration\ of\ sensors\ in\ the\ array\ (will\ override\ common\ configuration)=Individuelle Konfiguration der Sensoren im Array (\u00fcberschreibt die allgemeine Konfiguration) +List\ of\ observed\ properties\ URI\ to\ make\ available\ as\ outputs=Liste der beobachteten Eigenschaften-URIs, die als Ausgaben verf\u00fcgbar gemacht werden sollen +Mapping\ of\ custom\ formats\ mime-types\ to\ custom\ serializer\ classes=Zuordnung von Mime-Typen benutzerdefinierter Formate zu benutzerdefinierten Serialisierungsklassen +Mappings\ used\ by\ CURIE\ to\ URI\ resolver=Von CURIE verwendete Zuordnungen zum URI-Resolver +Max\ Limit=Maximales Limit +Max\ Observations\ Returned=Maximal zur\u00fcckgegebene Beobachtungen +Max\ Records\ Returned=Maximale Anzahl zur\u00fcckgegebener Datens\u00e4tze +Max\ delay\ between\ auto-commit\ execution,\ in\ seconds.\ 0\ to\ disable\ time-based\ auto-commit=Maximale Verz\u00f6gerung zwischen der Auto-Commit-Ausf\u00fchrung in Sekunden. 0, um die zeitbasierte automatische Festschreibung zu deaktivieren +Maximum\ age\ of\ data\ to\ be\ kept\ in\ storage\ (in\ seconds)=Maximales Alter der im Speicher aufzubewahrenden Daten (in Sekunden) +Maximum\ number\ of\ FoI\ IDs\ listed\ in\ capabilities=Maximale Anzahl der in den Funktionen aufgef\u00fchrten FoI-IDs +Maximum\ number\ of\ observations\ returned\ \ by\ a\ historical\ GetObservation\ request\ (for\ each\ selected\ offering)=Maximale Anzahl von Beobachtungen, die von einer historischen GetObservation-Anfrage zur\u00fcckgegeben werden (f\u00fcr jedes ausgew\u00e4hlte Angebot) +Maximum\ number\ of\ records\ in\ upload\ queue\ (used\ to\ compensate\ for\ variable\ bandwidth)=Maximale Anzahl von Datens\u00e4tzen in der Upload-Warteschlange (wird zum Ausgleich variabler Bandbreite verwendet) +Maximum\ number\ of\ resources\ returned\ in\ a\ single\ page=Maximale Anzahl von Ressourcen, die auf einer einzelnen Seite zur\u00fcckgegeben werden +Maximum\ number\ of\ result\ records\ returned\ by\ a\ historical\ GetResult\ request=Maximale Anzahl von Ergebnisdatens\u00e4tzen, die von einer historischen GetResult-Anfrage zur\u00fcckgegeben werden +Maximum\ number\ of\ stream\ errors\ before\ we\ try\ to\ reconnect\ to\ remote\ server=Maximale Anzahl an Stream-Fehlern, bevor wir versuchen, die Verbindung zum Remote-Server wiederherzustellen +Memory\ cache\ size\ for\ page\ chunks,\ in\ KB=Speichercachegr\u00f6\u00dfe f\u00fcr Seitenbl\u00f6cke, in KB +Metadata\ of\ system\ group\ that\ will\ be\ created\ to\ contain\ all\ procedures/sensors\ registered\ through\ this\ service.\ Only\ sensors\ in\ this\ group\ will\ be\ modifiable\ by\ this\ service=Metadaten der Systemgruppe, die erstellt wird, um alle \u00fcber diesen Dienst registrierten Prozeduren/Sensoren zu enthalten. Nur Sensoren in dieser Gruppe k\u00f6nnen von diesem Dienst ge\u00e4ndert werden +Metadata\ of\ system\ group\ that\ will\ be\ created\ to\ contain\ all\ systems\ registered\ through\ this\ service.\ Only\ systems\ in\ this\ group\ will\ be\ modifiable\ by\ this\ service=Metadaten der Systemgruppe, die erstellt wird, um alle \u00fcber diesen Dienst registrierten Systeme zu enthalten. Nur Systeme in dieser Gruppe k\u00f6nnen von diesem Dienst ge\u00e4ndert werden +Method\ used\ to\ generate\ new\ resource\ IDs=Methode zum Generieren neuer Ressourcen-IDs +Minimum\ fillrate\ above\ which\ auto\ compact\ operations\ may\ be\ triggered=Mindestf\u00fcllrate, oberhalb derer automatische Komprimierungsvorg\u00e4nge ausgel\u00f6st werden k\u00f6nnen +Minimum\ period\ between\ database\ commits\ (in\ ms)=Mindestzeitraum zwischen Datenbank-Commits (in ms) +Names\ of\ datastreams\ whose\ data\ will\ be\ hidden\ from\ the\ SOS.\ If\ this\ is\ null,\ all\ streams\ produced\ by\ the\ procedure\ are\ exposed=Namen von Datenstr\u00f6men, deren Daten vor dem SOS verborgen werden. Wenn dieser Wert null ist, werden alle von der Prozedur erzeugten Streams verf\u00fcgbar gemacht +Observed\ Properties=Beobachtete Eigenschaften +Offering\ URI\ as\ exposed\ in\ capabilities.\ (if\ null,\ the\ procedure\ UID\ is\ used)=Bietet URI wie in den Funktionen verf\u00fcgbar gemacht. (Wenn null, wird die Prozedur-UID verwendet) +Offering\ description\ (if\ null,\ it\ will\ be\ auto-generated)=Angebotsbeschreibung (wenn null, wird sie automatisch generiert) +Offering\ name\ (if\ null,\ the\ procedure\ name\ is\ used)=Angebotsname (wenn null, wird der Prozedurname verwendet) +Orientation\ as\ Euler\ angles\ in\ NED\ coordinate\ reference\ frame.\nOrder\ of\ rotations\ is\ z-y\u2019-x"\ (in\ rotating\ frame)\ or\ x-y-z\ (in\ fixed\ frame)=Orientierung als Euler-Winkel im NED-Koordinatenreferenzrahmen.\nDie Rotationsreihenfolge ist z-y\u2019-x\u201c (im rotierenden Rahmen) oder x-y-z (im festen Rahmen). +Password\ for\ the\ key\ store\ (and\ for\ the\ keypair\ within\ the\ keystore).\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ "javax.net.ssl.keyStorePassword"\ system\ property.\ This\ value\ can\ use\ variable\ expansion\ expressions\ of\ the\ form\ "$${name}"\ (for\ environment\ variables\ and\ system\ properties)\ or\ "$${file;/path/to/file}"\ (for\ secret\ file\ contents).=Passwort f\u00fcr den Schl\u00fcsselspeicher (und f\u00fcr das Schl\u00fcsselpaar innerhalb des Schl\u00fcsselspeichers). Wenn dieser Wert leer ist, wird standardm\u00e4\u00dfig der Wert der Systemeigenschaft \u201ejavax.net.ssl.keyStorePassword\u201c verwendet. Dieser Wert kann Variablenerweiterungsausdr\u00fccke der Form \u201e$${name}\u201c (f\u00fcr Umgebungsvariablen und Systemeigenschaften) oder \u201e$${file;/path/to/file}\u201c (f\u00fcr geheime Dateiinhalte) verwenden. +Password\ for\ the\ trust\ store.\ Ignored\ if\ client\ certificate\ authentication\ is\ not\ used.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ "javax.net.ssl.trustStorePassword"\ system\ property.\ This\ value\ can\ use\ variable\ expansion\ expressions\ of\ the\ form\ "$${name}"\ (for\ environment\ variables\ and\ system\ properties)\ or\ "$${file;/path/to/file}"\ (for\ secret\ file\ contents).=Passwort f\u00fcr den Truststore. Wird ignoriert, wenn die Clientzertifikatauthentifizierung nicht verwendet wird. Wenn dieser Wert leer ist, wird standardm\u00e4\u00dfig der Wert der Systemeigenschaft \u201ejavax.net.ssl.trustStorePassword\u201c verwendet. Dieser Wert kann Variablenerweiterungsausdr\u00fccke der Form \u201e$${name}\u201c (f\u00fcr Umgebungsvariablen und Systemeigenschaften) oder \u201e$${file;/path/to/file}\u201c (f\u00fcr geheime Dateiinhalte) verwenden. +Path\ of\ service\ endpoint\ relative\ to\ the\ context\ URL\ (e.g.\ http\://server.net/sensorhub)=Pfad des Dienstendpunkts relativ zur Kontext-URL (z. B. http://server.net/sensorhub) +Path\ to\ a\ key\ store\ containing\ the\ certificate\ and\ keypair\ that\ this\ server\ will\ present\ to\ clients\ when\ accessed\ over\ HTTPS.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ "javax.net.ssl.keyStore"\ system\ property.\ This\ value\ can\ use\ variable\ expansion\ expressions\ of\ the\ form\ "$${name}"\ (for\ environment\ variables\ and\ system\ properties)\ or\ "$${file;/path/to/file}"\ (for\ secret\ file\ contents).=Pfad zu einem Schl\u00fcsselspeicher, der das Zertifikat und das Schl\u00fcsselpaar enth\u00e4lt, die dieser Server den Clients pr\u00e4sentiert, wenn \u00fcber HTTPS darauf zugegriffen wird. Wenn dieser Wert leer ist, wird standardm\u00e4\u00dfig der Wert der Systemeigenschaft \u201ejavax.net.ssl.keyStore\u201c verwendet. Dieser Wert kann Variablenerweiterungsausdr\u00fccke der Form \u201e$${name}\u201c (f\u00fcr Umgebungsvariablen und Systemeigenschaften) oder \u201e$${file;/path/to/file}\u201c (f\u00fcr geheime Dateiinhalte) verwenden. +Path\ to\ database\ file=Pfad zur Datenbankdatei +Path\ to\ external\ config\ file\ (in\ Jetty\ IOC\ XML\ format)=Pfad zur externen Konfigurationsdatei (im Jetty IOC XML-Format) +Path\ to\ the\ TLS\ trust\ store\ that\ is\ used\ when\ client\ authentication\ is\ required.\ Ignored\ if\ client\ certificate\ authentication\ is\ not\ used.\ Certificates\ in\ this\ file\ designate\ the\ signing\ authorities\ for\ client\ certificates\ that\ will\ be\ trusted.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ "javax.net.ssl.trustStore"\ system\ property.\ This\ value\ can\ use\ variable\ expansion\ expressions\ of\ the\ form\ "$${name}"\ (for\ environment\ variables\ and\ system\ properties)\ or\ "$${file;/path/to/file}"\ (for\ secret\ file\ contents).=Pfad zum TLS-Truststore, der verwendet wird, wenn eine Clientauthentifizierung erforderlich ist. Wird ignoriert, wenn die Clientzertifikatauthentifizierung nicht verwendet wird. Die Zertifikate in dieser Datei geben die Signierungsstellen f\u00fcr vertrauensw\u00fcrdige Client-Zertifikate an. Wenn dieser Wert leer ist, wird standardm\u00e4\u00dfig der Wert der Systemeigenschaft \u201ejavax.net.ssl.trustStore\u201c verwendet. Dieser Wert kann Variablenerweiterungsausdr\u00fccke der Form \u201e$${name}\u201c (f\u00fcr Umgebungsvariablen und Systemeigenschaften) oder \u201e$${file;/path/to/file}\u201c (f\u00fcr geheime Dateiinhalte) verwenden. +Port\ number\ to\ connect\ to\ on\ remote\ host\ (0\ to\ automatically\ select\ a\ port)=Portnummer f\u00fcr die Verbindung auf dem Remote-Host (0, um automatisch einen Port auszuw\u00e4hlen) +SOS\ Endpoint=SOS-Endpunkt +SOS\ endpoint\ to\ fetch\ data\ from=SOS-Endpunkt, von dem Daten abgerufen werden sollen +SOS\ endpoint\ where\ the\ requests\ are\ sent=SOS-Endpunkt, an den die Anfragen gesendet werden +SPS\ Endpoint=SPS-Endpunkt +SPS\ endpoint\ to\ send\ commands\ to=SPS-Endpunkt, an den Befehle gesendet werden sollen +Security\ related\ options=Sicherheitsbezogene Optionen +Sensor\ UID=Sensor-UID +Set\ if\ WebSocket\ protocol\ should\ be\ used\ to\ get\ streaming\ data\ from\ SOS=Legen Sie fest, ob das WebSocket-Protokoll zum Abrufen von Streaming-Daten von SOS verwendet werden soll +Set\ if\ offering\ is\ enabled,\ unset\ if\ disabled=Wird gesetzt, wenn das Angebot aktiviert ist, und deaktiviert, wenn es deaktiviert ist +Set\ if\ websockets\ protocol\ should\ be\ used\ to\ send\ commands\ to\ SPS=Legen Sie fest, ob das Websockets-Protokoll zum Senden von Befehlen an SPS verwendet werden soll +Set\ to\ compact\ the\ database\ file\ when\ the\ database\ module\ is\ stopped\ or\ restarted=Legen Sie fest, dass die Datenbankdatei komprimiert wird, wenn das Datenbankmodul gestoppt oder neu gestartet wird +Set\ to\ compress\ underlying\ file\ storage=Legen Sie fest, dass der zugrunde liegende Dateispeicher komprimiert wird +Set\ to\ display\ MVStore\ debug\ info\ when\ database\ is\ closed\ (only\ if\ DEBUG\ log\ is\ also\ enabled)=Legen Sie fest, dass MVStore-Debuginformationen angezeigt werden, wenn die Datenbank geschlossen ist (nur wenn das DEBUG-Protokoll ebenfalls aktiviert ist). +Set\ to\ enable\ spatial\ indexing\ of\ individual\ observations\ sampling\ locations\ (when\ provided)=Wird festgelegt, um die r\u00e4umliche Indizierung einzelner Beobachtungsstichprobenorte zu erm\u00f6glichen (sofern vorhanden). +Set\ to\ open\ the\ database\ as\ read-only=Legen Sie fest, dass die Datenbank schreibgesch\u00fctzt ge\u00f6ffnet werden soll +Set\ to\ true\ to\ enable\ transactional\ operation\ support=Auf \u201etrue\u201c setzen, um die Unterst\u00fctzung transaktionaler Vorg\u00e4nge zu aktivieren +Size\ of\ the\ auto-commit\ write\ buffer,\ in\ KB=Gr\u00f6\u00dfe des Auto-Commit-Schreibpuffers in KB +TCP\ port\ where\ server\ will\ listen\ for\ secure\ HTTP\ (HTTPS)\ connections\ (use\ 0\ to\ disable\ HTTPS).=TCP-Port, an dem der Server auf sichere HTTP-Verbindungen (HTTPS) wartet (verwenden Sie 0, um HTTPS zu deaktivieren). +TCP\ port\ where\ server\ will\ listen\ for\ unsecure\ HTTP\ connections\ (use\ 0\ to\ disable\ HTTP).=TCP-Port, an dem der Server auf unsichere HTTP-Verbindungen wartet (verwenden Sie 0, um HTTP zu deaktivieren). +Time-out\ after\ which\ real-time\ requests\ are\ disabled\ if\ no\ more\ measurements\ are\ received\ (in\ seconds).\ Real-time\ is\ reactivated\ as\ soon\ as\ new\ records\ start\ being\ received\ again=Zeit\u00fcberschreitung, nach der Echtzeitanfragen deaktiviert werden, wenn keine weiteren Messungen empfangen werden (in Sekunden). Sobald wieder neue Datens\u00e4tze empfangen werden, wird die Echtzeit wieder aktiviert +Time-out\ period\ after\ which\ a\ template\ ID\ reserved\ using\ InsertResultTemplate\ will\ expire\ if\ not\ used\ in\ InsertResult\ requests\ (in\ seconds)=Timeout-Zeitraum, nach dem eine mit InsertResultTemplate reservierte Vorlagen-ID abl\u00e4uft, wenn sie nicht in InsertResult-Anfragen verwendet wird (in Sekunden) +Timeout\ after\ which\ data\ is\ released\ to\ the\ caller\ if\ at\ least\ one\ byte\ was\ received\ (in\ ms)=Timeout, nach dem Daten an den Aufrufer freigegeben werden, wenn mindestens ein Byte empfangen wurde (in ms) +URI\ Prefix\ Map=URI-Pr\u00e4fixzuordnung +Unique\ ID\ (full\ URN\ or\ only\ suffix)\ to\ use\ for\ the\ sensor\ system\ or\ 'auto'\ to\ use\ the\ UUID\ randomly\ generated\ the\ first\ time\ the\ module\ is\ initialized=Eindeutige ID (vollst\u00e4ndige URN oder nur Suffix) zur Verwendung f\u00fcr das Sensorsystem oder \u201eauto\u201c, um die UUID zu verwenden, die bei der ersten Initialisierung des Moduls zuf\u00e4llig generiert wird +Unique\ ID\ of\ a\ system\ that\ this\ configuration\ applies\ to.\nCan\ include\ a\ trailing\ wildcard\ '*'\ to\ match\ several\ systems\ at\ once.=Eindeutige ID eines Systems, f\u00fcr das diese Konfiguration gilt.\nKann einen abschlie\u00dfenden Platzhalter \u201e*\u201c enthalten, um mehrere Systeme gleichzeitig abzugleichen. +Unique\ ID\ of\ sensor\ to\ connect\ to\ on\ SOS\ and\ SPS\ servers=Eindeutige ID des Sensors, mit dem auf SOS- und SPS-Servern eine Verbindung hergestellt werden soll +Unique\ ID\ of\ system\ that\ this\ configuration\ applies\ to.\nCan\ include\ a\ trailing\ wildcard\ '*'\ to\ match\ several\ systems\ at\ once.=Eindeutige ID des Systems, f\u00fcr das diese Konfiguration gilt.\nKann einen abschlie\u00dfenden Platzhalter \u201e*\u201c enthalten, um mehrere Systeme gleichzeitig abzugleichen. +Use\ WebSockets\ for\ SOS=Verwenden Sie WebSockets f\u00fcr SOS +Use\ WebSockets\ for\ SPS=Verwenden Sie WebSockets f\u00fcr SPS + +Node\ ID=Knoten-ID +Stats\ Frequency\ (min)=Statistikh\u00e4ufigkeit (min.) +Database\ URL=Datenbank-URL +Database\ Name=Datenbankname +ID\ Generator=ID-Generator +Database\ Number=Datenbanknummer +Remote\ Host=Remote-Host +Remote\ Port=Remote-Port +Lane\ Width\ (m)=Fahrspurbreite (m) +Enable\ EML\ Analysis=Aktivieren Sie die EML-Analyse +Is\ Collimated=Ist kollimiert +Stream\ Path=Stream-Pfad +Lane\ Options\ Config=Spuroptionen-Konfig diff --git a/sensorhub-webui-core/src/main/resources/org/sensorhub/ui/i18n/messages_es.properties b/sensorhub-webui-core/src/main/resources/org/sensorhub/ui/i18n/messages_es.properties new file mode 100644 index 0000000000..dbfedb67f9 --- /dev/null +++ b/sensorhub-webui-core/src/main/resources/org/sensorhub/ui/i18n/messages_es.properties @@ -0,0 +1,543 @@ +app.title=OpenSensorHub +tab.sensors=Sensores +tab.databases=Bases de datos +tab.processing=Procesamiento +tab.services=Servicios +tab.clients=Clientes +tab.network=Red +tab.security=Seguridad +action.shutdown=Apagar +action.logout=Cerrar sesi\u00f3n +action.save=Guardar +action.addModule=A\u00f1adir nuevo m\u00f3dulo +action.addSubmodule=A\u00f1adir subm\u00f3dulo +action.removeModule=Eliminar m\u00f3dulo +action.removeSubmodule=Eliminar subm\u00f3dulo +action.start=Iniciar +action.stop=Detener +action.restart=Reiniciar +action.forceInit=Forzar inicio +action.selectAll=Seleccionar todos +action.deselectAll=Deseleccionar todos +dialog.shutdown.title=Apagado iniciado... +dialog.shutdown.message=La interfaz dejar\u00e1 de responder +dialog.shutdown.confirm=\u00bfEst\u00e1 seguro de que desea apagar el concentrador de sensores? +dialog.logout.confirm=\u00bfEst\u00e1 seguro de que desea cerrar sesi\u00f3n? +dialog.save.confirm=\u00bfEst\u00e1 seguro de que desea guardar la configuraci\u00f3n (y sobrescribir la anterior)? +msg.configSaved=Configuraci\u00f3n de SensorHub guardada +msg.configSaveError=No se puede guardar la configuraci\u00f3n +dialog.remove.confirm=\u00bfEst\u00e1 seguro de que desea eliminar {0}?
Se perder\u00e1n todos los ajustes. +msg.removeError=No se pudo eliminar {0} +msg.startError=No se pudo iniciar {0} +msg.stopError=No se pudo detener {0} +msg.restartError=No se pudo reiniciar {0} +msg.reinitError=No se pudo reinicializar {0} +msg.loadError=No se puede cargar el m\u00f3dulo +msg.addSubmoduleError=No se puede a\u00f1adir el subm\u00f3dulo +about.title=Acerca de OpenSensorHub +about.desc=Una plataforma de software para construir redes de sensores inteligentes e Internet de las Cosas +about.license=Licenciado bajo Mozilla Public License v2.0 +about.version=Versi\u00f3n: +about.build=N\u00famero de compilaci\u00f3n: +about.deployment=Nombre de despliegue: +tooltip.shutdown=Apagar SensorHub +tooltip.logout=Cerrar sesi\u00f3n en nodo OSH +tooltip.save=Guardar configuraci\u00f3n SensorHub +dialog.start.confirm=\u00bfEst\u00e1 seguro de que desea iniciar {0}? +dialog.stop.confirm=\u00bfEst\u00e1 seguro de que desea detener {0}? +dialog.restart.confirm=\u00bfEst\u00e1 seguro de que desea reiniciar {0}? +dialog.reinit.confirm=\u00bfEst\u00e1 seguro de que desea forzar el reinicio de {0}? +backgroundUpdate=Actualizaci\u00f3n en segundo plano +sigmaThreshold=Umbral Sigma +nuclideIdentification=Identificaci\u00f3n de nucleidos +tamperAlarm=Alarma de manipulaci\u00f3n +occupancySensor=Sensor de ocupaci\u00f3n +stateOfHealth=Estado de salud +soh=SOL +1ScanThisQrCodeWithYourAuthenticatorApp=1. Escanee este c\u00f3digo QR con su aplicaci\u00f3n de autenticaci\u00f3n: +2EnterThe6digitCodeGeneratedByTheApp=2. Ingresa el c\u00f3digo de 6 d\u00edgitos generado por la aplicaci\u00f3n: +orEnterThisSecretKeyManually=O ingrese esta clave secreta manualmente: +loadingBundlesInformation=Cargando informaci\u00f3n de paquetes... +loadingPackageInformation=Cargando informaci\u00f3n del paquete... +arrayComponentNotSupported=Componente de matriz no compatible +twofactorAuthentication=Autenticaci\u00f3n de dos factores +installMorePackages=Instalar m\u00e1s paquetes... +errorGeneratingQrCode=Error al generar el c\u00f3digo QR +installMoreModules=Instalar m\u00e1s m\u00f3dulos... +detailedInstructions=Instrucciones detalladas +availableNetworks=Redes disponibles +processParameters=Par\u00e1metros del proceso +verifyAndEnable=Verificar y habilitar +dataSourceInfo=Informaci\u00f3n de fuente de datos +detectedDevices=Dispositivos detectados +installSelected=Instalar seleccionado +databaseContent=Contenido de la base de datos +itemsPerPage=Art\u00edculos por p\u00e1gina: +commandInputs=Entradas de comando +processInputs=Entradas del proceso +providerClass=Clase de proveedor +processName=Nombre del proceso: +configuration=Configuraci\u00f3n +applyChanges=Aplicar cambios +sendCommand=Enviar comando +useAddress=Usar direcci\u00f3n +selectNone=Seleccionar Ninguno +timeRange=Rango de tiempo: +permissions=Permisos +startScan=Iniciar escaneo +noReadme=Sin L\u00c9AME +stopScan=Detener escaneo +reset2fa=Restablecer 2FA +previous=Anterior +useName=Usar nombre +outputs=Salidas +refresh=Refrescar +modify=Modificar +cancel=Cancelar +logout=Cerrar sesi\u00f3n +remove=Eliminar +verify=Verificar +first=Primero +login=Acceso +last=\u00daltimo +view=VISTA +next=Pr\u00f3ximo +stop=Detener +add=Agregar +ui.empty=< +ok=DE ACUERDO +1ScanThisQrCodeWithYourAuthenticatorApp1=1. Escanee este c\u00f3digo QR con su aplicaci\u00f3n de autenticaci\u00f3n: +2EnterThe6digitCodeGeneratedByTheApp1=2. Ingresa el c\u00f3digo de 6 d\u00edgitos generado por la aplicaci\u00f3n: +orEnterThisSecretKeyManually1=O ingrese esta clave secreta manualmente: +loadingPackageInformation1=Cargando informaci\u00f3n del paquete... +loadingBundlesInformation1=Cargando informaci\u00f3n de paquetes... +arrayComponentNotSupported1=Componente de matriz no compatible +twofactorAuthentication1=Autenticaci\u00f3n de dos factores +errorGeneratingQrCode1=Error al generar el c\u00f3digo QR +installMorePackages1=Instalar m\u00e1s paquetes... +installMoreModules1=Instalar m\u00e1s m\u00f3dulos... +detailedInstructions1=Instrucciones detalladas +processParameters1=Par\u00e1metros del proceso +availableNetworks1=Redes disponibles +verifyAndEnable1=Verificar y habilitar +databaseContent1=Contenido de la base de datos +installSelected1=Instalar seleccionado +dataSourceInfo1=Informaci\u00f3n de fuente de datos +detectedDevices1=Dispositivos detectados +itemsPerPage1=Art\u00edculos por p\u00e1gina: +processInputs1=Entradas del proceso +commandInputs1=Entradas de comando +providerClass1=Clase de proveedor +configuration1=Configuraci\u00f3n +processName1=Nombre del proceso: +applyChanges1=Aplicar cambios +sendCommand1=Enviar comando +timeRange1=Rango de tiempo: +useAddress1=Usar direcci\u00f3n +permissions1=Permisos +selectNone1=Seleccionar Ninguno +startScan1=Iniciar escaneo +noReadme1=Sin L\u00c9AME +reset2fa1=Restablecer 2FA +stopScan1=Detener escaneo +useName1=Usar nombre +previous1=Anterior +refresh1=Refrescar +outputs1=Salidas +cancel1=Cancelar +logout1=Cerrar sesi\u00f3n +modify1=Modificar +remove1=Eliminar +verify1=Verificar +first1=Primero +login1=Acceso +view1=VISTA +stop1=Detener +next1=Pr\u00f3ximo +last1=\u00daltimo +add1=Agregar +last2=>> +first2=<< +ok1=DE ACUERDO +next2=> +previous2=< + +pleaseEnterAUserIDFirst1=Primero ingrese una identificaci\u00f3n de usuario +reset2FA1=Restablecer 2FA +enable2FA1=Habilitar 2FA +twoFAEnabledSuccessfully1=2FA habilitado con \u00e9xito +invalidCode1=C\u00f3digo no v\u00e1lido +allowedAndDeniedPermissionsForUsersWithThisRole1=Permisos permitidos y denegados para usuarios con este rol +manualEntry1=Entrada manual +toggleAutoRefreshDataOncePerSecond1=Alternar la actualizaci\u00f3n autom\u00e1tica de datos una vez por segundo +lookupSystem1=Sistema de b\u00fasqueda +lookupModule1=M\u00f3dulo de b\u00fasqueda +lookupAddress1=Direcci\u00f3n de b\u00fasqueda +showPassword1=Mostrar contrase\u00f1a +showHistogram1=Mostrar histograma +hideHistogram1=Ocultar histograma +reloadDataFromDatabase1=Recargar datos de la base de datos. +fois1=FOI +username1=Nombre de usuario +password1=Contrase\u00f1a +loginFailed1=Error de inicio de sesion +invalidUsernameOrPassword1=Nombre de usuario o contrase\u00f1a no v\u00e1lidos +verificationCode1=C\u00f3digo de verificaci\u00f3n +verificationFailed1=Verificaci\u00f3n fallida +datasource1=Fuente de datos +process1=Proceso +logoutFromOshNode1=Cerrar sesi\u00f3n en el nodo OSH +setParameter1=Establecer par\u00e1metro +setupTwoFactorAuthentication1=Configurar la autenticaci\u00f3n de dos factores + +action.new_item=Nuevo {0} +Lane\ System=Sistema de carriles +Module\ Class=Clase de m\u00f3dulo +Module\ Name=Nombre del m\u00f3dulo +Module\ ID=ID del m\u00f3dulo +Description=Descripci\u00f3n +SensorML\ URL=URL de SensorML +UniqueID=ID \u00fanico +Last\ Updated=\u00daltima actualizaci\u00f3n +Auto\ Start=Inicio autom\u00e1tico +Delete\ Data\ on\ Lane\ Removal=Eliminar datos sobre la eliminaci\u00f3n del carril +Latitude=Latitud +Longitude=Longitud +Altitude=Altitud +Initial\ RPM\ Config=Configuraci\u00f3n inicial de RPM +Initial\ Camera\ Config=Configuraci\u00f3n inicial de la c\u00e1mara +Lane\ Options\ Config=Configuraci\u00f3n de opciones de carril +tab.general=General +tab.readme=L\u00c9AME +Fixed\ Location=Ubicaci\u00f3n fija +Fixed\ Orientation=Orientaci\u00f3n fija +# Auto-extracted DisplayInfo labels and descriptions +URL\ of\ SensorML\ file\ providing\ the\ base\ description\ of\ the\ sensor=URL del archivo SensorML que proporciona la descripci\u00f3n b\u00e1sica del sensor +Time\ at\ which\ the\ SensorML\ description\ was\ last\ updated=Hora a la que se actualiz\u00f3 por \u00faltima vez la descripci\u00f3n de SensorML +Geodetic\ latitude,\ in\ degrees=Latitud geod\u00e9sica, en grados. +Longitude,\ in\ degrees=Longitud, en grados +Height\ above\ ellipsoid,\ in\ meters=Altura sobre el elipsoide, en metros +X\ coordinate,\ in\ meters=Coordenada X, en metros +Y\ coordinate,\ in\ meters=Coordenada Y, en metros +Z\ coordinate,\ in\ meters=Coordenada Z, en metros +Pitch\ angle\ about\ Y\ axis,\ in\ degrees=\u00c1ngulo de paso respecto del eje Y, en grados +Roll\ angle\ about\ X\ axis,\ in\ degrees=\u00c1ngulo de balanceo alrededor del eje X, en grados +Location\ in\ EPSG\:4979\ coordinate\ reference\ frame=Ubicaci\u00f3n en EPSG: marco de referencia de coordenadas 4979 +Database\ Number=N\u00famero de base de datos +Numerical\ identifier\ of\ the\ database.\ Each\ database\ that\ should\ be\ exposed\ via\ the\ federated\ database\ API\ must\ have\ a\ unique\ number\ on\ the\ sensor\ hub.\ If\ visibility\ through\ the\ federated\ database\ is\ not\ desired,\ it\ can\ be\ omitted.=Identificador num\u00e9rico de la base de datos. Cada base de datos que deba exponerse a trav\u00e9s de la API de la base de datos federada debe tener un n\u00famero \u00fanico en el centro de sensores. Si no se desea la visibilidad a trav\u00e9s de la base de datos federada, se puede omitir. +Enables\ fine-grained\ permission-based\ access\ control\ for\ this\ module=Habilita el control de acceso detallado basado en permisos para este m\u00f3dulo +Require\ Authentication=Requerir autenticaci\u00f3n +Set\ to\ require\ remote\ users\ to\ be\ authentified\ before\ they\ can\ use\ this\ service=Configurado para requerir que los usuarios remotos est\u00e9n autenticados antes de que puedan usar este servicio +Endpoint=Punto final +Unique\ local\ ID\ of\ the\ module=ID local \u00fanica del m\u00f3dulo +User\ description\ for\ the\ module=Descripci\u00f3n de usuario para el m\u00f3dulo. +Set\ to\ automatically\ start\ the\ module\ when\ it\ is\ loaded=Configurado para iniciar autom\u00e1ticamente el m\u00f3dulo cuando se carga +Module\ implementation\ class=Clase de implementaci\u00f3n del m\u00f3dulo +User\ chosen\ name\ for\ the\ module=Nombre elegido por el usuario para el m\u00f3dulo. +Name\ of\ topic/queue\ to\ use=Nombre del tema/cola a utilizar +Enable/disable\ writing\ to\ queue=Activar/desactivar la escritura en cola +Enable/disable\ reading\ from\ queue=Activar/desactivar la lectura desde la cola +Protocol\ Options=Opciones de protocolo +Common\ Configuration=Configuraci\u00f3n com\u00fan +Common\ configuration\ for\ sensors\ in\ the\ array=Configuraci\u00f3n com\u00fan para sensores en la matriz. +Sensors\ Configuration=Configuraci\u00f3n de sensores +Subsystem\ Config=Configuraci\u00f3n del subsistema +Configuration\ of\ the\ subsystem=Configuraci\u00f3n del subsistema +Relative\ Location=Ubicaci\u00f3n relativa +Location\ of\ this\ subsystem\ relative\ to\ the\ main\ system\ or\ platform\ reference\ frame=Ubicaci\u00f3n de este subsistema en relaci\u00f3n con el sistema principal o marco de referencia de la plataforma. +Relative\ Orientation=Orientaci\u00f3n relativa +Orientation\ of\ this\ subsystem\ relative\ to\ the\ main\ system\ or\ platform\ reference\ frame=Orientaci\u00f3n de este subsistema en relaci\u00f3n con el sistema principal o marco de referencia de la plataforma. +Fixed\ system\ orientation\ in\ the\ local\ NED\ reference\ frame=Orientaci\u00f3n fija del sistema en el marco de referencia NED local. +Subsystems=Subsistemas +Configuration\ of\ components\ of\ this\ sensor\ system=Configuraci\u00f3n de los componentes de este sistema de sensores. +Database\ Config=Configuraci\u00f3n de base de datos +Configuration\ of\ underlying\ database=Configuraci\u00f3n de la base de datos subyacente +System\ UIDs=UID del sistema +Unique\ IDs\ of\ system\ drivers\ handled\ by\ this\ database=ID \u00fanicos de los controladores del sistema manejados por esta base de datos +Automatic\ Purge\ Policy=Pol\u00edtica de purga autom\u00e1tica +Policy\ for\ automatically\ purging\ historical\ data=Pol\u00edtica para eliminar autom\u00e1ticamente datos hist\u00f3ricos +Uncheck\ to\ disable\ auto-purge\ temporarily=Desmarque para desactivar la purga autom\u00e1tica temporalmente +Purge\ Execution\ Period=Per\u00edodo de ejecuci\u00f3n de purga +Unique\ IDs\ of\ system\ drivers\ to\ purge=ID \u00fanicos de los controladores del sistema que se van a purgar +Max\ Record\ Age=Edad m\u00e1xima de registro +SensorML\ File=Archivo SensorML +Path\ of\ SensorML\ description\ of\ the\ process=Ruta de SensorML descripci\u00f3n del proceso +List\ of\ users\ allowed\ access\ to\ this\ system=Lista de usuarios autorizados a acceder a este sistema +List\ of\ security\ roles=Lista de roles de seguridad +User\ ID=ID de usuario +Role\ ID=ID de rol +Source\ Database\ ID=ID de la base de datos de origen +ID\ of\ database\ module\ to\ read\ data\ from\ (Federated\ database\ will\ be\ used\ if\ not\ set=ID del m\u00f3dulo de base de datos desde el que leer los datos (se utilizar\u00e1 la base de datos federada si no est\u00e1 configurada) +HTTP\ Port=Puerto HTTP +HTTPS\ Port=Puerto HTTPS +Root\ URL\ where\ static\ web\ content\ will\ be\ served.=URL ra\u00edz donde se entregar\u00e1 el contenido web est\u00e1tico. +Directory\ where\ static\ web\ content\ is\ located.=Directorio donde se encuentra el contenido web est\u00e1tico. +Root\ URL\ where\ the\ server\ will\ accept\ requests.\ This\ will\ be\ the\ prefix\ to\ all\ servlet\ URLs.=URL ra\u00edz donde el servidor aceptar\u00e1 solicitudes. Este ser\u00e1 el prefijo de todas las URL de servlet. +Proxy\ Base\ URL=URL base de proxy +Public\ URL\ as\ viewed\ from\ the\ outside\ when\ requests\ transit\ through\ a\ proxy\ server.=URL p\u00fablica vista desde el exterior cuando las solicitudes transitan a trav\u00e9s de un servidor proxy. +Authentication\ Method=M\u00e9todo de autenticaci\u00f3n +Method\ used\ to\ authenticate\ users\ on\ this\ server=M\u00e9todo utilizado para autenticar usuarios en este servidor +Path\ to\ a\ key\ store\ containing\ the\ certificate\ and\ keypair\ that\ this\ server\ will\ present\ to\ clients\ when\ accessed\ over\ HTTPS.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ \"javax.net.ssl.keyStore\"\ system\ property.\=Path to a key store containing the certificate and keypair that this server will present to clients when accessed over HTTPS. If this value is blank, will default to using the value of the \"javax.net.ssl.keyStore\" system property. +Alias\ for\ the\ public/private\ keypair\ within\ the\ key\ store\ that\ will\ be\ used\ to\ identify\ this\ server.=Alias \u200b\u200bdel par de claves p\u00fablica/privada dentro del almac\u00e9n de claves que se utilizar\u00e1 para identificar este servidor. +Path\ to\ the\ TLS\ trust\ store\ that\ is\ used\ when\ client\ authentication\ is\ required.\ Ignored\ if\ client\ certificate\ authentication\ is\ not\ used.\ Certificates\ in\ this\ file\ designate\ the\ signing\ authorities\ for\ client\ certificates\ that\ will\ be\ trusted.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ \"javax.net.ssl.trustStore\"\ system\ property.\=Path to the TLS trust store that is used when client authentication is required. Ignored if client certificate authentication is not used. Certificates in this file designate the signing authorities for client certificates that will be trusted. If this value is blank, will default to using the value of the \"javax.net.ssl.trustStore\" system property. +Password\ for\ the\ trust\ store.\ Ignored\ if\ client\ certificate\ authentication\ is\ not\ used.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ \"javax.net.ssl.trustStorePassword\"\ system\ property.\=Password for the trust store. Ignored if client certificate authentication is not used. If this value is blank, will default to using the value of the \"javax.net.ssl.trustStorePassword\" system property. +Enable\ CORS=Habilitar CORS +Enable\ generation\ of\ CORS\ headers\ to\ allow\ cross-domain\ requests\ from\ browsers=Habilite la generaci\u00f3n de encabezados CORS para permitir solicitudes entre dominios desde los navegadores +Capabilities\ Info=Informaci\u00f3n de capacidades +Information\ included\ in\ the\ service\ capabilities\ document=Informaci\u00f3n incluida en el documento de capacidades del servicio. +Enable\ HTTP\ GET=Habilitar HTTP GET +Enables/disables\ HTTP\ GET\ bindings\ on\ operations\ that\ support\ it=Habilita/deshabilita enlaces HTTP GET en operaciones que lo admiten +Enable\ HTTP\ POST=Habilitar publicaci\u00f3n HTTP +Enables/disables\ HTTP\ POST\ bindings\ on\ operations\ that\ support\ it=Habilita/deshabilita enlaces HTTP POST en operaciones que lo admiten +Enable\ HTTP\ SOAP=Habilitar SOAP HTTP +Enables/disables\ HTTP\ SOAP\ bindings\ on\ operations\ that\ support\ it=Habilita/deshabilita enlaces HTTP SOAP en operaciones que lo admiten +Connection\ Timeout=Tiempo de espera de conexi\u00f3n +Reconnect\ Period=Per\u00edodo de reconexi\u00f3n +Max\ Reconnect\ Attempts=Intentos m\u00e1ximos de reconexi\u00f3n +Maximum\ number\ of\ times\ the\ client\ will\ attempt\ to\ reconnect\ when\ the\ connection\ is\ not\ available\ or\ lost.\ A\ negative\ value\ means\ that\ there\ is\ no\ limit\ to\ the\ number\ of\ reconnection\ attempts.\ Zero\ means\ not\ to\ attempt\ reconnection.=N\u00famero m\u00e1ximo de veces que el cliente intentar\u00e1 volver a conectarse cuando la conexi\u00f3n no est\u00e9 disponible o se pierda. Un valor negativo significa que no hay l\u00edmite para el n\u00famero de intentos de reconexi\u00f3n. Cero significa no intentar la reconexi\u00f3n. +IP\ or\ DNS\ name\ of\ remote\ host=Nombre IP o DNS del host remoto +IP\ of\ local\ network\ interface\ to\ bind\ to\ or\ 'AUTO'\ to\ select\ it\ automatically=IP de la interfaz de red local a la que vincularse o ''''AUTO'''' para seleccionarla autom\u00e1ticamente +Connection\ Options=Opciones de conexi\u00f3n +Serial\ port\ device\ name.\ Usually\ something\ like\ /dev/ttyXXX\ on\ Linux=Nombre del dispositivo del puerto serie. Generalmente algo como /dev/ttyXXX en Linux +Minimum\ number\ of\ bytes\ to\ receive\ before\ they\ are\ sent\ to\ the\ caller=N\u00famero m\u00ednimo de bytes a recibir antes de enviarlos a la persona que llama +Local\ port\ number\ to\ use\ on\ the\ local\ host=N\u00famero de puerto local para usar en el host local +Physical\ address\ of\ Bluetooth\ device\ to\ connect\ to=Direcci\u00f3n f\u00edsica del dispositivo Bluetooth al que conectarse +Port\ number\ to\ connect\ to\ on\ remote\ host=N\u00famero de puerto al que conectarse en el host remoto +User\ Name=Nombre de usuario +Remote\ user\ name=Nombre de usuario remoto +Password=Contrase\u00f1a +Remote\ password=Contrase\u00f1a remota +Secure\ communications\ with\ SSL/TLS=Comunicaciones seguras con SSL/TLS +Enable\ to\ check\ if\ remote\ host\ is\ reachable\ before\ attempting\ further\ operations=Habilite para verificar si se puede acceder al host remoto antes de intentar realizar m\u00e1s operaciones. +Path\ or\ resource\ or\ service\ relative\ to\ server\ root=Ruta, recurso o servicio relativo a la ra\u00edz del servidor +Unique\ ID\ of\ system\ group=ID \u00fanico del grupo de sistemas +Name\ of\ system\ group=Nombre del grupo de sistemas +Description\ of\ system\ group=Descripci\u00f3n del grupo de sistemas +List\ of\ bundle\ repository\ URLs=Lista de URL del repositorio de paquetes +A\ human\ readable\ friendly\ identifier\ for\ the\ deployment=Un identificador f\u00e1cil de leer para la implementaci\u00f3n +Enable\ Landing\ Page=Habilitar p\u00e1gina de destino +Enable\ Landing\ Servlet\ to\ redirect\ users\ to\ landing\ page=Habilite Landing Servlet para redirigir a los usuarios a la p\u00e1gina de destino +Config\ Class=Clase de configuraci\u00f3n +Type\ of\ module\ config\ class\ for\ which\ a\ custom\ panel\ must\ be\ generated=Tipo de clase de configuraci\u00f3n de m\u00f3dulo para la cual se debe generar un panel personalizado +UI\ Class=Clase de interfaz de usuario +Fully\ qualified\ name\ of\ class\ implementing\ IModuleAdminPanel=Nombre completo de la clase que implementa IModuleAdminPanel + +# Auto-extracted property IDs +sensorML=Sensor ml +lastUpdated=\u00daltima actualizaci\u00f3n +lat=Latitud +lon=lon +alt=Alt. +x=inc\u00f3gnita +y=Y +z=z +heading=T\u00edtulo +pitch=Paso +roll=Rollo +location=Ubicaci\u00f3n +orientation=Orientaci\u00f3n +databaseNum=N\u00famero de base de datos +enableAccessControl=Habilitar control de acceso +requireAuth=Requerir autenticaci\u00f3n +mimeType=Tipo mimo +className=Nombre de clase +endPoint=Punto final +id=Identificaci\u00f3n +description=Descripci\u00f3n +autoStart=Inicio autom\u00e1tico +topicName=Nombre del tema +enablePublish=Habilitar publicaci\u00f3n +enableSubscribe=Habilitar suscripci\u00f3n +protocol=Protocolo +moduleConfigPath=Ruta de configuraci\u00f3n del m\u00f3dulo +moduleDataPath=Ruta de datos del m\u00f3dulo +commonConfig=Configuraci\u00f3n com\u00fan +sensors=Sensors +config=configuraci\u00f3n +uniqueID=Identificaci\u00f3n \u00fanica +subsystems=Subsistemas +dbConfig=Configuraci\u00f3n de base de datos +systemUIDs=Uides del sistema +autoPurgeConfig=Configuraci\u00f3n de purga autom\u00e1tica +minCommitPeriod=Per\u00edodo m\u00ednimo de compromiso +enabled=Activado +purgePeriod=Per\u00edodo de purga +maxRecordAge=Edad m\u00e1xima de registro +users=Usuarios +roles=Roles +allow=Permitir +deny=Denegar +userID=Identificaci\u00f3n de usuario +name=Nombre +password=Contrase\u00f1a +certificate=Certificado +twoFactorSecret=Secreto de dos factores +isTwoFactorEnabled=\u00bfEst\u00e1n habilitados los dos factores? +roleID=ID de rol +sourceDatabaseId=ID de la base de datos de origen +includeFilter=Incluir filtro +excludeFilter=Excluir filtro +httpPort=Puerto http +httpsPort=Puerto HTTPS +staticDocsRootUrl=URL ra\u00edz de documentos est\u00e1ticos +staticDocsRootDir=Directorio ra\u00edz de documentos est\u00e1ticos +servletsRootUrl=URL ra\u00edz de servlets +proxyBaseUrl=URL base del proxy +authMethod=M\u00e9todo de autenticaci\u00f3n +keyStorePath=Ruta del almac\u00e9n de claves +keyStorePassword=Contrase\u00f1a del almac\u00e9n de claves +keyAlias=Alias \u200b\u200bclave +trustStorePath=Ruta de la tienda de confianza +trustStorePassword=Contrase\u00f1a de la tienda de confianza +xmlConfigFile=Archivo de configuraci\u00f3n XML +enableCORS=Habilitar Cors +title=Title +keywords=Palabras clave +fees=Honorarios +accessConstraints=Restricciones de acceso +serviceProvider=Proveedor de servicios +ogcCapabilitiesInfo=Informaci\u00f3n de capacidades de OGC +enableHttpGET=Habilitar obtenci\u00f3n HTTP +enableHttpPOST=Habilitar publicaci\u00f3n HTTP +enableSOAP=Habilitar jab\u00f3n +connectTimeout=Tiempo de espera de conexi\u00f3n +reconnectPeriod=Per\u00edodo de reconexi\u00f3n +reconnectAttempts=Intentos de reconexi\u00f3n +deviceID=Identificaci\u00f3n del dispositivo +deviceClass=Clase de dispositivo +remoteHost=Anfitri\u00f3n remoto +localAddress=Direcci\u00f3n local +connection=Conexi\u00f3n +portName=Nombre del puerto +baudRate=Velocidad de baudios +dataBits=Bits de datos +stopBits=Bits de parada +parity=Paridad +receiveTimeout=Recibir tiempo de espera +receiveThreshold=Umbral de recepci\u00f3n +remotePort=Puerto remoto +localPort=Puerto Local +deviceAddress=Direcci\u00f3n del dispositivo +deviceName=Nombre del dispositivo +serviceUuid=Fluido de servicio +user=Usuario +enableTLS=Habilitar TLS +checkReachability=Verificar accesibilidad +resourcePath=Ruta de recursos +uid=identificador +securityRole=Funci\u00f3n de seguridad +passwordField=Campo de contrase\u00f1a +widgetSet=Conjunto de widgets +bundleRepoUrls=URL de repositorio de paquetes +customPanels=Paneles personalizados +customForms=Formularios personalizados +deploymentName=Nombre de implementaci\u00f3n +enableLandingPage=Habilitar p\u00e1gina de destino +configClass=Clase de configuraci\u00f3n +uiClass=Clase de interfaz de usuario +moduleClass=Clase de m\u00f3dulo + +# Auto-extracted hardcoded UI strings +testLinks1=Enlaces de prueba +uniqueID1=Identificaci\u00f3n \u00fanica +foiIDs1=ID de FOI +version1=Versi\u00f3n + +Connected\ Systems\ Endpoint=Punto final de sistemas conectados +Connected\ Systems\ endpoint\ where\ the\ requests\ are\ sent=Punto final de Connected Systems donde se env\u00edan las solicitudes +Connection\ Settings=Configuraci\u00f3n de conexi\u00f3n +Custom\ connector\ configurations=Configuraciones de conectores personalizados +Custom\ provider\ configurations=Configuraciones de proveedores personalizadas +Database\ ID=ID de base de datos +Default\ live\ time-out\ for\ all\ offerings,\ unless\ overriden\ by\ custom\ provider\ settings=Tiempo de espera en vivo predeterminado para todas las ofertas, a menos que lo anule la configuraci\u00f3n personalizada del proveedor +Default\ live\ time-out\ for\ new\ offerings\ created\ via\ SOS-T=Tiempo de espera en vivo predeterminado para nuevas ofertas creadas a trav\u00e9s de SOS-T +Enable\ to\ use\ a\ persistent\ HTTP\ connection\ for\ InsertResult=Habilite el uso de una conexi\u00f3n HTTP persistente para InsertResult +Execution\ period\ of\ the\ purge\ policy\ (in\ seconds)=Per\u00edodo de ejecuci\u00f3n de la pol\u00edtica de purga (en segundos) +Filtered\ view\ to\ select\ systems\ exposed\ as\ read-only\ through\ this\ service=Vista filtrada para seleccionar sistemas expuestos como de solo lectura a trav\u00e9s de este servicio +Filtered\ view\ to\ select\ systems/datastreams\ to\ register\ with\ Connected\ Systems=Vista filtrada para seleccionar sistemas/flujos de datos para registrarse con Connected Systems +Filtered\ view\ to\ select\ systems/datastreams\ to\ register\ with\ remote\ SOS=Vista filtrada para seleccionar sistemas/flujos de datos para registrarse con SOS remoto +Fixed\ system\ location\ in\ EPSG\ 4979\ (WGS84)\ coordinate\ system=Ubicaci\u00f3n del sistema fijo en el sistema de coordenadas EPSG 4979 (WGS84) +For\ each\ connection\ or\ reconnection\ attempt,\ the\ client\ will\ wait\ for\ the\ remote\ side\ to\ respond\ until\ this\ timeout\ expires\ (in\ ms)=Para cada intento de conexi\u00f3n o reconexi\u00f3n, el cliente esperar\u00e1 a que el lado remoto responda hasta que expire este tiempo de espera (en ms) +Heading\ (or\ yaw)\ angle\ about\ Z\ axis\ in\ degrees=\u00c1ngulo de rumbo (o gui\u00f1ada) respecto del eje Z en grados +How\ long\ the\ client\ will\ wait\ after\ connection\ is\ lost\ before\ it\ will\ attempt\ to\ reconnect\ (in\ ms)=Cu\u00e1nto tiempo esperar\u00e1 el cliente despu\u00e9s de perder la conexi\u00f3n antes de intentar volver a conectarse (en ms) +ID\ Generator=Generador de identificaci\u00f3n +ID\ of\ database\ module\ used\ for\ persisting\ data\ received\ by\ this\ service.\ If\ none\ is\ provided,\ new\ systems\ registered\ through\ this\ service\ will\ be\ available\ on\ the\ hub,\ but\ with\ no\ persistence\ guarantee\ across\ restarts.=ID del m\u00f3dulo de base de datos utilizado para conservar los datos recibidos por este servicio. Si no se proporciona ninguno, los nuevos sistemas registrados a trav\u00e9s de este servicio estar\u00e1n disponibles en el centro, pero sin garant\u00eda de persistencia entre reinicios. +ID\ of\ database\ module\ used\ for\ persisting\ data\ received\ by\ this\ service.\ If\ none\ is\ provided,\ new\ systems\ registered\ through\ this\ service\ will\ be\ available\ on\ the\ hub,\ but\ with\ no\ persistence\ guarantee\ across\ restarts.\ Only\ the\ latest\ observation\ from\ each\ datastream\ will\ be\ available\ and\ older\ observations\ will\ be\ discarded=ID del m\u00f3dulo de base de datos utilizado para conservar los datos recibidos por este servicio. Si no se proporciona ninguno, los nuevos sistemas registrados a trav\u00e9s de este servicio estar\u00e1n disponibles en el centro, pero sin garant\u00eda de persistencia entre reinicios. Solo estar\u00e1 disponible la \u00faltima observaci\u00f3n de cada flujo de datos y las observaciones m\u00e1s antiguas se descartar\u00e1n. +Individual\ configuration\ of\ sensors\ in\ the\ array\ (will\ override\ common\ configuration)=Configuraci\u00f3n individual de sensores en el conjunto (anular\u00e1 la configuraci\u00f3n com\u00fan) +List\ of\ observed\ properties\ URI\ to\ make\ available\ as\ outputs=Lista de URI de propiedades observadas para poner a disposici\u00f3n como salidas +Mapping\ of\ custom\ formats\ mime-types\ to\ custom\ serializer\ classes=Asignaci\u00f3n de tipos mime de formatos personalizados a clases de serializador personalizadas +Mappings\ used\ by\ CURIE\ to\ URI\ resolver=Asignaciones utilizadas por CURIE al solucionador de URI +Max\ Limit=L\u00edmite m\u00e1ximo +Max\ Observations\ Returned=Observaciones m\u00e1ximas devueltas +Max\ Records\ Returned=Registros m\u00e1ximos devueltos +Max\ delay\ between\ auto-commit\ execution,\ in\ seconds.\ 0\ to\ disable\ time-based\ auto-commit=Retraso m\u00e1ximo entre la ejecuci\u00f3n de la confirmaci\u00f3n autom\u00e1tica, en segundos. 0 para deshabilitar el compromiso autom\u00e1tico basado en tiempo +Maximum\ age\ of\ data\ to\ be\ kept\ in\ storage\ (in\ seconds)=Antig\u00fcedad m\u00e1xima de los datos que se mantendr\u00e1n almacenados (en segundos) +Maximum\ number\ of\ FoI\ IDs\ listed\ in\ capabilities=N\u00famero m\u00e1ximo de ID de FoI enumerados en capacidades +Maximum\ number\ of\ observations\ returned\ \ by\ a\ historical\ GetObservation\ request\ (for\ each\ selected\ offering)=N\u00famero m\u00e1ximo de observaciones devueltas por una solicitud GetObservation hist\u00f3rica (para cada oferta seleccionada) +Maximum\ number\ of\ records\ in\ upload\ queue\ (used\ to\ compensate\ for\ variable\ bandwidth)=N\u00famero m\u00e1ximo de registros en la cola de carga (utilizado para compensar el ancho de banda variable) +Maximum\ number\ of\ resources\ returned\ in\ a\ single\ page=N\u00famero m\u00e1ximo de recursos devueltos en una sola p\u00e1gina +Maximum\ number\ of\ result\ records\ returned\ by\ a\ historical\ GetResult\ request=N\u00famero m\u00e1ximo de registros de resultados devueltos por una solicitud GetResult hist\u00f3rica +Maximum\ number\ of\ stream\ errors\ before\ we\ try\ to\ reconnect\ to\ remote\ server=N\u00famero m\u00e1ximo de errores de transmisi\u00f3n antes de intentar volver a conectarnos al servidor remoto +Memory\ cache\ size\ for\ page\ chunks,\ in\ KB=Tama\u00f1o de memoria cach\u00e9 para fragmentos de p\u00e1gina, en KB +Metadata\ of\ system\ group\ that\ will\ be\ created\ to\ contain\ all\ procedures/sensors\ registered\ through\ this\ service.\ Only\ sensors\ in\ this\ group\ will\ be\ modifiable\ by\ this\ service=Metadatos del grupo de sistemas que se crear\u00e1 para contener todos los procedimientos/sensores registrados a trav\u00e9s de este servicio. S\u00f3lo los sensores de este grupo ser\u00e1n modificables por este servicio +Metadata\ of\ system\ group\ that\ will\ be\ created\ to\ contain\ all\ systems\ registered\ through\ this\ service.\ Only\ systems\ in\ this\ group\ will\ be\ modifiable\ by\ this\ service=Metadatos del grupo de sistemas que se crear\u00e1 para contener todos los sistemas registrados a trav\u00e9s de este servicio. S\u00f3lo los sistemas de este grupo ser\u00e1n modificables por este servicio +Method\ used\ to\ generate\ new\ resource\ IDs=M\u00e9todo utilizado para generar nuevos ID de recursos +Minimum\ fillrate\ above\ which\ auto\ compact\ operations\ may\ be\ triggered=Tasa de llenado m\u00ednima por encima de la cual se pueden activar operaciones de compactaci\u00f3n autom\u00e1tica +Minimum\ period\ between\ database\ commits\ (in\ ms)=Per\u00edodo m\u00ednimo entre confirmaciones de bases de datos (en ms) +Names\ of\ datastreams\ whose\ data\ will\ be\ hidden\ from\ the\ SOS.\ If\ this\ is\ null,\ all\ streams\ produced\ by\ the\ procedure\ are\ exposed=Nombres de flujos de datos cuyos datos se ocultar\u00e1n del SOS. Si esto es nulo, todos los flujos producidos por el procedimiento quedan expuestos. +Observed\ Properties=Propiedades observadas +Offering\ URI\ as\ exposed\ in\ capabilities.\ (if\ null,\ the\ procedure\ UID\ is\ used)=Ofreciendo URI seg\u00fan lo expuesto en capacidades. (si es nulo, se utiliza el UID del procedimiento) +Offering\ description\ (if\ null,\ it\ will\ be\ auto-generated)=Descripci\u00f3n de la oferta (si es nula, se generar\u00e1 autom\u00e1ticamente) +Offering\ name\ (if\ null,\ the\ procedure\ name\ is\ used)=Nombre de la oferta (si es nulo, se utiliza el nombre del procedimiento) +Orientation\ as\ Euler\ angles\ in\ NED\ coordinate\ reference\ frame.\nOrder\ of\ rotations\ is\ z-y\u2019-x"\ (in\ rotating\ frame)\ or\ x-y-z\ (in\ fixed\ frame)=Orientaci\u00f3n como \u00e1ngulos de Euler en el sistema de referencia de coordenadas NED.\nEl orden de las rotaciones es z-y\u2019-x" (en marco giratorio) o x-y-z (en marco fijo) +Password\ for\ the\ key\ store\ (and\ for\ the\ keypair\ within\ the\ keystore).\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ "javax.net.ssl.keyStorePassword"\ system\ property.\ This\ value\ can\ use\ variable\ expansion\ expressions\ of\ the\ form\ "$${name}"\ (for\ environment\ variables\ and\ system\ properties)\ or\ "$${file;/path/to/file}"\ (for\ secret\ file\ contents).=Contrase\u00f1a para el almac\u00e9n de claves (y para el par de claves dentro del almac\u00e9n de claves). Si este valor est\u00e1 en blanco, se utilizar\u00e1 de forma predeterminada el valor de la propiedad del sistema "javax.net.ssl.keyStorePassword". Este valor puede utilizar expresiones de expansi\u00f3n de variables del formato "$${nombre}" (para variables de entorno y propiedades del sistema) o "$${archivo;/ruta/al/archivo}" (para contenidos de archivos secretos). +Password\ for\ the\ trust\ store.\ Ignored\ if\ client\ certificate\ authentication\ is\ not\ used.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ "javax.net.ssl.trustStorePassword"\ system\ property.\ This\ value\ can\ use\ variable\ expansion\ expressions\ of\ the\ form\ "$${name}"\ (for\ environment\ variables\ and\ system\ properties)\ or\ "$${file;/path/to/file}"\ (for\ secret\ file\ contents).=Contrase\u00f1a para el almac\u00e9n de confianza. Se ignora si no se utiliza la autenticaci\u00f3n del certificado del cliente. Si este valor est\u00e1 en blanco, se utilizar\u00e1 de forma predeterminada el valor de la propiedad del sistema "javax.net.ssl.trustStorePassword". Este valor puede utilizar expresiones de expansi\u00f3n de variables del formato "$${nombre}" (para variables de entorno y propiedades del sistema) o "$${archivo;/ruta/al/archivo}" (para contenidos de archivos secretos). +Path\ of\ service\ endpoint\ relative\ to\ the\ context\ URL\ (e.g.\ http\://server.net/sensorhub)=Ruta del punto final del servicio relativa a la URL de contexto (por ejemplo, http://server.net/sensorhub) +Path\ to\ a\ key\ store\ containing\ the\ certificate\ and\ keypair\ that\ this\ server\ will\ present\ to\ clients\ when\ accessed\ over\ HTTPS.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ "javax.net.ssl.keyStore"\ system\ property.\ This\ value\ can\ use\ variable\ expansion\ expressions\ of\ the\ form\ "$${name}"\ (for\ environment\ variables\ and\ system\ properties)\ or\ "$${file;/path/to/file}"\ (for\ secret\ file\ contents).=Ruta a un almac\u00e9n de claves que contiene el certificado y el par de claves que este servidor presentar\u00e1 a los clientes cuando se acceda a trav\u00e9s de HTTPS. Si este valor est\u00e1 en blanco, se utilizar\u00e1 de forma predeterminada el valor de la propiedad del sistema "javax.net.ssl.keyStore". Este valor puede utilizar expresiones de expansi\u00f3n de variables del formato "$${nombre}" (para variables de entorno y propiedades del sistema) o "$${archivo;/ruta/al/archivo}" (para contenidos de archivos secretos). +Path\ to\ database\ file=Ruta al archivo de base de datos +Path\ to\ external\ config\ file\ (in\ Jetty\ IOC\ XML\ format)=Ruta al archivo de configuraci\u00f3n externo (en formato XML Jetty IOC) +Path\ to\ the\ TLS\ trust\ store\ that\ is\ used\ when\ client\ authentication\ is\ required.\ Ignored\ if\ client\ certificate\ authentication\ is\ not\ used.\ Certificates\ in\ this\ file\ designate\ the\ signing\ authorities\ for\ client\ certificates\ that\ will\ be\ trusted.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ "javax.net.ssl.trustStore"\ system\ property.\ This\ value\ can\ use\ variable\ expansion\ expressions\ of\ the\ form\ "$${name}"\ (for\ environment\ variables\ and\ system\ properties)\ or\ "$${file;/path/to/file}"\ (for\ secret\ file\ contents).=Ruta al almac\u00e9n de confianza TLS que se utiliza cuando se requiere autenticaci\u00f3n del cliente. Se ignora si no se utiliza la autenticaci\u00f3n del certificado del cliente. Los certificados de este archivo designan las autoridades de firma de los certificados de cliente en los que se confiar\u00e1. Si este valor est\u00e1 en blanco, se utilizar\u00e1 de forma predeterminada el valor de la propiedad del sistema "javax.net.ssl.trustStore". Este valor puede utilizar expresiones de expansi\u00f3n de variables del formato "$${nombre}" (para variables de entorno y propiedades del sistema) o "$${archivo;/ruta/al/archivo}" (para contenidos de archivos secretos). +Port\ number\ to\ connect\ to\ on\ remote\ host\ (0\ to\ automatically\ select\ a\ port)=N\u00famero de puerto al que conectarse en el host remoto (0 para seleccionar autom\u00e1ticamente un puerto) +SOS\ Endpoint=Punto final SOS +SOS\ endpoint\ to\ fetch\ data\ from=Punto final SOS para recuperar datos +SOS\ endpoint\ where\ the\ requests\ are\ sent=Punto final SOS donde se env\u00edan las solicitudes +SPS\ Endpoint=Punto final SPS +SPS\ endpoint\ to\ send\ commands\ to=Punto final SPS al que enviar comandos +Security\ related\ options=Opciones relacionadas con la seguridad +Sensor\ UID=ID del sensor +Set\ if\ WebSocket\ protocol\ should\ be\ used\ to\ get\ streaming\ data\ from\ SOS=Establezca si se debe utilizar el protocolo WebSocket para obtener datos de transmisi\u00f3n desde SOS +Set\ if\ offering\ is\ enabled,\ unset\ if\ disabled=Establecer si la oferta est\u00e1 habilitada, desarmar si est\u00e1 deshabilitada +Set\ if\ websockets\ protocol\ should\ be\ used\ to\ send\ commands\ to\ SPS=Establezca si se debe utilizar el protocolo websockets para enviar comandos a SPS +Set\ to\ compact\ the\ database\ file\ when\ the\ database\ module\ is\ stopped\ or\ restarted=Configurado para compactar el archivo de base de datos cuando el m\u00f3dulo de base de datos se detiene o reinicia +Set\ to\ compress\ underlying\ file\ storage=Configurado para comprimir el almacenamiento de archivos subyacente +Set\ to\ display\ MVStore\ debug\ info\ when\ database\ is\ closed\ (only\ if\ DEBUG\ log\ is\ also\ enabled)=Configurado para mostrar informaci\u00f3n de depuraci\u00f3n de MVStore cuando la base de datos est\u00e1 cerrada (solo si el registro DEBUG tambi\u00e9n est\u00e1 habilitado) +Set\ to\ enable\ spatial\ indexing\ of\ individual\ observations\ sampling\ locations\ (when\ provided)=Configurado para permitir la indexaci\u00f3n espacial de ubicaciones de muestreo de observaciones individuales (cuando se proporcione) +Set\ to\ open\ the\ database\ as\ read-only=Configurar para abrir la base de datos como de solo lectura +Set\ to\ true\ to\ enable\ transactional\ operation\ support=Establecer en verdadero para habilitar el soporte de operaciones transaccionales +Size\ of\ the\ auto-commit\ write\ buffer,\ in\ KB=Tama\u00f1o del b\u00fafer de escritura de confirmaci\u00f3n autom\u00e1tica, en KB +TCP\ port\ where\ server\ will\ listen\ for\ secure\ HTTP\ (HTTPS)\ connections\ (use\ 0\ to\ disable\ HTTPS).=Puerto TCP donde el servidor escuchar\u00e1 conexiones HTTP seguras (HTTPS) (use 0 para deshabilitar HTTPS). +TCP\ port\ where\ server\ will\ listen\ for\ unsecure\ HTTP\ connections\ (use\ 0\ to\ disable\ HTTP).=Puerto TCP donde el servidor escuchar\u00e1 conexiones HTTP no seguras (use 0 para deshabilitar HTTP). +Time-out\ after\ which\ real-time\ requests\ are\ disabled\ if\ no\ more\ measurements\ are\ received\ (in\ seconds).\ Real-time\ is\ reactivated\ as\ soon\ as\ new\ records\ start\ being\ received\ again=Tiempo de espera tras el cual las solicitudes en tiempo real se desactivan si no se reciben m\u00e1s mediciones (en segundos). El tiempo real se reactiva tan pronto como se comienzan a recibir nuevos registros nuevamente +Time-out\ period\ after\ which\ a\ template\ ID\ reserved\ using\ InsertResultTemplate\ will\ expire\ if\ not\ used\ in\ InsertResult\ requests\ (in\ seconds)=Per\u00edodo de tiempo de espera despu\u00e9s del cual una ID de plantilla reservada mediante InsertResultTemplate caducar\u00e1 si no se utiliza en solicitudes InsertResult (en segundos) +Timeout\ after\ which\ data\ is\ released\ to\ the\ caller\ if\ at\ least\ one\ byte\ was\ received\ (in\ ms)=Tiempo de espera despu\u00e9s del cual los datos se liberan a la persona que llama si se recibi\u00f3 al menos un byte (en ms) +URI\ Prefix\ Map=Mapa de prefijo URI +Unique\ ID\ (full\ URN\ or\ only\ suffix)\ to\ use\ for\ the\ sensor\ system\ or\ 'auto'\ to\ use\ the\ UUID\ randomly\ generated\ the\ first\ time\ the\ module\ is\ initialized=ID \u00fanico (URN completo o solo sufijo) para usar en el sistema de sensores o "autom\u00e1tico" para usar el UUID generado aleatoriamente la primera vez que se inicializa el m\u00f3dulo +Unique\ ID\ of\ a\ system\ that\ this\ configuration\ applies\ to.\nCan\ include\ a\ trailing\ wildcard\ '*'\ to\ match\ several\ systems\ at\ once.=ID \u00fanico de un sistema al que se aplica esta configuraci\u00f3n.\nPuede incluir un comod\u00edn final ''*'' para hacer coincidir varios sistemas a la vez. +Unique\ ID\ of\ sensor\ to\ connect\ to\ on\ SOS\ and\ SPS\ servers=ID \u00fanico del sensor al que conectarse en servidores SOS y SPS +Unique\ ID\ of\ system\ that\ this\ configuration\ applies\ to.\nCan\ include\ a\ trailing\ wildcard\ '*'\ to\ match\ several\ systems\ at\ once.=ID \u00fanico del sistema al que se aplica esta configuraci\u00f3n.\nPuede incluir un comod\u00edn final ''*'' para hacer coincidir varios sistemas a la vez. +Use\ WebSockets\ for\ SOS=Utilice WebSockets para SOS +Use\ WebSockets\ for\ SPS=Utilice WebSockets para SPS + +Node\ ID=ID de nodo +Stats\ Frequency\ (min)=Frecuencia de estad\u00edsticas (min) +Database\ URL=URL de la base de datos +Database\ Name=Nombre de la base de datos +ID\ Generator=Generador de identificaci\u00f3n +Database\ Number=N\u00famero de base de datos +Remote\ Host=Anfitri\u00f3n remoto +Remote\ Port=Puerto remoto +Lane\ Width\ (m)=Ancho de carril (m) +Enable\ EML\ Analysis=Habilitar an\u00e1lisis EML +Is\ Collimated=est\u00e1 colimado +Stream\ Path=Ruta de la corriente +Lane\ Options\ Config=Configuraci\u00f3n de opciones de carril diff --git a/sensorhub-webui-core/src/main/resources/org/sensorhub/ui/i18n/messages_et.properties b/sensorhub-webui-core/src/main/resources/org/sensorhub/ui/i18n/messages_et.properties new file mode 100644 index 0000000000..1f9616e2b3 --- /dev/null +++ b/sensorhub-webui-core/src/main/resources/org/sensorhub/ui/i18n/messages_et.properties @@ -0,0 +1,543 @@ +app.title=OpenSensorHub +tab.sensors=Sensorid +tab.databases=Andmebaasid +tab.processing=T\u00f6\u00f6tlemine +tab.services=Teenused +tab.clients=Kliendid +tab.network=V\u00f5rk +tab.security=Turvalisus +action.shutdown=Sulge +action.logout=Logi v\u00e4lja +action.save=Salvesta +action.addModule=Lisa uus moodul +action.addSubmodule=Lisa alammoodul +action.removeModule=Eemalda moodul +action.removeSubmodule=Eemalda alammoodul +action.start=K\u00e4ivita +action.stop=Peata +action.restart=Taask\u00e4ivita +action.forceInit=Sundinitsialiseerimine +action.selectAll=Vali k\u00f5ik moodulid +action.deselectAll=T\u00fchista k\u00f5igi valik +dialog.shutdown.title=Sulgemine algatatud... +dialog.shutdown.message=Kasutajaliides l\u00f5petab vastamise +dialog.shutdown.confirm=Kas olete kindel, et soovite andurite keskuse sulgeda? +dialog.logout.confirm=Kas olete kindel, et soovite v\u00e4lja logida? +dialog.save.confirm=Kas olete kindel, et soovite konfiguratsiooni salvestada (ja eelmise \u00fcle kirjutada)? +msg.configSaved=SensorHubi konfiguratsioon salvestatud +msg.configSaveError=Konfiguratsiooni ei saa salvestada +dialog.remove.confirm=Kas olete kindel, et soovite eemaldada {0}?
K\u00f5ik seaded l\u00e4hevad kaotsi. +msg.removeError={0} ei saanud eemaldada +msg.startError={0} ei saanud k\u00e4ivitada +msg.stopError={0} ei saanud peatada +msg.restartError={0} ei saanud taask\u00e4ivitada +msg.reinitError={0} ei saanud uuesti initsialiseerida +msg.loadError=Moodulit ei saa laadida +msg.addSubmoduleError=Alammoodulit ei saa lisada +about.title=OpenSensorHubist +about.desc=Tarkvaraplatvorm nutikate andurv\u00f5rkude ja asjade interneti (IoT) ehitamiseks +about.license=Litsentsitud Mozilla Public License v2.0 alusel +about.version=Versioon: +about.build=J\u00e4rgu number: +about.deployment=Paigalduse nimi: +tooltip.shutdown=Sulge SensorHub +tooltip.logout=Logi OSH s\u00f5lmest v\u00e4lja +tooltip.save=Salvesta SensorHubi konfiguratsioon +dialog.start.confirm=Kas olete kindel, et soovite k\u00e4ivitada {0}? +dialog.stop.confirm=Kas olete kindel, et soovite peatada {0}? +dialog.restart.confirm=Kas olete kindel, et soovite taask\u00e4ivitada {0}? +dialog.reinit.confirm=Kas olete kindel, et soovite sundida {0} uuesti initsialiseerimist? +backgroundUpdate=Taustav\u00e4rskendus +sigmaThreshold=Sigma l\u00e4vi +nuclideIdentification=Nukliidide tuvastamine +tamperAlarm=Rikkumise h\u00e4ire +occupancySensor=Kohaloleku andur +stateOfHealth=Terviseseisund +soh=SOH +1ScanThisQrCodeWithYourAuthenticatorApp=1. Skannige see QR-kood oma autentimisrakendusega: +2EnterThe6digitCodeGeneratedByTheApp=2. Sisestage rakenduse loodud 6-kohaline kood: +orEnterThisSecretKeyManually=V\u00f5i sisestage see salajane v\u00f5ti k\u00e4sitsi: +loadingBundlesInformation=Kimpude teabe laadimine... +loadingPackageInformation=Paketi teabe laadimine... +arrayComponentNotSupported=Massiivikomponenti ei toetata +twofactorAuthentication=Kahefaktoriline autentimine +installMorePackages=Installige rohkem pakette... +errorGeneratingQrCode=Viga QR-koodi loomisel +installMoreModules=Installige rohkem mooduleid... +detailedInstructions=\u00dcksikasjalikud juhised +availableNetworks=Saadaolevad v\u00f5rgud +processParameters=Protsessi parameetrid +verifyAndEnable=Kinnitage ja lubage +dataSourceInfo=Andmeallika teave +detectedDevices=Tuvastatud seadmed +installSelected=Installi valitud +databaseContent=Andmebaasi sisu +itemsPerPage=\u00dcksusi lehel: +commandInputs=K\u00e4skude sisendid +processInputs=Protsessi sisendid +providerClass=Pakkuja klass +processName=Protsessi nimi: +configuration=Seadistamine +applyChanges=Rakenda muudatused +sendCommand=Saada k\u00e4sk +useAddress=Kasutage aadressi +selectNone=Valige Puudub +timeRange=Ajavahemik: +permissions=load +startScan=Alusta skannimist +noReadme=Ei ole README +stopScan=Peata skannimine +reset2fa=L\u00e4htestage 2FA +previous=Eelmine +useName=Kasutage nime +outputs=V\u00e4ljundid +refresh=V\u00e4rskenda +modify=Muuda +cancel=T\u00fchista +logout=V\u00e4ljalogimine +remove=Eemalda +verify=Kinnitage +first=Esiteks +login=Logi sisse +last=Viimane +view=VAATA +next=Edasi +stop=Peatus +add=Lisa +ui.empty=< +ok=OK +1ScanThisQrCodeWithYourAuthenticatorApp1=1. Skannige see QR-kood oma autentimisrakendusega: +2EnterThe6digitCodeGeneratedByTheApp1=2. Sisestage rakenduse loodud 6-kohaline kood: +orEnterThisSecretKeyManually1=V\u00f5i sisestage see salajane v\u00f5ti k\u00e4sitsi: +loadingPackageInformation1=Paketi teabe laadimine... +loadingBundlesInformation1=Kimpude teabe laadimine... +arrayComponentNotSupported1=Massiivikomponenti ei toetata +twofactorAuthentication1=Kahefaktoriline autentimine +errorGeneratingQrCode1=Viga QR-koodi loomisel +installMorePackages1=Installige rohkem pakette... +installMoreModules1=Installige rohkem mooduleid... +detailedInstructions1=\u00dcksikasjalikud juhised +processParameters1=Protsessi parameetrid +availableNetworks1=Saadaolevad v\u00f5rgud +verifyAndEnable1=Kinnitage ja lubage +databaseContent1=Andmebaasi sisu +installSelected1=Installi valitud +dataSourceInfo1=Andmeallika teave +detectedDevices1=Tuvastatud seadmed +itemsPerPage1=\u00dcksusi lehel: +processInputs1=Protsessi sisendid +commandInputs1=K\u00e4skude sisendid +providerClass1=Pakkuja klass +configuration1=Seadistamine +processName1=Protsessi nimi: +applyChanges1=Rakenda muudatused +sendCommand1=Saada k\u00e4sk +timeRange1=Ajavahemik: +useAddress1=Kasutage aadressi +permissions1=load +selectNone1=Valige Puudub +startScan1=Alusta skannimist +noReadme1=Ei ole README +reset2fa1=L\u00e4htestage 2FA +stopScan1=Peata skannimine +useName1=Kasutage nime +previous1=Eelmine +refresh1=V\u00e4rskenda +outputs1=V\u00e4ljundid +cancel1=T\u00fchista +logout1=V\u00e4ljalogimine +modify1=Muuda +remove1=Eemalda +verify1=Kinnitage +first1=Esiteks +login1=Logi sisse +view1=VAATA +stop1=Peatus +next1=Edasi +last1=Viimane +add1=Lisa +last2=>> +first2=<< +ok1=OK +next2=> +previous2=< + +pleaseEnterAUserIDFirst1=Sisestage esmalt kasutaja ID +reset2FA1=L\u00e4htestage 2FA +enable2FA1=Luba 2FA +twoFAEnabledSuccessfully1=2FA lubati edukalt +invalidCode1=Kehtetu kood +allowedAndDeniedPermissionsForUsersWithThisRole1=Selle rolliga kasutajatele lubatud ja keelatud load +manualEntry1=K\u00e4sitsi sisestamine +toggleAutoRefreshDataOncePerSecond1=L\u00fclitage andmete automaatne v\u00e4rskendamine \u00fcks kord sekundis sisse +lookupSystem1=Otsingus\u00fcsteem +lookupModule1=Otsingumoodul +lookupAddress1=Otsi aadressi +showPassword1=N\u00e4ita parooli +showHistogram1=N\u00e4ita histogrammi +hideHistogram1=Peida histogramm +reloadDataFromDatabase1=Laadige andmed uuesti andmebaasist +fois1=FOI-d +username1=Kasutajanimi +password1=Parool +loginFailed1=Sisselogimine eba\u00f5nnestus +invalidUsernameOrPassword1=Kehtetu kasutajanimi v\u00f5i parool +verificationCode1=Kinnituskood +verificationFailed1=Kinnitamine eba\u00f5nnestus +datasource1=Andmeallikas +process1=Protsess +logoutFromOshNode1=T\u00f6\u00f6tervishoiu ja t\u00f6\u00f6ohutuse s\u00f5lmest v\u00e4ljalogimine +setParameter1=M\u00e4\u00e4ra parameeter +setupTwoFactorAuthentication1=Seadistage kahefaktoriline autentimine + +action.new_item=Uus {0} +Lane\ System=Rajas\u00fcsteem +Module\ Class=Mooduli klass +Module\ Name=Mooduli nimi +Module\ ID=Mooduli ID +Description=Kirjeldus +SensorML\ URL=SensorML URL +UniqueID=Unikaalne ID +Last\ Updated=Viimati v\u00e4rskendatud +Auto\ Start=Auto Start +Delete\ Data\ on\ Lane\ Removal=Kustutage s\u00f5iduraja eemaldamise andmed +Latitude=Laiuskraad +Longitude=Pikkuskraad +Altitude=K\u00f5rgus merepinnast +Initial\ RPM\ Config=Esialgne RPM-i konfiguratsioon +Initial\ Camera\ Config=Kaamera esialgne konfiguratsioon +Lane\ Options\ Config=Raja valikud Konfig +tab.general=Kindral +tab.readme=LOE ME +Fixed\ Location=Fikseeritud asukoht +Fixed\ Orientation=Fikseeritud suund +# Auto-extracted DisplayInfo labels and descriptions +URL\ of\ SensorML\ file\ providing\ the\ base\ description\ of\ the\ sensor=SensorML-faili URL, mis sisaldab anduri p\u00f5hikirjeldust +Time\ at\ which\ the\ SensorML\ description\ was\ last\ updated=Aeg, mil SensorML-i kirjeldust viimati v\u00e4rskendati +Geodetic\ latitude,\ in\ degrees=Geodeetiline laiuskraad, kraadides +Longitude,\ in\ degrees=Pikkuskraad, kraadides +Height\ above\ ellipsoid,\ in\ meters=K\u00f5rgus ellipsoidist, meetrites +X\ coordinate,\ in\ meters=X koordinaat meetrites +Y\ coordinate,\ in\ meters=Y-koordinaat meetrites +Z\ coordinate,\ in\ meters=Z-koordinaat meetrites +Pitch\ angle\ about\ Y\ axis,\ in\ degrees=Kaldenurk Y-telje \u00fcmber kraadides +Roll\ angle\ about\ X\ axis,\ in\ degrees=Veerenurk X-telje \u00fcmber, kraadides +Location\ in\ EPSG\:4979\ coordinate\ reference\ frame=Asukoht EPSG:4979 koordinaatide v\u00f5rdlusraamis +Database\ Number=Andmebaasi number +Numerical\ identifier\ of\ the\ database.\ Each\ database\ that\ should\ be\ exposed\ via\ the\ federated\ database\ API\ must\ have\ a\ unique\ number\ on\ the\ sensor\ hub.\ If\ visibility\ through\ the\ federated\ database\ is\ not\ desired,\ it\ can\ be\ omitted.=Andmebaasi numbriline identifikaator. Igal andmebaasil, mis tuleks liitandmebaasi API kaudu avaldada, peab andurijaoturis olema kordumatu number. Kui n\u00e4htavust liitandmebaasi kaudu ei soovi, v\u00f5ib selle \u00e4ra j\u00e4tta. +Enables\ fine-grained\ permission-based\ access\ control\ for\ this\ module=Lubab selle mooduli jaoks t\u00e4pse loap\u00f5hise juurdep\u00e4\u00e4sukontrolli +Require\ Authentication=N\u00f5ua autentimist +Set\ to\ require\ remote\ users\ to\ be\ authentified\ before\ they\ can\ use\ this\ service=M\u00e4\u00e4rake n\u00f5udma kaugkasutajatelt enne selle teenuse kasutamist autentimist +Endpoint=L\u00f5pp-punkt +Unique\ local\ ID\ of\ the\ module=Mooduli kordumatu kohalik ID +User\ description\ for\ the\ module=Mooduli kasutajakirjeldus +Set\ to\ automatically\ start\ the\ module\ when\ it\ is\ loaded=M\u00e4\u00e4rake mooduli automaatne k\u00e4ivitamine selle laadimisel +Module\ implementation\ class=Mooduli rakendamise klass +User\ chosen\ name\ for\ the\ module=Kasutaja valitud mooduli nimi +Name\ of\ topic/queue\ to\ use=Kasutatava teema/j\u00e4rjekorra nimi +Enable/disable\ writing\ to\ queue=J\u00e4rjekorda kirjutamise lubamine/keelamine +Enable/disable\ reading\ from\ queue=J\u00e4rjekorrast lugemise lubamine/keelamine +Protocol\ Options=Protokolli valikud +Common\ Configuration=\u00dchine konfiguratsioon +Common\ configuration\ for\ sensors\ in\ the\ array=Massiivi andurite \u00fchine konfiguratsioon +Sensors\ Configuration=Andurite konfiguratsioon +Subsystem\ Config=Alams\u00fcsteemi konfiguratsioon +Configuration\ of\ the\ subsystem=Alams\u00fcsteemi konfigureerimine +Relative\ Location=Suhteline asukoht +Location\ of\ this\ subsystem\ relative\ to\ the\ main\ system\ or\ platform\ reference\ frame=Selle alams\u00fcsteemi asukoht p\u00f5his\u00fcsteemi v\u00f5i platvormi v\u00f5rdlusraami suhtes +Relative\ Orientation=Suhteline orientatsioon +Orientation\ of\ this\ subsystem\ relative\ to\ the\ main\ system\ or\ platform\ reference\ frame=Selle alams\u00fcsteemi suund p\u00f5his\u00fcsteemi v\u00f5i platvormi v\u00f5rdlusraami suhtes +Fixed\ system\ orientation\ in\ the\ local\ NED\ reference\ frame=Fikseeritud s\u00fcsteemi orientatsioon kohalikus NED-i v\u00f5rdlusraamis +Subsystems=Alams\u00fcsteemid +Configuration\ of\ components\ of\ this\ sensor\ system=Selle anduris\u00fcsteemi komponentide konfigureerimine +Database\ Config=Andmebaasi konfiguratsioon +Configuration\ of\ underlying\ database=Aluseks oleva andmebaasi konfigureerimine +System\ UIDs=S\u00fcsteemi UID-d +Unique\ IDs\ of\ system\ drivers\ handled\ by\ this\ database=Selle andmebaasi hallatavate s\u00fcsteemidraiverite unikaalsed ID-d +Automatic\ Purge\ Policy=Automaatse puhastamise poliitika +Policy\ for\ automatically\ purging\ historical\ data=Ajalooliste andmete automaatse kustutamise eeskirjad +Uncheck\ to\ disable\ auto-purge\ temporarily=Automaatse t\u00fchjendamise ajutiselt keelamiseks t\u00fchjendage ruut +Purge\ Execution\ Period=Puhastamise teostamise periood +Unique\ IDs\ of\ system\ drivers\ to\ purge=S\u00fcsteemi draiverite unikaalsed ID-d, mida puhastada +Max\ Record\ Age=Maksimaalne rekordiga +SensorML\ File=SensorML-fail +Path\ of\ SensorML\ description\ of\ the\ process=Path of SensorML protsessi kirjeldus +List\ of\ users\ allowed\ access\ to\ this\ system=Kasutajate loend, kellel on sellele s\u00fcsteemile juurdep\u00e4\u00e4s +List\ of\ security\ roles=Turvarollide loend +User\ ID=Kasutaja ID +Role\ ID=Rolli ID +Source\ Database\ ID=Allika andmebaasi ID +ID\ of\ database\ module\ to\ read\ data\ from\ (Federated\ database\ will\ be\ used\ if\ not\ set=Andmebaasimooduli ID, millest andmeid lugeda (kui pole m\u00e4\u00e4ratud, kasutatakse liitandmebaasi +HTTP\ Port=HTTP-port +HTTPS\ Port=HTTPS-port +Root\ URL\ where\ static\ web\ content\ will\ be\ served.=Juur-URL, kus staatilist veebisisu esitatakse. +Directory\ where\ static\ web\ content\ is\ located.=Kataloog, kus asub staatiline veebisisu. +Root\ URL\ where\ the\ server\ will\ accept\ requests.\ This\ will\ be\ the\ prefix\ to\ all\ servlet\ URLs.=Juur-URL, kus server taotlusi vastu v\u00f5tab. See on k\u00f5igi servleti URL-ide eesliide. +Proxy\ Base\ URL=Puhverserveri baas-URL +Public\ URL\ as\ viewed\ from\ the\ outside\ when\ requests\ transit\ through\ a\ proxy\ server.=Avalik URL v\u00e4ljastpoolt vaadatuna, kui p\u00e4ringud edastatakse puhverserveri kaudu. +Authentication\ Method=Autentimismeetod +Method\ used\ to\ authenticate\ users\ on\ this\ server=Selle serveri kasutajate autentimiseks kasutatav meetod +Path\ to\ a\ key\ store\ containing\ the\ certificate\ and\ keypair\ that\ this\ server\ will\ present\ to\ clients\ when\ accessed\ over\ HTTPS.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ \"javax.net.ssl.keyStore\"\ system\ property.\=Path to a key store containing the certificate and keypair that this server will present to clients when accessed over HTTPS. If this value is blank, will default to using the value of the \"javax.net.ssl.keyStore\" system property. +Alias\ for\ the\ public/private\ keypair\ within\ the\ key\ store\ that\ will\ be\ used\ to\ identify\ this\ server.=V\u00f5tmehoidlas oleva avaliku/privaatse v\u00f5tmepaari pseudon\u00fc\u00fcm, mida kasutatakse selle serveri tuvastamiseks. +Path\ to\ the\ TLS\ trust\ store\ that\ is\ used\ when\ client\ authentication\ is\ required.\ Ignored\ if\ client\ certificate\ authentication\ is\ not\ used.\ Certificates\ in\ this\ file\ designate\ the\ signing\ authorities\ for\ client\ certificates\ that\ will\ be\ trusted.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ \"javax.net.ssl.trustStore\"\ system\ property.\=Path to the TLS trust store that is used when client authentication is required. Ignored if client certificate authentication is not used. Certificates in this file designate the signing authorities for client certificates that will be trusted. If this value is blank, will default to using the value of the \"javax.net.ssl.trustStore\" system property. +Password\ for\ the\ trust\ store.\ Ignored\ if\ client\ certificate\ authentication\ is\ not\ used.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ \"javax.net.ssl.trustStorePassword\"\ system\ property.\=Password for the trust store. Ignored if client certificate authentication is not used. If this value is blank, will default to using the value of the \"javax.net.ssl.trustStorePassword\" system property. +Enable\ CORS=Luba CORS +Enable\ generation\ of\ CORS\ headers\ to\ allow\ cross-domain\ requests\ from\ browsers=Lubage CORS-i p\u00e4iste genereerimine, et lubada brauseritelt domeeni\u00fcleseid p\u00e4ringuid +Capabilities\ Info=V\u00f5imaluste teave +Information\ included\ in\ the\ service\ capabilities\ document=Teenindusv\u00f5imaluste dokumendis sisalduv teave +Enable\ HTTP\ GET=Luba HTTP GET +Enables/disables\ HTTP\ GET\ bindings\ on\ operations\ that\ support\ it=Lubab/keelab HTTP GET-i sidumised seda toetavatel operatsioonidel +Enable\ HTTP\ POST=Luba HTTP POST +Enables/disables\ HTTP\ POST\ bindings\ on\ operations\ that\ support\ it=Lubab/keelab HTTP POST-i sidumise seda toetavate operatsioonide puhul +Enable\ HTTP\ SOAP=Luba HTTP SOAP +Enables/disables\ HTTP\ SOAP\ bindings\ on\ operations\ that\ support\ it=Lubab/keelab HTTP SOAP-i sidumised seda toetavatel operatsioonidel +Connection\ Timeout=\u00dchenduse ajal\u00f5pp +Reconnect\ Period=Taas\u00fchendamise periood +Max\ Reconnect\ Attempts=Maksimaalne taas\u00fchendamiskatse +Maximum\ number\ of\ times\ the\ client\ will\ attempt\ to\ reconnect\ when\ the\ connection\ is\ not\ available\ or\ lost.\ A\ negative\ value\ means\ that\ there\ is\ no\ limit\ to\ the\ number\ of\ reconnection\ attempts.\ Zero\ means\ not\ to\ attempt\ reconnection.=Maksimaalne arv kordi, kui klient proovib uuesti \u00fchendust luua, kui \u00fchendus pole saadaval v\u00f5i katkeb. Negatiivne v\u00e4\u00e4rtus t\u00e4hendab, et taas\u00fchendamiskatsete arv ei ole piiratud. Null t\u00e4hendab mitte \u00fcritada uuesti \u00fchendust luua. +IP\ or\ DNS\ name\ of\ remote\ host=Kaughosti IP- v\u00f5i DNS-nimi +IP\ of\ local\ network\ interface\ to\ bind\ to\ or\ 'AUTO'\ to\ select\ it\ automatically=Kohaliku v\u00f5rguliidese IP, millega seotakse, v\u00f5i "AUTO", et see automaatselt valida +Connection\ Options=\u00dchenduse valikud +Serial\ port\ device\ name.\ Usually\ something\ like\ /dev/ttyXXX\ on\ Linux=Jadapordi seadme nimi. Tavaliselt midagi sellist nagu /dev/ttyXXX Linuxis +Minimum\ number\ of\ bytes\ to\ receive\ before\ they\ are\ sent\ to\ the\ caller=Minimaalne baitide arv, mis tuleb saada enne helistajale saatmist +Local\ port\ number\ to\ use\ on\ the\ local\ host=Kohalik pordinumber kohalikus hostis kasutamiseks +Physical\ address\ of\ Bluetooth\ device\ to\ connect\ to=\u00dchenduse loomiseks kasutatava Bluetooth-seadme f\u00fc\u00fcsiline aadress +Port\ number\ to\ connect\ to\ on\ remote\ host=Pordi number, millega kaughostis \u00fchenduse luua +User\ Name=Kasutajanimi +Remote\ user\ name=Kaugkasutaja nimi +Password=Parool +Remote\ password=Kaugparool +Secure\ communications\ with\ SSL/TLS=Turvaline side SSL/TLS-iga +Enable\ to\ check\ if\ remote\ host\ is\ reachable\ before\ attempting\ further\ operations=Lubage enne edasiste toimingute tegemist kontrollida, kas kaughost on k\u00e4ttesaadav +Path\ or\ resource\ or\ service\ relative\ to\ server\ root=Tee v\u00f5i ressurss v\u00f5i teenus v\u00f5rreldes serveri juurega +Unique\ ID\ of\ system\ group=S\u00fcsteemir\u00fchma kordumatu ID +Name\ of\ system\ group=S\u00fcsteemir\u00fchma nimi +Description\ of\ system\ group=S\u00fcsteemir\u00fchma kirjeldus +List\ of\ bundle\ repository\ URLs=Kogumi hoidla URL-ide loend +A\ human\ readable\ friendly\ identifier\ for\ the\ deployment=Inimloetav s\u00f5bralik juurutuse identifikaator +Enable\ Landing\ Page=Sihtlehe lubamine +Enable\ Landing\ Servlet\ to\ redirect\ users\ to\ landing\ page=Kasutajate sihtlehele suunamiseks lubage sihtservlet +Config\ Class=Konfiguratsiooniklass +Type\ of\ module\ config\ class\ for\ which\ a\ custom\ panel\ must\ be\ generated=Mooduli konfiguratsiooniklassi t\u00fc\u00fcp, mille jaoks tuleb luua kohandatud paneel +UI\ Class=UI klass +Fully\ qualified\ name\ of\ class\ implementing\ IModuleAdminPanel=IModuleAdminPaneli rakendava klassi t\u00e4ielik nimi + +# Auto-extracted property IDs +sensorML=Andur Ml +lastUpdated=Viimati uuendatud +lat=Lat +lon=Lon +alt=Alt +x=X +y=Y +z=Z +heading=Pealkiri +pitch=Pitch +roll=Rulli +location=Asukoht +orientation=Orienteerumine +databaseNum=Andmebaasi nr +enableAccessControl=Luba juurdep\u00e4\u00e4sukontroll +requireAuth=N\u00f5ua autentimist +mimeType=Mime t\u00fc\u00fcp +className=Klassi nimi +endPoint=L\u00f5pp-punkt +id=Id +description=Kirjeldus +autoStart=Auto Start +topicName=Teema nimi +enablePublish=Luba avaldamine +enableSubscribe=Luba Tellimine +protocol=Protokoll +moduleConfigPath=Mooduli konfiguratsioonitee +moduleDataPath=Mooduli andmete tee +commonConfig=\u00dchine konfiguratsioon +sensors=Sensors +config=Konfig +uniqueID=Unikaalne ID +subsystems=Alams\u00fcsteemid +dbConfig=Db konfiguratsioon +systemUIDs=S\u00fcsteemi Uidid +autoPurgeConfig=Auto Purge Config +minCommitPeriod=Minimaalne kohustusperiood +enabled=Lubatud +purgePeriod=Puhastusperiood +maxRecordAge=Maksimaalne rekordiga +users=Kasutajad +roles=Rollid +allow=Luba +deny=Keela +userID=Kasutaja ID +name=Nimi +password=Parool +certificate=tunnistus +twoFactorSecret=Kahe teguri saladus +isTwoFactorEnabled=On kahe teguriga lubatud +roleID=Rolli ID +sourceDatabaseId=Allika andmebaasi ID +includeFilter=Kaasa filter +excludeFilter=V\u00e4lista filter +httpPort=HTTP-port +httpsPort=HTTPS-port +staticDocsRootUrl=Staatilise dokumentide juur-url +staticDocsRootDir=Static Docs Root Dir +servletsRootUrl=Servletite juure URL +proxyBaseUrl=Puhverserveri baasi URL +authMethod=Auth meetod +keyStorePath=V\u00f5tmepoe tee +keyStorePassword=V\u00f5tmehoidla parool +keyAlias=V\u00f5tme alias +trustStorePath=Usaldus poe tee +trustStorePassword=Usaldusv\u00e4\u00e4rse poe parool +xmlConfigFile=Xml konfiguratsioonifail +enableCORS=Luba Cors +title=Title +keywords=M\u00e4rks\u00f5nad +fees=Tasud +accessConstraints=Juurdep\u00e4\u00e4supiirangud +serviceProvider=Teenusepakkuja +ogcCapabilitiesInfo=Ogc v\u00f5imaluste teave +enableHttpGET=Lubage HTTP hankimine +enableHttpPOST=Lubage HTTP-postitus +enableSOAP=Luba seep +connectTimeout=\u00dchenduse ajal\u00f5pp +reconnectPeriod=Taas\u00fchendamise periood +reconnectAttempts=\u00dchenda uuesti +deviceID=Seadme ID +deviceClass=Seadme klass +remoteHost=Kaughost +localAddress=Kohalik aadress +connection=\u00dchendus +portName=Pordi nimi +baudRate=Baudi kiirus +dataBits=Andmebitid +stopBits=Stop Bits +parity=Pariteet +receiveTimeout=Vastuv\u00f5tmise ajal\u00f5pp +receiveThreshold=Vastuv\u00f5tmise l\u00e4vi +remotePort=Kaugport +localPort=Kohalik sadam +deviceAddress=Seadme aadress +deviceName=Seadme nimi +serviceUuid=Teenindus Uuid +user=Kasutaja +enableTLS=Luba Tls +checkReachability=Kontrollige k\u00e4ttesaadavust +resourcePath=Ressursi tee +uid=Uid +securityRole=Turvalisuse roll +passwordField=Parooliv\u00e4li +widgetSet=Vidinate komplekt +bundleRepoUrls=Repo URL-ide komplekt +customPanels=Kohandatud paneelid +customForms=Kohandatud vormid +deploymentName=Juurutamise nimi +enableLandingPage=Sihtlehe lubamine +configClass=Konfiguratsiooniklass +uiClass=Ui klass +moduleClass=Mooduli klass + +# Auto-extracted hardcoded UI strings +testLinks1=Testi lingid +uniqueID1=Unikaalne ID +foiIDs1=FOI ID-d +version1=Versioon + +Connected\ Systems\ Endpoint=\u00dchendatud s\u00fcsteemide l\u00f5pp-punkt +Connected\ Systems\ endpoint\ where\ the\ requests\ are\ sent=\u00dchendatud s\u00fcsteemide l\u00f5pp-punkt, kuhu p\u00e4ringud saadetakse +Connection\ Settings=\u00dchenduse s\u00e4tted +Custom\ connector\ configurations=Kohandatud pistiku konfiguratsioonid +Custom\ provider\ configurations=Kohandatud pakkuja konfiguratsioonid +Database\ ID=Andmebaasi ID +Default\ live\ time-out\ for\ all\ offerings,\ unless\ overriden\ by\ custom\ provider\ settings=Reaalajas vaikeaegu k\u00f5igi pakkumiste jaoks, v\u00e4lja arvatud juhul, kui kohandatud teenusepakkuja seaded seda alistavad +Default\ live\ time-out\ for\ new\ offerings\ created\ via\ SOS-T=SOS-T kaudu loodud uute pakkumiste reaalajas vaikeaegu +Enable\ to\ use\ a\ persistent\ HTTP\ connection\ for\ InsertResult=Lubage InsertResulti jaoks p\u00fcsiva HTTP-\u00fchenduse kasutamine +Execution\ period\ of\ the\ purge\ policy\ (in\ seconds)=Puhastuspoliitika t\u00e4itmisperiood (sekundites) +Filtered\ view\ to\ select\ systems\ exposed\ as\ read-only\ through\ this\ service=Filtreeritud vaade s\u00fcsteemide valimiseks, mis on selle teenuse kaudu kirjutuskaitstud +Filtered\ view\ to\ select\ systems/datastreams\ to\ register\ with\ Connected\ Systems=Filtreeritud vaade s\u00fcsteemide/andmevoogude valimiseks, mida Connected Systemsis registreerida +Filtered\ view\ to\ select\ systems/datastreams\ to\ register\ with\ remote\ SOS=Filtreeritud vaade s\u00fcsteemide/andmevoogude valimiseks kaug-SOS-iga registreerimiseks +Fixed\ system\ location\ in\ EPSG\ 4979\ (WGS84)\ coordinate\ system=Fikseeritud s\u00fcsteemi asukoht EPSG 4979 (WGS84) koordinaats\u00fcsteemis +For\ each\ connection\ or\ reconnection\ attempt,\ the\ client\ will\ wait\ for\ the\ remote\ side\ to\ respond\ until\ this\ timeout\ expires\ (in\ ms)=Iga \u00fchenduse v\u00f5i taas\u00fchendamise katse puhul ootab klient kaugosa vastust, kuni aeg l\u00f5peb (ms) +Heading\ (or\ yaw)\ angle\ about\ Z\ axis\ in\ degrees=Suuna (v\u00f5i lengerdus) nurk Z-telje \u00fcmber kraadides +How\ long\ the\ client\ will\ wait\ after\ connection\ is\ lost\ before\ it\ will\ attempt\ to\ reconnect\ (in\ ms)=Kui kaua klient ootab p\u00e4rast \u00fchenduse katkemist, enne kui proovib uuesti \u00fchendust luua (ms) +ID\ Generator=ID generaator +ID\ of\ database\ module\ used\ for\ persisting\ data\ received\ by\ this\ service.\ If\ none\ is\ provided,\ new\ systems\ registered\ through\ this\ service\ will\ be\ available\ on\ the\ hub,\ but\ with\ no\ persistence\ guarantee\ across\ restarts.=Andmebaasimooduli ID, mida kasutatakse selle teenuse vastuv\u00f5etud p\u00fcsivate andmete jaoks. Kui seda ei pakuta, on selle teenuse kaudu registreeritud uued s\u00fcsteemid jaoturis saadaval, kuid taask\u00e4ivitamistel pole p\u00fcsivuse garantiid. +ID\ of\ database\ module\ used\ for\ persisting\ data\ received\ by\ this\ service.\ If\ none\ is\ provided,\ new\ systems\ registered\ through\ this\ service\ will\ be\ available\ on\ the\ hub,\ but\ with\ no\ persistence\ guarantee\ across\ restarts.\ Only\ the\ latest\ observation\ from\ each\ datastream\ will\ be\ available\ and\ older\ observations\ will\ be\ discarded=Andmebaasimooduli ID, mida kasutatakse selle teenuse vastuv\u00f5etud p\u00fcsivate andmete jaoks. Kui seda ei pakuta, on selle teenuse kaudu registreeritud uued s\u00fcsteemid jaoturis saadaval, kuid taask\u00e4ivitamistel pole p\u00fcsivuse garantiid. Saadaval on ainult iga andmevoo viimane vaatlus ja vanemad vaatlused j\u00e4etakse k\u00f5rvale +Individual\ configuration\ of\ sensors\ in\ the\ array\ (will\ override\ common\ configuration)=Massiivi andurite individuaalne konfiguratsioon (alistab tavalise konfiguratsiooni) +List\ of\ observed\ properties\ URI\ to\ make\ available\ as\ outputs=Vaadeldavate omaduste URI loend, mis tuleb v\u00e4ljundina k\u00e4ttesaadavaks teha +Mapping\ of\ custom\ formats\ mime-types\ to\ custom\ serializer\ classes=Kohandatud vormingute MIME-t\u00fc\u00fcpide vastendamine kohandatud jadajadamise klassidele +Mappings\ used\ by\ CURIE\ to\ URI\ resolver=CURIE kasutatavad vastendused URI lahendajaks +Max\ Limit=Maksimaalne piirm\u00e4\u00e4r +Max\ Observations\ Returned=Max Observations Returned +Max\ Records\ Returned=Max Records tagastati +Max\ delay\ between\ auto-commit\ execution,\ in\ seconds.\ 0\ to\ disable\ time-based\ auto-commit=Maksimaalne viivitus automaatse kinnistamise vahel sekundites. 0 ajap\u00f5hise automaatse kinnitamise keelamiseks +Maximum\ age\ of\ data\ to\ be\ kept\ in\ storage\ (in\ seconds)=Salves hoitavate andmete maksimaalne vanus (sekundites) +Maximum\ number\ of\ FoI\ IDs\ listed\ in\ capabilities=V\u00f5imalustes loetletud FoI ID-de maksimaalne arv +Maximum\ number\ of\ observations\ returned\ \ by\ a\ historical\ GetObservation\ request\ (for\ each\ selected\ offering)=Ajaloolise GetObservationi p\u00e4ringuga tagastatud vaatluste maksimaalne arv (iga valitud pakkumise kohta) +Maximum\ number\ of\ records\ in\ upload\ queue\ (used\ to\ compensate\ for\ variable\ bandwidth)=\u00dcleslaadimisj\u00e4rjekorras olevate kirjete maksimaalne arv (kasutatakse muutuva ribalaiuse kompenseerimiseks) +Maximum\ number\ of\ resources\ returned\ in\ a\ single\ page=\u00dchel lehel tagastatavate ressursside maksimaalne arv +Maximum\ number\ of\ result\ records\ returned\ by\ a\ historical\ GetResult\ request=Ajaloolise GetResulti p\u00e4ringuga tagastatud tulemuskirjete maksimaalne arv +Maximum\ number\ of\ stream\ errors\ before\ we\ try\ to\ reconnect\ to\ remote\ server=Maksimaalne voovigade arv enne kaugserveriga \u00fchenduse loomist +Memory\ cache\ size\ for\ page\ chunks,\ in\ KB=M\u00e4lu vahem\u00e4lu suurus lehe t\u00fckkide jaoks, KB +Metadata\ of\ system\ group\ that\ will\ be\ created\ to\ contain\ all\ procedures/sensors\ registered\ through\ this\ service.\ Only\ sensors\ in\ this\ group\ will\ be\ modifiable\ by\ this\ service=S\u00fcsteemir\u00fchma metaandmed, mis luuakse, et sisaldada k\u00f5iki selle teenuse kaudu registreeritud protseduure/andureid. See teenus saab muuta ainult selle r\u00fchma andureid +Metadata\ of\ system\ group\ that\ will\ be\ created\ to\ contain\ all\ systems\ registered\ through\ this\ service.\ Only\ systems\ in\ this\ group\ will\ be\ modifiable\ by\ this\ service=S\u00fcsteemir\u00fchma metaandmed, mis luuakse, et sisaldada k\u00f5iki selle teenuse kaudu registreeritud s\u00fcsteeme. See teenus saab muuta ainult selle r\u00fchma s\u00fcsteeme +Method\ used\ to\ generate\ new\ resource\ IDs=Uute ressursi ID-de loomiseks kasutatav meetod +Minimum\ fillrate\ above\ which\ auto\ compact\ operations\ may\ be\ triggered=Minimaalne t\u00e4itekiirus, mille \u00fcletamisel v\u00f5idakse k\u00e4ivitada automaatsed tihendustoimingud +Minimum\ period\ between\ database\ commits\ (in\ ms)=Minimaalne ajavahemik andmebaasi sissemaksete vahel (ms) +Names\ of\ datastreams\ whose\ data\ will\ be\ hidden\ from\ the\ SOS.\ If\ this\ is\ null,\ all\ streams\ produced\ by\ the\ procedure\ are\ exposed=Andmevoogude nimed, mille andmed SOS-i eest peidetakse. Kui see on null, kuvatakse k\u00f5ik protseduuriga toodetud vood +Observed\ Properties=Vaadeldavad omadused +Offering\ URI\ as\ exposed\ in\ capabilities.\ (if\ null,\ the\ procedure\ UID\ is\ used)=URI pakkumine v\u00f5imaluste osas. (kui null, kasutatakse protseduuri UID-d) +Offering\ description\ (if\ null,\ it\ will\ be\ auto-generated)=Pakkumise kirjeldus (kui null, genereeritakse see automaatselt) +Offering\ name\ (if\ null,\ the\ procedure\ name\ is\ used)=Pakkumise nimi (kui null, kasutatakse protseduuri nime) +Orientation\ as\ Euler\ angles\ in\ NED\ coordinate\ reference\ frame.\nOrder\ of\ rotations\ is\ z-y\u2019-x"\ (in\ rotating\ frame)\ or\ x-y-z\ (in\ fixed\ frame)=Orientatsioon Euleri nurkadena NED koordinaatide v\u00f5rdlusraamis.\nP\u00f6\u00f6ramiste j\u00e4rjekord on z-y\u2019-x" (p\u00f6\u00f6rlevas raamis) v\u00f5i x-y-z (fikseeritud raamis) +Password\ for\ the\ key\ store\ (and\ for\ the\ keypair\ within\ the\ keystore).\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ "javax.net.ssl.keyStorePassword"\ system\ property.\ This\ value\ can\ use\ variable\ expansion\ expressions\ of\ the\ form\ "$${name}"\ (for\ environment\ variables\ and\ system\ properties)\ or\ "$${file;/path/to/file}"\ (for\ secret\ file\ contents).=V\u00f5tmehoidla (ja v\u00f5tmehoidlas oleva v\u00f5tmepaari) parool. Kui see v\u00e4\u00e4rtus on t\u00fchi, kasutatakse vaikimisi s\u00fcsteemiatribuudi "javax.net.ssl.keyStorePassword" v\u00e4\u00e4rtust. See v\u00e4\u00e4rtus v\u00f5ib kasutada muutuja laiendusavaldisi kujul "$${name}" (keskkonnamuutujate ja s\u00fcsteemiatribuutide jaoks) v\u00f5i "$${fail;/tee/faili/faili}" (salajase faili sisu jaoks). +Password\ for\ the\ trust\ store.\ Ignored\ if\ client\ certificate\ authentication\ is\ not\ used.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ "javax.net.ssl.trustStorePassword"\ system\ property.\ This\ value\ can\ use\ variable\ expansion\ expressions\ of\ the\ form\ "$${name}"\ (for\ environment\ variables\ and\ system\ properties)\ or\ "$${file;/path/to/file}"\ (for\ secret\ file\ contents).=Usalduspoe parool. Eiratakse, kui kliendi sertifikaadi autentimist ei kasutata. Kui see v\u00e4\u00e4rtus on t\u00fchi, kasutatakse vaikimisi s\u00fcsteemiatribuudi "javax.net.ssl.trustStorePassword" v\u00e4\u00e4rtust. See v\u00e4\u00e4rtus v\u00f5ib kasutada muutuja laiendusavaldisi kujul "$${name}" (keskkonnamuutujate ja s\u00fcsteemiatribuutide jaoks) v\u00f5i "$${fail;/tee/faili/faili}" (salajase faili sisu jaoks). +Path\ of\ service\ endpoint\ relative\ to\ the\ context\ URL\ (e.g.\ http\://server.net/sensorhub)=Teenuse l\u00f5pp-punkti tee konteksti URL-i suhtes (nt http://server.net/sensorhub) +Path\ to\ a\ key\ store\ containing\ the\ certificate\ and\ keypair\ that\ this\ server\ will\ present\ to\ clients\ when\ accessed\ over\ HTTPS.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ "javax.net.ssl.keyStore"\ system\ property.\ This\ value\ can\ use\ variable\ expansion\ expressions\ of\ the\ form\ "$${name}"\ (for\ environment\ variables\ and\ system\ properties)\ or\ "$${file;/path/to/file}"\ (for\ secret\ file\ contents).=Tee v\u00f5tmehoidlasse, mis sisaldab sertifikaati ja v\u00f5tmepaari, mida see server HTTPS-i kaudu klientidele esitab. Kui see v\u00e4\u00e4rtus on t\u00fchi, kasutatakse vaikimisi s\u00fcsteemiatribuudi "javax.net.ssl.keyStore" v\u00e4\u00e4rtust. See v\u00e4\u00e4rtus v\u00f5ib kasutada muutuja laiendusavaldisi kujul "$${name}" (keskkonnamuutujate ja s\u00fcsteemiatribuutide jaoks) v\u00f5i "$${fail;/tee/faili/faili}" (salajase faili sisu jaoks). +Path\ to\ database\ file=Tee andmebaasifaili +Path\ to\ external\ config\ file\ (in\ Jetty\ IOC\ XML\ format)=V\u00e4lise konfiguratsioonifaili tee (Jetty IOC XML-vormingus) +Path\ to\ the\ TLS\ trust\ store\ that\ is\ used\ when\ client\ authentication\ is\ required.\ Ignored\ if\ client\ certificate\ authentication\ is\ not\ used.\ Certificates\ in\ this\ file\ designate\ the\ signing\ authorities\ for\ client\ certificates\ that\ will\ be\ trusted.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ "javax.net.ssl.trustStore"\ system\ property.\ This\ value\ can\ use\ variable\ expansion\ expressions\ of\ the\ form\ "$${name}"\ (for\ environment\ variables\ and\ system\ properties)\ or\ "$${file;/path/to/file}"\ (for\ secret\ file\ contents).=Tee TLS-i usaldussalve juurde, mida kasutatakse siis, kui on vaja kliendi autentimist. Eiratakse, kui kliendi sertifikaadi autentimist ei kasutata. Selles failis olevad sertifikaadid m\u00e4\u00e4ravad usaldusv\u00e4\u00e4rsete kliendisertifikaatide allkirjastamise asutused. Kui see v\u00e4\u00e4rtus on t\u00fchi, kasutatakse vaikimisi s\u00fcsteemiatribuudi "javax.net.ssl.trustStore" v\u00e4\u00e4rtust. See v\u00e4\u00e4rtus v\u00f5ib kasutada muutuja laiendusavaldisi kujul "$${name}" (keskkonnamuutujate ja s\u00fcsteemiatribuutide jaoks) v\u00f5i "$${fail;/tee/faili/faili}" (salajase faili sisu jaoks). +Port\ number\ to\ connect\ to\ on\ remote\ host\ (0\ to\ automatically\ select\ a\ port)=Pordi number, millega kaughostis \u00fchenduse luua (0 pordi automaatseks valimiseks) +SOS\ Endpoint=SOS l\u00f5pp-punkt +SOS\ endpoint\ to\ fetch\ data\ from=SOS-i l\u00f5pp-punkt, kust andmeid tuua +SOS\ endpoint\ where\ the\ requests\ are\ sent=SOS l\u00f5pp-punkt, kuhu p\u00e4ringud saadetakse +SPS\ Endpoint=SPS l\u00f5pp-punkt +SPS\ endpoint\ to\ send\ commands\ to=SPS-i l\u00f5pp-punkt, kuhu k\u00e4sud saata +Security\ related\ options=Turvalisusega seotud valikud +Sensor\ UID=Anduri UID +Set\ if\ WebSocket\ protocol\ should\ be\ used\ to\ get\ streaming\ data\ from\ SOS=M\u00e4\u00e4rake, kas SOS-ist voogesituse andmete hankimiseks tuleks kasutada protokolli WebSocket +Set\ if\ offering\ is\ enabled,\ unset\ if\ disabled=M\u00e4\u00e4rake, kui pakkumine on lubatud, t\u00fchistage, kui see on keelatud +Set\ if\ websockets\ protocol\ should\ be\ used\ to\ send\ commands\ to\ SPS=M\u00e4\u00e4rake, kas SPS-ile k\u00e4skude saatmiseks tuleks kasutada Websocketsi protokolli +Set\ to\ compact\ the\ database\ file\ when\ the\ database\ module\ is\ stopped\ or\ restarted=M\u00e4\u00e4rake andmebaasifaili tihendamine andmebaasimooduli peatamisel v\u00f5i taask\u00e4ivitamisel +Set\ to\ compress\ underlying\ file\ storage=M\u00e4\u00e4rake alusfailide salvestusruumi tihendamine +Set\ to\ display\ MVStore\ debug\ info\ when\ database\ is\ closed\ (only\ if\ DEBUG\ log\ is\ also\ enabled)=M\u00e4\u00e4rake MVStore''i silumisinfo kuvamine, kui andmebaas on suletud (ainult siis, kui lubatud on ka SILUlogi) +Set\ to\ enable\ spatial\ indexing\ of\ individual\ observations\ sampling\ locations\ (when\ provided)=M\u00e4\u00e4rake, et v\u00f5imaldada \u00fcksikute vaatluste prooviv\u00f5tukohtade ruumiline indekseerimine (kui see on ette n\u00e4htud) +Set\ to\ open\ the\ database\ as\ read-only=M\u00e4\u00e4rake andmebaas avama kirjutuskaitstud kujul +Set\ to\ true\ to\ enable\ transactional\ operation\ support=Tehingutoimingute toe lubamiseks m\u00e4\u00e4rake v\u00e4\u00e4rtuseks T\u00f5ene +Size\ of\ the\ auto-commit\ write\ buffer,\ in\ KB=Automaatse sissekandmise kirjutuspuhvri suurus KB-des +TCP\ port\ where\ server\ will\ listen\ for\ secure\ HTTP\ (HTTPS)\ connections\ (use\ 0\ to\ disable\ HTTPS).=TCP-port, kus server kuulab turvalisi HTTP (HTTPS) \u00fchendusi (HTTS-i keelamiseks kasutage 0). +TCP\ port\ where\ server\ will\ listen\ for\ unsecure\ HTTP\ connections\ (use\ 0\ to\ disable\ HTTP).=TCP-port, kus server kuulab ebaturvalisi HTTP-\u00fchendusi (HTTP keelamiseks kasutage 0). +Time-out\ after\ which\ real-time\ requests\ are\ disabled\ if\ no\ more\ measurements\ are\ received\ (in\ seconds).\ Real-time\ is\ reactivated\ as\ soon\ as\ new\ records\ start\ being\ received\ again=Ajal\u00f5pp, mille j\u00e4rel reaalajas p\u00e4ringud keelatakse, kui rohkem m\u00f5\u00f5tmisi ei v\u00f5eta (sekundites). Reaalajas aktiveeritakse uuesti niipea, kui uusi kirjeid hakatakse uuesti vastu v\u00f5tma +Time-out\ period\ after\ which\ a\ template\ ID\ reserved\ using\ InsertResultTemplate\ will\ expire\ if\ not\ used\ in\ InsertResult\ requests\ (in\ seconds)=Aegumisperiood, mille m\u00f6\u00f6dudes InsertResultTemplate abil reserveeritud malli ID aegub, kui seda InsertResulti p\u00e4ringutes ei kasutata (sekundites) +Timeout\ after\ which\ data\ is\ released\ to\ the\ caller\ if\ at\ least\ one\ byte\ was\ received\ (in\ ms)=Aegumine, mille j\u00e4rel andmed helistajale v\u00e4ljastatakse, kui vastu v\u00f5eti v\u00e4hemalt \u00fcks bait (ms) +URI\ Prefix\ Map=URI eesliidete kaart +Unique\ ID\ (full\ URN\ or\ only\ suffix)\ to\ use\ for\ the\ sensor\ system\ or\ 'auto'\ to\ use\ the\ UUID\ randomly\ generated\ the\ first\ time\ the\ module\ is\ initialized=Unikaalne ID (t\u00e4ielik URN v\u00f5i ainult j\u00e4relliide), mida kasutatakse anduris\u00fcsteemi jaoks, v\u00f5i "automaatne" UUID kasutamiseks, mis genereeritakse juhuslikult mooduli esmakordsel initsialiseerimisel +Unique\ ID\ of\ a\ system\ that\ this\ configuration\ applies\ to.\nCan\ include\ a\ trailing\ wildcard\ '*'\ to\ match\ several\ systems\ at\ once.=S\u00fcsteemi kordumatu ID, millele see konfiguratsioon rakendub.\nV\u00f5ib sisaldada l\u00f5pu metam\u00e4rki ''*'', et sobitada mitu s\u00fcsteemi korraga. +Unique\ ID\ of\ sensor\ to\ connect\ to\ on\ SOS\ and\ SPS\ servers=Anduri unikaalne ID, millega SOS- ja SPS-serverites \u00fchenduda +Unique\ ID\ of\ system\ that\ this\ configuration\ applies\ to.\nCan\ include\ a\ trailing\ wildcard\ '*'\ to\ match\ several\ systems\ at\ once.=S\u00fcsteemi kordumatu ID, millele see konfiguratsioon rakendub.\nV\u00f5ib sisaldada l\u00f5pu metam\u00e4rki ''*'', et sobitada mitu s\u00fcsteemi korraga. +Use\ WebSockets\ for\ SOS=Kasutage SOS-i jaoks WebSocketti +Use\ WebSockets\ for\ SPS=Kasutage SPS-i jaoks WebSocketti + +Node\ ID=S\u00f5lme ID +Stats\ Frequency\ (min)=Statistika sagedus (min) +Database\ URL=Andmebaasi URL +Database\ Name=Andmebaasi nimi +ID\ Generator=ID generaator +Database\ Number=Andmebaasi number +Remote\ Host=Kaughost +Remote\ Port=Kaugport +Lane\ Width\ (m)=Raja laius (m) +Enable\ EML\ Analysis=Luba EML-anal\u00fc\u00fcs +Is\ Collimated=On kollimeeritud +Stream\ Path=Voo tee +Lane\ Options\ Config=Raja valikud Konfig diff --git a/sensorhub-webui-core/src/main/resources/org/sensorhub/ui/i18n/messages_fr.properties b/sensorhub-webui-core/src/main/resources/org/sensorhub/ui/i18n/messages_fr.properties new file mode 100644 index 0000000000..594015411a --- /dev/null +++ b/sensorhub-webui-core/src/main/resources/org/sensorhub/ui/i18n/messages_fr.properties @@ -0,0 +1,543 @@ +app.title=OpenSensorHub +tab.sensors=Capteurs +tab.databases=Bases de donn\u00e9es +tab.processing=Traitement +tab.services=Services +tab.clients=Client\u00e8le +tab.network=R\u00e9seau +tab.security=S\u00e9curit\u00e9 +action.shutdown=\u00c9teindre +action.logout=D\u00e9connexion +action.save=Enregistrer +action.addModule=Ajouter un module +action.addSubmodule=Ajouter un sous-module +action.removeModule=Supprimer le module +action.removeSubmodule=Supprimer le sous-module +action.start=D\u00e9marrer +action.stop=Arr\u00eater +action.restart=Red\u00e9marrer +action.forceInit=Forcer l''init +action.selectAll=Tout s\u00e9lectionner +action.deselectAll=Tout d\u00e9s\u00e9lectionner +dialog.shutdown.title=Extinction initi\u00e9e... +dialog.shutdown.message=L''interface cessera de r\u00e9pondre +dialog.shutdown.confirm=\u00cates-vous s\u00fbr de vouloir \u00e9teindre le concentrateur de capteurs ? +dialog.logout.confirm=\u00cates-vous s\u00fbr de vouloir vous d\u00e9connecter ? +dialog.save.confirm=\u00cates-vous s\u00fbr de vouloir enregistrer la configuration (et \u00e9craser la pr\u00e9c\u00e9dente) ? +msg.configSaved=Configuration SensorHub enregistr\u00e9e +msg.configSaveError=Impossible d''enregistrer la configuration +dialog.remove.confirm=\u00cates-vous s\u00fbr de vouloir supprimer {0} ?
Tous les param\u00e8tres seront perdus. +msg.removeError=Impossible de supprimer {0} +msg.startError=Impossible de d\u00e9marrer {0} +msg.stopError=Impossible d''arr\u00eater {0} +msg.restartError=Impossible de red\u00e9marrer {0} +msg.reinitError=Impossible de r\u00e9initialiser {0} +msg.loadError=Impossible de charger le module +msg.addSubmoduleError=Impossible d''ajouter le sous-module +about.title=\u00c0 propos d''OpenSensorHub +about.desc=Une plateforme logicielle pour construire des r\u00e9seaux de capteurs intelligents et l''Internet des Objets +about.license=Sous licence Mozilla Public License v2.0 +about.version=Version : +about.build=Num\u00e9ro de build : +about.deployment=Nom du d\u00e9ploiement : +tooltip.shutdown=\u00c9teindre SensorHub +tooltip.logout=D\u00e9connexion du n\u0153ud OSH +tooltip.save=Enregistrer la config SensorHub +dialog.start.confirm=\u00cates-vous s\u00fbr de vouloir d\u00e9marrer {0} ? +dialog.stop.confirm=\u00cates-vous s\u00fbr de vouloir arr\u00eater {0} ? +dialog.restart.confirm=\u00cates-vous s\u00fbr de vouloir red\u00e9marrer {0} ? +dialog.reinit.confirm=\u00cates-vous s\u00fbr de vouloir forcer la r\u00e9initialisation de {0} ? +backgroundUpdate=Mise \u00e0 jour en arri\u00e8re-plan +sigmaThreshold=Seuil Sigma +nuclideIdentification=Identification des nucl\u00e9ides +tamperAlarm=Alarme de sabotage +occupancySensor=Capteur de pr\u00e9sence +stateOfHealth=\u00c9tat de sant\u00e9 +soh=SOH +1ScanThisQrCodeWithYourAuthenticatorApp=1. Scannez ce QR Code avec votre application d''authentification\u00a0: +2EnterThe6digitCodeGeneratedByTheApp=2. Saisissez le code \u00e0 6 chiffres g\u00e9n\u00e9r\u00e9 par l''application : +orEnterThisSecretKeyManually=Ou saisissez cette cl\u00e9 secr\u00e8te manuellement\u00a0: +loadingBundlesInformation=Chargement des informations sur les lots... +loadingPackageInformation=Chargement des informations sur le package... +arrayComponentNotSupported=Composant de tableau non pris en charge +twofactorAuthentication=Authentification \u00e0 deux facteurs +installMorePackages=Installer plus de packages... +errorGeneratingQrCode=Erreur lors de la g\u00e9n\u00e9ration du code QR +installMoreModules=Installer plus de modules... +detailedInstructions=Instructions d\u00e9taill\u00e9es +availableNetworks=R\u00e9seaux disponibles +processParameters=Param\u00e8tres du processus +verifyAndEnable=V\u00e9rifier et activer +dataSourceInfo=Informations sur la source de donn\u00e9es +detectedDevices=Appareils d\u00e9tect\u00e9s +installSelected=Installer s\u00e9lectionn\u00e9 +databaseContent=Contenu de la base de donn\u00e9es +itemsPerPage=Articles par page\u00a0: +commandInputs=Entr\u00e9es de commande +processInputs=Entr\u00e9es de processus +providerClass=Classe de fournisseur +processName=Nom du processus\u00a0: +configuration=Configuration +applyChanges=Appliquer les modifications +sendCommand=Envoyer la commande +useAddress=Utiliser l''adresse +selectNone=S\u00e9lectionnez Aucun +timeRange=Plage de temps\u00a0: +permissions=Autorisations +startScan=D\u00e9marrer l''analyse +noReadme=Non README +stopScan=Arr\u00eater l''analyse +reset2fa=R\u00e9initialiser 2FA +previous=Pr\u00e9c\u00e9dent +useName=Utiliser le nom +outputs=Sorties +refresh=Rafra\u00eechir +modify=Modifier +cancel=Annuler +logout=D\u00e9connexion +remove=Retirer +verify=V\u00e9rifier +first=D''abord +login=Se connecter +last=Dernier +view=VOIR +next=Suivant +stop=Arr\u00eat +add=Ajouter +ui.empty=< +ok=D''ACCORD +1ScanThisQrCodeWithYourAuthenticatorApp1=1. Scannez ce QR Code avec votre application d''authentification\u00a0: +2EnterThe6digitCodeGeneratedByTheApp1=2. Saisissez le code \u00e0 6 chiffres g\u00e9n\u00e9r\u00e9 par l''application : +orEnterThisSecretKeyManually1=Ou saisissez cette cl\u00e9 secr\u00e8te manuellement\u00a0: +loadingPackageInformation1=Chargement des informations sur le package... +loadingBundlesInformation1=Chargement des informations sur les lots... +arrayComponentNotSupported1=Composant de tableau non pris en charge +twofactorAuthentication1=Authentification \u00e0 deux facteurs +errorGeneratingQrCode1=Erreur lors de la g\u00e9n\u00e9ration du code QR +installMorePackages1=Installer plus de packages... +installMoreModules1=Installer plus de modules... +detailedInstructions1=Instructions d\u00e9taill\u00e9es +processParameters1=Param\u00e8tres du processus +availableNetworks1=R\u00e9seaux disponibles +verifyAndEnable1=V\u00e9rifier et activer +databaseContent1=Contenu de la base de donn\u00e9es +installSelected1=Installer s\u00e9lectionn\u00e9 +dataSourceInfo1=Informations sur la source de donn\u00e9es +detectedDevices1=Appareils d\u00e9tect\u00e9s +itemsPerPage1=Articles par page\u00a0: +processInputs1=Entr\u00e9es de processus +commandInputs1=Entr\u00e9es de commande +providerClass1=Classe de fournisseur +configuration1=Configuration +processName1=Nom du processus\u00a0: +applyChanges1=Appliquer les modifications +sendCommand1=Envoyer la commande +timeRange1=Plage de temps\u00a0: +useAddress1=Utiliser l''adresse +permissions1=Autorisations +selectNone1=S\u00e9lectionnez Aucun +startScan1=D\u00e9marrer l''analyse +noReadme1=Non README +reset2fa1=R\u00e9initialiser 2FA +stopScan1=Arr\u00eater l''analyse +useName1=Utiliser le nom +previous1=Pr\u00e9c\u00e9dent +refresh1=Rafra\u00eechir +outputs1=Sorties +cancel1=Annuler +logout1=D\u00e9connexion +modify1=Modifier +remove1=Retirer +verify1=V\u00e9rifier +first1=D''abord +login1=Se connecter +view1=VOIR +stop1=Arr\u00eat +next1=Suivant +last1=Dernier +add1=Ajouter +last2=>> +first2=<< +ok1=D''ACCORD +next2=> +previous2=< + +pleaseEnterAUserIDFirst1=Veuillez d''abord saisir un identifiant d''utilisateur +reset2FA1=R\u00e9initialiser 2FA +enable2FA1=Activer 2FA +twoFAEnabledSuccessfully1=2FA activ\u00e9 avec succ\u00e8s +invalidCode1=Code invalide +allowedAndDeniedPermissionsForUsersWithThisRole1=Autorisations autoris\u00e9es et refus\u00e9es pour les utilisateurs dot\u00e9s de ce r\u00f4le +manualEntry1=Saisie manuelle +toggleAutoRefreshDataOncePerSecond1=Activer l''actualisation automatique des donn\u00e9es une fois par seconde +lookupSystem1=Syst\u00e8me de recherche +lookupModule1=Module de recherche +lookupAddress1=Adresse de recherche +showPassword1=Afficher le mot de passe +showHistogram1=Afficher l''histogramme +hideHistogram1=Masquer l''histogramme +reloadDataFromDatabase1=Recharger les donn\u00e9es de la base de donn\u00e9es +fois1=FOI +username1=Nom d''utilisateur +password1=Mot de passe +loginFailed1=La connexion a \u00e9chou\u00e9 +invalidUsernameOrPassword1=Nom d''utilisateur ou mot de passe invalide +verificationCode1=Le code de v\u00e9rification +verificationFailed1=\u00c9chec de la v\u00e9rification +datasource1=Source de donn\u00e9es +process1=Processus +logoutFromOshNode1=D\u00e9connexion du n\u0153ud OSH +setParameter1=D\u00e9finir le param\u00e8tre +setupTwoFactorAuthentication1=Configurer l''authentification \u00e0 deux facteurs + +action.new_item=Nouveau {0} +Lane\ System=Syst\u00e8me de voies +Module\ Class=Classe de modules +Module\ Name=Nom du module +Module\ ID=ID du module +Description=Description +SensorML\ URL=URL du capteur\u00a0ML +UniqueID=ID unique +Last\ Updated=Derni\u00e8re mise \u00e0 jour +Auto\ Start=D\u00e9marrage automatique +Delete\ Data\ on\ Lane\ Removal=Supprimer les donn\u00e9es lors de la suppression de voie +Latitude=Latitude +Longitude=Longitude +Altitude=Altitude +Initial\ RPM\ Config=Configuration initiale du r\u00e9gime +Initial\ Camera\ Config=Configuration initiale de la cam\u00e9ra +Lane\ Options\ Config=Configuration des options de voie +tab.general=G\u00e9n\u00e9ral +tab.readme=LISEZMOI +Fixed\ Location=Emplacement fixe +Fixed\ Orientation=Orientation fixe +# Auto-extracted DisplayInfo labels and descriptions +URL\ of\ SensorML\ file\ providing\ the\ base\ description\ of\ the\ sensor=URL du fichier SensorML fournissant la description de base du capteur +Time\ at\ which\ the\ SensorML\ description\ was\ last\ updated=Heure \u00e0 laquelle la description SensorML a \u00e9t\u00e9 mise \u00e0 jour pour la derni\u00e8re fois +Geodetic\ latitude,\ in\ degrees=Latitude g\u00e9od\u00e9sique, en degr\u00e9s +Longitude,\ in\ degrees=Longitude, en degr\u00e9s +Height\ above\ ellipsoid,\ in\ meters=Hauteur au-dessus de l''ellipso\u00efde, en m\u00e8tres +X\ coordinate,\ in\ meters=Coordonn\u00e9e X, en m\u00e8tres +Y\ coordinate,\ in\ meters=Coordonn\u00e9e Y, en m\u00e8tres +Z\ coordinate,\ in\ meters=Coordonn\u00e9e Z, en m\u00e8tres +Pitch\ angle\ about\ Y\ axis,\ in\ degrees=Angle de tangage autour de l''axe Y, en degr\u00e9s +Roll\ angle\ about\ X\ axis,\ in\ degrees=Angle de roulis autour de l''axe X, en degr\u00e9s +Location\ in\ EPSG\:4979\ coordinate\ reference\ frame=Emplacement dans le cadre de r\u00e9f\u00e9rence de coordonn\u00e9es EPSG\u00a0:\u00a04979 +Database\ Number=Num\u00e9ro de base de donn\u00e9es +Numerical\ identifier\ of\ the\ database.\ Each\ database\ that\ should\ be\ exposed\ via\ the\ federated\ database\ API\ must\ have\ a\ unique\ number\ on\ the\ sensor\ hub.\ If\ visibility\ through\ the\ federated\ database\ is\ not\ desired,\ it\ can\ be\ omitted.=Identifiant num\u00e9rique de la base de donn\u00e9es. Chaque base de donn\u00e9es qui doit \u00eatre expos\u00e9e via l''API de base de donn\u00e9es f\u00e9d\u00e9r\u00e9e doit avoir un num\u00e9ro unique sur le hub de capteurs. Si la visibilit\u00e9 via la base de donn\u00e9es f\u00e9d\u00e9r\u00e9e n''est pas souhait\u00e9e, elle peut \u00eatre omise. +Enables\ fine-grained\ permission-based\ access\ control\ for\ this\ module=Permet un contr\u00f4le d''acc\u00e8s pr\u00e9cis bas\u00e9 sur les autorisations pour ce module +Require\ Authentication=Exiger une authentification +Set\ to\ require\ remote\ users\ to\ be\ authentified\ before\ they\ can\ use\ this\ service=D\u00e9finir pour exiger que les utilisateurs distants soient authentifi\u00e9s avant de pouvoir utiliser ce service +Endpoint=Point de terminaison +Unique\ local\ ID\ of\ the\ module=ID local unique du module +User\ description\ for\ the\ module=Description utilisateur du module +Set\ to\ automatically\ start\ the\ module\ when\ it\ is\ loaded=Configurer pour d\u00e9marrer automatiquement le module lorsqu''il est charg\u00e9 +Module\ implementation\ class=Classe d''impl\u00e9mentation de module +User\ chosen\ name\ for\ the\ module=Nom choisi par l''utilisateur pour le module +Name\ of\ topic/queue\ to\ use=Nom du sujet/file d''attente \u00e0 utiliser +Enable/disable\ writing\ to\ queue=Activer/d\u00e9sactiver l''\u00e9criture dans la file d''attente +Enable/disable\ reading\ from\ queue=Activer/d\u00e9sactiver la lecture \u00e0 partir de la file d''attente +Protocol\ Options=Options de protocole +Common\ Configuration=Configuration commune +Common\ configuration\ for\ sensors\ in\ the\ array=Configuration commune pour les capteurs du r\u00e9seau +Sensors\ Configuration=Configuration des capteurs +Subsystem\ Config=Configuration du sous-syst\u00e8me +Configuration\ of\ the\ subsystem=Configuration du sous-syst\u00e8me +Relative\ Location=Emplacement relatif +Location\ of\ this\ subsystem\ relative\ to\ the\ main\ system\ or\ platform\ reference\ frame=Localisation de ce sous-syst\u00e8me par rapport au r\u00e9f\u00e9rentiel principal du syst\u00e8me ou de la plateforme +Relative\ Orientation=Orientation relative +Orientation\ of\ this\ subsystem\ relative\ to\ the\ main\ system\ or\ platform\ reference\ frame=Orientation de ce sous-syst\u00e8me par rapport au r\u00e9f\u00e9rentiel principal du syst\u00e8me ou de la plateforme +Fixed\ system\ orientation\ in\ the\ local\ NED\ reference\ frame=Orientation fixe du syst\u00e8me dans le cadre de r\u00e9f\u00e9rence NED local +Subsystems=Sous-syst\u00e8mes +Configuration\ of\ components\ of\ this\ sensor\ system=Configuration des composants de ce syst\u00e8me de capteurs +Database\ Config=Configuration de la base de donn\u00e9es +Configuration\ of\ underlying\ database=Configuration de la base de donn\u00e9es sous-jacente +System\ UIDs=UID syst\u00e8me +Unique\ IDs\ of\ system\ drivers\ handled\ by\ this\ database=ID uniques des pilotes syst\u00e8me g\u00e9r\u00e9s par cette base de donn\u00e9es +Automatic\ Purge\ Policy=Politique de purge automatique +Policy\ for\ automatically\ purging\ historical\ data=Politique de purge automatique des donn\u00e9es historiques +Uncheck\ to\ disable\ auto-purge\ temporarily=D\u00e9cochez pour d\u00e9sactiver temporairement la purge automatique +Purge\ Execution\ Period=P\u00e9riode d''ex\u00e9cution de la purge +Unique\ IDs\ of\ system\ drivers\ to\ purge=ID uniques des pilotes syst\u00e8me \u00e0 purger +Max\ Record\ Age=\u00c2ge maximum d''enregistrement +SensorML\ File=Fichier SensorML +Path\ of\ SensorML\ description\ of\ the\ process=Chemin de la description SensorML du processus +List\ of\ users\ allowed\ access\ to\ this\ system=Liste des utilisateurs autoris\u00e9s \u00e0 acc\u00e9der \u00e0 ce syst\u00e8me +List\ of\ security\ roles=Liste des r\u00f4les de s\u00e9curit\u00e9 +User\ ID=ID de l''utilisateur +Role\ ID=ID de r\u00f4le +Source\ Database\ ID=ID de la base de donn\u00e9es source +ID\ of\ database\ module\ to\ read\ data\ from\ (Federated\ database\ will\ be\ used\ if\ not\ set=ID du module de base de donn\u00e9es \u00e0 partir duquel lire les donn\u00e9es (la base de donn\u00e9es f\u00e9d\u00e9r\u00e9e sera utilis\u00e9e si elle n''est pas d\u00e9finie +HTTP\ Port=Port HTTP +HTTPS\ Port=Port HTTPS +Root\ URL\ where\ static\ web\ content\ will\ be\ served.=URL racine o\u00f9 le contenu Web statique sera diffus\u00e9. +Directory\ where\ static\ web\ content\ is\ located.=R\u00e9pertoire o\u00f9 se trouve le contenu Web statique. +Root\ URL\ where\ the\ server\ will\ accept\ requests.\ This\ will\ be\ the\ prefix\ to\ all\ servlet\ URLs.=URL racine o\u00f9 le serveur acceptera les demandes. Ce sera le pr\u00e9fixe de toutes les URL de servlet. +Proxy\ Base\ URL=URL de base du proxy +Public\ URL\ as\ viewed\ from\ the\ outside\ when\ requests\ transit\ through\ a\ proxy\ server.=URL publique vue de l''ext\u00e9rieur lorsque les requ\u00eates transitent par un serveur proxy. +Authentication\ Method=M\u00e9thode d''authentification +Method\ used\ to\ authenticate\ users\ on\ this\ server=M\u00e9thode utilis\u00e9e pour authentifier les utilisateurs sur ce serveur +Path\ to\ a\ key\ store\ containing\ the\ certificate\ and\ keypair\ that\ this\ server\ will\ present\ to\ clients\ when\ accessed\ over\ HTTPS.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ \"javax.net.ssl.keyStore\"\ system\ property.\=Path to a key store containing the certificate and keypair that this server will present to clients when accessed over HTTPS. If this value is blank, will default to using the value of the \"javax.net.ssl.keyStore\" system property. +Alias\ for\ the\ public/private\ keypair\ within\ the\ key\ store\ that\ will\ be\ used\ to\ identify\ this\ server.=Alias \u200b\u200bpour la paire de cl\u00e9s publique/priv\u00e9e dans le magasin de cl\u00e9s qui sera utilis\u00e9e pour identifier ce serveur. +Path\ to\ the\ TLS\ trust\ store\ that\ is\ used\ when\ client\ authentication\ is\ required.\ Ignored\ if\ client\ certificate\ authentication\ is\ not\ used.\ Certificates\ in\ this\ file\ designate\ the\ signing\ authorities\ for\ client\ certificates\ that\ will\ be\ trusted.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ \"javax.net.ssl.trustStore\"\ system\ property.\=Path to the TLS trust store that is used when client authentication is required. Ignored if client certificate authentication is not used. Certificates in this file designate the signing authorities for client certificates that will be trusted. If this value is blank, will default to using the value of the \"javax.net.ssl.trustStore\" system property. +Password\ for\ the\ trust\ store.\ Ignored\ if\ client\ certificate\ authentication\ is\ not\ used.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ \"javax.net.ssl.trustStorePassword\"\ system\ property.\=Password for the trust store. Ignored if client certificate authentication is not used. If this value is blank, will default to using the value of the \"javax.net.ssl.trustStorePassword\" system property. +Enable\ CORS=Activer CORS +Enable\ generation\ of\ CORS\ headers\ to\ allow\ cross-domain\ requests\ from\ browsers=Activer la g\u00e9n\u00e9ration d''en-t\u00eates CORS pour autoriser les requ\u00eates inter-domaines provenant des navigateurs +Capabilities\ Info=Informations sur les capacit\u00e9s +Information\ included\ in\ the\ service\ capabilities\ document=Informations incluses dans le document sur les capacit\u00e9s de service +Enable\ HTTP\ GET=Activer HTTP GET +Enables/disables\ HTTP\ GET\ bindings\ on\ operations\ that\ support\ it=Active/d\u00e9sactive les liaisons HTTP GET sur les op\u00e9rations qui les prennent en charge +Enable\ HTTP\ POST=Activer HTTP POST +Enables/disables\ HTTP\ POST\ bindings\ on\ operations\ that\ support\ it=Active/d\u00e9sactive les liaisons HTTP POST sur les op\u00e9rations qui les prennent en charge +Enable\ HTTP\ SOAP=Activer le savon HTTP +Enables/disables\ HTTP\ SOAP\ bindings\ on\ operations\ that\ support\ it=Active/d\u00e9sactive les liaisons HTTP SOAP sur les op\u00e9rations qui les prennent en charge +Connection\ Timeout=D\u00e9lai de connexion +Reconnect\ Period=P\u00e9riode de reconnexion +Max\ Reconnect\ Attempts=Nombre maximal de tentatives de reconnexion +Maximum\ number\ of\ times\ the\ client\ will\ attempt\ to\ reconnect\ when\ the\ connection\ is\ not\ available\ or\ lost.\ A\ negative\ value\ means\ that\ there\ is\ no\ limit\ to\ the\ number\ of\ reconnection\ attempts.\ Zero\ means\ not\ to\ attempt\ reconnection.=Nombre maximum de fois o\u00f9 le client tentera de se reconnecter lorsque la connexion n''est pas disponible ou perdue. Une valeur n\u00e9gative signifie qu''il n''y a pas de limite au nombre de tentatives de reconnexion. Z\u00e9ro signifie ne pas tenter de se reconnecter. +IP\ or\ DNS\ name\ of\ remote\ host=Nom IP ou DNS de l''h\u00f4te distant +IP\ of\ local\ network\ interface\ to\ bind\ to\ or\ 'AUTO'\ to\ select\ it\ automatically=IP de l''interface r\u00e9seau locale \u00e0 laquelle lier ou \u00ab\u00a0AUTO\u00a0\u00bb pour la s\u00e9lectionner automatiquement +Connection\ Options=Options de connexion +Serial\ port\ device\ name.\ Usually\ something\ like\ /dev/ttyXXX\ on\ Linux=Nom du p\u00e9riph\u00e9rique du port s\u00e9rie. Habituellement, quelque chose comme /dev/ttyXXX sous Linux +Minimum\ number\ of\ bytes\ to\ receive\ before\ they\ are\ sent\ to\ the\ caller=Nombre minimum d''octets \u00e0 recevoir avant d''\u00eatre envoy\u00e9s \u00e0 l''appelant +Local\ port\ number\ to\ use\ on\ the\ local\ host=Num\u00e9ro de port local \u00e0 utiliser sur l''h\u00f4te local +Physical\ address\ of\ Bluetooth\ device\ to\ connect\ to=Adresse physique du p\u00e9riph\u00e9rique Bluetooth auquel se connecter +Port\ number\ to\ connect\ to\ on\ remote\ host=Num\u00e9ro de port auquel se connecter sur l''h\u00f4te distant +User\ Name=Nom d''utilisateur +Remote\ user\ name=Nom d''utilisateur distant +Password=Mot de passe +Remote\ password=Mot de passe distant +Secure\ communications\ with\ SSL/TLS=Communications s\u00e9curis\u00e9es avec SSL/TLS +Enable\ to\ check\ if\ remote\ host\ is\ reachable\ before\ attempting\ further\ operations=Activer pour v\u00e9rifier si l''h\u00f4te distant est accessible avant de tenter d''autres op\u00e9rations +Path\ or\ resource\ or\ service\ relative\ to\ server\ root=Chemin d''acc\u00e8s ou ressource ou service par rapport \u00e0 la racine du serveur +Unique\ ID\ of\ system\ group=ID unique du groupe syst\u00e8me +Name\ of\ system\ group=Nom du groupe syst\u00e8me +Description\ of\ system\ group=Description du groupe syst\u00e8me +List\ of\ bundle\ repository\ URLs=Liste des URL du r\u00e9f\u00e9rentiel de bundles +A\ human\ readable\ friendly\ identifier\ for\ the\ deployment=Un identifiant convivial et lisible par l''homme pour le d\u00e9ploiement +Enable\ Landing\ Page=Activer la page de destination +Enable\ Landing\ Servlet\ to\ redirect\ users\ to\ landing\ page=Activer Landing Servlet pour rediriger les utilisateurs vers la page de destination +Config\ Class=Classe de configuration +Type\ of\ module\ config\ class\ for\ which\ a\ custom\ panel\ must\ be\ generated=Type de classe de configuration de module pour laquelle un panneau personnalis\u00e9 doit \u00eatre g\u00e9n\u00e9r\u00e9 +UI\ Class=Classe d''interface utilisateur +Fully\ qualified\ name\ of\ class\ implementing\ IModuleAdminPanel=Nom complet de la classe impl\u00e9mentant IModuleAdminPanel + +# Auto-extracted property IDs +sensorML=Capteur Ml +lastUpdated=Derni\u00e8re mise \u00e0 jour +lat=latitude +lon=Lon +alt=Alt +x=X +y=Y +z=Z +heading=Titre +pitch=Pas +roll=Rouler +location=Emplacement +orientation=Orientation +databaseNum=Num\u00e9ro de base de donn\u00e9es +enableAccessControl=Activer le contr\u00f4le d''acc\u00e8s +requireAuth=Exiger l''authentification +mimeType=Type MIME +className=Nom de la classe +endPoint=Point final +id=Identifiant +description=Description +autoStart=D\u00e9marrage automatique +topicName=Nom du sujet +enablePublish=Activer la publication +enableSubscribe=Activer l''abonnement +protocol=Protocole +moduleConfigPath=Chemin de configuration du module +moduleDataPath=Chemin de donn\u00e9es du module +commonConfig=Configuration commune +sensors=Sensors +config=Configuration +uniqueID=Identifiant unique +subsystems=Sous-syst\u00e8mes +dbConfig=Configuration de la base de donn\u00e9es +systemUIDs=UID syst\u00e8me +autoPurgeConfig=Configuration de la purge automatique +minCommitPeriod=P\u00e9riode d''engagement minimale +enabled=Activ\u00e9 +purgePeriod=P\u00e9riode de purge +maxRecordAge=\u00c2ge maximum d''enregistrement +users=Utilisateurs +roles=R\u00f4les +allow=Permettre +deny=Refuser +userID=ID de l''utilisateur +name=Nom +password=Mot de passe +certificate=Certificat +twoFactorSecret=Secret \u00e0 deux facteurs +isTwoFactorEnabled=Deux facteurs sont-ils activ\u00e9s +roleID=ID de r\u00f4le +sourceDatabaseId=ID de la base de donn\u00e9es source +includeFilter=Inclure le filtre +excludeFilter=Exclure le filtre +httpPort=Port HTTP +httpsPort=Port HTTPS +staticDocsRootUrl=URL racine des documents statiques +staticDocsRootDir=R\u00e9pertoire racine des documents statiques +servletsRootUrl=URL racine des servlets +proxyBaseUrl=URL de base du proxy +authMethod=M\u00e9thode d''authentification +keyStorePath=Chemin du magasin de cl\u00e9s +keyStorePassword=Mot de passe du magasin de cl\u00e9s +keyAlias=Alias \u200b\u200b\u200b\u200bcl\u00e9s +trustStorePath=Chemin du magasin de confiance +trustStorePassword=Mot de passe du magasin de confiance +xmlConfigFile=Fichier de configuration XML +enableCORS=Activer les Cors +title=Title +keywords=Mots-cl\u00e9s +fees=Frais +accessConstraints=Contraintes d''acc\u00e8s +serviceProvider=Fournisseur de services +ogcCapabilitiesInfo=Informations sur les capacit\u00e9s de l''OGC +enableHttpGET=Activer l''obtention HTTP +enableHttpPOST=Activer la publication HTTP +enableSOAP=Activer le savon +connectTimeout=D\u00e9lai de connexion +reconnectPeriod=P\u00e9riode de reconnexion +reconnectAttempts=Tentatives de reconnexion +deviceID=Identifiant de l''appareil +deviceClass=Classe d''appareil +remoteHost=H\u00f4te distant +localAddress=Adresse locale +connection=Connexion +portName=Nom du port +baudRate=D\u00e9bit en bauds +dataBits=Bits de donn\u00e9es +stopBits=Bits d''arr\u00eat +parity=Parit\u00e9 +receiveTimeout=D\u00e9lai de r\u00e9ception +receiveThreshold=Seuil de r\u00e9ception +remotePort=Port distant +localPort=Port local +deviceAddress=Adresse de l''appareil +deviceName=Nom de l''appareil +serviceUuid=Uuid de service +user=Utilisateur +enableTLS=Activer TLS +checkReachability=V\u00e9rifier l''accessibilit\u00e9 +resourcePath=Chemin des ressources +uid=UID +securityRole=R\u00f4le de s\u00e9curit\u00e9 +passwordField=Champ de mot de passe +widgetSet=Ensemble de widgets +bundleRepoUrls=URL des d\u00e9p\u00f4ts group\u00e9s +customPanels=Panneaux personnalis\u00e9s +customForms=Formulaires personnalis\u00e9s +deploymentName=Nom du d\u00e9ploiement +enableLandingPage=Activer la page de destination +configClass=Classe de configuration +uiClass=Classe d''interface utilisateur +moduleClass=Classe de modules + +# Auto-extracted hardcoded UI strings +testLinks1=Liens de test +uniqueID1=Identifiant unique +foiIDs1=Identifiants FOI +version1=Version + +Connected\ Systems\ Endpoint=Point de terminaison des syst\u00e8mes connect\u00e9s +Connected\ Systems\ endpoint\ where\ the\ requests\ are\ sent=Point de terminaison des syst\u00e8mes connect\u00e9s o\u00f9 les requ\u00eates sont envoy\u00e9es +Connection\ Settings=Param\u00e8tres de connexion +Custom\ connector\ configurations=Configurations de connecteurs personnalis\u00e9es +Custom\ provider\ configurations=Configurations de fournisseur personnalis\u00e9es +Database\ ID=ID de base de donn\u00e9es +Default\ live\ time-out\ for\ all\ offerings,\ unless\ overriden\ by\ custom\ provider\ settings=D\u00e9lai d''expiration par d\u00e9faut pour toutes les offres, sauf remplacement par les param\u00e8tres personnalis\u00e9s du fournisseur +Default\ live\ time-out\ for\ new\ offerings\ created\ via\ SOS-T=D\u00e9lai d''expiration par d\u00e9faut pour les nouvelles offres cr\u00e9\u00e9es via SOS-T +Enable\ to\ use\ a\ persistent\ HTTP\ connection\ for\ InsertResult=Activer l''utilisation d''une connexion HTTP persistante pour InsertResult +Execution\ period\ of\ the\ purge\ policy\ (in\ seconds)=P\u00e9riode d''ex\u00e9cution de la politique de purge (en secondes) +Filtered\ view\ to\ select\ systems\ exposed\ as\ read-only\ through\ this\ service=Vue filtr\u00e9e pour s\u00e9lectionner les syst\u00e8mes expos\u00e9s en lecture seule via ce service +Filtered\ view\ to\ select\ systems/datastreams\ to\ register\ with\ Connected\ Systems=Vue filtr\u00e9e pour s\u00e9lectionner les syst\u00e8mes/flux de donn\u00e9es \u00e0 enregistrer aupr\u00e8s des syst\u00e8mes connect\u00e9s +Filtered\ view\ to\ select\ systems/datastreams\ to\ register\ with\ remote\ SOS=Vue filtr\u00e9e pour s\u00e9lectionner les syst\u00e8mes/flux de donn\u00e9es \u00e0 enregistrer aupr\u00e8s du SOS distant +Fixed\ system\ location\ in\ EPSG\ 4979\ (WGS84)\ coordinate\ system=Emplacement du syst\u00e8me fixe dans le syst\u00e8me de coordonn\u00e9es EPSG 4979 (WGS84) +For\ each\ connection\ or\ reconnection\ attempt,\ the\ client\ will\ wait\ for\ the\ remote\ side\ to\ respond\ until\ this\ timeout\ expires\ (in\ ms)=Pour chaque tentative de connexion ou de reconnexion, le client attendra que le c\u00f4t\u00e9 distant r\u00e9ponde jusqu''\u00e0 l''expiration de ce d\u00e9lai (en ms) +Heading\ (or\ yaw)\ angle\ about\ Z\ axis\ in\ degrees=Angle de cap (ou de lacet) autour de l''axe Z en degr\u00e9s +How\ long\ the\ client\ will\ wait\ after\ connection\ is\ lost\ before\ it\ will\ attempt\ to\ reconnect\ (in\ ms)=Combien de temps le client attendra apr\u00e8s la perte de la connexion avant de tenter de se reconnecter (en ms) +ID\ Generator=G\u00e9n\u00e9rateur d''identifiants +ID\ of\ database\ module\ used\ for\ persisting\ data\ received\ by\ this\ service.\ If\ none\ is\ provided,\ new\ systems\ registered\ through\ this\ service\ will\ be\ available\ on\ the\ hub,\ but\ with\ no\ persistence\ guarantee\ across\ restarts.=ID du module de base de donn\u00e9es utilis\u00e9 pour conserver les donn\u00e9es re\u00e7ues par ce service. Si aucun n''est fourni, les nouveaux syst\u00e8mes enregistr\u00e9s via ce service seront disponibles sur le hub, mais sans garantie de persistance lors des red\u00e9marrages. +ID\ of\ database\ module\ used\ for\ persisting\ data\ received\ by\ this\ service.\ If\ none\ is\ provided,\ new\ systems\ registered\ through\ this\ service\ will\ be\ available\ on\ the\ hub,\ but\ with\ no\ persistence\ guarantee\ across\ restarts.\ Only\ the\ latest\ observation\ from\ each\ datastream\ will\ be\ available\ and\ older\ observations\ will\ be\ discarded=ID du module de base de donn\u00e9es utilis\u00e9 pour conserver les donn\u00e9es re\u00e7ues par ce service. Si aucun n''est fourni, les nouveaux syst\u00e8mes enregistr\u00e9s via ce service seront disponibles sur le hub, mais sans garantie de persistance lors des red\u00e9marrages. Seules les derni\u00e8res observations de chaque flux de donn\u00e9es seront disponibles et les observations plus anciennes seront supprim\u00e9es. +Individual\ configuration\ of\ sensors\ in\ the\ array\ (will\ override\ common\ configuration)=Configuration individuelle des capteurs dans le r\u00e9seau (ignorera la configuration commune) +List\ of\ observed\ properties\ URI\ to\ make\ available\ as\ outputs=Liste des propri\u00e9t\u00e9s observ\u00e9es URI \u00e0 rendre disponible en sortie +Mapping\ of\ custom\ formats\ mime-types\ to\ custom\ serializer\ classes=Mappage des types MIME de formats personnalis\u00e9s avec des classes de s\u00e9rialiseur personnalis\u00e9es +Mappings\ used\ by\ CURIE\ to\ URI\ resolver=Mappages utilis\u00e9s par CURIE vers le r\u00e9solveur d''URI +Max\ Limit=Limite maximale +Max\ Observations\ Returned=Nombre maximal d''observations renvoy\u00e9es +Max\ Records\ Returned=Nombre maximal d''enregistrements renvoy\u00e9s +Max\ delay\ between\ auto-commit\ execution,\ in\ seconds.\ 0\ to\ disable\ time-based\ auto-commit=D\u00e9lai maximum entre l''ex\u00e9cution de la validation automatique, en secondes. 0 pour d\u00e9sactiver la validation automatique bas\u00e9e sur le temps +Maximum\ age\ of\ data\ to\ be\ kept\ in\ storage\ (in\ seconds)=\u00c2ge maximum des donn\u00e9es \u00e0 conserver en stockage (en secondes) +Maximum\ number\ of\ FoI\ IDs\ listed\ in\ capabilities=Nombre maximum d''ID FoI r\u00e9pertori\u00e9s dans les capacit\u00e9s +Maximum\ number\ of\ observations\ returned\ \ by\ a\ historical\ GetObservation\ request\ (for\ each\ selected\ offering)=Nombre maximum d''observations renvoy\u00e9es par une requ\u00eate historique GetObservation (pour chaque offre s\u00e9lectionn\u00e9e) +Maximum\ number\ of\ records\ in\ upload\ queue\ (used\ to\ compensate\ for\ variable\ bandwidth)=Nombre maximum d''enregistrements dans la file d''attente de t\u00e9l\u00e9chargement (utilis\u00e9 pour compenser la bande passante variable) +Maximum\ number\ of\ resources\ returned\ in\ a\ single\ page=Nombre maximum de ressources renvoy\u00e9es sur une seule page +Maximum\ number\ of\ result\ records\ returned\ by\ a\ historical\ GetResult\ request=Nombre maximum d''enregistrements de r\u00e9sultats renvoy\u00e9s par une requ\u00eate historique GetResult +Maximum\ number\ of\ stream\ errors\ before\ we\ try\ to\ reconnect\ to\ remote\ server=Nombre maximum d''erreurs de flux avant d''essayer de nous reconnecter au serveur distant +Memory\ cache\ size\ for\ page\ chunks,\ in\ KB=Taille du cache m\u00e9moire pour les fragments de page, en Ko +Metadata\ of\ system\ group\ that\ will\ be\ created\ to\ contain\ all\ procedures/sensors\ registered\ through\ this\ service.\ Only\ sensors\ in\ this\ group\ will\ be\ modifiable\ by\ this\ service=M\u00e9tadonn\u00e9es du groupe syst\u00e8me qui sera cr\u00e9\u00e9 pour contenir toutes les proc\u00e9dures/capteurs enregistr\u00e9s via ce service. Seuls les capteurs de ce groupe seront modifiables par ce service +Metadata\ of\ system\ group\ that\ will\ be\ created\ to\ contain\ all\ systems\ registered\ through\ this\ service.\ Only\ systems\ in\ this\ group\ will\ be\ modifiable\ by\ this\ service=M\u00e9tadonn\u00e9es du groupe de syst\u00e8mes qui sera cr\u00e9\u00e9 pour contenir tous les syst\u00e8mes enregistr\u00e9s via ce service. Seuls les syst\u00e8mes de ce groupe seront modifiables par ce service +Method\ used\ to\ generate\ new\ resource\ IDs=M\u00e9thode utilis\u00e9e pour g\u00e9n\u00e9rer de nouveaux ID de ressources +Minimum\ fillrate\ above\ which\ auto\ compact\ operations\ may\ be\ triggered=Taux de remplissage minimum au-dessus duquel les op\u00e9rations de compactage automatique peuvent \u00eatre d\u00e9clench\u00e9es +Minimum\ period\ between\ database\ commits\ (in\ ms)=P\u00e9riode minimale entre les validations de la base de donn\u00e9es (en ms) +Names\ of\ datastreams\ whose\ data\ will\ be\ hidden\ from\ the\ SOS.\ If\ this\ is\ null,\ all\ streams\ produced\ by\ the\ procedure\ are\ exposed=Noms des flux de donn\u00e9es dont les donn\u00e9es seront masqu\u00e9es du SOS. Si celui-ci est nul, tous les flux produits par la proc\u00e9dure sont expos\u00e9s +Observed\ Properties=Propri\u00e9t\u00e9s observ\u00e9es +Offering\ URI\ as\ exposed\ in\ capabilities.\ (if\ null,\ the\ procedure\ UID\ is\ used)=Offrir l\u2019URI tel qu\u2019expos\u00e9 dans les capacit\u00e9s. (si nul, l''UID de la proc\u00e9dure est utilis\u00e9) +Offering\ description\ (if\ null,\ it\ will\ be\ auto-generated)=Description de l''offre (si nulle, elle sera g\u00e9n\u00e9r\u00e9e automatiquement) +Offering\ name\ (if\ null,\ the\ procedure\ name\ is\ used)=Nom de l''offre (si nul, le nom de la proc\u00e9dure est utilis\u00e9) +Orientation\ as\ Euler\ angles\ in\ NED\ coordinate\ reference\ frame.\nOrder\ of\ rotations\ is\ z-y\u2019-x"\ (in\ rotating\ frame)\ or\ x-y-z\ (in\ fixed\ frame)=Orientation sous forme d''angles d''Euler dans le r\u00e9f\u00e9rentiel de coordonn\u00e9es NED.\nL''ordre des rotations est z-y''-x" (dans un cadre rotatif) ou x-y-z (dans un cadre fixe) +Password\ for\ the\ key\ store\ (and\ for\ the\ keypair\ within\ the\ keystore).\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ "javax.net.ssl.keyStorePassword"\ system\ property.\ This\ value\ can\ use\ variable\ expansion\ expressions\ of\ the\ form\ "$${name}"\ (for\ environment\ variables\ and\ system\ properties)\ or\ "$${file;/path/to/file}"\ (for\ secret\ file\ contents).=Mot de passe pour le magasin de cl\u00e9s (et pour la paire de cl\u00e9s dans le magasin de cl\u00e9s). Si cette valeur est vide, utilisera par d\u00e9faut la valeur de la propri\u00e9t\u00e9 syst\u00e8me \u00ab javax.net.ssl.keyStorePassword \u00bb. Cette valeur peut utiliser des expressions d''expansion de variable de la forme "$${name}" (pour les variables d''environnement et les propri\u00e9t\u00e9s syst\u00e8me) ou "$${file;/path/to/file}" (pour le contenu du fichier secret). +Password\ for\ the\ trust\ store.\ Ignored\ if\ client\ certificate\ authentication\ is\ not\ used.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ "javax.net.ssl.trustStorePassword"\ system\ property.\ This\ value\ can\ use\ variable\ expansion\ expressions\ of\ the\ form\ "$${name}"\ (for\ environment\ variables\ and\ system\ properties)\ or\ "$${file;/path/to/file}"\ (for\ secret\ file\ contents).=Mot de passe du magasin de confiance. Ignor\u00e9 si l''authentification par certificat client n''est pas utilis\u00e9e. Si cette valeur est vide, utilisera par d\u00e9faut la valeur de la propri\u00e9t\u00e9 syst\u00e8me \u00ab javax.net.ssl.trustStorePassword \u00bb. Cette valeur peut utiliser des expressions d''expansion de variable de la forme "$${name}" (pour les variables d''environnement et les propri\u00e9t\u00e9s syst\u00e8me) ou "$${file;/path/to/file}" (pour le contenu du fichier secret). +Path\ of\ service\ endpoint\ relative\ to\ the\ context\ URL\ (e.g.\ http\://server.net/sensorhub)=Chemin du point de terminaison du service par rapport \u00e0 l''URL du contexte (par exemple http://server.net/sensorhub) +Path\ to\ a\ key\ store\ containing\ the\ certificate\ and\ keypair\ that\ this\ server\ will\ present\ to\ clients\ when\ accessed\ over\ HTTPS.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ "javax.net.ssl.keyStore"\ system\ property.\ This\ value\ can\ use\ variable\ expansion\ expressions\ of\ the\ form\ "$${name}"\ (for\ environment\ variables\ and\ system\ properties)\ or\ "$${file;/path/to/file}"\ (for\ secret\ file\ contents).=Chemin d''acc\u00e8s \u00e0 un magasin de cl\u00e9s contenant le certificat et la paire de cl\u00e9s que ce serveur pr\u00e9sentera aux clients lors d''un acc\u00e8s via HTTPS. Si cette valeur est vide, utilisera par d\u00e9faut la valeur de la propri\u00e9t\u00e9 syst\u00e8me \u00ab javax.net.ssl.keyStore \u00bb. Cette valeur peut utiliser des expressions d''expansion de variable de la forme "$${name}" (pour les variables d''environnement et les propri\u00e9t\u00e9s syst\u00e8me) ou "$${file;/path/to/file}" (pour le contenu du fichier secret). +Path\ to\ database\ file=Chemin d''acc\u00e8s au fichier de base de donn\u00e9es +Path\ to\ external\ config\ file\ (in\ Jetty\ IOC\ XML\ format)=Chemin d''acc\u00e8s au fichier de configuration externe (au format XML Jetty IOC) +Path\ to\ the\ TLS\ trust\ store\ that\ is\ used\ when\ client\ authentication\ is\ required.\ Ignored\ if\ client\ certificate\ authentication\ is\ not\ used.\ Certificates\ in\ this\ file\ designate\ the\ signing\ authorities\ for\ client\ certificates\ that\ will\ be\ trusted.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ "javax.net.ssl.trustStore"\ system\ property.\ This\ value\ can\ use\ variable\ expansion\ expressions\ of\ the\ form\ "$${name}"\ (for\ environment\ variables\ and\ system\ properties)\ or\ "$${file;/path/to/file}"\ (for\ secret\ file\ contents).=Chemin d''acc\u00e8s au magasin de cl\u00e9s certifi\u00e9es TLS utilis\u00e9 lorsque l''authentification du client est requise. Ignor\u00e9 si l''authentification par certificat client n''est pas utilis\u00e9e. Les certificats de ce fichier d\u00e9signent les autorit\u00e9s de signature des certificats clients qui seront approuv\u00e9s. Si cette valeur est vide, utilisera par d\u00e9faut la valeur de la propri\u00e9t\u00e9 syst\u00e8me \u00ab javax.net.ssl.trustStore \u00bb. Cette valeur peut utiliser des expressions d''expansion de variable de la forme "$${name}" (pour les variables d''environnement et les propri\u00e9t\u00e9s syst\u00e8me) ou "$${file;/path/to/file}" (pour le contenu du fichier secret). +Port\ number\ to\ connect\ to\ on\ remote\ host\ (0\ to\ automatically\ select\ a\ port)=Num\u00e9ro de port auquel se connecter sur l''h\u00f4te distant (0 pour s\u00e9lectionner automatiquement un port) +SOS\ Endpoint=Point de terminaison SOS +SOS\ endpoint\ to\ fetch\ data\ from=Point de terminaison SOS \u00e0 partir duquel r\u00e9cup\u00e9rer les donn\u00e9es +SOS\ endpoint\ where\ the\ requests\ are\ sent=Point de terminaison SOS o\u00f9 les requ\u00eates sont envoy\u00e9es +SPS\ Endpoint=Point final SPS +SPS\ endpoint\ to\ send\ commands\ to=Point de terminaison SPS auquel envoyer des commandes +Security\ related\ options=Options li\u00e9es \u00e0 la s\u00e9curit\u00e9 +Sensor\ UID=UID du capteur +Set\ if\ WebSocket\ protocol\ should\ be\ used\ to\ get\ streaming\ data\ from\ SOS=D\u00e9finir si le protocole WebSocket doit \u00eatre utilis\u00e9 pour obtenir des donn\u00e9es en streaming \u00e0 partir de SOS +Set\ if\ offering\ is\ enabled,\ unset\ if\ disabled=D\u00e9finir si l''offre est activ\u00e9e, d\u00e9sactiver si elle est d\u00e9sactiv\u00e9e +Set\ if\ websockets\ protocol\ should\ be\ used\ to\ send\ commands\ to\ SPS=D\u00e9finir si le protocole Websockets doit \u00eatre utilis\u00e9 pour envoyer des commandes au SPS +Set\ to\ compact\ the\ database\ file\ when\ the\ database\ module\ is\ stopped\ or\ restarted=D\u00e9finir pour compacter le fichier de base de donn\u00e9es lorsque le module de base de donn\u00e9es est arr\u00eat\u00e9 ou red\u00e9marr\u00e9 +Set\ to\ compress\ underlying\ file\ storage=Configurer pour compresser le stockage de fichiers sous-jacent +Set\ to\ display\ MVStore\ debug\ info\ when\ database\ is\ closed\ (only\ if\ DEBUG\ log\ is\ also\ enabled)=D\u00e9finir pour afficher les informations de d\u00e9bogage MVStore lorsque la base de donn\u00e9es est ferm\u00e9e (uniquement si le journal DEBUG est \u00e9galement activ\u00e9) +Set\ to\ enable\ spatial\ indexing\ of\ individual\ observations\ sampling\ locations\ (when\ provided)=Configur\u00e9 pour permettre l''indexation spatiale des emplacements d''\u00e9chantillonnage d''observations individuelles (le cas \u00e9ch\u00e9ant) +Set\ to\ open\ the\ database\ as\ read-only=D\u00e9finir pour ouvrir la base de donn\u00e9es en lecture seule +Set\ to\ true\ to\ enable\ transactional\ operation\ support=D\u00e9finir sur true pour activer la prise en charge des op\u00e9rations transactionnelles +Size\ of\ the\ auto-commit\ write\ buffer,\ in\ KB=Taille du tampon d''\u00e9criture de validation automatique, en Ko +TCP\ port\ where\ server\ will\ listen\ for\ secure\ HTTP\ (HTTPS)\ connections\ (use\ 0\ to\ disable\ HTTPS).=Port TCP sur lequel le serveur \u00e9coutera les connexions HTTP s\u00e9curis\u00e9es (HTTPS) (utilisez 0 pour d\u00e9sactiver HTTPS). +TCP\ port\ where\ server\ will\ listen\ for\ unsecure\ HTTP\ connections\ (use\ 0\ to\ disable\ HTTP).=Port TCP sur lequel le serveur \u00e9coutera les connexions HTTP non s\u00e9curis\u00e9es (utilisez 0 pour d\u00e9sactiver HTTP). +Time-out\ after\ which\ real-time\ requests\ are\ disabled\ if\ no\ more\ measurements\ are\ received\ (in\ seconds).\ Real-time\ is\ reactivated\ as\ soon\ as\ new\ records\ start\ being\ received\ again=Time-out apr\u00e8s lequel les requ\u00eates en temps r\u00e9el sont d\u00e9sactiv\u00e9es si plus aucune mesure n''est re\u00e7ue (en secondes). Le temps r\u00e9el est r\u00e9activ\u00e9 d\u00e8s que de nouveaux enregistrements recommencent \u00e0 \u00eatre re\u00e7us +Time-out\ period\ after\ which\ a\ template\ ID\ reserved\ using\ InsertResultTemplate\ will\ expire\ if\ not\ used\ in\ InsertResult\ requests\ (in\ seconds)=D\u00e9lai d''expiration apr\u00e8s lequel un ID de mod\u00e8le r\u00e9serv\u00e9 \u00e0 l''aide de InsertResultTemplate expirera s''il n''est pas utilis\u00e9 dans les requ\u00eates InsertResult (en secondes) +Timeout\ after\ which\ data\ is\ released\ to\ the\ caller\ if\ at\ least\ one\ byte\ was\ received\ (in\ ms)=D\u00e9lai d''attente apr\u00e8s lequel les donn\u00e9es sont transmises \u00e0 l''appelant si au moins un octet a \u00e9t\u00e9 re\u00e7u (en ms) +URI\ Prefix\ Map=Carte des pr\u00e9fixes URI +Unique\ ID\ (full\ URN\ or\ only\ suffix)\ to\ use\ for\ the\ sensor\ system\ or\ 'auto'\ to\ use\ the\ UUID\ randomly\ generated\ the\ first\ time\ the\ module\ is\ initialized=ID unique (URN complet ou suffixe uniquement) \u00e0 utiliser pour le syst\u00e8me de capteurs ou \u00ab\u00a0auto\u00a0\u00bb pour utiliser l''UUID g\u00e9n\u00e9r\u00e9 al\u00e9atoirement lors de la premi\u00e8re initialisation du module. +Unique\ ID\ of\ a\ system\ that\ this\ configuration\ applies\ to.\nCan\ include\ a\ trailing\ wildcard\ '*'\ to\ match\ several\ systems\ at\ once.=ID unique d''un syst\u00e8me auquel cette configuration s''applique.\nPeut inclure un caract\u00e8re g\u00e9n\u00e9rique de fin \u00ab\u00a0*\u00a0\u00bb pour faire correspondre plusieurs syst\u00e8mes \u00e0 la fois. +Unique\ ID\ of\ sensor\ to\ connect\ to\ on\ SOS\ and\ SPS\ servers=ID unique du capteur auquel se connecter sur les serveurs SOS et SPS +Unique\ ID\ of\ system\ that\ this\ configuration\ applies\ to.\nCan\ include\ a\ trailing\ wildcard\ '*'\ to\ match\ several\ systems\ at\ once.=ID unique du syst\u00e8me auquel cette configuration s\u2019applique.\nPeut inclure un caract\u00e8re g\u00e9n\u00e9rique de fin \u00ab\u00a0*\u00a0\u00bb pour faire correspondre plusieurs syst\u00e8mes \u00e0 la fois. +Use\ WebSockets\ for\ SOS=Utiliser WebSockets pour SOS +Use\ WebSockets\ for\ SPS=Utiliser WebSockets pour SPS + +Node\ ID=ID du n\u0153ud +Stats\ Frequency\ (min)=Fr\u00e9quence des statistiques (min) +Database\ URL=URL de la base de donn\u00e9es +Database\ Name=Nom de la base de donn\u00e9es +ID\ Generator=G\u00e9n\u00e9rateur d'identifiants +Database\ Number=Num\u00e9ro de base de donn\u00e9es +Remote\ Host=H\u00f4te distant +Remote\ Port=Port distant +Lane\ Width\ (m)=Largeur de voie (m) +Enable\ EML\ Analysis=Activer l'analyse EML +Is\ Collimated=Est Collimat\u00e9 +Stream\ Path=Chemin du flux +Lane\ Options\ Config=Configuration des options de voie diff --git a/sensorhub-webui-core/src/main/resources/org/sensorhub/ui/i18n/messages_hi.properties b/sensorhub-webui-core/src/main/resources/org/sensorhub/ui/i18n/messages_hi.properties new file mode 100644 index 0000000000..56dab17f8a --- /dev/null +++ b/sensorhub-webui-core/src/main/resources/org/sensorhub/ui/i18n/messages_hi.properties @@ -0,0 +1,543 @@ +app.title=\u0913\u092a\u0928\u0938\u0947\u0902\u0938\u0930\u0939\u092c +tab.sensors=\u0938\u0947\u0902\u0938\u0930 +tab.databases=\u0921\u0947\u091f\u093e\u092c\u0947\u0938 +tab.processing=\u092a\u094d\u0930\u0938\u0902\u0938\u094d\u0915\u0930\u0923 +tab.services=\u0938\u0947\u0935\u093e\u090f\u0901 +tab.clients=\u0915\u094d\u0932\u093e\u0907\u0902\u091f\u094d\u0938 +tab.network=\u0928\u0947\u091f\u0935\u0930\u094d\u0915 +tab.security=\u0938\u0941\u0930\u0915\u094d\u0937\u093e +action.shutdown=\u092c\u0902\u0926 \u0915\u0930\u0947\u0902 +action.logout=\u0932\u0949\u0917 \u0906\u0909\u091f +action.save=\u0938\u0939\u0947\u091c\u0947\u0902 +action.addModule=\u0928\u092f\u093e \u092e\u0949\u0921\u094d\u092f\u0942\u0932 \u091c\u094b\u0921\u093c\u0947\u0902 +action.addSubmodule=\u0938\u092c-\u092e\u0949\u0921\u094d\u092f\u0942\u0932 \u091c\u094b\u0921\u093c\u0947\u0902 +action.removeModule=\u092e\u0949\u0921\u094d\u092f\u0942\u0932 \u0939\u091f\u093e\u090f\u0901 +action.removeSubmodule=\u0938\u092c-\u092e\u0949\u0921\u094d\u092f\u0942\u0932 \u0939\u091f\u093e\u090f\u0901 +action.start=\u0936\u0941\u0930\u0942 \u0915\u0930\u0947\u0902 +action.stop=\u0930\u094b\u0915\u0947\u0902 +action.restart=\u092a\u0941\u0928\u0930\u093e\u0930\u0902\u092d \u0915\u0930\u0947\u0902 +action.forceInit=\u092b\u094b\u0930\u094d\u0938 \u0907\u0928\u093f\u091f +action.selectAll=\u0938\u092d\u0940 \u092e\u0949\u0921\u094d\u092f\u0942\u0932 \u091a\u0941\u0928\u0947\u0902 +action.deselectAll=\u0938\u092d\u0940 \u092e\u0949\u0921\u094d\u092f\u0942\u0932 \u0905\u091a\u092f\u0928\u093f\u0924 \u0915\u0930\u0947\u0902 +dialog.shutdown.title=\u0936\u091f\u0921\u093e\u0909\u0928 \u0936\u0941\u0930\u0942 \u0915\u093f\u092f\u093e \u0917\u092f\u093e... +dialog.shutdown.message=\u092f\u0942\u0906\u0908 \u092a\u094d\u0930\u0924\u093f\u0915\u094d\u0930\u093f\u092f\u093e \u0926\u0947\u0928\u093e \u092c\u0902\u0926 \u0915\u0930 \u0926\u0947\u0917\u093e +dialog.shutdown.confirm=\u0915\u094d\u092f\u093e \u0906\u092a \u0938\u0941\u0928\u093f\u0936\u094d\u091a\u093f\u0924 \u0939\u0948\u0902 \u0915\u093f \u0906\u092a \u0938\u0947\u0902\u0938\u0930 \u0939\u092c \u0915\u094b \u092c\u0902\u0926 \u0915\u0930\u0928\u093e \u091a\u093e\u0939\u0924\u0947 \u0939\u0948\u0902? +dialog.logout.confirm=\u0915\u094d\u092f\u093e \u0906\u092a \u0938\u0941\u0928\u093f\u0936\u094d\u091a\u093f\u0924 \u0939\u0948\u0902 \u0915\u093f \u0906\u092a \u0932\u0949\u0917 \u0906\u0909\u091f \u0915\u0930\u0928\u093e \u091a\u093e\u0939\u0924\u0947 \u0939\u0948\u0902? +dialog.save.confirm=\u0915\u094d\u092f\u093e \u0906\u092a \u0938\u0941\u0928\u093f\u0936\u094d\u091a\u093f\u0924 \u0939\u0948\u0902 \u0915\u093f \u0906\u092a \u0915\u0949\u0928\u094d\u092b\u093c\u093f\u0917\u0930\u0947\u0936\u0928 \u0915\u094b \u0938\u0939\u0947\u091c\u0928\u093e (\u0914\u0930 \u092a\u093f\u091b\u0932\u0947 \u0935\u093e\u0932\u0947 \u0915\u094b \u0913\u0935\u0930\u0930\u093e\u0907\u091f \u0915\u0930\u0928\u093e) \u091a\u093e\u0939\u0924\u0947 \u0939\u0948\u0902? +msg.configSaved=SensorHub \u0915\u0949\u0928\u094d\u092b\u093c\u093f\u0917\u0930\u0947\u0936\u0928 \u0938\u0939\u0947\u091c\u093e \u0917\u092f\u093e +msg.configSaveError=\u0915\u0949\u0928\u094d\u092b\u093c\u093f\u0917\u0930\u0947\u0936\u0928 \u0938\u0939\u0947\u091c \u0928\u0939\u0940\u0902 \u0938\u0915\u0924\u0947 +dialog.remove.confirm=\u0915\u094d\u092f\u093e \u0906\u092a \u0938\u0941\u0928\u093f\u0936\u094d\u091a\u093f\u0924 \u0939\u0948\u0902 \u0915\u093f \u0906\u092a {0} \u0915\u094b \u0939\u091f\u093e\u0928\u093e \u091a\u093e\u0939\u0924\u0947 \u0939\u0948\u0902?
\u0938\u092d\u0940 \u0938\u0947\u091f\u093f\u0902\u0917\u094d\u0938 \u0916\u094b \u091c\u093e\u090f\u0902\u0917\u0940\u0964 +msg.removeError={0} \u0939\u091f\u093e\u092f\u093e \u0928\u0939\u0940\u0902 \u091c\u093e \u0938\u0915\u093e +msg.startError={0} \u0936\u0941\u0930\u0942 \u0928\u0939\u0940\u0902 \u0915\u093f\u092f\u093e \u091c\u093e \u0938\u0915\u093e +msg.stopError={0} \u0930\u094b\u0915\u093e \u0928\u0939\u0940\u0902 \u091c\u093e \u0938\u0915\u093e +msg.restartError={0} \u092a\u0941\u0928\u0930\u093e\u0930\u0902\u092d \u0928\u0939\u0940\u0902 \u0915\u093f\u092f\u093e \u091c\u093e \u0938\u0915\u093e +msg.reinitError={0} \u092a\u0941\u0928\u0930\u093e\u0930\u0902\u092d (Re-init) \u0928\u0939\u0940\u0902 \u0915\u093f\u092f\u093e \u091c\u093e \u0938\u0915\u093e +msg.loadError=\u092e\u0949\u0921\u094d\u092f\u0942\u0932 \u0932\u094b\u0921 \u0928\u0939\u0940\u0902 \u0915\u0930 \u0938\u0915\u0924\u0947 +msg.addSubmoduleError=\u0938\u092c-\u092e\u0949\u0921\u094d\u092f\u0942\u0932 \u0928\u0939\u0940\u0902 \u091c\u094b\u0921\u093c \u0938\u0915\u0924\u0947 +about.title=OpenSensorHub \u0915\u0947 \u092c\u093e\u0930\u0947 \u092e\u0947\u0902 +about.desc=\u0938\u094d\u092e\u093e\u0930\u094d\u091f \u0938\u0947\u0902\u0938\u0930 \u0928\u0947\u091f\u0935\u0930\u094d\u0915 \u0914\u0930 \u0907\u0902\u091f\u0930\u0928\u0947\u091f \u0911\u092b \u0925\u093f\u0902\u0917\u094d\u0938 (IoT) \u0915\u0947 \u0928\u093f\u0930\u094d\u092e\u093e\u0923 \u0915\u0947 \u0932\u093f\u090f \u090f\u0915 \u0938\u0949\u092b\u094d\u091f\u0935\u0947\u092f\u0930 \u092a\u094d\u0932\u0947\u091f\u092b\u0949\u0930\u094d\u092e +about.license=Mozilla Public License v2.0 \u0915\u0947 \u0924\u0939\u0924 \u0932\u093e\u0907\u0938\u0947\u0902\u0938 \u092a\u094d\u0930\u093e\u092a\u094d\u0924 +about.version=\u0938\u0902\u0938\u094d\u0915\u0930\u0923: +about.build=\u092c\u093f\u0932\u094d\u0921 \u0928\u0902\u092c\u0930: +about.deployment=\u092a\u0930\u093f\u0928\u093f\u092f\u094b\u091c\u0928 \u0928\u093e\u092e: +tooltip.shutdown=SensorHub \u0915\u094b \u092c\u0902\u0926 \u0915\u0930\u0947\u0902 +tooltip.logout=OSH \u0928\u094b\u0921 \u0938\u0947 \u0932\u0949\u0917 \u0906\u0909\u091f \u0915\u0930\u0947\u0902 +tooltip.save=SensorHub \u0915\u0949\u0928\u094d\u092b\u093c\u093f\u0917\u0930\u0947\u0936\u0928 \u0938\u0939\u0947\u091c\u0947\u0902 +dialog.start.confirm=\u0915\u094d\u092f\u093e \u0906\u092a \u0938\u0941\u0928\u093f\u0936\u094d\u091a\u093f\u0924 \u0939\u0948\u0902 \u0915\u093f \u0906\u092a {0} \u0936\u0941\u0930\u0942 \u0915\u0930\u0928\u093e \u091a\u093e\u0939\u0924\u0947 \u0939\u0948\u0902? +dialog.stop.confirm=\u0915\u094d\u092f\u093e \u0906\u092a \u0938\u0941\u0928\u093f\u0936\u094d\u091a\u093f\u0924 \u0939\u0948\u0902 \u0915\u093f \u0906\u092a {0} \u0915\u094b \u0930\u094b\u0915\u0928\u093e \u091a\u093e\u0939\u0924\u0947 \u0939\u0948\u0902? +dialog.restart.confirm=\u0915\u094d\u092f\u093e \u0906\u092a \u0938\u0941\u0928\u093f\u0936\u094d\u091a\u093f\u0924 \u0939\u0948\u0902 \u0915\u093f \u0906\u092a {0} \u0915\u094b \u092a\u0941\u0928\u0930\u093e\u0930\u0902\u092d \u0915\u0930\u0928\u093e \u091a\u093e\u0939\u0924\u0947 \u0939\u0948\u0902? +dialog.reinit.confirm=\u0915\u094d\u092f\u093e \u0906\u092a \u0938\u0941\u0928\u093f\u0936\u094d\u091a\u093f\u0924 \u0939\u0948\u0902 \u0915\u093f \u0906\u092a {0} \u0915\u094b \u092b\u093f\u0930 \u0938\u0947 \u0906\u0930\u0902\u092d (force re-init) \u0915\u0930\u0928\u093e \u091a\u093e\u0939\u0924\u0947 \u0939\u0948\u0902? +backgroundUpdate=\u092a\u0943\u0937\u094d\u0920\u092d\u0942\u092e\u093f \u0905\u0926\u094d\u092f\u0924\u0928 +sigmaThreshold=\u0938\u093f\u0917\u094d\u092e\u093e \u0925\u094d\u0930\u0947\u0936\u094b\u0932\u094d\u0921 +nuclideIdentification=\u0928\u094d\u092f\u0942\u0915\u094d\u0932\u093e\u0907\u0921 \u092a\u0939\u091a\u093e\u0928 +tamperAlarm=\u091b\u0947\u0921\u093c\u091b\u093e\u0921\u093c \u0905\u0932\u093e\u0930\u094d\u092e +occupancySensor=\u0909\u092a\u0938\u094d\u0925\u093f\u0924\u093f \u0938\u0947\u0902\u0938\u0930 +stateOfHealth=\u0938\u094d\u0935\u093e\u0938\u094d\u0925\u094d\u092f \u0938\u094d\u0925\u093f\u0924\u093f +soh=\u090f\u0938\u0913\u090f\u091a +1ScanThisQrCodeWithYourAuthenticatorApp=1. \u0907\u0938 QR \u0915\u094b\u0921 \u0915\u094b \u0905\u092a\u0928\u0947 \u092a\u094d\u0930\u092e\u093e\u0923\u0915 \u0910\u092a \u0938\u0947 \u0938\u094d\u0915\u0948\u0928 \u0915\u0930\u0947\u0902: +2EnterThe6digitCodeGeneratedByTheApp=2. \u0910\u092a \u0926\u094d\u0935\u093e\u0930\u093e \u091c\u0928\u0930\u0947\u091f \u0915\u093f\u092f\u093e \u0917\u092f\u093e 6 \u0905\u0902\u0915\u094b\u0902 \u0915\u093e \u0915\u094b\u0921 \u0926\u0930\u094d\u091c \u0915\u0930\u0947\u0902: +orEnterThisSecretKeyManually=\u092f\u093e \u0907\u0938 \u0917\u0941\u092a\u094d\u0924 \u0915\u0941\u0902\u091c\u0940 \u0915\u094b \u092e\u0948\u0928\u094d\u092f\u0941\u0905\u0932 \u0930\u0942\u092a \u0938\u0947 \u0926\u0930\u094d\u091c \u0915\u0930\u0947\u0902: +loadingBundlesInformation=\u092c\u0902\u0921\u0932 \u091c\u093e\u0928\u0915\u093e\u0930\u0940 \u0932\u094b\u0921 \u0939\u094b \u0930\u0939\u0940 \u0939\u0948... +loadingPackageInformation=\u092a\u0948\u0915\u0947\u091c \u091c\u093e\u0928\u0915\u093e\u0930\u0940 \u0932\u094b\u0921 \u0939\u094b \u0930\u0939\u0940 \u0939\u0948... +arrayComponentNotSupported=\u0910\u0930\u0947 \u0918\u091f\u0915 \u0938\u092e\u0930\u094d\u0925\u093f\u0924 \u0928\u0939\u0940\u0902 \u0939\u0948 +twofactorAuthentication=\u0926\u094b-\u0915\u093e\u0930\u0915 \u092a\u094d\u0930\u092e\u093e\u0923\u0940\u0915\u0930\u0923 +installMorePackages=\u0905\u0927\u093f\u0915 \u092a\u0948\u0915\u0947\u091c \u0938\u094d\u0925\u093e\u092a\u093f\u0924 \u0915\u0930\u0947\u0902... +errorGeneratingQrCode=QR \u0915\u094b\u0921 \u091c\u0928\u0930\u0947\u091f \u0915\u0930\u0928\u0947 \u092e\u0947\u0902 \u0924\u094d\u0930\u0941\u091f\u093f +installMoreModules=\u0905\u0927\u093f\u0915 \u092e\u0949\u0921\u094d\u092f\u0942\u0932 \u0938\u094d\u0925\u093e\u092a\u093f\u0924 \u0915\u0930\u0947\u0902... +detailedInstructions=\u0935\u093f\u0938\u094d\u0924\u0943\u0924 \u0928\u093f\u0930\u094d\u0926\u0947\u0936 +availableNetworks=\u0909\u092a\u0932\u092c\u094d\u0927 \u0928\u0947\u091f\u0935\u0930\u094d\u0915 +processParameters=\u092a\u094d\u0930\u0915\u094d\u0930\u093f\u092f\u093e \u092a\u0948\u0930\u093e\u092e\u0940\u091f\u0930 +verifyAndEnable=\u0938\u0924\u094d\u092f\u093e\u092a\u093f\u0924 \u0915\u0930\u0947\u0902 \u0914\u0930 \u0938\u0915\u094d\u0937\u092e \u0915\u0930\u0947\u0902 +dataSourceInfo=\u0921\u0947\u091f\u093e \u0938\u094d\u0930\u094b\u0924 \u091c\u093e\u0928\u0915\u093e\u0930\u0940 +detectedDevices=\u092a\u0924\u093e \u0932\u0917\u093e\u090f \u0917\u090f \u0909\u092a\u0915\u0930\u0923 +installSelected=\u0907\u0902\u0938\u094d\u091f\u0949\u0932 \u091a\u092f\u0928\u093f\u0924 +databaseContent=\u0921\u0947\u091f\u093e\u092c\u0947\u0938 \u0938\u093e\u092e\u0917\u094d\u0930\u0940 +itemsPerPage=\u092a\u094d\u0930\u0924\u093f \u092a\u0943\u0937\u094d\u0920 \u0906\u0907\u091f\u092e: +commandInputs=\u0915\u092e\u093e\u0902\u0921 \u0907\u0928\u092a\u0941\u091f +processInputs=\u092a\u094d\u0930\u0915\u094d\u0930\u093f\u092f\u093e \u0907\u0928\u092a\u0941\u091f +providerClass=\u092a\u094d\u0930\u0926\u093e\u0924\u093e \u0935\u0930\u094d\u0917 +processName=\u092a\u094d\u0930\u0915\u094d\u0930\u093f\u092f\u093e \u0928\u093e\u092e: +configuration=\u0935\u093f\u0928\u094d\u092f\u093e\u0938 +applyChanges=\u092a\u0930\u093f\u0935\u0930\u094d\u0924\u0928\u094b\u0902 \u0915\u094b \u0932\u093e\u0917\u0942 \u0915\u0930\u0947\u0902 +sendCommand=\u0906\u0926\u0947\u0936 \u092d\u0947\u091c\u0947\u0902 +useAddress=\u092a\u0924\u0947 \u0915\u093e \u092a\u094d\u0930\u092f\u094b\u0917 \u0915\u0930\u0947\u0902 +selectNone=\u0915\u0941\u091b \u092e\u0924 \u091a\u0941\u0928\u093f\u090f +timeRange=\u0938\u092e\u092f \u0938\u0940\u092e\u093e: +permissions=\u0905\u0928\u0941\u092e\u0924\u093f\u092f\u093e\u0902 +startScan=\u0938\u094d\u0915\u0948\u0928 \u0936\u0941\u0930\u0942 \u0915\u0930\u0947\u0902 +noReadme=\u0915\u094b\u0908 \u0930\u0940\u0921\u092e\u0940 \u0928\u0939\u0940\u0902 +stopScan=\u0938\u094d\u0915\u0948\u0928 \u092c\u0902\u0926 \u0915\u0930\u094b +reset2fa=2FA \u0930\u0940\u0938\u0947\u091f \u0915\u0930\u0947\u0902 +previous=\u092a\u0939\u0932\u0947 \u0915\u093e +useName=\u0928\u093e\u092e \u0915\u093e \u092a\u094d\u0930\u092f\u094b\u0917 \u0915\u0930\u0947\u0902 +outputs=\u0906\u0909\u091f\u092a\u0941\u091f +refresh=\u0924\u093e\u091c\u093c\u093e \u0915\u0930\u0928\u093e +modify=\u0938\u0902\u0936\u094b\u0927\u093f\u0924 +cancel=\u0930\u0926\u094d\u0926 \u0915\u0930\u0928\u093e +logout=\u0932\u0949\u0917 \u0906\u0909\u091f +remove=\u0928\u093f\u0915\u093e\u0932\u0928\u093e +verify=\u0938\u0924\u094d\u092f\u093e\u092a\u093f\u0924 \u0915\u0930\u0947\u0902 +first=\u092a\u0939\u0932\u093e +login=\u0932\u0949\u0917 \u0907\u0928 \u0915\u0930\u0947\u0902 +last=\u0905\u0902\u0924\u093f\u092e +view=\u0926\u0947\u0916\u0928\u093e +next=\u0905\u0917\u0932\u093e +stop=\u0930\u0941\u0915\u0928\u093e +add=\u091c\u094b\u0921\u093c\u0928\u093e +ui.empty=< +ok=\u0920\u0940\u0915 \u0939\u0948 +1ScanThisQrCodeWithYourAuthenticatorApp1=1. \u0907\u0938 QR \u0915\u094b\u0921 \u0915\u094b \u0905\u092a\u0928\u0947 \u092a\u094d\u0930\u092e\u093e\u0923\u0915 \u0910\u092a \u0938\u0947 \u0938\u094d\u0915\u0948\u0928 \u0915\u0930\u0947\u0902: +2EnterThe6digitCodeGeneratedByTheApp1=2. \u0910\u092a \u0926\u094d\u0935\u093e\u0930\u093e \u091c\u0928\u0930\u0947\u091f \u0915\u093f\u092f\u093e \u0917\u092f\u093e 6 \u0905\u0902\u0915\u094b\u0902 \u0915\u093e \u0915\u094b\u0921 \u0926\u0930\u094d\u091c \u0915\u0930\u0947\u0902: +orEnterThisSecretKeyManually1=\u092f\u093e \u0907\u0938 \u0917\u0941\u092a\u094d\u0924 \u0915\u0941\u0902\u091c\u0940 \u0915\u094b \u092e\u0948\u0928\u094d\u092f\u0941\u0905\u0932 \u0930\u0942\u092a \u0938\u0947 \u0926\u0930\u094d\u091c \u0915\u0930\u0947\u0902: +loadingPackageInformation1=\u092a\u0948\u0915\u0947\u091c \u091c\u093e\u0928\u0915\u093e\u0930\u0940 \u0932\u094b\u0921 \u0939\u094b \u0930\u0939\u0940 \u0939\u0948... +loadingBundlesInformation1=\u092c\u0902\u0921\u0932 \u091c\u093e\u0928\u0915\u093e\u0930\u0940 \u0932\u094b\u0921 \u0939\u094b \u0930\u0939\u0940 \u0939\u0948... +arrayComponentNotSupported1=\u0910\u0930\u0947 \u0918\u091f\u0915 \u0938\u092e\u0930\u094d\u0925\u093f\u0924 \u0928\u0939\u0940\u0902 \u0939\u0948 +twofactorAuthentication1=\u0926\u094b-\u0915\u093e\u0930\u0915 \u092a\u094d\u0930\u092e\u093e\u0923\u0940\u0915\u0930\u0923 +errorGeneratingQrCode1=QR \u0915\u094b\u0921 \u091c\u0928\u0930\u0947\u091f \u0915\u0930\u0928\u0947 \u092e\u0947\u0902 \u0924\u094d\u0930\u0941\u091f\u093f +installMorePackages1=\u0905\u0927\u093f\u0915 \u092a\u0948\u0915\u0947\u091c \u0938\u094d\u0925\u093e\u092a\u093f\u0924 \u0915\u0930\u0947\u0902... +installMoreModules1=\u0905\u0927\u093f\u0915 \u092e\u0949\u0921\u094d\u092f\u0942\u0932 \u0938\u094d\u0925\u093e\u092a\u093f\u0924 \u0915\u0930\u0947\u0902... +detailedInstructions1=\u0935\u093f\u0938\u094d\u0924\u0943\u0924 \u0928\u093f\u0930\u094d\u0926\u0947\u0936 +processParameters1=\u092a\u094d\u0930\u0915\u094d\u0930\u093f\u092f\u093e \u092a\u0948\u0930\u093e\u092e\u0940\u091f\u0930 +availableNetworks1=\u0909\u092a\u0932\u092c\u094d\u0927 \u0928\u0947\u091f\u0935\u0930\u094d\u0915 +verifyAndEnable1=\u0938\u0924\u094d\u092f\u093e\u092a\u093f\u0924 \u0915\u0930\u0947\u0902 \u0914\u0930 \u0938\u0915\u094d\u0937\u092e \u0915\u0930\u0947\u0902 +databaseContent1=\u0921\u0947\u091f\u093e\u092c\u0947\u0938 \u0938\u093e\u092e\u0917\u094d\u0930\u0940 +installSelected1=\u0907\u0902\u0938\u094d\u091f\u0949\u0932 \u091a\u092f\u0928\u093f\u0924 +dataSourceInfo1=\u0921\u0947\u091f\u093e \u0938\u094d\u0930\u094b\u0924 \u091c\u093e\u0928\u0915\u093e\u0930\u0940 +detectedDevices1=\u092a\u0924\u093e \u0932\u0917\u093e\u090f \u0917\u090f \u0909\u092a\u0915\u0930\u0923 +itemsPerPage1=\u092a\u094d\u0930\u0924\u093f \u092a\u0943\u0937\u094d\u0920 \u0906\u0907\u091f\u092e: +processInputs1=\u092a\u094d\u0930\u0915\u094d\u0930\u093f\u092f\u093e \u0907\u0928\u092a\u0941\u091f +commandInputs1=\u0915\u092e\u093e\u0902\u0921 \u0907\u0928\u092a\u0941\u091f +providerClass1=\u092a\u094d\u0930\u0926\u093e\u0924\u093e \u0935\u0930\u094d\u0917 +configuration1=\u0935\u093f\u0928\u094d\u092f\u093e\u0938 +processName1=\u092a\u094d\u0930\u0915\u094d\u0930\u093f\u092f\u093e \u0928\u093e\u092e: +applyChanges1=\u092a\u0930\u093f\u0935\u0930\u094d\u0924\u0928\u094b\u0902 \u0915\u094b \u0932\u093e\u0917\u0942 \u0915\u0930\u0947\u0902 +sendCommand1=\u0906\u0926\u0947\u0936 \u092d\u0947\u091c\u0947\u0902 +timeRange1=\u0938\u092e\u092f \u0938\u0940\u092e\u093e: +useAddress1=\u092a\u0924\u0947 \u0915\u093e \u092a\u094d\u0930\u092f\u094b\u0917 \u0915\u0930\u0947\u0902 +permissions1=\u0905\u0928\u0941\u092e\u0924\u093f\u092f\u093e\u0902 +selectNone1=\u0915\u0941\u091b \u092e\u0924 \u091a\u0941\u0928\u093f\u090f +startScan1=\u0938\u094d\u0915\u0948\u0928 \u0936\u0941\u0930\u0942 \u0915\u0930\u0947\u0902 +noReadme1=\u0915\u094b\u0908 \u0930\u0940\u0921\u092e\u0940 \u0928\u0939\u0940\u0902 +reset2fa1=2FA \u0930\u0940\u0938\u0947\u091f \u0915\u0930\u0947\u0902 +stopScan1=\u0938\u094d\u0915\u0948\u0928 \u092c\u0902\u0926 \u0915\u0930\u094b +useName1=\u0928\u093e\u092e \u0915\u093e \u092a\u094d\u0930\u092f\u094b\u0917 \u0915\u0930\u0947\u0902 +previous1=\u092a\u0939\u0932\u0947 \u0915\u093e +refresh1=\u0924\u093e\u091c\u093c\u093e \u0915\u0930\u0928\u093e +outputs1=\u0906\u0909\u091f\u092a\u0941\u091f +cancel1=\u0930\u0926\u094d\u0926 \u0915\u0930\u0928\u093e +logout1=\u0932\u0949\u0917 \u0906\u0909\u091f +modify1=\u0938\u0902\u0936\u094b\u0927\u093f\u0924 +remove1=\u0928\u093f\u0915\u093e\u0932\u0928\u093e +verify1=\u0938\u0924\u094d\u092f\u093e\u092a\u093f\u0924 \u0915\u0930\u0947\u0902 +first1=\u092a\u0939\u0932\u093e +login1=\u0932\u0949\u0917 \u0907\u0928 \u0915\u0930\u0947\u0902 +view1=\u0926\u0947\u0916\u0928\u093e +stop1=\u0930\u0941\u0915\u0928\u093e +next1=\u0905\u0917\u0932\u093e +last1=\u0905\u0902\u0924\u093f\u092e +add1=\u091c\u094b\u0921\u093c\u0928\u093e +last2=>> +first2=<< +ok1=\u0920\u0940\u0915 \u0939\u0948 +next2=> +previous2=< + +pleaseEnterAUserIDFirst1=\u0915\u0943\u092a\u092f\u093e \u092a\u0939\u0932\u0947 \u090f\u0915 \u0909\u092a\u092f\u094b\u0917\u0915\u0930\u094d\u0924\u093e \u0906\u0908\u0921\u0940 \u0926\u0930\u094d\u091c \u0915\u0930\u0947\u0902 +reset2FA1=2FA \u0930\u0940\u0938\u0947\u091f \u0915\u0930\u0947\u0902 +enable2FA1=2FA \u0938\u0915\u094d\u0937\u092e \u0915\u0930\u0947\u0902 +twoFAEnabledSuccessfully1=2FA \u0938\u092b\u0932\u0924\u093e\u092a\u0942\u0930\u094d\u0935\u0915 \u0938\u0915\u094d\u0937\u092e \u0915\u093f\u092f\u093e \u0917\u092f\u093e +invalidCode1=\u0905\u0935\u0948\u0927 \u0915\u094b\u0921 +allowedAndDeniedPermissionsForUsersWithThisRole1=\u0907\u0938 \u092d\u0942\u092e\u093f\u0915\u093e \u0935\u093e\u0932\u0947 \u0909\u092a\u092f\u094b\u0917\u0915\u0930\u094d\u0924\u093e\u0913\u0902 \u0915\u0947 \u0932\u093f\u090f \u0905\u0928\u0941\u092e\u0924\u093f\u092f\u093e\u0901 \u0938\u094d\u0935\u0940\u0915\u0943\u0924 \u0914\u0930 \u0905\u0938\u094d\u0935\u0940\u0915\u0943\u0924 +manualEntry1=\u092e\u0948\u0928\u094d\u092f\u0941\u0905\u0932 \u092a\u094d\u0930\u0935\u093f\u0937\u094d\u091f\u093f +toggleAutoRefreshDataOncePerSecond1=\u092a\u094d\u0930\u0924\u093f \u0938\u0947\u0915\u0902\u0921 \u090f\u0915 \u092c\u093e\u0930 \u0911\u091f\u094b-\u0930\u093f\u092b\u094d\u0930\u0947\u0936 \u0921\u0947\u091f\u093e \u091f\u0949\u0917\u0932 \u0915\u0930\u0947\u0902 +lookupSystem1=\u0932\u0941\u0915\u0905\u092a \u0938\u093f\u0938\u094d\u091f\u092e +lookupModule1=\u0932\u0941\u0915\u0905\u092a \u092e\u0949\u0921\u094d\u092f\u0942\u0932 +lookupAddress1=\u0932\u0941\u0915\u0905\u092a \u092a\u0924\u093e +showPassword1=\u092a\u093e\u0938\u0935\u0930\u094d\u0921 \u0926\u093f\u0916\u093e\u090f +showHistogram1=\u0939\u093f\u0938\u094d\u091f\u094b\u0917\u094d\u0930\u093e\u092e \u0926\u093f\u0916\u093e\u090f\u0901 +hideHistogram1=\u0939\u093f\u0938\u094d\u091f\u094b\u0917\u094d\u0930\u093e\u092e \u091b\u093f\u092a\u093e\u090f\u0901 +reloadDataFromDatabase1=\u0921\u0947\u091f\u093e\u092c\u0947\u0938 \u0938\u0947 \u0921\u0947\u091f\u093e \u092a\u0941\u0928\u0903 \u0932\u094b\u0921 \u0915\u0930\u0947\u0902 +fois1=\u090f\u092b\u0913\u0906\u0908 +username1=\u0909\u092a\u092f\u094b\u0917\u0915\u0930\u094d\u0924\u093e \u0928\u093e\u092e +password1=\u092a\u093e\u0938\u0935\u0930\u094d\u0921 +loginFailed1=\u0932\u0949\u0917\u093f\u0928 \u0935\u093f\u092b\u0932 +invalidUsernameOrPassword1=\u0905\u092e\u093e\u0928\u094d\u092f \u0909\u092a\u092f\u094b\u0917\u0915\u0930\u094d\u0924\u093e \u0928\u093e\u092e \u092f\u093e \u092a\u093e\u0938\u0935\u0930\u094d\u0921 +verificationCode1=\u0938\u0924\u094d\u092f\u093e\u092a\u0928 \u0915\u094b\u0921 +verificationFailed1=\u0938\u0924\u094d\u092f\u093e\u092a\u0928 \u092e\u0947\u0902 \u0935\u093f\u092b\u0932 \u0930\u0939\u093e +datasource1=\u0921\u0947\u091f\u093e \u0938\u094d\u0930\u094b\u0924 +process1=\u092a\u094d\u0930\u0915\u094d\u0930\u093f\u092f\u093e +logoutFromOshNode1=OSH \u0928\u094b\u0921 \u0938\u0947 \u0932\u0949\u0917\u0906\u0909\u091f \u0915\u0930\u0947\u0902 +setParameter1=\u092a\u0948\u0930\u093e\u092e\u0940\u091f\u0930 \u0938\u0947\u091f \u0915\u0930\u0947\u0902 +setupTwoFactorAuthentication1=\u0926\u094b-\u0915\u093e\u0930\u0915 \u092a\u094d\u0930\u092e\u093e\u0923\u0940\u0915\u0930\u0923 \u0938\u0947\u091f\u0905\u092a \u0915\u0930\u0947\u0902 + +action.new_item=\u0928\u092f\u093e {0} +Lane\ System=\u0932\u0947\u0928 \u092a\u094d\u0930\u0923\u093e\u0932\u0940 +Module\ Class=\u092e\u0949\u0921\u094d\u092f\u0942\u0932 \u0915\u094d\u0932\u093e\u0938 +Module\ Name=\u092e\u094b\u0921\u094d\u092f\u0942\u0932 \u0915\u093e \u0928\u093e\u092e +Module\ ID=\u092e\u0949\u0921\u094d\u092f\u0942\u0932 \u0906\u0908\u0921\u0940 +Description=\u0935\u093f\u0935\u0930\u0923 +SensorML\ URL=\u0938\u0947\u0902\u0938\u0930\u090f\u092e\u090f\u0932 \u092f\u0942\u0906\u0930\u090f\u0932 +UniqueID=\u0905\u0928\u094b\u0916\u093e ID +Last\ Updated=\u0906\u0916\u0930\u0940 \u0905\u092a\u0921\u0947\u091f +Auto\ Start=\u0911\u091f\u094b \u0938\u094d\u091f\u093e\u0930\u094d\u091f +Delete\ Data\ on\ Lane\ Removal=\u0932\u0947\u0928 \u0939\u091f\u093e\u0928\u0947 \u092a\u0930 \u0921\u0947\u091f\u093e \u0939\u091f\u093e\u090f\u0901 +Latitude=\u0905\u0915\u094d\u0937\u093e\u0902\u0936 +Longitude=\u0926\u0947\u0936\u093e\u0928\u094d\u0924\u0930 +Altitude=\u090a\u0902\u091a\u093e\u0908 +Initial\ RPM\ Config=\u0906\u0930\u0902\u092d\u093f\u0915 RPM \u0915\u0949\u0928\u094d\u092b\u093c\u093f\u0917 +Initial\ Camera\ Config=\u0906\u0930\u0902\u092d\u093f\u0915 \u0915\u0948\u092e\u0930\u093e \u0915\u0949\u0928\u094d\u092b\u093c\u093f\u0917 +Lane\ Options\ Config=\u0932\u0947\u0928 \u0935\u093f\u0915\u0932\u094d\u092a \u0915\u0949\u0928\u094d\u092b\u093c\u093f\u0917 +tab.general=\u0938\u093e\u092e\u093e\u0928\u094d\u092f +tab.readme=\u0930\u0940\u0921\u092e\u0940 +Fixed\ Location=\u0928\u093f\u0936\u094d\u091a\u093f\u0924 \u0938\u094d\u0925\u093e\u0928 +Fixed\ Orientation=\u0928\u093f\u0936\u094d\u091a\u093f\u0924 \u0905\u092d\u093f\u0935\u093f\u0928\u094d\u092f\u093e\u0938 +# Auto-extracted DisplayInfo labels and descriptions +URL\ of\ SensorML\ file\ providing\ the\ base\ description\ of\ the\ sensor=\u0938\u0947\u0902\u0938\u0930 \u0915\u093e \u0906\u0927\u093e\u0930 \u0935\u093f\u0935\u0930\u0923 \u092a\u094d\u0930\u0926\u093e\u0928 \u0915\u0930\u0928\u0947 \u0935\u093e\u0932\u0940 SensorML \u092b\u093c\u093e\u0907\u0932 \u0915\u093e URL +Time\ at\ which\ the\ SensorML\ description\ was\ last\ updated=\u0935\u0939 \u0938\u092e\u092f \u091c\u092c \u0938\u0947\u0902\u0938\u0930\u090f\u092e\u090f\u0932 \u0935\u093f\u0935\u0930\u0923 \u0905\u0902\u0924\u093f\u092e \u092c\u093e\u0930 \u0905\u0926\u094d\u092f\u0924\u0928 \u0915\u093f\u092f\u093e \u0917\u092f\u093e \u0925\u093e +Geodetic\ latitude,\ in\ degrees=\u092d\u0942\u0917\u0923\u093f\u0924\u0940\u092f \u0905\u0915\u094d\u0937\u093e\u0902\u0936, \u0921\u093f\u0917\u094d\u0930\u0940 \u092e\u0947\u0902 +Longitude,\ in\ degrees=\u0926\u0947\u0936\u093e\u0902\u0924\u0930, \u0921\u093f\u0917\u094d\u0930\u0940 \u092e\u0947\u0902 +Height\ above\ ellipsoid,\ in\ meters=\u0926\u0940\u0930\u094d\u0918\u0935\u0943\u0924\u094d\u0924\u093e\u0915\u093e\u0930 \u0938\u0947 \u090a\u092a\u0930 \u090a\u0901\u091a\u093e\u0908, \u092e\u0940\u091f\u0930 \u092e\u0947\u0902 +X\ coordinate,\ in\ meters=X \u0928\u093f\u0930\u094d\u0926\u0947\u0936\u093e\u0902\u0915, \u092e\u0940\u091f\u0930 \u092e\u0947\u0902 +Y\ coordinate,\ in\ meters=Y \u0928\u093f\u0930\u094d\u0926\u0947\u0936\u093e\u0902\u0915, \u092e\u0940\u091f\u0930 \u092e\u0947\u0902 +Z\ coordinate,\ in\ meters=Z \u0928\u093f\u0930\u094d\u0926\u0947\u0936\u093e\u0902\u0915, \u092e\u0940\u091f\u0930 \u092e\u0947\u0902 +Pitch\ angle\ about\ Y\ axis,\ in\ degrees=Y \u0905\u0915\u094d\u0937 \u0915\u0947 \u092c\u093e\u0930\u0947 \u092e\u0947\u0902 \u092a\u093f\u091a \u0915\u094b\u0923, \u0921\u093f\u0917\u094d\u0930\u0940 \u092e\u0947\u0902 +Roll\ angle\ about\ X\ axis,\ in\ degrees=\u090f\u0915\u094d\u0938 \u0905\u0915\u094d\u0937 \u0915\u0947 \u092c\u093e\u0930\u0947 \u092e\u0947\u0902 \u0930\u094b\u0932 \u0915\u094b\u0923, \u0921\u093f\u0917\u094d\u0930\u0940 \u092e\u0947\u0902 +Location\ in\ EPSG\:4979\ coordinate\ reference\ frame=\u0908\u092a\u0940\u090f\u0938\u091c\u0940 \u092e\u0947\u0902 \u0938\u094d\u0925\u093e\u0928:4979 \u0938\u092e\u0928\u094d\u0935\u092f \u0938\u0902\u0926\u0930\u094d\u092d \u092b\u094d\u0930\u0947\u092e +Database\ Number=\u0921\u0947\u091f\u093e\u092c\u0947\u0938 \u0938\u0902\u0916\u094d\u092f\u093e +Numerical\ identifier\ of\ the\ database.\ Each\ database\ that\ should\ be\ exposed\ via\ the\ federated\ database\ API\ must\ have\ a\ unique\ number\ on\ the\ sensor\ hub.\ If\ visibility\ through\ the\ federated\ database\ is\ not\ desired,\ it\ can\ be\ omitted.=\u0921\u0947\u091f\u093e\u092c\u0947\u0938 \u0915\u093e \u0938\u0902\u0916\u094d\u092f\u093e\u0924\u094d\u092e\u0915 \u092a\u0939\u091a\u093e\u0928\u0915\u0930\u094d\u0924\u093e. \u092a\u094d\u0930\u0924\u094d\u092f\u0947\u0915 \u0921\u0947\u091f\u093e\u092c\u0947\u0938 \u091c\u093f\u0938\u0947 \u092b\u093c\u0947\u0921\u0930\u0947\u091f\u0947\u0921 \u0921\u0947\u091f\u093e\u092c\u0947\u0938 \u090f\u092a\u0940\u0906\u0908 \u0915\u0947 \u092e\u093e\u0927\u094d\u092f\u092e \u0938\u0947 \u0909\u091c\u093e\u0917\u0930 \u0915\u093f\u092f\u093e \u091c\u093e\u0928\u093e \u091a\u093e\u0939\u093f\u090f, \u0909\u0938\u0915\u0947 \u092a\u093e\u0938 \u0938\u0947\u0902\u0938\u0930 \u0939\u092c \u092a\u0930 \u090f\u0915 \u0905\u0926\u094d\u0935\u093f\u0924\u0940\u092f \u0928\u0902\u092c\u0930 \u0939\u094b\u0928\u093e \u091a\u093e\u0939\u093f\u090f\u0964 \u092f\u0926\u093f \u092b\u093c\u0947\u0921\u0930\u0947\u091f\u0947\u0921 \u0921\u0947\u091f\u093e\u092c\u0947\u0938 \u0915\u0947 \u092e\u093e\u0927\u094d\u092f\u092e \u0938\u0947 \u0926\u0943\u0936\u094d\u092f\u0924\u093e \u0935\u093e\u0902\u091b\u093f\u0924 \u0928\u0939\u0940\u0902 \u0939\u0948, \u0924\u094b \u0907\u0938\u0947 \u091b\u094b\u0921\u093c\u093e \u091c\u093e \u0938\u0915\u0924\u093e \u0939\u0948\u0964 +Enables\ fine-grained\ permission-based\ access\ control\ for\ this\ module=\u0907\u0938 \u092e\u0949\u0921\u094d\u092f\u0942\u0932 \u0915\u0947 \u0932\u093f\u090f \u0938\u0941\u0915\u094d\u0937\u094d\u092e \u0905\u0928\u0941\u092e\u0924\u093f-\u0906\u0927\u093e\u0930\u093f\u0924 \u0905\u092d\u093f\u0917\u092e \u0928\u093f\u092f\u0902\u0924\u094d\u0930\u0923 \u0938\u0915\u094d\u0937\u092e \u0915\u0930\u0924\u093e \u0939\u0948 +Require\ Authentication=\u092a\u094d\u0930\u092e\u093e\u0923\u0940\u0915\u0930\u0923 \u0915\u0940 \u0906\u0935\u0936\u094d\u092f\u0915\u0924\u093e \u0939\u0948 +Set\ to\ require\ remote\ users\ to\ be\ authentified\ before\ they\ can\ use\ this\ service=\u0907\u0938 \u0938\u0947\u0935\u093e \u0915\u093e \u0909\u092a\u092f\u094b\u0917 \u0915\u0930\u0928\u0947 \u0938\u0947 \u092a\u0939\u0932\u0947 \u0926\u0942\u0930\u0938\u094d\u0925 \u0909\u092a\u092f\u094b\u0917\u0915\u0930\u094d\u0924\u093e\u0913\u0902 \u0915\u094b \u092a\u094d\u0930\u092e\u093e\u0923\u093f\u0924 \u0915\u0930\u0928\u0947 \u0915\u0940 \u0906\u0935\u0936\u094d\u092f\u0915\u0924\u093e \u092a\u0930 \u0938\u0947\u091f \u0915\u0930\u0947\u0902 +Endpoint=endpoint +Unique\ local\ ID\ of\ the\ module=\u092e\u0949\u0921\u094d\u092f\u0942\u0932 \u0915\u0940 \u0905\u0926\u094d\u0935\u093f\u0924\u0940\u092f \u0938\u094d\u0925\u093e\u0928\u0940\u092f \u0906\u0908\u0921\u0940 +User\ description\ for\ the\ module=\u092e\u0949\u0921\u094d\u092f\u0942\u0932 \u0915\u0947 \u0932\u093f\u090f \u0909\u092a\u092f\u094b\u0917\u0915\u0930\u094d\u0924\u093e \u0935\u093f\u0935\u0930\u0923 +Set\ to\ automatically\ start\ the\ module\ when\ it\ is\ loaded=\u0932\u094b\u0921 \u0939\u094b\u0928\u0947 \u092a\u0930 \u092e\u0949\u0921\u094d\u092f\u0942\u0932 \u0915\u094b \u0938\u094d\u0935\u091a\u093e\u0932\u093f\u0924 \u0930\u0942\u092a \u0938\u0947 \u092a\u094d\u0930\u093e\u0930\u0902\u092d \u0915\u0930\u0928\u0947 \u0915\u0947 \u0932\u093f\u090f \u0938\u0947\u091f \u0915\u0930\u0947\u0902 +Module\ implementation\ class=\u092e\u0949\u0921\u094d\u092f\u0942\u0932 \u0915\u093e\u0930\u094d\u092f\u093e\u0928\u094d\u0935\u092f\u0928 \u0935\u0930\u094d\u0917 +User\ chosen\ name\ for\ the\ module=\u092e\u0949\u0921\u094d\u092f\u0942\u0932 \u0915\u0947 \u0932\u093f\u090f \u0909\u092a\u092f\u094b\u0917\u0915\u0930\u094d\u0924\u093e \u0926\u094d\u0935\u093e\u0930\u093e \u091a\u0941\u0928\u093e \u0917\u092f\u093e \u0928\u093e\u092e +Name\ of\ topic/queue\ to\ use=\u0909\u092a\u092f\u094b\u0917 \u0939\u0947\u0924\u0941 \u0935\u093f\u0937\u092f/\u0915\u0924\u093e\u0930 \u0915\u093e \u0928\u093e\u092e +Enable/disable\ writing\ to\ queue=\u0915\u0924\u093e\u0930 \u092e\u0947\u0902 \u0932\u0947\u0916\u0928 \u0938\u0915\u094d\u0937\u092e/\u0905\u0915\u094d\u0937\u092e \u0915\u0930\u0947\u0902 +Enable/disable\ reading\ from\ queue=\u0915\u0924\u093e\u0930 \u0938\u0947 \u092a\u0922\u093c\u0928\u0947 \u0915\u094b \u0938\u0915\u094d\u0937\u092e/\u0905\u0915\u094d\u0937\u092e \u0915\u0930\u0947\u0902 +Protocol\ Options=\u092a\u094d\u0930\u094b\u091f\u094b\u0915\u0949\u0932 \u0935\u093f\u0915\u0932\u094d\u092a +Common\ Configuration=\u0938\u093e\u092e\u093e\u0928\u094d\u092f \u0935\u093f\u0928\u094d\u092f\u093e\u0938 +Common\ configuration\ for\ sensors\ in\ the\ array=\u0938\u0930\u0923\u0940 \u092e\u0947\u0902 \u0938\u0947\u0902\u0938\u0930 \u0915\u0947 \u0932\u093f\u090f \u0938\u093e\u092e\u093e\u0928\u094d\u092f \u0915\u0949\u0928\u094d\u092b\u093c\u093f\u0917\u0930\u0947\u0936\u0928 +Sensors\ Configuration=\u0938\u0947\u0902\u0938\u0930 \u0915\u0949\u0928\u094d\u092b\u093c\u093f\u0917\u0930\u0947\u0936\u0928 +Subsystem\ Config=\u0938\u092c\u0938\u093f\u0938\u094d\u091f\u092e \u0915\u0949\u0928\u094d\u092b\u093f\u0917 +Configuration\ of\ the\ subsystem=\u0938\u092c\u0938\u093f\u0938\u094d\u091f\u092e \u0915\u093e \u0935\u093f\u0928\u094d\u092f\u093e\u0938 +Relative\ Location=\u0930\u093f\u0936\u094d\u0924\u0947\u0926\u093e\u0930 \u0915\u093e \u0920\u093f\u0915\u093e\u0928\u093e +Location\ of\ this\ subsystem\ relative\ to\ the\ main\ system\ or\ platform\ reference\ frame=\u092e\u0941\u0916\u094d\u092f \u0938\u093f\u0938\u094d\u091f\u092e \u092f\u093e \u092a\u094d\u0932\u0947\u091f\u092b\u093c\u0949\u0930\u094d\u092e \u0938\u0902\u0926\u0930\u094d\u092d \u092b\u093c\u094d\u0930\u0947\u092e \u0915\u0947 \u0938\u093e\u092a\u0947\u0915\u094d\u0937 \u0907\u0938 \u0938\u092c\u0938\u093f\u0938\u094d\u091f\u092e \u0915\u093e \u0938\u094d\u0925\u093e\u0928 +Relative\ Orientation=\u0938\u093e\u092a\u0947\u0915\u094d\u0937 \u0905\u092d\u093f\u0935\u093f\u0928\u094d\u092f\u093e\u0938 +Orientation\ of\ this\ subsystem\ relative\ to\ the\ main\ system\ or\ platform\ reference\ frame=\u092e\u0941\u0916\u094d\u092f \u0938\u093f\u0938\u094d\u091f\u092e \u092f\u093e \u092a\u094d\u0932\u0947\u091f\u092b\u093c\u0949\u0930\u094d\u092e \u0938\u0902\u0926\u0930\u094d\u092d \u092b\u093c\u094d\u0930\u0947\u092e \u0915\u0947 \u0938\u093e\u092a\u0947\u0915\u094d\u0937 \u0907\u0938 \u0909\u092a\u092a\u094d\u0930\u0923\u093e\u0932\u0940 \u0915\u093e \u0905\u092d\u093f\u0935\u093f\u0928\u094d\u092f\u093e\u0938 +Fixed\ system\ orientation\ in\ the\ local\ NED\ reference\ frame=\u0938\u094d\u0925\u093e\u0928\u0940\u092f NED \u0938\u0902\u0926\u0930\u094d\u092d \u092b\u094d\u0930\u0947\u092e \u092e\u0947\u0902 \u0928\u093f\u0936\u094d\u091a\u093f\u0924 \u0938\u093f\u0938\u094d\u091f\u092e \u0913\u0930\u093f\u090f\u0902\u091f\u0947\u0936\u0928 +Subsystems=\u0909\u092a\u092a\u094d\u0930\u0923\u093e\u0932\u093f\u092f\u093e\u0901 +Configuration\ of\ components\ of\ this\ sensor\ system=\u0907\u0938 \u0938\u0947\u0902\u0938\u0930 \u092a\u094d\u0930\u0923\u093e\u0932\u0940 \u0915\u0947 \u0918\u091f\u0915\u094b\u0902 \u0915\u093e \u0935\u093f\u0928\u094d\u092f\u093e\u0938 +Database\ Config=\u0921\u0947\u091f\u093e\u092c\u0947\u0938 \u0915\u0949\u0928\u094d\u092b\u093c\u093f\u0917 +Configuration\ of\ underlying\ database=\u0905\u0902\u0924\u0930\u094d\u0928\u093f\u0939\u093f\u0924 \u0921\u0947\u091f\u093e\u092c\u0947\u0938 \u0915\u093e \u0915\u0949\u0928\u094d\u092b\u093c\u093f\u0917\u0930\u0947\u0936\u0928 +System\ UIDs=\u0938\u093f\u0938\u094d\u091f\u092e \u092f\u0942\u0906\u0908\u0921\u0940 +Unique\ IDs\ of\ system\ drivers\ handled\ by\ this\ database=\u0907\u0938 \u0921\u0947\u091f\u093e\u092c\u0947\u0938 \u0926\u094d\u0935\u093e\u0930\u093e \u092a\u094d\u0930\u092c\u0902\u0927\u093f\u0924 \u0938\u093f\u0938\u094d\u091f\u092e \u0921\u094d\u0930\u093e\u0907\u0935\u0930\u094b\u0902 \u0915\u0940 \u0905\u0926\u094d\u0935\u093f\u0924\u0940\u092f \u0906\u0908\u0921\u0940 +Automatic\ Purge\ Policy=\u0938\u094d\u0935\u091a\u093e\u0932\u093f\u0924 \u0936\u0941\u0926\u094d\u0927\u093f\u0915\u0930\u0923 \u0928\u0940\u0924\u093f +Policy\ for\ automatically\ purging\ historical\ data=\u0910\u0924\u093f\u0939\u093e\u0938\u093f\u0915 \u0921\u0947\u091f\u093e \u0915\u094b \u0938\u094d\u0935\u091a\u093e\u0932\u093f\u0924 \u0930\u0942\u092a \u0938\u0947 \u0936\u0941\u0926\u094d\u0927 \u0915\u0930\u0928\u0947 \u0915\u0940 \u0928\u0940\u0924\u093f +Uncheck\ to\ disable\ auto-purge\ temporarily=\u0911\u091f\u094b-\u092a\u0930\u094d\u091c \u0915\u094b \u0905\u0938\u094d\u0925\u093e\u092f\u0940 \u0930\u0942\u092a \u0938\u0947 \u0905\u0915\u094d\u0937\u092e \u0915\u0930\u0928\u0947 \u0915\u0947 \u0932\u093f\u090f \u0905\u0928\u091a\u0947\u0915 \u0915\u0930\u0947\u0902 +Purge\ Execution\ Period=\u092a\u0930\u094d\u091c \u0928\u093f\u0937\u094d\u092a\u093e\u0926\u0928 \u0905\u0935\u0927\u093f +Unique\ IDs\ of\ system\ drivers\ to\ purge=\u0936\u0941\u0926\u094d\u0927 \u0915\u0930\u0928\u0947 \u0915\u0947 \u0932\u093f\u090f \u0938\u093f\u0938\u094d\u091f\u092e \u0921\u094d\u0930\u093e\u0907\u0935\u0930\u094b\u0902 \u0915\u0940 \u0905\u0926\u094d\u0935\u093f\u0924\u0940\u092f \u0906\u0908\u0921\u0940 +Max\ Record\ Age=\u0905\u0927\u093f\u0915\u0924\u092e \u0930\u093f\u0915\u0949\u0930\u094d\u0921 \u0906\u092f\u0941 +SensorML\ File=\u0938\u0947\u0902\u0938\u0930\u090f\u092e\u090f\u0932 \u092b\u093c\u093e\u0907\u0932 +Path\ of\ SensorML\ description\ of\ the\ process=SensorML \u0915\u093e \u092a\u0925 \u092a\u094d\u0930\u0915\u094d\u0930\u093f\u092f\u093e \u0915\u093e \u0935\u093f\u0935\u0930\u0923 +List\ of\ users\ allowed\ access\ to\ this\ system=\u0907\u0938 \u0938\u093f\u0938\u094d\u091f\u092e \u0924\u0915 \u092a\u0939\u0941\u0902\u091a \u0915\u0940 \u0905\u0928\u0941\u092e\u0924\u093f \u092a\u094d\u0930\u093e\u092a\u094d\u0924 \u0909\u092a\u092f\u094b\u0917\u0915\u0930\u094d\u0924\u093e\u0913\u0902 \u0915\u0940 \u0938\u0942\u091a\u0940 +List\ of\ security\ roles=\u0938\u0941\u0930\u0915\u094d\u0937\u093e \u092d\u0942\u092e\u093f\u0915\u093e\u0913\u0902 \u0915\u0940 \u0938\u0942\u091a\u0940 +User\ ID=\u0909\u092a\u092f\u094b\u0917\u0915\u0930\u094d\u0924\u093e \u092a\u0939\u091a\u093e\u0928 +Role\ ID=\u092d\u0942\u092e\u093f\u0915\u093e \u0906\u0908\u0921\u0940 +Source\ Database\ ID=\u0938\u094d\u0930\u094b\u0924 \u0921\u0947\u091f\u093e\u092c\u0947\u0938 \u0906\u0908\u0921\u0940 +ID\ of\ database\ module\ to\ read\ data\ from\ (Federated\ database\ will\ be\ used\ if\ not\ set=\u0921\u0947\u091f\u093e \u092a\u0922\u093c\u0928\u0947 \u0915\u0947 \u0932\u093f\u090f \u0921\u0947\u091f\u093e\u092c\u0947\u0938 \u092e\u0949\u0921\u094d\u092f\u0942\u0932 \u0915\u0940 \u0906\u0908\u0921\u0940 (\u092f\u0926\u093f \u0938\u0947\u091f \u0928\u0939\u0940\u0902 \u0939\u0948 \u0924\u094b \u092b\u093c\u0947\u0921\u0930\u0947\u091f\u0947\u0921 \u0921\u0947\u091f\u093e\u092c\u0947\u0938 \u0915\u093e \u0909\u092a\u092f\u094b\u0917 \u0915\u093f\u092f\u093e \u091c\u093e\u090f\u0917\u093e +HTTP\ Port=HTTP \u092a\u094b\u0930\u094d\u091f +HTTPS\ Port=HTTPS \u092a\u094b\u0930\u094d\u091f +Root\ URL\ where\ static\ web\ content\ will\ be\ served.=\u0930\u0942\u091f \u092f\u0942\u0906\u0930\u090f\u0932 \u091c\u0939\u093e\u0902 \u0938\u094d\u0925\u093f\u0930 \u0935\u0947\u092c \u0938\u093e\u092e\u0917\u094d\u0930\u0940 \u092a\u0930\u094b\u0938\u0940 \u091c\u093e\u090f\u0917\u0940\u0964 +Directory\ where\ static\ web\ content\ is\ located.=\u0928\u093f\u0930\u094d\u0926\u0947\u0936\u093f\u0915\u093e \u091c\u0939\u093e\u0902 \u0938\u094d\u0925\u093f\u0930 \u0935\u0947\u092c \u0938\u093e\u092e\u0917\u094d\u0930\u0940 \u0938\u094d\u0925\u093f\u0924 \u0939\u0948\u0964 +Root\ URL\ where\ the\ server\ will\ accept\ requests.\ This\ will\ be\ the\ prefix\ to\ all\ servlet\ URLs.=\u0930\u0942\u091f \u092f\u0942\u0906\u0930\u090f\u0932 \u091c\u0939\u093e\u0902 \u0938\u0930\u094d\u0935\u0930 \u0905\u0928\u0941\u0930\u094b\u0927 \u0938\u094d\u0935\u0940\u0915\u093e\u0930 \u0915\u0930\u0947\u0917\u093e\u0964 \u092f\u0939 \u0938\u092d\u0940 \u0938\u0930\u094d\u0935\u0932\u0947\u091f \u092f\u0942\u0906\u0930\u090f\u0932 \u0915\u093e \u0909\u092a\u0938\u0930\u094d\u0917 \u0939\u094b\u0917\u093e\u0964 +Proxy\ Base\ URL=\u092a\u094d\u0930\u0949\u0915\u094d\u0938\u0940 \u092c\u0947\u0938 \u092f\u0942\u0906\u0930\u090f\u0932 +Public\ URL\ as\ viewed\ from\ the\ outside\ when\ requests\ transit\ through\ a\ proxy\ server.=\u091c\u092c \u0905\u0928\u0941\u0930\u094b\u0927 \u092a\u094d\u0930\u0949\u0915\u094d\u0938\u0940 \u0938\u0930\u094d\u0935\u0930 \u0915\u0947 \u092e\u093e\u0927\u094d\u092f\u092e \u0938\u0947 \u092a\u093e\u0930\u0917\u092e\u0928 \u0939\u094b\u0924\u093e \u0939\u0948 \u0924\u094b \u0938\u093e\u0930\u094d\u0935\u091c\u0928\u093f\u0915 \u092f\u0942\u0906\u0930\u090f\u0932 \u092c\u093e\u0939\u0930 \u0938\u0947 \u0926\u0947\u0916\u093e \u091c\u093e\u0924\u093e \u0939\u0948\u0964 +Authentication\ Method=\u092a\u094d\u0930\u092e\u093e\u0923\u0940\u0915\u0930\u0923 \u0935\u093f\u0927\u093f +Method\ used\ to\ authenticate\ users\ on\ this\ server=\u0907\u0938 \u0938\u0930\u094d\u0935\u0930 \u092a\u0930 \u0909\u092a\u092f\u094b\u0917\u0915\u0930\u094d\u0924\u093e\u0913\u0902 \u0915\u094b \u092a\u094d\u0930\u092e\u093e\u0923\u093f\u0924 \u0915\u0930\u0928\u0947 \u0915\u0947 \u0932\u093f\u090f \u0909\u092a\u092f\u094b\u0917 \u0915\u0940 \u091c\u093e\u0928\u0947 \u0935\u093e\u0932\u0940 \u0935\u093f\u0927\u093f +Path\ to\ a\ key\ store\ containing\ the\ certificate\ and\ keypair\ that\ this\ server\ will\ present\ to\ clients\ when\ accessed\ over\ HTTPS.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ \"javax.net.ssl.keyStore\"\ system\ property.\=Path to a key store containing the certificate and keypair that this server will present to clients when accessed over HTTPS. If this value is blank, will default to using the value of the \"javax.net.ssl.keyStore\" system property. +Alias\ for\ the\ public/private\ keypair\ within\ the\ key\ store\ that\ will\ be\ used\ to\ identify\ this\ server.=\u0915\u0941\u0902\u091c\u0940 \u0938\u094d\u091f\u094b\u0930 \u0915\u0947 \u092d\u0940\u0924\u0930 \u0938\u093e\u0930\u094d\u0935\u091c\u0928\u093f\u0915/\u0928\u093f\u091c\u0940 \u0915\u0941\u0902\u091c\u0940 \u091c\u094b\u0921\u093c\u0940 \u0915\u0947 \u0932\u093f\u090f \u0909\u092a\u0928\u093e\u092e \u091c\u093f\u0938\u0915\u093e \u0909\u092a\u092f\u094b\u0917 \u0907\u0938 \u0938\u0930\u094d\u0935\u0930 \u0915\u0940 \u092a\u0939\u091a\u093e\u0928 \u0915\u0930\u0928\u0947 \u0915\u0947 \u0932\u093f\u090f \u0915\u093f\u092f\u093e \u091c\u093e\u090f\u0917\u093e\u0964 +Path\ to\ the\ TLS\ trust\ store\ that\ is\ used\ when\ client\ authentication\ is\ required.\ Ignored\ if\ client\ certificate\ authentication\ is\ not\ used.\ Certificates\ in\ this\ file\ designate\ the\ signing\ authorities\ for\ client\ certificates\ that\ will\ be\ trusted.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ \"javax.net.ssl.trustStore\"\ system\ property.\=Path to the TLS trust store that is used when client authentication is required. Ignored if client certificate authentication is not used. Certificates in this file designate the signing authorities for client certificates that will be trusted. If this value is blank, will default to using the value of the \"javax.net.ssl.trustStore\" system property. +Password\ for\ the\ trust\ store.\ Ignored\ if\ client\ certificate\ authentication\ is\ not\ used.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ \"javax.net.ssl.trustStorePassword\"\ system\ property.\=Password for the trust store. Ignored if client certificate authentication is not used. If this value is blank, will default to using the value of the \"javax.net.ssl.trustStorePassword\" system property. +Enable\ CORS=CORS \u0938\u0915\u094d\u0937\u092e \u0915\u0930\u0947\u0902 +Enable\ generation\ of\ CORS\ headers\ to\ allow\ cross-domain\ requests\ from\ browsers=\u092c\u094d\u0930\u093e\u0909\u091c\u093c\u0930 \u0938\u0947 \u0915\u094d\u0930\u0949\u0938-\u0921\u094b\u092e\u0947\u0928 \u0905\u0928\u0941\u0930\u094b\u0927\u094b\u0902 \u0915\u0940 \u0905\u0928\u0941\u092e\u0924\u093f \u0926\u0947\u0928\u0947 \u0915\u0947 \u0932\u093f\u090f CORS \u0939\u0947\u0921\u0930 \u0915\u0940 \u092a\u0940\u0922\u093c\u0940 \u0938\u0915\u094d\u0937\u092e \u0915\u0930\u0947\u0902 +Capabilities\ Info=\u0915\u094d\u0937\u092e\u0924\u093e\u0913\u0902 \u0915\u0940 \u091c\u093e\u0928\u0915\u093e\u0930\u0940 +Information\ included\ in\ the\ service\ capabilities\ document=\u0938\u0947\u0935\u093e \u0915\u094d\u0937\u092e\u0924\u093e \u0926\u0938\u094d\u0924\u093e\u0935\u0947\u091c\u093c \u092e\u0947\u0902 \u0936\u093e\u092e\u093f\u0932 \u091c\u093e\u0928\u0915\u093e\u0930\u0940 +Enable\ HTTP\ GET=HTTP GET \u0938\u0915\u094d\u0937\u092e \u0915\u0930\u0947\u0902 +Enables/disables\ HTTP\ GET\ bindings\ on\ operations\ that\ support\ it=HTTP GET \u092c\u093e\u0907\u0902\u0921\u093f\u0902\u0917 \u0915\u094b \u0909\u0928 \u092a\u0930\u093f\u091a\u093e\u0932\u0928\u094b\u0902 \u092a\u0930 \u0938\u0915\u094d\u0937\u092e/\u0905\u0915\u094d\u0937\u092e \u0915\u0930\u0924\u093e \u0939\u0948 \u091c\u094b \u0907\u0938\u0915\u093e \u0938\u092e\u0930\u094d\u0925\u0928 \u0915\u0930\u0924\u0947 \u0939\u0948\u0902 +Enable\ HTTP\ POST=HTTP \u092a\u094b\u0938\u094d\u091f \u0938\u0915\u094d\u0937\u092e \u0915\u0930\u0947\u0902 +Enables/disables\ HTTP\ POST\ bindings\ on\ operations\ that\ support\ it=HTTP POST \u092c\u093e\u0907\u0902\u0921\u093f\u0902\u0917 \u0915\u094b \u0909\u0928 \u092a\u0930\u093f\u091a\u093e\u0932\u0928\u094b\u0902 \u092a\u0930 \u0938\u0915\u094d\u0937\u092e/\u0905\u0915\u094d\u0937\u092e \u0915\u0930\u0924\u093e \u0939\u0948 \u091c\u094b \u0907\u0938\u0915\u093e \u0938\u092e\u0930\u094d\u0925\u0928 \u0915\u0930\u0924\u0947 \u0939\u0948\u0902 +Enable\ HTTP\ SOAP=HTTP SOAP \u0938\u0915\u094d\u0937\u092e \u0915\u0930\u0947\u0902 +Enables/disables\ HTTP\ SOAP\ bindings\ on\ operations\ that\ support\ it=HTTP SOAP \u092c\u093e\u0907\u0902\u0921\u093f\u0902\u0917 \u0915\u094b \u0909\u0928 \u092a\u0930\u093f\u091a\u093e\u0932\u0928\u094b\u0902 \u092a\u0930 \u0938\u0915\u094d\u0937\u092e/\u0905\u0915\u094d\u0937\u092e \u0915\u0930\u0924\u093e \u0939\u0948 \u091c\u094b \u0907\u0938\u0915\u093e \u0938\u092e\u0930\u094d\u0925\u0928 \u0915\u0930\u0924\u0947 \u0939\u0948\u0902 +Connection\ Timeout=\u0930\u093f\u0936\u094d\u0924\u094b\u0902 \u0915\u093e \u0938\u092e\u092f \u092c\u093e\u0939\u0930 +Reconnect\ Period=\u092a\u0941\u0928: \u0915\u0928\u0947\u0915\u094d\u091f \u0905\u0935\u0927\u093f +Max\ Reconnect\ Attempts=\u0905\u0927\u093f\u0915\u0924\u092e \u092a\u0941\u0928: \u0915\u0928\u0947\u0915\u094d\u091f \u092a\u094d\u0930\u092f\u093e\u0938 +Maximum\ number\ of\ times\ the\ client\ will\ attempt\ to\ reconnect\ when\ the\ connection\ is\ not\ available\ or\ lost.\ A\ negative\ value\ means\ that\ there\ is\ no\ limit\ to\ the\ number\ of\ reconnection\ attempts.\ Zero\ means\ not\ to\ attempt\ reconnection.=\u0915\u0928\u0947\u0915\u094d\u0936\u0928 \u0909\u092a\u0932\u092c\u094d\u0927 \u0928 \u0939\u094b\u0928\u0947 \u092f\u093e \u0916\u094b \u091c\u093e\u0928\u0947 \u092a\u0930 \u0917\u094d\u0930\u093e\u0939\u0915 \u0905\u0927\u093f\u0915\u0924\u092e \u092c\u093e\u0930 \u092a\u0941\u0928\u0903 \u0915\u0928\u0947\u0915\u094d\u091f \u0915\u0930\u0928\u0947 \u0915\u093e \u092a\u094d\u0930\u092f\u093e\u0938 \u0915\u0930\u0947\u0917\u093e\u0964 \u0928\u0915\u093e\u0930\u093e\u0924\u094d\u092e\u0915 \u092e\u093e\u0928 \u0915\u093e \u092e\u0924\u0932\u092c \u0939\u0948 \u0915\u093f \u092a\u0941\u0928: \u0915\u0928\u0947\u0915\u094d\u0936\u0928 \u092a\u094d\u0930\u092f\u093e\u0938\u094b\u0902 \u0915\u0940 \u0938\u0902\u0916\u094d\u092f\u093e \u0915\u0940 \u0915\u094b\u0908 \u0938\u0940\u092e\u093e \u0928\u0939\u0940\u0902 \u0939\u0948\u0964 \u0936\u0942\u0928\u094d\u092f \u0915\u093e \u0905\u0930\u094d\u0925 \u0939\u0948 \u092a\u0941\u0928\u0903 \u091c\u0941\u0921\u093c\u0928\u0947 \u0915\u093e \u092a\u094d\u0930\u092f\u093e\u0938 \u0928 \u0915\u0930\u0928\u093e\u0964 +IP\ or\ DNS\ name\ of\ remote\ host=\u0926\u0942\u0930\u0938\u094d\u0925 \u0939\u094b\u0938\u094d\u091f \u0915\u093e \u0906\u0908\u092a\u0940 \u092f\u093e \u0921\u0940\u090f\u0928\u090f\u0938 \u0928\u093e\u092e +IP\ of\ local\ network\ interface\ to\ bind\ to\ or\ 'AUTO'\ to\ select\ it\ automatically=\u0938\u094d\u0925\u093e\u0928\u0940\u092f \u0928\u0947\u091f\u0935\u0930\u094d\u0915 \u0907\u0902\u091f\u0930\u092b\u093c\u0947\u0938 \u0915\u0947 \u0906\u0908\u092a\u0940 \u0915\u094b \u0938\u094d\u0935\u091a\u093e\u0932\u093f\u0924 \u0930\u0942\u092a \u0938\u0947 \u091a\u0941\u0928\u0928\u0947 \u0915\u0947 \u0932\u093f\u090f \u0907\u0938\u0947 \u092c\u093e\u0907\u0902\u0921 \u092f\u093e ''''\u0911\u091f\u094b'''' \u0915\u0930\u0947\u0902 +Connection\ Options=\u0915\u0928\u0947\u0915\u094d\u0936\u0928 \u0935\u093f\u0915\u0932\u094d\u092a +Serial\ port\ device\ name.\ Usually\ something\ like\ /dev/ttyXXX\ on\ Linux=\u0938\u0940\u0930\u093f\u092f\u0932 \u092a\u094b\u0930\u094d\u091f \u0921\u093f\u0935\u093e\u0907\u0938 \u0915\u093e \u0928\u093e\u092e. \u0906\u092e\u0924\u094c\u0930 \u092a\u0930 Linux \u092a\u0930 /dev/ttyXXX \u091c\u0948\u0938\u093e \u0915\u0941\u091b +Minimum\ number\ of\ bytes\ to\ receive\ before\ they\ are\ sent\ to\ the\ caller=\u0915\u0949\u0932 \u0915\u0930\u0928\u0947 \u0935\u093e\u0932\u0947 \u0915\u094b \u092d\u0947\u091c\u0947 \u091c\u093e\u0928\u0947 \u0938\u0947 \u092a\u0939\u0932\u0947 \u092a\u094d\u0930\u093e\u092a\u094d\u0924 \u0939\u094b\u0928\u0947 \u0935\u093e\u0932\u0940 \u092c\u093e\u0907\u091f\u094d\u0938 \u0915\u0940 \u0928\u094d\u092f\u0942\u0928\u0924\u092e \u0938\u0902\u0916\u094d\u092f\u093e +Local\ port\ number\ to\ use\ on\ the\ local\ host=\u0938\u094d\u0925\u093e\u0928\u0940\u092f \u0939\u094b\u0938\u094d\u091f \u092a\u0930 \u0909\u092a\u092f\u094b\u0917 \u0915\u0930\u0928\u0947 \u0915\u0947 \u0932\u093f\u090f \u0938\u094d\u0925\u093e\u0928\u0940\u092f \u092a\u094b\u0930\u094d\u091f \u0928\u0902\u092c\u0930 +Physical\ address\ of\ Bluetooth\ device\ to\ connect\ to=\u0915\u0928\u0947\u0915\u094d\u091f \u0915\u0930\u0928\u0947 \u0915\u0947 \u0932\u093f\u090f \u092c\u094d\u0932\u0942\u091f\u0942\u0925 \u0921\u093f\u0935\u093e\u0907\u0938 \u0915\u093e \u092d\u094c\u0924\u093f\u0915 \u092a\u0924\u093e +Port\ number\ to\ connect\ to\ on\ remote\ host=\u0930\u093f\u092e\u094b\u091f \u0939\u094b\u0938\u094d\u091f \u0938\u0947 \u0915\u0928\u0947\u0915\u094d\u091f \u0915\u0930\u0928\u0947 \u0915\u0947 \u0932\u093f\u090f \u092a\u094b\u0930\u094d\u091f \u0928\u0902\u092c\u0930 +User\ Name=\u0909\u092a\u092f\u094b\u0917\u0915\u0930\u094d\u0924\u093e \u0928\u093e\u092e +Remote\ user\ name=\u0926\u0942\u0930\u0938\u094d\u0925 \u0909\u092a\u092f\u094b\u0917\u0915\u0930\u094d\u0924\u093e \u0928\u093e\u092e +Password=\u092a\u093e\u0938\u0935\u0930\u094d\u0921 +Remote\ password=\u0930\u093f\u092e\u094b\u091f \u092a\u093e\u0938\u0935\u0930\u094d\u0921 +Secure\ communications\ with\ SSL/TLS=\u090f\u0938\u090f\u0938\u090f\u0932/\u091f\u0940\u090f\u0932\u090f\u0938 \u0915\u0947 \u0938\u093e\u0925 \u0938\u0941\u0930\u0915\u094d\u0937\u093f\u0924 \u0938\u0902\u091a\u093e\u0930 +Enable\ to\ check\ if\ remote\ host\ is\ reachable\ before\ attempting\ further\ operations=\u0906\u0917\u0947 \u0915\u0947 \u0938\u0902\u091a\u093e\u0932\u0928 \u0915\u093e \u092a\u094d\u0930\u092f\u093e\u0938 \u0915\u0930\u0928\u0947 \u0938\u0947 \u092a\u0939\u0932\u0947 \u092f\u0939 \u091c\u093e\u0902\u091a\u0928\u0947 \u092e\u0947\u0902 \u0938\u0915\u094d\u0937\u092e \u0915\u0930\u0947\u0902 \u0915\u093f \u0926\u0942\u0930\u0938\u094d\u0925 \u0939\u094b\u0938\u094d\u091f \u092a\u0939\u0941\u0902\u091a \u092f\u094b\u0917\u094d\u092f \u0939\u0948 \u092f\u093e \u0928\u0939\u0940\u0902 +Path\ or\ resource\ or\ service\ relative\ to\ server\ root=\u0938\u0930\u094d\u0935\u0930 \u0930\u0942\u091f \u0938\u0947 \u0938\u0902\u092c\u0902\u0927\u093f\u0924 \u092a\u0925 \u092f\u093e \u0938\u0902\u0938\u093e\u0927\u0928 \u092f\u093e \u0938\u0947\u0935\u093e +Unique\ ID\ of\ system\ group=\u0938\u093f\u0938\u094d\u091f\u092e \u0938\u092e\u0942\u0939 \u0915\u0940 \u0935\u093f\u0936\u093f\u0937\u094d\u091f \u0906\u0908\u0921\u0940 +Name\ of\ system\ group=\u0938\u093f\u0938\u094d\u091f\u092e \u0938\u092e\u0942\u0939 \u0915\u093e \u0928\u093e\u092e +Description\ of\ system\ group=\u0938\u093f\u0938\u094d\u091f\u092e \u0938\u092e\u0942\u0939 \u0915\u093e \u0935\u093f\u0935\u0930\u0923 +List\ of\ bundle\ repository\ URLs=\u092c\u0902\u0921\u0932 \u0930\u093f\u092a\u094b\u091c\u093f\u091f\u0930\u0940 \u092f\u0942\u0906\u0930\u090f\u0932 \u0915\u0940 \u0938\u0942\u091a\u0940 +A\ human\ readable\ friendly\ identifier\ for\ the\ deployment=\u092a\u0930\u093f\u0928\u093f\u092f\u094b\u091c\u0928 \u0915\u0947 \u0932\u093f\u090f \u090f\u0915 \u092e\u093e\u0928\u0935 \u092a\u0920\u0928\u0940\u092f \u0905\u0928\u0941\u0915\u0942\u0932 \u092a\u0939\u091a\u093e\u0928\u0915\u0930\u094d\u0924\u093e +Enable\ Landing\ Page=\u0932\u0948\u0902\u0921\u093f\u0902\u0917 \u092a\u0943\u0937\u094d\u0920 \u0938\u0915\u094d\u0937\u092e \u0915\u0930\u0947\u0902 +Enable\ Landing\ Servlet\ to\ redirect\ users\ to\ landing\ page=\u0909\u092a\u092f\u094b\u0917\u0915\u0930\u094d\u0924\u093e\u0913\u0902 \u0915\u094b \u0932\u0948\u0902\u0921\u093f\u0902\u0917 \u092a\u0943\u0937\u094d\u0920 \u092a\u0930 \u092a\u0941\u0928\u0930\u094d\u0928\u093f\u0930\u094d\u0926\u0947\u0936\u093f\u0924 \u0915\u0930\u0928\u0947 \u0915\u0947 \u0932\u093f\u090f \u0932\u0948\u0902\u0921\u093f\u0902\u0917 \u0938\u0930\u094d\u0935\u0932\u0947\u091f \u0938\u0915\u094d\u0937\u092e \u0915\u0930\u0947\u0902 +Config\ Class=\u0915\u0949\u0928\u094d\u092b\u093f\u0917 \u0915\u094d\u0932\u093e\u0938 +Type\ of\ module\ config\ class\ for\ which\ a\ custom\ panel\ must\ be\ generated=\u092e\u0949\u0921\u094d\u092f\u0942\u0932 \u0915\u0949\u0928\u094d\u092b\u093f\u0917 \u0915\u094d\u0932\u093e\u0938 \u0915\u093e \u092a\u094d\u0930\u0915\u093e\u0930 \u091c\u093f\u0938\u0915\u0947 \u0932\u093f\u090f \u090f\u0915 \u0915\u0938\u094d\u091f\u092e \u092a\u0948\u0928\u0932 \u0924\u0948\u092f\u093e\u0930 \u0915\u093f\u092f\u093e \u091c\u093e\u0928\u093e \u091a\u093e\u0939\u093f\u090f +UI\ Class=\u092f\u0942\u0906\u0908 \u0915\u094d\u0932\u093e\u0938 +Fully\ qualified\ name\ of\ class\ implementing\ IModuleAdminPanel=IModuleAdminPanel \u0915\u094b \u0915\u093e\u0930\u094d\u092f\u093e\u0928\u094d\u0935\u093f\u0924 \u0915\u0930\u0928\u0947 \u0935\u093e\u0932\u0947 \u0935\u0930\u094d\u0917 \u0915\u093e \u092a\u0942\u0930\u094d\u0923\u0924\u0903 \u092f\u094b\u0917\u094d\u092f \u0928\u093e\u092e + +# Auto-extracted property IDs +sensorML=\u0938\u0947\u0902\u0938\u0930 \u090f\u092e.\u090f\u0932 +lastUpdated=\u0906\u0916\u0930\u0940 \u0905\u092a\u0921\u0947\u091f +lat=\u0905\u0915\u094d\u0937\u093e\u0902 +lon=\u0926\u0947\u0936\u093e +alt=Alt +x=\u090f\u0915\u094d\u0938 +y=Y +z=\u091c\u0947\u0921 +heading=\u0936\u0940\u0930\u094d\u0937\u0915 +pitch=\u0906\u0935\u093e\u091c\u093c \u0915\u093e \u0909\u0924\u093e\u0930-\u091a\u0922\u093c\u093e\u0935 +roll=\u0930\u094b\u0932 +location=\u091c\u0917\u0939 +orientation=\u0905\u092d\u093f\u0935\u093f\u0928\u094d\u092f\u093e\u0938 +databaseNum=\u0921\u0947\u091f\u093e\u092c\u0947\u0938 \u0938\u0902\u0916\u094d\u092f\u093e +enableAccessControl=\u0905\u092d\u093f\u0917\u092e \u0928\u093f\u092f\u0902\u0924\u094d\u0930\u0923 \u0938\u0915\u094d\u0937\u092e \u0915\u0930\u0947\u0902 +requireAuth=\u092a\u094d\u0930\u092e\u093e\u0923\u0940\u0915\u0930\u0923 \u0915\u0940 \u0906\u0935\u0936\u094d\u092f\u0915\u0924\u093e \u0939\u0948 +mimeType=\u092e\u093e\u0907\u092e \u092a\u094d\u0930\u0915\u093e\u0930 +className=\u0915\u0915\u094d\u0937\u093e \u0915\u093e \u0928\u093e\u092e +endPoint=\u0905\u0902\u0924 \u092c\u093f\u0902\u0926\u0941 +id=\u092a\u0939\u091a\u093e\u0928 +description=\u0935\u093f\u0935\u0930\u0923 +autoStart=\u0911\u091f\u094b \u0938\u094d\u091f\u093e\u0930\u094d\u091f +topicName=\u0935\u093f\u0937\u092f \u0915\u093e \u0928\u093e\u092e +enablePublish=\u092a\u094d\u0930\u0915\u093e\u0936\u093f\u0924 \u0915\u0930\u0928\u093e \u0938\u0915\u094d\u0937\u092e \u0915\u0930\u0947\u0902 +enableSubscribe=\u0938\u0926\u0938\u094d\u092f\u0924\u093e \u0938\u0915\u094d\u0937\u092e \u0915\u0930\u0947\u0902 +protocol=\u0936\u093f\u0937\u094d\u091f\u093e\u091a\u093e\u0930 +moduleConfigPath=\u092e\u0949\u0921\u094d\u092f\u0942\u0932 \u0915\u0949\u0928\u094d\u092b\u093c\u093f\u0917 \u092a\u0925 +moduleDataPath=\u092e\u0949\u0921\u094d\u092f\u0942\u0932 \u0921\u0947\u091f\u093e \u092a\u0925 +commonConfig=\u0938\u093e\u092e\u093e\u0928\u094d\u092f \u0915\u0949\u0928\u094d\u092b\u093f\u0917 +sensors=Sensors +config=\u0915\u0949\u0928\u094d\u092b\u093c\u093f\u0917 +uniqueID=\u0905\u0928\u094b\u0916\u093e ID +subsystems=\u0909\u092a\u092a\u094d\u0930\u0923\u093e\u0932\u093f\u092f\u093e\u0901 +dbConfig=\u0921\u0940\u092c\u0940 \u0915\u0949\u0928\u094d\u092b\u093f\u0917 +systemUIDs=\u0938\u093f\u0938\u094d\u091f\u092e \u092f\u0942\u0906\u0908\u0921\u0940 +autoPurgeConfig=\u0911\u091f\u094b \u092a\u0930\u094d\u091c \u0915\u0949\u0928\u094d\u092b\u093f\u0917 +minCommitPeriod=\u0928\u094d\u092f\u0942\u0928\u0924\u092e \u092a\u094d\u0930\u0924\u093f\u092c\u0926\u094d\u0927 \u0905\u0935\u0927\u093f +enabled=\u0938\u0915\u094d\u0930\u093f\u092f +purgePeriod=\u0936\u0941\u0926\u094d\u0927\u093f\u0915\u0930\u0923 \u0905\u0935\u0927\u093f +maxRecordAge=\u0905\u0927\u093f\u0915\u0924\u092e \u0930\u093f\u0915\u0949\u0930\u094d\u0921 \u0906\u092f\u0941 +users=\u0909\u092a\u092f\u094b\u0917\u0915\u0930\u094d\u0924\u093e\u0913\u0902 +roles=\u092d\u0942\u092e\u093f\u0915\u093e\u090f\u0901 +allow=\u0905\u0928\u0941\u092e\u0924\u093f \u0926\u0947\u0902 +deny=\u0905\u0938\u094d\u0935\u0940\u0915\u093e\u0930 \u0915\u0930\u0928\u093e +userID=\u0909\u092a\u092f\u094b\u0917\u0915\u0930\u094d\u0924\u093e \u092a\u0939\u091a\u093e\u0928 +name=\u0928\u093e\u092e +password=\u092a\u093e\u0938\u0935\u0930\u094d\u0921 +certificate=\u092a\u094d\u0930\u092e\u093e\u0923\u092a\u0924\u094d\u0930 +twoFactorSecret=\u0926\u094b \u0915\u093e\u0930\u0915 \u0930\u0939\u0938\u094d\u092f +isTwoFactorEnabled=\u0915\u094d\u092f\u093e \u0926\u094b \u0915\u093e\u0930\u0915 \u0938\u0915\u094d\u0937\u092e \u0939\u0948\u0902? +roleID=\u092d\u0942\u092e\u093f\u0915\u093e \u0915\u094d\u0930\u092e\u093e\u0902\u0915 +sourceDatabaseId=\u0938\u094d\u0930\u094b\u0924 \u0921\u0947\u091f\u093e\u092c\u0947\u0938 \u0906\u0908\u0921\u0940 +includeFilter=\u092b\u093c\u093f\u0932\u094d\u091f\u0930 \u0936\u093e\u092e\u093f\u0932 \u0915\u0930\u0947\u0902 +excludeFilter=\u092b\u093c\u093f\u0932\u094d\u091f\u0930 \u092c\u0939\u093f\u0937\u094d\u0915\u0943\u0924 \u0915\u0930\u0947\u0902 +httpPort=HTTP \u092a\u094b\u0930\u094d\u091f +httpsPort=HTTPS \u092a\u094b\u0930\u094d\u091f +staticDocsRootUrl=\u0938\u094d\u091f\u0947\u091f\u093f\u0915 \u0921\u0949\u0915\u094d\u0938 \u0930\u0942\u091f \u092f\u0942\u0906\u0930\u090f\u0932 +staticDocsRootDir=\u0938\u094d\u091f\u0947\u091f\u093f\u0915 \u0921\u0949\u0915\u094d\u0938 \u0930\u0942\u091f \u0921\u093f\u0930 +servletsRootUrl=\u0938\u0930\u094d\u0935\u0932\u0947\u091f\u094d\u0938 \u0930\u0942\u091f \u092f\u0942\u0906\u0930\u090f\u0932 +proxyBaseUrl=\u092a\u094d\u0930\u0949\u0915\u094d\u0938\u0940 \u092c\u0947\u0938 \u092f\u0942\u0906\u0930\u090f\u0932 +authMethod=\u092a\u094d\u0930\u093e\u092e\u093e\u0923\u093f\u0915 \u0935\u093f\u0927\u093f +keyStorePath=\u0915\u0941\u0902\u091c\u0940 \u0938\u094d\u091f\u094b\u0930 \u092a\u0925 +keyStorePassword=\u0915\u0941\u0902\u091c\u0940 \u0938\u094d\u091f\u094b\u0930 \u092a\u093e\u0938\u0935\u0930\u094d\u0921 +keyAlias=\u0915\u0941\u0902\u091c\u0940 \u0909\u092a\u0928\u093e\u092e +trustStorePath=\u091f\u094d\u0930\u0938\u094d\u091f \u0938\u094d\u091f\u094b\u0930 \u092a\u0925 +trustStorePassword=\u0938\u094d\u091f\u094b\u0930 \u092a\u093e\u0938\u0935\u0930\u094d\u0921 \u092a\u0930 \u092d\u0930\u094b\u0938\u093e \u0915\u0930\u0947\u0902 +xmlConfigFile=\u090f\u0915\u094d\u0938\u090f\u092e\u090f\u0932 \u0915\u0949\u0928\u094d\u092b\u093c\u093f\u0917 \u092b\u093c\u093e\u0907\u0932 +enableCORS=\u0915\u094b\u0930\u094d\u0938 \u0938\u0915\u094d\u0937\u092e \u0915\u0930\u0947\u0902 +title=Title +keywords=\u0915\u0940\u0935\u0930\u094d\u0921 +fees=\u092b\u0940\u0938 +accessConstraints=\u092a\u0939\u0941\u0902\u091a \u0938\u0902\u092c\u0902\u0927\u0940 \u092c\u093e\u0927\u093e\u090f\u0902 +serviceProvider=\u0938\u0947\u0935\u093e \u092a\u094d\u0930\u0926\u093e\u0924\u093e +ogcCapabilitiesInfo=\u0913\u091c\u0940\u0938\u0940 \u0915\u094d\u0937\u092e\u0924\u093e\u0913\u0902 \u0915\u0940 \u091c\u093e\u0928\u0915\u093e\u0930\u0940 +enableHttpGET=Http \u092a\u094d\u0930\u093e\u092a\u094d\u0924 \u0938\u0915\u094d\u0937\u092e \u0915\u0930\u0947\u0902 +enableHttpPOST=Http \u092a\u094b\u0938\u094d\u091f \u0938\u0915\u094d\u0937\u092e \u0915\u0930\u0947\u0902 +enableSOAP=\u0938\u093e\u092c\u0941\u0928 \u0938\u0915\u094d\u0937\u092e \u0915\u0930\u0947\u0902 +connectTimeout=\u0915\u0928\u0947\u0915\u094d\u091f \u091f\u093e\u0907\u092e\u0906\u0909\u091f +reconnectPeriod=\u092a\u0941\u0928: \u0915\u0928\u0947\u0915\u094d\u091f \u0905\u0935\u0927\u093f +reconnectAttempts=\u092a\u0941\u0928: \u0915\u0928\u0947\u0915\u094d\u091f \u092a\u094d\u0930\u092f\u093e\u0938 +deviceID=\u0921\u093f\u0935\u093e\u0907\u0938 \u0906\u0908\u0921\u0940 +deviceClass=\u0921\u093f\u0935\u093e\u0907\u0938 \u0915\u094d\u0932\u093e\u0938 +remoteHost=\u0930\u093f\u092e\u094b\u091f \u0939\u094b\u0938\u094d\u091f +localAddress=\u0938\u094d\u0925\u093e\u0928\u0940\u092f \u092a\u0924\u093e +connection=\u0938\u0902\u092c\u0902\u0927 +portName=\u092c\u0902\u0926\u0930\u0917\u093e\u0939 \u0915\u093e \u0928\u093e\u092e +baudRate=\u092c\u0949\u0921 \u0926\u0930 +dataBits=\u0921\u0947\u091f\u093e \u092c\u093f\u091f\u094d\u0938 +stopBits=\u0938\u094d\u091f\u0949\u092a \u092c\u093f\u091f\u094d\u0938 +parity=\u0938\u092e\u0924\u093e +receiveTimeout=\u091f\u093e\u0907\u092e\u0906\u0909\u091f \u092a\u094d\u0930\u093e\u092a\u094d\u0924 \u0915\u0930\u0947\u0902 +receiveThreshold=\u0926\u0939\u0932\u0940\u091c \u092a\u094d\u0930\u093e\u092a\u094d\u0924 \u0915\u0930\u0947\u0902 +remotePort=\u0930\u093f\u092e\u094b\u091f \u092a\u094b\u0930\u094d\u091f +localPort=\u0938\u094d\u0925\u093e\u0928\u0940\u092f \u092c\u0902\u0926\u0930\u0917\u093e\u0939 +deviceAddress=\u0921\u093f\u0935\u093e\u0907\u0938 \u0915\u093e \u092a\u0924\u093e +deviceName=\u0921\u093f\u0935\u093e\u0907\u0938 \u0915\u093e \u0928\u093e\u092e +serviceUuid=\u0938\u0947\u0935\u093e Uuid +user=\u0909\u092a\u092f\u094b\u0917\u0915\u0930\u094d\u0924\u093e +enableTLS=\u091f\u0940\u090f\u0932\u090f\u0938 \u0938\u0915\u094d\u0937\u092e \u0915\u0930\u0947\u0902 +checkReachability=\u092a\u0939\u0941\u0902\u091a \u092f\u094b\u0917\u094d\u092f\u0924\u093e \u0915\u0940 \u091c\u093e\u0901\u091a \u0915\u0930\u0947\u0902 +resourcePath=\u0938\u0902\u0938\u093e\u0927\u0928 \u092a\u0925 +uid=\u092f\u0942\u0906\u0908\u0921\u0940 +securityRole=\u0938\u0941\u0930\u0915\u094d\u0937\u093e \u092d\u0942\u092e\u093f\u0915\u093e +passwordField=\u092a\u093e\u0938\u0935\u0930\u094d\u0921 \u092b\u093c\u0940\u0932\u094d\u0921 +widgetSet=\u0935\u093f\u091c\u0947\u091f \u0938\u0947\u091f +bundleRepoUrls=\u092c\u0902\u0921\u0932 \u0930\u0947\u092a\u094b \u092f\u0942\u0906\u0930\u090f\u0932 +customPanels=\u0915\u0938\u094d\u091f\u092e \u092a\u0948\u0928\u0932 +customForms=\u0915\u0938\u094d\u091f\u092e \u092b\u0949\u0930\u094d\u092e +deploymentName=\u092a\u0930\u093f\u0928\u093f\u092f\u094b\u091c\u0928 \u0928\u093e\u092e +enableLandingPage=\u0932\u0948\u0902\u0921\u093f\u0902\u0917 \u092a\u0943\u0937\u094d\u0920 \u0938\u0915\u094d\u0937\u092e \u0915\u0930\u0947\u0902 +configClass=\u0915\u0949\u0928\u094d\u092b\u093f\u0917 \u0915\u094d\u0932\u093e\u0938 +uiClass=\u092f\u0942\u0906\u0908 \u0915\u094d\u0932\u093e\u0938 +moduleClass=\u092e\u0949\u0921\u094d\u092f\u0942\u0932 \u0915\u094d\u0932\u093e\u0938 + +# Auto-extracted hardcoded UI strings +testLinks1=\u092a\u0930\u0940\u0915\u094d\u0937\u0923 \u0932\u093f\u0902\u0915 +uniqueID1=\u0905\u0928\u094b\u0916\u093e ID +foiIDs1=\u090f\u092b\u0913\u0906\u0908 \u0906\u0908\u0921\u0940 +version1=\u0938\u0902\u0938\u094d\u0915\u0930\u0923 + +Connected\ Systems\ Endpoint=\u0915\u0928\u0947\u0915\u094d\u091f\u0947\u0921 \u0938\u093f\u0938\u094d\u091f\u092e \u090f\u0902\u0921\u092a\u0949\u0907\u0902\u091f +Connected\ Systems\ endpoint\ where\ the\ requests\ are\ sent=\u0915\u0928\u0947\u0915\u094d\u091f\u0947\u0921 \u0938\u093f\u0938\u094d\u091f\u092e \u090f\u0902\u0921\u092a\u0949\u0907\u0902\u091f \u091c\u0939\u093e\u0902 \u0905\u0928\u0941\u0930\u094b\u0927 \u092d\u0947\u091c\u0947 \u091c\u093e\u0924\u0947 \u0939\u0948\u0902 +Connection\ Settings=\u0915\u0928\u0947\u0915\u094d\u0936\u0928 \u0938\u0947\u091f\u093f\u0902\u0917\u094d\u0938 +Custom\ connector\ configurations=\u0915\u0938\u094d\u091f\u092e \u0915\u0928\u0947\u0915\u094d\u091f\u0930 \u0915\u0949\u0928\u094d\u092b\u093c\u093f\u0917\u0930\u0947\u0936\u0928 +Custom\ provider\ configurations=\u0915\u0938\u094d\u091f\u092e \u092a\u094d\u0930\u0926\u093e\u0924\u093e \u0915\u0949\u0928\u094d\u092b\u093c\u093f\u0917\u0930\u0947\u0936\u0928 +Database\ ID=\u0921\u0947\u091f\u093e\u092c\u0947\u0938 \u0906\u0908\u0921\u0940 +Default\ live\ time-out\ for\ all\ offerings,\ unless\ overriden\ by\ custom\ provider\ settings=\u0938\u092d\u0940 \u092a\u0947\u0936\u0915\u0936\u094b\u0902 \u0915\u0947 \u0932\u093f\u090f \u0921\u093f\u092b\u093c\u0949\u0932\u094d\u091f \u0932\u093e\u0907\u0935 \u091f\u093e\u0907\u092e-\u0906\u0909\u091f, \u091c\u092c \u0924\u0915 \u0915\u093f \u0915\u0938\u094d\u091f\u092e \u092a\u094d\u0930\u0926\u093e\u0924\u093e \u0938\u0947\u091f\u093f\u0902\u0917\u094d\u0938 \u0926\u094d\u0935\u093e\u0930\u093e \u0913\u0935\u0930\u0930\u093e\u0907\u0921 \u0928 \u0915\u093f\u092f\u093e \u091c\u093e\u090f +Default\ live\ time-out\ for\ new\ offerings\ created\ via\ SOS-T=\u090f\u0938\u0913\u090f\u0938-\u091f\u0940 \u0915\u0947 \u092e\u093e\u0927\u094d\u092f\u092e \u0938\u0947 \u092c\u0928\u093e\u0908 \u0917\u0908 \u0928\u0908 \u092a\u0947\u0936\u0915\u0936\u094b\u0902 \u0915\u0947 \u0932\u093f\u090f \u0921\u093f\u092b\u093c\u0949\u0932\u094d\u091f \u0932\u093e\u0907\u0935 \u091f\u093e\u0907\u092e-\u0906\u0909\u091f +Enable\ to\ use\ a\ persistent\ HTTP\ connection\ for\ InsertResult=InsertResult \u0915\u0947 \u0932\u093f\u090f \u0932\u0917\u093e\u0924\u093e\u0930 HTTP \u0915\u0928\u0947\u0915\u094d\u0936\u0928 \u0915\u093e \u0909\u092a\u092f\u094b\u0917 \u0915\u0930\u0928\u0947 \u092e\u0947\u0902 \u0938\u0915\u094d\u0937\u092e \u0915\u0930\u0947\u0902 +Execution\ period\ of\ the\ purge\ policy\ (in\ seconds)=\u0936\u0941\u0926\u094d\u0927\u093f\u0915\u0930\u0923 \u0928\u0940\u0924\u093f \u0915\u0940 \u0928\u093f\u0937\u094d\u092a\u093e\u0926\u0928 \u0905\u0935\u0927\u093f (\u0938\u0947\u0915\u0902\u0921 \u092e\u0947\u0902) +Filtered\ view\ to\ select\ systems\ exposed\ as\ read-only\ through\ this\ service=\u0907\u0938 \u0938\u0947\u0935\u093e \u0915\u0947 \u092e\u093e\u0927\u094d\u092f\u092e \u0938\u0947 \u0915\u0947\u0935\u0932-\u092a\u0920\u0928 \u0915\u0947 \u0930\u0942\u092a \u092e\u0947\u0902 \u092a\u094d\u0930\u0926\u0930\u094d\u0936\u093f\u0924 \u091a\u0941\u0928\u093f\u0902\u0926\u093e \u0938\u093f\u0938\u094d\u091f\u092e\u094b\u0902 \u0915\u0947 \u0932\u093f\u090f \u092b\u093c\u093f\u0932\u094d\u091f\u0930 \u0915\u093f\u092f\u093e \u0917\u092f\u093e \u0926\u0943\u0936\u094d\u092f +Filtered\ view\ to\ select\ systems/datastreams\ to\ register\ with\ Connected\ Systems=\u0915\u0928\u0947\u0915\u094d\u091f\u0947\u0921 \u0938\u093f\u0938\u094d\u091f\u092e \u0915\u0947 \u0938\u093e\u0925 \u092a\u0902\u091c\u0940\u0915\u0930\u0923 \u0915\u0930\u0928\u0947 \u0915\u0947 \u0932\u093f\u090f \u0938\u093f\u0938\u094d\u091f\u092e/\u0921\u0947\u091f\u093e\u0938\u094d\u091f\u094d\u0930\u0940\u092e \u0915\u093e \u091a\u092f\u0928 \u0915\u0930\u0928\u0947 \u0915\u0947 \u0932\u093f\u090f \u092b\u093c\u093f\u0932\u094d\u091f\u0930 \u0915\u093f\u092f\u093e \u0917\u092f\u093e \u0926\u0943\u0936\u094d\u092f +Filtered\ view\ to\ select\ systems/datastreams\ to\ register\ with\ remote\ SOS=\u0926\u0942\u0930\u0938\u094d\u0925 \u090f\u0938\u0913\u090f\u0938 \u0915\u0947 \u0938\u093e\u0925 \u092a\u0902\u091c\u0940\u0915\u0930\u0923 \u0915\u0930\u0928\u0947 \u0915\u0947 \u0932\u093f\u090f \u0938\u093f\u0938\u094d\u091f\u092e/\u0921\u0947\u091f\u093e\u0938\u094d\u091f\u094d\u0930\u0940\u092e \u0915\u093e \u091a\u092f\u0928 \u0915\u0930\u0928\u0947 \u0915\u0947 \u0932\u093f\u090f \u092b\u093c\u093f\u0932\u094d\u091f\u0930 \u0915\u093f\u092f\u093e \u0917\u092f\u093e \u0926\u0943\u0936\u094d\u092f +Fixed\ system\ location\ in\ EPSG\ 4979\ (WGS84)\ coordinate\ system=EPSG 4979 (WGS84) \u0938\u092e\u0928\u094d\u0935\u092f \u092a\u094d\u0930\u0923\u093e\u0932\u0940 \u092e\u0947\u0902 \u0928\u093f\u0936\u094d\u091a\u093f\u0924 \u0938\u093f\u0938\u094d\u091f\u092e \u0938\u094d\u0925\u093e\u0928 +For\ each\ connection\ or\ reconnection\ attempt,\ the\ client\ will\ wait\ for\ the\ remote\ side\ to\ respond\ until\ this\ timeout\ expires\ (in\ ms)=\u092a\u094d\u0930\u0924\u094d\u092f\u0947\u0915 \u0915\u0928\u0947\u0915\u094d\u0936\u0928 \u092f\u093e \u092a\u0941\u0928:\u0915\u0928\u0947\u0915\u094d\u0936\u0928 \u092a\u094d\u0930\u092f\u093e\u0938 \u0915\u0947 \u0932\u093f\u090f, \u0915\u094d\u0932\u093e\u0907\u0902\u091f \u0907\u0938 \u091f\u093e\u0907\u092e\u0906\u0909\u091f \u0915\u0947 \u0938\u092e\u093e\u092a\u094d\u0924 \u0939\u094b\u0928\u0947 \u0924\u0915 \u0930\u093f\u092e\u094b\u091f \u0938\u093e\u0907\u0921 \u0938\u0947 \u092a\u094d\u0930\u0924\u093f\u0915\u094d\u0930\u093f\u092f\u093e \u0915\u0940 \u092a\u094d\u0930\u0924\u0940\u0915\u094d\u0937\u093e \u0915\u0930\u0947\u0917\u093e (\u090f\u092e\u090f\u0938 \u092e\u0947\u0902) +Heading\ (or\ yaw)\ angle\ about\ Z\ axis\ in\ degrees=\u0921\u093f\u0917\u094d\u0930\u0940 \u092e\u0947\u0902 Z \u0905\u0915\u094d\u0937 \u0915\u0947 \u092c\u093e\u0930\u0947 \u092e\u0947\u0902 \u0939\u0947\u0921\u093f\u0902\u0917 (\u092f\u093e \u092f\u0949) \u0915\u094b\u0923 +How\ long\ the\ client\ will\ wait\ after\ connection\ is\ lost\ before\ it\ will\ attempt\ to\ reconnect\ (in\ ms)=\u0915\u0928\u0947\u0915\u094d\u0936\u0928 \u091f\u0942\u091f\u0928\u0947 \u0915\u0947 \u092c\u093e\u0926 \u092a\u0941\u0928\u0903 \u0915\u0928\u0947\u0915\u094d\u091f \u0915\u0930\u0928\u0947 \u0915\u093e \u092a\u094d\u0930\u092f\u093e\u0938 \u0915\u0930\u0928\u0947 \u0938\u0947 \u092a\u0939\u0932\u0947 \u0917\u094d\u0930\u093e\u0939\u0915 \u0915\u093f\u0924\u0928\u0940 \u0926\u0947\u0930 \u0924\u0915 \u092a\u094d\u0930\u0924\u0940\u0915\u094d\u0937\u093e \u0915\u0930\u0947\u0917\u093e (\u090f\u092e\u090f\u0938 \u092e\u0947\u0902) +ID\ Generator=\u0906\u0908\u0921\u0940 \u091c\u0928\u0930\u0947\u091f\u0930 +ID\ of\ database\ module\ used\ for\ persisting\ data\ received\ by\ this\ service.\ If\ none\ is\ provided,\ new\ systems\ registered\ through\ this\ service\ will\ be\ available\ on\ the\ hub,\ but\ with\ no\ persistence\ guarantee\ across\ restarts.=\u0907\u0938 \u0938\u0947\u0935\u093e \u0926\u094d\u0935\u093e\u0930\u093e \u092a\u094d\u0930\u093e\u092a\u094d\u0924 \u0921\u0947\u091f\u093e \u0915\u094b \u092c\u0928\u093e\u090f \u0930\u0916\u0928\u0947 \u0915\u0947 \u0932\u093f\u090f \u0909\u092a\u092f\u094b\u0917 \u0915\u093f\u090f \u091c\u093e\u0928\u0947 \u0935\u093e\u0932\u0947 \u0921\u0947\u091f\u093e\u092c\u0947\u0938 \u092e\u0949\u0921\u094d\u092f\u0942\u0932 \u0915\u0940 \u0906\u0908\u0921\u0940\u0964 \u092f\u0926\u093f \u0915\u094b\u0908 \u092d\u0940 \u092a\u094d\u0930\u0926\u093e\u0928 \u0928\u0939\u0940\u0902 \u0915\u093f\u092f\u093e \u0917\u092f\u093e \u0939\u0948, \u0924\u094b \u0907\u0938 \u0938\u0947\u0935\u093e \u0915\u0947 \u092e\u093e\u0927\u094d\u092f\u092e \u0938\u0947 \u092a\u0902\u091c\u0940\u0915\u0943\u0924 \u0928\u0908 \u092a\u094d\u0930\u0923\u093e\u0932\u093f\u092f\u093e\u0901 \u0939\u092c \u092a\u0930 \u0909\u092a\u0932\u092c\u094d\u0927 \u0939\u094b\u0902\u0917\u0940, \u0932\u0947\u0915\u093f\u0928 \u092a\u0941\u0928\u0930\u093e\u0930\u0902\u092d \u0915\u0947 \u0926\u094c\u0930\u093e\u0928 \u0915\u094b\u0908 \u0928\u093f\u0930\u0902\u0924\u0930\u0924\u093e \u0915\u0940 \u0917\u093e\u0930\u0902\u091f\u0940 \u0928\u0939\u0940\u0902 \u0939\u094b\u0917\u0940\u0964 +ID\ of\ database\ module\ used\ for\ persisting\ data\ received\ by\ this\ service.\ If\ none\ is\ provided,\ new\ systems\ registered\ through\ this\ service\ will\ be\ available\ on\ the\ hub,\ but\ with\ no\ persistence\ guarantee\ across\ restarts.\ Only\ the\ latest\ observation\ from\ each\ datastream\ will\ be\ available\ and\ older\ observations\ will\ be\ discarded=\u0907\u0938 \u0938\u0947\u0935\u093e \u0926\u094d\u0935\u093e\u0930\u093e \u092a\u094d\u0930\u093e\u092a\u094d\u0924 \u0921\u0947\u091f\u093e \u0915\u094b \u092c\u0928\u093e\u090f \u0930\u0916\u0928\u0947 \u0915\u0947 \u0932\u093f\u090f \u0909\u092a\u092f\u094b\u0917 \u0915\u093f\u090f \u091c\u093e\u0928\u0947 \u0935\u093e\u0932\u0947 \u0921\u0947\u091f\u093e\u092c\u0947\u0938 \u092e\u0949\u0921\u094d\u092f\u0942\u0932 \u0915\u0940 \u0906\u0908\u0921\u0940\u0964 \u092f\u0926\u093f \u0915\u094b\u0908 \u092d\u0940 \u092a\u094d\u0930\u0926\u093e\u0928 \u0928\u0939\u0940\u0902 \u0915\u093f\u092f\u093e \u0917\u092f\u093e \u0939\u0948, \u0924\u094b \u0907\u0938 \u0938\u0947\u0935\u093e \u0915\u0947 \u092e\u093e\u0927\u094d\u092f\u092e \u0938\u0947 \u092a\u0902\u091c\u0940\u0915\u0943\u0924 \u0928\u0908 \u092a\u094d\u0930\u0923\u093e\u0932\u093f\u092f\u093e\u0901 \u0939\u092c \u092a\u0930 \u0909\u092a\u0932\u092c\u094d\u0927 \u0939\u094b\u0902\u0917\u0940, \u0932\u0947\u0915\u093f\u0928 \u092a\u0941\u0928\u0930\u093e\u0930\u0902\u092d \u0915\u0947 \u0926\u094c\u0930\u093e\u0928 \u0915\u094b\u0908 \u0928\u093f\u0930\u0902\u0924\u0930\u0924\u093e \u0915\u0940 \u0917\u093e\u0930\u0902\u091f\u0940 \u0928\u0939\u0940\u0902 \u0939\u094b\u0917\u0940\u0964 \u092a\u094d\u0930\u0924\u094d\u092f\u0947\u0915 \u0921\u0947\u091f\u093e\u0938\u094d\u091f\u094d\u0930\u0940\u092e \u0938\u0947 \u0915\u0947\u0935\u0932 \u0928\u0935\u0940\u0928\u0924\u092e \u0905\u0935\u0932\u094b\u0915\u0928 \u0939\u0940 \u0909\u092a\u0932\u092c\u094d\u0927 \u0939\u094b\u0917\u093e \u0914\u0930 \u092a\u0941\u0930\u093e\u0928\u0947 \u0905\u0935\u0932\u094b\u0915\u0928\u094b\u0902 \u0915\u094b \u0939\u091f\u093e \u0926\u093f\u092f\u093e \u091c\u093e\u090f\u0917\u093e +Individual\ configuration\ of\ sensors\ in\ the\ array\ (will\ override\ common\ configuration)=\u0938\u0930\u0923\u0940 \u092e\u0947\u0902 \u0938\u0947\u0902\u0938\u0930 \u0915\u093e \u0935\u094d\u092f\u0915\u094d\u0924\u093f\u0917\u0924 \u0915\u0949\u0928\u094d\u092b\u093c\u093f\u0917\u0930\u0947\u0936\u0928 (\u0938\u093e\u092e\u093e\u0928\u094d\u092f \u0915\u0949\u0928\u094d\u092b\u093c\u093f\u0917\u0930\u0947\u0936\u0928 \u0915\u094b \u0913\u0935\u0930\u0930\u093e\u0907\u0921 \u0915\u0930\u0947\u0917\u093e) +List\ of\ observed\ properties\ URI\ to\ make\ available\ as\ outputs=\u0906\u0909\u091f\u092a\u0941\u091f \u0915\u0947 \u0930\u0942\u092a \u092e\u0947\u0902 \u0909\u092a\u0932\u092c\u094d\u0927 \u0915\u0930\u093e\u0928\u0947 \u0915\u0947 \u0932\u093f\u090f \u0905\u0935\u0932\u094b\u0915\u0928 \u0915\u0940 \u0917\u0908 \u0938\u0902\u092a\u0924\u094d\u0924\u093f\u092f\u094b\u0902 \u0915\u0940 \u0938\u0942\u091a\u0940 \u092f\u0942\u0906\u0930\u0906\u0908 +Mapping\ of\ custom\ formats\ mime-types\ to\ custom\ serializer\ classes=\u0915\u0938\u094d\u091f\u092e \u092a\u094d\u0930\u093e\u0930\u0942\u092a \u092e\u093e\u0907\u092e-\u092a\u094d\u0930\u0915\u093e\u0930\u094b\u0902 \u0915\u0940 \u0915\u0938\u094d\u091f\u092e \u0938\u0940\u0930\u093f\u092f\u0932\u093e\u0907\u091c\u093c\u0930 \u0915\u0915\u094d\u0937\u093e\u0913\u0902 \u092e\u0947\u0902 \u092e\u0948\u092a\u093f\u0902\u0917 +Mappings\ used\ by\ CURIE\ to\ URI\ resolver=CURIE \u0926\u094d\u0935\u093e\u0930\u093e URI \u0930\u093f\u091c\u093c\u0949\u0932\u094d\u0935\u0930 \u0915\u0947 \u0932\u093f\u090f \u0909\u092a\u092f\u094b\u0917 \u0915\u0940 \u091c\u093e\u0928\u0947 \u0935\u093e\u0932\u0940 \u092e\u0948\u092a\u093f\u0902\u0917 +Max\ Limit=\u0905\u0927\u093f\u0915\u0924\u092e \u0938\u0940\u092e\u093e +Max\ Observations\ Returned=\u0905\u0927\u093f\u0915\u0924\u092e \u0905\u0935\u0932\u094b\u0915\u0928 \u0935\u093e\u092a\u0938 \u0906 \u0917\u090f +Max\ Records\ Returned=\u092e\u0948\u0915\u094d\u0938 \u0930\u093f\u0915\u0949\u0930\u094d\u0921\u094d\u0938 \u0935\u093e\u092a\u0938 \u0906 \u0917\u090f +Max\ delay\ between\ auto-commit\ execution,\ in\ seconds.\ 0\ to\ disable\ time-based\ auto-commit=\u0938\u094d\u0935\u0924\u0903-\u092a\u094d\u0930\u0924\u093f\u092c\u0926\u094d\u0927 \u0928\u093f\u0937\u094d\u092a\u093e\u0926\u0928 \u0915\u0947 \u092c\u0940\u091a \u0905\u0927\u093f\u0915\u0924\u092e \u0935\u093f\u0932\u0902\u092c, \u0938\u0947\u0915\u0902\u0921 \u092e\u0947\u0902\u0964 \u0938\u092e\u092f-\u0906\u0927\u093e\u0930\u093f\u0924 \u0911\u091f\u094b-\u092a\u094d\u0930\u0924\u093f\u092c\u0926\u094d\u0927\u0924\u093e \u0915\u094b \u0905\u0915\u094d\u0937\u092e \u0915\u0930\u0928\u0947 \u0915\u0947 \u0932\u093f\u090f 0 +Maximum\ age\ of\ data\ to\ be\ kept\ in\ storage\ (in\ seconds)=\u092d\u0902\u0921\u093e\u0930\u0923 \u092e\u0947\u0902 \u0930\u0916\u0947 \u091c\u093e\u0928\u0947 \u0935\u093e\u0932\u0947 \u0921\u0947\u091f\u093e \u0915\u0940 \u0905\u0927\u093f\u0915\u0924\u092e \u0906\u092f\u0941 (\u0938\u0947\u0915\u0902\u0921 \u092e\u0947\u0902) +Maximum\ number\ of\ FoI\ IDs\ listed\ in\ capabilities=\u0915\u094d\u0937\u092e\u0924\u093e\u0913\u0902 \u092e\u0947\u0902 \u0938\u0942\u091a\u0940\u092c\u0926\u094d\u0927 \u090f\u092b\u0913\u0906\u0908 \u0906\u0908\u0921\u0940 \u0915\u0940 \u0905\u0927\u093f\u0915\u0924\u092e \u0938\u0902\u0916\u094d\u092f\u093e +Maximum\ number\ of\ observations\ returned\ \ by\ a\ historical\ GetObservation\ request\ (for\ each\ selected\ offering)=\u0910\u0924\u093f\u0939\u093e\u0938\u093f\u0915 GetObservation \u0905\u0928\u0941\u0930\u094b\u0927 \u0926\u094d\u0935\u093e\u0930\u093e \u0932\u094c\u091f\u093e\u090f \u0917\u090f \u0905\u0935\u0932\u094b\u0915\u0928\u094b\u0902 \u0915\u0940 \u0905\u0927\u093f\u0915\u0924\u092e \u0938\u0902\u0916\u094d\u092f\u093e (\u092a\u094d\u0930\u0924\u094d\u092f\u0947\u0915 \u091a\u092f\u0928\u093f\u0924 \u092a\u0947\u0936\u0915\u0936 \u0915\u0947 \u0932\u093f\u090f) +Maximum\ number\ of\ records\ in\ upload\ queue\ (used\ to\ compensate\ for\ variable\ bandwidth)=\u0905\u092a\u0932\u094b\u0921 \u0915\u0924\u093e\u0930 \u092e\u0947\u0902 \u0930\u093f\u0915\u0949\u0930\u094d\u0921 \u0915\u0940 \u0905\u0927\u093f\u0915\u0924\u092e \u0938\u0902\u0916\u094d\u092f\u093e (\u092a\u0930\u093f\u0935\u0930\u094d\u0924\u0928\u0940\u092f \u092c\u0948\u0902\u0921\u0935\u093f\u0921\u094d\u0925 \u0915\u0940 \u092d\u0930\u092a\u093e\u0908 \u0915\u0947 \u0932\u093f\u090f \u0909\u092a\u092f\u094b\u0917 \u0915\u0940 \u091c\u093e\u0924\u0940 \u0939\u0948) +Maximum\ number\ of\ resources\ returned\ in\ a\ single\ page=\u090f\u0915 \u092a\u0943\u0937\u094d\u0920 \u092e\u0947\u0902 \u0932\u094c\u091f\u093e\u090f \u0917\u090f \u0938\u0902\u0938\u093e\u0927\u0928\u094b\u0902 \u0915\u0940 \u0905\u0927\u093f\u0915\u0924\u092e \u0938\u0902\u0916\u094d\u092f\u093e +Maximum\ number\ of\ result\ records\ returned\ by\ a\ historical\ GetResult\ request=\u0910\u0924\u093f\u0939\u093e\u0938\u093f\u0915 GetResult \u0905\u0928\u0941\u0930\u094b\u0927 \u0926\u094d\u0935\u093e\u0930\u093e \u0932\u094c\u091f\u093e\u090f \u0917\u090f \u092a\u0930\u093f\u0923\u093e\u092e \u0930\u093f\u0915\u0949\u0930\u094d\u0921 \u0915\u0940 \u0905\u0927\u093f\u0915\u0924\u092e \u0938\u0902\u0916\u094d\u092f\u093e +Maximum\ number\ of\ stream\ errors\ before\ we\ try\ to\ reconnect\ to\ remote\ server=\u0926\u0942\u0930\u0938\u094d\u0925 \u0938\u0930\u094d\u0935\u0930 \u0938\u0947 \u092a\u0941\u0928\u0903 \u0915\u0928\u0947\u0915\u094d\u091f \u0915\u0930\u0928\u0947 \u0915\u093e \u092a\u094d\u0930\u092f\u093e\u0938 \u0915\u0930\u0928\u0947 \u0938\u0947 \u092a\u0939\u0932\u0947 \u0938\u094d\u091f\u094d\u0930\u0940\u092e \u0924\u094d\u0930\u0941\u091f\u093f\u092f\u094b\u0902 \u0915\u0940 \u0905\u0927\u093f\u0915\u0924\u092e \u0938\u0902\u0916\u094d\u092f\u093e +Memory\ cache\ size\ for\ page\ chunks,\ in\ KB=\u092a\u0947\u091c \u0915\u0947 \u091f\u0941\u0915\u0921\u093c\u094b\u0902 \u0915\u0947 \u0932\u093f\u090f \u092e\u0947\u092e\u094b\u0930\u0940 \u0915\u0948\u0936 \u0915\u093e \u0906\u0915\u093e\u0930, KB \u092e\u0947\u0902 +Metadata\ of\ system\ group\ that\ will\ be\ created\ to\ contain\ all\ procedures/sensors\ registered\ through\ this\ service.\ Only\ sensors\ in\ this\ group\ will\ be\ modifiable\ by\ this\ service=\u0938\u093f\u0938\u094d\u091f\u092e \u0938\u092e\u0942\u0939 \u0915\u093e \u092e\u0947\u091f\u093e\u0921\u0947\u091f\u093e \u091c\u094b \u0907\u0938 \u0938\u0947\u0935\u093e \u0915\u0947 \u092e\u093e\u0927\u094d\u092f\u092e \u0938\u0947 \u092a\u0902\u091c\u0940\u0915\u0943\u0924 \u0938\u092d\u0940 \u092a\u094d\u0930\u0915\u094d\u0930\u093f\u092f\u093e\u0913\u0902/\u0938\u0947\u0902\u0938\u0930 \u0915\u094b \u0936\u093e\u092e\u093f\u0932 \u0915\u0930\u0928\u0947 \u0915\u0947 \u0932\u093f\u090f \u092c\u0928\u093e\u092f\u093e \u091c\u093e\u090f\u0917\u093e\u0964 \u0907\u0938 \u0938\u092e\u0942\u0939 \u0915\u0947 \u0915\u0947\u0935\u0932 \u0938\u0947\u0902\u0938\u0930 \u0939\u0940 \u0907\u0938 \u0938\u0947\u0935\u093e \u0926\u094d\u0935\u093e\u0930\u093e \u0938\u0902\u0936\u094b\u0927\u093f\u0924 \u0915\u093f\u090f \u091c\u093e \u0938\u0915\u0947\u0902\u0917\u0947 +Metadata\ of\ system\ group\ that\ will\ be\ created\ to\ contain\ all\ systems\ registered\ through\ this\ service.\ Only\ systems\ in\ this\ group\ will\ be\ modifiable\ by\ this\ service=\u0938\u093f\u0938\u094d\u091f\u092e \u0938\u092e\u0942\u0939 \u0915\u093e \u092e\u0947\u091f\u093e\u0921\u0947\u091f\u093e \u091c\u094b \u0907\u0938 \u0938\u0947\u0935\u093e \u0915\u0947 \u092e\u093e\u0927\u094d\u092f\u092e \u0938\u0947 \u092a\u0902\u091c\u0940\u0915\u0943\u0924 \u0938\u092d\u0940 \u0938\u093f\u0938\u094d\u091f\u092e\u094b\u0902 \u0915\u094b \u0936\u093e\u092e\u093f\u0932 \u0915\u0930\u0928\u0947 \u0915\u0947 \u0932\u093f\u090f \u092c\u0928\u093e\u092f\u093e \u091c\u093e\u090f\u0917\u093e\u0964 \u0915\u0947\u0935\u0932 \u0907\u0938 \u0938\u092e\u0942\u0939 \u0915\u0947 \u0938\u093f\u0938\u094d\u091f\u092e \u0939\u0940 \u0907\u0938 \u0938\u0947\u0935\u093e \u0926\u094d\u0935\u093e\u0930\u093e \u0938\u0902\u0936\u094b\u0927\u093f\u0924 \u0915\u093f\u090f \u091c\u093e \u0938\u0915\u0947\u0902\u0917\u0947 +Method\ used\ to\ generate\ new\ resource\ IDs=\u0928\u0908 \u0938\u0902\u0938\u093e\u0927\u0928 \u0906\u0908\u0921\u0940 \u0909\u0924\u094d\u092a\u0928\u094d\u0928 \u0915\u0930\u0928\u0947 \u0915\u0947 \u0932\u093f\u090f \u0909\u092a\u092f\u094b\u0917 \u0915\u0940 \u091c\u093e\u0928\u0947 \u0935\u093e\u0932\u0940 \u0935\u093f\u0927\u093f +Minimum\ fillrate\ above\ which\ auto\ compact\ operations\ may\ be\ triggered=\u0928\u094d\u092f\u0942\u0928\u0924\u092e \u092b\u093c\u093f\u0932\u0930\u0947\u091f \u091c\u093f\u0938\u0915\u0947 \u090a\u092a\u0930 \u0911\u091f\u094b \u0915\u0949\u092e\u094d\u092a\u0948\u0915\u094d\u091f \u0938\u0902\u091a\u093e\u0932\u0928 \u0936\u0941\u0930\u0942 \u0915\u093f\u092f\u093e \u091c\u093e \u0938\u0915\u0924\u093e \u0939\u0948 +Minimum\ period\ between\ database\ commits\ (in\ ms)=\u0921\u0947\u091f\u093e\u092c\u0947\u0938 \u092a\u094d\u0930\u0924\u093f\u092c\u0926\u094d\u0927\u0924\u093e\u0913\u0902 \u0915\u0947 \u092c\u0940\u091a \u0928\u094d\u092f\u0942\u0928\u0924\u092e \u0905\u0935\u0927\u093f (\u090f\u092e\u090f\u0938 \u092e\u0947\u0902) +Names\ of\ datastreams\ whose\ data\ will\ be\ hidden\ from\ the\ SOS.\ If\ this\ is\ null,\ all\ streams\ produced\ by\ the\ procedure\ are\ exposed=\u0921\u0947\u091f\u093e\u0938\u094d\u091f\u094d\u0930\u0940\u092e \u0915\u0947 \u0928\u093e\u092e \u091c\u093f\u0928\u0915\u093e \u0921\u0947\u091f\u093e \u090f\u0938\u0913\u090f\u0938 \u0938\u0947 \u091b\u093f\u092a\u093e\u092f\u093e \u091c\u093e\u090f\u0917\u093e\u0964 \u092f\u0926\u093f \u092f\u0939 \u0936\u0942\u0928\u094d\u092f \u0939\u0948, \u0924\u094b \u092a\u094d\u0930\u0915\u094d\u0930\u093f\u092f\u093e \u0926\u094d\u0935\u093e\u0930\u093e \u0909\u0924\u094d\u092a\u093e\u0926\u093f\u0924 \u0938\u092d\u0940 \u0927\u093e\u0930\u093e\u090f\u0901 \u0909\u091c\u093e\u0917\u0930 \u0939\u094b \u091c\u093e\u0924\u0940 \u0939\u0948\u0902 +Observed\ Properties=\u0926\u0947\u0916\u0947 \u0917\u090f \u0917\u0941\u0923 +Offering\ URI\ as\ exposed\ in\ capabilities.\ (if\ null,\ the\ procedure\ UID\ is\ used)=\u0915\u094d\u0937\u092e\u0924\u093e\u0913\u0902 \u092e\u0947\u0902 \u0909\u091c\u093e\u0917\u0930 \u092f\u0942\u0906\u0930\u0906\u0908 \u0915\u0940 \u092a\u0947\u0936\u0915\u0936\u0964 (\u092f\u0926\u093f \u0936\u0942\u0928\u094d\u092f \u0939\u0948, \u0924\u094b \u092a\u094d\u0930\u0915\u094d\u0930\u093f\u092f\u093e \u092f\u0942\u0906\u0908\u0921\u0940 \u0915\u093e \u0909\u092a\u092f\u094b\u0917 \u0915\u093f\u092f\u093e \u091c\u093e\u0924\u093e \u0939\u0948) +Offering\ description\ (if\ null,\ it\ will\ be\ auto-generated)=\u0935\u093f\u0935\u0930\u0923 \u092a\u094d\u0930\u0938\u094d\u0924\u0941\u0924 \u0915\u0930\u0928\u093e (\u092f\u0926\u093f \u0936\u0942\u0928\u094d\u092f \u0939\u0948, \u0924\u094b \u092f\u0939 \u0938\u094d\u0935\u0924\u0903 \u0909\u0924\u094d\u092a\u0928\u094d\u0928 \u0939\u094b \u091c\u093e\u090f\u0917\u093e) +Offering\ name\ (if\ null,\ the\ procedure\ name\ is\ used)=\u092a\u094d\u0930\u0938\u094d\u0924\u093e\u0935 \u0928\u093e\u092e (\u092f\u0926\u093f \u0936\u0942\u0928\u094d\u092f \u0939\u0948, \u0924\u094b \u092a\u094d\u0930\u0915\u094d\u0930\u093f\u092f\u093e \u0928\u093e\u092e \u0915\u093e \u0909\u092a\u092f\u094b\u0917 \u0915\u093f\u092f\u093e \u091c\u093e\u0924\u093e \u0939\u0948) +Orientation\ as\ Euler\ angles\ in\ NED\ coordinate\ reference\ frame.\nOrder\ of\ rotations\ is\ z-y\u2019-x"\ (in\ rotating\ frame)\ or\ x-y-z\ (in\ fixed\ frame)=\u090f\u0928\u0908\u0921\u0940 \u0938\u092e\u0928\u094d\u0935\u092f \u0938\u0902\u0926\u0930\u094d\u092d \u092b\u094d\u0930\u0947\u092e \u092e\u0947\u0902 \u092f\u0942\u0932\u0930 \u0915\u094b\u0923 \u0915\u0947 \u0930\u0942\u092a \u092e\u0947\u0902 \u0905\u092d\u093f\u0935\u093f\u0928\u094d\u092f\u093e\u0938\u0964\n\u0918\u0942\u0930\u094d\u0923\u0928 \u0915\u093e \u0915\u094d\u0930\u092e z-y''-x" (\u0918\u0942\u0930\u094d\u0923\u0928 \u092b\u094d\u0930\u0947\u092e \u092e\u0947\u0902) \u092f\u093e x-y-z (\u0928\u093f\u0936\u094d\u091a\u093f\u0924 \u092b\u094d\u0930\u0947\u092e \u092e\u0947\u0902) \u0939\u0948 +Password\ for\ the\ key\ store\ (and\ for\ the\ keypair\ within\ the\ keystore).\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ "javax.net.ssl.keyStorePassword"\ system\ property.\ This\ value\ can\ use\ variable\ expansion\ expressions\ of\ the\ form\ "$${name}"\ (for\ environment\ variables\ and\ system\ properties)\ or\ "$${file;/path/to/file}"\ (for\ secret\ file\ contents).=\u0915\u0941\u0902\u091c\u0940 \u0938\u094d\u091f\u094b\u0930 \u0915\u0947 \u0932\u093f\u090f \u092a\u093e\u0938\u0935\u0930\u094d\u0921 (\u0914\u0930 \u0915\u0940\u0938\u094d\u091f\u094b\u0930 \u0915\u0947 \u092d\u0940\u0924\u0930 \u0915\u0940 \u091c\u094b\u0921\u093c\u0940 \u0915\u0947 \u0932\u093f\u090f)\u0964 \u092f\u0926\u093f \u092f\u0939 \u092e\u093e\u0928 \u0930\u093f\u0915\u094d\u0924 \u0939\u0948, \u0924\u094b "javax.net.ssl.keyStorePassword" \u0938\u093f\u0938\u094d\u091f\u092e \u092a\u094d\u0930\u0949\u092a\u0930\u094d\u091f\u0940 \u0915\u0947 \u092e\u093e\u0928 \u0915\u093e \u0909\u092a\u092f\u094b\u0917 \u0921\u093f\u092b\u093c\u0949\u0932\u094d\u091f \u0939\u094b\u0917\u093e\u0964 \u092f\u0939 \u092e\u093e\u0928 "$${name}" (\u092a\u0930\u094d\u092f\u093e\u0935\u0930\u0923 \u091a\u0930 \u0914\u0930 \u0938\u093f\u0938\u094d\u091f\u092e \u0917\u0941\u0923\u094b\u0902 \u0915\u0947 \u0932\u093f\u090f) \u092f\u093e "$${file;/path/to/file}" (\u0917\u0941\u092a\u094d\u0924 \u092b\u093c\u093e\u0907\u0932 \u0938\u093e\u092e\u0917\u094d\u0930\u0940 \u0915\u0947 \u0932\u093f\u090f) \u092b\u093c\u0949\u0930\u094d\u092e \u0915\u0947 \u092a\u0930\u093f\u0935\u0930\u094d\u0924\u0928\u0940\u092f \u0935\u093f\u0938\u094d\u0924\u093e\u0930 \u0905\u092d\u093f\u0935\u094d\u092f\u0915\u094d\u0924\u093f\u092f\u094b\u0902 \u0915\u093e \u0909\u092a\u092f\u094b\u0917 \u0915\u0930 \u0938\u0915\u0924\u093e \u0939\u0948\u0964 +Password\ for\ the\ trust\ store.\ Ignored\ if\ client\ certificate\ authentication\ is\ not\ used.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ "javax.net.ssl.trustStorePassword"\ system\ property.\ This\ value\ can\ use\ variable\ expansion\ expressions\ of\ the\ form\ "$${name}"\ (for\ environment\ variables\ and\ system\ properties)\ or\ "$${file;/path/to/file}"\ (for\ secret\ file\ contents).=\u091f\u094d\u0930\u0938\u094d\u091f \u0938\u094d\u091f\u094b\u0930 \u0915\u0947 \u0932\u093f\u090f \u092a\u093e\u0938\u0935\u0930\u094d\u0921. \u092f\u0926\u093f \u0915\u094d\u0932\u093e\u0907\u0902\u091f \u092a\u094d\u0930\u092e\u093e\u0923\u092a\u0924\u094d\u0930 \u092a\u094d\u0930\u092e\u093e\u0923\u0940\u0915\u0930\u0923 \u0915\u093e \u0909\u092a\u092f\u094b\u0917 \u0928\u0939\u0940\u0902 \u0915\u093f\u092f\u093e \u091c\u093e\u0924\u093e \u0939\u0948 \u0924\u094b \u0907\u0938\u0947 \u0905\u0928\u0926\u0947\u0916\u093e \u0915\u0930 \u0926\u093f\u092f\u093e \u091c\u093e\u0924\u093e \u0939\u0948\u0964 \u092f\u0926\u093f \u092f\u0939 \u092e\u093e\u0928 \u0930\u093f\u0915\u094d\u0924 \u0939\u0948, \u0924\u094b "javax.net.ssl.trustStorePassword" \u0938\u093f\u0938\u094d\u091f\u092e \u092a\u094d\u0930\u0949\u092a\u0930\u094d\u091f\u0940 \u0915\u0947 \u092e\u093e\u0928 \u0915\u093e \u0909\u092a\u092f\u094b\u0917 \u0915\u0930\u0928\u0947 \u092e\u0947\u0902 \u0921\u093f\u092b\u093c\u0949\u0932\u094d\u091f \u0939\u094b\u0917\u093e\u0964 \u092f\u0939 \u092e\u093e\u0928 "$${name}" (\u092a\u0930\u094d\u092f\u093e\u0935\u0930\u0923 \u091a\u0930 \u0914\u0930 \u0938\u093f\u0938\u094d\u091f\u092e \u0917\u0941\u0923\u094b\u0902 \u0915\u0947 \u0932\u093f\u090f) \u092f\u093e "$${file;/path/to/file}" (\u0917\u0941\u092a\u094d\u0924 \u092b\u093c\u093e\u0907\u0932 \u0938\u093e\u092e\u0917\u094d\u0930\u0940 \u0915\u0947 \u0932\u093f\u090f) \u092b\u093c\u0949\u0930\u094d\u092e \u0915\u0947 \u092a\u0930\u093f\u0935\u0930\u094d\u0924\u0928\u0940\u092f \u0935\u093f\u0938\u094d\u0924\u093e\u0930 \u0905\u092d\u093f\u0935\u094d\u092f\u0915\u094d\u0924\u093f\u092f\u094b\u0902 \u0915\u093e \u0909\u092a\u092f\u094b\u0917 \u0915\u0930 \u0938\u0915\u0924\u093e \u0939\u0948\u0964 +Path\ of\ service\ endpoint\ relative\ to\ the\ context\ URL\ (e.g.\ http\://server.net/sensorhub)=\u0938\u0902\u0926\u0930\u094d\u092d URL \u0915\u0947 \u0938\u093e\u092a\u0947\u0915\u094d\u0937 \u0938\u0947\u0935\u093e \u0938\u092e\u093e\u092a\u0928 \u092c\u093f\u0902\u0926\u0941 \u0915\u093e \u092a\u0925 (\u0909\u0926\u093e. http://server.net/sensorhub) +Path\ to\ a\ key\ store\ containing\ the\ certificate\ and\ keypair\ that\ this\ server\ will\ present\ to\ clients\ when\ accessed\ over\ HTTPS.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ "javax.net.ssl.keyStore"\ system\ property.\ This\ value\ can\ use\ variable\ expansion\ expressions\ of\ the\ form\ "$${name}"\ (for\ environment\ variables\ and\ system\ properties)\ or\ "$${file;/path/to/file}"\ (for\ secret\ file\ contents).=\u092a\u094d\u0930\u092e\u093e\u0923\u092a\u0924\u094d\u0930 \u0914\u0930 \u0915\u0940\u092a\u0947\u092f\u0930 \u0935\u093e\u0932\u0947 \u0915\u0941\u0902\u091c\u0940 \u0938\u094d\u091f\u094b\u0930 \u0915\u093e \u092a\u0925 \u091c\u093f\u0938\u0947 \u092f\u0939 \u0938\u0930\u094d\u0935\u0930 HTTPS \u092a\u0930 \u090f\u0915\u094d\u0938\u0947\u0938 \u0915\u0930\u0928\u0947 \u092a\u0930 \u0917\u094d\u0930\u093e\u0939\u0915\u094b\u0902 \u0915\u094b \u092a\u094d\u0930\u0938\u094d\u0924\u0941\u0924 \u0915\u0930\u0947\u0917\u093e\u0964 \u092f\u0926\u093f \u092f\u0939 \u092e\u093e\u0928 \u0930\u093f\u0915\u094d\u0924 \u0939\u0948, \u0924\u094b "javax.net.ssl.keyStore" \u0938\u093f\u0938\u094d\u091f\u092e \u092a\u094d\u0930\u0949\u092a\u0930\u094d\u091f\u0940 \u0915\u0947 \u092e\u093e\u0928 \u0915\u093e \u0909\u092a\u092f\u094b\u0917 \u0915\u0930\u0928\u0947 \u092e\u0947\u0902 \u0921\u093f\u092b\u093c\u0949\u0932\u094d\u091f \u0939\u094b\u0917\u093e\u0964 \u092f\u0939 \u092e\u093e\u0928 "$${name}" (\u092a\u0930\u094d\u092f\u093e\u0935\u0930\u0923 \u091a\u0930 \u0914\u0930 \u0938\u093f\u0938\u094d\u091f\u092e \u0917\u0941\u0923\u094b\u0902 \u0915\u0947 \u0932\u093f\u090f) \u092f\u093e "$${file;/path/to/file}" (\u0917\u0941\u092a\u094d\u0924 \u092b\u093c\u093e\u0907\u0932 \u0938\u093e\u092e\u0917\u094d\u0930\u0940 \u0915\u0947 \u0932\u093f\u090f) \u092b\u093c\u0949\u0930\u094d\u092e \u0915\u0947 \u092a\u0930\u093f\u0935\u0930\u094d\u0924\u0928\u0940\u092f \u0935\u093f\u0938\u094d\u0924\u093e\u0930 \u0905\u092d\u093f\u0935\u094d\u092f\u0915\u094d\u0924\u093f\u092f\u094b\u0902 \u0915\u093e \u0909\u092a\u092f\u094b\u0917 \u0915\u0930 \u0938\u0915\u0924\u093e \u0939\u0948\u0964 +Path\ to\ database\ file=\u0921\u0947\u091f\u093e\u092c\u0947\u0938 \u092b\u093c\u093e\u0907\u0932 \u0915\u093e \u092a\u0925 +Path\ to\ external\ config\ file\ (in\ Jetty\ IOC\ XML\ format)=\u092c\u093e\u0939\u0930\u0940 \u0915\u0949\u0928\u094d\u092b\u093c\u093f\u0917\u0930\u0947\u0936\u0928 \u092b\u093c\u093e\u0907\u0932 \u0915\u093e \u092a\u0925 (\u091c\u0947\u091f\u094d\u091f\u0940 \u0906\u0908\u0913\u0938\u0940 \u090f\u0915\u094d\u0938\u090f\u092e\u090f\u0932 \u092a\u094d\u0930\u093e\u0930\u0942\u092a \u092e\u0947\u0902) +Path\ to\ the\ TLS\ trust\ store\ that\ is\ used\ when\ client\ authentication\ is\ required.\ Ignored\ if\ client\ certificate\ authentication\ is\ not\ used.\ Certificates\ in\ this\ file\ designate\ the\ signing\ authorities\ for\ client\ certificates\ that\ will\ be\ trusted.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ "javax.net.ssl.trustStore"\ system\ property.\ This\ value\ can\ use\ variable\ expansion\ expressions\ of\ the\ form\ "$${name}"\ (for\ environment\ variables\ and\ system\ properties)\ or\ "$${file;/path/to/file}"\ (for\ secret\ file\ contents).=\u091f\u0940\u090f\u0932\u090f\u0938 \u091f\u094d\u0930\u0938\u094d\u091f \u0938\u094d\u091f\u094b\u0930 \u0915\u093e \u092a\u0925 \u091c\u093f\u0938\u0915\u093e \u0909\u092a\u092f\u094b\u0917 \u0915\u094d\u0932\u093e\u0907\u0902\u091f \u092a\u094d\u0930\u092e\u093e\u0923\u0940\u0915\u0930\u0923 \u0915\u0940 \u0906\u0935\u0936\u094d\u092f\u0915\u0924\u093e \u0939\u094b\u0928\u0947 \u092a\u0930 \u0915\u093f\u092f\u093e \u091c\u093e\u0924\u093e \u0939\u0948\u0964 \u092f\u0926\u093f \u0915\u094d\u0932\u093e\u0907\u0902\u091f \u092a\u094d\u0930\u092e\u093e\u0923\u092a\u0924\u094d\u0930 \u092a\u094d\u0930\u092e\u093e\u0923\u0940\u0915\u0930\u0923 \u0915\u093e \u0909\u092a\u092f\u094b\u0917 \u0928\u0939\u0940\u0902 \u0915\u093f\u092f\u093e \u091c\u093e\u0924\u093e \u0939\u0948 \u0924\u094b \u0907\u0938\u0947 \u0905\u0928\u0926\u0947\u0916\u093e \u0915\u0930 \u0926\u093f\u092f\u093e \u091c\u093e\u0924\u093e \u0939\u0948\u0964 \u0907\u0938 \u092b\u093c\u093e\u0907\u0932 \u092e\u0947\u0902 \u092a\u094d\u0930\u092e\u093e\u0923\u092a\u0924\u094d\u0930 \u0915\u094d\u0932\u093e\u0907\u0902\u091f \u092a\u094d\u0930\u092e\u093e\u0923\u092a\u0924\u094d\u0930\u094b\u0902 \u0915\u0947 \u0932\u093f\u090f \u0939\u0938\u094d\u0924\u093e\u0915\u094d\u0937\u0930 \u0915\u0930\u0928\u0947 \u0935\u093e\u0932\u0947 \u092a\u094d\u0930\u093e\u0927\u093f\u0915\u093e\u0930\u093f\u092f\u094b\u0902 \u0915\u094b \u0928\u093f\u0930\u094d\u0926\u093f\u0937\u094d\u091f \u0915\u0930\u0924\u0947 \u0939\u0948\u0902 \u091c\u093f\u0928 \u092a\u0930 \u092d\u0930\u094b\u0938\u093e \u0915\u093f\u092f\u093e \u091c\u093e\u090f\u0917\u093e\u0964 \u092f\u0926\u093f \u092f\u0939 \u092e\u093e\u0928 \u0930\u093f\u0915\u094d\u0924 \u0939\u0948, \u0924\u094b "javax.net.ssl.trustStore" \u0938\u093f\u0938\u094d\u091f\u092e \u092a\u094d\u0930\u0949\u092a\u0930\u094d\u091f\u0940 \u0915\u0947 \u092e\u093e\u0928 \u0915\u093e \u0909\u092a\u092f\u094b\u0917 \u0915\u0930\u0928\u0947 \u092e\u0947\u0902 \u0921\u093f\u092b\u093c\u0949\u0932\u094d\u091f \u0939\u094b\u0917\u093e\u0964 \u092f\u0939 \u092e\u093e\u0928 "$${name}" (\u092a\u0930\u094d\u092f\u093e\u0935\u0930\u0923 \u091a\u0930 \u0914\u0930 \u0938\u093f\u0938\u094d\u091f\u092e \u0917\u0941\u0923\u094b\u0902 \u0915\u0947 \u0932\u093f\u090f) \u092f\u093e "$${file;/path/to/file}" (\u0917\u0941\u092a\u094d\u0924 \u092b\u093c\u093e\u0907\u0932 \u0938\u093e\u092e\u0917\u094d\u0930\u0940 \u0915\u0947 \u0932\u093f\u090f) \u092b\u093c\u0949\u0930\u094d\u092e \u0915\u0947 \u092a\u0930\u093f\u0935\u0930\u094d\u0924\u0928\u0940\u092f \u0935\u093f\u0938\u094d\u0924\u093e\u0930 \u0905\u092d\u093f\u0935\u094d\u092f\u0915\u094d\u0924\u093f\u092f\u094b\u0902 \u0915\u093e \u0909\u092a\u092f\u094b\u0917 \u0915\u0930 \u0938\u0915\u0924\u093e \u0939\u0948\u0964 +Port\ number\ to\ connect\ to\ on\ remote\ host\ (0\ to\ automatically\ select\ a\ port)=\u0930\u093f\u092e\u094b\u091f \u0939\u094b\u0938\u094d\u091f \u0938\u0947 \u0915\u0928\u0947\u0915\u094d\u091f \u0915\u0930\u0928\u0947 \u0915\u0947 \u0932\u093f\u090f \u092a\u094b\u0930\u094d\u091f \u0928\u0902\u092c\u0930 (\u092a\u094b\u0930\u094d\u091f \u0915\u094b \u0938\u094d\u0935\u091a\u093e\u0932\u093f\u0924 \u0930\u0942\u092a \u0938\u0947 \u091a\u0941\u0928\u0928\u0947 \u0915\u0947 \u0932\u093f\u090f 0) +SOS\ Endpoint=\u090f\u0938\u0913\u090f\u0938 \u0938\u092e\u093e\u092a\u0928 \u092c\u093f\u0902\u0926\u0941 +SOS\ endpoint\ to\ fetch\ data\ from=\u0921\u0947\u091f\u093e \u0932\u093e\u0928\u0947 \u0915\u0947 \u0932\u093f\u090f \u090f\u0938\u0913\u090f\u0938 \u090f\u0902\u0921\u092a\u0949\u0907\u0902\u091f +SOS\ endpoint\ where\ the\ requests\ are\ sent=\u090f\u0938\u0913\u090f\u0938 \u090f\u0902\u0921\u092a\u0949\u0907\u0902\u091f \u091c\u0939\u093e\u0902 \u0905\u0928\u0941\u0930\u094b\u0927 \u092d\u0947\u091c\u0947 \u091c\u093e\u0924\u0947 \u0939\u0948\u0902 +SPS\ Endpoint=\u090f\u0938\u092a\u0940\u090f\u0938 \u0938\u092e\u093e\u092a\u0928 \u092c\u093f\u0902\u0926\u0941 +SPS\ endpoint\ to\ send\ commands\ to=\u0906\u0926\u0947\u0936 \u092d\u0947\u091c\u0928\u0947 \u0915\u0947 \u0932\u093f\u090f \u090f\u0938\u092a\u0940\u090f\u0938 \u0938\u092e\u093e\u092a\u0928 \u092c\u093f\u0902\u0926\u0941 +Security\ related\ options=\u0938\u0941\u0930\u0915\u094d\u0937\u093e \u0938\u0902\u092c\u0902\u0927\u0940 \u0935\u093f\u0915\u0932\u094d\u092a +Sensor\ UID=\u0938\u0947\u0902\u0938\u0930 \u092f\u0942\u0906\u0908\u0921\u0940 +Set\ if\ WebSocket\ protocol\ should\ be\ used\ to\ get\ streaming\ data\ from\ SOS=\u0938\u0947\u091f \u0915\u0930\u0947\u0902 \u0915\u093f \u0915\u094d\u092f\u093e SOS \u0938\u0947 \u0938\u094d\u091f\u094d\u0930\u0940\u092e\u093f\u0902\u0917 \u0921\u0947\u091f\u093e \u092a\u094d\u0930\u093e\u092a\u094d\u0924 \u0915\u0930\u0928\u0947 \u0915\u0947 \u0932\u093f\u090f WebSocket \u092a\u094d\u0930\u094b\u091f\u094b\u0915\u0949\u0932 \u0915\u093e \u0909\u092a\u092f\u094b\u0917 \u0915\u093f\u092f\u093e \u091c\u093e\u0928\u093e \u091a\u093e\u0939\u093f\u090f +Set\ if\ offering\ is\ enabled,\ unset\ if\ disabled=\u092f\u0926\u093f \u0911\u092b\u093c\u0930 \u0938\u0915\u094d\u0937\u092e \u0939\u0948 \u0924\u094b \u0938\u0947\u091f \u0915\u0930\u0947\u0902, \u092f\u0926\u093f \u0905\u0915\u094d\u0937\u092e \u0939\u0948 \u0924\u094b \u0905\u0928\u0938\u0947\u091f \u0915\u0930\u0947\u0902 +Set\ if\ websockets\ protocol\ should\ be\ used\ to\ send\ commands\ to\ SPS=\u0938\u0947\u091f \u0915\u0930\u0947\u0902 \u0915\u093f \u0915\u094d\u092f\u093e \u090f\u0938\u092a\u0940\u090f\u0938 \u0915\u094b \u0915\u092e\u093e\u0902\u0921 \u092d\u0947\u091c\u0928\u0947 \u0915\u0947 \u0932\u093f\u090f \u0935\u0947\u092c\u0938\u0949\u0915\u0947\u091f \u092a\u094d\u0930\u094b\u091f\u094b\u0915\u0949\u0932 \u0915\u093e \u0909\u092a\u092f\u094b\u0917 \u0915\u093f\u092f\u093e \u091c\u093e\u0928\u093e \u091a\u093e\u0939\u093f\u090f +Set\ to\ compact\ the\ database\ file\ when\ the\ database\ module\ is\ stopped\ or\ restarted=\u0921\u0947\u091f\u093e\u092c\u0947\u0938 \u092e\u0949\u0921\u094d\u092f\u0942\u0932 \u092c\u0902\u0926 \u0939\u094b\u0928\u0947 \u092f\u093e \u092a\u0941\u0928\u0930\u093e\u0930\u0902\u092d \u0939\u094b\u0928\u0947 \u092a\u0930 \u0921\u0947\u091f\u093e\u092c\u0947\u0938 \u092b\u093c\u093e\u0907\u0932 \u0915\u094b \u0915\u0949\u092e\u094d\u092a\u0948\u0915\u094d\u091f \u0915\u0930\u0928\u0947 \u0915\u0947 \u0932\u093f\u090f \u0938\u0947\u091f \u0915\u0930\u0947\u0902 +Set\ to\ compress\ underlying\ file\ storage=\u0905\u0902\u0924\u0930\u094d\u0928\u093f\u0939\u093f\u0924 \u092b\u093c\u093e\u0907\u0932 \u0938\u0902\u0917\u094d\u0930\u0939\u0923 \u0915\u094b \u0938\u0902\u092a\u0940\u0921\u093c\u093f\u0924 \u0915\u0930\u0928\u0947 \u0915\u0947 \u0932\u093f\u090f \u0938\u0947\u091f \u0915\u0930\u0947\u0902 +Set\ to\ display\ MVStore\ debug\ info\ when\ database\ is\ closed\ (only\ if\ DEBUG\ log\ is\ also\ enabled)=\u0921\u0947\u091f\u093e\u092c\u0947\u0938 \u092c\u0902\u0926 \u0939\u094b\u0928\u0947 \u092a\u0930 MVStore \u0921\u093f\u092c\u0917 \u091c\u093e\u0928\u0915\u093e\u0930\u0940 \u092a\u094d\u0930\u0926\u0930\u094d\u0936\u093f\u0924 \u0915\u0930\u0928\u0947 \u0915\u0947 \u0932\u093f\u090f \u0938\u0947\u091f \u0915\u0930\u0947\u0902 (\u0915\u0947\u0935\u0932 \u0924\u092d\u0940 \u091c\u092c DEBUG \u0932\u0949\u0917 \u092d\u0940 \u0938\u0915\u094d\u0937\u092e \u0939\u094b) +Set\ to\ enable\ spatial\ indexing\ of\ individual\ observations\ sampling\ locations\ (when\ provided)=\u0935\u094d\u092f\u0915\u094d\u0924\u093f\u0917\u0924 \u0905\u0935\u0932\u094b\u0915\u0928\u094b\u0902 \u0915\u0947 \u0928\u092e\u0942\u0928\u093e \u0938\u094d\u0925\u093e\u0928\u094b\u0902 \u0915\u0947 \u0938\u094d\u0925\u093e\u0928\u093f\u0915 \u0905\u0928\u0941\u0915\u094d\u0930\u092e\u0923 \u0915\u094b \u0938\u0915\u094d\u0937\u092e \u0915\u0930\u0928\u0947 \u0915\u0947 \u0932\u093f\u090f \u0938\u0947\u091f \u0915\u0930\u0947\u0902 (\u091c\u092c \u092a\u094d\u0930\u0926\u093e\u0928 \u0915\u093f\u092f\u093e \u0917\u092f\u093e \u0939\u094b) +Set\ to\ open\ the\ database\ as\ read-only=\u0921\u0947\u091f\u093e\u092c\u0947\u0938 \u0915\u094b \u0915\u0947\u0935\u0932 \u092a\u0922\u093c\u0928\u0947 \u0915\u0947 \u0932\u093f\u090f \u0916\u094b\u0932\u0928\u0947 \u0915\u0947 \u0932\u093f\u090f \u0938\u0947\u091f \u0915\u0930\u0947\u0902 +Set\ to\ true\ to\ enable\ transactional\ operation\ support=\u0932\u0947\u0928-\u0926\u0947\u0928 \u0938\u0902\u091a\u093e\u0932\u0928 \u0938\u092e\u0930\u094d\u0925\u0928 \u0938\u0915\u094d\u0937\u092e \u0915\u0930\u0928\u0947 \u0915\u0947 \u0932\u093f\u090f \u0938\u0924\u094d\u092f \u092a\u0930 \u0938\u0947\u091f \u0915\u0930\u0947\u0902 +Size\ of\ the\ auto-commit\ write\ buffer,\ in\ KB=\u0911\u091f\u094b-\u0915\u092e\u093f\u091f \u0930\u093e\u0907\u091f \u092c\u092b\u093c\u0930 \u0915\u093e \u0906\u0915\u093e\u0930, KB \u092e\u0947\u0902 +TCP\ port\ where\ server\ will\ listen\ for\ secure\ HTTP\ (HTTPS)\ connections\ (use\ 0\ to\ disable\ HTTPS).=\u091f\u0940\u0938\u0940\u092a\u0940 \u092a\u094b\u0930\u094d\u091f \u091c\u0939\u093e\u0902 \u0938\u0930\u094d\u0935\u0930 \u0938\u0941\u0930\u0915\u094d\u0937\u093f\u0924 HTTP (HTTPS) \u0915\u0928\u0947\u0915\u094d\u0936\u0928 \u0938\u0941\u0928\u0947\u0917\u093e (HTTPS \u0915\u094b \u0905\u0915\u094d\u0937\u092e \u0915\u0930\u0928\u0947 \u0915\u0947 \u0932\u093f\u090f 0 \u0915\u093e \u0909\u092a\u092f\u094b\u0917 \u0915\u0930\u0947\u0902)\u0964 +TCP\ port\ where\ server\ will\ listen\ for\ unsecure\ HTTP\ connections\ (use\ 0\ to\ disable\ HTTP).=\u091f\u0940\u0938\u0940\u092a\u0940 \u092a\u094b\u0930\u094d\u091f \u091c\u0939\u093e\u0902 \u0938\u0930\u094d\u0935\u0930 \u0905\u0938\u0941\u0930\u0915\u094d\u0937\u093f\u0924 HTTP \u0915\u0928\u0947\u0915\u094d\u0936\u0928 \u0915\u094b \u0938\u0941\u0928\u0947\u0917\u093e (HTTP \u0915\u094b \u0905\u0915\u094d\u0937\u092e \u0915\u0930\u0928\u0947 \u0915\u0947 \u0932\u093f\u090f 0 \u0915\u093e \u0909\u092a\u092f\u094b\u0917 \u0915\u0930\u0947\u0902)\u0964 +Time-out\ after\ which\ real-time\ requests\ are\ disabled\ if\ no\ more\ measurements\ are\ received\ (in\ seconds).\ Real-time\ is\ reactivated\ as\ soon\ as\ new\ records\ start\ being\ received\ again=\u091f\u093e\u0907\u092e-\u0906\u0909\u091f \u091c\u093f\u0938\u0915\u0947 \u092c\u093e\u0926 \u0915\u094b\u0908 \u0914\u0930 \u092e\u093e\u092a \u092a\u094d\u0930\u093e\u092a\u094d\u0924 \u0928\u0939\u0940\u0902 \u0939\u094b\u0928\u0947 \u092a\u0930 \u0935\u093e\u0938\u094d\u0924\u0935\u093f\u0915 \u0938\u092e\u092f \u0905\u0928\u0941\u0930\u094b\u0927 \u0905\u0915\u094d\u0937\u092e \u0939\u094b \u091c\u093e\u0924\u0947 \u0939\u0948\u0902 (\u0938\u0947\u0915\u0902\u0921 \u092e\u0947\u0902)\u0964 \u091c\u0948\u0938\u0947 \u0939\u0940 \u0928\u090f \u0930\u093f\u0915\u0949\u0930\u094d\u0921 \u092b\u093f\u0930 \u0938\u0947 \u092a\u094d\u0930\u093e\u092a\u094d\u0924 \u0939\u094b\u0928\u0947 \u0932\u0917\u0924\u0947 \u0939\u0948\u0902, \u0935\u093e\u0938\u094d\u0924\u0935\u093f\u0915 \u0938\u092e\u092f \u092a\u0941\u0928\u0903 \u0938\u0915\u094d\u0930\u093f\u092f \u0939\u094b \u091c\u093e\u0924\u093e \u0939\u0948 +Time-out\ period\ after\ which\ a\ template\ ID\ reserved\ using\ InsertResultTemplate\ will\ expire\ if\ not\ used\ in\ InsertResult\ requests\ (in\ seconds)=\u091f\u093e\u0907\u092e-\u0906\u0909\u091f \u0905\u0935\u0927\u093f \u091c\u093f\u0938\u0915\u0947 \u092c\u093e\u0926 InsertResultTemplate \u0915\u093e \u0909\u092a\u092f\u094b\u0917 \u0915\u0930\u0915\u0947 \u0906\u0930\u0915\u094d\u0937\u093f\u0924 \u091f\u0947\u092e\u094d\u092a\u0932\u0947\u091f \u0906\u0908\u0921\u0940 InsertResult \u0905\u0928\u0941\u0930\u094b\u0927\u094b\u0902 \u092e\u0947\u0902 \u0909\u092a\u092f\u094b\u0917 \u0928\u0939\u0940\u0902 \u0915\u093f\u090f \u091c\u093e\u0928\u0947 \u092a\u0930 \u0938\u092e\u093e\u092a\u094d\u0924 \u0939\u094b \u091c\u093e\u090f\u0917\u0940 (\u0938\u0947\u0915\u0902\u0921 \u092e\u0947\u0902) +Timeout\ after\ which\ data\ is\ released\ to\ the\ caller\ if\ at\ least\ one\ byte\ was\ received\ (in\ ms)=\u091f\u093e\u0907\u092e\u0906\u0909\u091f \u091c\u093f\u0938\u0915\u0947 \u092c\u093e\u0926 \u0915\u092e \u0938\u0947 \u0915\u092e \u090f\u0915 \u092c\u093e\u0907\u091f \u092a\u094d\u0930\u093e\u092a\u094d\u0924 \u0939\u094b\u0928\u0947 \u092a\u0930 \u0915\u0949\u0932 \u0915\u0930\u0928\u0947 \u0935\u093e\u0932\u0947 \u0915\u094b \u0921\u0947\u091f\u093e \u091c\u093e\u0930\u0940 \u0915\u093f\u092f\u093e \u091c\u093e\u0924\u093e \u0939\u0948 (\u090f\u092e\u090f\u0938 \u092e\u0947\u0902) +URI\ Prefix\ Map=\u092f\u0942\u0906\u0930\u0906\u0908 \u0909\u092a\u0938\u0930\u094d\u0917 \u092e\u093e\u0928\u091a\u093f\u0924\u094d\u0930 +Unique\ ID\ (full\ URN\ or\ only\ suffix)\ to\ use\ for\ the\ sensor\ system\ or\ 'auto'\ to\ use\ the\ UUID\ randomly\ generated\ the\ first\ time\ the\ module\ is\ initialized=\u0938\u0947\u0902\u0938\u0930 \u0938\u093f\u0938\u094d\u091f\u092e \u0915\u0947 \u0932\u093f\u090f \u0909\u092a\u092f\u094b\u0917 \u0915\u0930\u0928\u0947 \u0915\u0947 \u0932\u093f\u090f \u0905\u0926\u094d\u0935\u093f\u0924\u0940\u092f \u0906\u0908\u0921\u0940 (\u092a\u0942\u0930\u094d\u0923 \u092f\u0942\u0906\u0930\u090f\u0928 \u092f\u093e \u0915\u0947\u0935\u0932 \u092a\u094d\u0930\u0924\u094d\u092f\u092f) \u092f\u093e \u092a\u0939\u0932\u0940 \u092c\u093e\u0930 \u092e\u0949\u0921\u094d\u092f\u0942\u0932 \u0906\u0930\u0902\u092d \u0939\u094b\u0928\u0947 \u092a\u0930 \u092f\u093e\u0926\u0943\u091a\u094d\u091b\u093f\u0915 \u0930\u0942\u092a \u0938\u0947 \u0909\u0924\u094d\u092a\u0928\u094d\u0928 \u092f\u0942\u092f\u0942\u0906\u0908\u0921\u0940 \u0915\u093e \u0909\u092a\u092f\u094b\u0917 \u0915\u0930\u0928\u0947 \u0915\u0947 \u0932\u093f\u090f ''\u0911\u091f\u094b'' +Unique\ ID\ of\ a\ system\ that\ this\ configuration\ applies\ to.\nCan\ include\ a\ trailing\ wildcard\ '*'\ to\ match\ several\ systems\ at\ once.=\u0909\u0938 \u0938\u093f\u0938\u094d\u091f\u092e \u0915\u0940 \u0935\u093f\u0936\u093f\u0937\u094d\u091f \u0906\u0908\u0921\u0940 \u091c\u093f\u0938 \u092a\u0930 \u092f\u0939 \u0915\u0949\u0928\u094d\u092b\u093c\u093f\u0917\u0930\u0947\u0936\u0928 \u0932\u093e\u0917\u0942 \u0939\u094b\u0924\u093e \u0939\u0948\u0964\n\u090f\u0915 \u0938\u093e\u0925 \u0915\u0908 \u092a\u094d\u0930\u0923\u093e\u0932\u093f\u092f\u094b\u0902 \u0938\u0947 \u092e\u093f\u0932\u093e\u0928 \u0915\u0930\u0928\u0947 \u0915\u0947 \u0932\u093f\u090f \u090f\u0915 \u092a\u093f\u091b\u0932\u093e \u0935\u093e\u0907\u0932\u094d\u0921\u0915\u093e\u0930\u094d\u0921 ''*'' \u0936\u093e\u092e\u093f\u0932 \u0915\u0930 \u0938\u0915\u0924\u0947 \u0939\u0948\u0902\u0964 +Unique\ ID\ of\ sensor\ to\ connect\ to\ on\ SOS\ and\ SPS\ servers=\u090f\u0938\u0913\u090f\u0938 \u0914\u0930 \u090f\u0938\u092a\u0940\u090f\u0938 \u0938\u0930\u094d\u0935\u0930 \u092a\u0930 \u0915\u0928\u0947\u0915\u094d\u091f \u0915\u0930\u0928\u0947 \u0915\u0947 \u0932\u093f\u090f \u0938\u0947\u0902\u0938\u0930 \u0915\u0940 \u0905\u0926\u094d\u0935\u093f\u0924\u0940\u092f \u0906\u0908\u0921\u0940 +Unique\ ID\ of\ system\ that\ this\ configuration\ applies\ to.\nCan\ include\ a\ trailing\ wildcard\ '*'\ to\ match\ several\ systems\ at\ once.=\u0938\u093f\u0938\u094d\u091f\u092e \u0915\u0940 \u0935\u093f\u0936\u093f\u0937\u094d\u091f \u0906\u0908\u0921\u0940 \u091c\u093f\u0938 \u092a\u0930 \u092f\u0939 \u0915\u0949\u0928\u094d\u092b\u093c\u093f\u0917\u0930\u0947\u0936\u0928 \u0932\u093e\u0917\u0942 \u0939\u094b\u0924\u093e \u0939\u0948\u0964\n\u090f\u0915 \u0938\u093e\u0925 \u0915\u0908 \u092a\u094d\u0930\u0923\u093e\u0932\u093f\u092f\u094b\u0902 \u0938\u0947 \u092e\u093f\u0932\u093e\u0928 \u0915\u0930\u0928\u0947 \u0915\u0947 \u0932\u093f\u090f \u090f\u0915 \u092a\u093f\u091b\u0932\u093e \u0935\u093e\u0907\u0932\u094d\u0921\u0915\u093e\u0930\u094d\u0921 ''*'' \u0936\u093e\u092e\u093f\u0932 \u0915\u0930 \u0938\u0915\u0924\u0947 \u0939\u0948\u0902\u0964 +Use\ WebSockets\ for\ SOS=\u090f\u0938\u0913\u090f\u0938 \u0915\u0947 \u0932\u093f\u090f \u0935\u0947\u092c\u0938\u0949\u0915\u0947\u091f \u0915\u093e \u0909\u092a\u092f\u094b\u0917 \u0915\u0930\u0947\u0902 +Use\ WebSockets\ for\ SPS=\u090f\u0938\u092a\u0940\u090f\u0938 \u0915\u0947 \u0932\u093f\u090f \u0935\u0947\u092c\u0938\u0949\u0915\u0947\u091f \u0915\u093e \u0909\u092a\u092f\u094b\u0917 \u0915\u0930\u0947\u0902 + +Node\ ID=\u0928\u094b\u0921 \u0906\u0908\u0921\u0940 +Stats\ Frequency\ (min)=\u0906\u0901\u0915\u0921\u093c\u0947 \u0906\u0935\u0943\u0924\u094d\u0924\u093f (\u0928\u094d\u092f\u0942\u0928\u0924\u092e) +Database\ URL=\u0921\u0947\u091f\u093e\u092c\u0947\u0938 \u092f\u0942\u0906\u0930\u090f\u0932 +Database\ Name=\u0921\u0947\u091f\u093e\u092c\u0947\u0938 \u0915\u093e \u0928\u093e\u092e +ID\ Generator=\u0906\u0908\u0921\u0940 \u091c\u0928\u0930\u0947\u091f\u0930 +Database\ Number=\u0921\u0947\u091f\u093e\u092c\u0947\u0938 \u0938\u0902\u0916\u094d\u092f\u093e +Remote\ Host=\u0930\u093f\u092e\u094b\u091f \u0939\u094b\u0938\u094d\u091f +Remote\ Port=\u0930\u093f\u092e\u094b\u091f \u092a\u094b\u0930\u094d\u091f +Lane\ Width\ (m)=\u0932\u0947\u0928 \u0915\u0940 \u091a\u094c\u0921\u093c\u093e\u0908 (\u090f\u092e) +Enable\ EML\ Analysis=\u0908\u090f\u092e\u090f\u0932 \u0935\u093f\u0936\u094d\u0932\u0947\u0937\u0923 \u0938\u0915\u094d\u0937\u092e \u0915\u0930\u0947\u0902 +Is\ Collimated=\u0915\u094b\u0932\u093f\u092e\u0947\u091f\u0947\u0921 \u0939\u0948 +Stream\ Path=\u0938\u094d\u091f\u094d\u0930\u0940\u092e \u092a\u0925 +Lane\ Options\ Config=\u0932\u0947\u0928 \u0935\u093f\u0915\u0932\u094d\u092a \u0915\u0949\u0928\u094d\u092b\u093c\u093f\u0917 diff --git a/sensorhub-webui-core/src/main/resources/org/sensorhub/ui/i18n/messages_id.properties b/sensorhub-webui-core/src/main/resources/org/sensorhub/ui/i18n/messages_id.properties new file mode 100644 index 0000000000..e7d1880bd2 --- /dev/null +++ b/sensorhub-webui-core/src/main/resources/org/sensorhub/ui/i18n/messages_id.properties @@ -0,0 +1,543 @@ +app.title=OpenSensorHub +tab.sensors=Sensor +tab.databases=Basis Data +tab.processing=Pemrosesan +tab.services=Layanan +tab.clients=Klien +tab.network=Jaringan +tab.security=Keamanan +action.shutdown=Matikan +action.logout=Keluar +action.save=Simpan +action.addModule=Tambah Modul Baru +action.addSubmodule=Tambah Sub-modul +action.removeModule=Hapus Modul +action.removeSubmodule=Hapus Sub-modul +action.start=Mulai +action.stop=Berhenti +action.restart=Mulai Ulang +action.forceInit=Paksa Inisialisasi +action.selectAll=Pilih Semua Modul +action.deselectAll=Hapus Semua Pilihan +dialog.shutdown.title=Mematikan Dimulai... +dialog.shutdown.message=UI akan berhenti merespons +dialog.shutdown.confirm=Apakah Anda yakin ingin mematikan pusat sensor? +dialog.logout.confirm=Apakah Anda yakin ingin keluar? +dialog.save.confirm=Apakah Anda yakin ingin menyimpan konfigurasi (dan menimpa yang sebelumnya)? +msg.configSaved=Konfigurasi SensorHub Disimpan +msg.configSaveError=Tidak dapat menyimpan konfigurasi +dialog.remove.confirm=Apakah Anda yakin ingin menghapus {0}?
Semua pengaturan akan hilang. +msg.removeError={0} tidak dapat dihapus +msg.startError={0} tidak dapat dimulai +msg.stopError={0} tidak dapat dihentikan +msg.restartError={0} tidak dapat dimulai ulang +msg.reinitError={0} tidak dapat diinisialisasi ulang +msg.loadError=Tidak dapat memuat modul +msg.addSubmoduleError=Tidak dapat menambahkan sub-modul +about.title=Tentang OpenSensorHub +about.desc=Platform perangkat lunak untuk membangun jaringan sensor cerdas dan Internet of Things +about.license=Dilisensikan di bawah Lisensi Publik Mozilla v2.0 +about.version=Versi: +about.build=Nomor Build: +about.deployment=Nama Deployment: +tooltip.shutdown=Matikan SensorHub +tooltip.logout=Keluar dari node OSH +tooltip.save=Simpan Konfigurasi SensorHub +dialog.start.confirm=Apakah Anda yakin ingin memulai {0}? +dialog.stop.confirm=Apakah Anda yakin ingin menghentikan {0}? +dialog.restart.confirm=Apakah Anda yakin ingin memulai ulang {0}? +dialog.reinit.confirm=Apakah Anda yakin ingin memaksa inisialisasi ulang {0}? +backgroundUpdate=Pembaruan Latar Belakang +sigmaThreshold=Ambang Sigma +nuclideIdentification=Identifikasi Nuklida +tamperAlarm=Alarm Kerusakan +occupancySensor=Sensor Okupansi +stateOfHealth=Status Kesehatan +soh=SOH +1ScanThisQrCodeWithYourAuthenticatorApp=1. Pindai Kode QR ini dengan aplikasi autentikator Anda: +2EnterThe6digitCodeGeneratedByTheApp=2. Masukkan kode 6 digit yang dihasilkan oleh aplikasi: +orEnterThisSecretKeyManually=Atau masukkan Kunci Rahasia ini secara manual: +loadingBundlesInformation=Memuat Informasi Paket... +loadingPackageInformation=Memuat Informasi Paket... +arrayComponentNotSupported=Komponen array tidak didukung +twofactorAuthentication=Otentikasi Dua Faktor +installMorePackages=Instal Lebih Banyak Paket... +errorGeneratingQrCode=Kesalahan saat membuat Kode QR +installMoreModules=Pasang Lebih Banyak Modul... +detailedInstructions=Instruksi Rinci +availableNetworks=Jaringan yang Tersedia +processParameters=Parameter Proses +verifyAndEnable=Verifikasi dan Aktifkan +dataSourceInfo=Info Sumber Data +detectedDevices=Perangkat Terdeteksi +installSelected=Instal yang Dipilih +databaseContent=Konten Basis Data +itemsPerPage=Item per halaman: +commandInputs=Input Perintah +processInputs=Input Proses +providerClass=Kelas Penyedia +processName=Nama Proses: +configuration=Konfigurasi +applyChanges=Terapkan Perubahan +sendCommand=Kirim Perintah +useAddress=Gunakan Alamat +selectNone=Pilih Tidak Ada +timeRange=Rentang Waktu: +permissions=Izin +startScan=Mulai Pindai +noReadme=Tidak ada README +stopScan=Hentikan Pemindaian +reset2fa=Setel ulang 2FA +previous=Sebelumnya +useName=Gunakan Nama +outputs=Keluaran +refresh=Menyegarkan +modify=Memodifikasi +cancel=Membatalkan +logout=Keluar +remove=Menghapus +verify=Memeriksa +first=Pertama +login=Login +last=Terakhir +view=MELIHAT +next=Berikutnya +stop=Berhenti +add=Menambahkan +ui.empty=< +ok=OKE +1ScanThisQrCodeWithYourAuthenticatorApp1=1. Pindai Kode QR ini dengan aplikasi autentikator Anda: +2EnterThe6digitCodeGeneratedByTheApp1=2. Masukkan kode 6 digit yang dihasilkan oleh aplikasi: +orEnterThisSecretKeyManually1=Atau masukkan Kunci Rahasia ini secara manual: +loadingPackageInformation1=Memuat Informasi Paket... +loadingBundlesInformation1=Memuat Informasi Paket... +arrayComponentNotSupported1=Komponen array tidak didukung +twofactorAuthentication1=Otentikasi Dua Faktor +errorGeneratingQrCode1=Kesalahan saat membuat Kode QR +installMorePackages1=Instal Lebih Banyak Paket... +installMoreModules1=Pasang Lebih Banyak Modul... +detailedInstructions1=Instruksi Rinci +processParameters1=Parameter Proses +availableNetworks1=Jaringan yang Tersedia +verifyAndEnable1=Verifikasi dan Aktifkan +databaseContent1=Konten Basis Data +installSelected1=Instal yang Dipilih +dataSourceInfo1=Info Sumber Data +detectedDevices1=Perangkat Terdeteksi +itemsPerPage1=Item per halaman: +processInputs1=Input Proses +commandInputs1=Input Perintah +providerClass1=Kelas Penyedia +configuration1=Konfigurasi +processName1=Nama Proses: +applyChanges1=Terapkan Perubahan +sendCommand1=Kirim Perintah +timeRange1=Rentang Waktu: +useAddress1=Gunakan Alamat +permissions1=Izin +selectNone1=Pilih Tidak Ada +startScan1=Mulai Pindai +noReadme1=Tidak ada README +reset2fa1=Setel ulang 2FA +stopScan1=Hentikan Pemindaian +useName1=Gunakan Nama +previous1=Sebelumnya +refresh1=Menyegarkan +outputs1=Keluaran +cancel1=Membatalkan +logout1=Keluar +modify1=Memodifikasi +remove1=Menghapus +verify1=Memeriksa +first1=Pertama +login1=Login +view1=MELIHAT +stop1=Berhenti +next1=Berikutnya +last1=Terakhir +add1=Menambahkan +last2=>> +first2=<< +ok1=OKE +next2=> +previous2=< + +pleaseEnterAUserIDFirst1=Silakan masukkan ID Pengguna terlebih dahulu +reset2FA1=Setel ulang 2FA +enable2FA1=Aktifkan 2FA +twoFAEnabledSuccessfully1=2FA Berhasil Diaktifkan +invalidCode1=Kode Tidak Valid +allowedAndDeniedPermissionsForUsersWithThisRole1=Izin yang diizinkan dan ditolak untuk pengguna dengan peran ini +manualEntry1=Entri Manual +toggleAutoRefreshDataOncePerSecond1=Alihkan data penyegaran otomatis sekali per detik +lookupSystem1=Sistem Pencarian +lookupModule1=Modul Pencarian +lookupAddress1=Alamat Pencarian +showPassword1=Tampilkan Kata Sandi +showHistogram1=Tampilkan Histogram +hideHistogram1=Sembunyikan Histogram +reloadDataFromDatabase1=Muat ulang data dari database +fois1=FOI +username1=Nama belakang +password1=Kata sandi +loginFailed1=Gagal Masuk +invalidUsernameOrPassword1=Nama pengguna atau kata sandi tidak valid +verificationCode1=Kode Verifikasi +verificationFailed1=Verifikasi Gagal +datasource1=Sumber data +process1=Proses +logoutFromOshNode1=Keluar dari simpul K3 +setParameter1=Tetapkan Parameter +setupTwoFactorAuthentication1=Siapkan Otentikasi Dua Faktor + +action.new_item={0} baru +Lane\ System=Sistem Jalur +Module\ Class=Kelas Modul +Module\ Name=Nama Modul +Module\ ID=ID Modul +Description=Keterangan +SensorML\ URL=URL SensorML +UniqueID=ID Unik +Last\ Updated=Terakhir Diperbarui +Auto\ Start=Mulai Otomatis +Delete\ Data\ on\ Lane\ Removal=Hapus Data Penghapusan Jalur +Latitude=Lintang +Longitude=Garis bujur +Altitude=Ketinggian +Initial\ RPM\ Config=Konfigurasi RPM Awal +Initial\ Camera\ Config=Konfigurasi Kamera Awal +Lane\ Options\ Config=Konfigurasi Opsi Jalur +tab.general=Umum +tab.readme=BACA SAYA +Fixed\ Location=Lokasi Tetap +Fixed\ Orientation=Orientasi Tetap +# Auto-extracted DisplayInfo labels and descriptions +URL\ of\ SensorML\ file\ providing\ the\ base\ description\ of\ the\ sensor=URL file SensorML yang memberikan deskripsi dasar sensor +Time\ at\ which\ the\ SensorML\ description\ was\ last\ updated=Waktu terakhir kali deskripsi SensorML diperbarui +Geodetic\ latitude,\ in\ degrees=Garis lintang geodetik, dalam derajat +Longitude,\ in\ degrees=Bujur, dalam derajat +Height\ above\ ellipsoid,\ in\ meters=Tinggi di atas ellipsoid, dalam meter +X\ coordinate,\ in\ meters=Koordinat X, dalam meter +Y\ coordinate,\ in\ meters=Koordinat Y, dalam meter +Z\ coordinate,\ in\ meters=Koordinat Z, dalam meter +Pitch\ angle\ about\ Y\ axis,\ in\ degrees=Sudut pitch terhadap sumbu Y, dalam derajat +Roll\ angle\ about\ X\ axis,\ in\ degrees=Sudut gulungan terhadap sumbu X, dalam derajat +Location\ in\ EPSG\:4979\ coordinate\ reference\ frame=Lokasi di kerangka acuan koordinat EPSG:4979 +Database\ Number=Nomor Basis Data +Numerical\ identifier\ of\ the\ database.\ Each\ database\ that\ should\ be\ exposed\ via\ the\ federated\ database\ API\ must\ have\ a\ unique\ number\ on\ the\ sensor\ hub.\ If\ visibility\ through\ the\ federated\ database\ is\ not\ desired,\ it\ can\ be\ omitted.=Pengidentifikasi numerik dari database. Setiap database yang harus diekspos melalui API database gabungan harus memiliki nomor unik di hub sensor. Jika visibilitas melalui database gabungan tidak diinginkan, visibilitas dapat dihilangkan. +Enables\ fine-grained\ permission-based\ access\ control\ for\ this\ module=Mengaktifkan kontrol akses berbasis izin yang terperinci untuk modul ini +Require\ Authentication=Memerlukan Otentikasi +Set\ to\ require\ remote\ users\ to\ be\ authentified\ before\ they\ can\ use\ this\ service=Disetel untuk mengharuskan pengguna jarak jauh diautentikasi sebelum mereka dapat menggunakan layanan ini +Endpoint=Titik akhir +Unique\ local\ ID\ of\ the\ module=ID lokal unik dari modul +User\ description\ for\ the\ module=Deskripsi pengguna untuk modul +Set\ to\ automatically\ start\ the\ module\ when\ it\ is\ loaded=Atur untuk memulai modul secara otomatis ketika dimuat +Module\ implementation\ class=Kelas implementasi modul +User\ chosen\ name\ for\ the\ module=Nama yang dipilih pengguna untuk modul +Name\ of\ topic/queue\ to\ use=Nama topik/antrian yang akan digunakan +Enable/disable\ writing\ to\ queue=Mengaktifkan/menonaktifkan penulisan ke antrian +Enable/disable\ reading\ from\ queue=Mengaktifkan/menonaktifkan pembacaan dari antrian +Protocol\ Options=Opsi Protokol +Common\ Configuration=Konfigurasi Umum +Common\ configuration\ for\ sensors\ in\ the\ array=Konfigurasi umum untuk sensor dalam array +Sensors\ Configuration=Konfigurasi Sensor +Subsystem\ Config=Konfigurasi Subsistem +Configuration\ of\ the\ subsystem=Konfigurasi subsistem +Relative\ Location=Lokasi Relatif +Location\ of\ this\ subsystem\ relative\ to\ the\ main\ system\ or\ platform\ reference\ frame=Lokasi subsistem ini relatif terhadap sistem utama atau kerangka acuan platform +Relative\ Orientation=Orientasi Relatif +Orientation\ of\ this\ subsystem\ relative\ to\ the\ main\ system\ or\ platform\ reference\ frame=Orientasi subsistem ini relatif terhadap sistem utama atau kerangka acuan platform +Fixed\ system\ orientation\ in\ the\ local\ NED\ reference\ frame=Memperbaiki orientasi sistem dalam kerangka referensi NED lokal +Subsystems=Subsistem +Configuration\ of\ components\ of\ this\ sensor\ system=Konfigurasi komponen sistem sensor ini +Database\ Config=Konfigurasi Basis Data +Configuration\ of\ underlying\ database=Konfigurasi database yang mendasarinya +System\ UIDs=UID sistem +Unique\ IDs\ of\ system\ drivers\ handled\ by\ this\ database=ID unik driver sistem ditangani oleh database ini +Automatic\ Purge\ Policy=Kebijakan Pembersihan Otomatis +Policy\ for\ automatically\ purging\ historical\ data=Kebijakan untuk menghapus data historis secara otomatis +Uncheck\ to\ disable\ auto-purge\ temporarily=Hapus centang untuk menonaktifkan pembersihan otomatis sementara +Purge\ Execution\ Period=Periode Eksekusi Pembersihan +Unique\ IDs\ of\ system\ drivers\ to\ purge=ID unik driver sistem yang akan dibersihkan +Max\ Record\ Age=Usia Rekor Maks +SensorML\ File=Berkas SensorML +Path\ of\ SensorML\ description\ of\ the\ process=Jalur deskripsi proses SensorML +List\ of\ users\ allowed\ access\ to\ this\ system=Daftar pengguna yang mengizinkan akses ke sistem ini +List\ of\ security\ roles=Daftar peran keamanan +User\ ID=ID Pengguna +Role\ ID=ID Peran +Source\ Database\ ID=ID Basis Data Sumber +ID\ of\ database\ module\ to\ read\ data\ from\ (Federated\ database\ will\ be\ used\ if\ not\ set=ID modul database untuk membaca data (Database gabungan akan digunakan jika tidak disetel +HTTP\ Port=Pelabuhan HTTP +HTTPS\ Port=Pelabuhan HTTPS +Root\ URL\ where\ static\ web\ content\ will\ be\ served.=URL root tempat konten web statis akan disajikan. +Directory\ where\ static\ web\ content\ is\ located.=Direktori tempat konten web statis berada. +Root\ URL\ where\ the\ server\ will\ accept\ requests.\ This\ will\ be\ the\ prefix\ to\ all\ servlet\ URLs.=URL root tempat server akan menerima permintaan. Ini akan menjadi awalan untuk semua URL servlet. +Proxy\ Base\ URL=URL Basis Proksi +Public\ URL\ as\ viewed\ from\ the\ outside\ when\ requests\ transit\ through\ a\ proxy\ server.=URL publik seperti yang dilihat dari luar ketika meminta transit melalui server proxy. +Authentication\ Method=Metode Otentikasi +Method\ used\ to\ authenticate\ users\ on\ this\ server=Metode yang digunakan untuk mengautentikasi pengguna di server ini +Path\ to\ a\ key\ store\ containing\ the\ certificate\ and\ keypair\ that\ this\ server\ will\ present\ to\ clients\ when\ accessed\ over\ HTTPS.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ \"javax.net.ssl.keyStore\"\ system\ property.\=Path to a key store containing the certificate and keypair that this server will present to clients when accessed over HTTPS. If this value is blank, will default to using the value of the \"javax.net.ssl.keyStore\" system property. +Alias\ for\ the\ public/private\ keypair\ within\ the\ key\ store\ that\ will\ be\ used\ to\ identify\ this\ server.=Alias \u200b\u200buntuk pasangan kunci publik/pribadi dalam penyimpanan kunci yang akan digunakan untuk mengidentifikasi server ini. +Path\ to\ the\ TLS\ trust\ store\ that\ is\ used\ when\ client\ authentication\ is\ required.\ Ignored\ if\ client\ certificate\ authentication\ is\ not\ used.\ Certificates\ in\ this\ file\ designate\ the\ signing\ authorities\ for\ client\ certificates\ that\ will\ be\ trusted.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ \"javax.net.ssl.trustStore\"\ system\ property.\=Path to the TLS trust store that is used when client authentication is required. Ignored if client certificate authentication is not used. Certificates in this file designate the signing authorities for client certificates that will be trusted. If this value is blank, will default to using the value of the \"javax.net.ssl.trustStore\" system property. +Password\ for\ the\ trust\ store.\ Ignored\ if\ client\ certificate\ authentication\ is\ not\ used.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ \"javax.net.ssl.trustStorePassword\"\ system\ property.\=Password for the trust store. Ignored if client certificate authentication is not used. If this value is blank, will default to using the value of the \"javax.net.ssl.trustStorePassword\" system property. +Enable\ CORS=Aktifkan CORS +Enable\ generation\ of\ CORS\ headers\ to\ allow\ cross-domain\ requests\ from\ browsers=Aktifkan pembuatan header CORS untuk mengizinkan permintaan lintas domain dari browser +Capabilities\ Info=Info Kemampuan +Information\ included\ in\ the\ service\ capabilities\ document=Informasi yang disertakan dalam dokumen kemampuan layanan +Enable\ HTTP\ GET=Aktifkan HTTP DAPATKAN +Enables/disables\ HTTP\ GET\ bindings\ on\ operations\ that\ support\ it=Mengaktifkan/menonaktifkan pengikatan HTTP GET pada operasi yang mendukungnya +Enable\ HTTP\ POST=Aktifkan HTTP POST +Enables/disables\ HTTP\ POST\ bindings\ on\ operations\ that\ support\ it=Mengaktifkan/menonaktifkan pengikatan HTTP POST pada operasi yang mendukungnya +Enable\ HTTP\ SOAP=Aktifkan SABUN HTTP +Enables/disables\ HTTP\ SOAP\ bindings\ on\ operations\ that\ support\ it=Mengaktifkan/menonaktifkan pengikatan HTTP SOAP pada operasi yang mendukungnya +Connection\ Timeout=Batas Waktu Koneksi +Reconnect\ Period=Periode Sambungan Kembali +Max\ Reconnect\ Attempts=Upaya Sambungan Ulang Maks +Maximum\ number\ of\ times\ the\ client\ will\ attempt\ to\ reconnect\ when\ the\ connection\ is\ not\ available\ or\ lost.\ A\ negative\ value\ means\ that\ there\ is\ no\ limit\ to\ the\ number\ of\ reconnection\ attempts.\ Zero\ means\ not\ to\ attempt\ reconnection.=Berapa kali maksimum klien akan mencoba menyambung kembali ketika sambungan tidak tersedia atau hilang. Nilai negatif berarti tidak ada batasan jumlah upaya penyambungan kembali. Nol berarti tidak mencoba menyambung kembali. +IP\ or\ DNS\ name\ of\ remote\ host=Nama IP atau DNS dari host jarak jauh +IP\ of\ local\ network\ interface\ to\ bind\ to\ or\ 'AUTO'\ to\ select\ it\ automatically=IP antarmuka jaringan lokal untuk diikat atau ''''AUTO'''' untuk memilihnya secara otomatis +Connection\ Options=Opsi Koneksi +Serial\ port\ device\ name.\ Usually\ something\ like\ /dev/ttyXXX\ on\ Linux=Nama perangkat port serial. Biasanya sesuatu seperti /dev/ttyXXX di Linux +Minimum\ number\ of\ bytes\ to\ receive\ before\ they\ are\ sent\ to\ the\ caller=Jumlah minimum byte yang harus diterima sebelum dikirim ke pemanggil +Local\ port\ number\ to\ use\ on\ the\ local\ host=Nomor port lokal untuk digunakan pada host lokal +Physical\ address\ of\ Bluetooth\ device\ to\ connect\ to=Alamat fisik perangkat Bluetooth yang akan dihubungkan +Port\ number\ to\ connect\ to\ on\ remote\ host=Nomor port untuk dihubungkan pada host jarak jauh +User\ Name=Nama belakang +Remote\ user\ name=Nama pengguna jarak jauh +Password=Kata sandi +Remote\ password=Kata sandi jarak jauh +Secure\ communications\ with\ SSL/TLS=Amankan komunikasi dengan SSL/TLS +Enable\ to\ check\ if\ remote\ host\ is\ reachable\ before\ attempting\ further\ operations=Aktifkan untuk memeriksa apakah host jarak jauh dapat dijangkau sebelum mencoba operasi lebih lanjut +Path\ or\ resource\ or\ service\ relative\ to\ server\ root=Jalur atau sumber daya atau layanan yang berhubungan dengan root server +Unique\ ID\ of\ system\ group=ID unik grup sistem +Name\ of\ system\ group=Nama grup sistem +Description\ of\ system\ group=Deskripsi grup sistem +List\ of\ bundle\ repository\ URLs=Daftar URL repositori bundel +A\ human\ readable\ friendly\ identifier\ for\ the\ deployment=Pengidentifikasi ramah yang dapat dibaca manusia untuk penerapan +Enable\ Landing\ Page=Aktifkan Halaman Arahan +Enable\ Landing\ Servlet\ to\ redirect\ users\ to\ landing\ page=Aktifkan Landing Servlet untuk mengarahkan pengguna ke halaman arahan +Config\ Class=Kelas Konfigurasi +Type\ of\ module\ config\ class\ for\ which\ a\ custom\ panel\ must\ be\ generated=Jenis kelas konfigurasi modul yang panel kustomnya harus dibuat +UI\ Class=Kelas UI +Fully\ qualified\ name\ of\ class\ implementing\ IModuleAdminPanel=Nama kelas yang mengimplementasikan IModuleAdminPanel sepenuhnya memenuhi syarat + +# Auto-extracted property IDs +sensorML=Sensor Ml +lastUpdated=Terakhir Diperbarui +lat=lat +lon=Lon +alt=alternatif +x=X +y=Y +z=Z +heading=Menuju +pitch=Melempar +roll=Gulungan +location=Lokasi +orientation=Orientasi +databaseNum=Nomor Basis Data +enableAccessControl=Aktifkan Kontrol Akses +requireAuth=Memerlukan Auth +mimeType=Tipe pantomim +className=Nama Kelas +endPoint=Titik Akhir +id=Pengenal +description=Keterangan +autoStart=Mulai Otomatis +topicName=Nama Topik +enablePublish=Aktifkan Publikasikan +enableSubscribe=Aktifkan Berlangganan +protocol=Protokol +moduleConfigPath=Jalur Konfigurasi Modul +moduleDataPath=Jalur Data Modul +commonConfig=Konfigurasi Umum +sensors=Sensors +config=Konfigurasi +uniqueID=Identitas Unik +subsystems=Subsistem +dbConfig=Konfigurasi Db +systemUIDs=Uid Sistem +autoPurgeConfig=Konfigurasi Pembersihan Otomatis +minCommitPeriod=Periode Komit Min +enabled=Diaktifkan +purgePeriod=Periode Pembersihan +maxRecordAge=Usia Rekor Maks +users=Pengguna +roles=Peran +allow=Mengizinkan +deny=Membantah +userID=ID Pengguna +name=Nama +password=Kata sandi +certificate=Sertifikat +twoFactorSecret=Rahasia Dua Faktor +isTwoFactorEnabled=Apakah Dua Faktor Diaktifkan +roleID=Id Peran +sourceDatabaseId=Id Basis Data Sumber +includeFilter=Sertakan Filter +excludeFilter=Kecualikan Filter +httpPort=Pelabuhan Http +httpsPort=Pelabuhan Https +staticDocsRootUrl=Url Akar Dokumen Statis +staticDocsRootDir=Dir. Root Dokumen Statis +servletsRootUrl=Url Akar Servlet +proxyBaseUrl=Url Basis Proksi +authMethod=Metode Otentikasi +keyStorePath=Jalur Penyimpanan Kunci +keyStorePassword=Kata Sandi Penyimpanan Kunci +keyAlias=Alias \u200b\u200bKunci +trustStorePath=Jalur Toko Kepercayaan +trustStorePassword=Kata Sandi Toko Percaya +xmlConfigFile=File Konfigurasi Xml +enableCORS=Aktifkan Kor +title=Title +keywords=Kata kunci +fees=Biaya +accessConstraints=Kendala Akses +serviceProvider=Penyedia Layanan +ogcCapabilitiesInfo=Info Kemampuan Ogc +enableHttpGET=Aktifkan Http Dapatkan +enableHttpPOST=Aktifkan Http Posting +enableSOAP=Aktifkan Sabun +connectTimeout=Hubungkan Batas Waktu +reconnectPeriod=Periode Sambungan Kembali +reconnectAttempts=Upaya Menyambungkan Kembali +deviceID=Id Perangkat +deviceClass=Kelas Perangkat +remoteHost=Host Jarak Jauh +localAddress=Alamat Lokal +connection=Koneksi +portName=Nama Pelabuhan +baudRate=Tingkat Baud +dataBits=Bit Data +stopBits=Hentikan Bit +parity=Keseimbangan +receiveTimeout=Terima Batas Waktu +receiveThreshold=Terima Ambang Batas +remotePort=Pelabuhan Jarak Jauh +localPort=Pelabuhan Lokal +deviceAddress=Alamat Perangkat +deviceName=Nama Perangkat +serviceUuid=Layanan UUid +user=Pengguna +enableTLS=Aktifkan Tl +checkReachability=Periksa Keterjangkauan +resourcePath=Jalur Sumber Daya +uid=Uid +securityRole=Peran Keamanan +passwordField=Bidang Kata Sandi +widgetSet=Kumpulan Widget +bundleRepoUrls=Url Repo Bundel +customPanels=Panel Kustom +customForms=Formulir Kustom +deploymentName=Nama Penerapan +enableLandingPage=Aktifkan Halaman Arahan +configClass=Kelas Konfigurasi +uiClass=Kelas UI +moduleClass=Kelas Modul + +# Auto-extracted hardcoded UI strings +testLinks1=Tautan Uji +uniqueID1=ID unik +foiIDs1=ID FOI +version1=Versi + +Connected\ Systems\ Endpoint=Titik Akhir Sistem Terhubung +Connected\ Systems\ endpoint\ where\ the\ requests\ are\ sent=Titik akhir Sistem Terhubung tempat permintaan dikirim +Connection\ Settings=Pengaturan Koneksi +Custom\ connector\ configurations=Konfigurasi konektor khusus +Custom\ provider\ configurations=Konfigurasi penyedia khusus +Database\ ID=ID Basis Data +Default\ live\ time-out\ for\ all\ offerings,\ unless\ overriden\ by\ custom\ provider\ settings=Batas waktu langsung default untuk semua penawaran, kecuali diganti oleh pengaturan penyedia khusus +Default\ live\ time-out\ for\ new\ offerings\ created\ via\ SOS-T=Batas waktu langsung default untuk penawaran baru yang dibuat melalui SOS-T +Enable\ to\ use\ a\ persistent\ HTTP\ connection\ for\ InsertResult=Aktifkan untuk menggunakan koneksi HTTP persisten untuk InsertResult +Execution\ period\ of\ the\ purge\ policy\ (in\ seconds)=Periode eksekusi kebijakan pembersihan (dalam hitungan detik) +Filtered\ view\ to\ select\ systems\ exposed\ as\ read-only\ through\ this\ service=Tampilan yang difilter untuk memilih sistem yang diekspos sebagai hanya-baca melalui layanan ini +Filtered\ view\ to\ select\ systems/datastreams\ to\ register\ with\ Connected\ Systems=Tampilan yang difilter untuk memilih sistem/aliran data yang akan didaftarkan ke Sistem Terhubung +Filtered\ view\ to\ select\ systems/datastreams\ to\ register\ with\ remote\ SOS=Tampilan yang difilter untuk memilih sistem/aliran data yang akan didaftarkan dengan SOS jarak jauh +Fixed\ system\ location\ in\ EPSG\ 4979\ (WGS84)\ coordinate\ system=Memperbaiki lokasi sistem dalam sistem koordinat EPSG 4979 (WGS84). +For\ each\ connection\ or\ reconnection\ attempt,\ the\ client\ will\ wait\ for\ the\ remote\ side\ to\ respond\ until\ this\ timeout\ expires\ (in\ ms)=Untuk setiap upaya koneksi atau koneksi ulang, klien akan menunggu sisi jarak jauh merespons hingga batas waktu ini berakhir (dalam ms) +Heading\ (or\ yaw)\ angle\ about\ Z\ axis\ in\ degrees=Sudut arah (atau yaw) terhadap sumbu Z dalam derajat +How\ long\ the\ client\ will\ wait\ after\ connection\ is\ lost\ before\ it\ will\ attempt\ to\ reconnect\ (in\ ms)=Berapa lama klien akan menunggu setelah koneksi terputus sebelum mencoba menyambung kembali (dalam ms) +ID\ Generator=Pembuat ID +ID\ of\ database\ module\ used\ for\ persisting\ data\ received\ by\ this\ service.\ If\ none\ is\ provided,\ new\ systems\ registered\ through\ this\ service\ will\ be\ available\ on\ the\ hub,\ but\ with\ no\ persistence\ guarantee\ across\ restarts.=ID modul database yang digunakan untuk menyimpan data yang diterima oleh layanan ini. Jika tidak ada yang disediakan, sistem baru yang didaftarkan melalui layanan ini akan tersedia di hub, namun tanpa jaminan persistensi saat restart. +ID\ of\ database\ module\ used\ for\ persisting\ data\ received\ by\ this\ service.\ If\ none\ is\ provided,\ new\ systems\ registered\ through\ this\ service\ will\ be\ available\ on\ the\ hub,\ but\ with\ no\ persistence\ guarantee\ across\ restarts.\ Only\ the\ latest\ observation\ from\ each\ datastream\ will\ be\ available\ and\ older\ observations\ will\ be\ discarded=ID modul database yang digunakan untuk menyimpan data yang diterima oleh layanan ini. Jika tidak ada yang disediakan, sistem baru yang didaftarkan melalui layanan ini akan tersedia di hub, namun tanpa jaminan persistensi saat restart. Hanya observasi terbaru dari setiap aliran data yang akan tersedia dan observasi lama akan dibuang +Individual\ configuration\ of\ sensors\ in\ the\ array\ (will\ override\ common\ configuration)=Konfigurasi individual sensor dalam array (akan mengesampingkan konfigurasi umum) +List\ of\ observed\ properties\ URI\ to\ make\ available\ as\ outputs=Daftar properti yang diamati URI untuk dijadikan output +Mapping\ of\ custom\ formats\ mime-types\ to\ custom\ serializer\ classes=Pemetaan tipe mime format khusus ke kelas serializer khusus +Mappings\ used\ by\ CURIE\ to\ URI\ resolver=Pemetaan yang digunakan oleh CURIE ke penyelesai URI +Max\ Limit=Batas Maks +Max\ Observations\ Returned=Pengamatan Maks Dikembalikan +Max\ Records\ Returned=Catatan Maks Dikembalikan +Max\ delay\ between\ auto-commit\ execution,\ in\ seconds.\ 0\ to\ disable\ time-based\ auto-commit=Penundaan maksimum antara eksekusi penerapan otomatis, dalam hitungan detik. 0 untuk menonaktifkan komitmen otomatis berbasis waktu +Maximum\ age\ of\ data\ to\ be\ kept\ in\ storage\ (in\ seconds)=Usia maksimum data untuk disimpan dalam penyimpanan (dalam detik) +Maximum\ number\ of\ FoI\ IDs\ listed\ in\ capabilities=Jumlah maksimum ID FoI yang tercantum dalam kemampuan +Maximum\ number\ of\ observations\ returned\ \ by\ a\ historical\ GetObservation\ request\ (for\ each\ selected\ offering)=Jumlah maksimum pengamatan yang dihasilkan oleh permintaan GetObservation historis (untuk setiap penawaran yang dipilih) +Maximum\ number\ of\ records\ in\ upload\ queue\ (used\ to\ compensate\ for\ variable\ bandwidth)=Jumlah maksimum rekaman dalam antrean unggahan (digunakan untuk mengkompensasi bandwidth variabel) +Maximum\ number\ of\ resources\ returned\ in\ a\ single\ page=Jumlah maksimum sumber daya yang dikembalikan dalam satu halaman +Maximum\ number\ of\ result\ records\ returned\ by\ a\ historical\ GetResult\ request=Jumlah maksimum rekaman hasil yang dikembalikan oleh permintaan GetResult historis +Maximum\ number\ of\ stream\ errors\ before\ we\ try\ to\ reconnect\ to\ remote\ server=Jumlah kesalahan streaming maksimum sebelum kami mencoba menyambung kembali ke server jarak jauh +Memory\ cache\ size\ for\ page\ chunks,\ in\ KB=Ukuran cache memori untuk potongan halaman, dalam KB +Metadata\ of\ system\ group\ that\ will\ be\ created\ to\ contain\ all\ procedures/sensors\ registered\ through\ this\ service.\ Only\ sensors\ in\ this\ group\ will\ be\ modifiable\ by\ this\ service=Metadata grup sistem yang akan dibuat berisi semua prosedur/sensor yang didaftarkan melalui layanan ini. Hanya sensor dalam grup ini yang dapat dimodifikasi oleh layanan ini +Metadata\ of\ system\ group\ that\ will\ be\ created\ to\ contain\ all\ systems\ registered\ through\ this\ service.\ Only\ systems\ in\ this\ group\ will\ be\ modifiable\ by\ this\ service=Metadata grup sistem yang akan dibuat berisi semua sistem yang didaftarkan melalui layanan ini. Hanya sistem dalam grup ini yang dapat dimodifikasi oleh layanan ini +Method\ used\ to\ generate\ new\ resource\ IDs=Metode yang digunakan untuk menghasilkan ID sumber daya baru +Minimum\ fillrate\ above\ which\ auto\ compact\ operations\ may\ be\ triggered=Laju pengisian minimum di atas mana operasi pemadatan otomatis dapat dipicu +Minimum\ period\ between\ database\ commits\ (in\ ms)=Periode minimum antara penerapan basis data (dalam ms) +Names\ of\ datastreams\ whose\ data\ will\ be\ hidden\ from\ the\ SOS.\ If\ this\ is\ null,\ all\ streams\ produced\ by\ the\ procedure\ are\ exposed=Nama aliran data yang datanya akan disembunyikan dari SOS. Jika ini nol, semua aliran yang dihasilkan oleh prosedur akan diekspos +Observed\ Properties=Properti yang Diamati +Offering\ URI\ as\ exposed\ in\ capabilities.\ (if\ null,\ the\ procedure\ UID\ is\ used)=Menawarkan URI seperti yang diungkapkan dalam kemampuan. (jika null, prosedur UID digunakan) +Offering\ description\ (if\ null,\ it\ will\ be\ auto-generated)=Deskripsi penawaran (jika null, maka akan dibuat secara otomatis) +Offering\ name\ (if\ null,\ the\ procedure\ name\ is\ used)=Nama penawaran (jika null, nama prosedur yang digunakan) +Orientation\ as\ Euler\ angles\ in\ NED\ coordinate\ reference\ frame.\nOrder\ of\ rotations\ is\ z-y\u2019-x"\ (in\ rotating\ frame)\ or\ x-y-z\ (in\ fixed\ frame)=Orientasi sebagai sudut Euler dalam kerangka acuan koordinat NED.\nUrutan rotasinya adalah z-y\u2019-x" (dalam bingkai berputar) atau x-y-z (dalam bingkai tetap) +Password\ for\ the\ key\ store\ (and\ for\ the\ keypair\ within\ the\ keystore).\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ "javax.net.ssl.keyStorePassword"\ system\ property.\ This\ value\ can\ use\ variable\ expansion\ expressions\ of\ the\ form\ "$${name}"\ (for\ environment\ variables\ and\ system\ properties)\ or\ "$${file;/path/to/file}"\ (for\ secret\ file\ contents).=Kata sandi untuk penyimpanan kunci (dan untuk pasangan kunci di dalam penyimpanan kunci). Jika nilai ini kosong, secara default akan menggunakan nilai properti sistem "javax.net.ssl.keyStorePassword". Nilai ini dapat menggunakan ekspresi ekspansi variabel dalam bentuk "$${name}" (untuk variabel lingkungan dan properti sistem) atau "$${file;/path/to/file}" (untuk konten file rahasia). +Password\ for\ the\ trust\ store.\ Ignored\ if\ client\ certificate\ authentication\ is\ not\ used.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ "javax.net.ssl.trustStorePassword"\ system\ property.\ This\ value\ can\ use\ variable\ expansion\ expressions\ of\ the\ form\ "$${name}"\ (for\ environment\ variables\ and\ system\ properties)\ or\ "$${file;/path/to/file}"\ (for\ secret\ file\ contents).=Kata sandi untuk toko kepercayaan. Diabaikan jika otentikasi sertifikat klien tidak digunakan. Jika nilai ini kosong, secara default akan menggunakan nilai properti sistem "javax.net.ssl.trustStorePassword". Nilai ini dapat menggunakan ekspresi ekspansi variabel dalam bentuk "$${name}" (untuk variabel lingkungan dan properti sistem) atau "$${file;/path/to/file}" (untuk konten file rahasia). +Path\ of\ service\ endpoint\ relative\ to\ the\ context\ URL\ (e.g.\ http\://server.net/sensorhub)=Jalur titik akhir layanan relatif terhadap URL konteks (misalnya http://server.net/sensorhub) +Path\ to\ a\ key\ store\ containing\ the\ certificate\ and\ keypair\ that\ this\ server\ will\ present\ to\ clients\ when\ accessed\ over\ HTTPS.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ "javax.net.ssl.keyStore"\ system\ property.\ This\ value\ can\ use\ variable\ expansion\ expressions\ of\ the\ form\ "$${name}"\ (for\ environment\ variables\ and\ system\ properties)\ or\ "$${file;/path/to/file}"\ (for\ secret\ file\ contents).=Jalur ke penyimpanan kunci yang berisi sertifikat dan pasangan kunci yang akan disajikan server ini kepada klien ketika diakses melalui HTTPS. Jika nilai ini kosong, secara default akan menggunakan nilai properti sistem "javax.net.ssl.keyStore". Nilai ini dapat menggunakan ekspresi ekspansi variabel dalam bentuk "$${name}" (untuk variabel lingkungan dan properti sistem) atau "$${file;/path/to/file}" (untuk konten file rahasia). +Path\ to\ database\ file=Jalur ke file database +Path\ to\ external\ config\ file\ (in\ Jetty\ IOC\ XML\ format)=Jalur ke file konfigurasi eksternal (dalam format Jetty IOC XML) +Path\ to\ the\ TLS\ trust\ store\ that\ is\ used\ when\ client\ authentication\ is\ required.\ Ignored\ if\ client\ certificate\ authentication\ is\ not\ used.\ Certificates\ in\ this\ file\ designate\ the\ signing\ authorities\ for\ client\ certificates\ that\ will\ be\ trusted.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ "javax.net.ssl.trustStore"\ system\ property.\ This\ value\ can\ use\ variable\ expansion\ expressions\ of\ the\ form\ "$${name}"\ (for\ environment\ variables\ and\ system\ properties)\ or\ "$${file;/path/to/file}"\ (for\ secret\ file\ contents).=Jalur ke penyimpanan kepercayaan TLS yang digunakan saat autentikasi klien diperlukan. Diabaikan jika otentikasi sertifikat klien tidak digunakan. Sertifikat dalam file ini menunjuk otoritas penandatanganan sertifikat klien yang akan dipercaya. Jika nilai ini kosong, secara default akan menggunakan nilai properti sistem "javax.net.ssl.trustStore". Nilai ini dapat menggunakan ekspresi ekspansi variabel dalam bentuk "$${name}" (untuk variabel lingkungan dan properti sistem) atau "$${file;/path/to/file}" (untuk konten file rahasia). +Port\ number\ to\ connect\ to\ on\ remote\ host\ (0\ to\ automatically\ select\ a\ port)=Nomor port untuk dihubungkan pada host jarak jauh (0 untuk memilih port secara otomatis) +SOS\ Endpoint=Titik Akhir SOS +SOS\ endpoint\ to\ fetch\ data\ from=Titik akhir SOS untuk mengambil data +SOS\ endpoint\ where\ the\ requests\ are\ sent=Titik akhir SOS tempat permintaan dikirim +SPS\ Endpoint=Titik Akhir SPS +SPS\ endpoint\ to\ send\ commands\ to=Titik akhir SPS untuk mengirim perintah +Security\ related\ options=Opsi terkait keamanan +Sensor\ UID=UID Sensor +Set\ if\ WebSocket\ protocol\ should\ be\ used\ to\ get\ streaming\ data\ from\ SOS=Tetapkan apakah protokol WebSocket harus digunakan untuk mendapatkan data streaming dari SOS +Set\ if\ offering\ is\ enabled,\ unset\ if\ disabled=Setel jika penawaran diaktifkan, tidak disetel jika dinonaktifkan +Set\ if\ websockets\ protocol\ should\ be\ used\ to\ send\ commands\ to\ SPS=Tetapkan apakah protokol websockets harus digunakan untuk mengirim perintah ke SPS +Set\ to\ compact\ the\ database\ file\ when\ the\ database\ module\ is\ stopped\ or\ restarted=Atur untuk memadatkan file database ketika modul database dihentikan atau dimulai ulang +Set\ to\ compress\ underlying\ file\ storage=Atur untuk mengompresi penyimpanan file yang mendasarinya +Set\ to\ display\ MVStore\ debug\ info\ when\ database\ is\ closed\ (only\ if\ DEBUG\ log\ is\ also\ enabled)=Atur untuk menampilkan info debug MVStore ketika database ditutup (hanya jika log DEBUG juga diaktifkan) +Set\ to\ enable\ spatial\ indexing\ of\ individual\ observations\ sampling\ locations\ (when\ provided)=Ditetapkan untuk mengaktifkan pengindeksan spasial lokasi pengambilan sampel pengamatan individu (bila disediakan) +Set\ to\ open\ the\ database\ as\ read-only=Atur untuk membuka database sebagai hanya-baca +Set\ to\ true\ to\ enable\ transactional\ operation\ support=Setel ke true untuk mengaktifkan dukungan operasi transaksional +Size\ of\ the\ auto-commit\ write\ buffer,\ in\ KB=Ukuran buffer tulis komit otomatis, dalam KB +TCP\ port\ where\ server\ will\ listen\ for\ secure\ HTTP\ (HTTPS)\ connections\ (use\ 0\ to\ disable\ HTTPS).=Port TCP tempat server akan mendengarkan koneksi HTTP (HTTPS) yang aman (gunakan 0 untuk menonaktifkan HTTPS). +TCP\ port\ where\ server\ will\ listen\ for\ unsecure\ HTTP\ connections\ (use\ 0\ to\ disable\ HTTP).=Port TCP tempat server akan mendengarkan koneksi HTTP yang tidak aman (gunakan 0 untuk menonaktifkan HTTP). +Time-out\ after\ which\ real-time\ requests\ are\ disabled\ if\ no\ more\ measurements\ are\ received\ (in\ seconds).\ Real-time\ is\ reactivated\ as\ soon\ as\ new\ records\ start\ being\ received\ again=Batas waktu habis setelah permintaan waktu nyata dinonaktifkan jika tidak ada lagi pengukuran yang diterima (dalam hitungan detik). Real-time diaktifkan kembali segera setelah catatan baru mulai diterima kembali +Time-out\ period\ after\ which\ a\ template\ ID\ reserved\ using\ InsertResultTemplate\ will\ expire\ if\ not\ used\ in\ InsertResult\ requests\ (in\ seconds)=Periode batas waktu setelah ID templat yang dicadangkan menggunakan InsertResultTemplate akan kedaluwarsa jika tidak digunakan dalam permintaan InsertResult (dalam hitungan detik) +Timeout\ after\ which\ data\ is\ released\ to\ the\ caller\ if\ at\ least\ one\ byte\ was\ received\ (in\ ms)=Batas waktu setelah data dilepaskan ke pemanggil jika setidaknya satu byte diterima (dalam ms) +URI\ Prefix\ Map=Peta Awalan URI +Unique\ ID\ (full\ URN\ or\ only\ suffix)\ to\ use\ for\ the\ sensor\ system\ or\ 'auto'\ to\ use\ the\ UUID\ randomly\ generated\ the\ first\ time\ the\ module\ is\ initialized=ID unik (URN lengkap atau akhiran saja) untuk digunakan pada sistem sensor atau ''otomatis'' untuk menggunakan UUID yang dihasilkan secara acak saat pertama kali modul diinisialisasi +Unique\ ID\ of\ a\ system\ that\ this\ configuration\ applies\ to.\nCan\ include\ a\ trailing\ wildcard\ '*'\ to\ match\ several\ systems\ at\ once.=ID unik dari sistem yang menerapkan konfigurasi ini.\nDapat menyertakan karakter pengganti ''*'' untuk mencocokkan beberapa sistem sekaligus. +Unique\ ID\ of\ sensor\ to\ connect\ to\ on\ SOS\ and\ SPS\ servers=ID unik sensor untuk dihubungkan pada server SOS dan SPS +Unique\ ID\ of\ system\ that\ this\ configuration\ applies\ to.\nCan\ include\ a\ trailing\ wildcard\ '*'\ to\ match\ several\ systems\ at\ once.=ID unik sistem tempat konfigurasi ini diterapkan.\nDapat menyertakan karakter pengganti ''*'' untuk mencocokkan beberapa sistem sekaligus. +Use\ WebSockets\ for\ SOS=Gunakan WebSockets untuk SOS +Use\ WebSockets\ for\ SPS=Gunakan WebSockets untuk SPS + +Node\ ID=ID simpul +Stats\ Frequency\ (min)=Frekuensi Statistik (mnt) +Database\ URL=URL basis data +Database\ Name=Nama Basis Data +ID\ Generator=Pembuat ID +Database\ Number=Nomor Basis Data +Remote\ Host=Host Jarak Jauh +Remote\ Port=Pelabuhan Jarak Jauh +Lane\ Width\ (m)=Lebar Jalur (m) +Enable\ EML\ Analysis=Aktifkan Analisis EML +Is\ Collimated=Apakah terkolimasi +Stream\ Path=Jalur Aliran +Lane\ Options\ Config=Konfigurasi Opsi Jalur diff --git a/sensorhub-webui-core/src/main/resources/org/sensorhub/ui/i18n/messages_it.properties b/sensorhub-webui-core/src/main/resources/org/sensorhub/ui/i18n/messages_it.properties new file mode 100644 index 0000000000..9e7f8556ff --- /dev/null +++ b/sensorhub-webui-core/src/main/resources/org/sensorhub/ui/i18n/messages_it.properties @@ -0,0 +1,543 @@ +app.title=OpenSensorHub +tab.sensors=Sensori +tab.databases=Database +tab.processing=Elaborazione +tab.services=Servizi +tab.clients=Client +tab.network=Rete +tab.security=Sicurezza +action.shutdown=Spegni +action.logout=Esci +action.save=Salva +action.addModule=Aggiungi Modulo +action.addSubmodule=Aggiungi Sottomodulo +action.removeModule=Rimuovi Modulo +action.removeSubmodule=Rimuovi Sottomodulo +action.start=Avvia +action.stop=Ferma +action.restart=Riavvia +action.forceInit=Forza Init +action.selectAll=Seleziona Tutto +action.deselectAll=Deseleziona Tutto +dialog.shutdown.title=Spegnimento Avviato... +dialog.shutdown.message=L''interfaccia smetter\u00e0 di rispondere +dialog.shutdown.confirm=Sei sicuro di voler spegnere il Sensor Hub? +dialog.logout.confirm=Sei sicuro di voler uscire? +dialog.save.confirm=Sei sicuro di voler salvare la configurazione? +msg.configSaved=Configurazione SensorHub Salvata +msg.configSaveError=Impossibile salvare la configurazione +dialog.remove.confirm=Sei sicuro di voler rimuovere {0}?
Tutte le impostazioni andranno perse. +msg.removeError=Impossibile rimuovere {0} +msg.startError=Impossibile avviare {0} +msg.stopError=Impossibile fermare {0} +msg.restartError=Impossibile riavviare {0} +msg.reinitError=Impossibile reinizializzare {0} +msg.loadError=Impossibile caricare il modulo +msg.addSubmoduleError=Impossibile aggiungere il sottomodulo +about.title=Informazioni su OpenSensorHub +about.desc=Una piattaforma software per costruire reti di sensori intelligenti e IoT +about.license=Sotto licenza Mozilla Public License v2.0 +about.version=Versione: +about.build=Numero Build: +about.deployment=Nome Deployment: +tooltip.shutdown=Spegni SensorHub +tooltip.logout=Esci dal nodo OSH +tooltip.save=Salva Configurazione SensorHub +dialog.start.confirm=Vuoi avviare {0}? +dialog.stop.confirm=Vuoi fermare {0}? +dialog.restart.confirm=Vuoi riavviare {0}? +dialog.reinit.confirm=Vuoi forzare la reinizializzazione di {0}? +backgroundUpdate=Aggiornamento in Background +sigmaThreshold=Soglia Sigma +nuclideIdentification=Identificazione Nuclidi +tamperAlarm=Allarme Manomissione +occupancySensor=Sensore di Presenza +stateOfHealth=Stato di Salute +soh=SOH +1ScanThisQrCodeWithYourAuthenticatorApp=1. Scansiona questo codice QR con la tua app di autenticazione: +2EnterThe6digitCodeGeneratedByTheApp=2. Inserisci il codice di 6 cifre generato dall''app: +orEnterThisSecretKeyManually=Oppure inserisci manualmente questa chiave segreta: +loadingBundlesInformation=Caricamento delle informazioni sui pacchetti... +loadingPackageInformation=Caricamento delle informazioni sul pacchetto... +arrayComponentNotSupported=Componente array non supportato +twofactorAuthentication=Autenticazione a due fattori +installMorePackages=Installa pi\u00f9 pacchetti... +errorGeneratingQrCode=Errore durante la generazione del codice QR +installMoreModules=Installa pi\u00f9 moduli... +detailedInstructions=Istruzioni dettagliate +availableNetworks=Reti disponibili +processParameters=Parametri di processo +verifyAndEnable=Verifica e abilita +dataSourceInfo=Informazioni sull''origine dati +detectedDevices=Dispositivi rilevati +installSelected=Installa selezionato +databaseContent=Contenuto della banca dati +itemsPerPage=Articoli per pagina: +commandInputs=Ingressi di comando +processInputs=Input di processo +providerClass=Classe fornitore +processName=Nome del processo: +configuration=Configurazione +applyChanges=Applica modifiche +sendCommand=Invia comando +useAddress=Usa indirizzo +selectNone=Seleziona Nessuno +timeRange=Intervallo di tempo: +permissions=Autorizzazioni +startScan=Avvia scansione +noReadme=Nessun README +stopScan=Interrompi scansione +reset2fa=Reimposta 2FA +previous=Precedente +useName=Usa nome +outputs=Uscite +refresh=Aggiorna +modify=Modificare +cancel=Cancellare +logout=Esci +remove=Rimuovere +verify=Verificare +first=Primo +login=Login +last=Scorso +view=VISUALIZZAZIONE +next=Prossimo +stop=Fermare +add=Aggiungere +ui.empty=< +ok=OK +1ScanThisQrCodeWithYourAuthenticatorApp1=1. Scansiona questo codice QR con la tua app di autenticazione: +2EnterThe6digitCodeGeneratedByTheApp1=2. Inserisci il codice di 6 cifre generato dall''app: +orEnterThisSecretKeyManually1=Oppure inserisci manualmente questa chiave segreta: +loadingPackageInformation1=Caricamento delle informazioni sul pacchetto... +loadingBundlesInformation1=Caricamento delle informazioni sui pacchetti... +arrayComponentNotSupported1=Componente array non supportato +twofactorAuthentication1=Autenticazione a due fattori +errorGeneratingQrCode1=Errore durante la generazione del codice QR +installMorePackages1=Installa pi\u00f9 pacchetti... +installMoreModules1=Installa pi\u00f9 moduli... +detailedInstructions1=Istruzioni dettagliate +processParameters1=Parametri di processo +availableNetworks1=Reti disponibili +verifyAndEnable1=Verifica e abilita +databaseContent1=Contenuto della banca dati +installSelected1=Installa selezionato +dataSourceInfo1=Informazioni sull''origine dati +detectedDevices1=Dispositivi rilevati +itemsPerPage1=Articoli per pagina: +processInputs1=Input di processo +commandInputs1=Ingressi di comando +providerClass1=Classe fornitore +configuration1=Configurazione +processName1=Nome del processo: +applyChanges1=Applica modifiche +sendCommand1=Invia comando +timeRange1=Intervallo di tempo: +useAddress1=Usa indirizzo +permissions1=Autorizzazioni +selectNone1=Seleziona Nessuno +startScan1=Avvia scansione +noReadme1=Nessun README +reset2fa1=Reimposta 2FA +stopScan1=Interrompi scansione +useName1=Usa nome +previous1=Precedente +refresh1=Aggiorna +outputs1=Uscite +cancel1=Cancellare +logout1=Esci +modify1=Modificare +remove1=Rimuovere +verify1=Verificare +first1=Primo +login1=Login +view1=VISUALIZZAZIONE +stop1=Fermare +next1=Prossimo +last1=Scorso +add1=Aggiungere +last2=>> +first2=<< +ok1=OK +next2=> +previous2=< + +pleaseEnterAUserIDFirst1=Inserisci prima un ID utente +reset2FA1=Reimposta 2FA +enable2FA1=Abilita 2FA +twoFAEnabledSuccessfully1=2FA abilitato correttamente +invalidCode1=Codice non valido +allowedAndDeniedPermissionsForUsersWithThisRole1=Autorizzazioni consentite e negate per gli utenti con questo ruolo +manualEntry1=Inserimento manuale +toggleAutoRefreshDataOncePerSecond1=Attiva/disattiva l''aggiornamento automatico dei dati una volta al secondo +lookupSystem1=Sistema di ricerca +lookupModule1=Modulo di ricerca +lookupAddress1=Indirizzo di ricerca +showPassword1=Mostra password +showHistogram1=Mostra istogramma +hideHistogram1=Nascondi istogramma +reloadDataFromDatabase1=Ricaricare i dati dal database +fois1=FOI +username1=Nome utente +password1=Password +loginFailed1=Accesso non riuscito +invalidUsernameOrPassword1=Nome utente o password non validi +verificationCode1=Codice di verifica +verificationFailed1=Verifica non riuscita +datasource1=Origine dati +process1=Processo +logoutFromOshNode1=Disconnettersi dal nodo SSL +setParameter1=Imposta parametro +setupTwoFactorAuthentication1=Imposta l''autenticazione a due fattori + +action.new_item=Nuovo {0} +Lane\ System=Sistema di corsie +Module\ Class=Classe del modulo +Module\ Name=Nome del modulo +Module\ ID=ID del modulo +Description=Descrizione +SensorML\ URL=URL del sensoreML +UniqueID=ID univoco +Last\ Updated=Ultimo aggiornamento +Auto\ Start=Avvio automatico +Delete\ Data\ on\ Lane\ Removal=Elimina dati sulla rimozione corsia +Latitude=Latitudine +Longitude=Longitudine +Altitude=Altitudine +Initial\ RPM\ Config=Configurazione RPM iniziale +Initial\ Camera\ Config=Configurazione iniziale della telecamera +Lane\ Options\ Config=Configurazione opzioni corsia +tab.general=Generale +tab.readme=LEGGIMI +Fixed\ Location=Posizione fissa +Fixed\ Orientation=Orientamento fisso +# Auto-extracted DisplayInfo labels and descriptions +URL\ of\ SensorML\ file\ providing\ the\ base\ description\ of\ the\ sensor=URL del file SensorML che fornisce la descrizione di base del sensore +Time\ at\ which\ the\ SensorML\ description\ was\ last\ updated=Ora dell''ultimo aggiornamento della descrizione SensorML +Geodetic\ latitude,\ in\ degrees=Latitudine geodetica, in gradi +Longitude,\ in\ degrees=Longitudine, in gradi +Height\ above\ ellipsoid,\ in\ meters=Altezza sopra l''ellissoide, in metri +X\ coordinate,\ in\ meters=Coordinata X, in metri +Y\ coordinate,\ in\ meters=Coordinata Y, in metri +Z\ coordinate,\ in\ meters=Coordinata Z, in metri +Pitch\ angle\ about\ Y\ axis,\ in\ degrees=Angolo di inclinazione attorno all''asse Y, in gradi +Roll\ angle\ about\ X\ axis,\ in\ degrees=Angolo di rollio attorno all''asse X, in gradi +Location\ in\ EPSG\:4979\ coordinate\ reference\ frame=Posizione nel sistema di riferimento delle coordinate EPSG:4979 +Database\ Number=Numero della banca dati +Numerical\ identifier\ of\ the\ database.\ Each\ database\ that\ should\ be\ exposed\ via\ the\ federated\ database\ API\ must\ have\ a\ unique\ number\ on\ the\ sensor\ hub.\ If\ visibility\ through\ the\ federated\ database\ is\ not\ desired,\ it\ can\ be\ omitted.=Identificatore numerico del database. Ogni database che deve essere esposto tramite l''API del database federato deve avere un numero univoco sull''hub del sensore. Se non si desidera la visibilit\u00e0 attraverso il database federato, \u00e8 possibile ometterla. +Enables\ fine-grained\ permission-based\ access\ control\ for\ this\ module=Abilita il controllo degli accessi granulare basato sulle autorizzazioni per questo modulo +Require\ Authentication=Richiedi autenticazione +Set\ to\ require\ remote\ users\ to\ be\ authentified\ before\ they\ can\ use\ this\ service=Impostato per richiedere l''autenticazione degli utenti remoti prima di poter utilizzare questo servizio +Endpoint=Punto finale +Unique\ local\ ID\ of\ the\ module=ID locale univoco del modulo +User\ description\ for\ the\ module=Descrizione utente per il modulo +Set\ to\ automatically\ start\ the\ module\ when\ it\ is\ loaded=Impostato per avviare automaticamente il modulo quando viene caricato +Module\ implementation\ class=Classe di implementazione del modulo +User\ chosen\ name\ for\ the\ module=Nome scelto dall''utente per il modulo +Name\ of\ topic/queue\ to\ use=Nome dell''argomento/coda da utilizzare +Enable/disable\ writing\ to\ queue=Abilita/disabilita la scrittura nella coda +Enable/disable\ reading\ from\ queue=Abilita/disabilita la lettura dalla coda +Protocol\ Options=Opzioni del protocollo +Common\ Configuration=Configurazione comune +Common\ configuration\ for\ sensors\ in\ the\ array=Configurazione comune per i sensori nell''array +Sensors\ Configuration=Configurazione dei sensori +Subsystem\ Config=Configurazione sottosistema +Configuration\ of\ the\ subsystem=Configurazione del sottosistema +Relative\ Location=Posizione relativa +Location\ of\ this\ subsystem\ relative\ to\ the\ main\ system\ or\ platform\ reference\ frame=Posizione di questo sottosistema rispetto al sistema principale o al quadro di riferimento della piattaforma +Relative\ Orientation=Orientamento relativo +Orientation\ of\ this\ subsystem\ relative\ to\ the\ main\ system\ or\ platform\ reference\ frame=Orientamento di questo sottosistema rispetto al sistema principale o al quadro di riferimento della piattaforma +Fixed\ system\ orientation\ in\ the\ local\ NED\ reference\ frame=Orientamento fisso del sistema nel quadro di riferimento NED locale +Subsystems=Sottosistemi +Configuration\ of\ components\ of\ this\ sensor\ system=Configurazione dei componenti di questo sistema di sensori +Database\ Config=Configurazione database +Configuration\ of\ underlying\ database=Configurazione del database sottostante +System\ UIDs=UID di sistema +Unique\ IDs\ of\ system\ drivers\ handled\ by\ this\ database=ID univoci dei driver di sistema gestiti da questo database +Automatic\ Purge\ Policy=Politica di eliminazione automatica +Policy\ for\ automatically\ purging\ historical\ data=Politica per l''eliminazione automatica dei dati storici +Uncheck\ to\ disable\ auto-purge\ temporarily=Deseleziona per disattivare temporaneamente l''eliminazione automatica +Purge\ Execution\ Period=Periodo di esecuzione dell''eliminazione +Unique\ IDs\ of\ system\ drivers\ to\ purge=ID univoci dei driver di sistema da eliminare +Max\ Record\ Age=Et\u00e0 massima della registrazione +SensorML\ File=File SensorML +Path\ of\ SensorML\ description\ of\ the\ process=Percorso della descrizione SensorML del processo +List\ of\ users\ allowed\ access\ to\ this\ system=Elenco degli utenti autorizzati ad accedere a questo sistema +List\ of\ security\ roles=Elenco dei ruoli di sicurezza +User\ ID=ID utente +Role\ ID=Identificativo del ruolo +Source\ Database\ ID=ID del database di origine +ID\ of\ database\ module\ to\ read\ data\ from\ (Federated\ database\ will\ be\ used\ if\ not\ set=ID del modulo database da cui leggere i dati (se non impostato verr\u00e0 utilizzato il database federato). +HTTP\ Port=Porta HTTP +HTTPS\ Port=Porta HTTPS +Root\ URL\ where\ static\ web\ content\ will\ be\ served.=URL principale in cui verr\u00e0 servito il contenuto Web statico. +Directory\ where\ static\ web\ content\ is\ located.=Directory in cui si trova il contenuto Web statico. +Root\ URL\ where\ the\ server\ will\ accept\ requests.\ This\ will\ be\ the\ prefix\ to\ all\ servlet\ URLs.=URL principale in cui il server accetter\u00e0 le richieste. Questo sar\u00e0 il prefisso di tutti gli URL servlet. +Proxy\ Base\ URL=URL di base proxy +Public\ URL\ as\ viewed\ from\ the\ outside\ when\ requests\ transit\ through\ a\ proxy\ server.=URL pubblico visualizzato dall''esterno quando le richieste transitano attraverso un server proxy. +Authentication\ Method=Metodo di autenticazione +Method\ used\ to\ authenticate\ users\ on\ this\ server=Metodo utilizzato per autenticare gli utenti su questo server +Path\ to\ a\ key\ store\ containing\ the\ certificate\ and\ keypair\ that\ this\ server\ will\ present\ to\ clients\ when\ accessed\ over\ HTTPS.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ \"javax.net.ssl.keyStore\"\ system\ property.\=Path to a key store containing the certificate and keypair that this server will present to clients when accessed over HTTPS. If this value is blank, will default to using the value of the \"javax.net.ssl.keyStore\" system property. +Alias\ for\ the\ public/private\ keypair\ within\ the\ key\ store\ that\ will\ be\ used\ to\ identify\ this\ server.=Alias \u200b\u200bper la coppia di chiavi pubblica/privata all''interno dell''archivio chiavi che verr\u00e0 utilizzata per identificare questo server. +Path\ to\ the\ TLS\ trust\ store\ that\ is\ used\ when\ client\ authentication\ is\ required.\ Ignored\ if\ client\ certificate\ authentication\ is\ not\ used.\ Certificates\ in\ this\ file\ designate\ the\ signing\ authorities\ for\ client\ certificates\ that\ will\ be\ trusted.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ \"javax.net.ssl.trustStore\"\ system\ property.\=Path to the TLS trust store that is used when client authentication is required. Ignored if client certificate authentication is not used. Certificates in this file designate the signing authorities for client certificates that will be trusted. If this value is blank, will default to using the value of the \"javax.net.ssl.trustStore\" system property. +Password\ for\ the\ trust\ store.\ Ignored\ if\ client\ certificate\ authentication\ is\ not\ used.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ \"javax.net.ssl.trustStorePassword\"\ system\ property.\=Password per l''archivio attendibile. Ignorato se non viene utilizzata l''autenticazione del certificato client. Se questo valore \u00e8 vuoto, verr\u00e0 utilizzato per impostazione predefinita il valore della propriet\u00e0 di sistema \"javax.net.ssl.trustStorePassword\". +Enable\ CORS=Abilita CORS +Enable\ generation\ of\ CORS\ headers\ to\ allow\ cross-domain\ requests\ from\ browsers=Abilita la generazione di intestazioni CORS per consentire richieste tra domini dai browser +Capabilities\ Info=Informazioni sulle capacit\u00e0 +Information\ included\ in\ the\ service\ capabilities\ document=Informazioni incluse nel documento sulle capacit\u00e0 del servizio +Enable\ HTTP\ GET=Abilita HTTP GET +Enables/disables\ HTTP\ GET\ bindings\ on\ operations\ that\ support\ it=Abilita/disabilita le associazioni HTTP GET sulle operazioni che lo supportano +Enable\ HTTP\ POST=Abilita POST HTTP +Enables/disables\ HTTP\ POST\ bindings\ on\ operations\ that\ support\ it=Abilita/disabilita associazioni HTTP POST sulle operazioni che lo supportano +Enable\ HTTP\ SOAP=Abilita SOAP HTTP +Enables/disables\ HTTP\ SOAP\ bindings\ on\ operations\ that\ support\ it=Abilita/disabilita associazioni SOAP HTTP sulle operazioni che lo supportano +Connection\ Timeout=Timeout della connessione +Reconnect\ Period=Periodo di riconnessione +Max\ Reconnect\ Attempts=Numero massimo di tentativi di riconnessione +Maximum\ number\ of\ times\ the\ client\ will\ attempt\ to\ reconnect\ when\ the\ connection\ is\ not\ available\ or\ lost.\ A\ negative\ value\ means\ that\ there\ is\ no\ limit\ to\ the\ number\ of\ reconnection\ attempts.\ Zero\ means\ not\ to\ attempt\ reconnection.=Numero massimo di volte in cui il client tenter\u00e0 di riconnettersi quando la connessione non \u00e8 disponibile o viene persa. Un valore negativo significa che non esiste alcun limite al numero di tentativi di riconnessione. Zero significa non tentare la riconnessione. +IP\ or\ DNS\ name\ of\ remote\ host=Nome IP o DNS dell''host remoto +IP\ of\ local\ network\ interface\ to\ bind\ to\ or\ 'AUTO'\ to\ select\ it\ automatically=IP dell''interfaccia di rete locale a cui collegarsi o ''''AUTO'''' per selezionarlo automaticamente +Connection\ Options=Opzioni di connessione +Serial\ port\ device\ name.\ Usually\ something\ like\ /dev/ttyXXX\ on\ Linux=Nome del dispositivo della porta seriale. Di solito qualcosa come /dev/ttyXXX su Linux +Minimum\ number\ of\ bytes\ to\ receive\ before\ they\ are\ sent\ to\ the\ caller=Numero minimo di byte da ricevere prima che vengano inviati al chiamante +Local\ port\ number\ to\ use\ on\ the\ local\ host=Numero di porta locale da utilizzare sull''host locale +Physical\ address\ of\ Bluetooth\ device\ to\ connect\ to=Indirizzo fisico del dispositivo Bluetooth a cui connettersi +Port\ number\ to\ connect\ to\ on\ remote\ host=Numero di porta a cui connettersi sull''host remoto +User\ Name=Nome utente +Remote\ user\ name=Nome utente remoto +Password=Password +Remote\ password=Password remota +Secure\ communications\ with\ SSL/TLS=Comunicazioni sicure con SSL/TLS +Enable\ to\ check\ if\ remote\ host\ is\ reachable\ before\ attempting\ further\ operations=Abilita per verificare se l''host remoto \u00e8 raggiungibile prima di tentare ulteriori operazioni +Path\ or\ resource\ or\ service\ relative\ to\ server\ root=Percorso, risorsa o servizio relativo alla radice del server +Unique\ ID\ of\ system\ group=ID univoco del gruppo di sistema +Name\ of\ system\ group=Nome del gruppo di sistema +Description\ of\ system\ group=Descrizione del gruppo di sistema +List\ of\ bundle\ repository\ URLs=Elenco degli URL del repository di bundle +A\ human\ readable\ friendly\ identifier\ for\ the\ deployment=Un identificatore leggibile dall''uomo per la distribuzione +Enable\ Landing\ Page=Abilita pagina di destinazione +Enable\ Landing\ Servlet\ to\ redirect\ users\ to\ landing\ page=Abilita il servlet di destinazione per reindirizzare gli utenti alla pagina di destinazione +Config\ Class=Classe di configurazione +Type\ of\ module\ config\ class\ for\ which\ a\ custom\ panel\ must\ be\ generated=Tipo di classe di configurazione del modulo per cui deve essere generato un pannello personalizzato +UI\ Class=Classe dell''interfaccia utente +Fully\ qualified\ name\ of\ class\ implementing\ IModuleAdminPanel=Nome completo della classe che implementa IModuleAdminPanel + +# Auto-extracted property IDs +sensorML=Sensore Ml +lastUpdated=Ultimo aggiornamento +lat=lat +lon=Lon +alt=Alt +x=X +y=Y +z=Z +heading=Intestazione +pitch=Pece +roll=Rotolo +location=Posizione +orientation=Orientamento +databaseNum=N. banca dati +enableAccessControl=Abilita il controllo degli accessi +requireAuth=Richiedi autenticazione +mimeType=Tipo mimo +className=Nome della classe +endPoint=Punto finale +id=Id +description=Descrizione +autoStart=Avvio automatico +topicName=Nome argomento +enablePublish=Abilita Pubblica +enableSubscribe=Abilita Iscriviti +protocol=Protocollo +moduleConfigPath=Percorso di configurazione del modulo +moduleDataPath=Percorso dati del modulo +commonConfig=Configurazione comune +sensors=Sensors +config=Configurazione +uniqueID=ID univoco +subsystems=Sottosistemi +dbConfig=Configurazione DB +systemUIDs=Uidi di sistema +autoPurgeConfig=Configurazione spurgo automatico +minCommitPeriod=Periodo minimo di impegno +enabled=Abilitato +purgePeriod=Periodo di eliminazione +maxRecordAge=Et\u00e0 massima della registrazione +users=Utenti +roles=Ruoli +allow=Permettere +deny=Negare +userID=ID utente +name=Nome +password=Password +certificate=Certificato +twoFactorSecret=Il segreto dei due fattori +isTwoFactorEnabled=Due fattori sono abilitati +roleID=ID ruolo +sourceDatabaseId=ID database di origine +includeFilter=Includi filtro +excludeFilter=Escludi filtro +httpPort=Porta HTTP +httpsPort=Porta HTTPS +staticDocsRootUrl=URL radice documenti statici +staticDocsRootDir=Dir. radice documenti statici +servletsRootUrl=URL radice servlet +proxyBaseUrl=URL base proxy +authMethod=Metodo di autenticazione +keyStorePath=Percorso dell''archivio chiavi +keyStorePassword=Password dell''archivio chiavi +keyAlias=Alias \u200b\u200bchiave +trustStorePath=Percorso dell''archivio attendibile +trustStorePassword=Password dell''archivio attendibile +xmlConfigFile=File di configurazione XML +enableCORS=Abilita Cors +title=Title +keywords=Parole chiave +fees=Commissioni +accessConstraints=Vincoli di accesso +serviceProvider=Fornitore di servizi +ogcCapabilitiesInfo=Informazioni sulle capacit\u00e0 OGC +enableHttpGET=Abilita la ricezione HTTP +enableHttpPOST=Abilita pubblicazione HTTP +enableSOAP=Abilita sapone +connectTimeout=Connetti Timeout +reconnectPeriod=Periodo di riconnessione +reconnectAttempts=Tentativi di riconnessione +deviceID=ID dispositivo +deviceClass=Classe del dispositivo +remoteHost=Host remoto +localAddress=Indirizzo locale +connection=Connessione +portName=Nome del porto +baudRate=Velocit\u00e0 di trasmissione +dataBits=Bit di dati +stopBits=Bit di arresto +parity=Parit\u00e0 +receiveTimeout=Ricevi timeout +receiveThreshold=Soglia di ricezione +remotePort=Porta remota +localPort=Porto locale +deviceAddress=Indirizzo del dispositivo +deviceName=Nome del dispositivo +serviceUuid=Uuid del servizio +user=Utente +enableTLS=Abilita Tls +checkReachability=Controlla la raggiungibilit\u00e0 +resourcePath=Percorso delle risorse +uid=Uid +securityRole=Ruolo di sicurezza +passwordField=Campo password +widgetSet=Insieme di widget +bundleRepoUrls=URL del repository del pacchetto +customPanels=Pannelli personalizzati +customForms=Moduli personalizzati +deploymentName=Nome della distribuzione +enableLandingPage=Abilita pagina di destinazione +configClass=Classe di configurazione +uiClass=Classe dell''interfaccia utente +moduleClass=Classe del modulo + +# Auto-extracted hardcoded UI strings +testLinks1=Collegamenti di prova +uniqueID1=ID univoco +foiIDs1=ID FOI +version1=Versione + +Connected\ Systems\ Endpoint=Endpoint dei sistemi connessi +Connected\ Systems\ endpoint\ where\ the\ requests\ are\ sent=Endpoint dei sistemi connessi a cui vengono inviate le richieste +Connection\ Settings=Impostazioni di connessione +Custom\ connector\ configurations=Configurazioni di connettori personalizzati +Custom\ provider\ configurations=Configurazioni personalizzate del fornitore +Database\ ID=Identificativo della banca dati +Default\ live\ time-out\ for\ all\ offerings,\ unless\ overriden\ by\ custom\ provider\ settings=Timeout live predefinito per tutte le offerte, a meno che non venga sostituito dalle impostazioni personalizzate del provider +Default\ live\ time-out\ for\ new\ offerings\ created\ via\ SOS-T=Timeout live predefinito per le nuove offerte create tramite SOS-T +Enable\ to\ use\ a\ persistent\ HTTP\ connection\ for\ InsertResult=Abilita l''utilizzo di una connessione HTTP persistente per InsertResult +Execution\ period\ of\ the\ purge\ policy\ (in\ seconds)=Periodo di esecuzione della politica di eliminazione (in secondi) +Filtered\ view\ to\ select\ systems\ exposed\ as\ read-only\ through\ this\ service=Visualizzazione filtrata per selezionare i sistemi esposti come di sola lettura tramite questo servizio +Filtered\ view\ to\ select\ systems/datastreams\ to\ register\ with\ Connected\ Systems=Visualizzazione filtrata per selezionare sistemi/flussi di dati da registrare con Connected Systems +Filtered\ view\ to\ select\ systems/datastreams\ to\ register\ with\ remote\ SOS=Visualizzazione filtrata per selezionare sistemi/flussi di dati da registrare con SOS remoto +Fixed\ system\ location\ in\ EPSG\ 4979\ (WGS84)\ coordinate\ system=Posizione fissa del sistema nel sistema di coordinate EPSG 4979 (WGS84). +For\ each\ connection\ or\ reconnection\ attempt,\ the\ client\ will\ wait\ for\ the\ remote\ side\ to\ respond\ until\ this\ timeout\ expires\ (in\ ms)=Per ogni tentativo di connessione o riconnessione, il client attender\u00e0 la risposta del lato remoto fino alla scadenza di questo timeout (in ms) +Heading\ (or\ yaw)\ angle\ about\ Z\ axis\ in\ degrees=Angolo di rotta (o imbardata) attorno all''asse Z in gradi +How\ long\ the\ client\ will\ wait\ after\ connection\ is\ lost\ before\ it\ will\ attempt\ to\ reconnect\ (in\ ms)=Quanto tempo il client attender\u00e0 dopo la perdita della connessione prima di tentare di riconnettersi (in ms) +ID\ Generator=Generatore di identit\u00e0 +ID\ of\ database\ module\ used\ for\ persisting\ data\ received\ by\ this\ service.\ If\ none\ is\ provided,\ new\ systems\ registered\ through\ this\ service\ will\ be\ available\ on\ the\ hub,\ but\ with\ no\ persistence\ guarantee\ across\ restarts.=ID del modulo database utilizzato per rendere persistenti i dati ricevuti da questo servizio. Se non ne viene fornito alcuno, i nuovi sistemi registrati tramite questo servizio saranno disponibili sull''hub, ma senza garanzia di persistenza tra i riavvii. +ID\ of\ database\ module\ used\ for\ persisting\ data\ received\ by\ this\ service.\ If\ none\ is\ provided,\ new\ systems\ registered\ through\ this\ service\ will\ be\ available\ on\ the\ hub,\ but\ with\ no\ persistence\ guarantee\ across\ restarts.\ Only\ the\ latest\ observation\ from\ each\ datastream\ will\ be\ available\ and\ older\ observations\ will\ be\ discarded=ID del modulo database utilizzato per rendere persistenti i dati ricevuti da questo servizio. Se non ne viene fornito alcuno, i nuovi sistemi registrati tramite questo servizio saranno disponibili sull''hub, ma senza garanzia di persistenza tra i riavvii. Sar\u00e0 disponibile solo l''ultima osservazione di ciascun flusso di dati e le osservazioni pi\u00f9 vecchie verranno scartate +Individual\ configuration\ of\ sensors\ in\ the\ array\ (will\ override\ common\ configuration)=Configurazione individuale dei sensori nell''array (annuller\u00e0 la configurazione comune) +List\ of\ observed\ properties\ URI\ to\ make\ available\ as\ outputs=Elenco delle propriet\u00e0 osservate URI da rendere disponibili come output +Mapping\ of\ custom\ formats\ mime-types\ to\ custom\ serializer\ classes=Mappatura di formati personalizzati, tipi MIME e classi di serializzatori personalizzati +Mappings\ used\ by\ CURIE\ to\ URI\ resolver=Mappature utilizzate da CURIE al risolutore URI +Max\ Limit=Limite massimo +Max\ Observations\ Returned=Numero massimo di osservazioni restituite +Max\ Records\ Returned=Restituiti i record massimi +Max\ delay\ between\ auto-commit\ execution,\ in\ seconds.\ 0\ to\ disable\ time-based\ auto-commit=Ritardo massimo tra l''esecuzione del commit automatico, in secondi. 0 per disabilitare il commit automatico basato sul tempo +Maximum\ age\ of\ data\ to\ be\ kept\ in\ storage\ (in\ seconds)=Et\u00e0 massima dei dati da conservare in archivio (in secondi) +Maximum\ number\ of\ FoI\ IDs\ listed\ in\ capabilities=Numero massimo di ID FoI elencati nelle funzionalit\u00e0 +Maximum\ number\ of\ observations\ returned\ \ by\ a\ historical\ GetObservation\ request\ (for\ each\ selected\ offering)=Numero massimo di osservazioni restituite da una richiesta GetObservation storica (per ciascuna offerta selezionata) +Maximum\ number\ of\ records\ in\ upload\ queue\ (used\ to\ compensate\ for\ variable\ bandwidth)=Numero massimo di record nella coda di caricamento (utilizzato per compensare la larghezza di banda variabile) +Maximum\ number\ of\ resources\ returned\ in\ a\ single\ page=Numero massimo di risorse restituite in una singola pagina +Maximum\ number\ of\ result\ records\ returned\ by\ a\ historical\ GetResult\ request=Numero massimo di record di risultati restituiti da una richiesta GetResult cronologica +Maximum\ number\ of\ stream\ errors\ before\ we\ try\ to\ reconnect\ to\ remote\ server=Numero massimo di errori di flusso prima del tentativo di riconnettersi al server remoto +Memory\ cache\ size\ for\ page\ chunks,\ in\ KB=Dimensioni della cache di memoria per blocchi di pagina, in KB +Metadata\ of\ system\ group\ that\ will\ be\ created\ to\ contain\ all\ procedures/sensors\ registered\ through\ this\ service.\ Only\ sensors\ in\ this\ group\ will\ be\ modifiable\ by\ this\ service=Metadati del gruppo di sistemi che verranno creati per contenere tutte le procedure/sensori registrati tramite questo servizio. Solo i sensori di questo gruppo saranno modificabili da questo servizio +Metadata\ of\ system\ group\ that\ will\ be\ created\ to\ contain\ all\ systems\ registered\ through\ this\ service.\ Only\ systems\ in\ this\ group\ will\ be\ modifiable\ by\ this\ service=Metadati del gruppo di sistemi che verranno creati per contenere tutti i sistemi registrati tramite questo servizio. Solo i sistemi di questo gruppo saranno modificabili da questo servizio +Method\ used\ to\ generate\ new\ resource\ IDs=Metodo utilizzato per generare nuovi ID risorsa +Minimum\ fillrate\ above\ which\ auto\ compact\ operations\ may\ be\ triggered=Tasso di riempimento minimo al di sopra del quale possono essere attivate le operazioni di compattazione automatica +Minimum\ period\ between\ database\ commits\ (in\ ms)=Periodo minimo tra i commit del database (in ms) +Names\ of\ datastreams\ whose\ data\ will\ be\ hidden\ from\ the\ SOS.\ If\ this\ is\ null,\ all\ streams\ produced\ by\ the\ procedure\ are\ exposed=Nomi dei flussi di dati i cui dati verranno nascosti dall''SOS. Se \u00e8 nullo, vengono esposti tutti i flussi prodotti dalla procedura +Observed\ Properties=Propriet\u00e0 osservate +Offering\ URI\ as\ exposed\ in\ capabilities.\ (if\ null,\ the\ procedure\ UID\ is\ used)=Offerta dell''URI come esposto nelle funzionalit\u00e0. (se nullo viene utilizzato l''UID della procedura) +Offering\ description\ (if\ null,\ it\ will\ be\ auto-generated)=Descrizione dell''offerta (se nulla, verr\u00e0 generata automaticamente) +Offering\ name\ (if\ null,\ the\ procedure\ name\ is\ used)=Nome dell''offerta (se nullo, viene utilizzato il nome della procedura) +Orientation\ as\ Euler\ angles\ in\ NED\ coordinate\ reference\ frame.\nOrder\ of\ rotations\ is\ z-y\u2019-x"\ (in\ rotating\ frame)\ or\ x-y-z\ (in\ fixed\ frame)=Orientamento come angoli di Eulero nel sistema di riferimento delle coordinate NED.\nL''ordine delle rotazioni \u00e8 z-y''-x" (nel telaio rotante) o x-y-z (nel telaio fisso) +Password\ for\ the\ key\ store\ (and\ for\ the\ keypair\ within\ the\ keystore).\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ "javax.net.ssl.keyStorePassword"\ system\ property.\ This\ value\ can\ use\ variable\ expansion\ expressions\ of\ the\ form\ "$${name}"\ (for\ environment\ variables\ and\ system\ properties)\ or\ "$${file;/path/to/file}"\ (for\ secret\ file\ contents).=Password per l''archivio chiavi (e per la coppia di chiavi all''interno dell''archivio chiavi). Se questo valore \u00e8 vuoto, verr\u00e0 utilizzato per impostazione predefinita il valore della propriet\u00e0 di sistema "javax.net.ssl.keyStorePassword". Questo valore pu\u00f2 utilizzare espressioni di espansione variabile nel formato "$${nome}" (per variabili di ambiente e propriet\u00e0 di sistema) o "$${file;/percorso/al/file}" (per contenuti di file segreti). +Password\ for\ the\ trust\ store.\ Ignored\ if\ client\ certificate\ authentication\ is\ not\ used.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ "javax.net.ssl.trustStorePassword"\ system\ property.\ This\ value\ can\ use\ variable\ expansion\ expressions\ of\ the\ form\ "$${name}"\ (for\ environment\ variables\ and\ system\ properties)\ or\ "$${file;/path/to/file}"\ (for\ secret\ file\ contents).=Password per l''archivio attendibile. Ignorato se non viene utilizzata l''autenticazione del certificato client. Se questo valore \u00e8 vuoto, verr\u00e0 utilizzato per impostazione predefinita il valore della propriet\u00e0 di sistema "javax.net.ssl.trustStorePassword". Questo valore pu\u00f2 utilizzare espressioni di espansione variabile nel formato "$${nome}" (per variabili di ambiente e propriet\u00e0 di sistema) o "$${file;/percorso/al/file}" (per contenuti di file segreti). +Path\ of\ service\ endpoint\ relative\ to\ the\ context\ URL\ (e.g.\ http\://server.net/sensorhub)=Percorso dell''endpoint del servizio relativo all''URL del contesto (es. http://server.net/sensorhub) +Path\ to\ a\ key\ store\ containing\ the\ certificate\ and\ keypair\ that\ this\ server\ will\ present\ to\ clients\ when\ accessed\ over\ HTTPS.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ "javax.net.ssl.keyStore"\ system\ property.\ This\ value\ can\ use\ variable\ expansion\ expressions\ of\ the\ form\ "$${name}"\ (for\ environment\ variables\ and\ system\ properties)\ or\ "$${file;/path/to/file}"\ (for\ secret\ file\ contents).=Percorso di un archivio chiavi contenente il certificato e la coppia di chiavi che questo server presenter\u00e0 ai client quando si accede tramite HTTPS. Se questo valore \u00e8 vuoto, verr\u00e0 utilizzato per impostazione predefinita il valore della propriet\u00e0 di sistema "javax.net.ssl.keyStore". Questo valore pu\u00f2 utilizzare espressioni di espansione variabile nel formato "$${nome}" (per variabili di ambiente e propriet\u00e0 di sistema) o "$${file;/percorso/al/file}" (per contenuti di file segreti). +Path\ to\ database\ file=Percorso del file di database +Path\ to\ external\ config\ file\ (in\ Jetty\ IOC\ XML\ format)=Percorso del file di configurazione esterno (in formato Jetty IOC XML) +Path\ to\ the\ TLS\ trust\ store\ that\ is\ used\ when\ client\ authentication\ is\ required.\ Ignored\ if\ client\ certificate\ authentication\ is\ not\ used.\ Certificates\ in\ this\ file\ designate\ the\ signing\ authorities\ for\ client\ certificates\ that\ will\ be\ trusted.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ "javax.net.ssl.trustStore"\ system\ property.\ This\ value\ can\ use\ variable\ expansion\ expressions\ of\ the\ form\ "$${name}"\ (for\ environment\ variables\ and\ system\ properties)\ or\ "$${file;/path/to/file}"\ (for\ secret\ file\ contents).=Percorso dell''archivio attendibilit\u00e0 TLS utilizzato quando \u00e8 richiesta l''autenticazione del client. Ignorato se non viene utilizzata l''autenticazione del certificato client. I certificati in questo file designano le autorit\u00e0 di firma per i certificati client che verranno considerati attendibili. Se questo valore \u00e8 vuoto, verr\u00e0 utilizzato per impostazione predefinita il valore della propriet\u00e0 di sistema "javax.net.ssl.trustStore". Questo valore pu\u00f2 utilizzare espressioni di espansione variabile nel formato "$${nome}" (per variabili di ambiente e propriet\u00e0 di sistema) o "$${file;/percorso/al/file}" (per contenuti di file segreti). +Port\ number\ to\ connect\ to\ on\ remote\ host\ (0\ to\ automatically\ select\ a\ port)=Numero di porta a cui connettersi sull''host remoto (0 per selezionare automaticamente una porta) +SOS\ Endpoint=Punto terminale SOS +SOS\ endpoint\ to\ fetch\ data\ from=Endpoint SOS da cui recuperare i dati +SOS\ endpoint\ where\ the\ requests\ are\ sent=Endpoint SOS a cui vengono inviate le richieste +SPS\ Endpoint=Endpoint SPS +SPS\ endpoint\ to\ send\ commands\ to=Endpoint SPS a cui inviare comandi +Security\ related\ options=Opzioni relative alla sicurezza +Sensor\ UID=UID del sensore +Set\ if\ WebSocket\ protocol\ should\ be\ used\ to\ get\ streaming\ data\ from\ SOS=Imposta se il protocollo WebSocket deve essere utilizzato per ottenere dati in streaming da SOS +Set\ if\ offering\ is\ enabled,\ unset\ if\ disabled=Impostato se l''offerta \u00e8 abilitata, deselezionato se disabilitata +Set\ if\ websockets\ protocol\ should\ be\ used\ to\ send\ commands\ to\ SPS=Imposta se il protocollo websocket deve essere utilizzato per inviare comandi a SPS +Set\ to\ compact\ the\ database\ file\ when\ the\ database\ module\ is\ stopped\ or\ restarted=Impostato per compattare il file di database quando il modulo database viene arrestato o riavviato +Set\ to\ compress\ underlying\ file\ storage=Impostato per comprimere l''archivio file sottostante +Set\ to\ display\ MVStore\ debug\ info\ when\ database\ is\ closed\ (only\ if\ DEBUG\ log\ is\ also\ enabled)=Impostato per visualizzare le informazioni di debug di MVStore quando il database viene chiuso (solo se \u00e8 abilitato anche il registro DEBUG) +Set\ to\ enable\ spatial\ indexing\ of\ individual\ observations\ sampling\ locations\ (when\ provided)=Impostato per abilitare l''indicizzazione spaziale delle posizioni di campionamento delle singole osservazioni (se fornita) +Set\ to\ open\ the\ database\ as\ read-only=Imposta per aprire il database in sola lettura +Set\ to\ true\ to\ enable\ transactional\ operation\ support=Impostato su true per abilitare il supporto delle operazioni transazionali +Size\ of\ the\ auto-commit\ write\ buffer,\ in\ KB=Dimensioni del buffer di scrittura con commit automatico, in KB +TCP\ port\ where\ server\ will\ listen\ for\ secure\ HTTP\ (HTTPS)\ connections\ (use\ 0\ to\ disable\ HTTPS).=Porta TCP dove il server ascolter\u00e0 le connessioni HTTP sicure (HTTPS) (utilizzare 0 per disabilitare HTTPS). +TCP\ port\ where\ server\ will\ listen\ for\ unsecure\ HTTP\ connections\ (use\ 0\ to\ disable\ HTTP).=Porta TCP dove il server ascolter\u00e0 le connessioni HTTP non sicure (utilizzare 0 per disabilitare HTTP). +Time-out\ after\ which\ real-time\ requests\ are\ disabled\ if\ no\ more\ measurements\ are\ received\ (in\ seconds).\ Real-time\ is\ reactivated\ as\ soon\ as\ new\ records\ start\ being\ received\ again=Timeout trascorso il quale le richieste in tempo reale vengono disabilitate se non vengono pi\u00f9 ricevute misurazioni (in secondi). Il tempo reale viene riattivato non appena iniziano a essere ricevuti nuovi record +Time-out\ period\ after\ which\ a\ template\ ID\ reserved\ using\ InsertResultTemplate\ will\ expire\ if\ not\ used\ in\ InsertResult\ requests\ (in\ seconds)=Periodo di timeout dopo il quale un ID modello prenotato utilizzando InsertResultTemplate scadr\u00e0 se non utilizzato nelle richieste InsertResult (in secondi) +Timeout\ after\ which\ data\ is\ released\ to\ the\ caller\ if\ at\ least\ one\ byte\ was\ received\ (in\ ms)=Timeout dopo il quale i dati vengono rilasciati al chiamante se \u00e8 stato ricevuto almeno un byte (in ms) +URI\ Prefix\ Map=Mappa dei prefissi URI +Unique\ ID\ (full\ URN\ or\ only\ suffix)\ to\ use\ for\ the\ sensor\ system\ or\ 'auto'\ to\ use\ the\ UUID\ randomly\ generated\ the\ first\ time\ the\ module\ is\ initialized=ID univoco (URN completo o solo suffisso) da utilizzare per il sistema di sensori o "auto" per utilizzare l''UUID generato in modo casuale la prima volta che il modulo viene inizializzato +Unique\ ID\ of\ a\ system\ that\ this\ configuration\ applies\ to.\nCan\ include\ a\ trailing\ wildcard\ '*'\ to\ match\ several\ systems\ at\ once.=ID univoco di un sistema a cui si applica questa configurazione.\nPu\u00f2 includere un carattere jolly finale "*" per abbinare pi\u00f9 sistemi contemporaneamente. +Unique\ ID\ of\ sensor\ to\ connect\ to\ on\ SOS\ and\ SPS\ servers=ID univoco del sensore a cui connettersi sui server SOS e SPS +Unique\ ID\ of\ system\ that\ this\ configuration\ applies\ to.\nCan\ include\ a\ trailing\ wildcard\ '*'\ to\ match\ several\ systems\ at\ once.=ID univoco del sistema a cui si applica questa configurazione.\nPu\u00f2 includere un carattere jolly finale "*" per abbinare pi\u00f9 sistemi contemporaneamente. +Use\ WebSockets\ for\ SOS=Utilizza WebSocket per SOS +Use\ WebSockets\ for\ SPS=Utilizza WebSocket per SPS + +Node\ ID=ID del nodo +Stats\ Frequency\ (min)=Frequenza statistiche (min) +Database\ URL=URL della banca dati +Database\ Name=Nome della banca dati +ID\ Generator=Generatore di identit\u00e0 +Database\ Number=Numero della banca dati +Remote\ Host=Host remoto +Remote\ Port=Porta remota +Lane\ Width\ (m)=Larghezza corsia (m) +Enable\ EML\ Analysis=Abilita analisi EML +Is\ Collimated=\u00c8 collimato +Stream\ Path=Percorso del flusso +Lane\ Options\ Config=Configurazione opzioni corsia diff --git a/sensorhub-webui-core/src/main/resources/org/sensorhub/ui/i18n/messages_ja.properties b/sensorhub-webui-core/src/main/resources/org/sensorhub/ui/i18n/messages_ja.properties new file mode 100644 index 0000000000..c35c832878 --- /dev/null +++ b/sensorhub-webui-core/src/main/resources/org/sensorhub/ui/i18n/messages_ja.properties @@ -0,0 +1,543 @@ +app.title=\u30aa\u30fc\u30d7\u30f3\u30bb\u30f3\u30b5\u30fc\u30cf\u30d6 +tab.sensors=\u30bb\u30f3\u30b5\u30fc +tab.databases=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9 +tab.processing=\u51e6\u7406 +tab.services=\u30b5\u30fc\u30d3\u30b9 +tab.clients=\u30af\u30e9\u30a4\u30a2\u30f3\u30c8 +tab.network=\u30cd\u30c3\u30c8\u30ef\u30fc\u30af +tab.security=\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3 +action.shutdown=\u30b7\u30e3\u30c3\u30c8\u30c0\u30a6\u30f3 +action.logout=\u30ed\u30b0\u30a2\u30a6\u30c8 +action.save=\u4fdd\u5b58 +action.addModule=\u30e2\u30b8\u30e5\u30fc\u30eb\u3092\u8ffd\u52a0 +action.addSubmodule=\u30b5\u30d6\u30e2\u30b8\u30e5\u30fc\u30eb\u3092\u8ffd\u52a0 +action.removeModule=\u30e2\u30b8\u30e5\u30fc\u30eb\u3092\u524a\u9664 +action.removeSubmodule=\u30b5\u30d6\u30e2\u30b8\u30e5\u30fc\u30eb\u3092\u524a\u9664 +action.start=\u958b\u59cb +action.stop=\u505c\u6b62 +action.restart=\u518d\u8d77\u52d5 +action.forceInit=\u5f37\u5236\u521d\u671f\u5316 +action.selectAll=\u3059\u3079\u3066\u9078\u629e +action.deselectAll=\u9078\u629e\u89e3\u9664 +dialog.shutdown.title=\u30b7\u30e3\u30c3\u30c8\u30c0\u30a6\u30f3\u3092\u958b\u59cb... +dialog.shutdown.message=UI\u304c\u5fdc\u7b54\u3057\u306a\u304f\u306a\u308a\u307e\u3059 +dialog.shutdown.confirm=\u30bb\u30f3\u30b5\u30fc\u30cf\u30d6\u3092\u30b7\u30e3\u30c3\u30c8\u30c0\u30a6\u30f3\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b\uff1f +dialog.logout.confirm=\u30ed\u30b0\u30a2\u30a6\u30c8\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b\uff1f +dialog.save.confirm=\u8a2d\u5b9a\u3092\u4fdd\u5b58\uff08\u4e0a\u66f8\u304d\uff09\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b\uff1f +msg.configSaved=SensorHub\u8a2d\u5b9a\u3092\u4fdd\u5b58\u3057\u307e\u3057\u305f +msg.configSaveError=\u8a2d\u5b9a\u3092\u4fdd\u5b58\u3067\u304d\u307e\u305b\u3093 +dialog.remove.confirm={0} \u3092\u524a\u9664\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b\uff1f
\u3059\u3079\u3066\u306e\u8a2d\u5b9a\u304c\u5931\u308f\u308c\u307e\u3059\u3002 +msg.removeError={0} \u3092\u524a\u9664\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f +msg.startError={0} \u3092\u958b\u59cb\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f +msg.stopError={0} \u3092\u505c\u6b62\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f +msg.restartError={0} \u3092\u518d\u8d77\u52d5\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f +msg.reinitError={0} \u3092\u518d\u521d\u671f\u5316\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f +msg.loadError=\u30e2\u30b8\u30e5\u30fc\u30eb\u3092\u8aad\u307f\u8fbc\u3081\u307e\u305b\u3093 +msg.addSubmoduleError=\u30b5\u30d6\u30e2\u30b8\u30e5\u30fc\u30eb\u3092\u8ffd\u52a0\u3067\u304d\u307e\u305b\u3093 +about.title=OpenSensorHub\u306b\u3064\u3044\u3066 +about.desc=\u30b9\u30de\u30fc\u30c8\u30bb\u30f3\u30b5\u30fc\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u3068IoT\u3092\u69cb\u7bc9\u3059\u308b\u305f\u3081\u306e\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0 +about.license=Mozilla Public License v2.0 \u306e\u4e0b\u3067\u30e9\u30a4\u30bb\u30f3\u30b9\u3055\u308c\u3066\u3044\u307e\u3059 +about.version=\u30d0\u30fc\u30b8\u30e7\u30f3: +about.build=\u30d3\u30eb\u30c9\u756a\u53f7: +about.deployment=\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u540d: +tooltip.shutdown=SensorHub\u3092\u30b7\u30e3\u30c3\u30c8\u30c0\u30a6\u30f3 +tooltip.logout=OSH\u30ce\u30fc\u30c9\u304b\u3089\u30ed\u30b0\u30a2\u30a6\u30c8 +tooltip.save=SensorHub\u8a2d\u5b9a\u3092\u4fdd\u5b58 +dialog.start.confirm={0} \u3092\u958b\u59cb\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b\uff1f +dialog.stop.confirm={0} \u3092\u505c\u6b62\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b\uff1f +dialog.restart.confirm={0} \u3092\u518d\u8d77\u52d5\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b\uff1f +dialog.reinit.confirm={0} \u306e\u518d\u521d\u671f\u5316\u3092\u5f37\u5236\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b\uff1f +backgroundUpdate=\u30d0\u30c3\u30af\u30b0\u30e9\u30a6\u30f3\u30c9\u66f4\u65b0 +sigmaThreshold=\u30b7\u30b0\u30de\u95be\u5024 +nuclideIdentification=\u6838\u7a2e\u8b58\u5225 +tamperAlarm=\u30bf\u30f3\u30d1\u30fc\u30a2\u30e9\u30fc\u30e0 +occupancySensor=\u5728\u5ba4\u30bb\u30f3\u30b5\u30fc +stateOfHealth=\u5065\u5168\u6027\u72b6\u614b +soh=\u30bd\u30fc +1ScanThisQrCodeWithYourAuthenticatorApp=1. \u8a8d\u8a3c\u30a2\u30d7\u30ea\u3067\u3053\u306e QR \u30b3\u30fc\u30c9\u3092\u30b9\u30ad\u30e3\u30f3\u3057\u307e\u3059\u3002 +2EnterThe6digitCodeGeneratedByTheApp=2. \u30a2\u30d7\u30ea\u306b\u3088\u3063\u3066\u751f\u6210\u3055\u308c\u305f 6 \u6841\u306e\u30b3\u30fc\u30c9\u3092\u5165\u529b\u3057\u307e\u3059\u3002 +orEnterThisSecretKeyManually=\u307e\u305f\u306f\u3001\u3053\u306e\u79d8\u5bc6\u30ad\u30fc\u3092\u624b\u52d5\u3067\u5165\u529b\u3057\u307e\u3059\u3002 +loadingBundlesInformation=\u30d0\u30f3\u30c9\u30eb\u60c5\u5831\u3092\u8aad\u307f\u8fbc\u3093\u3067\u3044\u307e\u3059... +loadingPackageInformation=\u30d1\u30c3\u30b1\u30fc\u30b8\u60c5\u5831\u3092\u30ed\u30fc\u30c9\u4e2d... +arrayComponentNotSupported=\u914d\u5217\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093 +twofactorAuthentication=\u4e8c\u8981\u7d20\u8a8d\u8a3c +installMorePackages=\u3055\u3089\u306b\u30d1\u30c3\u30b1\u30fc\u30b8\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb... +errorGeneratingQrCode=QR\u30b3\u30fc\u30c9\u751f\u6210\u30a8\u30e9\u30fc +installMoreModules=\u3055\u3089\u306b\u30e2\u30b8\u30e5\u30fc\u30eb\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb... +detailedInstructions=\u8a73\u7d30\u306a\u624b\u9806 +availableNetworks=\u5229\u7528\u53ef\u80fd\u306a\u30cd\u30c3\u30c8\u30ef\u30fc\u30af +processParameters=\u30d7\u30ed\u30bb\u30b9\u30d1\u30e9\u30e1\u30fc\u30bf +verifyAndEnable=\u78ba\u8a8d\u3057\u3066\u6709\u52b9\u306b\u3059\u308b +dataSourceInfo=\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u60c5\u5831 +detectedDevices=\u691c\u51fa\u3055\u308c\u305f\u30c7\u30d0\u30a4\u30b9 +installSelected=\u9078\u629e\u3057\u305f\u3082\u306e\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb +databaseContent=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u30b3\u30f3\u30c6\u30f3\u30c4 +itemsPerPage=\u30da\u30fc\u30b8\u3054\u3068\u306e\u9805\u76ee: +commandInputs=\u30b3\u30de\u30f3\u30c9\u5165\u529b +processInputs=\u30d7\u30ed\u30bb\u30b9\u5165\u529b +providerClass=\u30d7\u30ed\u30d0\u30a4\u30c0\u30fc\u30af\u30e9\u30b9 +processName=\u30d7\u30ed\u30bb\u30b9\u540d: +configuration=\u69cb\u6210 +applyChanges=\u5909\u66f4\u3092\u9069\u7528\u3059\u308b +sendCommand=\u9001\u4fe1\u30b3\u30de\u30f3\u30c9 +useAddress=\u30a2\u30c9\u30ec\u30b9\u3092\u4f7f\u7528\u3059\u308b +selectNone=\u306a\u3057\u3092\u9078\u629e\u3057\u307e\u3059 +timeRange=\u6642\u9593\u7bc4\u56f2: +permissions=\u6a29\u9650 +startScan=\u30b9\u30ad\u30e3\u30f3\u306e\u958b\u59cb +noReadme=README \u306a\u3057 +stopScan=\u30b9\u30ad\u30e3\u30f3\u306e\u505c\u6b62 +reset2fa=2FA \u3092\u30ea\u30bb\u30c3\u30c8 +previous=\u524d\u306e +useName=\u540d\u524d\u3092\u4f7f\u7528\u3059\u308b +outputs=\u51fa\u529b +refresh=\u30ea\u30d5\u30ec\u30c3\u30b7\u30e5 +modify=\u4fee\u6b63\u3059\u308b +cancel=\u30ad\u30e3\u30f3\u30bb\u30eb +logout=\u30ed\u30b0\u30a2\u30a6\u30c8 +remove=\u53d6\u308a\u9664\u304f +verify=\u78ba\u8a8d\u3059\u308b +first=\u521d\u3081 +login=\u30ed\u30b0\u30a4\u30f3 +last=\u6700\u5f8c +view=\u30d3\u30e5\u30fc +next=\u6b21 +stop=\u505c\u6b62 +add=\u8ffd\u52a0 +ui.empty=< +ok=\u308f\u304b\u308a\u307e\u3057\u305f +1ScanThisQrCodeWithYourAuthenticatorApp1=1. \u8a8d\u8a3c\u30a2\u30d7\u30ea\u3067\u3053\u306e QR \u30b3\u30fc\u30c9\u3092\u30b9\u30ad\u30e3\u30f3\u3057\u307e\u3059\u3002 +2EnterThe6digitCodeGeneratedByTheApp1=2. \u30a2\u30d7\u30ea\u306b\u3088\u3063\u3066\u751f\u6210\u3055\u308c\u305f 6 \u6841\u306e\u30b3\u30fc\u30c9\u3092\u5165\u529b\u3057\u307e\u3059\u3002 +orEnterThisSecretKeyManually1=\u307e\u305f\u306f\u3001\u3053\u306e\u79d8\u5bc6\u30ad\u30fc\u3092\u624b\u52d5\u3067\u5165\u529b\u3057\u307e\u3059\u3002 +loadingPackageInformation1=\u30d1\u30c3\u30b1\u30fc\u30b8\u60c5\u5831\u3092\u30ed\u30fc\u30c9\u4e2d... +loadingBundlesInformation1=\u30d0\u30f3\u30c9\u30eb\u60c5\u5831\u3092\u8aad\u307f\u8fbc\u3093\u3067\u3044\u307e\u3059... +arrayComponentNotSupported1=\u914d\u5217\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093 +twofactorAuthentication1=\u4e8c\u8981\u7d20\u8a8d\u8a3c +errorGeneratingQrCode1=QR\u30b3\u30fc\u30c9\u751f\u6210\u30a8\u30e9\u30fc +installMorePackages1=\u3055\u3089\u306b\u30d1\u30c3\u30b1\u30fc\u30b8\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb... +installMoreModules1=\u3055\u3089\u306b\u30e2\u30b8\u30e5\u30fc\u30eb\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb... +detailedInstructions1=\u8a73\u7d30\u306a\u624b\u9806 +processParameters1=\u30d7\u30ed\u30bb\u30b9\u30d1\u30e9\u30e1\u30fc\u30bf +availableNetworks1=\u5229\u7528\u53ef\u80fd\u306a\u30cd\u30c3\u30c8\u30ef\u30fc\u30af +verifyAndEnable1=\u78ba\u8a8d\u3057\u3066\u6709\u52b9\u306b\u3059\u308b +databaseContent1=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u30b3\u30f3\u30c6\u30f3\u30c4 +installSelected1=\u9078\u629e\u3057\u305f\u3082\u306e\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb +dataSourceInfo1=\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u60c5\u5831 +detectedDevices1=\u691c\u51fa\u3055\u308c\u305f\u30c7\u30d0\u30a4\u30b9 +itemsPerPage1=\u30da\u30fc\u30b8\u3054\u3068\u306e\u9805\u76ee: +processInputs1=\u30d7\u30ed\u30bb\u30b9\u5165\u529b +commandInputs1=\u30b3\u30de\u30f3\u30c9\u5165\u529b +providerClass1=\u30d7\u30ed\u30d0\u30a4\u30c0\u30fc\u30af\u30e9\u30b9 +configuration1=\u69cb\u6210 +processName1=\u30d7\u30ed\u30bb\u30b9\u540d: +applyChanges1=\u5909\u66f4\u3092\u9069\u7528\u3059\u308b +sendCommand1=\u9001\u4fe1\u30b3\u30de\u30f3\u30c9 +timeRange1=\u6642\u9593\u7bc4\u56f2: +useAddress1=\u30a2\u30c9\u30ec\u30b9\u3092\u4f7f\u7528\u3059\u308b +permissions1=\u6a29\u9650 +selectNone1=\u306a\u3057\u3092\u9078\u629e\u3057\u307e\u3059 +startScan1=\u30b9\u30ad\u30e3\u30f3\u306e\u958b\u59cb +noReadme1=README \u306a\u3057 +reset2fa1=2FA \u3092\u30ea\u30bb\u30c3\u30c8 +stopScan1=\u30b9\u30ad\u30e3\u30f3\u306e\u505c\u6b62 +useName1=\u540d\u524d\u3092\u4f7f\u7528\u3059\u308b +previous1=\u524d\u306e +refresh1=\u30ea\u30d5\u30ec\u30c3\u30b7\u30e5 +outputs1=\u51fa\u529b +cancel1=\u30ad\u30e3\u30f3\u30bb\u30eb +logout1=\u30ed\u30b0\u30a2\u30a6\u30c8 +modify1=\u4fee\u6b63\u3059\u308b +remove1=\u53d6\u308a\u9664\u304f +verify1=\u78ba\u8a8d\u3059\u308b +first1=\u521d\u3081 +login1=\u30ed\u30b0\u30a4\u30f3 +view1=\u30d3\u30e5\u30fc +stop1=\u505c\u6b62 +next1=\u6b21 +last1=\u6700\u5f8c +add1=\u8ffd\u52a0 +last2=>> +first2=<< +ok1=\u308f\u304b\u308a\u307e\u3057\u305f +next2=> +previous2=< + +pleaseEnterAUserIDFirst1=\u6700\u521d\u306b\u30e6\u30fc\u30b6\u30fc ID \u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044 +reset2FA1=2FA \u3092\u30ea\u30bb\u30c3\u30c8 +enable2FA1=2FA \u3092\u6709\u52b9\u306b\u3059\u308b +twoFAEnabledSuccessfully1=2FA \u304c\u6b63\u5e38\u306b\u6709\u52b9\u306b\u306a\u308a\u307e\u3057\u305f +invalidCode1=\u7121\u52b9\u306a\u30b3\u30fc\u30c9 +allowedAndDeniedPermissionsForUsersWithThisRole1=\u3053\u306e\u30ed\u30fc\u30eb\u3092\u6301\u3064\u30e6\u30fc\u30b6\u30fc\u306b\u5bfe\u3059\u308b\u8a31\u53ef\u304a\u3088\u3073\u62d2\u5426\u3055\u308c\u305f\u30a2\u30af\u30bb\u30b9\u8a31\u53ef +manualEntry1=\u624b\u52d5\u5165\u529b +toggleAutoRefreshDataOncePerSecond1=\u30c7\u30fc\u30bf\u306e\u81ea\u52d5\u66f4\u65b0\u3092 1 \u79d2\u306b 1 \u56de\u5207\u308a\u66ff\u3048\u307e\u3059 +lookupSystem1=\u30eb\u30c3\u30af\u30a2\u30c3\u30d7\u30b7\u30b9\u30c6\u30e0 +lookupModule1=\u30eb\u30c3\u30af\u30a2\u30c3\u30d7\u30e2\u30b8\u30e5\u30fc\u30eb +lookupAddress1=\u30eb\u30c3\u30af\u30a2\u30c3\u30d7\u30a2\u30c9\u30ec\u30b9 +showPassword1=\u30d1\u30b9\u30ef\u30fc\u30c9\u3092\u8868\u793a +showHistogram1=\u30d2\u30b9\u30c8\u30b0\u30e9\u30e0\u3092\u8868\u793a +hideHistogram1=\u30d2\u30b9\u30c8\u30b0\u30e9\u30e0\u3092\u96a0\u3059 +reloadDataFromDatabase1=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u304b\u3089\u30c7\u30fc\u30bf\u3092\u30ea\u30ed\u30fc\u30c9\u3059\u308b +fois1=FOI +username1=\u30e6\u30fc\u30b6\u30fc\u540d +password1=\u30d1\u30b9\u30ef\u30fc\u30c9 +loginFailed1=\u30ed\u30b0\u30a4\u30f3\u306b\u5931\u6557\u3057\u307e\u3057\u305f +invalidUsernameOrPassword1=\u7121\u52b9\u306a\u30e6\u30fc\u30b6\u30fc\u540d\u307e\u305f\u306f\u30d1\u30b9\u30ef\u30fc\u30c9 +verificationCode1=\u691c\u8a3c\u30b3\u30fc\u30c9 +verificationFailed1=\u691c\u8a3c\u306b\u5931\u6557\u3057\u307e\u3057\u305f +datasource1=\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9 +process1=\u30d7\u30ed\u30bb\u30b9 +logoutFromOshNode1=OSH\u30ce\u30fc\u30c9\u304b\u3089\u30ed\u30b0\u30a2\u30a6\u30c8\u3059\u308b +setParameter1=\u30d1\u30e9\u30e1\u30fc\u30bf\u306e\u8a2d\u5b9a +setupTwoFactorAuthentication1=2 \u8981\u7d20\u8a8d\u8a3c\u306e\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7 + +action.new_item=\u65b0\u3057\u3044{0} +Lane\ System=\u30ec\u30fc\u30f3\u30b7\u30b9\u30c6\u30e0 +Module\ Class=\u30e2\u30b8\u30e5\u30fc\u30eb\u30af\u30e9\u30b9 +Module\ Name=\u30e2\u30b8\u30e5\u30fc\u30eb\u540d +Module\ ID=\u30e2\u30b8\u30e5\u30fc\u30ebID +Description=\u8aac\u660e +SensorML\ URL=\u30bb\u30f3\u30b5\u30fcML\u306eURL +UniqueID=\u56fa\u6709ID +Last\ Updated=\u6700\u7d42\u66f4\u65b0\u65e5 +Auto\ Start=\u81ea\u52d5\u958b\u59cb +Delete\ Data\ on\ Lane\ Removal=\u30ec\u30fc\u30f3\u524a\u9664\u6642\u306e\u30c7\u30fc\u30bf\u306e\u524a\u9664 +Latitude=\u7def\u5ea6 +Longitude=\u7d4c\u5ea6 +Altitude=\u9ad8\u5ea6 +Initial\ RPM\ Config=\u521d\u671f RPM \u69cb\u6210 +Initial\ Camera\ Config=\u30ab\u30e1\u30e9\u306e\u521d\u671f\u8a2d\u5b9a +Lane\ Options\ Config=\u30ec\u30fc\u30f3\u30aa\u30d7\u30b7\u30e7\u30f3\u8a2d\u5b9a +tab.general=\u4e00\u822c\u7684\u306a +tab.readme=\u304a\u8aad\u307f\u304f\u3060\u3055\u3044 +Fixed\ Location=\u56fa\u5b9a\u4f4d\u7f6e +Fixed\ Orientation=\u56fa\u5b9a\u65b9\u5411 +# Auto-extracted DisplayInfo labels and descriptions +URL\ of\ SensorML\ file\ providing\ the\ base\ description\ of\ the\ sensor=\u30bb\u30f3\u30b5\u30fc\u306e\u57fa\u672c\u7684\u306a\u8aac\u660e\u3092\u63d0\u4f9b\u3059\u308b SensorML \u30d5\u30a1\u30a4\u30eb\u306e URL +Time\ at\ which\ the\ SensorML\ description\ was\ last\ updated=SensorML \u306e\u8aac\u660e\u304c\u6700\u5f8c\u306b\u66f4\u65b0\u3055\u308c\u305f\u6642\u523b +Geodetic\ latitude,\ in\ degrees=\u6e2c\u5730\u7def\u5ea6 (\u5ea6\u5358\u4f4d) +Longitude,\ in\ degrees=\u7d4c\u5ea6 (\u5ea6\u5358\u4f4d) +Height\ above\ ellipsoid,\ in\ meters=\u6955\u5186\u4f53\u4e0a\u306e\u9ad8\u3055 (\u30e1\u30fc\u30c8\u30eb\u5358\u4f4d) +X\ coordinate,\ in\ meters=X \u5ea7\u6a19 (\u30e1\u30fc\u30c8\u30eb\u5358\u4f4d) +Y\ coordinate,\ in\ meters=Y \u5ea7\u6a19 (\u30e1\u30fc\u30c8\u30eb\u5358\u4f4d) +Z\ coordinate,\ in\ meters=Z \u5ea7\u6a19 (\u30e1\u30fc\u30c8\u30eb\u5358\u4f4d) +Pitch\ angle\ about\ Y\ axis,\ in\ degrees=Y \u8ef8\u3092\u4e2d\u5fc3\u3068\u3057\u305f\u30d4\u30c3\u30c1\u89d2 (\u5ea6\u5358\u4f4d) +Roll\ angle\ about\ X\ axis,\ in\ degrees=X \u8ef8\u3092\u4e2d\u5fc3\u3068\u3057\u305f\u30ed\u30fc\u30eb\u89d2\u5ea6 (\u5ea6\u5358\u4f4d) +Location\ in\ EPSG\:4979\ coordinate\ reference\ frame=EPSG \u3067\u306e\u4f4d\u7f6e:4979 \u5ea7\u6a19\u53c2\u7167\u30d5\u30ec\u30fc\u30e0 +Database\ Number=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u756a\u53f7 +Numerical\ identifier\ of\ the\ database.\ Each\ database\ that\ should\ be\ exposed\ via\ the\ federated\ database\ API\ must\ have\ a\ unique\ number\ on\ the\ sensor\ hub.\ If\ visibility\ through\ the\ federated\ database\ is\ not\ desired,\ it\ can\ be\ omitted.=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u6570\u5024\u8b58\u5225\u5b50\u3002\u30d5\u30a7\u30c7\u30ec\u30fc\u30b7\u30e7\u30f3 \u30c7\u30fc\u30bf\u30d9\u30fc\u30b9 API \u7d4c\u7531\u3067\u516c\u958b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u5404\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u306f\u3001\u30bb\u30f3\u30b5\u30fc \u30cf\u30d6\u4e0a\u3067\u4e00\u610f\u306e\u756a\u53f7\u304c\u5fc5\u8981\u3067\u3059\u3002\u30d5\u30a7\u30c7\u30ec\u30fc\u30c6\u30c3\u30c9\u30fb\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u4ecb\u3057\u305f\u53ef\u8996\u6027\u304c\u671b\u307e\u3057\u304f\u306a\u3044\u5834\u5408\u306f\u3001\u7701\u7565\u3067\u304d\u307e\u3059\u3002 +Enables\ fine-grained\ permission-based\ access\ control\ for\ this\ module=\u3053\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u306b\u5bfe\u3057\u3066\u3001\u304d\u3081\u7d30\u304b\u3044\u6a29\u9650\u30d9\u30fc\u30b9\u306e\u30a2\u30af\u30bb\u30b9\u5236\u5fa1\u3092\u6709\u52b9\u306b\u3057\u307e\u3059 +Require\ Authentication=\u8a8d\u8a3c\u304c\u5fc5\u8981 +Set\ to\ require\ remote\ users\ to\ be\ authentified\ before\ they\ can\ use\ this\ service=\u30ea\u30e2\u30fc\u30c8 \u30e6\u30fc\u30b6\u30fc\u304c\u3053\u306e\u30b5\u30fc\u30d3\u30b9\u3092\u4f7f\u7528\u3059\u308b\u524d\u306b\u8a8d\u8a3c\u3092\u8981\u6c42\u3059\u308b\u3088\u3046\u306b\u8a2d\u5b9a\u3057\u307e\u3059 +Endpoint=\u7d42\u70b9 +Unique\ local\ ID\ of\ the\ module=\u30e2\u30b8\u30e5\u30fc\u30eb\u306e\u4e00\u610f\u306e\u30ed\u30fc\u30ab\u30eb ID +User\ description\ for\ the\ module=\u30e2\u30b8\u30e5\u30fc\u30eb\u306e\u30e6\u30fc\u30b6\u30fc\u8aac\u660e +Set\ to\ automatically\ start\ the\ module\ when\ it\ is\ loaded=\u30e2\u30b8\u30e5\u30fc\u30eb\u304c\u30ed\u30fc\u30c9\u3055\u308c\u305f\u3068\u304d\u306b\u30e2\u30b8\u30e5\u30fc\u30eb\u3092\u81ea\u52d5\u7684\u306b\u8d77\u52d5\u3059\u308b\u3088\u3046\u306b\u8a2d\u5b9a\u3057\u307e\u3059 +Module\ implementation\ class=\u30e2\u30b8\u30e5\u30fc\u30eb\u5b9f\u88c5\u30af\u30e9\u30b9 +User\ chosen\ name\ for\ the\ module=\u30e6\u30fc\u30b6\u30fc\u304c\u9078\u629e\u3057\u305f\u30e2\u30b8\u30e5\u30fc\u30eb\u306e\u540d\u524d +Name\ of\ topic/queue\ to\ use=\u4f7f\u7528\u3059\u308b\u30c8\u30d4\u30c3\u30af/\u30ad\u30e5\u30fc\u306e\u540d\u524d +Enable/disable\ writing\ to\ queue=\u30ad\u30e5\u30fc\u3078\u306e\u66f8\u304d\u8fbc\u307f\u3092\u6709\u52b9/\u7121\u52b9\u306b\u3059\u308b +Enable/disable\ reading\ from\ queue=\u30ad\u30e5\u30fc\u304b\u3089\u306e\u8aad\u307f\u53d6\u308a\u3092\u6709\u52b9/\u7121\u52b9\u306b\u3059\u308b +Protocol\ Options=\u30d7\u30ed\u30c8\u30b3\u30eb\u30aa\u30d7\u30b7\u30e7\u30f3 +Common\ Configuration=\u5171\u901a\u69cb\u6210 +Common\ configuration\ for\ sensors\ in\ the\ array=\u30a2\u30ec\u30a4\u5185\u306e\u30bb\u30f3\u30b5\u30fc\u306e\u5171\u901a\u69cb\u6210 +Sensors\ Configuration=\u30bb\u30f3\u30b5\u30fc\u69cb\u6210 +Subsystem\ Config=\u30b5\u30d6\u30b7\u30b9\u30c6\u30e0\u69cb\u6210 +Configuration\ of\ the\ subsystem=\u30b5\u30d6\u30b7\u30b9\u30c6\u30e0\u306e\u69cb\u6210 +Relative\ Location=\u76f8\u5bfe\u4f4d\u7f6e +Location\ of\ this\ subsystem\ relative\ to\ the\ main\ system\ or\ platform\ reference\ frame=\u30e1\u30a4\u30f3 \u30b7\u30b9\u30c6\u30e0\u307e\u305f\u306f\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u306e\u57fa\u6e96\u30d5\u30ec\u30fc\u30e0\u306b\u5bfe\u3059\u308b\u3053\u306e\u30b5\u30d6\u30b7\u30b9\u30c6\u30e0\u306e\u4f4d\u7f6e +Relative\ Orientation=\u76f8\u5bfe\u7684\u306a\u65b9\u5411 +Orientation\ of\ this\ subsystem\ relative\ to\ the\ main\ system\ or\ platform\ reference\ frame=\u30e1\u30a4\u30f3 \u30b7\u30b9\u30c6\u30e0\u307e\u305f\u306f\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u306e\u57fa\u6e96\u30d5\u30ec\u30fc\u30e0\u306b\u5bfe\u3059\u308b\u3053\u306e\u30b5\u30d6\u30b7\u30b9\u30c6\u30e0\u306e\u65b9\u5411 +Fixed\ system\ orientation\ in\ the\ local\ NED\ reference\ frame=\u30ed\u30fc\u30ab\u30eb NED \u53c2\u7167\u30d5\u30ec\u30fc\u30e0\u3067\u306e\u30b7\u30b9\u30c6\u30e0\u306e\u5411\u304d\u3092\u4fee\u6b63 +Subsystems=\u30b5\u30d6\u30b7\u30b9\u30c6\u30e0 +Configuration\ of\ components\ of\ this\ sensor\ system=\u672c\u30bb\u30f3\u30b5\u30fc\u30b7\u30b9\u30c6\u30e0\u306e\u69cb\u6210\u8981\u7d20\u306e\u69cb\u6210 +Database\ Config=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u69cb\u6210 +Configuration\ of\ underlying\ database=\u57fa\u76e4\u3068\u306a\u308b\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u69cb\u6210 +System\ UIDs=\u30b7\u30b9\u30c6\u30e0UID +Unique\ IDs\ of\ system\ drivers\ handled\ by\ this\ database=\u3053\u306e\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u304c\u6271\u3046\u30b7\u30b9\u30c6\u30e0\u30c9\u30e9\u30a4\u30d0\u30fc\u306e\u4e00\u610f\u306eID +Automatic\ Purge\ Policy=\u81ea\u52d5\u30d1\u30fc\u30b8\u30dd\u30ea\u30b7\u30fc +Policy\ for\ automatically\ purging\ historical\ data=\u5c65\u6b74\u30c7\u30fc\u30bf\u3092\u81ea\u52d5\u7684\u306b\u524a\u9664\u3059\u308b\u30dd\u30ea\u30b7\u30fc +Uncheck\ to\ disable\ auto-purge\ temporarily=\u81ea\u52d5\u30d1\u30fc\u30b8\u3092\u4e00\u6642\u7684\u306b\u7121\u52b9\u306b\u3059\u308b\u306b\u306f\u30c1\u30a7\u30c3\u30af\u3092\u5916\u3057\u307e\u3059 +Purge\ Execution\ Period=\u30d1\u30fc\u30b8\u5b9f\u884c\u671f\u9593 +Unique\ IDs\ of\ system\ drivers\ to\ purge=\u30d1\u30fc\u30b8\u3059\u308b\u30b7\u30b9\u30c6\u30e0\u30c9\u30e9\u30a4\u30d0\u30fc\u306e\u4e00\u610f\u306eID +Max\ Record\ Age=\u6700\u5927\u30ec\u30b3\u30fc\u30c9\u671f\u9593 +SensorML\ File=SensorML \u30d5\u30a1\u30a4\u30eb +Path\ of\ SensorML\ description\ of\ the\ process=\u30d7\u30ed\u30bb\u30b9\u306eSensorML\u8a18\u8ff0\u306e\u30d1\u30b9 +List\ of\ users\ allowed\ access\ to\ this\ system=\u3053\u306e\u30b7\u30b9\u30c6\u30e0\u3078\u306e\u30a2\u30af\u30bb\u30b9\u3092\u8a31\u53ef\u3055\u308c\u3066\u3044\u308b\u30e6\u30fc\u30b6\u30fc\u306e\u30ea\u30b9\u30c8 +List\ of\ security\ roles=\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30ed\u30fc\u30eb\u306e\u30ea\u30b9\u30c8 +User\ ID=\u30e6\u30fc\u30b6\u30fcID +Role\ ID=\u30ed\u30fc\u30ebID +Source\ Database\ ID=\u30bd\u30fc\u30b9\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9ID +ID\ of\ database\ module\ to\ read\ data\ from\ (Federated\ database\ will\ be\ used\ if\ not\ set=\u30c7\u30fc\u30bf\u3092\u8aad\u307f\u53d6\u308b\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9 \u30e2\u30b8\u30e5\u30fc\u30eb\u306e ID (\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u306a\u3044\u5834\u5408\u306f\u30d5\u30a7\u30c7\u30ec\u30fc\u30c6\u30c3\u30c9 \u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u304c\u4f7f\u7528\u3055\u308c\u307e\u3059) +HTTP\ Port=HTTP\u30dd\u30fc\u30c8 +HTTPS\ Port=HTTPS\u30dd\u30fc\u30c8 +Root\ URL\ where\ static\ web\ content\ will\ be\ served.=\u9759\u7684 Web \u30b3\u30f3\u30c6\u30f3\u30c4\u304c\u63d0\u4f9b\u3055\u308c\u308b\u30eb\u30fc\u30c8 URL\u3002 +Directory\ where\ static\ web\ content\ is\ located.=\u9759\u7684 Web \u30b3\u30f3\u30c6\u30f3\u30c4\u304c\u914d\u7f6e\u3055\u308c\u308b\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3002 +Root\ URL\ where\ the\ server\ will\ accept\ requests.\ This\ will\ be\ the\ prefix\ to\ all\ servlet\ URLs.=\u30b5\u30fc\u30d0\u30fc\u304c\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u53d7\u3051\u5165\u308c\u308b\u30eb\u30fc\u30c8 URL\u3002\u3053\u308c\u306f\u3001\u3059\u3079\u3066\u306e\u30b5\u30fc\u30d6\u30ec\u30c3\u30c8 URL \u306e\u30d7\u30ec\u30d5\u30a3\u30c3\u30af\u30b9\u306b\u306a\u308a\u307e\u3059\u3002 +Proxy\ Base\ URL=\u30d7\u30ed\u30ad\u30b7\u30d9\u30fc\u30b9URL +Public\ URL\ as\ viewed\ from\ the\ outside\ when\ requests\ transit\ through\ a\ proxy\ server.=\u30ea\u30af\u30a8\u30b9\u30c8\u304c\u30d7\u30ed\u30ad\u30b7 \u30b5\u30fc\u30d0\u30fc\u3092\u901a\u904e\u3059\u308b\u3068\u304d\u306b\u5916\u90e8\u304b\u3089\u898b\u3048\u308b\u30d1\u30d6\u30ea\u30c3\u30af URL\u3002 +Authentication\ Method=\u8a8d\u8a3c\u65b9\u6cd5 +Method\ used\ to\ authenticate\ users\ on\ this\ server=\u3053\u306e\u30b5\u30fc\u30d0\u30fc\u3067\u30e6\u30fc\u30b6\u30fc\u3092\u8a8d\u8a3c\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u308b\u65b9\u6cd5 +Path\ to\ a\ key\ store\ containing\ the\ certificate\ and\ keypair\ that\ this\ server\ will\ present\ to\ clients\ when\ accessed\ over\ HTTPS.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ \"javax.net.ssl.keyStore\"\ system\ property.\=Path to a key store containing the certificate and keypair that this server will present to clients when accessed over HTTPS. If this value is blank, will default to using the value of the \"javax.net.ssl.keyStore\" system property. +Alias\ for\ the\ public/private\ keypair\ within\ the\ key\ store\ that\ will\ be\ used\ to\ identify\ this\ server.=\u3053\u306e\u30b5\u30fc\u30d0\u30fc\u3092\u8b58\u5225\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u308b\u3001\u30ad\u30fc \u30b9\u30c8\u30a2\u5185\u306e\u516c\u958b\u30ad\u30fc/\u79d8\u5bc6\u30ad\u30fc\u306e\u30da\u30a2\u306e\u30a8\u30a4\u30ea\u30a2\u30b9\u3002 +Path\ to\ the\ TLS\ trust\ store\ that\ is\ used\ when\ client\ authentication\ is\ required.\ Ignored\ if\ client\ certificate\ authentication\ is\ not\ used.\ Certificates\ in\ this\ file\ designate\ the\ signing\ authorities\ for\ client\ certificates\ that\ will\ be\ trusted.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ \"javax.net.ssl.trustStore\"\ system\ property.\=Path to the TLS trust store that is used when client authentication is required. Ignored if client certificate authentication is not used. Certificates in this file designate the signing authorities for client certificates that will be trusted. If this value is blank, will default to using the value of the \"javax.net.ssl.trustStore\" system property. +Password\ for\ the\ trust\ store.\ Ignored\ if\ client\ certificate\ authentication\ is\ not\ used.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ \"javax.net.ssl.trustStorePassword\"\ system\ property.\=Password for the trust store. Ignored if client certificate authentication is not used. If this value is blank, will default to using the value of the \"javax.net.ssl.trustStorePassword\" system property. +Enable\ CORS=CORS \u3092\u6709\u52b9\u306b\u3059\u308b +Enable\ generation\ of\ CORS\ headers\ to\ allow\ cross-domain\ requests\ from\ browsers=CORS \u30d8\u30c3\u30c0\u30fc\u306e\u751f\u6210\u3092\u6709\u52b9\u306b\u3057\u3066\u3001\u30d6\u30e9\u30a6\u30b6\u30fc\u304b\u3089\u306e\u30af\u30ed\u30b9\u30c9\u30e1\u30a4\u30f3\u8981\u6c42\u3092\u8a31\u53ef\u3057\u307e\u3059\u3002 +Capabilities\ Info=\u6a5f\u80fd\u60c5\u5831 +Information\ included\ in\ the\ service\ capabilities\ document=\u30b5\u30fc\u30d3\u30b9\u6a5f\u80fd\u6587\u66f8\u306b\u542b\u307e\u308c\u308b\u60c5\u5831 +Enable\ HTTP\ GET=HTTP GET\u3092\u6709\u52b9\u306b\u3059\u308b +Enables/disables\ HTTP\ GET\ bindings\ on\ operations\ that\ support\ it=HTTP GET \u30d0\u30a4\u30f3\u30c7\u30a3\u30f3\u30b0\u3092\u30b5\u30dd\u30fc\u30c8\u3059\u308b\u64cd\u4f5c\u3067\u305d\u308c\u3092\u6709\u52b9\u307e\u305f\u306f\u7121\u52b9\u306b\u3057\u307e\u3059\u3002 +Enable\ HTTP\ POST=HTTP POST\u3092\u6709\u52b9\u306b\u3059\u308b +Enables/disables\ HTTP\ POST\ bindings\ on\ operations\ that\ support\ it=HTTP POST \u30d0\u30a4\u30f3\u30c7\u30a3\u30f3\u30b0\u3092\u30b5\u30dd\u30fc\u30c8\u3059\u308b\u64cd\u4f5c\u3067\u305d\u308c\u3092\u6709\u52b9\u307e\u305f\u306f\u7121\u52b9\u306b\u3057\u307e\u3059\u3002 +Enable\ HTTP\ SOAP=HTTP SOAP \u3092\u6709\u52b9\u306b\u3059\u308b +Enables/disables\ HTTP\ SOAP\ bindings\ on\ operations\ that\ support\ it=HTTP SOAP \u30d0\u30a4\u30f3\u30c7\u30a3\u30f3\u30b0\u3092\u30b5\u30dd\u30fc\u30c8\u3059\u308b\u64cd\u4f5c\u3067\u305d\u308c\u3092\u6709\u52b9\u307e\u305f\u306f\u7121\u52b9\u306b\u3057\u307e\u3059\u3002 +Connection\ Timeout=\u63a5\u7d9a\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8 +Reconnect\ Period=\u518d\u63a5\u7d9a\u671f\u9593 +Max\ Reconnect\ Attempts=\u6700\u5927\u518d\u63a5\u7d9a\u8a66\u884c\u56de\u6570 +Maximum\ number\ of\ times\ the\ client\ will\ attempt\ to\ reconnect\ when\ the\ connection\ is\ not\ available\ or\ lost.\ A\ negative\ value\ means\ that\ there\ is\ no\ limit\ to\ the\ number\ of\ reconnection\ attempts.\ Zero\ means\ not\ to\ attempt\ reconnection.=\u63a5\u7d9a\u304c\u5229\u7528\u3067\u304d\u306a\u3044\u304b\u5931\u308f\u308c\u305f\u5834\u5408\u306b\u3001\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u304c\u518d\u63a5\u7d9a\u3092\u8a66\u884c\u3059\u308b\u6700\u5927\u56de\u6570\u3002\u8ca0\u306e\u5024\u306f\u3001\u518d\u63a5\u7d9a\u306e\u8a66\u884c\u56de\u6570\u306b\u5236\u9650\u304c\u306a\u3044\u3053\u3068\u3092\u610f\u5473\u3057\u307e\u3059\u3002\u30bc\u30ed\u306f\u3001\u518d\u63a5\u7d9a\u3092\u8a66\u884c\u3057\u306a\u3044\u3053\u3068\u3092\u610f\u5473\u3057\u307e\u3059\u3002 +IP\ or\ DNS\ name\ of\ remote\ host=\u30ea\u30e2\u30fc\u30c8\u30db\u30b9\u30c8\u306eIP\u307e\u305f\u306fDNS\u540d +IP\ of\ local\ network\ interface\ to\ bind\ to\ or\ 'AUTO'\ to\ select\ it\ automatically=\u30d0\u30a4\u30f3\u30c9\u5148\u306e\u30ed\u30fc\u30ab\u30eb \u30cd\u30c3\u30c8\u30ef\u30fc\u30af \u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30a4\u30b9\u306e IP\u3001\u307e\u305f\u306f\u81ea\u52d5\u7684\u306b\u9078\u629e\u3059\u308b\u5834\u5408\u306f ''''AUTO'''' +Connection\ Options=\u63a5\u7d9a\u30aa\u30d7\u30b7\u30e7\u30f3 +Serial\ port\ device\ name.\ Usually\ something\ like\ /dev/ttyXXX\ on\ Linux=\u30b7\u30ea\u30a2\u30eb\u30dd\u30fc\u30c8\u306e\u30c7\u30d0\u30a4\u30b9\u540d\u3002\u901a\u5e38\u3001Linux \u3067\u306f /dev/ttyXXX \u306e\u3088\u3046\u306a\u3082\u306e +Minimum\ number\ of\ bytes\ to\ receive\ before\ they\ are\ sent\ to\ the\ caller=\u547c\u3073\u51fa\u3057\u5143\u306b\u9001\u4fe1\u3055\u308c\u308b\u307e\u3067\u306b\u53d7\u4fe1\u3059\u308b\u6700\u5c0f\u30d0\u30a4\u30c8\u6570 +Local\ port\ number\ to\ use\ on\ the\ local\ host=\u30ed\u30fc\u30ab\u30eb\u30db\u30b9\u30c8\u3067\u4f7f\u7528\u3059\u308b\u30ed\u30fc\u30ab\u30eb\u30dd\u30fc\u30c8\u756a\u53f7 +Physical\ address\ of\ Bluetooth\ device\ to\ connect\ to=\u63a5\u7d9a\u5148\u306e Bluetooth \u30c7\u30d0\u30a4\u30b9\u306e\u7269\u7406\u30a2\u30c9\u30ec\u30b9 +Port\ number\ to\ connect\ to\ on\ remote\ host=\u30ea\u30e2\u30fc\u30c8\u30db\u30b9\u30c8\u3067\u63a5\u7d9a\u3059\u308b\u30dd\u30fc\u30c8\u756a\u53f7 +User\ Name=\u30e6\u30fc\u30b6\u30fc\u540d +Remote\ user\ name=\u30ea\u30e2\u30fc\u30c8\u30e6\u30fc\u30b6\u30fc\u540d +Password=\u30d1\u30b9\u30ef\u30fc\u30c9 +Remote\ password=\u30ea\u30e2\u30fc\u30c8\u30d1\u30b9\u30ef\u30fc\u30c9 +Secure\ communications\ with\ SSL/TLS=SSL/TLS\u306b\u3088\u308b\u5b89\u5168\u306a\u901a\u4fe1 +Enable\ to\ check\ if\ remote\ host\ is\ reachable\ before\ attempting\ further\ operations=\u3055\u3089\u306a\u308b\u64cd\u4f5c\u3092\u8a66\u884c\u3059\u308b\u524d\u306b\u3001\u30ea\u30e2\u30fc\u30c8 \u30db\u30b9\u30c8\u304c\u5230\u9054\u53ef\u80fd\u304b\u3069\u3046\u304b\u3092\u78ba\u8a8d\u3067\u304d\u308b\u3088\u3046\u306b\u3057\u307e\u3059\u3002 +Path\ or\ resource\ or\ service\ relative\ to\ server\ root=\u30b5\u30fc\u30d0\u30fc\u30eb\u30fc\u30c8\u306b\u76f8\u5bfe\u7684\u306a\u30d1\u30b9\u3001\u30ea\u30bd\u30fc\u30b9\u3001\u307e\u305f\u306f\u30b5\u30fc\u30d3\u30b9 +Unique\ ID\ of\ system\ group=\u30b7\u30b9\u30c6\u30e0\u30b0\u30eb\u30fc\u30d7\u306e\u4e00\u610f\u306eID +Name\ of\ system\ group=\u30b7\u30b9\u30c6\u30e0\u30b0\u30eb\u30fc\u30d7\u540d +Description\ of\ system\ group=\u30b7\u30b9\u30c6\u30e0\u30b0\u30eb\u30fc\u30d7\u306e\u8aac\u660e +List\ of\ bundle\ repository\ URLs=\u30d0\u30f3\u30c9\u30eb \u30ea\u30dd\u30b8\u30c8\u30ea URL \u306e\u30ea\u30b9\u30c8 +A\ human\ readable\ friendly\ identifier\ for\ the\ deployment=\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u306e\u305f\u3081\u306e\u4eba\u304c\u5224\u8aad\u3067\u304d\u308b\u30d5\u30ec\u30f3\u30c9\u30ea\u30fc\u306a\u8b58\u5225\u5b50 +Enable\ Landing\ Page=\u30e9\u30f3\u30c7\u30a3\u30f3\u30b0 \u30da\u30fc\u30b8\u3092\u6709\u52b9\u306b\u3059\u308b +Enable\ Landing\ Servlet\ to\ redirect\ users\ to\ landing\ page=\u30e9\u30f3\u30c7\u30a3\u30f3\u30b0 \u30b5\u30fc\u30d6\u30ec\u30c3\u30c8\u3092\u6709\u52b9\u306b\u3057\u3066\u30e6\u30fc\u30b6\u30fc\u3092\u30e9\u30f3\u30c7\u30a3\u30f3\u30b0 \u30da\u30fc\u30b8\u306b\u30ea\u30c0\u30a4\u30ec\u30af\u30c8\u3059\u308b +Config\ Class=\u69cb\u6210\u30af\u30e9\u30b9 +Type\ of\ module\ config\ class\ for\ which\ a\ custom\ panel\ must\ be\ generated=\u30ab\u30b9\u30bf\u30e0 \u30d1\u30cd\u30eb\u3092\u751f\u6210\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u30e2\u30b8\u30e5\u30fc\u30eb\u69cb\u6210\u30af\u30e9\u30b9\u306e\u30bf\u30a4\u30d7 +UI\ Class=UI\u30af\u30e9\u30b9 +Fully\ qualified\ name\ of\ class\ implementing\ IModuleAdminPanel=IModuleAdminPanel \u3092\u5b9f\u88c5\u3059\u308b\u30af\u30e9\u30b9\u306e\u5b8c\u5168\u4fee\u98fe\u540d + +# Auto-extracted property IDs +sensorML=\u30bb\u30f3\u30b5\u30fcML +lastUpdated=\u6700\u7d42\u66f4\u65b0\u65e5 +lat=\u7def\u5ea6 +lon=\u30ed\u30f3 +alt=\u30aa\u30eb\u30bf\u30ca\u30c6\u30a3\u30d6 +x=\u00d7 +y=Y +z=Z +heading=\u898b\u51fa\u3057 +pitch=\u30d4\u30c3\u30c1 +roll=\u30ed\u30fc\u30eb +location=\u4f4d\u7f6e +orientation=\u5411\u304d +databaseNum=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u756a\u53f7 +enableAccessControl=\u30a2\u30af\u30bb\u30b9\u5236\u5fa1\u3092\u6709\u52b9\u306b\u3059\u308b +requireAuth=\u8a8d\u8a3c\u304c\u5fc5\u8981 +mimeType=MIME \u30bf\u30a4\u30d7 +className=\u30af\u30e9\u30b9\u540d +endPoint=\u7d42\u70b9 +id=ID +description=\u8aac\u660e +autoStart=\u81ea\u52d5\u30b9\u30bf\u30fc\u30c8 +topicName=\u30c8\u30d4\u30c3\u30af\u540d +enablePublish=\u30d1\u30d6\u30ea\u30c3\u30b7\u30e5\u3092\u6709\u52b9\u306b\u3059\u308b +enableSubscribe=\u8cfc\u8aad\u3092\u6709\u52b9\u306b\u3059\u308b +protocol=\u30d7\u30ed\u30c8\u30b3\u30eb +moduleConfigPath=\u30e2\u30b8\u30e5\u30fc\u30eb\u69cb\u6210\u30d1\u30b9 +moduleDataPath=\u30e2\u30b8\u30e5\u30fc\u30eb\u306e\u30c7\u30fc\u30bf\u30d1\u30b9 +commonConfig=\u5171\u901a\u69cb\u6210 +sensors=Sensors +config=\u69cb\u6210 +uniqueID=\u4e00\u610f\u306e ID +subsystems=\u30b5\u30d6\u30b7\u30b9\u30c6\u30e0 +dbConfig=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u69cb\u6210 +systemUIDs=\u30b7\u30b9\u30c6\u30e0UID +autoPurgeConfig=\u81ea\u52d5\u30d1\u30fc\u30b8\u69cb\u6210 +minCommitPeriod=\u6700\u5c0f\u30b3\u30df\u30c3\u30c8\u671f\u9593 +enabled=\u6709\u52b9 +purgePeriod=\u30d1\u30fc\u30b8\u671f\u9593 +maxRecordAge=\u6700\u5927\u30ec\u30b3\u30fc\u30c9\u671f\u9593 +users=\u30e6\u30fc\u30b6\u30fc +roles=\u5f79\u5272 +allow=\u8a31\u53ef\u3059\u308b +deny=\u62d2\u5426 +userID=\u30e6\u30fc\u30b6\u30fcID +name=\u540d\u524d +password=\u30d1\u30b9\u30ef\u30fc\u30c9 +certificate=\u8a3c\u660e\u66f8 +twoFactorSecret=\u30c4\u30fc\u30d5\u30a1\u30af\u30bf\u30fc\u30b7\u30fc\u30af\u30ec\u30c3\u30c8 +isTwoFactorEnabled=2\u8981\u7d20\u306f\u6709\u52b9\u3067\u3059\u304b +roleID=\u30ed\u30fc\u30ebID +sourceDatabaseId=\u30bd\u30fc\u30b9\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9ID +includeFilter=\u30d5\u30a3\u30eb\u30bf\u30fc\u3092\u542b\u3081\u308b +excludeFilter=\u9664\u5916\u30d5\u30a3\u30eb\u30bf\u30fc +httpPort=HTTP\u30dd\u30fc\u30c8 +httpsPort=HTTPS\u30dd\u30fc\u30c8 +staticDocsRootUrl=\u9759\u7684\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u306e\u30eb\u30fc\u30c8 URL +staticDocsRootDir=\u9759\u7684\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u306e\u30eb\u30fc\u30c8 \u30c7\u30a3\u30ec\u30af\u30c8\u30ea +servletsRootUrl=\u30b5\u30fc\u30d6\u30ec\u30c3\u30c8\u306e\u30eb\u30fc\u30c8 URL +proxyBaseUrl=\u30d7\u30ed\u30ad\u30b7\u30d9\u30fc\u30b9URL +authMethod=\u8a8d\u8a3c\u65b9\u6cd5 +keyStorePath=\u30ad\u30fc\u30b9\u30c8\u30a2\u306e\u30d1\u30b9 +keyStorePassword=\u30ad\u30fc\u30b9\u30c8\u30a2\u306e\u30d1\u30b9\u30ef\u30fc\u30c9 +keyAlias=\u30ad\u30fc\u306e\u5225\u540d +trustStorePath=\u30c8\u30e9\u30b9\u30c8\u30b9\u30c8\u30a2\u30d1\u30b9 +trustStorePassword=\u30c8\u30e9\u30b9\u30c8\u30b9\u30c8\u30a2\u306e\u30d1\u30b9\u30ef\u30fc\u30c9 +xmlConfigFile=XML \u69cb\u6210\u30d5\u30a1\u30a4\u30eb +enableCORS=Cors\u3092\u6709\u52b9\u306b\u3059\u308b +title=Title +keywords=\u30ad\u30fc\u30ef\u30fc\u30c9 +fees=\u6599\u91d1 +accessConstraints=\u30a2\u30af\u30bb\u30b9\u5236\u7d04 +serviceProvider=\u30b5\u30fc\u30d3\u30b9\u30d7\u30ed\u30d0\u30a4\u30c0\u30fc +ogcCapabilitiesInfo=OGC \u306e\u6a5f\u80fd\u60c5\u5831 +enableHttpGET=HTTP\u53d6\u5f97\u3092\u6709\u52b9\u306b\u3059\u308b +enableHttpPOST=HTTP \u6295\u7a3f\u3092\u6709\u52b9\u306b\u3059\u308b +enableSOAP=\u77f3\u9e78\u3092\u6709\u52b9\u306b\u3059\u308b +connectTimeout=\u63a5\u7d9a\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8 +reconnectPeriod=\u518d\u63a5\u7d9a\u671f\u9593 +reconnectAttempts=\u518d\u63a5\u7d9a\u306e\u8a66\u884c +deviceID=\u30c7\u30d0\u30a4\u30b9ID +deviceClass=\u30c7\u30d0\u30a4\u30b9\u30af\u30e9\u30b9 +remoteHost=\u30ea\u30e2\u30fc\u30c8\u30db\u30b9\u30c8 +localAddress=\u30ed\u30fc\u30ab\u30eb\u30a2\u30c9\u30ec\u30b9 +connection=\u7e4b\u304c\u308a +portName=\u30dd\u30fc\u30c8\u540d +baudRate=\u30dc\u30fc\u30ec\u30fc\u30c8 +dataBits=\u30c7\u30fc\u30bf\u30d3\u30c3\u30c8 +stopBits=\u30b9\u30c8\u30c3\u30d7\u30d3\u30c3\u30c8 +parity=\u30d1\u30ea\u30c6\u30a3 +receiveTimeout=\u53d7\u4fe1\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8 +receiveThreshold=\u53d7\u4fe1\u3057\u304d\u3044\u5024 +remotePort=\u30ea\u30e2\u30fc\u30c8\u30dd\u30fc\u30c8 +localPort=\u30ed\u30fc\u30ab\u30eb\u30dd\u30fc\u30c8 +deviceAddress=\u30c7\u30d0\u30a4\u30b9\u30a2\u30c9\u30ec\u30b9 +deviceName=\u30c7\u30d0\u30a4\u30b9\u540d +serviceUuid=\u30b5\u30fc\u30d3\u30b9UID +user=\u30e6\u30fc\u30b6\u30fc +enableTLS=TLS\u3092\u6709\u52b9\u306b\u3059\u308b +checkReachability=\u5230\u9054\u53ef\u80fd\u6027\u306e\u78ba\u8a8d +resourcePath=\u30ea\u30bd\u30fc\u30b9\u30d1\u30b9 +uid=\u30a6\u30a4\u30c9 +securityRole=\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u306e\u5f79\u5272 +passwordField=\u30d1\u30b9\u30ef\u30fc\u30c9\u30d5\u30a3\u30fc\u30eb\u30c9 +widgetSet=\u30a6\u30a3\u30b8\u30a7\u30c3\u30c8\u30bb\u30c3\u30c8 +bundleRepoUrls=\u30ea\u30dd\u30b8\u30c8\u30ea URL \u3092\u30d0\u30f3\u30c9\u30eb\u3059\u308b +customPanels=\u30ab\u30b9\u30bf\u30e0\u30d1\u30cd\u30eb +customForms=\u30ab\u30b9\u30bf\u30e0\u30d5\u30a9\u30fc\u30e0 +deploymentName=\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u540d +enableLandingPage=\u30e9\u30f3\u30c7\u30a3\u30f3\u30b0 \u30da\u30fc\u30b8\u3092\u6709\u52b9\u306b\u3059\u308b +configClass=\u69cb\u6210\u30af\u30e9\u30b9 +uiClass=\u30a6\u30a4\u30af\u30e9\u30b9 +moduleClass=\u30e2\u30b8\u30e5\u30fc\u30eb\u30af\u30e9\u30b9 + +# Auto-extracted hardcoded UI strings +testLinks1=\u30c6\u30b9\u30c8\u30ea\u30f3\u30af +uniqueID1=\u56fa\u6709\u306eID +foiIDs1=FOI ID +version1=\u30d0\u30fc\u30b8\u30e7\u30f3 + +Connected\ Systems\ Endpoint=\u63a5\u7d9a\u3055\u308c\u305f\u30b7\u30b9\u30c6\u30e0\u306e\u30a8\u30f3\u30c9\u30dd\u30a4\u30f3\u30c8 +Connected\ Systems\ endpoint\ where\ the\ requests\ are\ sent=\u30ea\u30af\u30a8\u30b9\u30c8\u304c\u9001\u4fe1\u3055\u308c\u308b\u63a5\u7d9a\u30b7\u30b9\u30c6\u30e0\u306e\u30a8\u30f3\u30c9\u30dd\u30a4\u30f3\u30c8 +Connection\ Settings=\u63a5\u7d9a\u8a2d\u5b9a +Custom\ connector\ configurations=\u30ab\u30b9\u30bf\u30e0\u30b3\u30cd\u30af\u30bf\u69cb\u6210 +Custom\ provider\ configurations=\u30ab\u30b9\u30bf\u30e0\u30d7\u30ed\u30d0\u30a4\u30c0\u30fc\u69cb\u6210 +Database\ ID=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9ID +Default\ live\ time-out\ for\ all\ offerings,\ unless\ overriden\ by\ custom\ provider\ settings=\u30ab\u30b9\u30bf\u30e0\u30d7\u30ed\u30d0\u30a4\u30c0\u30fc\u8a2d\u5b9a\u306b\u3088\u3063\u3066\u4e0a\u66f8\u304d\u3055\u308c\u306a\u3044\u9650\u308a\u3001\u3059\u3079\u3066\u306e\u30aa\u30d5\u30a1\u30ea\u30f3\u30b0\u306e\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u30e9\u30a4\u30d6\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8 +Default\ live\ time-out\ for\ new\ offerings\ created\ via\ SOS-T=SOS-T \u7d4c\u7531\u3067\u4f5c\u6210\u3055\u308c\u305f\u65b0\u3057\u3044\u30aa\u30d5\u30a1\u30ea\u30f3\u30b0\u306e\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u30e9\u30a4\u30d6 \u30bf\u30a4\u30e0\u30a2\u30a6\u30c8 +Enable\ to\ use\ a\ persistent\ HTTP\ connection\ for\ InsertResult=InsertResult \u306b\u6c38\u7d9a\u7684\u306a HTTP \u63a5\u7d9a\u3092\u4f7f\u7528\u3067\u304d\u308b\u3088\u3046\u306b\u3057\u307e\u3059\u3002 +Execution\ period\ of\ the\ purge\ policy\ (in\ seconds)=\u30d1\u30fc\u30b8\u30dd\u30ea\u30b7\u30fc\u306e\u5b9f\u884c\u671f\u9593(\u79d2\u5358\u4f4d) +Filtered\ view\ to\ select\ systems\ exposed\ as\ read-only\ through\ this\ service=\u3053\u306e\u30b5\u30fc\u30d3\u30b9\u3092\u901a\u3058\u3066\u8aad\u307f\u53d6\u308a\u5c02\u7528\u3068\u3057\u3066\u516c\u958b\u3055\u308c\u3066\u3044\u308b\u30b7\u30b9\u30c6\u30e0\u3092\u9078\u629e\u3059\u308b\u305f\u3081\u306e\u30d5\u30a3\u30eb\u30bf\u30fc\u3055\u308c\u305f\u30d3\u30e5\u30fc +Filtered\ view\ to\ select\ systems/datastreams\ to\ register\ with\ Connected\ Systems=\u63a5\u7d9a\u3055\u308c\u305f\u30b7\u30b9\u30c6\u30e0\u306b\u767b\u9332\u3059\u308b\u30b7\u30b9\u30c6\u30e0/\u30c7\u30fc\u30bf\u30b9\u30c8\u30ea\u30fc\u30e0\u3092\u9078\u629e\u3059\u308b\u305f\u3081\u306e\u30d5\u30a3\u30eb\u30bf\u30fc\u3055\u308c\u305f\u30d3\u30e5\u30fc +Filtered\ view\ to\ select\ systems/datastreams\ to\ register\ with\ remote\ SOS=\u30ea\u30e2\u30fc\u30c8 SOS \u306b\u767b\u9332\u3059\u308b\u30b7\u30b9\u30c6\u30e0/\u30c7\u30fc\u30bf\u30b9\u30c8\u30ea\u30fc\u30e0\u3092\u9078\u629e\u3059\u308b\u305f\u3081\u306e\u30d5\u30a3\u30eb\u30bf\u30fc\u3055\u308c\u305f\u30d3\u30e5\u30fc +Fixed\ system\ location\ in\ EPSG\ 4979\ (WGS84)\ coordinate\ system=EPSG 4979 (WGS84) \u5ea7\u6a19\u7cfb\u3067\u306e\u30b7\u30b9\u30c6\u30e0\u306e\u4f4d\u7f6e\u3092\u4fee\u6b63 +For\ each\ connection\ or\ reconnection\ attempt,\ the\ client\ will\ wait\ for\ the\ remote\ side\ to\ respond\ until\ this\ timeout\ expires\ (in\ ms)=\u63a5\u7d9a\u307e\u305f\u306f\u518d\u63a5\u7d9a\u306e\u8a66\u884c\u3054\u3068\u306b\u3001\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306f\u3053\u306e\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\u304c\u7d4c\u904e\u3059\u308b\u307e\u3067\u30ea\u30e2\u30fc\u30c8\u5074\u306e\u5fdc\u7b54\u3092\u5f85\u3061\u307e\u3059 (\u30df\u30ea\u79d2\u5358\u4f4d)\u3002 +Heading\ (or\ yaw)\ angle\ about\ Z\ axis\ in\ degrees=Z \u8ef8\u3092\u4e2d\u5fc3\u3068\u3057\u305f\u30d8\u30c7\u30a3\u30f3\u30b0 (\u307e\u305f\u306f\u30e8\u30fc) \u89d2\u5ea6 (\u5ea6\u5358\u4f4d) +How\ long\ the\ client\ will\ wait\ after\ connection\ is\ lost\ before\ it\ will\ attempt\ to\ reconnect\ (in\ ms)=\u63a5\u7d9a\u304c\u5931\u308f\u308c\u305f\u5f8c\u3001\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u304c\u518d\u63a5\u7d9a\u3092\u8a66\u307f\u308b\u307e\u3067\u5f85\u6a5f\u3059\u308b\u6642\u9593 (\u30df\u30ea\u79d2) +ID\ Generator=ID\u30b8\u30a7\u30cd\u30ec\u30fc\u30bf +ID\ of\ database\ module\ used\ for\ persisting\ data\ received\ by\ this\ service.\ If\ none\ is\ provided,\ new\ systems\ registered\ through\ this\ service\ will\ be\ available\ on\ the\ hub,\ but\ with\ no\ persistence\ guarantee\ across\ restarts.=\u3053\u306e\u30b5\u30fc\u30d3\u30b9\u306b\u3088\u3063\u3066\u53d7\u4fe1\u3055\u308c\u305f\u30c7\u30fc\u30bf\u3092\u6c38\u7d9a\u5316\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u308b\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9 \u30e2\u30b8\u30e5\u30fc\u30eb\u306e ID\u3002\u4f55\u3082\u6307\u5b9a\u3055\u308c\u306a\u3044\u5834\u5408\u3001\u3053\u306e\u30b5\u30fc\u30d3\u30b9\u3092\u901a\u3058\u3066\u767b\u9332\u3055\u308c\u305f\u65b0\u3057\u3044\u30b7\u30b9\u30c6\u30e0\u306f\u30cf\u30d6\u4e0a\u3067\u4f7f\u7528\u3067\u304d\u307e\u3059\u304c\u3001\u518d\u8d77\u52d5\u5f8c\u306e\u6c38\u7d9a\u6027\u306f\u4fdd\u8a3c\u3055\u308c\u307e\u305b\u3093\u3002 +ID\ of\ database\ module\ used\ for\ persisting\ data\ received\ by\ this\ service.\ If\ none\ is\ provided,\ new\ systems\ registered\ through\ this\ service\ will\ be\ available\ on\ the\ hub,\ but\ with\ no\ persistence\ guarantee\ across\ restarts.\ Only\ the\ latest\ observation\ from\ each\ datastream\ will\ be\ available\ and\ older\ observations\ will\ be\ discarded=\u3053\u306e\u30b5\u30fc\u30d3\u30b9\u306b\u3088\u3063\u3066\u53d7\u4fe1\u3055\u308c\u305f\u30c7\u30fc\u30bf\u3092\u6c38\u7d9a\u5316\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u308b\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9 \u30e2\u30b8\u30e5\u30fc\u30eb\u306e ID\u3002\u4f55\u3082\u6307\u5b9a\u3055\u308c\u306a\u3044\u5834\u5408\u3001\u3053\u306e\u30b5\u30fc\u30d3\u30b9\u3092\u901a\u3058\u3066\u767b\u9332\u3055\u308c\u305f\u65b0\u3057\u3044\u30b7\u30b9\u30c6\u30e0\u306f\u30cf\u30d6\u4e0a\u3067\u4f7f\u7528\u3067\u304d\u307e\u3059\u304c\u3001\u518d\u8d77\u52d5\u5f8c\u306e\u6c38\u7d9a\u6027\u306f\u4fdd\u8a3c\u3055\u308c\u307e\u305b\u3093\u3002\u5404\u30c7\u30fc\u30bf\u30b9\u30c8\u30ea\u30fc\u30e0\u304b\u3089\u306e\u6700\u65b0\u306e\u89b3\u6e2c\u5024\u306e\u307f\u304c\u5229\u7528\u53ef\u80fd\u3068\u306a\u308a\u3001\u53e4\u3044\u89b3\u6e2c\u5024\u306f\u7834\u68c4\u3055\u308c\u307e\u3059\u3002 +Individual\ configuration\ of\ sensors\ in\ the\ array\ (will\ override\ common\ configuration)=\u30a2\u30ec\u30a4\u5185\u306e\u30bb\u30f3\u30b5\u30fc\u306e\u500b\u5225\u69cb\u6210 (\u5171\u901a\u69cb\u6210\u3092\u30aa\u30fc\u30d0\u30fc\u30e9\u30a4\u30c9\u3057\u307e\u3059) +List\ of\ observed\ properties\ URI\ to\ make\ available\ as\ outputs=\u51fa\u529b\u3068\u3057\u3066\u5229\u7528\u3067\u304d\u308b\u3088\u3046\u306b\u3059\u308b\u89b3\u6e2c\u3055\u308c\u305f\u30d7\u30ed\u30d1\u30c6\u30a3 URI \u306e\u30ea\u30b9\u30c8 +Mapping\ of\ custom\ formats\ mime-types\ to\ custom\ serializer\ classes=\u30ab\u30b9\u30bf\u30e0\u5f62\u5f0f\u306e MIME \u30bf\u30a4\u30d7\u306e\u30ab\u30b9\u30bf\u30e0 \u30b7\u30ea\u30a2\u30e9\u30a4\u30b6\u30fc \u30af\u30e9\u30b9\u3078\u306e\u30de\u30c3\u30d4\u30f3\u30b0 +Mappings\ used\ by\ CURIE\ to\ URI\ resolver=CURIE \u306b\u3088\u3063\u3066\u4f7f\u7528\u3055\u308c\u308b URI \u30ea\u30be\u30eb\u30d0\u30fc\u3078\u306e\u30de\u30c3\u30d4\u30f3\u30b0 +Max\ Limit=\u6700\u5927\u5236\u9650 +Max\ Observations\ Returned=\u8fd4\u3055\u308c\u305f\u6700\u5927\u89b3\u6e2c\u5024 +Max\ Records\ Returned=\u8fd4\u3055\u308c\u305f\u6700\u5927\u30ec\u30b3\u30fc\u30c9\u6570 +Max\ delay\ between\ auto-commit\ execution,\ in\ seconds.\ 0\ to\ disable\ time-based\ auto-commit=\u81ea\u52d5\u30b3\u30df\u30c3\u30c8\u5b9f\u884c\u9593\u306e\u6700\u5927\u9045\u5ef6 (\u79d2\u5358\u4f4d)\u3002 0: \u6642\u9593\u30d9\u30fc\u30b9\u306e\u81ea\u52d5\u30b3\u30df\u30c3\u30c8\u3092\u7121\u52b9\u306b\u3059\u308b +Maximum\ age\ of\ data\ to\ be\ kept\ in\ storage\ (in\ seconds)=\u30b9\u30c8\u30ec\u30fc\u30b8\u306b\u4fdd\u5b58\u3055\u308c\u308b\u30c7\u30fc\u30bf\u306e\u6700\u5927\u4fdd\u5b58\u671f\u9593 (\u79d2\u5358\u4f4d) +Maximum\ number\ of\ FoI\ IDs\ listed\ in\ capabilities=\u6a5f\u80fd\u306b\u30ea\u30b9\u30c8\u3055\u308c\u308b FoI ID \u306e\u6700\u5927\u6570 +Maximum\ number\ of\ observations\ returned\ \ by\ a\ historical\ GetObservation\ request\ (for\ each\ selected\ offering)=\u5c65\u6b74 GetObservation \u30ea\u30af\u30a8\u30b9\u30c8\u306b\u3088\u3063\u3066\u8fd4\u3055\u308c\u308b\u89b3\u6e2c\u306e\u6700\u5927\u6570 (\u9078\u629e\u3057\u305f\u30aa\u30d5\u30a1\u30ea\u30f3\u30b0\u3054\u3068) +Maximum\ number\ of\ records\ in\ upload\ queue\ (used\ to\ compensate\ for\ variable\ bandwidth)=\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9 \u30ad\u30e5\u30fc\u5185\u306e\u30ec\u30b3\u30fc\u30c9\u306e\u6700\u5927\u6570 (\u53ef\u5909\u5e2f\u57df\u5e45\u3092\u88dc\u3046\u305f\u3081\u306b\u4f7f\u7528) +Maximum\ number\ of\ resources\ returned\ in\ a\ single\ page=1 \u30da\u30fc\u30b8\u3067\u8fd4\u3055\u308c\u308b\u30ea\u30bd\u30fc\u30b9\u306e\u6700\u5927\u6570 +Maximum\ number\ of\ result\ records\ returned\ by\ a\ historical\ GetResult\ request=\u904e\u53bb\u306e GetResult \u30ea\u30af\u30a8\u30b9\u30c8\u306b\u3088\u3063\u3066\u8fd4\u3055\u308c\u308b\u7d50\u679c\u30ec\u30b3\u30fc\u30c9\u306e\u6700\u5927\u6570 +Maximum\ number\ of\ stream\ errors\ before\ we\ try\ to\ reconnect\ to\ remote\ server=\u30ea\u30e2\u30fc\u30c8 \u30b5\u30fc\u30d0\u30fc\u3078\u306e\u518d\u63a5\u7d9a\u3092\u8a66\u884c\u3059\u308b\u307e\u3067\u306e\u30b9\u30c8\u30ea\u30fc\u30e0 \u30a8\u30e9\u30fc\u306e\u6700\u5927\u6570 +Memory\ cache\ size\ for\ page\ chunks,\ in\ KB=\u30da\u30fc\u30b8 \u30c1\u30e3\u30f3\u30af\u306e\u30e1\u30e2\u30ea \u30ad\u30e3\u30c3\u30b7\u30e5 \u30b5\u30a4\u30ba (KB \u5358\u4f4d) +Metadata\ of\ system\ group\ that\ will\ be\ created\ to\ contain\ all\ procedures/sensors\ registered\ through\ this\ service.\ Only\ sensors\ in\ this\ group\ will\ be\ modifiable\ by\ this\ service=\u3053\u306e\u30b5\u30fc\u30d3\u30b9\u3092\u901a\u3058\u3066\u767b\u9332\u3055\u308c\u305f\u3059\u3079\u3066\u306e\u30d7\u30ed\u30b7\u30fc\u30b8\u30e3/\u30bb\u30f3\u30b5\u30fc\u3092\u542b\u3080\u3088\u3046\u306b\u4f5c\u6210\u3055\u308c\u308b\u30b7\u30b9\u30c6\u30e0 \u30b0\u30eb\u30fc\u30d7\u306e\u30e1\u30bf\u30c7\u30fc\u30bf\u3002\u3053\u306e\u30b0\u30eb\u30fc\u30d7\u5185\u306e\u30bb\u30f3\u30b5\u30fc\u306e\u307f\u304c\u3053\u306e\u30b5\u30fc\u30d3\u30b9\u3067\u5909\u66f4\u53ef\u80fd\u306b\u306a\u308a\u307e\u3059 +Metadata\ of\ system\ group\ that\ will\ be\ created\ to\ contain\ all\ systems\ registered\ through\ this\ service.\ Only\ systems\ in\ this\ group\ will\ be\ modifiable\ by\ this\ service=\u3053\u306e\u30b5\u30fc\u30d3\u30b9\u3092\u901a\u3058\u3066\u767b\u9332\u3055\u308c\u305f\u3059\u3079\u3066\u306e\u30b7\u30b9\u30c6\u30e0\u3092\u542b\u3081\u308b\u305f\u3081\u306b\u4f5c\u6210\u3055\u308c\u308b\u30b7\u30b9\u30c6\u30e0 \u30b0\u30eb\u30fc\u30d7\u306e\u30e1\u30bf\u30c7\u30fc\u30bf\u3002\u3053\u306e\u30b0\u30eb\u30fc\u30d7\u5185\u306e\u30b7\u30b9\u30c6\u30e0\u306e\u307f\u304c\u3053\u306e\u30b5\u30fc\u30d3\u30b9\u3067\u5909\u66f4\u53ef\u80fd\u306b\u306a\u308a\u307e\u3059 +Method\ used\ to\ generate\ new\ resource\ IDs=\u65b0\u3057\u3044\u30ea\u30bd\u30fc\u30b9 ID \u3092\u751f\u6210\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u308b\u30e1\u30bd\u30c3\u30c9 +Minimum\ fillrate\ above\ which\ auto\ compact\ operations\ may\ be\ triggered=\u305d\u308c\u3092\u8d85\u3048\u308b\u3068\u81ea\u52d5\u30b3\u30f3\u30d1\u30af\u30c8\u64cd\u4f5c\u304c\u30c8\u30ea\u30ac\u30fc\u3055\u308c\u308b\u53ef\u80fd\u6027\u304c\u3042\u308b\u6700\u5c0f\u30d5\u30a3\u30eb\u30ec\u30fc\u30c8 +Minimum\ period\ between\ database\ commits\ (in\ ms)=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30b3\u30df\u30c3\u30c8\u9593\u306e\u6700\u5c0f\u671f\u9593 (\u30df\u30ea\u79d2\u5358\u4f4d) +Names\ of\ datastreams\ whose\ data\ will\ be\ hidden\ from\ the\ SOS.\ If\ this\ is\ null,\ all\ streams\ produced\ by\ the\ procedure\ are\ exposed=\u30c7\u30fc\u30bf\u304c SOS \u304b\u3089\u96a0\u3055\u308c\u308b\u30c7\u30fc\u30bf\u30b9\u30c8\u30ea\u30fc\u30e0\u306e\u540d\u524d\u3002\u3053\u308c\u304c null \u306e\u5834\u5408\u3001\u30d7\u30ed\u30b7\u30fc\u30b8\u30e3\u306b\u3088\u3063\u3066\u751f\u6210\u3055\u308c\u305f\u3059\u3079\u3066\u306e\u30b9\u30c8\u30ea\u30fc\u30e0\u304c\u516c\u958b\u3055\u308c\u307e\u3059\u3002 +Observed\ Properties=\u89b3\u5bdf\u3055\u308c\u305f\u7279\u6027 +Offering\ URI\ as\ exposed\ in\ capabilities.\ (if\ null,\ the\ procedure\ UID\ is\ used)=\u6a5f\u80fd\u3067\u516c\u958b\u3055\u308c\u3066\u3044\u308b URI \u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002 (null\u306e\u5834\u5408\u3001\u30d7\u30ed\u30b7\u30fc\u30b8\u30e3UID\u304c\u4f7f\u7528\u3055\u308c\u307e\u3059) +Offering\ description\ (if\ null,\ it\ will\ be\ auto-generated)=\u30aa\u30d5\u30a1\u30ea\u30f3\u30b0\u306e\u8aac\u660e (null \u306e\u5834\u5408\u3001\u81ea\u52d5\u751f\u6210\u3055\u308c\u307e\u3059) +Offering\ name\ (if\ null,\ the\ procedure\ name\ is\ used)=\u30aa\u30d5\u30a1\u30ea\u30f3\u30b0\u540d (null \u306e\u5834\u5408\u3001\u30d7\u30ed\u30b7\u30fc\u30b8\u30e3\u540d\u304c\u4f7f\u7528\u3055\u308c\u307e\u3059) +Orientation\ as\ Euler\ angles\ in\ NED\ coordinate\ reference\ frame.\nOrder\ of\ rotations\ is\ z-y\u2019-x"\ (in\ rotating\ frame)\ or\ x-y-z\ (in\ fixed\ frame)=NED \u5ea7\u6a19\u53c2\u7167\u30d5\u30ec\u30fc\u30e0\u306b\u304a\u3051\u308b\u30aa\u30a4\u30e9\u30fc\u89d2\u3068\u3057\u3066\u306e\u65b9\u5411\u3002\n\u56de\u8ee2\u306e\u9806\u5e8f\u306f\u3001z-y\u2019-x" (\u56de\u8ee2\u30d5\u30ec\u30fc\u30e0\u306e\u5834\u5408) \u307e\u305f\u306f x-y-z (\u56fa\u5b9a\u30d5\u30ec\u30fc\u30e0\u306e\u5834\u5408) \u3067\u3059\u3002 +Password\ for\ the\ key\ store\ (and\ for\ the\ keypair\ within\ the\ keystore).\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ "javax.net.ssl.keyStorePassword"\ system\ property.\ This\ value\ can\ use\ variable\ expansion\ expressions\ of\ the\ form\ "$${name}"\ (for\ environment\ variables\ and\ system\ properties)\ or\ "$${file;/path/to/file}"\ (for\ secret\ file\ contents).=\u30ad\u30fc\u30b9\u30c8\u30a2 (\u304a\u3088\u3073\u30ad\u30fc\u30b9\u30c8\u30a2\u5185\u306e\u30ad\u30fc\u30da\u30a2) \u306e\u30d1\u30b9\u30ef\u30fc\u30c9\u3002\u3053\u306e\u5024\u304c\u7a7a\u767d\u306e\u5834\u5408\u3001\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u300cjavax.net.ssl.keyStorePassword\u300d\u30b7\u30b9\u30c6\u30e0 \u30d7\u30ed\u30d1\u30c6\u30a3\u306e\u5024\u304c\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002\u3053\u306e\u5024\u306b\u306f\u3001\u300c$${name}\u300d(\u74b0\u5883\u5909\u6570\u304a\u3088\u3073\u30b7\u30b9\u30c6\u30e0 \u30d7\u30ed\u30d1\u30c6\u30a3\u306e\u5834\u5408) \u307e\u305f\u306f\u300c$${file;/path/to/file}\u300d(\u30b7\u30fc\u30af\u30ec\u30c3\u30c8 \u30d5\u30a1\u30a4\u30eb\u306e\u5185\u5bb9\u306e\u5834\u5408) \u5f62\u5f0f\u306e\u5909\u6570\u5c55\u958b\u5f0f\u3092\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002 +Password\ for\ the\ trust\ store.\ Ignored\ if\ client\ certificate\ authentication\ is\ not\ used.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ "javax.net.ssl.trustStorePassword"\ system\ property.\ This\ value\ can\ use\ variable\ expansion\ expressions\ of\ the\ form\ "$${name}"\ (for\ environment\ variables\ and\ system\ properties)\ or\ "$${file;/path/to/file}"\ (for\ secret\ file\ contents).=\u30c8\u30e9\u30b9\u30c8\u30b9\u30c8\u30a2\u306e\u30d1\u30b9\u30ef\u30fc\u30c9\u3002\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u8a3c\u660e\u66f8\u8a8d\u8a3c\u3092\u4f7f\u7528\u3057\u306a\u3044\u5834\u5408\u306f\u7121\u8996\u3055\u308c\u307e\u3059\u3002\u3053\u306e\u5024\u304c\u7a7a\u767d\u306e\u5834\u5408\u3001\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u300cjavax.net.ssl.trustStorePassword\u300d\u30b7\u30b9\u30c6\u30e0 \u30d7\u30ed\u30d1\u30c6\u30a3\u306e\u5024\u304c\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002\u3053\u306e\u5024\u306b\u306f\u3001\u300c$${name}\u300d(\u74b0\u5883\u5909\u6570\u304a\u3088\u3073\u30b7\u30b9\u30c6\u30e0 \u30d7\u30ed\u30d1\u30c6\u30a3\u306e\u5834\u5408) \u307e\u305f\u306f\u300c$${file;/path/to/file}\u300d(\u30b7\u30fc\u30af\u30ec\u30c3\u30c8 \u30d5\u30a1\u30a4\u30eb\u306e\u5185\u5bb9\u306e\u5834\u5408) \u5f62\u5f0f\u306e\u5909\u6570\u5c55\u958b\u5f0f\u3092\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002 +Path\ of\ service\ endpoint\ relative\ to\ the\ context\ URL\ (e.g.\ http\://server.net/sensorhub)=\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8 URL \u306b\u5bfe\u3059\u308b\u30b5\u30fc\u30d3\u30b9 \u30a8\u30f3\u30c9\u30dd\u30a4\u30f3\u30c8\u306e\u76f8\u5bfe\u30d1\u30b9 (\u4f8b: http://server.net/sensorhub) +Path\ to\ a\ key\ store\ containing\ the\ certificate\ and\ keypair\ that\ this\ server\ will\ present\ to\ clients\ when\ accessed\ over\ HTTPS.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ "javax.net.ssl.keyStore"\ system\ property.\ This\ value\ can\ use\ variable\ expansion\ expressions\ of\ the\ form\ "$${name}"\ (for\ environment\ variables\ and\ system\ properties)\ or\ "$${file;/path/to/file}"\ (for\ secret\ file\ contents).=HTTPS \u7d4c\u7531\u3067\u30a2\u30af\u30bb\u30b9\u3059\u308b\u3068\u304d\u306b\u3053\u306e\u30b5\u30fc\u30d0\u30fc\u304c\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306b\u63d0\u793a\u3059\u308b\u8a3c\u660e\u66f8\u3068\u30ad\u30fc\u30da\u30a2\u3092\u542b\u3080\u30ad\u30fc \u30b9\u30c8\u30a2\u3078\u306e\u30d1\u30b9\u3002\u3053\u306e\u5024\u304c\u7a7a\u767d\u306e\u5834\u5408\u3001\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u300cjavax.net.ssl.keyStore\u300d\u30b7\u30b9\u30c6\u30e0 \u30d7\u30ed\u30d1\u30c6\u30a3\u306e\u5024\u304c\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002\u3053\u306e\u5024\u306b\u306f\u3001\u300c$${name}\u300d(\u74b0\u5883\u5909\u6570\u304a\u3088\u3073\u30b7\u30b9\u30c6\u30e0 \u30d7\u30ed\u30d1\u30c6\u30a3\u306e\u5834\u5408) \u307e\u305f\u306f\u300c$${file;/path/to/file}\u300d(\u30b7\u30fc\u30af\u30ec\u30c3\u30c8 \u30d5\u30a1\u30a4\u30eb\u306e\u5185\u5bb9\u306e\u5834\u5408) \u5f62\u5f0f\u306e\u5909\u6570\u5c55\u958b\u5f0f\u3092\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002 +Path\ to\ database\ file=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30d5\u30a1\u30a4\u30eb\u3078\u306e\u30d1\u30b9 +Path\ to\ external\ config\ file\ (in\ Jetty\ IOC\ XML\ format)=\u5916\u90e8\u69cb\u6210\u30d5\u30a1\u30a4\u30eb\u3078\u306e\u30d1\u30b9 (Jetty IOC XML \u5f62\u5f0f) +Path\ to\ the\ TLS\ trust\ store\ that\ is\ used\ when\ client\ authentication\ is\ required.\ Ignored\ if\ client\ certificate\ authentication\ is\ not\ used.\ Certificates\ in\ this\ file\ designate\ the\ signing\ authorities\ for\ client\ certificates\ that\ will\ be\ trusted.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ "javax.net.ssl.trustStore"\ system\ property.\ This\ value\ can\ use\ variable\ expansion\ expressions\ of\ the\ form\ "$${name}"\ (for\ environment\ variables\ and\ system\ properties)\ or\ "$${file;/path/to/file}"\ (for\ secret\ file\ contents).=\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u8a8d\u8a3c\u304c\u5fc5\u8981\u306a\u5834\u5408\u306b\u4f7f\u7528\u3055\u308c\u308b TLS \u30c8\u30e9\u30b9\u30c8 \u30b9\u30c8\u30a2\u3078\u306e\u30d1\u30b9\u3002\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u8a3c\u660e\u66f8\u8a8d\u8a3c\u3092\u4f7f\u7528\u3057\u306a\u3044\u5834\u5408\u306f\u7121\u8996\u3055\u308c\u307e\u3059\u3002\u3053\u306e\u30d5\u30a1\u30a4\u30eb\u5185\u306e\u8a3c\u660e\u66f8\u306f\u3001\u4fe1\u983c\u3055\u308c\u308b\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u8a3c\u660e\u66f8\u306e\u7f72\u540d\u6a5f\u95a2\u3092\u6307\u5b9a\u3057\u307e\u3059\u3002\u3053\u306e\u5024\u304c\u7a7a\u767d\u306e\u5834\u5408\u3001\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u300cjavax.net.ssl.trustStore\u300d\u30b7\u30b9\u30c6\u30e0 \u30d7\u30ed\u30d1\u30c6\u30a3\u306e\u5024\u304c\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002\u3053\u306e\u5024\u306b\u306f\u3001\u300c$${name}\u300d(\u74b0\u5883\u5909\u6570\u304a\u3088\u3073\u30b7\u30b9\u30c6\u30e0 \u30d7\u30ed\u30d1\u30c6\u30a3\u306e\u5834\u5408) \u307e\u305f\u306f\u300c$${file;/path/to/file}\u300d(\u30b7\u30fc\u30af\u30ec\u30c3\u30c8 \u30d5\u30a1\u30a4\u30eb\u306e\u5185\u5bb9\u306e\u5834\u5408) \u5f62\u5f0f\u306e\u5909\u6570\u5c55\u958b\u5f0f\u3092\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002 +Port\ number\ to\ connect\ to\ on\ remote\ host\ (0\ to\ automatically\ select\ a\ port)=\u30ea\u30e2\u30fc\u30c8 \u30db\u30b9\u30c8\u3067\u63a5\u7d9a\u3059\u308b\u30dd\u30fc\u30c8\u756a\u53f7 (\u30dd\u30fc\u30c8\u3092\u81ea\u52d5\u7684\u306b\u9078\u629e\u3059\u308b\u5834\u5408\u306f 0) +SOS\ Endpoint=SOS \u30a8\u30f3\u30c9\u30dd\u30a4\u30f3\u30c8 +SOS\ endpoint\ to\ fetch\ data\ from=\u30c7\u30fc\u30bf\u3092\u53d6\u5f97\u3059\u308b SOS \u30a8\u30f3\u30c9\u30dd\u30a4\u30f3\u30c8 +SOS\ endpoint\ where\ the\ requests\ are\ sent=\u30ea\u30af\u30a8\u30b9\u30c8\u304c\u9001\u4fe1\u3055\u308c\u308b SOS \u30a8\u30f3\u30c9\u30dd\u30a4\u30f3\u30c8 +SPS\ Endpoint=SPS \u30a8\u30f3\u30c9\u30dd\u30a4\u30f3\u30c8 +SPS\ endpoint\ to\ send\ commands\ to=\u30b3\u30de\u30f3\u30c9\u3092\u9001\u4fe1\u3059\u308b SPS \u30a8\u30f3\u30c9\u30dd\u30a4\u30f3\u30c8 +Security\ related\ options=\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u95a2\u9023\u306e\u30aa\u30d7\u30b7\u30e7\u30f3 +Sensor\ UID=\u30bb\u30f3\u30b5\u30fcUID +Set\ if\ WebSocket\ protocol\ should\ be\ used\ to\ get\ streaming\ data\ from\ SOS=SOS \u304b\u3089\u30b9\u30c8\u30ea\u30fc\u30df\u30f3\u30b0 \u30c7\u30fc\u30bf\u3092\u53d6\u5f97\u3059\u308b\u305f\u3081\u306b WebSocket \u30d7\u30ed\u30c8\u30b3\u30eb\u3092\u4f7f\u7528\u3059\u308b\u304b\u3069\u3046\u304b\u3092\u8a2d\u5b9a\u3057\u307e\u3059 +Set\ if\ offering\ is\ enabled,\ unset\ if\ disabled=\u30aa\u30d5\u30a1\u30ea\u30f3\u30b0\u304c\u6709\u52b9\u306a\u5834\u5408\u306f\u8a2d\u5b9a\u3055\u308c\u3001\u7121\u52b9\u306a\u5834\u5408\u306f\u8a2d\u5b9a\u89e3\u9664\u3055\u308c\u307e\u3059 +Set\ if\ websockets\ protocol\ should\ be\ used\ to\ send\ commands\ to\ SPS=\u30b3\u30de\u30f3\u30c9\u3092 SPS \u306b\u9001\u4fe1\u3059\u308b\u305f\u3081\u306b WebSocket \u30d7\u30ed\u30c8\u30b3\u30eb\u3092\u4f7f\u7528\u3059\u308b\u304b\u3069\u3046\u304b\u3092\u8a2d\u5b9a\u3057\u307e\u3059 +Set\ to\ compact\ the\ database\ file\ when\ the\ database\ module\ is\ stopped\ or\ restarted=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30e2\u30b8\u30e5\u30fc\u30eb\u306e\u505c\u6b62\u6642\u307e\u305f\u306f\u518d\u8d77\u52d5\u6642\u306b\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30d5\u30a1\u30a4\u30eb\u3092\u5727\u7e2e\u3059\u308b\u3088\u3046\u306b\u8a2d\u5b9a\u3057\u307e\u3059 +Set\ to\ compress\ underlying\ file\ storage=\u57fa\u790e\u3068\u306a\u308b\u30d5\u30a1\u30a4\u30eb\u30b9\u30c8\u30ec\u30fc\u30b8\u3092\u5727\u7e2e\u3059\u308b\u3088\u3046\u306b\u8a2d\u5b9a\u3057\u307e\u3059 +Set\ to\ display\ MVStore\ debug\ info\ when\ database\ is\ closed\ (only\ if\ DEBUG\ log\ is\ also\ enabled)=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u304c\u9589\u3058\u3089\u308c\u305f\u3068\u304d\u306b MVStore \u306e\u30c7\u30d0\u30c3\u30b0\u60c5\u5831\u3092\u8868\u793a\u3059\u308b\u3088\u3046\u306b\u8a2d\u5b9a\u3057\u307e\u3059 (DEBUG \u30ed\u30b0\u3082\u6709\u52b9\u306a\u5834\u5408\u306e\u307f) +Set\ to\ enable\ spatial\ indexing\ of\ individual\ observations\ sampling\ locations\ (when\ provided)=\u500b\u3005\u306e\u89b3\u6e2c\u5024\u306e\u30b5\u30f3\u30d7\u30ea\u30f3\u30b0\u4f4d\u7f6e\u306e\u7a7a\u9593\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u4ed8\u3051\u3092\u6709\u52b9\u306b\u3059\u308b\u3088\u3046\u306b\u8a2d\u5b9a\u3057\u307e\u3059 (\u6307\u5b9a\u3055\u308c\u3066\u3044\u308b\u5834\u5408)\u3002 +Set\ to\ open\ the\ database\ as\ read-only=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u8aad\u307f\u53d6\u308a\u5c02\u7528\u3068\u3057\u3066\u958b\u304f\u3088\u3046\u306b\u8a2d\u5b9a\u3057\u307e\u3059 +Set\ to\ true\ to\ enable\ transactional\ operation\ support=true \u306b\u8a2d\u5b9a\u3059\u308b\u3068\u3001\u30c8\u30e9\u30f3\u30b6\u30af\u30b7\u30e7\u30f3\u64cd\u4f5c\u306e\u30b5\u30dd\u30fc\u30c8\u304c\u6709\u52b9\u306b\u306a\u308a\u307e\u3059\u3002 +Size\ of\ the\ auto-commit\ write\ buffer,\ in\ KB=\u81ea\u52d5\u30b3\u30df\u30c3\u30c8\u66f8\u304d\u8fbc\u307f\u30d0\u30c3\u30d5\u30a1\u306e\u30b5\u30a4\u30ba (KB \u5358\u4f4d) +TCP\ port\ where\ server\ will\ listen\ for\ secure\ HTTP\ (HTTPS)\ connections\ (use\ 0\ to\ disable\ HTTPS).=\u30b5\u30fc\u30d0\u30fc\u304c\u30bb\u30ad\u30e5\u30a2 HTTP (HTTPS) \u63a5\u7d9a\u3092\u30ea\u30c3\u30b9\u30f3\u3059\u308b TCP \u30dd\u30fc\u30c8 (HTTPS \u3092\u7121\u52b9\u306b\u3059\u308b\u306b\u306f 0 \u3092\u4f7f\u7528\u3057\u307e\u3059)\u3002 +TCP\ port\ where\ server\ will\ listen\ for\ unsecure\ HTTP\ connections\ (use\ 0\ to\ disable\ HTTP).=\u30b5\u30fc\u30d0\u30fc\u304c\u5b89\u5168\u3067\u306a\u3044 HTTP \u63a5\u7d9a\u3092\u30ea\u30c3\u30b9\u30f3\u3059\u308b TCP \u30dd\u30fc\u30c8 (HTTP \u3092\u7121\u52b9\u306b\u3059\u308b\u306b\u306f 0 \u3092\u4f7f\u7528\u3057\u307e\u3059)\u3002 +Time-out\ after\ which\ real-time\ requests\ are\ disabled\ if\ no\ more\ measurements\ are\ received\ (in\ seconds).\ Real-time\ is\ reactivated\ as\ soon\ as\ new\ records\ start\ being\ received\ again=\u305d\u308c\u4ee5\u4e0a\u6e2c\u5b9a\u5024\u3092\u53d7\u4fe1\u3057\u306a\u3044\u5834\u5408\u306b\u30ea\u30a2\u30eb\u30bf\u30a4\u30e0\u8981\u6c42\u304c\u7121\u52b9\u306b\u306a\u308b\u307e\u3067\u306e\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8 (\u79d2\u5358\u4f4d)\u3002\u65b0\u3057\u3044\u30ec\u30b3\u30fc\u30c9\u306e\u53d7\u4fe1\u304c\u518d\u958b\u3055\u308c\u308b\u3068\u3059\u3050\u306b\u30ea\u30a2\u30eb\u30bf\u30a4\u30e0\u304c\u518d\u30a2\u30af\u30c6\u30a3\u30d6\u5316\u3055\u308c\u307e\u3059\u3002 +Time-out\ period\ after\ which\ a\ template\ ID\ reserved\ using\ InsertResultTemplate\ will\ expire\ if\ not\ used\ in\ InsertResult\ requests\ (in\ seconds)=InsertResultTemplate \u3092\u4f7f\u7528\u3057\u3066\u4e88\u7d04\u3055\u308c\u305f\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8 ID \u304c\u3001InsertResult \u30ea\u30af\u30a8\u30b9\u30c8\u3067\u4f7f\u7528\u3055\u308c\u306a\u304b\u3063\u305f\u5834\u5408\u306b\u671f\u9650\u5207\u308c\u306b\u306a\u308b\u307e\u3067\u306e\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\u671f\u9593 (\u79d2\u5358\u4f4d) +Timeout\ after\ which\ data\ is\ released\ to\ the\ caller\ if\ at\ least\ one\ byte\ was\ received\ (in\ ms)=\u5c11\u306a\u304f\u3068\u3082 1 \u30d0\u30a4\u30c8\u304c\u53d7\u4fe1\u3055\u308c\u305f\u5834\u5408\u306b\u30c7\u30fc\u30bf\u304c\u547c\u3073\u51fa\u3057\u5143\u306b\u89e3\u653e\u3055\u308c\u308b\u307e\u3067\u306e\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8 (\u30df\u30ea\u79d2\u5358\u4f4d) +URI\ Prefix\ Map=URI\u30d7\u30ec\u30d5\u30a3\u30c3\u30af\u30b9\u30de\u30c3\u30d7 +Unique\ ID\ (full\ URN\ or\ only\ suffix)\ to\ use\ for\ the\ sensor\ system\ or\ 'auto'\ to\ use\ the\ UUID\ randomly\ generated\ the\ first\ time\ the\ module\ is\ initialized=\u30bb\u30f3\u30b5\u30fc \u30b7\u30b9\u30c6\u30e0\u306b\u4f7f\u7528\u3059\u308b\u4e00\u610f\u306e ID (\u5b8c\u5168\u306a URN \u307e\u305f\u306f\u30b5\u30d5\u30a3\u30c3\u30af\u30b9\u306e\u307f)\u3001\u307e\u305f\u306f\u30e2\u30b8\u30e5\u30fc\u30eb\u306e\u521d\u56de\u521d\u671f\u5316\u6642\u306b\u30e9\u30f3\u30c0\u30e0\u306b\u751f\u6210\u3055\u308c\u305f UUID \u3092\u4f7f\u7528\u3059\u308b\u300c\u81ea\u52d5\u300d +Unique\ ID\ of\ a\ system\ that\ this\ configuration\ applies\ to.\nCan\ include\ a\ trailing\ wildcard\ '*'\ to\ match\ several\ systems\ at\ once.=\u3053\u306e\u69cb\u6210\u304c\u9069\u7528\u3055\u308c\u308b\u30b7\u30b9\u30c6\u30e0\u306e\u4e00\u610f\u306e ID\u3002\n\u8907\u6570\u306e\u30b7\u30b9\u30c6\u30e0\u3092\u4e00\u5ea6\u306b\u7167\u5408\u3059\u308b\u305f\u3081\u306b\u3001\u672b\u5c3e\u306b\u30ef\u30a4\u30eb\u30c9\u30ab\u30fc\u30c9 ''*'' \u3092\u542b\u3081\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002 +Unique\ ID\ of\ sensor\ to\ connect\ to\ on\ SOS\ and\ SPS\ servers=SOS \u304a\u3088\u3073 SPS \u30b5\u30fc\u30d0\u30fc\u306b\u63a5\u7d9a\u3059\u308b\u30bb\u30f3\u30b5\u30fc\u306e\u4e00\u610f\u306e ID +Unique\ ID\ of\ system\ that\ this\ configuration\ applies\ to.\nCan\ include\ a\ trailing\ wildcard\ '*'\ to\ match\ several\ systems\ at\ once.=\u3053\u306e\u69cb\u6210\u304c\u9069\u7528\u3055\u308c\u308b\u30b7\u30b9\u30c6\u30e0\u306e\u4e00\u610f\u306e ID\u3002\n\u8907\u6570\u306e\u30b7\u30b9\u30c6\u30e0\u3092\u4e00\u5ea6\u306b\u7167\u5408\u3059\u308b\u305f\u3081\u306b\u3001\u672b\u5c3e\u306b\u30ef\u30a4\u30eb\u30c9\u30ab\u30fc\u30c9 ''*'' \u3092\u542b\u3081\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002 +Use\ WebSockets\ for\ SOS=SOS \u306b WebSocket \u3092\u4f7f\u7528\u3059\u308b +Use\ WebSockets\ for\ SPS=SPS \u306b WebSocket \u3092\u4f7f\u7528\u3059\u308b + +Node\ ID=\u30ce\u30fc\u30c9ID +Stats\ Frequency\ (min)=\u7d71\u8a08\u983b\u5ea6 (\u5206) +Database\ URL=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306eURL +Database\ Name=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u540d +ID\ Generator=ID\u30b8\u30a7\u30cd\u30ec\u30fc\u30bf +Database\ Number=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u756a\u53f7 +Remote\ Host=\u30ea\u30e2\u30fc\u30c8\u30db\u30b9\u30c8 +Remote\ Port=\u30ea\u30e2\u30fc\u30c8\u30dd\u30fc\u30c8 +Lane\ Width\ (m)=\u8eca\u7dda\u5e45 (m) +Enable\ EML\ Analysis=EML \u5206\u6790\u3092\u6709\u52b9\u306b\u3059\u308b +Is\ Collimated=\u30b3\u30ea\u30e1\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u3059 +Stream\ Path=\u30b9\u30c8\u30ea\u30fc\u30e0\u30d1\u30b9 +Lane\ Options\ Config=\u30ec\u30fc\u30f3\u30aa\u30d7\u30b7\u30e7\u30f3\u8a2d\u5b9a diff --git a/sensorhub-webui-core/src/main/resources/org/sensorhub/ui/i18n/messages_ko.properties b/sensorhub-webui-core/src/main/resources/org/sensorhub/ui/i18n/messages_ko.properties new file mode 100644 index 0000000000..6fb7e0c813 --- /dev/null +++ b/sensorhub-webui-core/src/main/resources/org/sensorhub/ui/i18n/messages_ko.properties @@ -0,0 +1,543 @@ +app.title=\uc624\ud508\uc13c\uc11c\ud5c8\ube0c +tab.sensors=\uc13c\uc11c +tab.databases=\ub370\uc774\ud130\ubca0\uc774\uc2a4 +tab.processing=\ucc98\ub9ac +tab.services=\uc11c\ube44\uc2a4 +tab.clients=\ud074\ub77c\uc774\uc5b8\ud2b8 +tab.network=\ub124\ud2b8\uc6cc\ud06c +tab.security=\ubcf4\uc548 +action.shutdown=\uc885\ub8cc +action.logout=\ub85c\uadf8\uc544\uc6c3 +action.save=\uc800\uc7a5 +action.addModule=\uc0c8 \ubaa8\ub4c8 \ucd94\uac00 +action.addSubmodule=\uc11c\ube0c \ubaa8\ub4c8 \ucd94\uac00 +action.removeModule=\ubaa8\ub4c8 \uc81c\uac70 +action.removeSubmodule=\uc11c\ube0c \ubaa8\ub4c8 \uc81c\uac70 +action.start=\uc2dc\uc791 +action.stop=\uc911\uc9c0 +action.restart=\uc7ac\uc2dc\uc791 +action.forceInit=\uac15\uc81c \ucd08\uae30\ud654 +action.selectAll=\ubaa8\ub450 \uc120\ud0dd +action.deselectAll=\ubaa8\ub450 \uc120\ud0dd \ud574\uc81c +dialog.shutdown.title=\uc885\ub8cc \uc2dc\uc791\ub428... +dialog.shutdown.message=UI \uc751\ub2f5\uc774 \uc911\uc9c0\ub429\ub2c8\ub2e4 +dialog.shutdown.confirm=\uc13c\uc11c \ud5c8\ube0c\ub97c \uc885\ub8cc\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? +dialog.logout.confirm=\ub85c\uadf8\uc544\uc6c3\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? +dialog.save.confirm=\uad6c\uc131\uc744 \uc800\uc7a5(\ubc0f \ub36e\uc5b4\uc4f0\uae30)\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? +msg.configSaved=SensorHub \uad6c\uc131 \uc800\uc7a5\ub428 +msg.configSaveError=\uad6c\uc131\uc744 \uc800\uc7a5\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4 +dialog.remove.confirm={0}\uc744(\ub97c) \uc81c\uac70\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c?
\ubaa8\ub4e0 \uc124\uc815\uc774 \uc190\uc2e4\ub429\ub2c8\ub2e4. +msg.removeError={0}\uc744(\ub97c) \uc81c\uac70\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4 +msg.startError={0}\uc744(\ub97c) \uc2dc\uc791\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4 +msg.stopError={0}\uc744(\ub97c) \uc911\uc9c0\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4 +msg.restartError={0}\uc744(\ub97c) \uc7ac\uc2dc\uc791\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4 +msg.reinitError={0}\uc744(\ub97c) \uc7ac\ucd08\uae30\ud654\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4 +msg.loadError=\ubaa8\ub4c8\uc744 \ub85c\ub4dc\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4 +msg.addSubmoduleError=\uc11c\ube0c \ubaa8\ub4c8\uc744 \ucd94\uac00\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4 +about.title=OpenSensorHub \uc815\ubcf4 +about.desc=\uc2a4\ub9c8\ud2b8 \uc13c\uc11c \ub124\ud2b8\uc6cc\ud06c \ubc0f IoT \uad6c\ucd95\uc744 \uc704\ud55c \uc18c\ud504\ud2b8\uc6e8\uc5b4 \ud50c\ub7ab\ud3fc +about.license=Mozilla Public License v2.0\uc5d0 \ub530\ub77c \ub77c\uc774\uc120\uc2a4\uac00 \ubd80\uc5ec\ub428 +about.version=\ubc84\uc804: +about.build=\ube4c\ub4dc \ubc88\ud638: +about.deployment=\ubc30\ud3ec \uc774\ub984: +tooltip.shutdown=SensorHub \uc885\ub8cc +tooltip.logout=OSH \ub178\ub4dc\uc5d0\uc11c \ub85c\uadf8\uc544\uc6c3 +tooltip.save=SensorHub \uad6c\uc131 \uc800\uc7a5 +dialog.start.confirm={0}\uc744(\ub97c) \uc2dc\uc791\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? +dialog.stop.confirm={0}\uc744(\ub97c) \uc911\uc9c0\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? +dialog.restart.confirm={0}\uc744(\ub97c) \uc7ac\uc2dc\uc791\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? +dialog.reinit.confirm={0} \uc7ac\ucd08\uae30\ud654\ub97c \uac15\uc81c\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? +backgroundUpdate=\ubc31\uadf8\ub77c\uc6b4\ub4dc \uc5c5\ub370\uc774\ud2b8 +sigmaThreshold=\uc2dc\uadf8\ub9c8 \uc784\uacc4\uac12 +nuclideIdentification=\ud575\uc885 \uc2dd\ubcc4 +tamperAlarm=\ud6fc\uc190 \uacbd\ubcf4 +occupancySensor=\uc7ac\uc2e4 \uc13c\uc11c +stateOfHealth=\uac74\uac15 \uc0c1\ud0dc +soh=\uc18c +1ScanThisQrCodeWithYourAuthenticatorApp=1. \uc778\uc99d \uc571\uc73c\ub85c \uc774 QR \ucf54\ub4dc\ub97c \uc2a4\uce94\ud558\uc138\uc694. +2EnterThe6digitCodeGeneratedByTheApp=2. \uc571\uc5d0\uc11c \uc0dd\uc131\ub41c 6\uc790\ub9ac \ucf54\ub4dc\ub97c \uc785\ub825\ud558\uc138\uc694. +orEnterThisSecretKeyManually=\ub610\ub294 \uc774 \ube44\ubc00 \ud0a4\ub97c \uc218\ub3d9\uc73c\ub85c \uc785\ub825\ud558\uc138\uc694. +loadingBundlesInformation=\ubc88\ub4e4 \uc815\ubcf4 \ub85c\ub4dc \uc911... +loadingPackageInformation=\ud328\ud0a4\uc9c0 \uc815\ubcf4 \ub85c\ub4dc \uc911... +arrayComponentNotSupported=\uc5b4\ub808\uc774 \uad6c\uc131\uc694\uc18c\uac00 \uc9c0\uc6d0\ub418\uc9c0 \uc54a\uc74c +twofactorAuthentication=2\ub2e8\uacc4 \uc778\uc99d +installMorePackages=\ucd94\uac00 \ud328\ud0a4\uc9c0 \uc124\uce58... +errorGeneratingQrCode=QR \ucf54\ub4dc \uc0dd\uc131 \uc624\ub958 +installMoreModules=\ucd94\uac00 \ubaa8\ub4c8 \uc124\uce58... +detailedInstructions=\uc790\uc138\ud55c \uc9c0\uce68 +availableNetworks=\uc0ac\uc6a9 \uac00\ub2a5\ud55c \ub124\ud2b8\uc6cc\ud06c +processParameters=\ud504\ub85c\uc138\uc2a4 \ub9e4\uac1c\ubcc0\uc218 +verifyAndEnable=\ud655\uc778 \ubc0f \ud65c\uc131\ud654 +dataSourceInfo=\ub370\uc774\ud130 \uc18c\uc2a4 \uc815\ubcf4 +detectedDevices=\uac10\uc9c0\ub41c \uc7a5\uce58 +installSelected=\uc120\ud0dd\ud55c \ud56d\ubaa9 \uc124\uce58 +databaseContent=\ub370\uc774\ud130\ubca0\uc774\uc2a4 \ucf58\ud150\uce20 +itemsPerPage=\ud398\uc774\uc9c0\ub2f9 \ud56d\ubaa9 \uc218: +commandInputs=\uba85\ub839 \uc785\ub825 +processInputs=\ud504\ub85c\uc138\uc2a4 \uc785\ub825 +providerClass=\uacf5\uae09\uc790 \ud074\ub798\uc2a4 +processName=\ud504\ub85c\uc138\uc2a4 \uc774\ub984: +configuration=\uad6c\uc131 +applyChanges=\ubcc0\uacbd \uc0ac\ud56d \uc801\uc6a9 +sendCommand=\uba85\ub839 \ubcf4\ub0b4\uae30 +useAddress=\uc8fc\uc18c \uc0ac\uc6a9 +selectNone=\uc5c6\uc74c\uc744 \uc120\ud0dd\ud558\uc138\uc694 +timeRange=\uc2dc\uac04 \ubc94\uc704: +permissions=\uad8c\ud55c +startScan=\uc2a4\uce94 \uc2dc\uc791 +noReadme=\uc77d\uc5b4\ubcf4\uae30 \uc5c6\uc74c +stopScan=\uc2a4\uce94 \uc911\uc9c0 +reset2fa=2FA \uc7ac\uc124\uc815 +previous=\uc774\uc804\uc758 +useName=\uc0ac\uc6a9 \uc774\ub984 +outputs=\ucd9c\ub825 +refresh=\uc0c8\ub85c \uace0\uce58\ub2e4 +modify=\uc218\uc815\ud558\ub2e4 +cancel=\ucde8\uc18c +logout=\ub85c\uadf8\uc544\uc6c3 +remove=\uc81c\uac70\ud558\ub2e4 +verify=\ud655\uc778\ud558\ub2e4 +first=\uccab \ubc88\uc9f8 +login=\ub85c\uadf8\uc778 +last=\ub9c8\uc9c0\ub9c9 +view=\ubcf4\ub2e4 +next=\ub2e4\uc74c +stop=\uba48\ucd94\ub2e4 +add=\ucd94\uac00\ud558\ub2e4 +ui.empty=< +ok=\uc88b\uc544\uc694 +1ScanThisQrCodeWithYourAuthenticatorApp1=1. \uc778\uc99d \uc571\uc73c\ub85c \uc774 QR \ucf54\ub4dc\ub97c \uc2a4\uce94\ud558\uc138\uc694. +2EnterThe6digitCodeGeneratedByTheApp1=2. \uc571\uc5d0\uc11c \uc0dd\uc131\ub41c 6\uc790\ub9ac \ucf54\ub4dc\ub97c \uc785\ub825\ud558\uc138\uc694. +orEnterThisSecretKeyManually1=\ub610\ub294 \uc774 \ube44\ubc00 \ud0a4\ub97c \uc218\ub3d9\uc73c\ub85c \uc785\ub825\ud558\uc138\uc694. +loadingPackageInformation1=\ud328\ud0a4\uc9c0 \uc815\ubcf4 \ub85c\ub4dc \uc911... +loadingBundlesInformation1=\ubc88\ub4e4 \uc815\ubcf4 \ub85c\ub4dc \uc911... +arrayComponentNotSupported1=\uc5b4\ub808\uc774 \uad6c\uc131\uc694\uc18c\uac00 \uc9c0\uc6d0\ub418\uc9c0 \uc54a\uc74c +twofactorAuthentication1=2\ub2e8\uacc4 \uc778\uc99d +errorGeneratingQrCode1=QR \ucf54\ub4dc \uc0dd\uc131 \uc624\ub958 +installMorePackages1=\ucd94\uac00 \ud328\ud0a4\uc9c0 \uc124\uce58... +installMoreModules1=\ucd94\uac00 \ubaa8\ub4c8 \uc124\uce58... +detailedInstructions1=\uc790\uc138\ud55c \uc9c0\uce68 +processParameters1=\ud504\ub85c\uc138\uc2a4 \ub9e4\uac1c\ubcc0\uc218 +availableNetworks1=\uc0ac\uc6a9 \uac00\ub2a5\ud55c \ub124\ud2b8\uc6cc\ud06c +verifyAndEnable1=\ud655\uc778 \ubc0f \ud65c\uc131\ud654 +databaseContent1=\ub370\uc774\ud130\ubca0\uc774\uc2a4 \ucf58\ud150\uce20 +installSelected1=\uc120\ud0dd\ud55c \ud56d\ubaa9 \uc124\uce58 +dataSourceInfo1=\ub370\uc774\ud130 \uc18c\uc2a4 \uc815\ubcf4 +detectedDevices1=\uac10\uc9c0\ub41c \uc7a5\uce58 +itemsPerPage1=\ud398\uc774\uc9c0\ub2f9 \ud56d\ubaa9 \uc218: +processInputs1=\ud504\ub85c\uc138\uc2a4 \uc785\ub825 +commandInputs1=\uba85\ub839 \uc785\ub825 +providerClass1=\uacf5\uae09\uc790 \ud074\ub798\uc2a4 +configuration1=\uad6c\uc131 +processName1=\ud504\ub85c\uc138\uc2a4 \uc774\ub984: +applyChanges1=\ubcc0\uacbd \uc0ac\ud56d \uc801\uc6a9 +sendCommand1=\uba85\ub839 \ubcf4\ub0b4\uae30 +timeRange1=\uc2dc\uac04 \ubc94\uc704: +useAddress1=\uc8fc\uc18c \uc0ac\uc6a9 +permissions1=\uad8c\ud55c +selectNone1=\uc5c6\uc74c\uc744 \uc120\ud0dd\ud558\uc138\uc694 +startScan1=\uc2a4\uce94 \uc2dc\uc791 +noReadme1=\uc77d\uc5b4\ubcf4\uae30 \uc5c6\uc74c +reset2fa1=2FA \uc7ac\uc124\uc815 +stopScan1=\uc2a4\uce94 \uc911\uc9c0 +useName1=\uc0ac\uc6a9 \uc774\ub984 +previous1=\uc774\uc804\uc758 +refresh1=\uc0c8\ub85c \uace0\uce58\ub2e4 +outputs1=\ucd9c\ub825 +cancel1=\ucde8\uc18c +logout1=\ub85c\uadf8\uc544\uc6c3 +modify1=\uc218\uc815\ud558\ub2e4 +remove1=\uc81c\uac70\ud558\ub2e4 +verify1=\ud655\uc778\ud558\ub2e4 +first1=\uccab \ubc88\uc9f8 +login1=\ub85c\uadf8\uc778 +view1=\ubcf4\ub2e4 +stop1=\uba48\ucd94\ub2e4 +next1=\ub2e4\uc74c +last1=\ub9c8\uc9c0\ub9c9 +add1=\ucd94\uac00\ud558\ub2e4 +last2=>> +first2=<< +ok1=\uc88b\uc544\uc694 +next2=> +previous2=< + +pleaseEnterAUserIDFirst1=\uba3c\uc800 \uc0ac\uc6a9\uc790 ID\ub97c \uc785\ub825\ud558\uc138\uc694. +reset2FA1=2FA \uc7ac\uc124\uc815 +enable2FA1=2FA \ud65c\uc131\ud654 +twoFAEnabledSuccessfully1=2FA\uac00 \uc131\uacf5\uc801\uc73c\ub85c \ud65c\uc131\ud654\ub418\uc5c8\uc2b5\ub2c8\ub2e4 +invalidCode1=\uc798\ubabb\ub41c \ucf54\ub4dc +allowedAndDeniedPermissionsForUsersWithThisRole1=\uc774 \uc5ed\ud560\uc744 \uac00\uc9c4 \uc0ac\uc6a9\uc790\uc5d0\uac8c \ud5c8\uc6a9 \ubc0f \uac70\ubd80\ub41c \uad8c\ud55c +manualEntry1=\uc218\ub3d9 \uc785\ub825 +toggleAutoRefreshDataOncePerSecond1=\ucd08\ub2f9 \ud55c \ubc88\uc529 \ub370\uc774\ud130 \uc790\ub3d9 \uc0c8\ub85c \uace0\uce68\uc744 \uc804\ud658\ud569\ub2c8\ub2e4. +lookupSystem1=\uc870\ud68c \uc2dc\uc2a4\ud15c +lookupModule1=\uc870\ud68c \ubaa8\ub4c8 +lookupAddress1=\uc870\ud68c \uc8fc\uc18c +showPassword1=\ube44\ubc00\ubc88\ud638 \ud45c\uc2dc +showHistogram1=\ud788\uc2a4\ud1a0\uadf8\ub7a8 \ud45c\uc2dc +hideHistogram1=\ud788\uc2a4\ud1a0\uadf8\ub7a8 \uc228\uae30\uae30 +reloadDataFromDatabase1=\ub370\uc774\ud130\ubca0\uc774\uc2a4\uc5d0\uc11c \ub370\uc774\ud130 \ub2e4\uc2dc \ub85c\ub4dc +fois1=FOI +username1=\uc0ac\uc6a9\uc790 \uc774\ub984 +password1=\ube44\ubc00\ubc88\ud638 +loginFailed1=\ub85c\uadf8\uc778 \uc2e4\ud328 +invalidUsernameOrPassword1=\uc798\ubabb\ub41c \uc0ac\uc6a9\uc790 \uc774\ub984 \ub610\ub294 \ube44\ubc00\ubc88\ud638 +verificationCode1=\uc778\uc99d\ucf54\ub4dc +verificationFailed1=\ud655\uc778 \uc2e4\ud328 +datasource1=\ub370\uc774\ud130 \uc18c\uc2a4 +process1=\ud504\ub85c\uc138\uc2a4 +logoutFromOshNode1=OSH \ub178\ub4dc\uc5d0\uc11c \ub85c\uadf8\uc544\uc6c3 +setParameter1=\ub9e4\uac1c\ubcc0\uc218 \uc124\uc815 +setupTwoFactorAuthentication1=2\ub2e8\uacc4 \uc778\uc99d \uc124\uc815 + +action.new_item=\uc0c8\ub85c\uc6b4 {0} +Lane\ System=\ub808\uc778 \uc2dc\uc2a4\ud15c +Module\ Class=\ubaa8\ub4c8 \ud074\ub798\uc2a4 +Module\ Name=\ubaa8\ub4c8 \uc774\ub984 +Module\ ID=\ubaa8\ub4c8 ID +Description=\uc124\uba85 +SensorML\ URL=\uc13c\uc11cML URL +UniqueID=\uace0\uc720 ID +Last\ Updated=\ub9c8\uc9c0\ub9c9 \uc5c5\ub370\uc774\ud2b8 +Auto\ Start=\uc790\ub3d9 \uc2dc\uc791 +Delete\ Data\ on\ Lane\ Removal=\ucc28\uc120 \uc81c\uac70 \ub370\uc774\ud130 \uc0ad\uc81c +Latitude=\uc704\ub3c4 +Longitude=\uacbd\ub3c4 +Altitude=\uace0\ub3c4 +Initial\ RPM\ Config=\ucd08\uae30 RPM \uad6c\uc131 +Initial\ Camera\ Config=\ucd08\uae30 \uce74\uba54\ub77c \uad6c\uc131 +Lane\ Options\ Config=\ucc28\uc120 \uc635\uc158 \uad6c\uc131 +tab.general=\uc77c\ubc18\uc801\uc778 +tab.readme=\uc77d\uc5b4\ubcf4\uae30 +Fixed\ Location=\uace0\uc815 \uc704\uce58 +Fixed\ Orientation=\uace0\uc815 \ubc29\ud5a5 +# Auto-extracted DisplayInfo labels and descriptions +URL\ of\ SensorML\ file\ providing\ the\ base\ description\ of\ the\ sensor=\uc13c\uc11c\uc758 \uae30\ubcf8 \uc124\uba85\uc744 \uc81c\uacf5\ud558\ub294 SensorML \ud30c\uc77c\uc758 URL +Time\ at\ which\ the\ SensorML\ description\ was\ last\ updated=SensorML \uc124\uba85\uc774 \ub9c8\uc9c0\ub9c9\uc73c\ub85c \uc5c5\ub370\uc774\ud2b8\ub41c \uc2dc\uac04 +Geodetic\ latitude,\ in\ degrees=\uce21\uc9c0 \uc704\ub3c4(\ub3c4) +Longitude,\ in\ degrees=\uacbd\ub3c4(\ub3c4) +Height\ above\ ellipsoid,\ in\ meters=\ud0c0\uc6d0\uccb4 \uc704\uc758 \ub192\uc774(\ubbf8\ud130) +X\ coordinate,\ in\ meters=X \uc88c\ud45c(\ubbf8\ud130) +Y\ coordinate,\ in\ meters=Y \uc88c\ud45c(\ubbf8\ud130) +Z\ coordinate,\ in\ meters=Z \uc88c\ud45c(\ubbf8\ud130) +Pitch\ angle\ about\ Y\ axis,\ in\ degrees=Y\ucd95\uc5d0 \ub300\ud55c \ud53c\uce58 \uac01\ub3c4(\ub3c4) +Roll\ angle\ about\ X\ axis,\ in\ degrees=X\ucd95\uc5d0 \ub300\ud55c \ub864 \uac01\ub3c4(\ub3c4) +Location\ in\ EPSG\:4979\ coordinate\ reference\ frame=EPSG:4979 \uc88c\ud45c \ucc38\uc870 \ud504\ub808\uc784\uc758 \uc704\uce58 +Database\ Number=\ub370\uc774\ud130\ubca0\uc774\uc2a4 \ubc88\ud638 +Numerical\ identifier\ of\ the\ database.\ Each\ database\ that\ should\ be\ exposed\ via\ the\ federated\ database\ API\ must\ have\ a\ unique\ number\ on\ the\ sensor\ hub.\ If\ visibility\ through\ the\ federated\ database\ is\ not\ desired,\ it\ can\ be\ omitted.=\ub370\uc774\ud130\ubca0\uc774\uc2a4\uc758 \uc22b\uc790 \uc2dd\ubcc4\uc790\uc785\ub2c8\ub2e4. \uc5f0\ud569 \ub370\uc774\ud130\ubca0\uc774\uc2a4 API\ub97c \ud1b5\ud574 \ub178\ucd9c\ub418\uc5b4\uc57c \ud558\ub294 \uac01 \ub370\uc774\ud130\ubca0\uc774\uc2a4\ub294 \uc13c\uc11c \ud5c8\ube0c\uc5d0 \uace0\uc720 \ubc88\ud638\uac00 \uc788\uc5b4\uc57c \ud569\ub2c8\ub2e4. \uc5f0\ud569 \ub370\uc774\ud130\ubca0\uc774\uc2a4\ub97c \ud1b5\ud55c \uac00\uc2dc\uc131\uc744 \uc6d0\ud558\uc9c0 \uc54a\ub294 \uacbd\uc6b0 \uc0dd\ub7b5\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. +Enables\ fine-grained\ permission-based\ access\ control\ for\ this\ module=\uc774 \ubaa8\ub4c8\uc5d0 \ub300\ud574 \uc138\ubd84\ud654\ub41c \uad8c\ud55c \uae30\ubc18 \uc561\uc138\uc2a4 \uc81c\uc5b4\ub97c \ud65c\uc131\ud654\ud569\ub2c8\ub2e4. +Require\ Authentication=\uc778\uc99d \ud544\uc694 +Set\ to\ require\ remote\ users\ to\ be\ authentified\ before\ they\ can\ use\ this\ service=\uc6d0\uaca9 \uc0ac\uc6a9\uc790\uac00 \uc774 \uc11c\ube44\uc2a4\ub97c \uc0ac\uc6a9\ud558\uae30 \uc804\uc5d0 \uc778\uc99d\uc744 \ubc1b\ub3c4\ub85d \uc124\uc815 +Endpoint=\uc5d4\ub4dc\ud3ec\uc778\ud2b8 +Unique\ local\ ID\ of\ the\ module=\ubaa8\ub4c8\uc758 \uace0\uc720 \ub85c\uceec ID +User\ description\ for\ the\ module=\ubaa8\ub4c8\uc5d0 \ub300\ud55c \uc0ac\uc6a9\uc790 \uc124\uba85 +Set\ to\ automatically\ start\ the\ module\ when\ it\ is\ loaded=\ubaa8\ub4c8\uc774 \ub85c\ub4dc\ub418\uba74 \uc790\ub3d9\uc73c\ub85c \uc2dc\uc791\ub418\ub3c4\ub85d \uc124\uc815 +Module\ implementation\ class=\ubaa8\ub4c8 \uad6c\ud604 \ud074\ub798\uc2a4 +User\ chosen\ name\ for\ the\ module=\uc0ac\uc6a9\uc790\uac00 \uc120\ud0dd\ud55c \ubaa8\ub4c8 \uc774\ub984 +Name\ of\ topic/queue\ to\ use=\uc0ac\uc6a9\ud560 \uc8fc\uc81c/\ud050\uc758 \uc774\ub984 +Enable/disable\ writing\ to\ queue=\ub300\uae30\uc5f4\uc5d0 \uc4f0\uae30 \ud65c\uc131\ud654/\ube44\ud65c\uc131\ud654 +Enable/disable\ reading\ from\ queue=\ub300\uae30\uc5f4\uc5d0\uc11c \uc77d\uae30 \ud65c\uc131\ud654/\ube44\ud65c\uc131\ud654 +Protocol\ Options=\ud504\ub85c\ud1a0\ucf5c \uc635\uc158 +Common\ Configuration=\uacf5\ud1b5 \uad6c\uc131 +Common\ configuration\ for\ sensors\ in\ the\ array=\uc5b4\ub808\uc774\uc758 \uc13c\uc11c\uc5d0 \ub300\ud55c \uacf5\ud1b5 \uad6c\uc131 +Sensors\ Configuration=\uc13c\uc11c \uad6c\uc131 +Subsystem\ Config=\ud558\uc704 \uc2dc\uc2a4\ud15c \uad6c\uc131 +Configuration\ of\ the\ subsystem=\uc11c\ube0c\uc2dc\uc2a4\ud15c \uad6c\uc131 +Relative\ Location=\uc0c1\ub300 \uc704\uce58 +Location\ of\ this\ subsystem\ relative\ to\ the\ main\ system\ or\ platform\ reference\ frame=\uba54\uc778 \uc2dc\uc2a4\ud15c \ub610\ub294 \ud50c\ub7ab\ud3fc \ucc38\uc870 \ud504\ub808\uc784\uc5d0 \uc0c1\ub300\uc801\uc778 \uc774 \ud558\uc704 \uc2dc\uc2a4\ud15c\uc758 \uc704\uce58 +Relative\ Orientation=\uc0c1\ub300 \ubc29\ud5a5 +Orientation\ of\ this\ subsystem\ relative\ to\ the\ main\ system\ or\ platform\ reference\ frame=\uba54\uc778 \uc2dc\uc2a4\ud15c \ub610\ub294 \ud50c\ub7ab\ud3fc \ucc38\uc870 \ud504\ub808\uc784\uc744 \uae30\uc900\uc73c\ub85c \ud55c \uc774 \ud558\uc704 \uc2dc\uc2a4\ud15c\uc758 \ubc29\ud5a5 +Fixed\ system\ orientation\ in\ the\ local\ NED\ reference\ frame=\ub85c\uceec NED \ucc38\uc870 \ud504\ub808\uc784\uc758 \uace0\uc815 \uc2dc\uc2a4\ud15c \ubc29\ud5a5 +Subsystems=\ud558\uc704 \uc2dc\uc2a4\ud15c +Configuration\ of\ components\ of\ this\ sensor\ system=\uc774 \uc13c\uc11c \uc2dc\uc2a4\ud15c\uc758 \uad6c\uc131 \uc694\uc18c \uad6c\uc131 +Database\ Config=\ub370\uc774\ud130\ubca0\uc774\uc2a4 \uad6c\uc131 +Configuration\ of\ underlying\ database=\uae30\ubcf8 \ub370\uc774\ud130\ubca0\uc774\uc2a4 \uad6c\uc131 +System\ UIDs=\uc2dc\uc2a4\ud15c UID +Unique\ IDs\ of\ system\ drivers\ handled\ by\ this\ database=\uc774 \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc5d0\uc11c \ucc98\ub9ac\ud558\ub294 \uc2dc\uc2a4\ud15c \ub4dc\ub77c\uc774\ubc84\uc758 \uace0\uc720 ID +Automatic\ Purge\ Policy=\uc790\ub3d9 \uc81c\uac70 \uc815\ucc45 +Policy\ for\ automatically\ purging\ historical\ data=\uae30\ub85d \ub370\uc774\ud130 \uc790\ub3d9 \uc0ad\uc81c \uc815\ucc45 +Uncheck\ to\ disable\ auto-purge\ temporarily=\uc77c\uc2dc\uc801\uc73c\ub85c \uc790\ub3d9 \uc81c\uac70\ub97c \ube44\ud65c\uc131\ud654\ud558\ub824\uba74 \uc120\ud0dd\uc744 \ucde8\uc18c\ud558\uc138\uc694. +Purge\ Execution\ Period=\uc81c\uac70 \uc2e4\ud589 \uae30\uac04 +Unique\ IDs\ of\ system\ drivers\ to\ purge=\uc81c\uac70\ud560 \uc2dc\uc2a4\ud15c \ub4dc\ub77c\uc774\ubc84\uc758 \uace0\uc720 ID +Max\ Record\ Age=\ucd5c\ub300 \uae30\ub85d \uc5f0\ub839 +SensorML\ File=SensorML \ud30c\uc77c +Path\ of\ SensorML\ description\ of\ the\ process=SensorML \ud504\ub85c\uc138\uc2a4 \uc124\uba85 \uacbd\ub85c +List\ of\ users\ allowed\ access\ to\ this\ system=\uc774 \uc2dc\uc2a4\ud15c\uc5d0 \uc811\uadfc\uc774 \ud5c8\uc6a9\ub41c \uc0ac\uc6a9\uc790 \ubaa9\ub85d +List\ of\ security\ roles=\ubcf4\uc548 \uc5ed\ud560 \ubaa9\ub85d +User\ ID=\uc0ac\uc6a9\uc790 ID +Role\ ID=\uc5ed\ud560 ID +Source\ Database\ ID=\uc18c\uc2a4 \ub370\uc774\ud130\ubca0\uc774\uc2a4 ID +ID\ of\ database\ module\ to\ read\ data\ from\ (Federated\ database\ will\ be\ used\ if\ not\ set=\ub370\uc774\ud130\ub97c \uc77d\uc744 \ub370\uc774\ud130\ubca0\uc774\uc2a4 \ubaa8\ub4c8\uc758 ID(\uc124\uc815\ub418\uc9c0 \uc54a\uc740 \uacbd\uc6b0 \uc5f0\ud569 \ub370\uc774\ud130\ubca0\uc774\uc2a4\uac00 \uc0ac\uc6a9\ub428) +HTTP\ Port=HTTP \ud3ec\ud2b8 +HTTPS\ Port=HTTPS \ud3ec\ud2b8 +Root\ URL\ where\ static\ web\ content\ will\ be\ served.=\uc815\uc801 \uc6f9 \ucf58\ud150\uce20\uac00 \uc81c\uacf5\ub420 \ub8e8\ud2b8 URL\uc785\ub2c8\ub2e4. +Directory\ where\ static\ web\ content\ is\ located.=\uc815\uc801 \uc6f9 \ucf58\ud150\uce20\uac00 \uc788\ub294 \ub514\ub809\ud130\ub9ac\uc785\ub2c8\ub2e4. +Root\ URL\ where\ the\ server\ will\ accept\ requests.\ This\ will\ be\ the\ prefix\ to\ all\ servlet\ URLs.=\uc11c\ubc84\uac00 \uc694\uccad\uc744 \uc218\ub77d\ud560 \ub8e8\ud2b8 URL\uc785\ub2c8\ub2e4. \uc774\ub294 \ubaa8\ub4e0 \uc11c\ube14\ub9bf URL\uc758 \uc811\ub450\uc0ac\uac00 \ub429\ub2c8\ub2e4. +Proxy\ Base\ URL=\ud504\ub85d\uc2dc \uae30\ubcf8 URL +Public\ URL\ as\ viewed\ from\ the\ outside\ when\ requests\ transit\ through\ a\ proxy\ server.=\ud504\ub85d\uc2dc \uc11c\ubc84\ub97c \ud1b5\ud574 \uc694\uccad\uc774 \uc804\ub2ec\ub420 \ub54c \uc678\ubd80\uc5d0\uc11c \ubcf4\uc774\ub294 \uacf5\uc6a9 URL\uc785\ub2c8\ub2e4. +Authentication\ Method=\uc778\uc99d \ubc29\ubc95 +Method\ used\ to\ authenticate\ users\ on\ this\ server=\uc774 \uc11c\ubc84\uc5d0\uc11c \uc0ac\uc6a9\uc790\ub97c \uc778\uc99d\ud558\ub294 \ub370 \uc0ac\uc6a9\ub418\ub294 \ubc29\ubc95 +Path\ to\ a\ key\ store\ containing\ the\ certificate\ and\ keypair\ that\ this\ server\ will\ present\ to\ clients\ when\ accessed\ over\ HTTPS.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ \"javax.net.ssl.keyStore\"\ system\ property.\=Path to a key store containing the certificate and keypair that this server will present to clients when accessed over HTTPS. If this value is blank, will default to using the value of the \"javax.net.ssl.keyStore\" system property. +Alias\ for\ the\ public/private\ keypair\ within\ the\ key\ store\ that\ will\ be\ used\ to\ identify\ this\ server.=\uc774 \uc11c\ubc84\ub97c \uc2dd\ubcc4\ud558\ub294 \ub370 \uc0ac\uc6a9\ub420 \ud0a4 \uc800\uc7a5\uc18c \ub0b4\uc758 \uacf5\uac1c/\uac1c\uc778 \ud0a4 \uc30d\uc5d0 \ub300\ud55c \ubcc4\uce6d\uc785\ub2c8\ub2e4. +Path\ to\ the\ TLS\ trust\ store\ that\ is\ used\ when\ client\ authentication\ is\ required.\ Ignored\ if\ client\ certificate\ authentication\ is\ not\ used.\ Certificates\ in\ this\ file\ designate\ the\ signing\ authorities\ for\ client\ certificates\ that\ will\ be\ trusted.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ \"javax.net.ssl.trustStore\"\ system\ property.\=Path to the TLS trust store that is used when client authentication is required. Ignored if client certificate authentication is not used. Certificates in this file designate the signing authorities for client certificates that will be trusted. If this value is blank, will default to using the value of the \"javax.net.ssl.trustStore\" system property. +Password\ for\ the\ trust\ store.\ Ignored\ if\ client\ certificate\ authentication\ is\ not\ used.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ \"javax.net.ssl.trustStorePassword\"\ system\ property.\=Password for the trust store. Ignored if client certificate authentication is not used. If this value is blank, will default to using the value of the \"javax.net.ssl.trustStorePassword\" system property. +Enable\ CORS=CORS \ud65c\uc131\ud654 +Enable\ generation\ of\ CORS\ headers\ to\ allow\ cross-domain\ requests\ from\ browsers=\ube0c\ub77c\uc6b0\uc800\uc758 \ub3c4\uba54\uc778 \uac04 \uc694\uccad\uc744 \ud5c8\uc6a9\ud558\ub824\uba74 CORS \ud5e4\ub354 \uc0dd\uc131\uc744 \ud65c\uc131\ud654\ud558\uc138\uc694. +Capabilities\ Info=\uae30\ub2a5 \uc815\ubcf4 +Information\ included\ in\ the\ service\ capabilities\ document=\uc11c\ube44\uc2a4 \uc5ed\ub7c9 \ubb38\uc11c\uc5d0 \ud3ec\ud568\ub41c \uc815\ubcf4 +Enable\ HTTP\ GET=HTTP GET \ud65c\uc131\ud654 +Enables/disables\ HTTP\ GET\ bindings\ on\ operations\ that\ support\ it=\uc774\ub97c \uc9c0\uc6d0\ud558\ub294 \uc791\uc5c5\uc5d0\uc11c HTTP GET \ubc14\uc778\ub529\uc744 \ud65c\uc131\ud654/\ube44\ud65c\uc131\ud654\ud569\ub2c8\ub2e4. +Enable\ HTTP\ POST=HTTP POST \ud65c\uc131\ud654 +Enables/disables\ HTTP\ POST\ bindings\ on\ operations\ that\ support\ it=\uc774\ub97c \uc9c0\uc6d0\ud558\ub294 \uc791\uc5c5\uc5d0\uc11c HTTP POST \ubc14\uc778\ub529\uc744 \ud65c\uc131\ud654/\ube44\ud65c\uc131\ud654\ud569\ub2c8\ub2e4. +Enable\ HTTP\ SOAP=HTTP SOAP \ud65c\uc131\ud654 +Enables/disables\ HTTP\ SOAP\ bindings\ on\ operations\ that\ support\ it=\uc774\ub97c \uc9c0\uc6d0\ud558\ub294 \uc791\uc5c5\uc5d0\uc11c HTTP SOAP \ubc14\uc778\ub529\uc744 \ud65c\uc131\ud654/\ube44\ud65c\uc131\ud654\ud569\ub2c8\ub2e4. +Connection\ Timeout=\uc5f0\uacb0 \uc2dc\uac04 \ucd08\uacfc +Reconnect\ Period=\uc7ac\uc811\uc18d \uae30\uac04 +Max\ Reconnect\ Attempts=\ucd5c\ub300 \uc7ac\uc5f0\uacb0 \uc2dc\ub3c4 \ud69f\uc218 +Maximum\ number\ of\ times\ the\ client\ will\ attempt\ to\ reconnect\ when\ the\ connection\ is\ not\ available\ or\ lost.\ A\ negative\ value\ means\ that\ there\ is\ no\ limit\ to\ the\ number\ of\ reconnection\ attempts.\ Zero\ means\ not\ to\ attempt\ reconnection.=\uc5f0\uacb0\uc744 \uc0ac\uc6a9\ud560 \uc218 \uc5c6\uac70\ub098 \ub04a\uc5b4\uc84c\uc744 \ub54c \ud074\ub77c\uc774\uc5b8\ud2b8\uac00 \ub2e4\uc2dc \uc5f0\uacb0\uc744 \uc2dc\ub3c4\ud558\ub294 \ucd5c\ub300 \ud69f\uc218\uc785\ub2c8\ub2e4. \uc74c\uc218 \uac12\uc740 \uc7ac\uc5f0\uacb0 \uc2dc\ub3c4 \ud69f\uc218\uc5d0 \uc81c\ud55c\uc774 \uc5c6\uc74c\uc744 \uc758\ubbf8\ud569\ub2c8\ub2e4. 0\uc740 \uc7ac\uc5f0\uacb0\uc744 \uc2dc\ub3c4\ud558\uc9c0 \uc54a\uc74c\uc744 \uc758\ubbf8\ud569\ub2c8\ub2e4. +IP\ or\ DNS\ name\ of\ remote\ host=\uc6d0\uaca9 \ud638\uc2a4\ud2b8\uc758 IP \ub610\ub294 DNS \uc774\ub984 +IP\ of\ local\ network\ interface\ to\ bind\ to\ or\ 'AUTO'\ to\ select\ it\ automatically=\ubc14\uc778\ub529\ud560 \ub85c\uceec \ub124\ud2b8\uc6cc\ud06c \uc778\ud130\ud398\uc774\uc2a4\uc758 IP \ub610\ub294 \uc790\ub3d9\uc73c\ub85c \uc120\ud0dd\ud558\ub824\uba74 ''AUTO'' +Connection\ Options=\uc5f0\uacb0 \uc635\uc158 +Serial\ port\ device\ name.\ Usually\ something\ like\ /dev/ttyXXX\ on\ Linux=\uc9c1\ub82c \ud3ec\ud2b8 \uc7a5\uce58 \uc774\ub984\uc785\ub2c8\ub2e4. \uc77c\ubc18\uc801\uc73c\ub85c Linux\uc758 /dev/ttyXXX\uc640 \uac19\uc2b5\ub2c8\ub2e4. +Minimum\ number\ of\ bytes\ to\ receive\ before\ they\ are\ sent\ to\ the\ caller=\ud638\ucd9c\uc790\uc5d0\uac8c \uc804\uc1a1\ub418\uae30 \uc804\uc5d0 \uc218\uc2e0\ud560 \ucd5c\uc18c \ubc14\uc774\ud2b8 \uc218 +Local\ port\ number\ to\ use\ on\ the\ local\ host=\ub85c\uceec \ud638\uc2a4\ud2b8\uc5d0\uc11c \uc0ac\uc6a9\ud560 \ub85c\uceec \ud3ec\ud2b8 \u200b\u200b\ubc88\ud638 +Physical\ address\ of\ Bluetooth\ device\ to\ connect\ to=\uc5f0\uacb0\ud560 Bluetooth \uc7a5\uce58\uc758 \ubb3c\ub9ac\uc801 \uc8fc\uc18c +Port\ number\ to\ connect\ to\ on\ remote\ host=\uc6d0\uaca9 \ud638\uc2a4\ud2b8\uc5d0 \uc5f0\uacb0\ud560 \ud3ec\ud2b8 \ubc88\ud638 +User\ Name=\uc0ac\uc6a9\uc790 \uc774\ub984 +Remote\ user\ name=\uc6d0\uaca9 \uc0ac\uc6a9\uc790 \uc774\ub984 +Password=\ube44\ubc00\ubc88\ud638 +Remote\ password=\uc6d0\uaca9 \ube44\ubc00\ubc88\ud638 +Secure\ communications\ with\ SSL/TLS=SSL/TLS\ub97c \ud1b5\ud55c \ubcf4\uc548 \ud1b5\uc2e0 +Enable\ to\ check\ if\ remote\ host\ is\ reachable\ before\ attempting\ further\ operations=\ucd94\uac00 \uc791\uc5c5\uc744 \uc2dc\ub3c4\ud558\uae30 \uc804\uc5d0 \uc6d0\uaca9 \ud638\uc2a4\ud2b8\uc5d0 \uc5f0\uacb0\ud560 \uc218 \uc788\ub294\uc9c0 \ud655\uc778\ud558\ub824\uba74 \ud65c\uc131\ud654\ud558\uc138\uc694. +Path\ or\ resource\ or\ service\ relative\ to\ server\ root=\uc11c\ubc84 \ub8e8\ud2b8\uc5d0 \uc0c1\ub300\uc801\uc778 \uacbd\ub85c, \ub9ac\uc18c\uc2a4 \ub610\ub294 \uc11c\ube44\uc2a4 +Unique\ ID\ of\ system\ group=\uc2dc\uc2a4\ud15c \uadf8\ub8f9\uc758 \uace0\uc720 ID +Name\ of\ system\ group=\uc2dc\uc2a4\ud15c \uadf8\ub8f9 \uc774\ub984 +Description\ of\ system\ group=\uc2dc\uc2a4\ud15c \uadf8\ub8f9 \uc124\uba85 +List\ of\ bundle\ repository\ URLs=\ubc88\ub4e4 \uc800\uc7a5\uc18c URL \ubaa9\ub85d +A\ human\ readable\ friendly\ identifier\ for\ the\ deployment=\ubc30\ud3ec\uc5d0 \ub300\ud574 \uc0ac\ub78c\uc774 \uc77d\uc744 \uc218 \uc788\ub294 \uce5c\uc219\ud55c \uc2dd\ubcc4\uc790\uc785\ub2c8\ub2e4. +Enable\ Landing\ Page=\ub79c\ub529 \ud398\uc774\uc9c0 \ud65c\uc131\ud654 +Enable\ Landing\ Servlet\ to\ redirect\ users\ to\ landing\ page=\ub79c\ub529 \uc11c\ube14\ub9bf\uc744 \ud65c\uc131\ud654\ud558\uc5ec \uc0ac\uc6a9\uc790\ub97c \ub79c\ub529 \ud398\uc774\uc9c0\ub85c \ub9ac\ub514\ub809\uc158 +Config\ Class=\uad6c\uc131 \ud074\ub798\uc2a4 +Type\ of\ module\ config\ class\ for\ which\ a\ custom\ panel\ must\ be\ generated=\uc0ac\uc6a9\uc790 \uc815\uc758 \ud328\ub110\uc744 \uc0dd\uc131\ud574\uc57c \ud558\ub294 \ubaa8\ub4c8 \uad6c\uc131 \ud074\ub798\uc2a4 \uc720\ud615 +UI\ Class=UI \ud074\ub798\uc2a4 +Fully\ qualified\ name\ of\ class\ implementing\ IModuleAdminPanel=IModuleAdminPanel\uc744 \uad6c\ud604\ud558\ub294 \ud074\ub798\uc2a4\uc758 \uc815\uaddc\ud654\ub41c \uc774\ub984 + +# Auto-extracted property IDs +sensorML=\uc13c\uc11c ML +lastUpdated=\ub9c8\uc9c0\ub9c9 \uc5c5\ub370\uc774\ud2b8 +lat=\uc704\ub3c4 +lon=\ub860 +alt=Alt +x=\uc5d1\uc2a4 +y=Y +z=\uc9c0 +heading=\ud45c\uc81c +pitch=\uc815\uc810 +roll=\uc5f0\ud0c0 +location=\uc704\uce58 +orientation=\uc815\uc704 +databaseNum=\ub370\uc774\ud130\ubca0\uc774\uc2a4 \ubc88\ud638 +enableAccessControl=\uc561\uc138\uc2a4 \uc81c\uc5b4 \ud65c\uc131\ud654 +requireAuth=\uc778\uc99d \ud544\uc694 +mimeType=\ub9c8\uc784 \uc720\ud615 +className=\ud074\ub798\uc2a4 \uc774\ub984 +endPoint=\uc885\ub8cc\uc810 +id=ID +description=\uc124\uba85 +autoStart=\uc790\ub3d9 \uc2dc\uc791 +topicName=\uc8fc\uc81c \uc774\ub984 +enablePublish=\uac8c\uc2dc \ud65c\uc131\ud654 +enableSubscribe=\uad6c\ub3c5 \ud65c\uc131\ud654 +protocol=\uaddc\uc57d +moduleConfigPath=\ubaa8\ub4c8 \uad6c\uc131 \uacbd\ub85c +moduleDataPath=\ubaa8\ub4c8 \ub370\uc774\ud130 \uacbd\ub85c +commonConfig=\uacf5\ud1b5 \uad6c\uc131 +sensors=Sensors +config=\uad6c\uc131 +uniqueID=\uace0\uc720 ID +subsystems=\ud558\uc704 \uc2dc\uc2a4\ud15c +dbConfig=DB \uad6c\uc131 +systemUIDs=\uc2dc\uc2a4\ud15c UID +autoPurgeConfig=\uc790\ub3d9 \ud37c\uc9c0 \uad6c\uc131 +minCommitPeriod=\ucd5c\uc18c \ucee4\ubc0b \uae30\uac04 +enabled=\ud65c\uc131\ud654\ub428 +purgePeriod=\ud37c\uc9c0 \uae30\uac04 +maxRecordAge=\ucd5c\ub300 \uae30\ub85d \uc5f0\ub839 +users=\uc0ac\uc6a9\uc790 +roles=\uc5ed\ud560 +allow=\ud5c8\uc6a9\ud558\ub2e4 +deny=\ubd80\uc778\ud558\ub2e4 +userID=\uc0ac\uc6a9\uc790 ID +name=\uc774\ub984 +password=\ube44\ubc00\ubc88\ud638 +certificate=\uc790\uaca9\uc99d +twoFactorSecret=\ub450 \uac00\uc9c0 \uc694\uc18c\uc758 \ube44\ubc00 +isTwoFactorEnabled=2\ub2e8\uacc4 \ud65c\uc131\ud654 \uc5ec\ubd80 +roleID=\uc5ed\ud560 ID +sourceDatabaseId=\uc18c\uc2a4 \ub370\uc774\ud130\ubca0\uc774\uc2a4 ID +includeFilter=\ud3ec\ud568 \ud544\ud130 +excludeFilter=\uc81c\uc678 \ud544\ud130 +httpPort=HTTP \ud3ec\ud2b8 +httpsPort=Https \ud3ec\ud2b8 +staticDocsRootUrl=\uc815\uc801 \ubb38\uc11c \ub8e8\ud2b8 URL +staticDocsRootDir=\uc815\uc801 \ubb38\uc11c \ub8e8\ud2b8 \ub514\ub809\ud130\ub9ac +servletsRootUrl=\uc11c\ube14\ub9bf \ub8e8\ud2b8 URL +proxyBaseUrl=\ud504\ub85d\uc2dc \uae30\ubcf8 URL +authMethod=\uc778\uc99d \ubc29\ubc95 +keyStorePath=\ud0a4 \uc800\uc7a5\uc18c \uacbd\ub85c +keyStorePassword=\ud0a4 \uc800\uc7a5\uc18c \ube44\ubc00\ubc88\ud638 +keyAlias=\ud0a4 \ubcc4\uce6d +trustStorePath=\uc2e0\ub8b0 \uc800\uc7a5\uc18c \uacbd\ub85c +trustStorePassword=\uc2e0\ub8b0 \uc800\uc7a5\uc18c \ube44\ubc00\ubc88\ud638 +xmlConfigFile=XML \uad6c\uc131 \ud30c\uc77c +enableCORS=Cors \ud65c\uc131\ud654 +title=Title +keywords=\ud0a4\uc6cc\ub4dc +fees=\uc218\uc218\ub8cc +accessConstraints=\uc811\uadfc \uc81c\uc57d +serviceProvider=\uc11c\ube44\uc2a4 \uc81c\uacf5\uc790 +ogcCapabilitiesInfo=OGC \uae30\ub2a5 \uc815\ubcf4 +enableHttpGET=HTTP \uac00\uc838\uc624\uae30 \ud65c\uc131\ud654 +enableHttpPOST=HTTP \ud3ec\uc2a4\ud2b8 \ud65c\uc131\ud654 +enableSOAP=\ube44\ub204 \ud65c\uc131\ud654 +connectTimeout=\uc5f0\uacb0 \uc2dc\uac04 \ucd08\uacfc +reconnectPeriod=\uc7ac\uc811\uc18d \uae30\uac04 +reconnectAttempts=\uc7ac\uc5f0\uacb0 \uc2dc\ub3c4 +deviceID=\uc7a5\uce58 ID +deviceClass=\uc7a5\uce58 \ud074\ub798\uc2a4 +remoteHost=\uc6d0\uaca9 \ud638\uc2a4\ud2b8 +localAddress=\ud604\uc9c0 \uc8fc\uc18c +connection=\uc5f0\uacb0 +portName=\ud3ec\ud2b8 \uc774\ub984 +baudRate=\uc804\uc1a1 \uc18d\ub3c4 +dataBits=\ub370\uc774\ud130 \ube44\ud2b8 +stopBits=\uc815\uc9c0 \ube44\ud2b8 +parity=\ub465\uac00 +receiveTimeout=\uc218\uc2e0 \uc2dc\uac04 \ucd08\uacfc +receiveThreshold=\uc218\uc2e0 \uc784\uacc4\uac12 +remotePort=\uc6d0\uaca9 \ud3ec\ud2b8 +localPort=\ub85c\uceec \ud3ec\ud2b8 +deviceAddress=\uc7a5\uce58 \uc8fc\uc18c +deviceName=\uc7a5\uce58 \uc774\ub984 +serviceUuid=\uc11c\ube44\uc2a4 UUID +user=\uc0ac\uc6a9\uc790 +enableTLS=Tls \ud65c\uc131\ud654 +checkReachability=\uc811\uadfc\uc131 \ud655\uc778 +resourcePath=\ub9ac\uc18c\uc2a4 \uacbd\ub85c +uid=UID +securityRole=\ubcf4\uc548 \uc5ed\ud560 +passwordField=\ube44\ubc00\ubc88\ud638 \ud544\ub4dc +widgetSet=\uc704\uc82f \uc138\ud2b8 +bundleRepoUrls=\ubc88\ub4e4 \uc800\uc7a5\uc18c URL +customPanels=\ub9de\ucda4\ud615 \ud328\ub110 +customForms=\uc0ac\uc6a9\uc790 \uc815\uc758 \uc591\uc2dd +deploymentName=\ubc30\ud3ec \uc774\ub984 +enableLandingPage=\ub79c\ub529 \ud398\uc774\uc9c0 \ud65c\uc131\ud654 +configClass=\uad6c\uc131 \ud074\ub798\uc2a4 +uiClass=UI \ud074\ub798\uc2a4 +moduleClass=\ubaa8\ub4c8 \ud074\ub798\uc2a4 + +# Auto-extracted hardcoded UI strings +testLinks1=\ud14c\uc2a4\ud2b8 \ub9c1\ud06c +uniqueID1=\uace0\uc720 ID +foiIDs1=FOI ID +version1=\ubc84\uc804 + +Connected\ Systems\ Endpoint=\uc5f0\uacb0\ub41c \uc2dc\uc2a4\ud15c \uc5d4\ub4dc\ud3ec\uc778\ud2b8 +Connected\ Systems\ endpoint\ where\ the\ requests\ are\ sent=\uc694\uccad\uc774 \uc804\uc1a1\ub418\ub294 \uc5f0\uacb0\ub41c \uc2dc\uc2a4\ud15c \ub05d\uc810 +Connection\ Settings=\uc5f0\uacb0 \uc124\uc815 +Custom\ connector\ configurations=\ub9de\ucda4\ud615 \ucee4\ub125\ud130 \uad6c\uc131 +Custom\ provider\ configurations=\ub9de\ucda4\ud615 \uacf5\uae09\uc790 \uad6c\uc131 +Database\ ID=\ub370\uc774\ud130\ubca0\uc774\uc2a4 ID +Default\ live\ time-out\ for\ all\ offerings,\ unless\ overriden\ by\ custom\ provider\ settings=\uc0ac\uc6a9\uc790 \uc9c0\uc815 \uacf5\uae09\uc790 \uc124\uc815\uc73c\ub85c \uc7ac\uc815\uc758\ub418\uc9c0 \uc54a\ub294 \ud55c \ubaa8\ub4e0 \uc81c\ud488\uc5d0 \ub300\ud55c \uae30\ubcf8 \uc2e4\uc2dc\uac04 \uc2dc\uac04 \uc81c\ud55c +Default\ live\ time-out\ for\ new\ offerings\ created\ via\ SOS-T=SOS-T\ub97c \ud1b5\ud574 \uc0dd\uc131\ub41c \uc0c8 \uc81c\ud488\uc5d0 \ub300\ud55c \uae30\ubcf8 \uc2e4\uc2dc\uac04 \uc2dc\uac04 \uc81c\ud55c +Enable\ to\ use\ a\ persistent\ HTTP\ connection\ for\ InsertResult=InsertResult\uc5d0 \ub300\ud574 \uc9c0\uc18d\uc801\uc778 HTTP \uc5f0\uacb0\uc744 \uc0ac\uc6a9\ud558\ub824\uba74 \ud65c\uc131\ud654\ud558\uc138\uc694. +Execution\ period\ of\ the\ purge\ policy\ (in\ seconds)=\uc81c\uac70 \uc815\ucc45 \uc2e4\ud589 \uae30\uac04(\ucd08) +Filtered\ view\ to\ select\ systems\ exposed\ as\ read-only\ through\ this\ service=\uc774 \uc11c\ube44\uc2a4\ub97c \ud1b5\ud574 \uc77d\uae30 \uc804\uc6a9\uc73c\ub85c \ub178\ucd9c\ub41c \uc2dc\uc2a4\ud15c\uc744 \uc120\ud0dd\ud558\uae30 \uc704\ud55c \ud544\ud130\ub9c1\ub41c \ubcf4\uae30 +Filtered\ view\ to\ select\ systems/datastreams\ to\ register\ with\ Connected\ Systems=\uc5f0\uacb0\ub41c \uc2dc\uc2a4\ud15c\uc5d0 \ub4f1\ub85d\ud560 \uc2dc\uc2a4\ud15c/\ub370\uc774\ud130 \uc2a4\ud2b8\ub9bc\uc744 \uc120\ud0dd\ud558\ub294 \ud544\ud130\ub9c1\ub41c \ubcf4\uae30 +Filtered\ view\ to\ select\ systems/datastreams\ to\ register\ with\ remote\ SOS=\uc6d0\uaca9 SOS\uc5d0 \ub4f1\ub85d\ud560 \uc2dc\uc2a4\ud15c/\ub370\uc774\ud130 \uc2a4\ud2b8\ub9bc\uc744 \uc120\ud0dd\ud558\ub294 \ud544\ud130\ub9c1\ub41c \ubcf4\uae30 +Fixed\ system\ location\ in\ EPSG\ 4979\ (WGS84)\ coordinate\ system=EPSG 4979(WGS84) \uc88c\ud45c\uacc4\uc758 \uace0\uc815 \uc2dc\uc2a4\ud15c \uc704\uce58 +For\ each\ connection\ or\ reconnection\ attempt,\ the\ client\ will\ wait\ for\ the\ remote\ side\ to\ respond\ until\ this\ timeout\ expires\ (in\ ms)=\uac01 \uc5f0\uacb0 \ub610\ub294 \uc7ac\uc5f0\uacb0 \uc2dc\ub3c4\uc5d0 \ub300\ud574 \ud074\ub77c\uc774\uc5b8\ud2b8\ub294 \uc774 \uc81c\ud55c \uc2dc\uac04(ms)\uc774 \ub9cc\ub8cc\ub420 \ub54c\uae4c\uc9c0 \uc6d0\uaca9 \uce21\uc758 \uc751\ub2f5\uc744 \uae30\ub2e4\ub9bd\ub2c8\ub2e4. +Heading\ (or\ yaw)\ angle\ about\ Z\ axis\ in\ degrees=Z\ucd95\uc5d0 \ub300\ud55c \ubc29\ud5a5(\ub610\ub294 \uc694) \uac01\ub3c4(\ub3c4) +How\ long\ the\ client\ will\ wait\ after\ connection\ is\ lost\ before\ it\ will\ attempt\ to\ reconnect\ (in\ ms)=\ud074\ub77c\uc774\uc5b8\ud2b8\uac00 \uc5f0\uacb0\uc774 \ub04a\uc5b4\uc9c4 \ud6c4 \ub2e4\uc2dc \uc5f0\uacb0\uc744 \uc2dc\ub3c4\ud558\uae30 \uc804\uae4c\uc9c0 \uae30\ub2e4\ub9ac\ub294 \uc2dc\uac04(ms) +ID\ Generator=ID \uc0dd\uc131\uae30 +ID\ of\ database\ module\ used\ for\ persisting\ data\ received\ by\ this\ service.\ If\ none\ is\ provided,\ new\ systems\ registered\ through\ this\ service\ will\ be\ available\ on\ the\ hub,\ but\ with\ no\ persistence\ guarantee\ across\ restarts.=\uc774 \uc11c\ube44\uc2a4\uc5d0\uc11c \uc218\uc2e0\ud55c \ub370\uc774\ud130\ub97c \uc720\uc9c0\ud558\ub294 \ub370 \uc0ac\uc6a9\ub418\ub294 \ub370\uc774\ud130\ubca0\uc774\uc2a4 \ubaa8\ub4c8\uc758 ID\uc785\ub2c8\ub2e4. \uc544\ubb34 \uac83\ub3c4 \uc81c\uacf5\ub418\uc9c0 \uc54a\uc73c\uba74 \uc774 \uc11c\ube44\uc2a4\ub97c \ud1b5\ud574 \ub4f1\ub85d\ub41c \uc0c8 \uc2dc\uc2a4\ud15c\uc744 \ud5c8\ube0c\uc5d0\uc11c \uc0ac\uc6a9\ud560 \uc218 \uc788\uc9c0\ub9cc \ub2e4\uc2dc \uc2dc\uc791\ud574\ub3c4 \uc9c0\uc18d\uc131\uc774 \ubcf4\uc7a5\ub418\uc9c0\ub294 \uc54a\uc2b5\ub2c8\ub2e4. +ID\ of\ database\ module\ used\ for\ persisting\ data\ received\ by\ this\ service.\ If\ none\ is\ provided,\ new\ systems\ registered\ through\ this\ service\ will\ be\ available\ on\ the\ hub,\ but\ with\ no\ persistence\ guarantee\ across\ restarts.\ Only\ the\ latest\ observation\ from\ each\ datastream\ will\ be\ available\ and\ older\ observations\ will\ be\ discarded=\uc774 \uc11c\ube44\uc2a4\uc5d0\uc11c \uc218\uc2e0\ud55c \ub370\uc774\ud130\ub97c \uc720\uc9c0\ud558\ub294 \ub370 \uc0ac\uc6a9\ub418\ub294 \ub370\uc774\ud130\ubca0\uc774\uc2a4 \ubaa8\ub4c8\uc758 ID\uc785\ub2c8\ub2e4. \uc544\ubb34 \uac83\ub3c4 \uc81c\uacf5\ub418\uc9c0 \uc54a\uc73c\uba74 \uc774 \uc11c\ube44\uc2a4\ub97c \ud1b5\ud574 \ub4f1\ub85d\ub41c \uc0c8 \uc2dc\uc2a4\ud15c\uc744 \ud5c8\ube0c\uc5d0\uc11c \uc0ac\uc6a9\ud560 \uc218 \uc788\uc9c0\ub9cc \ub2e4\uc2dc \uc2dc\uc791\ud574\ub3c4 \uc9c0\uc18d\uc131\uc774 \ubcf4\uc7a5\ub418\uc9c0\ub294 \uc54a\uc2b5\ub2c8\ub2e4. \uac01 \ub370\uc774\ud130 \uc2a4\ud2b8\ub9bc\uc758 \ucd5c\uc2e0 \uad00\ucc30\ub9cc \uc0ac\uc6a9\ud560 \uc218 \uc788\uc73c\uba70 \uc774\uc804 \uad00\ucc30\uc740 \uc0ad\uc81c\ub429\ub2c8\ub2e4. +Individual\ configuration\ of\ sensors\ in\ the\ array\ (will\ override\ common\ configuration)=\uc5b4\ub808\uc774 \ub0b4 \uc13c\uc11c\uc758 \uac1c\ubcc4 \uad6c\uc131(\uacf5\ud1b5 \uad6c\uc131\ubcf4\ub2e4 \uc6b0\uc120 \uc801\uc6a9\ub428) +List\ of\ observed\ properties\ URI\ to\ make\ available\ as\ outputs=\ucd9c\ub825\uc73c\ub85c \uc0ac\uc6a9\ud560 \uc218 \uc788\ub294 \uad00\ucc30\ub41c \uc18d\uc131 URI \ubaa9\ub85d +Mapping\ of\ custom\ formats\ mime-types\ to\ custom\ serializer\ classes=\uc0ac\uc6a9\uc790 \uc815\uc758 \ud615\uc2dd MIME \uc720\ud615\uc744 \uc0ac\uc6a9\uc790 \uc815\uc758 \uc9c1\ub82c \ubcc0\ud658\uae30 \ud074\ub798\uc2a4\uc5d0 \ub9e4\ud551 +Mappings\ used\ by\ CURIE\ to\ URI\ resolver=CURIE\uc5d0\uc11c URI \ud574\uc11d\uae30\uc5d0 \uc0ac\uc6a9\ud558\ub294 \ub9e4\ud551 +Max\ Limit=\ucd5c\ub300 \ud55c\ub3c4 +Max\ Observations\ Returned=\ubc18\ud658\ub41c \ucd5c\ub300 \uad00\uce21\uce58 +Max\ Records\ Returned=\ubc18\ud658\ub41c \ucd5c\ub300 \ub808\ucf54\ub4dc \uc218 +Max\ delay\ between\ auto-commit\ execution,\ in\ seconds.\ 0\ to\ disable\ time-based\ auto-commit=\uc790\ub3d9 \ucee4\ubc0b \uc2e4\ud589 \uc0ac\uc774\uc758 \ucd5c\ub300 \uc9c0\uc5f0 \uc2dc\uac04(\ucd08)\uc785\ub2c8\ub2e4. 0\uc740 \uc2dc\uac04 \uae30\ubc18 \uc790\ub3d9 \ucee4\ubc0b\uc744 \ube44\ud65c\uc131\ud654\ud569\ub2c8\ub2e4. +Maximum\ age\ of\ data\ to\ be\ kept\ in\ storage\ (in\ seconds)=\uc2a4\ud1a0\ub9ac\uc9c0\uc5d0 \ubcf4\uad00\ud560 \ub370\uc774\ud130\uc758 \ucd5c\ub300 \uae30\uac04(\ucd08) +Maximum\ number\ of\ FoI\ IDs\ listed\ in\ capabilities=\uae30\ub2a5\uc5d0 \ub098\uc5f4\ub41c \ucd5c\ub300 FoI ID \uc218 +Maximum\ number\ of\ observations\ returned\ \ by\ a\ historical\ GetObservation\ request\ (for\ each\ selected\ offering)=\uae30\ub85d GetObservation \uc694\uccad\uc5d0\uc11c \ubc18\ud658\ub41c \ucd5c\ub300 \uad00\ucc30 \uc218(\uc120\ud0dd\ud55c \uac01 \uc81c\ud488\uc5d0 \ub300\ud574) +Maximum\ number\ of\ records\ in\ upload\ queue\ (used\ to\ compensate\ for\ variable\ bandwidth)=\uc5c5\ub85c\ub4dc \ub300\uae30\uc5f4\uc758 \ucd5c\ub300 \ub808\ucf54\ub4dc \uc218(\uac00\ubcc0 \ub300\uc5ed\ud3ed\uc744 \ubcf4\uc0c1\ud558\ub294 \ub370 \uc0ac\uc6a9\ub428) +Maximum\ number\ of\ resources\ returned\ in\ a\ single\ page=\ub2e8\uc77c \ud398\uc774\uc9c0\uc5d0 \ubc18\ud658\ub418\ub294 \ucd5c\ub300 \ub9ac\uc18c\uc2a4 \uc218 +Maximum\ number\ of\ result\ records\ returned\ by\ a\ historical\ GetResult\ request=\uae30\ub85d GetResult \uc694\uccad\uc73c\ub85c \ubc18\ud658\ub41c \ucd5c\ub300 \uacb0\uacfc \ub808\ucf54\ub4dc \uc218 +Maximum\ number\ of\ stream\ errors\ before\ we\ try\ to\ reconnect\ to\ remote\ server=\uc6d0\uaca9 \uc11c\ubc84\uc5d0 \ub2e4\uc2dc \uc5f0\uacb0\uc744 \uc2dc\ub3c4\ud558\uae30 \uc804\uc758 \ucd5c\ub300 \uc2a4\ud2b8\ub9bc \uc624\ub958 \uc218 +Memory\ cache\ size\ for\ page\ chunks,\ in\ KB=\ud398\uc774\uc9c0 \uccad\ud06c\uc758 \uba54\ubaa8\ub9ac \uce90\uc2dc \ud06c\uae30(KB) +Metadata\ of\ system\ group\ that\ will\ be\ created\ to\ contain\ all\ procedures/sensors\ registered\ through\ this\ service.\ Only\ sensors\ in\ this\ group\ will\ be\ modifiable\ by\ this\ service=\ubcf8 \uc11c\ube44\uc2a4\ub97c \ud1b5\ud574 \ub4f1\ub85d\ub41c \ubaa8\ub4e0 \uc2dc\uc220/\uc13c\uc11c\ub97c \ud3ec\ud568\ud558\ub3c4\ub85d \uc0dd\uc131\ub420 \uc2dc\uc2a4\ud15c \uadf8\ub8f9\uc758 \uba54\ud0c0\ub370\uc774\ud130\uc785\ub2c8\ub2e4. \uc774 \uadf8\ub8f9\uc758 \uc13c\uc11c\ub9cc \uc774 \uc11c\ube44\uc2a4\ub85c \uc218\uc815\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. +Metadata\ of\ system\ group\ that\ will\ be\ created\ to\ contain\ all\ systems\ registered\ through\ this\ service.\ Only\ systems\ in\ this\ group\ will\ be\ modifiable\ by\ this\ service=\uc774 \uc11c\ube44\uc2a4\ub97c \ud1b5\ud574 \ub4f1\ub85d\ub41c \ubaa8\ub4e0 \uc2dc\uc2a4\ud15c\uc744 \ud3ec\ud568\ud558\ub3c4\ub85d \uc0dd\uc131\ub420 \uc2dc\uc2a4\ud15c \uadf8\ub8f9\uc758 \uba54\ud0c0\ub370\uc774\ud130\uc785\ub2c8\ub2e4. \uc774 \uadf8\ub8f9\uc758 \uc2dc\uc2a4\ud15c\ub9cc \uc774 \uc11c\ube44\uc2a4\ub85c \uc218\uc815\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. +Method\ used\ to\ generate\ new\ resource\ IDs=\uc0c8 \ub9ac\uc18c\uc2a4 ID\ub97c \uc0dd\uc131\ud558\ub294 \ub370 \uc0ac\uc6a9\ub418\ub294 \ubc29\ubc95 +Minimum\ fillrate\ above\ which\ auto\ compact\ operations\ may\ be\ triggered=\uc790\ub3d9 \uc555\ucd95 \uc791\uc5c5\uc774 \ud2b8\ub9ac\uac70\ub420 \uc218 \uc788\ub294 \ucd5c\uc18c \ucc44\uc6b0\uae30 \uc18d\ub3c4 +Minimum\ period\ between\ database\ commits\ (in\ ms)=\ub370\uc774\ud130\ubca0\uc774\uc2a4 \ucee4\ubc0b \uc0ac\uc774\uc758 \ucd5c\uc18c \uae30\uac04(\ubc00\ub9ac\ucd08) +Names\ of\ datastreams\ whose\ data\ will\ be\ hidden\ from\ the\ SOS.\ If\ this\ is\ null,\ all\ streams\ produced\ by\ the\ procedure\ are\ exposed=SOS\uc5d0\uc11c \ub370\uc774\ud130\ub97c \uc228\uae38 \ub370\uc774\ud130 \uc2a4\ud2b8\ub9bc\uc758 \uc774\ub984\uc785\ub2c8\ub2e4. null\uc778 \uacbd\uc6b0 \ud504\ub85c\uc2dc\uc800\uc5d0\uc11c \uc0dd\uc131\ub41c \ubaa8\ub4e0 \uc2a4\ud2b8\ub9bc\uc774 \ub178\ucd9c\ub429\ub2c8\ub2e4. +Observed\ Properties=\uad00\ucc30\ub41c \uc18d\uc131 +Offering\ URI\ as\ exposed\ in\ capabilities.\ (if\ null,\ the\ procedure\ UID\ is\ used)=\uae30\ub2a5\uc5d0 \ub178\ucd9c\ub41c URI\ub97c \uc81c\uacf5\ud569\ub2c8\ub2e4. (\ub110\uc778 \uacbd\uc6b0 \ud504\ub85c\uc2dc\uc800 UID\uac00 \uc0ac\uc6a9\ub428) +Offering\ description\ (if\ null,\ it\ will\ be\ auto-generated)=\uc81c\ud488 \uc124\uba85(null\uc778 \uacbd\uc6b0 \uc790\ub3d9 \uc0dd\uc131\ub428) +Offering\ name\ (if\ null,\ the\ procedure\ name\ is\ used)=\uc624\ud37c\ub9c1 \uc774\ub984(\ub110\uc778 \uacbd\uc6b0 \ud504\ub85c\uc2dc\uc800 \uc774\ub984\uc774 \uc0ac\uc6a9\ub428) +Orientation\ as\ Euler\ angles\ in\ NED\ coordinate\ reference\ frame.\nOrder\ of\ rotations\ is\ z-y\u2019-x"\ (in\ rotating\ frame)\ or\ x-y-z\ (in\ fixed\ frame)=NED \uc88c\ud45c \ucc38\uc870 \ud504\ub808\uc784\uc5d0\uc11c \uc624\uc77c\ub7ec \uac01\ub3c4\ub85c \ubc29\ud5a5\uc744 \uc9c0\uc815\ud569\ub2c8\ub2e4.\n\ud68c\uc804 \uc21c\uc11c\ub294 z-y''-x"(\ud68c\uc804 \ud504\ub808\uc784) \ub610\ub294 x-y-z(\uace0\uc815 \ud504\ub808\uc784)\uc785\ub2c8\ub2e4. +Password\ for\ the\ key\ store\ (and\ for\ the\ keypair\ within\ the\ keystore).\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ "javax.net.ssl.keyStorePassword"\ system\ property.\ This\ value\ can\ use\ variable\ expansion\ expressions\ of\ the\ form\ "$${name}"\ (for\ environment\ variables\ and\ system\ properties)\ or\ "$${file;/path/to/file}"\ (for\ secret\ file\ contents).=\ud0a4 \uc800\uc7a5\uc18c(\ubc0f \ud0a4 \uc800\uc7a5\uc18c \ub0b4\uc758 \ud0a4 \uc30d)\uc5d0 \ub300\ud55c \ube44\ubc00\ubc88\ud638\uc785\ub2c8\ub2e4. \uc774 \uac12\uc774 \ube44\uc5b4 \uc788\uc73c\uba74 \uae30\ubcf8\uc801\uc73c\ub85c "javax.net.ssl.keyStorePassword" \uc2dc\uc2a4\ud15c \uc18d\uc131 \uac12\uc744 \uc0ac\uc6a9\ud569\ub2c8\ub2e4. \uc774 \uac12\uc740 "$${name}"(\ud658\uacbd \ubcc0\uc218 \ubc0f \uc2dc\uc2a4\ud15c \uc18d\uc131\uc758 \uacbd\uc6b0) \ub610\ub294 "$${file;/path/to/file}"(\ube44\ubc00 \ud30c\uc77c \ucf58\ud150\uce20\uc758 \uacbd\uc6b0) \ud615\uc2dd\uc758 \ubcc0\uc218 \ud655\uc7a5 \ud45c\ud604\uc2dd\uc744 \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. +Password\ for\ the\ trust\ store.\ Ignored\ if\ client\ certificate\ authentication\ is\ not\ used.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ "javax.net.ssl.trustStorePassword"\ system\ property.\ This\ value\ can\ use\ variable\ expansion\ expressions\ of\ the\ form\ "$${name}"\ (for\ environment\ variables\ and\ system\ properties)\ or\ "$${file;/path/to/file}"\ (for\ secret\ file\ contents).=\uc2e0\ub8b0 \uc800\uc7a5\uc18c\uc758 \ube44\ubc00\ubc88\ud638\uc785\ub2c8\ub2e4. \ud074\ub77c\uc774\uc5b8\ud2b8 \uc778\uc99d\uc11c \uc778\uc99d\uc774 \uc0ac\uc6a9\ub418\uc9c0 \uc54a\uc73c\uba74 \ubb34\uc2dc\ub429\ub2c8\ub2e4. \uc774 \uac12\uc774 \ube44\uc5b4 \uc788\uc73c\uba74 \uae30\ubcf8\uc801\uc73c\ub85c "javax.net.ssl.trustStorePassword" \uc2dc\uc2a4\ud15c \uc18d\uc131 \uac12\uc744 \uc0ac\uc6a9\ud569\ub2c8\ub2e4. \uc774 \uac12\uc740 "$${name}"(\ud658\uacbd \ubcc0\uc218 \ubc0f \uc2dc\uc2a4\ud15c \uc18d\uc131\uc758 \uacbd\uc6b0) \ub610\ub294 "$${file;/path/to/file}"(\ube44\ubc00 \ud30c\uc77c \ucf58\ud150\uce20\uc758 \uacbd\uc6b0) \ud615\uc2dd\uc758 \ubcc0\uc218 \ud655\uc7a5 \ud45c\ud604\uc2dd\uc744 \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. +Path\ of\ service\ endpoint\ relative\ to\ the\ context\ URL\ (e.g.\ http\://server.net/sensorhub)=\ucee8\ud14d\uc2a4\ud2b8 URL\uc5d0 \uc0c1\ub300\uc801\uc778 \uc11c\ube44\uc2a4 \uc5d4\ub4dc\ud3ec\uc778\ud2b8 \uacbd\ub85c(\uc608: http://server.net/sensorhub) +Path\ to\ a\ key\ store\ containing\ the\ certificate\ and\ keypair\ that\ this\ server\ will\ present\ to\ clients\ when\ accessed\ over\ HTTPS.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ "javax.net.ssl.keyStore"\ system\ property.\ This\ value\ can\ use\ variable\ expansion\ expressions\ of\ the\ form\ "$${name}"\ (for\ environment\ variables\ and\ system\ properties)\ or\ "$${file;/path/to/file}"\ (for\ secret\ file\ contents).=HTTPS\ub97c \ud1b5\ud574 \uc561\uc138\uc2a4\ud560 \ub54c \uc774 \uc11c\ubc84\uac00 \ud074\ub77c\uc774\uc5b8\ud2b8\uc5d0 \uc81c\uacf5\ud560 \uc778\uc99d\uc11c\uc640 \ud0a4 \uc30d\uc774 \ud3ec\ud568\ub41c \ud0a4 \uc800\uc7a5\uc18c\uc758 \uacbd\ub85c\uc785\ub2c8\ub2e4. \uc774 \uac12\uc774 \ube44\uc5b4 \uc788\uc73c\uba74 \uae30\ubcf8\uc801\uc73c\ub85c "javax.net.ssl.keyStore" \uc2dc\uc2a4\ud15c \uc18d\uc131 \uac12\uc744 \uc0ac\uc6a9\ud569\ub2c8\ub2e4. \uc774 \uac12\uc740 "$${name}"(\ud658\uacbd \ubcc0\uc218 \ubc0f \uc2dc\uc2a4\ud15c \uc18d\uc131\uc758 \uacbd\uc6b0) \ub610\ub294 "$${file;/path/to/file}"(\ube44\ubc00 \ud30c\uc77c \ucf58\ud150\uce20\uc758 \uacbd\uc6b0) \ud615\uc2dd\uc758 \ubcc0\uc218 \ud655\uc7a5 \ud45c\ud604\uc2dd\uc744 \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. +Path\ to\ database\ file=\ub370\uc774\ud130\ubca0\uc774\uc2a4 \ud30c\uc77c \uacbd\ub85c +Path\ to\ external\ config\ file\ (in\ Jetty\ IOC\ XML\ format)=\uc678\ubd80 \uad6c\uc131 \ud30c\uc77c \uacbd\ub85c(Jetty IOC XML \ud615\uc2dd) +Path\ to\ the\ TLS\ trust\ store\ that\ is\ used\ when\ client\ authentication\ is\ required.\ Ignored\ if\ client\ certificate\ authentication\ is\ not\ used.\ Certificates\ in\ this\ file\ designate\ the\ signing\ authorities\ for\ client\ certificates\ that\ will\ be\ trusted.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ "javax.net.ssl.trustStore"\ system\ property.\ This\ value\ can\ use\ variable\ expansion\ expressions\ of\ the\ form\ "$${name}"\ (for\ environment\ variables\ and\ system\ properties)\ or\ "$${file;/path/to/file}"\ (for\ secret\ file\ contents).=\ud074\ub77c\uc774\uc5b8\ud2b8 \uc778\uc99d\uc774 \ud544\uc694\ud560 \ub54c \uc0ac\uc6a9\ub418\ub294 TLS \uc2e0\ub8b0 \uc800\uc7a5\uc18c\uc758 \uacbd\ub85c\uc785\ub2c8\ub2e4. \ud074\ub77c\uc774\uc5b8\ud2b8 \uc778\uc99d\uc11c \uc778\uc99d\uc774 \uc0ac\uc6a9\ub418\uc9c0 \uc54a\uc73c\uba74 \ubb34\uc2dc\ub429\ub2c8\ub2e4. \uc774 \ud30c\uc77c\uc758 \uc778\uc99d\uc11c\ub294 \uc2e0\ub8b0\ud560 \uc218 \uc788\ub294 \ud074\ub77c\uc774\uc5b8\ud2b8 \uc778\uc99d\uc11c\uc5d0 \ub300\ud55c \uc11c\uba85 \uae30\uad00\uc744 \uc9c0\uc815\ud569\ub2c8\ub2e4. \uc774 \uac12\uc774 \ube44\uc5b4 \uc788\uc73c\uba74 \uae30\ubcf8\uc801\uc73c\ub85c "javax.net.ssl.trustStore" \uc2dc\uc2a4\ud15c \uc18d\uc131 \uac12\uc744 \uc0ac\uc6a9\ud569\ub2c8\ub2e4. \uc774 \uac12\uc740 "$${name}"(\ud658\uacbd \ubcc0\uc218 \ubc0f \uc2dc\uc2a4\ud15c \uc18d\uc131\uc758 \uacbd\uc6b0) \ub610\ub294 "$${file;/path/to/file}"(\ube44\ubc00 \ud30c\uc77c \ucf58\ud150\uce20\uc758 \uacbd\uc6b0) \ud615\uc2dd\uc758 \ubcc0\uc218 \ud655\uc7a5 \ud45c\ud604\uc2dd\uc744 \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. +Port\ number\ to\ connect\ to\ on\ remote\ host\ (0\ to\ automatically\ select\ a\ port)=\uc6d0\uaca9 \ud638\uc2a4\ud2b8\uc5d0 \uc5f0\uacb0\ud560 \ud3ec\ud2b8 \ubc88\ud638(\ud3ec\ud2b8\ub97c \uc790\ub3d9\uc73c\ub85c \uc120\ud0dd\ud558\ub824\uba74 0) +SOS\ Endpoint=SOS \uc5d4\ub4dc\ud3ec\uc778\ud2b8 +SOS\ endpoint\ to\ fetch\ data\ from=\ub370\uc774\ud130\ub97c \uac00\uc838\uc62c SOS \uc5d4\ub4dc\ud3ec\uc778\ud2b8 +SOS\ endpoint\ where\ the\ requests\ are\ sent=\uc694\uccad\uc774 \uc804\uc1a1\ub418\ub294 SOS \uc5d4\ub4dc\ud3ec\uc778\ud2b8 +SPS\ Endpoint=SPS \uc5d4\ub4dc\ud3ec\uc778\ud2b8 +SPS\ endpoint\ to\ send\ commands\ to=\uba85\ub839\uc744 \ubcf4\ub0bc SPS \ub05d\uc810 +Security\ related\ options=\ubcf4\uc548 \uad00\ub828 \uc635\uc158 +Sensor\ UID=\uc13c\uc11c UID +Set\ if\ WebSocket\ protocol\ should\ be\ used\ to\ get\ streaming\ data\ from\ SOS=SOS\uc5d0\uc11c \uc2a4\ud2b8\ub9ac\ubc0d \ub370\uc774\ud130\ub97c \uac00\uc838\uc624\ub294 \ub370 WebSocket \ud504\ub85c\ud1a0\ucf5c\uc744 \uc0ac\uc6a9\ud574\uc57c \ud558\ub294\uc9c0 \uc124\uc815\ud569\ub2c8\ub2e4. +Set\ if\ offering\ is\ enabled,\ unset\ if\ disabled=\uc11c\ube44\uc2a4\uac00 \ud65c\uc131\ud654\ub41c \uacbd\uc6b0 \uc124\uc815\ub418\uace0, \ube44\ud65c\uc131\ud654\ub41c \uacbd\uc6b0 \uc124\uc815 \ud574\uc81c\ub429\ub2c8\ub2e4. +Set\ if\ websockets\ protocol\ should\ be\ used\ to\ send\ commands\ to\ SPS=SPS\uc5d0 \uba85\ub839\uc744 \ubcf4\ub0b4\ub294 \ub370 \uc6f9\uc18c\ucf13 \ud504\ub85c\ud1a0\ucf5c\uc744 \uc0ac\uc6a9\ud574\uc57c \ud558\ub294\uc9c0 \uc124\uc815\ud569\ub2c8\ub2e4. +Set\ to\ compact\ the\ database\ file\ when\ the\ database\ module\ is\ stopped\ or\ restarted=\ub370\uc774\ud130\ubca0\uc774\uc2a4 \ubaa8\ub4c8\uc774 \uc911\uc9c0\ub418\uac70\ub098 \ub2e4\uc2dc \uc2dc\uc791\ub420 \ub54c \ub370\uc774\ud130\ubca0\uc774\uc2a4 \ud30c\uc77c\uc744 \uc555\ucd95\ud558\ub3c4\ub85d \uc124\uc815\ud569\ub2c8\ub2e4. +Set\ to\ compress\ underlying\ file\ storage=\uae30\ubcf8 \ud30c\uc77c \uc800\uc7a5\uc18c\ub97c \uc555\ucd95\ud558\ub3c4\ub85d \uc124\uc815 +Set\ to\ display\ MVStore\ debug\ info\ when\ database\ is\ closed\ (only\ if\ DEBUG\ log\ is\ also\ enabled)=\ub370\uc774\ud130\ubca0\uc774\uc2a4\uac00 \ub2eb\ud790 \ub54c MVStore \ub514\ubc84\uadf8 \uc815\ubcf4\ub97c \ud45c\uc2dc\ud558\ub3c4\ub85d \uc124\uc815\ud569\ub2c8\ub2e4. (DEBUG \ub85c\uadf8\ub3c4 \ud65c\uc131\ud654\ub41c \uacbd\uc6b0\uc5d0\ub9cc) +Set\ to\ enable\ spatial\ indexing\ of\ individual\ observations\ sampling\ locations\ (when\ provided)=\uac1c\ubcc4 \uad00\uce21\uce58 \uc0d8\ud50c\ub9c1 \uc704\uce58\uc758 \uacf5\uac04 \uc778\ub371\uc2f1\uc744 \ud65c\uc131\ud654\ud558\ub3c4\ub85d \uc124\uc815(\uc81c\uacf5\ub41c \uacbd\uc6b0) +Set\ to\ open\ the\ database\ as\ read-only=\ub370\uc774\ud130\ubca0\uc774\uc2a4\ub97c \uc77d\uae30 \uc804\uc6a9\uc73c\ub85c \uc5f4\ub3c4\ub85d \uc124\uc815 +Set\ to\ true\ to\ enable\ transactional\ operation\ support=\ud2b8\ub79c\uc7ad\uc158 \uc791\uc5c5 \uc9c0\uc6d0\uc744 \ud65c\uc131\ud654\ud558\ub824\uba74 true\ub85c \uc124\uc815\ud558\uc138\uc694. +Size\ of\ the\ auto-commit\ write\ buffer,\ in\ KB=\uc790\ub3d9 \ucee4\ubc0b \uc4f0\uae30 \ubc84\ud37c\uc758 \ud06c\uae30(KB) +TCP\ port\ where\ server\ will\ listen\ for\ secure\ HTTP\ (HTTPS)\ connections\ (use\ 0\ to\ disable\ HTTPS).=\uc11c\ubc84\uac00 \ubcf4\uc548 HTTP(HTTPS) \uc5f0\uacb0\uc744 \uc218\uc2e0\ud558\ub294 TCP \ud3ec\ud2b8\uc785\ub2c8\ub2e4(HTTPS\ub97c \ube44\ud65c\uc131\ud654\ud558\ub824\uba74 0\uc744 \uc0ac\uc6a9\ud558\uc2ed\uc2dc\uc624). +TCP\ port\ where\ server\ will\ listen\ for\ unsecure\ HTTP\ connections\ (use\ 0\ to\ disable\ HTTP).=\uc11c\ubc84\uac00 \ube44\ubcf4\uc548 HTTP \uc5f0\uacb0\uc744 \uc218\uc2e0\ud558\ub294 TCP \ud3ec\ud2b8\uc785\ub2c8\ub2e4(HTTP\ub97c \ube44\ud65c\uc131\ud654\ud558\ub824\uba74 0\uc744 \uc0ac\uc6a9\ud558\uc2ed\uc2dc\uc624). +Time-out\ after\ which\ real-time\ requests\ are\ disabled\ if\ no\ more\ measurements\ are\ received\ (in\ seconds).\ Real-time\ is\ reactivated\ as\ soon\ as\ new\ records\ start\ being\ received\ again=\ub354 \uc774\uc0c1 \uce21\uc815\uac12\uc774 \uc218\uc2e0\ub418\uc9c0 \uc54a\uc73c\uba74 \uc2e4\uc2dc\uac04 \uc694\uccad\uc774 \ube44\ud65c\uc131\ud654\ub418\ub294 \uc2dc\uac04 \uc81c\ud55c(\ucd08 \ub2e8\uc704)\uc785\ub2c8\ub2e4. \uc0c8 \uae30\ub85d\uc774 \ub2e4\uc2dc \uc218\uc2e0\ub418\uae30 \uc2dc\uc791\ud558\uba74 \uc2e4\uc2dc\uac04\uc774 \ub2e4\uc2dc \ud65c\uc131\ud654\ub429\ub2c8\ub2e4. +Time-out\ period\ after\ which\ a\ template\ ID\ reserved\ using\ InsertResultTemplate\ will\ expire\ if\ not\ used\ in\ InsertResult\ requests\ (in\ seconds)=InsertResultTemplate\uc744 \uc0ac\uc6a9\ud558\uc5ec \uc608\uc57d\ub41c \ud15c\ud50c\ub9bf ID\uac00 InsertResult \uc694\uccad\uc5d0 \uc0ac\uc6a9\ub418\uc9c0 \uc54a\ub294 \uacbd\uc6b0 \ub9cc\ub8cc\ub418\ub294 \uc2dc\uac04 \ucd08\uacfc \uae30\uac04(\ucd08) +Timeout\ after\ which\ data\ is\ released\ to\ the\ caller\ if\ at\ least\ one\ byte\ was\ received\ (in\ ms)=\ucd5c\uc18c 1\ubc14\uc774\ud2b8\uac00 \uc218\uc2e0\ub41c \uacbd\uc6b0 \ub370\uc774\ud130\uac00 \ud638\ucd9c\uc790\uc5d0\uac8c \ub9b4\ub9ac\uc2a4\ub418\ub294 \uc2dc\uac04 \uc81c\ud55c(ms) +URI\ Prefix\ Map=URI \uc811\ub450\uc0ac \ub9f5 +Unique\ ID\ (full\ URN\ or\ only\ suffix)\ to\ use\ for\ the\ sensor\ system\ or\ 'auto'\ to\ use\ the\ UUID\ randomly\ generated\ the\ first\ time\ the\ module\ is\ initialized=\uc13c\uc11c \uc2dc\uc2a4\ud15c\uc5d0 \uc0ac\uc6a9\ud560 \uace0\uc720 ID(\uc804\uccb4 URN \ub610\ub294 \uc811\ubbf8\uc0ac\ub9cc) \ub610\ub294 \ubaa8\ub4c8\uc774 \ucc98\uc74c \ucd08\uae30\ud654\ub420 \ub54c \ubb34\uc791\uc704\ub85c \uc0dd\uc131\ub41c UUID\ub97c \uc0ac\uc6a9\ud558\ub824\uba74 ''\uc790\ub3d9'' +Unique\ ID\ of\ a\ system\ that\ this\ configuration\ applies\ to.\nCan\ include\ a\ trailing\ wildcard\ '*'\ to\ match\ several\ systems\ at\ once.=\uc774 \uad6c\uc131\uc774 \uc801\uc6a9\ub418\ub294 \uc2dc\uc2a4\ud15c\uc758 \uace0\uc720 ID\uc785\ub2c8\ub2e4.\n\uc5ec\ub7ec \uc2dc\uc2a4\ud15c\uc744 \ub3d9\uc2dc\uc5d0 \uc77c\uce58\uc2dc\ud0a4\uae30 \uc704\ud574 \ud6c4\ud589 \uc640\uc77c\ub4dc\uce74\ub4dc ''*''\ub97c \ud3ec\ud568\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. +Unique\ ID\ of\ sensor\ to\ connect\ to\ on\ SOS\ and\ SPS\ servers=SOS \ubc0f SPS \uc11c\ubc84\uc5d0 \uc5f0\uacb0\ud560 \uc13c\uc11c\uc758 \uace0\uc720 ID +Unique\ ID\ of\ system\ that\ this\ configuration\ applies\ to.\nCan\ include\ a\ trailing\ wildcard\ '*'\ to\ match\ several\ systems\ at\ once.=\uc774 \uad6c\uc131\uc774 \uc801\uc6a9\ub418\ub294 \uc2dc\uc2a4\ud15c\uc758 \uace0\uc720 ID\uc785\ub2c8\ub2e4.\n\uc5ec\ub7ec \uc2dc\uc2a4\ud15c\uc744 \ub3d9\uc2dc\uc5d0 \uc77c\uce58\uc2dc\ud0a4\uae30 \uc704\ud574 \ud6c4\ud589 \uc640\uc77c\ub4dc\uce74\ub4dc ''*''\ub97c \ud3ec\ud568\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. +Use\ WebSockets\ for\ SOS=SOS\uc5d0 WebSocket \uc0ac\uc6a9 +Use\ WebSockets\ for\ SPS=SPS\uc5d0 WebSocket \uc0ac\uc6a9 + +Node\ ID=\ub178\ub4dc ID +Stats\ Frequency\ (min)=\ud1b5\uacc4 \ube48\ub3c4(\ubd84) +Database\ URL=\ub370\uc774\ud130\ubca0\uc774\uc2a4 URL +Database\ Name=\ub370\uc774\ud130\ubca0\uc774\uc2a4 \uc774\ub984 +ID\ Generator=ID \uc0dd\uc131\uae30 +Database\ Number=\ub370\uc774\ud130\ubca0\uc774\uc2a4 \ubc88\ud638 +Remote\ Host=\uc6d0\uaca9 \ud638\uc2a4\ud2b8 +Remote\ Port=\uc6d0\uaca9 \ud3ec\ud2b8 +Lane\ Width\ (m)=\ucc28\uc120\ud3ed(m) +Enable\ EML\ Analysis=EML \ubd84\uc11d \ud65c\uc131\ud654 +Is\ Collimated=\uc2dc\uc900\ub428 +Stream\ Path=\uc2a4\ud2b8\ub9bc \uacbd\ub85c +Lane\ Options\ Config=\ucc28\uc120 \uc635\uc158 \uad6c\uc131 diff --git a/sensorhub-webui-core/src/main/resources/org/sensorhub/ui/i18n/messages_lv.properties b/sensorhub-webui-core/src/main/resources/org/sensorhub/ui/i18n/messages_lv.properties new file mode 100644 index 0000000000..1efaf9bc60 --- /dev/null +++ b/sensorhub-webui-core/src/main/resources/org/sensorhub/ui/i18n/messages_lv.properties @@ -0,0 +1,543 @@ +app.title=OpenSensorHub +tab.sensors=Sensori +tab.databases=Datu b\u0101zes +tab.processing=Apstr\u0101de +tab.services=Pakalpojumi +tab.clients=Klienti +tab.network=T\u012bkls +tab.security=Dro\u0161\u012bba +action.shutdown=Izsl\u0113gt +action.logout=Izrakst\u012bties +action.save=Saglab\u0101t +action.addModule=Pievienot jaunu moduli +action.addSubmodule=Pievienot apak\u0161moduli +action.removeModule=No\u0146emt moduli +action.removeSubmodule=No\u0146emt apak\u0161moduli +action.start=S\u0101kt +action.stop=Aptur\u0113t +action.restart=Restart\u0113t +action.forceInit=Piespiedu inicializ\u0101cija +action.selectAll=Atlas\u012bt visus modu\u013cus +action.deselectAll=No\u0146emt atlasi visiem modu\u013ciem +dialog.shutdown.title=Izsl\u0113g\u0161ana s\u0101kta... +dialog.shutdown.message=UI p\u0101rtrauks rea\u0123\u0113t +dialog.shutdown.confirm=Vai tie\u0161\u0101m v\u0113laties izsl\u0113gt sensoru centru? +dialog.logout.confirm=Vai tie\u0161\u0101m v\u0113laties izrakst\u012bties? +dialog.save.confirm=Vai tie\u0161\u0101m v\u0113laties saglab\u0101t konfigur\u0101ciju (un p\u0101rrakst\u012bt iepriek\u0161\u0113jo)? +msg.configSaved=SensorHub konfigur\u0101cija saglab\u0101ta +msg.configSaveError=Nevar saglab\u0101t konfigur\u0101ciju +dialog.remove.confirm=Vai tie\u0161\u0101m v\u0113laties no\u0146emt {0}?
Visi iestat\u012bjumi tiks zaud\u0113ti. +msg.removeError={0} nevar\u0113ja no\u0146emt +msg.startError={0} nevar\u0113ja s\u0101kt +msg.stopError={0} nevar\u0113ja aptur\u0113t +msg.restartError={0} nevar\u0113ja restart\u0113t +msg.reinitError={0} nevar\u0113ja reinicializ\u0113t +msg.loadError=Nevar iel\u0101d\u0113t moduli +msg.addSubmoduleError=Nevar pievienot apak\u0161moduli +about.title=Par OpenSensorHub +about.desc=Programmat\u016bras platforma viedo sensoru t\u012bklu un lietu interneta (IoT) veido\u0161anai +about.license=Licenc\u0113ts saska\u0146\u0101 ar Mozilla Public License v2.0 +about.version=Versija: +about.build=B\u016bv\u0113juma numurs: +about.deployment=Izvieto\u0161anas nosaukums: +tooltip.shutdown=Izsl\u0113gt SensorHub +tooltip.logout=Izrakst\u012bties no OSH mezgla +tooltip.save=Saglab\u0101t SensorHub konfigur\u0101ciju +dialog.start.confirm=Vai tie\u0161\u0101m v\u0113laties s\u0101kt {0}? +dialog.stop.confirm=Vai tie\u0161\u0101m v\u0113laties aptur\u0113t {0}? +dialog.restart.confirm=Vai tie\u0161\u0101m v\u0113laties restart\u0113t {0}? +dialog.reinit.confirm=Vai tie\u0161\u0101m v\u0113laties piespiest reinicializ\u0113t {0}? +backgroundUpdate=Fona atjaunin\u0101\u0161ana +sigmaThreshold=Sigma slieksnis +nuclideIdentification=Nukl\u012bdu identifik\u0101cija +tamperAlarm=Vilto\u0161anas trauksme +occupancySensor=Aiz\u0146emt\u012bbas sensors +stateOfHealth=Vesel\u012bbas st\u0101voklis +soh=SOH +1ScanThisQrCodeWithYourAuthenticatorApp=1.\u00a0Sken\u0113jiet \u0161o QR\u00a0kodu, izmantojot autentifik\u0101cijas lietotni: +2EnterThe6digitCodeGeneratedByTheApp=2.\u00a0Ievadiet lietotnes \u0123ener\u0113to 6\u00a0ciparu kodu: +orEnterThisSecretKeyManually=Vai ar\u012b manu\u0101li ievadiet \u0161o slepeno atsl\u0113gu: +loadingBundlesInformation=Notiek komplektu inform\u0101cijas iel\u0101de... +loadingPackageInformation=Notiek pakotnes inform\u0101cijas iel\u0101de... +arrayComponentNotSupported=Mas\u012bva komponents netiek atbalst\u012bts +twofactorAuthentication=Divu faktoru autentifik\u0101cija +installMorePackages=Instal\u0113jiet vair\u0101k pakot\u0146u... +errorGeneratingQrCode=\u0122ener\u0113jot QR kodu, rad\u0101s k\u013c\u016bda +installMoreModules=Instal\u0113jiet citus modu\u013cus... +detailedInstructions=Detaliz\u0113ti nor\u0101d\u012bjumi +availableNetworks=Pieejamie t\u012bkli +processParameters=Procesa parametri +verifyAndEnable=Apstipriniet un iesp\u0113jojiet +dataSourceInfo=Inform\u0101cija par datu avotu +detectedDevices=Atkl\u0101t\u0101s ier\u012bces +installSelected=Instal\u0113t atlas\u012bto +databaseContent=Datu b\u0101zes saturs +itemsPerPage=Vienumi lap\u0101: +commandInputs=Komandu ievades +processInputs=Procesa ievades +providerClass=Pakalpojumu sniedz\u0113ja klase +processName=Procesa nosaukums: +configuration=Konfigur\u0101cija +applyChanges=Lietot izmai\u0146as +sendCommand=Nos\u016btiet komandu +useAddress=Izmantojiet adresi +selectNone=Atlasiet Nav +timeRange=Laika diapazons: +permissions=At\u013caujas +startScan=S\u0101kt sken\u0113\u0161anu +noReadme=N\u0113 README +stopScan=Aptur\u0113t sken\u0113\u0161anu +reset2fa=Atiestat\u012bt 2FA +previous=Iepriek\u0161\u0113jais +useName=Izmantojiet v\u0101rdu +outputs=Izejas +refresh=Atsvaidzin\u0101t +modify=Modific\u0113t +cancel=Atcelt +logout=Atteikties +remove=No\u0146emt +verify=P\u0101rbaud\u012bt +first=Pirmk\u0101rt +login=Pieteikties +last=P\u0113d\u0113jais +view=SKAT\u012aT +next=T\u0101l\u0101k +stop=Stop +add=Pievienot +ui.empty=< +ok=Labi +1ScanThisQrCodeWithYourAuthenticatorApp1=1.\u00a0Sken\u0113jiet \u0161o QR\u00a0kodu, izmantojot autentifik\u0101cijas lietotni: +2EnterThe6digitCodeGeneratedByTheApp1=2.\u00a0Ievadiet lietotnes \u0123ener\u0113to 6\u00a0ciparu kodu: +orEnterThisSecretKeyManually1=Vai ar\u012b manu\u0101li ievadiet \u0161o slepeno atsl\u0113gu: +loadingPackageInformation1=Notiek pakotnes inform\u0101cijas iel\u0101de... +loadingBundlesInformation1=Notiek komplektu inform\u0101cijas iel\u0101de... +arrayComponentNotSupported1=Mas\u012bva komponents netiek atbalst\u012bts +twofactorAuthentication1=Divu faktoru autentifik\u0101cija +errorGeneratingQrCode1=\u0122ener\u0113jot QR kodu, rad\u0101s k\u013c\u016bda +installMorePackages1=Instal\u0113jiet vair\u0101k pakot\u0146u... +installMoreModules1=Instal\u0113jiet citus modu\u013cus... +detailedInstructions1=Detaliz\u0113ti nor\u0101d\u012bjumi +processParameters1=Procesa parametri +availableNetworks1=Pieejamie t\u012bkli +verifyAndEnable1=Apstipriniet un iesp\u0113jojiet +databaseContent1=Datu b\u0101zes saturs +installSelected1=Instal\u0113t atlas\u012bto +dataSourceInfo1=Inform\u0101cija par datu avotu +detectedDevices1=Atkl\u0101t\u0101s ier\u012bces +itemsPerPage1=Vienumi lap\u0101: +processInputs1=Procesa ievades +commandInputs1=Komandu ievades +providerClass1=Pakalpojumu sniedz\u0113ja klase +configuration1=Konfigur\u0101cija +processName1=Procesa nosaukums: +applyChanges1=Lietot izmai\u0146as +sendCommand1=Nos\u016btiet komandu +timeRange1=Laika diapazons: +useAddress1=Izmantojiet adresi +permissions1=At\u013caujas +selectNone1=Atlasiet Nav +startScan1=S\u0101kt sken\u0113\u0161anu +noReadme1=N\u0113 README +reset2fa1=Atiestat\u012bt 2FA +stopScan1=Aptur\u0113t sken\u0113\u0161anu +useName1=Izmantojiet v\u0101rdu +previous1=Iepriek\u0161\u0113jais +refresh1=Atsvaidzin\u0101t +outputs1=Izejas +cancel1=Atcelt +logout1=Atteikties +modify1=Modific\u0113t +remove1=No\u0146emt +verify1=P\u0101rbaud\u012bt +first1=Pirmk\u0101rt +login1=Pieteikties +view1=SKAT\u012aT +stop1=Stop +next1=T\u0101l\u0101k +last1=P\u0113d\u0113jais +add1=Pievienot +last2=>> +first2=<< +ok1=Labi +next2=> +previous2=< + +pleaseEnterAUserIDFirst1=L\u016bdzu, vispirms ievadiet lietot\u0101ja\u00a0ID +reset2FA1=Atiestat\u012bt 2FA +enable2FA1=Iesp\u0113jot 2FA +twoFAEnabledSuccessfully1=2FA ir veiksm\u012bgi iesp\u0113jots +invalidCode1=Neder\u012bgs kods +allowedAndDeniedPermissionsForUsersWithThisRole1=At\u013caut\u0101s un liegt\u0101s at\u013caujas lietot\u0101jiem ar \u0161o lomu +manualEntry1=Manu\u0101l\u0101 ievade +toggleAutoRefreshDataOncePerSecond1=P\u0101rsl\u0113dziet autom\u0101tisko datu atsvaidzin\u0101\u0161anu reizi sekund\u0113 +lookupSystem1=Uzmekl\u0113\u0161anas sist\u0113ma +lookupModule1=Uzmekl\u0113\u0161anas modulis +lookupAddress1=Uzmekl\u0113\u0161anas adrese +showPassword1=R\u0101d\u012bt paroli +showHistogram1=R\u0101d\u012bt histogrammu +hideHistogram1=Pasl\u0113pt histogrammu +reloadDataFromDatabase1=P\u0101rl\u0101d\u0113t datus no datu b\u0101zes +fois1=FOI +username1=Lietot\u0101jv\u0101rds +password1=Parole +loginFailed1=Pieteik\u0161an\u0101s neizdev\u0101s +invalidUsernameOrPassword1=Neder\u012bgs lietot\u0101jv\u0101rds vai parole +verificationCode1=Verifik\u0101cijas kods +verificationFailed1=Verifik\u0101cija neizdev\u0101s +datasource1=Datu avots +process1=Process +logoutFromOshNode1=Atteikties no DDVA mezgla +setParameter1=Iestat\u012bt parametru +setupTwoFactorAuthentication1=Iestatiet divu faktoru autentifik\u0101ciju + +action.new_item=Jauns {0} +Lane\ System=Joslu sist\u0113ma +Module\ Class=Modu\u013ca klase +Module\ Name=Modu\u013ca nosaukums +Module\ ID=Modu\u013ca ID +Description=Apraksts +SensorML\ URL=SensorML URL +UniqueID=Unik\u0101lais ID +Last\ Updated=P\u0113d\u0113jo reizi atjaunin\u0101ts +Auto\ Start=Auto Start +Delete\ Data\ on\ Lane\ Removal=Dz\u0113st datus par joslu no\u0146em\u0161anu +Latitude=Platums +Longitude=Garums +Altitude=Augstums virs j\u016bras l\u012bme\u0146a +Initial\ RPM\ Config=S\u0101kotn\u0113j\u0101 RPM konfigur\u0101cija +Initial\ Camera\ Config=S\u0101kotn\u0113j\u0101 kameras konfigur\u0101cija +Lane\ Options\ Config=Joslu opcijas Konfig +tab.general=\u0122ener\u0101lis +tab.readme=README +Fixed\ Location=Fiks\u0113ta atra\u0161an\u0101s vieta +Fixed\ Orientation=Fiks\u0113ta orient\u0101cija +# Auto-extracted DisplayInfo labels and descriptions +URL\ of\ SensorML\ file\ providing\ the\ base\ description\ of\ the\ sensor=SensorML faila URL, kas nodro\u0161ina sensora pamata aprakstu +Time\ at\ which\ the\ SensorML\ description\ was\ last\ updated=Laiks, kur\u0101 SensorML apraksts p\u0113d\u0113jo reizi tika atjaunin\u0101ts +Geodetic\ latitude,\ in\ degrees=\u0122eod\u0113ziskais platums gr\u0101dos +Longitude,\ in\ degrees=Garums gr\u0101dos +Height\ above\ ellipsoid,\ in\ meters=Augstums virs elipso\u012bda, metros +X\ coordinate,\ in\ meters=X koordin\u0101ta metros +Y\ coordinate,\ in\ meters=Y koordin\u0101te metros +Z\ coordinate,\ in\ meters=Z koordin\u0101ta metros +Pitch\ angle\ about\ Y\ axis,\ in\ degrees=Sl\u012bpuma le\u0146\u0137is ap Y asi gr\u0101dos +Roll\ angle\ about\ X\ axis,\ in\ degrees=Rituma le\u0146\u0137is ap X asi, gr\u0101dos +Location\ in\ EPSG\:4979\ coordinate\ reference\ frame=Atra\u0161an\u0101s vieta EPSG:4979 koordin\u0101tu atskaites r\u0101m\u012b +Database\ Number=Datu b\u0101zes numurs +Numerical\ identifier\ of\ the\ database.\ Each\ database\ that\ should\ be\ exposed\ via\ the\ federated\ database\ API\ must\ have\ a\ unique\ number\ on\ the\ sensor\ hub.\ If\ visibility\ through\ the\ federated\ database\ is\ not\ desired,\ it\ can\ be\ omitted.=Datu b\u0101zes skaitliskais identifikators. Katrai datu b\u0101zei, kas ir j\u0101atkl\u0101j, izmantojot apvienot\u0101s datu b\u0101zes API, sensoru centrmezgl\u0101 ir j\u0101b\u016bt unik\u0101lam numuram. Ja apvienot\u0101s datu b\u0101zes redzam\u012bba nav v\u0113lama, to var izlaist. +Enables\ fine-grained\ permission-based\ access\ control\ for\ this\ module=Iesp\u0113jo detaliz\u0113tu, uz at\u013cauj\u0101m balst\u012btu piek\u013cuves kontroli \u0161im modulim +Require\ Authentication=Piepras\u012bt autentifik\u0101ciju +Set\ to\ require\ remote\ users\ to\ be\ authentified\ before\ they\ can\ use\ this\ service=Iestatiet, lai att\u0101liem lietot\u0101jiem b\u016btu j\u0101b\u016bt autentific\u0113tiem, pirms vi\u0146i var izmantot \u0161o pakalpojumu +Endpoint=Gala punkts +Unique\ local\ ID\ of\ the\ module=Unik\u0101ls lok\u0101lais modu\u013ca ID +User\ description\ for\ the\ module=Modu\u013ca lietot\u0101ja apraksts +Set\ to\ automatically\ start\ the\ module\ when\ it\ is\ loaded=Iestatiet, lai modulis tiktu autom\u0101tiski palaists, kad tas tiek iel\u0101d\u0113ts +Module\ implementation\ class=Modu\u013ca ievie\u0161anas klase +User\ chosen\ name\ for\ the\ module=Lietot\u0101ja izv\u0113l\u0113tais modu\u013ca nosaukums +Name\ of\ topic/queue\ to\ use=Izmantojam\u0101s t\u0113mas/rindas nosaukums +Enable/disable\ writing\ to\ queue=Iesp\u0113jot/atsp\u0113jot rakst\u012b\u0161anu rind\u0101 +Enable/disable\ reading\ from\ queue=Iesp\u0113jot/atsp\u0113jot las\u012b\u0161anu no rindas +Protocol\ Options=Protokola opcijas +Common\ Configuration=Kop\u0113j\u0101 konfigur\u0101cija +Common\ configuration\ for\ sensors\ in\ the\ array=Kop\u0113ja mas\u012bva sensoru konfigur\u0101cija +Sensors\ Configuration=Sensoru konfigur\u0101cija +Subsystem\ Config=Apak\u0161sist\u0113mas konfigur\u0101cija +Configuration\ of\ the\ subsystem=Apak\u0161sist\u0113mas konfigur\u0101cija +Relative\ Location=Relat\u012bv\u0101 atra\u0161an\u0101s vieta +Location\ of\ this\ subsystem\ relative\ to\ the\ main\ system\ or\ platform\ reference\ frame=\u0160\u012bs apak\u0161sist\u0113mas atra\u0161an\u0101s vieta attiec\u012bb\u0101 pret galveno sist\u0113mu vai platformas atsauces r\u0101mi +Relative\ Orientation=Relat\u012bv\u0101 orient\u0101cija +Orientation\ of\ this\ subsystem\ relative\ to\ the\ main\ system\ or\ platform\ reference\ frame=\u0160\u012bs apak\u0161sist\u0113mas orient\u0101cija attiec\u012bb\u0101 pret galveno sist\u0113mu vai platformas atsauces ietvaru +Fixed\ system\ orientation\ in\ the\ local\ NED\ reference\ frame=Fiks\u0113ta sist\u0113mas orient\u0101cija viet\u0113j\u0101 NED atsauces r\u0101m\u012b +Subsystems=Apak\u0161sist\u0113mas +Configuration\ of\ components\ of\ this\ sensor\ system=\u0160\u012bs sensoru sist\u0113mas komponentu konfigur\u0101cija +Database\ Config=Datu b\u0101zes konfigur\u0101cija +Configuration\ of\ underlying\ database=Pamat\u0101 eso\u0161\u0101s datu b\u0101zes konfigur\u0101cija +System\ UIDs=Sist\u0113mas UID +Unique\ IDs\ of\ system\ drivers\ handled\ by\ this\ database=Unik\u0101lie sist\u0113mas draiveru ID, kurus apstr\u0101d\u0101 \u0161\u012b datub\u0101ze +Automatic\ Purge\ Policy=Autom\u0101tisk\u0101s t\u012br\u012b\u0161anas politika +Policy\ for\ automatically\ purging\ historical\ data=V\u0113sturisko datu autom\u0101tiskas dz\u0113\u0161anas politika +Uncheck\ to\ disable\ auto-purge\ temporarily=No\u0146emiet atz\u012bmi, lai \u012bslaic\u012bgi atsp\u0113jotu autom\u0101tisko izt\u012br\u012b\u0161anu +Purge\ Execution\ Period=Izt\u012br\u012b\u0161anas izpildes periods +Unique\ IDs\ of\ system\ drivers\ to\ purge=Unik\u0101lie sist\u0113mas draiveru ID, kas j\u0101t\u012bra +Max\ Record\ Age=Maksim\u0101lais rekorda vecums +SensorML\ File=SensorML fails +Path\ of\ SensorML\ description\ of\ the\ process=Procesa apraksta SensorML ce\u013c\u0161 +List\ of\ users\ allowed\ access\ to\ this\ system=Lietot\u0101ju saraksts, kam ir at\u013cauta piek\u013cuve \u0161ai sist\u0113mai +List\ of\ security\ roles=Dro\u0161\u012bbas lomu saraksts +User\ ID=Lietot\u0101ja\u00a0ID +Role\ ID=Lomas ID +Source\ Database\ ID=Avota datu b\u0101zes\u00a0ID +ID\ of\ database\ module\ to\ read\ data\ from\ (Federated\ database\ will\ be\ used\ if\ not\ set=Datu b\u0101zes modu\u013ca ID, no kura nolas\u012bt datus (ja nav iestat\u012bta, tiks izmantota feder\u0113t\u0101 datu b\u0101ze +HTTP\ Port=HTTP ports +HTTPS\ Port=HTTPS ports +Root\ URL\ where\ static\ web\ content\ will\ be\ served.=Saknes\u00a0URL, kur\u0101 tiks apkalpots statiskais t\u012bmek\u013ca saturs. +Directory\ where\ static\ web\ content\ is\ located.=Direktorijs, kur\u0101 atrodas statiskais t\u012bmek\u013ca saturs. +Root\ URL\ where\ the\ server\ will\ accept\ requests.\ This\ will\ be\ the\ prefix\ to\ all\ servlet\ URLs.=Saknes URL, kur serveris pie\u0146ems piepras\u012bjumus. Tas b\u016bs visu servleta vietr\u0101\u017eu URL prefikss. +Proxy\ Base\ URL=Starpniekservera b\u0101zes URL +Public\ URL\ as\ viewed\ from\ the\ outside\ when\ requests\ transit\ through\ a\ proxy\ server.=Publisks URL, kas tiek skat\u012bts no \u0101rpuses, kad piepras\u012bjumi tiek p\u0101rs\u016bt\u012bti caur starpniekserveri. +Authentication\ Method=Autentifik\u0101cijas metode +Method\ used\ to\ authenticate\ users\ on\ this\ server=\u0160\u012b servera lietot\u0101ju autentific\u0113\u0161anai izmantot\u0101 metode +Path\ to\ a\ key\ store\ containing\ the\ certificate\ and\ keypair\ that\ this\ server\ will\ present\ to\ clients\ when\ accessed\ over\ HTTPS.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ \"javax.net.ssl.keyStore\"\ system\ property.\=Path to a key store containing the certificate and keypair that this server will present to clients when accessed over HTTPS. If this value is blank, will default to using the value of the \"javax.net.ssl.keyStore\" system property. +Alias\ for\ the\ public/private\ keypair\ within\ the\ key\ store\ that\ will\ be\ used\ to\ identify\ this\ server.=Publisk\u0101/priv\u0101t\u0101 atsl\u0113gu p\u0101ra aizst\u0101jv\u0101rds atsl\u0113gu kr\u0101tuv\u0113, kas tiks izmantots \u0161\u012b servera identific\u0113\u0161anai. +Path\ to\ the\ TLS\ trust\ store\ that\ is\ used\ when\ client\ authentication\ is\ required.\ Ignored\ if\ client\ certificate\ authentication\ is\ not\ used.\ Certificates\ in\ this\ file\ designate\ the\ signing\ authorities\ for\ client\ certificates\ that\ will\ be\ trusted.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ \"javax.net.ssl.trustStore\"\ system\ property.\=Path to the TLS trust store that is used when client authentication is required. Ignored if client certificate authentication is not used. Certificates in this file designate the signing authorities for client certificates that will be trusted. If this value is blank, will default to using the value of the \"javax.net.ssl.trustStore\" system property. +Password\ for\ the\ trust\ store.\ Ignored\ if\ client\ certificate\ authentication\ is\ not\ used.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ \"javax.net.ssl.trustStorePassword\"\ system\ property.\=Password for the trust store. Ignored if client certificate authentication is not used. If this value is blank, will default to using the value of the \"javax.net.ssl.trustStorePassword\" system property. +Enable\ CORS=Iesp\u0113jot CORS +Enable\ generation\ of\ CORS\ headers\ to\ allow\ cross-domain\ requests\ from\ browsers=Iesp\u0113jot CORS galvenes \u0123ener\u0113\u0161anu, lai at\u013cautu starpdom\u0113nu piepras\u012bjumus no p\u0101rl\u016bkprogramm\u0101m +Capabilities\ Info=Inform\u0101cija par iesp\u0113j\u0101m +Information\ included\ in\ the\ service\ capabilities\ document=Servisa iesp\u0113ju dokument\u0101 iek\u013caut\u0101 inform\u0101cija +Enable\ HTTP\ GET=Iesp\u0113jot HTTP GET +Enables/disables\ HTTP\ GET\ bindings\ on\ operations\ that\ support\ it=Iesp\u0113jo/atsp\u0113jo HTTP GET saist\u012b\u0161anu darb\u012bb\u0101m, kas to atbalsta +Enable\ HTTP\ POST=Iesp\u0113jot HTTP POST +Enables/disables\ HTTP\ POST\ bindings\ on\ operations\ that\ support\ it=Iesp\u0113jo/atsp\u0113jo HTTP POST saist\u012b\u0161anu darb\u012bb\u0101m, kas to atbalsta +Enable\ HTTP\ SOAP=Iesp\u0113jot HTTP SOAP +Enables/disables\ HTTP\ SOAP\ bindings\ on\ operations\ that\ support\ it=Iesp\u0113jo/atsp\u0113jo HTTP SOAP saist\u012b\u0161anu darb\u012bb\u0101m, kas to atbalsta +Connection\ Timeout=Savienojuma noildze +Reconnect\ Period=Atk\u0101rtota savienojuma periods +Max\ Reconnect\ Attempts=Maksim\u0101lais atk\u0101rtotas savieno\u0161anas m\u0113\u0123in\u0101jums +Maximum\ number\ of\ times\ the\ client\ will\ attempt\ to\ reconnect\ when\ the\ connection\ is\ not\ available\ or\ lost.\ A\ negative\ value\ means\ that\ there\ is\ no\ limit\ to\ the\ number\ of\ reconnection\ attempts.\ Zero\ means\ not\ to\ attempt\ reconnection.=Maksim\u0101lais rei\u017eu skaits, kad klients m\u0113\u0123in\u0101s atk\u0101rtoti izveidot savienojumu, ja savienojums nav pieejams vai tiek zaud\u0113ts. Negat\u012bv\u0101 v\u0113rt\u012bba noz\u012bm\u0113, ka atk\u0101rtota savienojuma m\u0113\u0123in\u0101jumu skaits nav ierobe\u017eots. Nulle noz\u012bm\u0113 nem\u0113\u0123in\u0101t izveidot savienojumu. +IP\ or\ DNS\ name\ of\ remote\ host=Att\u0101l\u0101s resursdatora IP vai DNS nosaukums +IP\ of\ local\ network\ interface\ to\ bind\ to\ or\ 'AUTO'\ to\ select\ it\ automatically=Viet\u0113j\u0101 t\u012bkla interfeisa IP, ar kuru saist\u012bties, vai \u201cAUTO\u201d, lai to autom\u0101tiski atlas\u012btu +Connection\ Options=Savienojuma opcijas +Serial\ port\ device\ name.\ Usually\ something\ like\ /dev/ttyXXX\ on\ Linux=Seri\u0101l\u0101 porta ier\u012bces nosaukums. Parasti kaut kas l\u012bdz\u012bgs /dev/ttyXXX oper\u0113t\u0101jsist\u0113m\u0101 Linux +Minimum\ number\ of\ bytes\ to\ receive\ before\ they\ are\ sent\ to\ the\ caller=Minim\u0101lais baitu skaits, kas j\u0101sa\u0146em, pirms tie tiek nos\u016bt\u012bti zvan\u012bt\u0101jam +Local\ port\ number\ to\ use\ on\ the\ local\ host=Viet\u0113jais porta numurs, ko izmantot viet\u0113j\u0101 resursdator\u0101 +Physical\ address\ of\ Bluetooth\ device\ to\ connect\ to=Bluetooth ier\u012bces fizisk\u0101 adrese, ar kuru izveidot savienojumu +Port\ number\ to\ connect\ to\ on\ remote\ host=Porta numurs, ar kuru izveidot savienojumu att\u0101laj\u0101 resursdator\u0101 +User\ Name=Lietot\u0101jv\u0101rds +Remote\ user\ name=Att\u0101l\u0101 lietot\u0101ja v\u0101rds +Password=Parole +Remote\ password=T\u0101lvad\u012bbas parole +Secure\ communications\ with\ SSL/TLS=Dro\u0161a sazi\u0146a ar SSL/TLS +Enable\ to\ check\ if\ remote\ host\ is\ reachable\ before\ attempting\ further\ operations=Iesp\u0113jojiet, lai p\u0101rbaud\u012btu, vai att\u0101lais saimniekdators ir sasniedzams, pirms m\u0113\u0123in\u0101t veikt turpm\u0101kas darb\u012bbas +Path\ or\ resource\ or\ service\ relative\ to\ server\ root=Ce\u013c\u0161 vai resurss vai pakalpojums attiec\u012bb\u0101 pret servera sakni +Unique\ ID\ of\ system\ group=Unik\u0101ls sist\u0113mas grupas ID +Name\ of\ system\ group=Sist\u0113mas grupas nosaukums +Description\ of\ system\ group=Sist\u0113mas grupas apraksts +List\ of\ bundle\ repository\ URLs=Komplekta repozitorija URL saraksts +A\ human\ readable\ friendly\ identifier\ for\ the\ deployment=Cilv\u0113kam las\u0101ms draudz\u012bgs izvieto\u0161anas identifikators +Enable\ Landing\ Page=Iesp\u0113jot galveno lapu +Enable\ Landing\ Servlet\ to\ redirect\ users\ to\ landing\ page=Iesp\u0113jojiet Landing Servlet, lai novirz\u012btu lietot\u0101jus uz galveno lapu +Config\ Class=Konfigur\u0101cijas klase +Type\ of\ module\ config\ class\ for\ which\ a\ custom\ panel\ must\ be\ generated=Modu\u013ca konfigur\u0101cijas klases veids, kuram ir j\u0101\u0123ener\u0113 piel\u0101gots panelis +UI\ Class=UI klase +Fully\ qualified\ name\ of\ class\ implementing\ IModuleAdminPanel=Piln\u012bb\u0101 kvalific\u0113ts klases nosaukums, kas ievie\u0161 IModuleAdminPanel + +# Auto-extracted property IDs +sensorML=Sensors Ml +lastUpdated=P\u0113d\u0113jo reizi atjaunin\u0101ts +lat=Lat +lon=Lon +alt=Alt +x=X +y=Y +z=Z +heading=Virsraksts +pitch=Pi\u0137is +roll=Roll +location=Atra\u0161an\u0101s vieta +orientation=Orient\u0113\u0161an\u0101s +databaseNum=Datu b\u0101zes numurs +enableAccessControl=Iesp\u0113jot piek\u013cuves kontroli +requireAuth=Piepras\u012bt autentifik\u0101ciju +mimeType=M\u012bmikas veids +className=Klases nosaukums +endPoint=Beigu punkts +id=Id +description=Apraksts +autoStart=Auto Start +topicName=T\u0113mas nosaukums +enablePublish=Iesp\u0113jot public\u0113\u0161anu +enableSubscribe=Iesp\u0113jot abon\u0113\u0161anu +protocol=Protokols +moduleConfigPath=Modu\u013ca konfigur\u0101cijas ce\u013c\u0161 +moduleDataPath=Modu\u013ca datu ce\u013c\u0161 +commonConfig=Kop\u0113j\u0101 konfigur\u0101cija +sensors=Sensors +config=Konfig +uniqueID=Unik\u0101lais ID +subsystems=Apak\u0161sist\u0113mas +dbConfig=Db konfigur\u0101cija +systemUIDs=Sist\u0113mas Uids +autoPurgeConfig=Autom\u0101tisk\u0101s t\u012br\u012b\u0161anas konfigur\u0101cija +minCommitPeriod=Minim\u0101lais saist\u012bbu periods +enabled=Iesp\u0113jots +purgePeriod=T\u012br\u012b\u0161anas periods +maxRecordAge=Maksim\u0101lais rekorda vecums +users=Lietot\u0101ji +roles=Lomas +allow=At\u013caut +deny=Noliegt +userID=Lietot\u0101ja ID +name=V\u0101rds +password=Parole +certificate=Sertifik\u0101ts +twoFactorSecret=Divu faktoru nosl\u0113pums +isTwoFactorEnabled=Ir iesp\u0113joti divi faktori +roleID=Lomas ID +sourceDatabaseId=Avota datu b\u0101zes ID +includeFilter=Iek\u013caut filtru +excludeFilter=Izsl\u0113gt filtru +httpPort=HTTP ports +httpsPort=HTTPs ports +staticDocsRootUrl=Statiskais dokumentu saknes URL +staticDocsRootDir=Static Docs Root Dir +servletsRootUrl=Servletu saknes URL +proxyBaseUrl=Starpniekservera b\u0101zes URL +authMethod=Auth metode +keyStorePath=Atsl\u0113gu veikala ce\u013c\u0161 +keyStorePassword=Atsl\u0113gu kr\u0101tuves parole +keyAlias=Atsl\u0113gas aizst\u0101jv\u0101rds +trustStorePath=Uztic\u012bbas veikala ce\u013c\u0161 +trustStorePassword=Uzticam\u012bbas veikala parole +xmlConfigFile=Xml konfigur\u0101cijas fails +enableCORS=Iesp\u0113jot Cors +title=Title +keywords=Atsl\u0113gv\u0101rdi +fees=Maksas +accessConstraints=Piek\u013cuves ierobe\u017eojumi +serviceProvider=Pakalpojumu sniedz\u0113js +ogcCapabilitiesInfo=Inform\u0101cija par Ogc iesp\u0113j\u0101m +enableHttpGET=Iesp\u0113jot Http Get +enableHttpPOST=Iesp\u0113jot Http Post +enableSOAP=Iesp\u0113jot ziepes +connectTimeout=Savienojuma noildze +reconnectPeriod=Atk\u0101rtota savienojuma periods +reconnectAttempts=Atk\u0101rtota savienojuma m\u0113\u0123in\u0101jumi +deviceID=Ier\u012bces\u00a0ID +deviceClass=Ier\u012bces klase +remoteHost=Att\u0101lais saimniekdators +localAddress=Viet\u0113j\u0101 adrese +connection=Savienojums +portName=Ostas nosaukums +baudRate=P\u0101rbaudes \u0101trums +dataBits=Datu biti +stopBits=Stop Bits +parity=Parit\u0101te +receiveTimeout=Sa\u0146em\u0161anas noildze +receiveThreshold=Sa\u0146em\u0161anas slieksnis +remotePort=Att\u0101lais ports +localPort=Viet\u0113j\u0101 osta +deviceAddress=Ier\u012bces adrese +deviceName=Ier\u012bces nosaukums +serviceUuid=Pakalpojums Uuid +user=Lietot\u0101js +enableTLS=Iesp\u0113jot Tls +checkReachability=P\u0101rbaudiet sasniedzam\u012bbu +resourcePath=Resursa ce\u013c\u0161 +uid=Uid +securityRole=Dro\u0161\u012bbas loma +passwordField=Paroles lauks +widgetSet=Logr\u012bku komplekts +bundleRepoUrls=Repo\u00a0URL komplekts +customPanels=Piel\u0101goti pane\u013ci +customForms=Piel\u0101gotas veidlapas +deploymentName=Izvieto\u0161anas nosaukums +enableLandingPage=Iesp\u0113jot galveno lapu +configClass=Konfigur\u0101cijas klase +uiClass=Ui klase +moduleClass=Modu\u013ca klase + +# Auto-extracted hardcoded UI strings +testLinks1=Testa saites +uniqueID1=Unik\u0101ls ID +foiIDs1=FOI ID +version1=Versija + +Connected\ Systems\ Endpoint=Savienoto sist\u0113mu galapunkts +Connected\ Systems\ endpoint\ where\ the\ requests\ are\ sent=Savienoto sist\u0113mu galapunkts, uz kuru tiek nos\u016bt\u012bti piepras\u012bjumi +Connection\ Settings=Savienojuma iestat\u012bjumi +Custom\ connector\ configurations=Piel\u0101gotas savienot\u0101ju konfigur\u0101cijas +Custom\ provider\ configurations=Piel\u0101gotas pakalpojumu sniedz\u0113ja konfigur\u0101cijas +Database\ ID=Datu b\u0101zes ID +Default\ live\ time-out\ for\ all\ offerings,\ unless\ overriden\ by\ custom\ provider\ settings=Noklus\u0113juma tie\u0161raides taimauts visiem pied\u0101v\u0101jumiem, ja vien to nav ignor\u0113ju\u0161i piel\u0101gotie pakalpojumu sniedz\u0113ja iestat\u012bjumi +Default\ live\ time-out\ for\ new\ offerings\ created\ via\ SOS-T=Noklus\u0113juma tie\u0161raides taimauts jauniem pied\u0101v\u0101jumiem, kas izveidoti, izmantojot SOS-T +Enable\ to\ use\ a\ persistent\ HTTP\ connection\ for\ InsertResult=Iesp\u0113jot, lai InsertResult izmantotu past\u0101v\u012bgu HTTP savienojumu +Execution\ period\ of\ the\ purge\ policy\ (in\ seconds)=T\u012br\u012b\u0161anas politikas izpildes periods (sekund\u0113s) +Filtered\ view\ to\ select\ systems\ exposed\ as\ read-only\ through\ this\ service=Filtr\u0113ts skats, lai atlas\u012btu sist\u0113mas, kas ir redzamas k\u0101 tikai las\u0101mas, izmantojot \u0161o pakalpojumu +Filtered\ view\ to\ select\ systems/datastreams\ to\ register\ with\ Connected\ Systems=Filtr\u0113ts skats, lai atlas\u012btu sist\u0113mas/datu straumes, kuras re\u0123istr\u0113t pievienotaj\u0101s sist\u0113m\u0101s +Filtered\ view\ to\ select\ systems/datastreams\ to\ register\ with\ remote\ SOS=Filtr\u0113ts skats, lai atlas\u012btu sist\u0113mas/datu straumes, kuras re\u0123istr\u0113t ar att\u0101lo SOS +Fixed\ system\ location\ in\ EPSG\ 4979\ (WGS84)\ coordinate\ system=Fiks\u0113ta sist\u0113mas atra\u0161an\u0101s vieta EPSG 4979 (WGS84) koordin\u0101tu sist\u0113m\u0101 +For\ each\ connection\ or\ reconnection\ attempt,\ the\ client\ will\ wait\ for\ the\ remote\ side\ to\ respond\ until\ this\ timeout\ expires\ (in\ ms)=Katram savienojuma vai atk\u0101rtota savienojuma m\u0113\u0123in\u0101jumam klients gaid\u012bs att\u0101l\u0101s puses atbildi, l\u012bdz beigsies \u0161is taimauts (ms) +Heading\ (or\ yaw)\ angle\ about\ Z\ axis\ in\ degrees=Virziena (vai le\u0146\u0137a) le\u0146\u0137is ap Z asi gr\u0101dos +How\ long\ the\ client\ will\ wait\ after\ connection\ is\ lost\ before\ it\ will\ attempt\ to\ reconnect\ (in\ ms)=Cik ilgi klients gaid\u012bs p\u0113c savienojuma zaud\u0113\u0161anas, pirms tas m\u0113\u0123in\u0101s atk\u0101rtoti izveidot savienojumu (ms) +ID\ Generator=ID \u0123enerators +ID\ of\ database\ module\ used\ for\ persisting\ data\ received\ by\ this\ service.\ If\ none\ is\ provided,\ new\ systems\ registered\ through\ this\ service\ will\ be\ available\ on\ the\ hub,\ but\ with\ no\ persistence\ guarantee\ across\ restarts.=Datu b\u0101zes modu\u013ca ID, ko izmanto \u0161\u012b pakalpojuma sa\u0146emtajiem past\u0101v\u012bgajiem datiem. Ja nekas netiek nodro\u0161in\u0101ts, jaunas sist\u0113mas, kas re\u0123istr\u0113tas, izmantojot \u0161o pakalpojumu, b\u016bs pieejamas centrmezgl\u0101, ta\u010du bez notur\u012bbas garantijas restart\u0113\u0161anas laik\u0101. +ID\ of\ database\ module\ used\ for\ persisting\ data\ received\ by\ this\ service.\ If\ none\ is\ provided,\ new\ systems\ registered\ through\ this\ service\ will\ be\ available\ on\ the\ hub,\ but\ with\ no\ persistence\ guarantee\ across\ restarts.\ Only\ the\ latest\ observation\ from\ each\ datastream\ will\ be\ available\ and\ older\ observations\ will\ be\ discarded=Datu b\u0101zes modu\u013ca ID, ko izmanto \u0161\u012b pakalpojuma sa\u0146emtajiem past\u0101v\u012bgajiem datiem. Ja nekas netiek nodro\u0161in\u0101ts, jaunas sist\u0113mas, kas re\u0123istr\u0113tas, izmantojot \u0161o pakalpojumu, b\u016bs pieejamas centrmezgl\u0101, ta\u010du bez notur\u012bbas garantijas restart\u0113\u0161anas laik\u0101. B\u016bs pieejams tikai jaun\u0101kais nov\u0113rojums no katras datu pl\u016bsmas, un vec\u0101ki nov\u0113rojumi tiks atmesti +Individual\ configuration\ of\ sensors\ in\ the\ array\ (will\ override\ common\ configuration)=Individu\u0101la sensoru konfigur\u0101cija mas\u012bv\u0101 (ieros\u0113s parasto konfigur\u0101ciju) +List\ of\ observed\ properties\ URI\ to\ make\ available\ as\ outputs=Nov\u0113roto rekviz\u012btu URI saraksts, kas j\u0101dara pieejams k\u0101 izvadi +Mapping\ of\ custom\ formats\ mime-types\ to\ custom\ serializer\ classes=Piel\u0101gotu form\u0101tu MIME veidu kart\u0113\u0161ana piel\u0101gotaj\u0101m serializatoru klas\u0113m +Mappings\ used\ by\ CURIE\ to\ URI\ resolver=Kart\u0113jumi, ko CURIE izmanto URI risin\u0101t\u0101jam +Max\ Limit=Maksim\u0101lais ierobe\u017eojums +Max\ Observations\ Returned=Max Observations atgriez\u0101s +Max\ Records\ Returned=Max Records atgriez\u0101s +Max\ delay\ between\ auto-commit\ execution,\ in\ seconds.\ 0\ to\ disable\ time-based\ auto-commit=Maksim\u0101l\u0101 aizkave starp autom\u0101tisk\u0101s izpildes izpildi sekund\u0113s. 0, lai atsp\u0113jotu uz laiku balst\u012btu autom\u0101tisko apstiprin\u0101\u0161anu +Maximum\ age\ of\ data\ to\ be\ kept\ in\ storage\ (in\ seconds)=Uzglab\u0101\u0161an\u0101 glab\u0101jamo datu maksim\u0101lais vecums (sekund\u0113s) +Maximum\ number\ of\ FoI\ IDs\ listed\ in\ capabilities=Maksim\u0101lais FoI ID skaits, kas nor\u0101d\u012bts iesp\u0113j\u0101s +Maximum\ number\ of\ observations\ returned\ \ by\ a\ historical\ GetObservation\ request\ (for\ each\ selected\ offering)=Maksim\u0101lais nov\u0113rojumu skaits, kas atgriezti ar v\u0113sturisku GetObservation piepras\u012bjumu (katram atlas\u012btajam pied\u0101v\u0101jumam) +Maximum\ number\ of\ records\ in\ upload\ queue\ (used\ to\ compensate\ for\ variable\ bandwidth)=Maksim\u0101lais ierakstu skaits aug\u0161upiel\u0101des rind\u0101 (izmanto, lai kompens\u0113tu main\u012bgo joslas platumu) +Maximum\ number\ of\ resources\ returned\ in\ a\ single\ page=Maksim\u0101lais vien\u0101 lap\u0101 atgriezto resursu skaits +Maximum\ number\ of\ result\ records\ returned\ by\ a\ historical\ GetResult\ request=Maksim\u0101lais rezult\u0101tu ierakstu skaits, kas tiek atgriezti ar v\u0113sturisku GetResult piepras\u012bjumu +Maximum\ number\ of\ stream\ errors\ before\ we\ try\ to\ reconnect\ to\ remote\ server=Maksim\u0101lais straumes k\u013c\u016bdu skaits, pirms m\u0113\u0123in\u0101m atk\u0101rtoti izveidot savienojumu ar att\u0101lo serveri +Memory\ cache\ size\ for\ page\ chunks,\ in\ KB=Atmi\u0146as ke\u0161atmi\u0146as lielums lappu\u0161u da\u013c\u0101m, KB +Metadata\ of\ system\ group\ that\ will\ be\ created\ to\ contain\ all\ procedures/sensors\ registered\ through\ this\ service.\ Only\ sensors\ in\ this\ group\ will\ be\ modifiable\ by\ this\ service=Sist\u0113mas grupas metadati, kas tiks izveidoti, lai satur\u0113tu visas proced\u016bras/sensorus, kas re\u0123istr\u0113ti, izmantojot \u0161o pakalpojumu. \u0160is pakalpojums main\u012bs tikai \u0161\u012bs grupas sensorus +Metadata\ of\ system\ group\ that\ will\ be\ created\ to\ contain\ all\ systems\ registered\ through\ this\ service.\ Only\ systems\ in\ this\ group\ will\ be\ modifiable\ by\ this\ service=Sist\u0113mu grupas metadati, kas tiks izveidoti, lai ietvertu visas sist\u0113mas, kas re\u0123istr\u0113tas, izmantojot \u0161o pakalpojumu. \u0160is pakalpojums main\u012bs tikai \u0161\u012bs grupas sist\u0113mas +Method\ used\ to\ generate\ new\ resource\ IDs=Jaunu resursu\u00a0ID \u0123ener\u0113\u0161anai izmantot\u0101 metode +Minimum\ fillrate\ above\ which\ auto\ compact\ operations\ may\ be\ triggered=Minim\u0101lais aizpild\u012bjuma \u0101trums, virs kura var tikt aktiviz\u0113tas autom\u0101tisk\u0101s kompakt\u0113\u0161anas darb\u012bbas +Minimum\ period\ between\ database\ commits\ (in\ ms)=Minim\u0101lais periods starp datu b\u0101zes izpildi (ms) +Names\ of\ datastreams\ whose\ data\ will\ be\ hidden\ from\ the\ SOS.\ If\ this\ is\ null,\ all\ streams\ produced\ by\ the\ procedure\ are\ exposed=To datu straumju nosaukumi, kuru dati tiks pasl\u0113pti no SOS. Ja \u0161\u012b v\u0113rt\u012bba ir nulle, tiek atkl\u0101tas visas proced\u016bras rad\u012bt\u0101s straumes +Observed\ Properties=Nov\u0113rot\u0101s \u012bpa\u0161\u012bbas +Offering\ URI\ as\ exposed\ in\ capabilities.\ (if\ null,\ the\ procedure\ UID\ is\ used)=Tiek pied\u0101v\u0101ts URI, k\u0101 tas ir iesp\u0113jams. (ja nulle, tiek izmantots proced\u016bras UID) +Offering\ description\ (if\ null,\ it\ will\ be\ auto-generated)=Pied\u0101v\u0101juma apraksts (ja nulle, tas tiks autom\u0101tiski \u0123ener\u0113ts) +Offering\ name\ (if\ null,\ the\ procedure\ name\ is\ used)=Pied\u0101v\u0101juma nosaukums (ja nulle, tiek izmantots proced\u016bras nosaukums) +Orientation\ as\ Euler\ angles\ in\ NED\ coordinate\ reference\ frame.\nOrder\ of\ rotations\ is\ z-y\u2019-x"\ (in\ rotating\ frame)\ or\ x-y-z\ (in\ fixed\ frame)=Orient\u0101cija k\u0101 Eilera le\u0146\u0137i NED koordin\u0101tu atskaites r\u0101m\u012b.\nRot\u0101ciju sec\u012bba ir z-y''-x" (rot\u0113jo\u0161\u0101 r\u0101m\u012b) vai x-y-z (fiks\u0113t\u0101 r\u0101m\u012b) +Password\ for\ the\ key\ store\ (and\ for\ the\ keypair\ within\ the\ keystore).\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ "javax.net.ssl.keyStorePassword"\ system\ property.\ This\ value\ can\ use\ variable\ expansion\ expressions\ of\ the\ form\ "$${name}"\ (for\ environment\ variables\ and\ system\ properties)\ or\ "$${file;/path/to/file}"\ (for\ secret\ file\ contents).=Parole atsl\u0113gu kr\u0101tuves (un atsl\u0113gu p\u0101ra atsl\u0113gu kr\u0101tuves ietvaros). Ja \u0161\u012b v\u0113rt\u012bba ir tuk\u0161a, p\u0113c noklus\u0113juma tiks izmantota sist\u0113mas rekviz\u012bta "javax.net.ssl.keyStorePassword" v\u0113rt\u012bba. \u0160ai v\u0113rt\u012bbai var izmantot main\u012bgo papla\u0161in\u0101\u0161anas izteiksmes form\u0101 "$${name}" (vides main\u012bgajiem un sist\u0113mas rekviz\u012btiem) vai "$${file;/path/to/file}" (slepenajam faila saturam). +Password\ for\ the\ trust\ store.\ Ignored\ if\ client\ certificate\ authentication\ is\ not\ used.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ "javax.net.ssl.trustStorePassword"\ system\ property.\ This\ value\ can\ use\ variable\ expansion\ expressions\ of\ the\ form\ "$${name}"\ (for\ environment\ variables\ and\ system\ properties)\ or\ "$${file;/path/to/file}"\ (for\ secret\ file\ contents).=Trasta veikala parole. Ignor\u0113, ja netiek izmantota klienta sertifik\u0101ta autentifik\u0101cija. Ja \u0161\u012b v\u0113rt\u012bba ir tuk\u0161a, p\u0113c noklus\u0113juma tiks izmantota sist\u0113mas rekviz\u012bta "javax.net.ssl.trustStorePassword" v\u0113rt\u012bba. \u0160ai v\u0113rt\u012bbai var izmantot main\u012bgo papla\u0161in\u0101\u0161anas izteiksmes form\u0101 "$${name}" (vides main\u012bgajiem un sist\u0113mas rekviz\u012btiem) vai "$${file;/path/to/file}" (slepenajam faila saturam). +Path\ of\ service\ endpoint\ relative\ to\ the\ context\ URL\ (e.g.\ http\://server.net/sensorhub)=Pakalpojuma galapunkta ce\u013c\u0161 attiec\u012bb\u0101 pret konteksta\u00a0URL (piem\u0113ram, http://server.net/sensorhub) +Path\ to\ a\ key\ store\ containing\ the\ certificate\ and\ keypair\ that\ this\ server\ will\ present\ to\ clients\ when\ accessed\ over\ HTTPS.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ "javax.net.ssl.keyStore"\ system\ property.\ This\ value\ can\ use\ variable\ expansion\ expressions\ of\ the\ form\ "$${name}"\ (for\ environment\ variables\ and\ system\ properties)\ or\ "$${file;/path/to/file}"\ (for\ secret\ file\ contents).=Ce\u013c\u0161 uz atsl\u0113gu kr\u0101tuvi, kur\u0101 ir sertifik\u0101ts un atsl\u0113gu p\u0101ris, ko \u0161is serveris par\u0101d\u012bs klientiem, kad tam piek\u013c\u016bst, izmantojot HTTPS. Ja \u0161\u012b v\u0113rt\u012bba ir tuk\u0161a, p\u0113c noklus\u0113juma tiks izmantota sist\u0113mas rekviz\u012bta "javax.net.ssl.keyStore" v\u0113rt\u012bba. \u0160ai v\u0113rt\u012bbai var izmantot main\u012bgo papla\u0161in\u0101\u0161anas izteiksmes form\u0101 "$${name}" (vides main\u012bgajiem un sist\u0113mas rekviz\u012btiem) vai "$${file;/path/to/file}" (slepenajam faila saturam). +Path\ to\ database\ file=Ce\u013c\u0161 uz datu b\u0101zes failu +Path\ to\ external\ config\ file\ (in\ Jetty\ IOC\ XML\ format)=Ce\u013c\u0161 uz \u0101r\u0113jo konfigur\u0101cijas failu (Jetty IOC XML form\u0101t\u0101) +Path\ to\ the\ TLS\ trust\ store\ that\ is\ used\ when\ client\ authentication\ is\ required.\ Ignored\ if\ client\ certificate\ authentication\ is\ not\ used.\ Certificates\ in\ this\ file\ designate\ the\ signing\ authorities\ for\ client\ certificates\ that\ will\ be\ trusted.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ "javax.net.ssl.trustStore"\ system\ property.\ This\ value\ can\ use\ variable\ expansion\ expressions\ of\ the\ form\ "$${name}"\ (for\ environment\ variables\ and\ system\ properties)\ or\ "$${file;/path/to/file}"\ (for\ secret\ file\ contents).=Ce\u013c\u0161 uz TLS uzticam\u012bbas kr\u0101tuvi, kas tiek izmantots, ja ir nepiecie\u0161ama klienta autentifik\u0101cija. Ignor\u0113, ja netiek izmantota klienta sertifik\u0101ta autentifik\u0101cija. \u0160aj\u0101 fail\u0101 eso\u0161ie sertifik\u0101ti nor\u0101da uzticamo klientu sertifik\u0101tu parakst\u012b\u0161anas iest\u0101des. Ja \u0161\u012b v\u0113rt\u012bba ir tuk\u0161a, p\u0113c noklus\u0113juma tiks izmantota sist\u0113mas rekviz\u012bta "javax.net.ssl.trustStore" v\u0113rt\u012bba. \u0160ai v\u0113rt\u012bbai var izmantot main\u012bgo papla\u0161in\u0101\u0161anas izteiksmes form\u0101 "$${name}" (vides main\u012bgajiem un sist\u0113mas rekviz\u012btiem) vai "$${file;/path/to/file}" (slepenajam faila saturam). +Port\ number\ to\ connect\ to\ on\ remote\ host\ (0\ to\ automatically\ select\ a\ port)=Porta numurs, ar kuru izveidot savienojumu att\u0101laj\u0101 resursdator\u0101 (0, lai autom\u0101tiski atlas\u012btu portu) +SOS\ Endpoint=SOS galapunkts +SOS\ endpoint\ to\ fetch\ data\ from=SOS galapunkts, no kura ieg\u016bt datus +SOS\ endpoint\ where\ the\ requests\ are\ sent=SOS galapunkts, uz kuru tiek nos\u016bt\u012bti piepras\u012bjumi +SPS\ Endpoint=SPS galapunkts +SPS\ endpoint\ to\ send\ commands\ to=SPS galapunkts, uz kuru nos\u016bt\u012bt komandas +Security\ related\ options=Ar dro\u0161\u012bbu saist\u012bt\u0101s iesp\u0113jas +Sensor\ UID=Sensora UID +Set\ if\ WebSocket\ protocol\ should\ be\ used\ to\ get\ streaming\ data\ from\ SOS=Iestatiet, vai WebSocket protokols ir j\u0101izmanto, lai ieg\u016btu straum\u0113\u0161anas datus no SOS +Set\ if\ offering\ is\ enabled,\ unset\ if\ disabled=Iestat\u012bt, ja pied\u0101v\u0101jums ir iesp\u0113jots, atiestat\u012bt, ja tas ir atsp\u0113jots +Set\ if\ websockets\ protocol\ should\ be\ used\ to\ send\ commands\ to\ SPS=Iestatiet, vai komandu nos\u016bt\u012b\u0161anai uz SPS ir j\u0101izmanto Websockets protokols +Set\ to\ compact\ the\ database\ file\ when\ the\ database\ module\ is\ stopped\ or\ restarted=Iestatiet datu b\u0101zes faila bl\u012bv\u0113\u0161anu, kad datu b\u0101zes modulis tiek aptur\u0113ts vai restart\u0113ts +Set\ to\ compress\ underlying\ file\ storage=Iestatiet, lai saspiestu pamat\u0101 eso\u0161o failu kr\u0101tuvi +Set\ to\ display\ MVStore\ debug\ info\ when\ database\ is\ closed\ (only\ if\ DEBUG\ log\ is\ also\ enabled)=Iestat\u012bt, lai tiktu r\u0101d\u012bta MVStore atk\u013c\u016bdo\u0161anas inform\u0101cija, kad datu b\u0101ze ir aizv\u0113rta (tikai tad, ja ir iesp\u0113jots ar\u012b DEBUG \u017eurn\u0101ls) +Set\ to\ enable\ spatial\ indexing\ of\ individual\ observations\ sampling\ locations\ (when\ provided)=Iestat\u012bt, lai iesp\u0113jotu atsevi\u0161\u0137u nov\u0113rojumu paraugu \u0146em\u0161anas vietu telpisko indeks\u0113\u0161anu (ja tas ir paredz\u0113ts) +Set\ to\ open\ the\ database\ as\ read-only=Iestatiet, lai datub\u0101ze tiktu atv\u0113rta tikai las\u0101mai +Set\ to\ true\ to\ enable\ transactional\ operation\ support=Iestatiet v\u0113rt\u012bbu True, lai iesp\u0113jotu dar\u012bjumu oper\u0101ciju atbalstu +Size\ of\ the\ auto-commit\ write\ buffer,\ in\ KB=Autom\u0101tisk\u0101s izpildes rakst\u012b\u0161anas bufera lielums KB +TCP\ port\ where\ server\ will\ listen\ for\ secure\ HTTP\ (HTTPS)\ connections\ (use\ 0\ to\ disable\ HTTPS).=TCP ports, kur\u0101 serveris uzklaus\u012bs dro\u0161us HTTP (HTTPS) savienojumus (izmantojiet 0, lai atsp\u0113jotu HTTPS). +TCP\ port\ where\ server\ will\ listen\ for\ unsecure\ HTTP\ connections\ (use\ 0\ to\ disable\ HTTP).=TCP ports, kur\u0101 serveris uzklaus\u012bs nedro\u0161us HTTP savienojumus (izmantojiet 0, lai atsp\u0113jotu HTTP). +Time-out\ after\ which\ real-time\ requests\ are\ disabled\ if\ no\ more\ measurements\ are\ received\ (in\ seconds).\ Real-time\ is\ reactivated\ as\ soon\ as\ new\ records\ start\ being\ received\ again=Taimauts, p\u0113c kura re\u0101llaika piepras\u012bjumi tiek atsp\u0113joti, ja vairs netiek sa\u0146emti m\u0113r\u012bjumi (sekund\u0113s). Re\u0101llaika re\u017e\u012bms tiek atk\u0101rtoti aktiviz\u0113ts, tikl\u012bdz tiek atkal sa\u0146emti jauni ieraksti +Time-out\ period\ after\ which\ a\ template\ ID\ reserved\ using\ InsertResultTemplate\ will\ expire\ if\ not\ used\ in\ InsertResult\ requests\ (in\ seconds)=Taimauta periods, p\u0113c kura veidnes\u00a0ID, kas rezerv\u0113ts, izmantojot InsertResultTemplate, beigsies, ja tas netiks izmantots InsertResult piepras\u012bjumos (sekund\u0113s) +Timeout\ after\ which\ data\ is\ released\ to\ the\ caller\ if\ at\ least\ one\ byte\ was\ received\ (in\ ms)=Taimauts, p\u0113c kura dati tiek nodoti zvan\u012bt\u0101jam, ja ir sa\u0146emts vismaz viens baits (ms) +URI\ Prefix\ Map=URI prefiksa karte +Unique\ ID\ (full\ URN\ or\ only\ suffix)\ to\ use\ for\ the\ sensor\ system\ or\ 'auto'\ to\ use\ the\ UUID\ randomly\ generated\ the\ first\ time\ the\ module\ is\ initialized=Unik\u0101ls ID (pilns URN vai tikai sufikss), ko izmantot sensoru sist\u0113mai, vai \u201cautom\u0101tiski\u201d, lai izmantotu UUID, kas nejau\u0161i \u0123ener\u0113ts, pirmo reizi inicializ\u0113jot moduli. +Unique\ ID\ of\ a\ system\ that\ this\ configuration\ applies\ to.\nCan\ include\ a\ trailing\ wildcard\ '*'\ to\ match\ several\ systems\ at\ once.=Unik\u0101ls sist\u0113mas ID, uz kuru attiecas \u0161\u012b konfigur\u0101cija.\nVar ietvert beigu aizst\u0101j\u0113jz\u012bmi \u201c*\u201d, lai vienlaikus atbilstu vair\u0101k\u0101m sist\u0113m\u0101m. +Unique\ ID\ of\ sensor\ to\ connect\ to\ on\ SOS\ and\ SPS\ servers=Unik\u0101ls sensora ID, lai izveidotu savienojumu ar SOS un SPS serveriem +Unique\ ID\ of\ system\ that\ this\ configuration\ applies\ to.\nCan\ include\ a\ trailing\ wildcard\ '*'\ to\ match\ several\ systems\ at\ once.=Unik\u0101ls sist\u0113mas ID, uz kuru attiecas \u0161\u012b konfigur\u0101cija.\nVar ietvert beigu aizst\u0101j\u0113jz\u012bmi \u201c*\u201d, lai vienlaikus atbilstu vair\u0101k\u0101m sist\u0113m\u0101m. +Use\ WebSockets\ for\ SOS=Izmantojiet WebSockets SOS +Use\ WebSockets\ for\ SPS=Izmantojiet WebSockets SPS + +Node\ ID=Mezgla ID +Stats\ Frequency\ (min)=Statistikas bie\u017eums (min) +Database\ URL=Datu b\u0101zes URL +Database\ Name=Datu b\u0101zes nosaukums +ID\ Generator=ID \u0123enerators +Database\ Number=Datu b\u0101zes numurs +Remote\ Host=Att\u0101lais saimniekdators +Remote\ Port=Att\u0101lais ports +Lane\ Width\ (m)=Joslas platums (m) +Enable\ EML\ Analysis=Iesp\u0113jot EML anal\u012bzi +Is\ Collimated=Ir kolim\u0113ts +Stream\ Path=Straumes ce\u013c\u0161 +Lane\ Options\ Config=Joslu opcijas Konfig diff --git a/sensorhub-webui-core/src/main/resources/org/sensorhub/ui/i18n/messages_pa_PK.properties b/sensorhub-webui-core/src/main/resources/org/sensorhub/ui/i18n/messages_pa_PK.properties new file mode 100644 index 0000000000..2c6bceeae2 --- /dev/null +++ b/sensorhub-webui-core/src/main/resources/org/sensorhub/ui/i18n/messages_pa_PK.properties @@ -0,0 +1,543 @@ +app.title=OpenSensorHub +tab.sensors=\u0633\u06cc\u0646\u0633\u0631 +tab.databases=\u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 +tab.processing=\u067e\u0631\u0648\u0633\u06cc\u0633\u0646\u06af +tab.services=\u062e\u062f\u0645\u0627\u062a +tab.clients=\u06a9\u0644\u0627\u0626\u0646\u0679 +tab.network=\u0646\u06cc\u0679 \u0648\u0631\u06a9 +tab.security=\u0633\u06cc\u06a9\u06cc\u0648\u0631\u0679\u06cc +action.shutdown=\u0634\u0679 \u0688\u0627\u0624\u0646 +action.logout=\u0644\u0627\u06af \u0622\u0648\u0679 +action.save=\u0645\u062d\u0641\u0648\u0638 \u06a9\u0631\u06cc\u06ba +action.addModule=\u0646\u0648\u0627\u06ba \u0645\u0627\u0688\u06cc\u0648\u0644 \u0634\u0627\u0645\u0644 \u06a9\u0631\u0648 +action.addSubmodule=\u0633\u0628 \u0645\u0627\u0688\u06cc\u0648\u0644 \u0634\u0627\u0645\u0644 \u06a9\u0631\u0648 +action.removeModule=\u0645\u0627\u0688\u06cc\u0648\u0644 \u06c1\u0679\u0627 \u062f\u06cc\u0648 +action.removeSubmodule=\u0633\u0628 \u0645\u0627\u0688\u06cc\u0648\u0644 \u06c1\u0679\u0627 \u062f\u06cc\u0648 +action.start=\u0634\u0631\u0648\u0639 \u06a9\u0631\u0648 +action.stop=\u0631\u0648\u06a9\u0648 +action.restart=\u062f\u0648\u0628\u0627\u0631\u06c1 \u0634\u0631\u0648\u0639 \u06a9\u0631\u0648 +action.forceInit=\u0632\u0628\u0631\u062f\u0633\u062a\u06cc \u0634\u0631\u0648\u0639 \u06a9\u0631\u0648 +action.selectAll=\u0633\u0627\u0631\u06d2 \u0645\u0627\u0688\u06cc\u0648\u0644 \u0645\u0646\u062a\u062e\u0628 \u06a9\u0631\u0648 +action.deselectAll=\u0633\u0627\u0631\u06d2 \u063a\u06cc\u0631 \u0645\u0646\u062a\u062e\u0628 \u06a9\u0631\u0648 +dialog.shutdown.title=\u0634\u0679 \u0688\u0627\u0624\u0646 \u0634\u0631\u0648\u0639 \u06c1\u0648 \u06af\u06cc\u0627... +dialog.shutdown.message=\u06cc\u0648\u0632\u0631 \u0627\u0646\u0679\u0631\u0641\u06cc\u0633 \u062c\u0648\u0627\u0628 \u062f\u06cc\u0646\u0627 \u0628\u0646\u062f \u06a9\u0631 \u062f\u06d2 \u06af\u0627 +dialog.shutdown.confirm=\u06a9\u06cc \u062a\u0633\u06cc \u0648\u0627\u0642\u0639\u06cc \u0633\u06cc\u0646\u0633\u0631 \u06c1\u0628 \u0646\u0648\u06ba \u0628\u0646\u062f \u06a9\u0631\u0646\u0627 \u0686\u0627\u06c1\u0646\u062f\u06d2 \u06c1\u0648\u061f +dialog.logout.confirm=\u06a9\u06cc \u062a\u0633\u06cc \u0648\u0627\u0642\u0639\u06cc \u0644\u0627\u06af \u0622\u0648\u0679 \u06a9\u0631\u0646\u0627 \u0686\u0627\u06c1\u0646\u062f\u06d2 \u06c1\u0648\u061f +dialog.save.confirm=\u06a9\u06cc \u062a\u0633\u06cc \u0648\u0627\u0642\u0639\u06cc \u06a9\u0646\u0641\u06cc\u06af\u0631\u06cc\u0634\u0646 \u0646\u0648\u06ba \u0645\u062d\u0641\u0648\u0638 \u06a9\u0631\u0646\u0627 (\u062a\u06d2 \u067e\u0686\u06be\u0644\u06cc \u0646\u0648\u06ba \u0627\u0648\u0648\u0631 \u0631\u0627\u0626\u0679 \u06a9\u0631\u0646\u0627) \u0686\u0627\u06c1\u0646\u062f\u06d2 \u06c1\u0648\u061f +msg.configSaved=SensorHub \u06a9\u0646\u0641\u06cc\u06af\u0631\u06cc\u0634\u0646 \u0645\u062d\u0641\u0648\u0638 \u06c1\u0648 \u06af\u0626\u06cc +msg.configSaveError=\u06a9\u0646\u0641\u06cc\u06af\u0631\u06cc\u0634\u0646 \u0645\u062d\u0641\u0648\u0638 \u0646\u06c1\u06cc\u06ba \u06a9\u06cc\u062a\u06cc \u062c\u0627 \u0633\u06a9\u06cc +dialog.remove.confirm=\u06a9\u06cc \u062a\u0633\u06cc \u0648\u0627\u0642\u0639\u06cc {0} \u0646\u0648\u06ba \u06c1\u0679\u0627\u0646\u0627 \u0686\u0627\u06c1\u0646\u062f\u06d2 \u06c1\u0648\u061f
\u0633\u0627\u0631\u06cc\u0627\u06ba \u0633\u06cc\u0679\u0646\u06af\u0632 \u0636\u0627\u0626\u0639 \u06c1\u0648 \u062c\u0627\u0646 \u06af\u06cc\u0627\u06ba\u06d4 +msg.removeError={0} \u0646\u0648\u06ba \u06c1\u0679\u0627\u06cc\u0627 \u0646\u06c1\u06cc\u06ba \u062c\u0627 \u0633\u06a9\u06cc\u0627 +msg.startError={0} \u0646\u0648\u06ba \u0634\u0631\u0648\u0639 \u0646\u06c1\u06cc\u06ba \u06a9\u06cc\u062a\u0627 \u062c\u0627 \u0633\u06a9\u06cc\u0627 +msg.stopError={0} \u0646\u0648\u06ba \u0631\u0648\u06a9\u06cc\u0627 \u0646\u06c1\u06cc\u06ba \u062c\u0627 \u0633\u06a9\u06cc\u0627 +msg.restartError={0} \u0646\u0648\u06ba \u062f\u0648\u0628\u0627\u0631\u06c1 \u0634\u0631\u0648\u0639 \u0646\u06c1\u06cc\u06ba \u06a9\u06cc\u062a\u0627 \u062c\u0627 \u0633\u06a9\u06cc\u0627 +msg.reinitError={0} \u0646\u0648\u06ba \u062f\u0648\u0628\u0627\u0631\u06c1 \u0634\u0631\u0648\u0639 (Re-init) \u0646\u06c1\u06cc\u06ba \u06a9\u06cc\u062a\u0627 \u062c\u0627 \u0633\u06a9\u06cc\u0627 +msg.loadError=\u0645\u0627\u0688\u06cc\u0648\u0644 \u0644\u0648\u0688 \u0646\u06c1\u06cc\u06ba \u06a9\u06cc\u062a\u0627 \u062c\u0627 \u0633\u06a9\u06cc\u0627 +msg.addSubmoduleError=\u0633\u0628 \u0645\u0627\u0688\u06cc\u0648\u0644 \u0634\u0627\u0645\u0644 \u0646\u06c1\u06cc\u06ba \u06a9\u06cc\u062a\u0627 \u062c\u0627 \u0633\u06a9\u06cc\u0627 +about.title=OpenSensorHub \u0628\u0627\u0631\u06d2 +about.desc=\u0633\u0645\u0627\u0631\u0679 \u0633\u06cc\u0646\u0633\u0631 \u0646\u06cc\u0679 \u0648\u0631\u06a9 \u062a\u06d2 \u0627\u0646\u0679\u0631\u0646\u06cc\u0679 \u0622\u0641 \u062a\u06be\u0646\u06af\u0632 (IoT) \u0628\u0646\u0627\u0648\u0646 \u0644\u0626\u06cc \u0627\u06a9 \u0633\u0627\u0641\u0679 \u0648\u06cc\u0626\u0631 \u067e\u0644\u06cc\u0679 \u0641\u0627\u0631\u0645 +about.license=Mozilla Public License v2.0 \u062f\u06d2 \u062a\u062d\u062a \u0644\u0627\u0626\u0633\u0646\u0633 \u06cc\u0627\u0641\u062a\u06c1 +about.version=\u0648\u0631\u0698\u0646: +about.build=\u0628\u0644\u0688 \u0646\u0645\u0628\u0631: +about.deployment=\u062a\u0639\u06cc\u0646\u0627\u062a\u06cc \u062f\u0627 \u0646\u0627\u0645: +tooltip.shutdown=SensorHub \u0634\u0679 \u0688\u0627\u0624\u0646 \u06a9\u0631\u0648 +tooltip.logout=OSH \u0646\u0648\u0688 \u062a\u0648\u06ba \u0644\u0627\u06af \u0622\u0648\u0679 \u06a9\u0631\u0648 +tooltip.save=SensorHub \u06a9\u0646\u0641\u06cc\u06af\u0631\u06cc\u0634\u0646 \u0645\u062d\u0641\u0648\u0638 \u06a9\u0631\u0648 +dialog.start.confirm=\u06a9\u06cc \u062a\u0633\u06cc \u0648\u0627\u0642\u0639\u06cc {0} \u0646\u0648\u06ba \u0634\u0631\u0648\u0639 \u06a9\u0631\u0646\u0627 \u0686\u0627\u06c1\u0646\u062f\u06d2 \u06c1\u0648\u061f +dialog.stop.confirm=\u06a9\u06cc \u062a\u0633\u06cc \u0648\u0627\u0642\u0639\u06cc {0} \u0646\u0648\u06ba \u0631\u0648\u06a9\u0646\u0627 \u0686\u0627\u06c1\u0646\u062f\u06d2 \u06c1\u0648\u061f +dialog.restart.confirm=\u06a9\u06cc \u062a\u0633\u06cc \u0648\u0627\u0642\u0639\u06cc {0} \u0646\u0648\u06ba \u062f\u0648\u0628\u0627\u0631\u06c1 \u0634\u0631\u0648\u0639 \u06a9\u0631\u0646\u0627 \u0686\u0627\u06c1\u0646\u062f\u06d2 \u06c1\u0648\u061f +dialog.reinit.confirm=\u06a9\u06cc \u062a\u0633\u06cc \u0648\u0627\u0642\u0639\u06cc {0} \u0646\u0648\u06ba \u0632\u0628\u0631\u062f\u0633\u062a\u06cc \u062f\u0648\u0628\u0627\u0631\u06c1 \u0634\u0631\u0648\u0639 (force re-init) \u06a9\u0631\u0646\u0627 \u0686\u0627\u06c1\u0646\u062f\u06d2 \u06c1\u0648\u061f +backgroundUpdate=\u067e\u0633 \u0645\u0646\u0638\u0631 \u062f\u06cc \u062a\u0627\u0632\u06c1 \u06a9\u0627\u0631\u06cc +sigmaThreshold=\u0633\u06af\u0645\u0627 \u062d\u062f +nuclideIdentification=\u0646\u06cc\u0648\u06a9\u0644\u0627\u0626\u0688 \u062f\u06cc \u0634\u0646\u0627\u062e\u062a +tamperAlarm=\u0686\u06be\u06cc\u0691 \u0686\u06be\u0627\u0691 \u062f\u0627 \u0627\u0644\u0627\u0631\u0645 +occupancySensor=\u0645\u0648\u062c\u0648\u062f\u06af\u06cc \u0633\u06cc\u0646\u0633\u0631 +stateOfHealth=\u0635\u062d\u062a \u062f\u06cc \u062d\u0627\u0644\u062a +soh=\u0a10\u0a38.\u0a13.\u0a10\u0a1a +1ScanThisQrCodeWithYourAuthenticatorApp=1. \u0a06\u0a2a\u0a23\u0a40 \u0a2a\u0a4d\u0a30\u0a2e\u0a3e\u0a23\u0a3f\u0a15\u0a24\u0a3e \u0a10\u0a2a \u0a28\u0a3e\u0a32 \u0a07\u0a38 QR \u0a15\u0a4b\u0a21 \u0a28\u0a42\u0a70 \u0a38\u0a15\u0a48\u0a28 \u0a15\u0a30\u0a4b: +2EnterThe6digitCodeGeneratedByTheApp=2. \u0a10\u0a2a \u0a26\u0a41\u0a06\u0a30\u0a3e \u0a24\u0a3f\u0a06\u0a30 \u0a15\u0a40\u0a24\u0a3e \u0a17\u0a3f\u0a06 6-\u0a05\u0a70\u0a15\u0a3e\u0a02 \u0a26\u0a3e \u0a15\u0a4b\u0a21 \u0a26\u0a3e\u0a16\u0a32 \u0a15\u0a30\u0a4b: +orEnterThisSecretKeyManually=\u0a1c\u0a3e\u0a02 \u0a07\u0a38 \u0a17\u0a41\u0a2a\u0a24 \u0a15\u0a41\u0a70\u0a1c\u0a40 \u0a28\u0a42\u0a70 \u0a39\u0a71\u0a25\u0a40\u0a02 \u0a26\u0a3e\u0a16\u0a32 \u0a15\u0a30\u0a4b: +loadingBundlesInformation=\u0a2c\u0a70\u0a21\u0a32 \u0a1c\u0a3e\u0a23\u0a15\u0a3e\u0a30\u0a40 \u0a32\u0a4b\u0a21 \u0a15\u0a40\u0a24\u0a40 \u0a1c\u0a3e \u0a30\u0a39\u0a40 \u0a39\u0a48... +loadingPackageInformation=\u0a2a\u0a48\u0a15\u0a47\u0a1c \u0a1c\u0a3e\u0a23\u0a15\u0a3e\u0a30\u0a40 \u0a32\u0a4b\u0a21 \u0a15\u0a40\u0a24\u0a40 \u0a1c\u0a3e \u0a30\u0a39\u0a40 \u0a39\u0a48... +arrayComponentNotSupported=\u0a10\u0a30\u0a47 \u0a15\u0a70\u0a2a\u0a4b\u0a28\u0a48\u0a02\u0a1f \u0a38\u0a2e\u0a30\u0a25\u0a3f\u0a24 \u0a28\u0a39\u0a40\u0a02 \u0a39\u0a48 +twofactorAuthentication=\u0a26\u0a4b-\u0a15\u0a3e\u0a30\u0a15 \u0a2a\u0a4d\u0a30\u0a2e\u0a3e\u0a23\u0a3f\u0a15\u0a24\u0a3e +installMorePackages=\u0a39\u0a4b\u0a30 \u0a2a\u0a48\u0a15\u0a47\u0a1c \u0a38\u0a25\u0a3e\u0a2a\u0a3f\u0a24 \u0a15\u0a30\u0a4b... +errorGeneratingQrCode=QR \u0a15\u0a4b\u0a21 \u0a2c\u0a23\u0a3e\u0a09\u0a23 \u0a35\u0a3f\u0a71\u0a1a \u0a24\u0a30\u0a41\u0a71\u0a1f\u0a40 +installMoreModules=\u0a39\u0a4b\u0a30 \u0a2e\u0a4b\u0a21\u0a40\u0a0a\u0a32 \u0a38\u0a25\u0a3e\u0a2a\u0a24 \u0a15\u0a30\u0a4b... +detailedInstructions=\u0a35\u0a3f\u0a38\u0a24\u0a4d\u0a30\u0a3f\u0a24 \u0a39\u0a26\u0a3e\u0a07\u0a24\u0a3e\u0a02 +availableNetworks=\u0a09\u0a2a\u0a32\u0a2c\u0a27 \u0a28\u0a48\u0a71\u0a1f\u0a35\u0a30\u0a15 +processParameters=\u0a2a\u0a4d\u0a30\u0a15\u0a3f\u0a30\u0a3f\u0a06 \u0a2a\u0a48\u0a30\u0a3e\u0a2e\u0a40\u0a1f\u0a30 +verifyAndEnable=\u0a2a\u0a41\u0a38\u0a3c\u0a1f\u0a40 \u0a15\u0a30\u0a4b \u0a05\u0a24\u0a47 \u0a2f\u0a4b\u0a17 \u0a15\u0a30\u0a4b +dataSourceInfo=\u0a21\u0a3e\u0a1f\u0a3e \u0a38\u0a30\u0a4b\u0a24 \u0a1c\u0a3e\u0a23\u0a15\u0a3e\u0a30\u0a40 +detectedDevices=\u0a16\u0a4b\u0a1c\u0a40\u0a06\u0a02 \u0a17\u0a08\u0a06\u0a02 \u0a21\u0a3f\u0a35\u0a3e\u0a08\u0a38\u0a3e\u0a02 +installSelected=\u0a1a\u0a41\u0a23\u0a3f\u0a06 \u0a07\u0a70\u0a38\u0a1f\u0a3e\u0a32 +databaseContent=\u0a21\u0a3e\u0a1f\u0a3e\u0a2c\u0a47\u0a38 \u0a38\u0a2e\u0a71\u0a17\u0a30\u0a40 +itemsPerPage=\u0a06\u0a08\u0a1f\u0a2e\u0a3e\u0a02 \u0a2a\u0a4d\u0a30\u0a24\u0a40 \u0a2a\u0a70\u0a28\u0a3e: +commandInputs=\u0a15\u0a2e\u0a3e\u0a02\u0a21 \u0a07\u0a28\u0a2a\u0a41\u0a1f\u0a38 +processInputs=\u0a2a\u0a4d\u0a30\u0a15\u0a3f\u0a30\u0a3f\u0a06 \u0a07\u0a28\u0a2a\u0a41\u0a1f\u0a38 +providerClass=\u0a2a\u0a4d\u0a30\u0a26\u0a3e\u0a24\u0a3e \u0a15\u0a32\u0a3e\u0a38 +processName=\u0a2a\u0a4d\u0a30\u0a15\u0a3f\u0a30\u0a3f\u0a06 \u0a26\u0a3e \u0a28\u0a3e\u0a2e: +configuration=\u0a38\u0a70\u0a30\u0a1a\u0a28\u0a3e +applyChanges=\u0a24\u0a2c\u0a26\u0a40\u0a32\u0a40\u0a06\u0a02 \u0a32\u0a3e\u0a17\u0a42 \u0a15\u0a30\u0a4b +sendCommand=\u0a15\u0a2e\u0a3e\u0a02\u0a21 \u0a2d\u0a47\u0a1c\u0a4b +useAddress=\u0a2a\u0a24\u0a3e \u0a35\u0a30\u0a24\u0a4b +selectNone=\u0a15\u0a4b\u0a08 \u0a28\u0a39\u0a40\u0a02 \u0a1a\u0a41\u0a23\u0a4b +timeRange=\u0a38\u0a2e\u0a3e\u0a02 \u0a38\u0a40\u0a2e\u0a3e: +permissions=\u0a07\u0a1c\u0a3e\u0a1c\u0a3c\u0a24\u0a3e\u0a02 +startScan=\u0a38\u0a15\u0a48\u0a28 \u0a38\u0a3c\u0a41\u0a30\u0a42 \u0a15\u0a30\u0a4b +noReadme=\u0a15\u0a4b\u0a08 README \u0a28\u0a39\u0a40\u0a02 +stopScan=\u0a38\u0a15\u0a48\u0a28 \u0a2c\u0a70\u0a26 \u0a15\u0a30\u0a4b +reset2fa=2FA \u0a30\u0a40\u0a38\u0a48\u0a1f \u0a15\u0a30\u0a4b +previous=\u0a2a\u0a3f\u0a1b\u0a32\u0a3e +useName=\u0a28\u0a3e\u0a2e \u0a26\u0a40 \u0a35\u0a30\u0a24\u0a4b\u0a02 \u0a15\u0a30\u0a4b +outputs=\u0a06\u0a0a\u0a1f\u0a2a\u0a41\u0a71\u0a1f +refresh=\u0a24\u0a3e\u0a1c\u0a3c\u0a3e \u0a15\u0a30\u0a4b +modify=\u0a38\u0a4b\u0a27\u0a4b +cancel=\u0a30\u0a71\u0a26 \u0a15\u0a30\u0a4b +logout=\u0a32\u0a3e\u0a17\u0a06\u0a09\u0a1f +remove=\u0a39\u0a1f\u0a3e\u0a13 +verify=\u0a2a\u0a41\u0a38\u0a3c\u0a1f\u0a40 \u0a15\u0a30\u0a4b +first=\u0a2a\u0a39\u0a3f\u0a32\u0a3e\u0a02 +login=\u0a32\u0a3e\u0a17\u0a3f\u0a28 +last=\u0a06\u0a16\u0a30\u0a40 +view=\u0a26\u0a47\u0a16\u0a4b +next=\u0a05\u0a17\u0a32\u0a3e +stop=\u0a30\u0a42\u0a15\u0a4b +add=\u0a38\u0a3c\u0a3e\u0a2e\u0a32 \u0a15\u0a30\u0a4b +ui.empty=< +ok=\u0a20\u0a40\u0a15 \u0a39\u0a48 +1ScanThisQrCodeWithYourAuthenticatorApp1=1. \u0a06\u0a2a\u0a23\u0a40 \u0a2a\u0a4d\u0a30\u0a2e\u0a3e\u0a23\u0a3f\u0a15\u0a24\u0a3e \u0a10\u0a2a \u0a28\u0a3e\u0a32 \u0a07\u0a38 QR \u0a15\u0a4b\u0a21 \u0a28\u0a42\u0a70 \u0a38\u0a15\u0a48\u0a28 \u0a15\u0a30\u0a4b: +2EnterThe6digitCodeGeneratedByTheApp1=2. \u0a10\u0a2a \u0a26\u0a41\u0a06\u0a30\u0a3e \u0a24\u0a3f\u0a06\u0a30 \u0a15\u0a40\u0a24\u0a3e \u0a17\u0a3f\u0a06 6-\u0a05\u0a70\u0a15\u0a3e\u0a02 \u0a26\u0a3e \u0a15\u0a4b\u0a21 \u0a26\u0a3e\u0a16\u0a32 \u0a15\u0a30\u0a4b: +orEnterThisSecretKeyManually1=\u0a1c\u0a3e\u0a02 \u0a07\u0a38 \u0a17\u0a41\u0a2a\u0a24 \u0a15\u0a41\u0a70\u0a1c\u0a40 \u0a28\u0a42\u0a70 \u0a39\u0a71\u0a25\u0a40\u0a02 \u0a26\u0a3e\u0a16\u0a32 \u0a15\u0a30\u0a4b: +loadingPackageInformation1=\u0a2a\u0a48\u0a15\u0a47\u0a1c \u0a1c\u0a3e\u0a23\u0a15\u0a3e\u0a30\u0a40 \u0a32\u0a4b\u0a21 \u0a15\u0a40\u0a24\u0a40 \u0a1c\u0a3e \u0a30\u0a39\u0a40 \u0a39\u0a48... +loadingBundlesInformation1=\u0a2c\u0a70\u0a21\u0a32 \u0a1c\u0a3e\u0a23\u0a15\u0a3e\u0a30\u0a40 \u0a32\u0a4b\u0a21 \u0a15\u0a40\u0a24\u0a40 \u0a1c\u0a3e \u0a30\u0a39\u0a40 \u0a39\u0a48... +arrayComponentNotSupported1=\u0a10\u0a30\u0a47 \u0a15\u0a70\u0a2a\u0a4b\u0a28\u0a48\u0a02\u0a1f \u0a38\u0a2e\u0a30\u0a25\u0a3f\u0a24 \u0a28\u0a39\u0a40\u0a02 \u0a39\u0a48 +twofactorAuthentication1=\u0a26\u0a4b-\u0a15\u0a3e\u0a30\u0a15 \u0a2a\u0a4d\u0a30\u0a2e\u0a3e\u0a23\u0a3f\u0a15\u0a24\u0a3e +errorGeneratingQrCode1=QR \u0a15\u0a4b\u0a21 \u0a2c\u0a23\u0a3e\u0a09\u0a23 \u0a35\u0a3f\u0a71\u0a1a \u0a24\u0a30\u0a41\u0a71\u0a1f\u0a40 +installMorePackages1=\u0a39\u0a4b\u0a30 \u0a2a\u0a48\u0a15\u0a47\u0a1c \u0a38\u0a25\u0a3e\u0a2a\u0a3f\u0a24 \u0a15\u0a30\u0a4b... +installMoreModules1=\u0a39\u0a4b\u0a30 \u0a2e\u0a4b\u0a21\u0a40\u0a0a\u0a32 \u0a38\u0a25\u0a3e\u0a2a\u0a24 \u0a15\u0a30\u0a4b... +detailedInstructions1=\u0a35\u0a3f\u0a38\u0a24\u0a4d\u0a30\u0a3f\u0a24 \u0a39\u0a26\u0a3e\u0a07\u0a24\u0a3e\u0a02 +processParameters1=\u0a2a\u0a4d\u0a30\u0a15\u0a3f\u0a30\u0a3f\u0a06 \u0a2a\u0a48\u0a30\u0a3e\u0a2e\u0a40\u0a1f\u0a30 +availableNetworks1=\u0a09\u0a2a\u0a32\u0a2c\u0a27 \u0a28\u0a48\u0a71\u0a1f\u0a35\u0a30\u0a15 +verifyAndEnable1=\u0a2a\u0a41\u0a38\u0a3c\u0a1f\u0a40 \u0a15\u0a30\u0a4b \u0a05\u0a24\u0a47 \u0a2f\u0a4b\u0a17 \u0a15\u0a30\u0a4b +databaseContent1=\u0a21\u0a3e\u0a1f\u0a3e\u0a2c\u0a47\u0a38 \u0a38\u0a2e\u0a71\u0a17\u0a30\u0a40 +installSelected1=\u0a1a\u0a41\u0a23\u0a3f\u0a06 \u0a07\u0a70\u0a38\u0a1f\u0a3e\u0a32 +dataSourceInfo1=\u0a21\u0a3e\u0a1f\u0a3e \u0a38\u0a30\u0a4b\u0a24 \u0a1c\u0a3e\u0a23\u0a15\u0a3e\u0a30\u0a40 +detectedDevices1=\u0a16\u0a4b\u0a1c\u0a40\u0a06\u0a02 \u0a17\u0a08\u0a06\u0a02 \u0a21\u0a3f\u0a35\u0a3e\u0a08\u0a38\u0a3e\u0a02 +itemsPerPage1=\u0a06\u0a08\u0a1f\u0a2e\u0a3e\u0a02 \u0a2a\u0a4d\u0a30\u0a24\u0a40 \u0a2a\u0a70\u0a28\u0a3e: +processInputs1=\u0a2a\u0a4d\u0a30\u0a15\u0a3f\u0a30\u0a3f\u0a06 \u0a07\u0a28\u0a2a\u0a41\u0a1f\u0a38 +commandInputs1=\u0a15\u0a2e\u0a3e\u0a02\u0a21 \u0a07\u0a28\u0a2a\u0a41\u0a1f\u0a38 +providerClass1=\u0a2a\u0a4d\u0a30\u0a26\u0a3e\u0a24\u0a3e \u0a15\u0a32\u0a3e\u0a38 +configuration1=\u0a38\u0a70\u0a30\u0a1a\u0a28\u0a3e +processName1=\u0a2a\u0a4d\u0a30\u0a15\u0a3f\u0a30\u0a3f\u0a06 \u0a26\u0a3e \u0a28\u0a3e\u0a2e: +applyChanges1=\u0a24\u0a2c\u0a26\u0a40\u0a32\u0a40\u0a06\u0a02 \u0a32\u0a3e\u0a17\u0a42 \u0a15\u0a30\u0a4b +sendCommand1=\u0a15\u0a2e\u0a3e\u0a02\u0a21 \u0a2d\u0a47\u0a1c\u0a4b +timeRange1=\u0a38\u0a2e\u0a3e\u0a02 \u0a38\u0a40\u0a2e\u0a3e: +useAddress1=\u0a2a\u0a24\u0a3e \u0a35\u0a30\u0a24\u0a4b +permissions1=\u0a07\u0a1c\u0a3e\u0a1c\u0a3c\u0a24\u0a3e\u0a02 +selectNone1=\u0a15\u0a4b\u0a08 \u0a28\u0a39\u0a40\u0a02 \u0a1a\u0a41\u0a23\u0a4b +startScan1=\u0a38\u0a15\u0a48\u0a28 \u0a38\u0a3c\u0a41\u0a30\u0a42 \u0a15\u0a30\u0a4b +noReadme1=\u0a15\u0a4b\u0a08 README \u0a28\u0a39\u0a40\u0a02 +reset2fa1=2FA \u0a30\u0a40\u0a38\u0a48\u0a1f \u0a15\u0a30\u0a4b +stopScan1=\u0a38\u0a15\u0a48\u0a28 \u0a2c\u0a70\u0a26 \u0a15\u0a30\u0a4b +useName1=\u0a28\u0a3e\u0a2e \u0a26\u0a40 \u0a35\u0a30\u0a24\u0a4b\u0a02 \u0a15\u0a30\u0a4b +previous1=\u0a2a\u0a3f\u0a1b\u0a32\u0a3e +refresh1=\u0a24\u0a3e\u0a1c\u0a3c\u0a3e \u0a15\u0a30\u0a4b +outputs1=\u0a06\u0a0a\u0a1f\u0a2a\u0a41\u0a71\u0a1f +cancel1=\u0a30\u0a71\u0a26 \u0a15\u0a30\u0a4b +logout1=\u0a32\u0a3e\u0a17\u0a06\u0a09\u0a1f +modify1=\u0a38\u0a4b\u0a27\u0a4b +remove1=\u0a39\u0a1f\u0a3e\u0a13 +verify1=\u0a2a\u0a41\u0a38\u0a3c\u0a1f\u0a40 \u0a15\u0a30\u0a4b +first1=\u0a2a\u0a39\u0a3f\u0a32\u0a3e\u0a02 +login1=\u0a32\u0a3e\u0a17\u0a3f\u0a28 +view1=\u0a26\u0a47\u0a16\u0a4b +stop1=\u0a30\u0a42\u0a15\u0a4b +next1=\u0a05\u0a17\u0a32\u0a3e +last1=\u0a06\u0a16\u0a30\u0a40 +add1=\u0a38\u0a3c\u0a3e\u0a2e\u0a32 \u0a15\u0a30\u0a4b +last2=>> +first2=<< +ok1=\u0a20\u0a40\u0a15 \u0a39\u0a48 +next2=> +previous2=< + +pleaseEnterAUserIDFirst1=\u0a15\u0a3f\u0a30\u0a2a\u0a3e \u0a15\u0a30\u0a15\u0a47 \u0a2a\u0a39\u0a3f\u0a32\u0a3e\u0a02 \u0a07\u0a71\u0a15 \u0a09\u0a2a\u0a2d\u0a4b\u0a17\u0a24\u0a3e ID \u0a26\u0a3e\u0a16\u0a32 \u0a15\u0a30\u0a4b +reset2FA1=2FA \u0a30\u0a40\u0a38\u0a48\u0a1f \u0a15\u0a30\u0a4b +enable2FA1=2FA \u0a28\u0a42\u0a70 \u0a38\u0a2e\u0a30\u0a71\u0a25 \u0a2c\u0a23\u0a3e\u0a13 +twoFAEnabledSuccessfully1=2FA \u0a38\u0a2b\u0a32\u0a24\u0a3e\u0a2a\u0a42\u0a30\u0a35\u0a15 \u0a2f\u0a4b\u0a17 \u0a15\u0a40\u0a24\u0a3e \u0a17\u0a3f\u0a06 +invalidCode1=\u0a05\u0a35\u0a48\u0a27 \u0a15\u0a4b\u0a21 +allowedAndDeniedPermissionsForUsersWithThisRole1=\u0a07\u0a38 \u0a2d\u0a42\u0a2e\u0a3f\u0a15\u0a3e \u0a35\u0a3e\u0a32\u0a47 \u0a35\u0a30\u0a24\u0a4b\u0a02\u0a15\u0a3e\u0a30\u0a3e\u0a02 \u0a32\u0a08 \u0a2e\u0a28\u0a1c\u0a3c\u0a42\u0a30 \u0a05\u0a24\u0a47 \u0a05\u0a38\u0a35\u0a40\u0a15\u0a3e\u0a30 \u0a15\u0a40\u0a24\u0a40\u0a06\u0a02 \u0a07\u0a1c\u0a3e\u0a1c\u0a3c\u0a24\u0a3e\u0a02 +manualEntry1=\u0a2e\u0a48\u0a28\u0a41\u0a05\u0a32 \u0a10\u0a02\u0a1f\u0a30\u0a40 +toggleAutoRefreshDataOncePerSecond1=\u0a2a\u0a4d\u0a30\u0a24\u0a40 \u0a38\u0a15\u0a3f\u0a70\u0a1f \u0a07\u0a71\u0a15 \u0a35\u0a3e\u0a30 \u0a06\u0a1f\u0a4b-\u0a30\u0a3f\u0a2b\u0a4d\u0a30\u0a48\u0a38\u0a3c \u0a21\u0a47\u0a1f\u0a3e \u0a28\u0a42\u0a70 \u0a1f\u0a4c\u0a17\u0a32 \u0a15\u0a30\u0a4b +lookupSystem1=\u0a16\u0a4b\u0a1c \u0a38\u0a3f\u0a38\u0a1f\u0a2e +lookupModule1=\u0a16\u0a4b\u0a1c \u0a2e\u0a4b\u0a21\u0a40\u0a0a\u0a32 +lookupAddress1=\u0a2a\u0a24\u0a3e \u0a32\u0a71\u0a2d\u0a4b +showPassword1=\u0a2a\u0a3e\u0a38\u0a35\u0a30\u0a21 \u0a26\u0a3f\u0a16\u0a3e\u0a13 +showHistogram1=\u0a39\u0a3f\u0a38\u0a1f\u0a4b\u0a17\u0a4d\u0a30\u0a3e\u0a2e \u0a26\u0a3f\u0a16\u0a3e\u0a13 +hideHistogram1=\u0a39\u0a3f\u0a38\u0a1f\u0a4b\u0a17\u0a4d\u0a30\u0a3e\u0a2e \u0a32\u0a41\u0a15\u0a3e\u0a13 +reloadDataFromDatabase1=\u0a21\u0a3e\u0a1f\u0a3e\u0a2c\u0a47\u0a38 \u0a24\u0a4b\u0a02 \u0a21\u0a3e\u0a1f\u0a3e \u0a30\u0a40\u0a32\u0a4b\u0a21 \u0a15\u0a30\u0a4b +fois1=FOIs +username1=\u0a2f\u0a42\u0a1c\u0a3c\u0a30\u0a28\u0a47\u0a2e +password1=\u0a2a\u0a3e\u0a38\u0a35\u0a30\u0a21 +loginFailed1=\u0a32\u0a3e\u0a17\u0a3f\u0a28 \u0a05\u0a38\u0a2b\u0a32 \u0a30\u0a3f\u0a39\u0a3e +invalidUsernameOrPassword1=\u0a05\u0a35\u0a48\u0a27 \u0a09\u0a2a\u0a2d\u0a4b\u0a17\u0a24\u0a3e \u0a28\u0a3e\u0a2e \u0a1c\u0a3e\u0a02 \u0a2a\u0a3e\u0a38\u0a35\u0a30\u0a21 +verificationCode1=\u0a2a\u0a5c\u0a24\u0a3e\u0a32 \u0a15\u0a4b\u0a21 +verificationFailed1=\u0a2a\u0a41\u0a38\u0a3c\u0a1f\u0a40\u0a15\u0a30\u0a28 \u0a05\u0a38\u0a2b\u0a32 \u0a30\u0a3f\u0a39\u0a3e +datasource1=\u0a21\u0a3e\u0a1f\u0a3e \u0a38\u0a30\u0a4b\u0a24 +process1=\u0a2a\u0a4d\u0a30\u0a15\u0a3f\u0a30\u0a3f\u0a06 +logoutFromOshNode1=OSH \u0a28\u0a4b\u0a21 \u0a24\u0a4b\u0a02 \u0a32\u0a4c\u0a17\u0a06\u0a09\u0a1f \u0a15\u0a30\u0a4b +setParameter1=\u0a2a\u0a48\u0a30\u0a3e\u0a2e\u0a40\u0a1f\u0a30 \u0a38\u0a48\u0a71\u0a1f \u0a15\u0a30\u0a4b +setupTwoFactorAuthentication1=\u0a26\u0a4b-\u0a2b\u0a48\u0a15\u0a1f\u0a30 \u0a2a\u0a4d\u0a30\u0a2e\u0a3e\u0a23\u0a40\u0a15\u0a30\u0a28 \u0a38\u0a48\u0a71\u0a1f\u0a05\u0a71\u0a2a \u0a15\u0a30\u0a4b + +action.new_item=\u0a28\u0a35\u0a3e\u0a02 {0} +Lane\ System=\u0a32\u0a47\u0a28 \u0a38\u0a3f\u0a38\u0a1f\u0a2e +Module\ Class=\u0a2e\u0a4b\u0a21\u0a40\u0a0a\u0a32 \u0a15\u0a32\u0a3e\u0a38 +Module\ Name=\u0a2e\u0a4b\u0a21\u0a40\u0a0a\u0a32 \u0a26\u0a3e \u0a28\u0a3e\u0a2e +Module\ ID=\u0a2e\u0a4b\u0a21\u0a40\u0a0a\u0a32 \u0a06\u0a08.\u0a21\u0a40 +Description=\u0a35\u0a30\u0a23\u0a28 +SensorML\ URL=\u0a38\u0a48\u0a02\u0a38\u0a30\u0a10\u0a2e\u0a10\u0a32 URL +UniqueID=\u0a35\u0a3f\u0a32\u0a71\u0a16\u0a23 ID +Last\ Updated=\u0a06\u0a16\u0a30\u0a40 \u0a35\u0a3e\u0a30 \u0a05\u0a71\u0a2a\u0a21\u0a47\u0a1f \u0a15\u0a40\u0a24\u0a3e +Auto\ Start=\u0a06\u0a1f\u0a4b \u0a38\u0a1f\u0a3e\u0a30\u0a1f +Delete\ Data\ on\ Lane\ Removal=\u0a32\u0a47\u0a28 \u0a39\u0a1f\u0a3e\u0a09\u0a23 ''\u0a24\u0a47 \u0a21\u0a3e\u0a1f\u0a3e \u0a2e\u0a3f\u0a1f\u0a3e\u0a13 +Latitude=\u0a35\u0a3f\u0a25\u0a15\u0a3e\u0a30 +Longitude=\u0a32\u0a70\u0a2c\u0a15\u0a3e\u0a30 +Altitude=\u0a09\u0a1a\u0a3e\u0a08 +Initial\ RPM\ Config=\u0a38\u0a3c\u0a41\u0a30\u0a42\u0a06\u0a24\u0a40 RPM \u0a38\u0a70\u0a30\u0a1a\u0a28\u0a3e +Initial\ Camera\ Config=\u0a38\u0a3c\u0a41\u0a30\u0a42\u0a06\u0a24\u0a40 \u0a15\u0a48\u0a2e\u0a30\u0a3e \u0a38\u0a70\u0a30\u0a1a\u0a28\u0a3e +Lane\ Options\ Config=\u0a32\u0a47\u0a28 \u0a35\u0a3f\u0a15\u0a32\u0a2a \u0a38\u0a70\u0a30\u0a1a\u0a28\u0a3e +tab.general=\u0a1c\u0a28\u0a30\u0a32 +tab.readme=README +Fixed\ Location=\u0a38\u0a25\u0a3f\u0a30 \u0a1f\u0a3f\u0a15\u0a3e\u0a23\u0a3e +Fixed\ Orientation=\u0a38\u0a25\u0a3f\u0a30 \u0a38\u0a25\u0a3f\u0a24\u0a40 +# Auto-extracted DisplayInfo labels and descriptions +URL\ of\ SensorML\ file\ providing\ the\ base\ description\ of\ the\ sensor=\u0a38\u0a48\u0a02\u0a38\u0a30 \u0a26\u0a3e \u0a05\u0a27\u0a3e\u0a30 \u0a35\u0a30\u0a23\u0a28 \u0a2a\u0a4d\u0a30\u0a26\u0a3e\u0a28 \u0a15\u0a30\u0a28 \u0a35\u0a3e\u0a32\u0a40 SensorML \u0a2b\u0a3e\u0a08\u0a32 \u0a26\u0a3e URL +Time\ at\ which\ the\ SensorML\ description\ was\ last\ updated=\u0a09\u0a39 \u0a38\u0a2e\u0a3e\u0a02 \u0a1c\u0a3f\u0a38 ''\u0a24\u0a47 SensorML \u0a35\u0a30\u0a23\u0a28 \u0a28\u0a42\u0a70 \u0a06\u0a16\u0a30\u0a40 \u0a35\u0a3e\u0a30 \u0a05\u0a71\u0a2a\u0a21\u0a47\u0a1f \u0a15\u0a40\u0a24\u0a3e \u0a17\u0a3f\u0a06 \u0a38\u0a40 +Geodetic\ latitude,\ in\ degrees=\u0a1c\u0a3f\u0a13\u0a21\u0a47\u0a1f\u0a3f\u0a15 \u0a35\u0a3f\u0a25\u0a15\u0a3e\u0a30, \u0a21\u0a3f\u0a17\u0a30\u0a40\u0a06\u0a02 \u0a35\u0a3f\u0a71\u0a1a +Longitude,\ in\ degrees=\u0a32\u0a70\u0a2c\u0a15\u0a3e\u0a30, \u0a21\u0a3f\u0a17\u0a30\u0a40\u0a06\u0a02 \u0a35\u0a3f\u0a71\u0a1a +Height\ above\ ellipsoid,\ in\ meters=\u0a05\u0a70\u0a21\u0a3e\u0a15\u0a3e\u0a30 \u0a24\u0a4b\u0a02 \u0a09\u0a71\u0a2a\u0a30 \u0a26\u0a40 \u0a09\u0a1a\u0a3e\u0a08, \u0a2e\u0a40\u0a1f\u0a30\u0a3e\u0a02 \u0a35\u0a3f\u0a71\u0a1a +X\ coordinate,\ in\ meters=X \u0a15\u0a4b\u0a06\u0a30\u0a21\u0a40\u0a28\u0a47\u0a1f, \u0a2e\u0a40\u0a1f\u0a30\u0a3e\u0a02 \u0a35\u0a3f\u0a71\u0a1a +Y\ coordinate,\ in\ meters=Y \u0a15\u0a4b\u0a06\u0a30\u0a21\u0a40\u0a28\u0a47\u0a1f, \u0a2e\u0a40\u0a1f\u0a30\u0a3e\u0a02 \u0a35\u0a3f\u0a71\u0a1a +Z\ coordinate,\ in\ meters=Z \u0a15\u0a4b\u0a06\u0a30\u0a21\u0a40\u0a28\u0a47\u0a1f, \u0a2e\u0a40\u0a1f\u0a30\u0a3e\u0a02 \u0a35\u0a3f\u0a71\u0a1a +Pitch\ angle\ about\ Y\ axis,\ in\ degrees=\u0a21\u0a3f\u0a17\u0a30\u0a40 \u0a35\u0a3f\u0a71\u0a1a, Y \u0a27\u0a41\u0a30\u0a47 \u0a2c\u0a3e\u0a30\u0a47 \u0a2a\u0a3f\u0a1a \u0a15\u0a4b\u0a23 +Roll\ angle\ about\ X\ axis,\ in\ degrees=X \u0a27\u0a41\u0a30\u0a47 \u0a26\u0a47 \u0a2c\u0a3e\u0a30\u0a47 \u0a15\u0a4b\u0a23, \u0a21\u0a3f\u0a17\u0a30\u0a40 \u0a35\u0a3f\u0a71\u0a1a \u0a30\u0a4b\u0a32 \u0a15\u0a30\u0a4b +Location\ in\ EPSG\:4979\ coordinate\ reference\ frame=EPSG \u0a35\u0a3f\u0a71\u0a1a \u0a38\u0a25\u0a3e\u0a28: 4979 \u0a15\u0a4b\u0a06\u0a30\u0a21\u0a40\u0a28\u0a47\u0a1f \u0a39\u0a35\u0a3e\u0a32\u0a3e \u0a2b\u0a30\u0a47\u0a2e +Database\ Number=\u0a21\u0a3e\u0a1f\u0a3e\u0a2c\u0a47\u0a38 \u0a28\u0a70\u0a2c\u0a30 +Numerical\ identifier\ of\ the\ database.\ Each\ database\ that\ should\ be\ exposed\ via\ the\ federated\ database\ API\ must\ have\ a\ unique\ number\ on\ the\ sensor\ hub.\ If\ visibility\ through\ the\ federated\ database\ is\ not\ desired,\ it\ can\ be\ omitted.=\u0a21\u0a47\u0a1f\u0a3e\u0a2c\u0a47\u0a38 \u0a26\u0a3e \u0a38\u0a70\u0a16\u0a3f\u0a06\u0a24\u0a2e\u0a15 \u0a2a\u0a1b\u0a3e\u0a23\u0a15\u0a30\u0a24\u0a3e\u0964 \u0a39\u0a30\u0a47\u0a15 \u0a21\u0a47\u0a1f\u0a3e\u0a2c\u0a47\u0a38 \u0a1c\u0a4b \u0a38\u0a70\u0a18\u0a40 \u0a21\u0a47\u0a1f\u0a3e\u0a2c\u0a47\u0a38 API \u0a26\u0a41\u0a06\u0a30\u0a3e \u0a2a\u0a4d\u0a30\u0a17\u0a1f \u0a15\u0a40\u0a24\u0a3e \u0a1c\u0a3e\u0a23\u0a3e \u0a1a\u0a3e\u0a39\u0a40\u0a26\u0a3e \u0a39\u0a48, \u0a26\u0a3e \u0a38\u0a48\u0a02\u0a38\u0a30 \u0a39\u0a71\u0a2c ''\u0a24\u0a47 \u0a07\u0a71\u0a15 \u0a35\u0a3f\u0a32\u0a71\u0a16\u0a23 \u0a28\u0a70\u0a2c\u0a30 \u0a39\u0a4b\u0a23\u0a3e \u0a1a\u0a3e\u0a39\u0a40\u0a26\u0a3e \u0a39\u0a48\u0964 \u0a1c\u0a47\u0a15\u0a30 \u0a38\u0a70\u0a18\u0a40 \u0a21\u0a3e\u0a1f\u0a3e\u0a2c\u0a47\u0a38 \u0a26\u0a41\u0a06\u0a30\u0a3e \u0a26\u0a3f\u0a71\u0a16 \u0a26\u0a40 \u0a32\u0a4b\u0a5c \u0a28\u0a39\u0a40\u0a02 \u0a39\u0a48, \u0a24\u0a3e\u0a02 \u0a07\u0a38\u0a28\u0a42\u0a70 \u0a1b\u0a71\u0a21\u0a3f\u0a06 \u0a1c\u0a3e \u0a38\u0a15\u0a26\u0a3e \u0a39\u0a48\u0964 +Enables\ fine-grained\ permission-based\ access\ control\ for\ this\ module=\u0a07\u0a38 \u0a2e\u0a4b\u0a21\u0a40\u0a0a\u0a32 \u0a32\u0a08 \u0a35\u0a27\u0a40\u0a06 \u0a05\u0a28\u0a41\u0a2e\u0a24\u0a40-\u0a05\u0a27\u0a3e\u0a30\u0a3f\u0a24 \u0a2a\u0a39\u0a41\u0a70\u0a1a \u0a28\u0a3f\u0a2f\u0a70\u0a24\u0a30\u0a23 \u0a28\u0a42\u0a70 \u0a38\u0a2e\u0a30\u0a71\u0a25 \u0a2c\u0a23\u0a3e\u0a09\u0a02\u0a26\u0a3e \u0a39\u0a48 +Require\ Authentication=\u0a2a\u0a4d\u0a30\u0a2e\u0a3e\u0a23\u0a40\u0a15\u0a30\u0a28 \u0a26\u0a40 \u0a32\u0a4b\u0a5c \u0a39\u0a48 +Set\ to\ require\ remote\ users\ to\ be\ authentified\ before\ they\ can\ use\ this\ service=\u0a30\u0a3f\u0a2e\u0a4b\u0a1f \u0a09\u0a2a\u0a2d\u0a4b\u0a17\u0a24\u0a3e\u0a35\u0a3e\u0a02 \u0a28\u0a42\u0a70 \u0a07\u0a38 \u0a38\u0a47\u0a35\u0a3e \u0a26\u0a40 \u0a35\u0a30\u0a24\u0a4b\u0a02 \u0a15\u0a30\u0a28 \u0a24\u0a4b\u0a02 \u0a2a\u0a39\u0a3f\u0a32\u0a3e\u0a02 \u0a2a\u0a4d\u0a30\u0a2e\u0a3e\u0a23\u0a3f\u0a24 \u0a15\u0a40\u0a24\u0a47 \u0a1c\u0a3e\u0a23 \u0a26\u0a40 \u0a32\u0a4b\u0a5c ''\u0a24\u0a47 \u0a38\u0a48\u0a71\u0a1f \u0a15\u0a30\u0a4b +Endpoint=\u0a05\u0a70\u0a24 \u0a2c\u0a3f\u0a70\u0a26\u0a42 +Unique\ local\ ID\ of\ the\ module=\u0a2e\u0a4b\u0a21\u0a40\u0a0a\u0a32 \u0a26\u0a40 \u0a35\u0a3f\u0a32\u0a71\u0a16\u0a23 \u0a38\u0a25\u0a3e\u0a28\u0a15 ID +User\ description\ for\ the\ module=\u0a2e\u0a4b\u0a21\u0a40\u0a0a\u0a32 \u0a32\u0a08 \u0a09\u0a2a\u0a2d\u0a4b\u0a17\u0a24\u0a3e \u0a35\u0a47\u0a30\u0a35\u0a3e +Set\ to\ automatically\ start\ the\ module\ when\ it\ is\ loaded=\u0a2e\u0a4b\u0a21\u0a40\u0a0a\u0a32 \u0a28\u0a42\u0a70 \u0a32\u0a4b\u0a21 \u0a39\u0a4b\u0a23 ''\u0a24\u0a47 \u0a06\u0a2a\u0a23\u0a47 \u0a06\u0a2a \u0a1a\u0a3e\u0a32\u0a42 \u0a15\u0a30\u0a28 \u0a32\u0a08 \u0a38\u0a48\u0a71\u0a1f \u0a15\u0a30\u0a4b +Module\ implementation\ class=\u0a2e\u0a4b\u0a21\u0a40\u0a0a\u0a32 \u0a32\u0a3e\u0a17\u0a42 \u0a15\u0a30\u0a28 \u0a26\u0a40 \u0a15\u0a32\u0a3e\u0a38 +User\ chosen\ name\ for\ the\ module=\u0a2e\u0a4b\u0a21\u0a40\u0a0a\u0a32 \u0a32\u0a08 \u0a2f\u0a42\u0a1c\u0a3c\u0a30 \u0a28\u0a47 \u0a1a\u0a41\u0a23\u0a3f\u0a06 \u0a28\u0a3e\u0a2e +Name\ of\ topic/queue\ to\ use=\u0a35\u0a30\u0a24\u0a23 \u0a32\u0a08 \u0a35\u0a3f\u0a38\u0a3c\u0a47/\u0a15\u0a24\u0a3e\u0a30 \u0a26\u0a3e \u0a28\u0a3e\u0a2e +Enable/disable\ writing\ to\ queue=\u0a15\u0a24\u0a3e\u0a30 \u0a35\u0a3f\u0a71\u0a1a \u0a32\u0a3f\u0a16\u0a23 \u0a28\u0a42\u0a70 \u0a38\u0a2e\u0a30\u0a71\u0a25/\u0a05\u0a2f\u0a4b\u0a17 \u0a15\u0a30\u0a4b +Enable/disable\ reading\ from\ queue=\u0a15\u0a24\u0a3e\u0a30 \u0a24\u0a4b\u0a02 \u0a2a\u0a5c\u0a4d\u0a39\u0a28 \u0a28\u0a42\u0a70 \u0a38\u0a2e\u0a30\u0a71\u0a25/\u0a05\u0a2f\u0a4b\u0a17 \u0a15\u0a30\u0a4b +Protocol\ Options=\u0a2a\u0a4d\u0a30\u0a4b\u0a1f\u0a4b\u0a15\u0a4b\u0a32 \u0a35\u0a3f\u0a15\u0a32\u0a2a +Common\ Configuration=\u0a06\u0a2e \u0a38\u0a70\u0a30\u0a1a\u0a28\u0a3e +Common\ configuration\ for\ sensors\ in\ the\ array=\u0a10\u0a30\u0a47 \u0a35\u0a3f\u0a71\u0a1a \u0a38\u0a48\u0a02\u0a38\u0a30\u0a3e\u0a02 \u0a32\u0a08 \u0a06\u0a2e \u0a38\u0a70\u0a30\u0a1a\u0a28\u0a3e +Sensors\ Configuration=\u0a38\u0a48\u0a02\u0a38\u0a30 \u0a15\u0a4c\u0a02\u0a2b\u0a3f\u0a17\u0a30\u0a47\u0a38\u0a3c\u0a28 +Subsystem\ Config=\u0a38\u0a2c-\u0a38\u0a3f\u0a38\u0a1f\u0a2e \u0a38\u0a70\u0a30\u0a1a\u0a28\u0a3e +Configuration\ of\ the\ subsystem=\u0a38\u0a2c-\u0a38\u0a3f\u0a38\u0a1f\u0a2e \u0a26\u0a40 \u0a38\u0a70\u0a30\u0a1a\u0a28\u0a3e +Relative\ Location=\u0a30\u0a3f\u0a38\u0a3c\u0a24\u0a47\u0a26\u0a3e\u0a30 \u0a1f\u0a3f\u0a15\u0a3e\u0a23\u0a3e +Location\ of\ this\ subsystem\ relative\ to\ the\ main\ system\ or\ platform\ reference\ frame=\u0a2e\u0a41\u0a71\u0a16 \u0a38\u0a3f\u0a38\u0a1f\u0a2e \u0a1c\u0a3e\u0a02 \u0a2a\u0a32\u0a47\u0a1f\u0a2b\u0a3e\u0a30\u0a2e \u0a30\u0a48\u0a2b\u0a30\u0a48\u0a02\u0a38 \u0a2b\u0a4d\u0a30\u0a47\u0a2e \u0a26\u0a47 \u0a05\u0a28\u0a41\u0a38\u0a3e\u0a30\u0a40 \u0a07\u0a38 \u0a09\u0a2a-\u0a38\u0a3f\u0a38\u0a1f\u0a2e \u0a26\u0a3e \u0a38\u0a25\u0a3e\u0a28 +Relative\ Orientation=\u0a30\u0a3f\u0a38\u0a3c\u0a24\u0a47\u0a26\u0a3e\u0a30 \u0a38\u0a25\u0a3f\u0a24\u0a40 +Orientation\ of\ this\ subsystem\ relative\ to\ the\ main\ system\ or\ platform\ reference\ frame=\u0a2e\u0a41\u0a71\u0a16 \u0a38\u0a3f\u0a38\u0a1f\u0a2e \u0a1c\u0a3e\u0a02 \u0a2a\u0a32\u0a47\u0a1f\u0a2b\u0a3e\u0a30\u0a2e \u0a30\u0a48\u0a2b\u0a30\u0a48\u0a02\u0a38 \u0a2b\u0a4d\u0a30\u0a47\u0a2e \u0a26\u0a47 \u0a05\u0a28\u0a41\u0a38\u0a3e\u0a30\u0a40 \u0a07\u0a38 \u0a38\u0a2c-\u0a38\u0a3f\u0a38\u0a1f\u0a2e \u0a26\u0a3e \u0a13\u0a30\u0a40\u0a10\u0a02\u0a1f\u0a47\u0a38\u0a3c\u0a28 +Fixed\ system\ orientation\ in\ the\ local\ NED\ reference\ frame=\u0a38\u0a25\u0a3e\u0a28\u0a15 NED \u0a38\u0a70\u0a26\u0a30\u0a2d \u0a2b\u0a30\u0a47\u0a2e \u0a35\u0a3f\u0a71\u0a1a \u0a38\u0a25\u0a3f\u0a30 \u0a38\u0a3f\u0a38\u0a1f\u0a2e \u0a38\u0a25\u0a3f\u0a24\u0a40 +Subsystems=\u0a09\u0a2a-\u0a38\u0a3f\u0a38\u0a1f\u0a2e +Configuration\ of\ components\ of\ this\ sensor\ system=\u0a07\u0a38 \u0a38\u0a48\u0a02\u0a38\u0a30 \u0a38\u0a3f\u0a38\u0a1f\u0a2e \u0a26\u0a47 \u0a2d\u0a3e\u0a17\u0a3e\u0a02 \u0a26\u0a40 \u0a38\u0a70\u0a30\u0a1a\u0a28\u0a3e +Database\ Config=\u0a21\u0a3e\u0a1f\u0a3e\u0a2c\u0a47\u0a38 \u0a38\u0a70\u0a30\u0a1a\u0a28\u0a3e +Configuration\ of\ underlying\ database=\u0a05\u0a70\u0a21\u0a30\u0a32\u0a3e\u0a08\u0a70\u0a17 \u0a21\u0a47\u0a1f\u0a3e\u0a2c\u0a47\u0a38 \u0a26\u0a40 \u0a38\u0a70\u0a30\u0a1a\u0a28\u0a3e +System\ UIDs=\u0a38\u0a3f\u0a38\u0a1f\u0a2e UIDs +Unique\ IDs\ of\ system\ drivers\ handled\ by\ this\ database=\u0a07\u0a38 \u0a21\u0a47\u0a1f\u0a3e\u0a2c\u0a47\u0a38 \u0a26\u0a41\u0a06\u0a30\u0a3e \u0a2a\u0a30\u0a2c\u0a70\u0a27\u0a3f\u0a24 \u0a38\u0a3f\u0a38\u0a1f\u0a2e \u0a21\u0a30\u0a3e\u0a08\u0a35\u0a30\u0a3e\u0a02 \u0a26\u0a40\u0a06\u0a02 \u0a35\u0a3f\u0a32\u0a71\u0a16\u0a23 IDs +Automatic\ Purge\ Policy=\u0a06\u0a1f\u0a4b\u0a2e\u0a48\u0a1f\u0a3f\u0a15 \u0a2a\u0a30\u0a1c \u0a28\u0a40\u0a24\u0a40 +Policy\ for\ automatically\ purging\ historical\ data=\u0a07\u0a24\u0a3f\u0a39\u0a3e\u0a38\u0a15 \u0a21\u0a47\u0a1f\u0a3e \u0a28\u0a42\u0a70 \u0a38\u0a35\u0a48\u0a1a\u0a32\u0a3f\u0a24 \u0a24\u0a4c\u0a30 ''\u0a24\u0a47 \u0a38\u0a3e\u0a2b\u0a3c \u0a15\u0a30\u0a28 \u0a32\u0a08 \u0a28\u0a40\u0a24\u0a40 +Uncheck\ to\ disable\ auto-purge\ temporarily=\u0a05\u0a38\u0a25\u0a3e\u0a08 \u0a24\u0a4c\u0a30 ''\u0a24\u0a47 \u0a06\u0a1f\u0a4b-\u0a2a\u0a41\u0a30\u0a1c \u0a28\u0a42\u0a70 \u0a05\u0a38\u0a2e\u0a30\u0a71\u0a25 \u0a2c\u0a23\u0a3e\u0a09\u0a23 \u0a32\u0a08 \u0a05\u0a23\u0a1a\u0a48\u0a15 \u0a15\u0a30\u0a4b +Purge\ Execution\ Period=\u0a2a\u0a30\u0a1c \u0a10\u0a17\u0a1c\u0a3c\u0a40\u0a15\u0a3f\u0a0a\u0a38\u0a3c\u0a28 \u0a2a\u0a40\u0a30\u0a40\u0a05\u0a21 +Unique\ IDs\ of\ system\ drivers\ to\ purge=\u0a38\u0a3e\u0a2b\u0a3c \u0a15\u0a30\u0a28 \u0a32\u0a08 \u0a38\u0a3f\u0a38\u0a1f\u0a2e \u0a21\u0a30\u0a3e\u0a08\u0a35\u0a30\u0a3e\u0a02 \u0a26\u0a40\u0a06\u0a02 \u0a35\u0a3f\u0a32\u0a71\u0a16\u0a23 IDs +Max\ Record\ Age=\u0a05\u0a27\u0a3f\u0a15\u0a24\u0a2e \u0a30\u0a3f\u0a15\u0a3e\u0a30\u0a21 \u0a09\u0a2e\u0a30 +SensorML\ File=\u0a38\u0a48\u0a02\u0a38\u0a30\u0a10\u0a2e\u0a10\u0a32 \u0a2b\u0a3e\u0a08\u0a32 +Path\ of\ SensorML\ description\ of\ the\ process=\u0a2a\u0a4d\u0a30\u0a15\u0a3f\u0a30\u0a3f\u0a06 \u0a26\u0a47 \u0a38\u0a48\u0a02\u0a38\u0a30\u0a10\u0a2e\u0a10\u0a32 \u0a35\u0a30\u0a23\u0a28 \u0a26\u0a3e \u0a2e\u0a3e\u0a30\u0a17 +List\ of\ users\ allowed\ access\ to\ this\ system=\u0a09\u0a2a\u0a2d\u0a4b\u0a17\u0a24\u0a3e\u0a35\u0a3e\u0a02 \u0a26\u0a40 \u0a38\u0a42\u0a1a\u0a40 \u0a1c\u0a4b \u0a07\u0a38 \u0a38\u0a3f\u0a38\u0a1f\u0a2e \u0a24\u0a71\u0a15 \u0a2a\u0a39\u0a41\u0a70\u0a1a \u0a26\u0a40 \u0a07\u0a1c\u0a3e\u0a1c\u0a3c\u0a24 \u0a26\u0a3f\u0a71\u0a24\u0a40 \u0a17\u0a08 \u0a39\u0a48 +List\ of\ security\ roles=\u0a38\u0a41\u0a30\u0a71\u0a16\u0a3f\u0a06 \u0a2d\u0a42\u0a2e\u0a3f\u0a15\u0a3e\u0a35\u0a3e\u0a02 \u0a26\u0a40 \u0a38\u0a42\u0a1a\u0a40 +User\ ID=\u0a2f\u0a42\u0a1c\u0a30 \u0a06\u0a08\u0a21\u0a40 +Role\ ID=\u0a2d\u0a42\u0a2e\u0a3f\u0a15\u0a3e \u0a06\u0a08.\u0a21\u0a40 +Source\ Database\ ID=\u0a38\u0a30\u0a4b\u0a24 \u0a21\u0a3e\u0a1f\u0a3e\u0a2c\u0a47\u0a38 ID +ID\ of\ database\ module\ to\ read\ data\ from\ (Federated\ database\ will\ be\ used\ if\ not\ set=\u0a21\u0a47\u0a1f\u0a3e\u0a2c\u0a47\u0a38 \u0a2e\u0a4b\u0a21\u0a40\u0a0a\u0a32 \u0a26\u0a40 ID \u0a24\u0a4b\u0a02 \u0a21\u0a3e\u0a1f\u0a3e \u0a2a\u0a5c\u0a4d\u0a39\u0a28 \u0a32\u0a08 (\u0a2b\u0a48\u0a21\u0a30\u0a47\u0a1f\u0a3f\u0a21 \u0a21\u0a47\u0a1f\u0a3e\u0a2c\u0a47\u0a38 \u0a26\u0a40 \u0a35\u0a30\u0a24\u0a4b\u0a02 \u0a15\u0a40\u0a24\u0a40 \u0a1c\u0a3e\u0a35\u0a47\u0a17\u0a40 \u0a1c\u0a47\u0a15\u0a30 \u0a38\u0a48\u0a71\u0a1f \u0a28\u0a39\u0a40\u0a02 \u0a15\u0a40\u0a24\u0a3e \u0a17\u0a3f\u0a06 \u0a39\u0a48 +HTTP\ Port=HTTP \u0a2a\u0a4b\u0a30\u0a1f +HTTPS\ Port=HTTPS \u0a2a\u0a4b\u0a30\u0a1f +Root\ URL\ where\ static\ web\ content\ will\ be\ served.=\u0a30\u0a42\u0a1f URL \u0a1c\u0a3f\u0a71\u0a25\u0a47 \u0a38\u0a25\u0a3f\u0a30 \u0a35\u0a48\u0a71\u0a2c \u0a38\u0a2e\u0a71\u0a17\u0a30\u0a40 \u0a26\u0a3f\u0a71\u0a24\u0a40 \u0a1c\u0a3e\u0a35\u0a47\u0a17\u0a40\u0964 +Directory\ where\ static\ web\ content\ is\ located.=\u0a21\u0a3e\u0a07\u0a30\u0a48\u0a15\u0a1f\u0a30\u0a40 \u0a1c\u0a3f\u0a71\u0a25\u0a47 \u0a38\u0a25\u0a3f\u0a30 \u0a35\u0a48\u0a71\u0a2c \u0a38\u0a2e\u0a71\u0a17\u0a30\u0a40 \u0a38\u0a25\u0a3f\u0a24 \u0a39\u0a48\u0964 +Root\ URL\ where\ the\ server\ will\ accept\ requests.\ This\ will\ be\ the\ prefix\ to\ all\ servlet\ URLs.=\u0a30\u0a42\u0a1f URL \u0a1c\u0a3f\u0a71\u0a25\u0a47 \u0a38\u0a30\u0a35\u0a30 \u0a2c\u0a47\u0a28\u0a24\u0a40\u0a06\u0a02 \u0a28\u0a42\u0a70 \u0a38\u0a35\u0a40\u0a15\u0a3e\u0a30 \u0a15\u0a30\u0a47\u0a17\u0a3e\u0964 \u0a07\u0a39 \u0a38\u0a3e\u0a30\u0a47 \u0a38\u0a30\u0a35\u0a32\u0a47\u0a1f URL \u0a26\u0a3e \u0a05\u0a17\u0a47\u0a24\u0a30 \u0a39\u0a4b\u0a35\u0a47\u0a17\u0a3e\u0964 +Proxy\ Base\ URL=\u0a2a\u0a4d\u0a30\u0a4c\u0a15\u0a38\u0a40 \u0a2c\u0a47\u0a38 URL +Public\ URL\ as\ viewed\ from\ the\ outside\ when\ requests\ transit\ through\ a\ proxy\ server.=\u0a07\u0a71\u0a15 \u0a2a\u0a4d\u0a30\u0a4c\u0a15\u0a38\u0a40 \u0a38\u0a30\u0a35\u0a30 \u0a26\u0a41\u0a06\u0a30\u0a3e \u0a1f\u0a4d\u0a30\u0a3e\u0a02\u0a1c\u0a3f\u0a1f \u0a26\u0a40 \u0a2c\u0a47\u0a28\u0a24\u0a40 \u0a15\u0a30\u0a28 ''\u0a24\u0a47 \u0a2c\u0a3e\u0a39\u0a30\u0a4b\u0a02 \u0a26\u0a47\u0a16\u0a3f\u0a06 \u0a17\u0a3f\u0a06 \u0a1c\u0a28\u0a24\u0a15 URL\u0964 +Authentication\ Method=\u0a2a\u0a4d\u0a30\u0a2e\u0a3e\u0a23\u0a3f\u0a15\u0a24\u0a3e \u0a35\u0a3f\u0a27\u0a40 +Method\ used\ to\ authenticate\ users\ on\ this\ server=\u0a07\u0a38 \u0a38\u0a30\u0a35\u0a30 ''\u0a24\u0a47 \u0a09\u0a2a\u0a2d\u0a4b\u0a17\u0a24\u0a3e\u0a35\u0a3e\u0a02 \u0a28\u0a42\u0a70 \u0a2a\u0a4d\u0a30\u0a2e\u0a3e\u0a23\u0a3f\u0a24 \u0a15\u0a30\u0a28 \u0a32\u0a08 \u0a35\u0a30\u0a24\u0a3f\u0a06 \u0a1c\u0a3e\u0a23 \u0a35\u0a3e\u0a32\u0a3e \u0a22\u0a70\u0a17 +Path\ to\ a\ key\ store\ containing\ the\ certificate\ and\ keypair\ that\ this\ server\ will\ present\ to\ clients\ when\ accessed\ over\ HTTPS.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ \"javax.net.ssl.keyStore\"\ system\ property.\=Path to a key store containing the certificate and keypair that this server will present to clients when accessed over HTTPS. If this value is blank, will default to using the value of the \"javax.net.ssl.keyStore\" system property. +Alias\ for\ the\ public/private\ keypair\ within\ the\ key\ store\ that\ will\ be\ used\ to\ identify\ this\ server.=\u0a15\u0a41\u0a70\u0a1c\u0a40 \u0a38\u0a1f\u0a4b\u0a30 \u0a26\u0a47 \u0a05\u0a70\u0a26\u0a30 \u0a1c\u0a28\u0a24\u0a15/\u0a2a\u0a4d\u0a30\u0a3e\u0a08\u0a35\u0a47\u0a1f \u0a15\u0a40-\u0a2a\u0a47\u0a05\u0a30 \u0a32\u0a08 \u0a09\u0a2a\u0a28\u0a3e\u0a2e \u0a1c\u0a4b \u0a07\u0a38 \u0a38\u0a30\u0a35\u0a30 \u0a26\u0a40 \u0a2a\u0a1b\u0a3e\u0a23 \u0a15\u0a30\u0a28 \u0a32\u0a08 \u0a35\u0a30\u0a24\u0a3f\u0a06 \u0a1c\u0a3e\u0a35\u0a47\u0a17\u0a3e\u0964 +Path\ to\ the\ TLS\ trust\ store\ that\ is\ used\ when\ client\ authentication\ is\ required.\ Ignored\ if\ client\ certificate\ authentication\ is\ not\ used.\ Certificates\ in\ this\ file\ designate\ the\ signing\ authorities\ for\ client\ certificates\ that\ will\ be\ trusted.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ \"javax.net.ssl.trustStore\"\ system\ property.\=Path to the TLS trust store that is used when client authentication is required. Ignored if client certificate authentication is not used. Certificates in this file designate the signing authorities for client certificates that will be trusted. If this value is blank, will default to using the value of the \"javax.net.ssl.trustStore\" system property. +Password\ for\ the\ trust\ store.\ Ignored\ if\ client\ certificate\ authentication\ is\ not\ used.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ \"javax.net.ssl.trustStorePassword\"\ system\ property.\=Password for the trust store. Ignored if client certificate authentication is not used. If this value is blank, will default to using the value of the \"javax.net.ssl.trustStorePassword\" system property. +Enable\ CORS=CORS \u0a28\u0a42\u0a70 \u0a38\u0a2e\u0a30\u0a71\u0a25 \u0a2c\u0a23\u0a3e\u0a13 +Enable\ generation\ of\ CORS\ headers\ to\ allow\ cross-domain\ requests\ from\ browsers=\u0a2c\u0a4d\u0a30\u0a3e\u0a0a\u0a1c\u0a3c\u0a30\u0a3e\u0a02 \u0a24\u0a4b\u0a02 \u0a15\u0a4d\u0a30\u0a3e\u0a38-\u0a21\u0a4b\u0a2e\u0a47\u0a28 \u0a2c\u0a47\u0a28\u0a24\u0a40\u0a06\u0a02 \u0a28\u0a42\u0a70 \u0a2e\u0a28\u0a1c\u0a3c\u0a42\u0a30\u0a40 \u0a26\u0a47\u0a23 \u0a32\u0a08 CORS \u0a38\u0a3f\u0a30\u0a32\u0a47\u0a16\u0a3e\u0a02 \u0a28\u0a42\u0a70 \u0a2c\u0a23\u0a3e\u0a09\u0a23 \u0a28\u0a42\u0a70 \u0a38\u0a2e\u0a30\u0a71\u0a25 \u0a2c\u0a23\u0a3e\u0a13 +Capabilities\ Info=\u0a38\u0a2e\u0a30\u0a71\u0a25\u0a3e \u0a1c\u0a3e\u0a23\u0a15\u0a3e\u0a30\u0a40 +Information\ included\ in\ the\ service\ capabilities\ document=\u0a38\u0a47\u0a35\u0a3e \u0a38\u0a2e\u0a30\u0a71\u0a25\u0a3e \u0a26\u0a38\u0a24\u0a3e\u0a35\u0a47\u0a1c\u0a3c \u0a35\u0a3f\u0a71\u0a1a \u0a38\u0a3c\u0a3e\u0a2e\u0a32 \u0a1c\u0a3e\u0a23\u0a15\u0a3e\u0a30\u0a40 +Enable\ HTTP\ GET=HTTP GET \u0a28\u0a42\u0a70 \u0a38\u0a2e\u0a30\u0a71\u0a25 \u0a2c\u0a23\u0a3e\u0a13 +Enables/disables\ HTTP\ GET\ bindings\ on\ operations\ that\ support\ it=\u0a07\u0a38 \u0a26\u0a3e \u0a38\u0a2e\u0a30\u0a25\u0a28 \u0a15\u0a30\u0a28 \u0a35\u0a3e\u0a32\u0a47 \u0a13\u0a2a\u0a30\u0a47\u0a38\u0a3c\u0a28\u0a3e\u0a02 ''\u0a24\u0a47 HTTP GET \u0a2c\u0a3e\u0a08\u0a21\u0a3f\u0a70\u0a17 \u0a28\u0a42\u0a70 \u0a38\u0a2e\u0a30\u0a71\u0a25/\u0a05\u0a2f\u0a4b\u0a17 \u0a2c\u0a23\u0a3e\u0a09\u0a02\u0a26\u0a3e \u0a39\u0a48 +Enable\ HTTP\ POST=HTTP POST \u0a28\u0a42\u0a70 \u0a38\u0a2e\u0a30\u0a71\u0a25 \u0a2c\u0a23\u0a3e\u0a13 +Enables/disables\ HTTP\ POST\ bindings\ on\ operations\ that\ support\ it=\u0a07\u0a38 \u0a26\u0a3e \u0a38\u0a2e\u0a30\u0a25\u0a28 \u0a15\u0a30\u0a28 \u0a35\u0a3e\u0a32\u0a47 \u0a13\u0a2a\u0a30\u0a47\u0a38\u0a3c\u0a28\u0a3e\u0a02 ''\u0a24\u0a47 HTTP POST \u0a2c\u0a3e\u0a08\u0a21\u0a3f\u0a70\u0a17 \u0a28\u0a42\u0a70 \u0a38\u0a2e\u0a30\u0a71\u0a25/\u0a05\u0a2f\u0a4b\u0a17 \u0a2c\u0a23\u0a3e\u0a09\u0a02\u0a26\u0a3e \u0a39\u0a48 +Enable\ HTTP\ SOAP=HTTP SOAP \u0a28\u0a42\u0a70 \u0a38\u0a2e\u0a30\u0a71\u0a25 \u0a2c\u0a23\u0a3e\u0a13 +Enables/disables\ HTTP\ SOAP\ bindings\ on\ operations\ that\ support\ it=\u0a07\u0a38 \u0a26\u0a3e \u0a38\u0a2e\u0a30\u0a25\u0a28 \u0a15\u0a30\u0a28 \u0a35\u0a3e\u0a32\u0a47 \u0a13\u0a2a\u0a30\u0a47\u0a38\u0a3c\u0a28\u0a3e\u0a02 ''\u0a24\u0a47 HTTP SOAP \u0a2c\u0a3e\u0a08\u0a21\u0a3f\u0a70\u0a17 \u0a28\u0a42\u0a70 \u0a38\u0a2e\u0a30\u0a71\u0a25/\u0a05\u0a2f\u0a4b\u0a17 \u0a2c\u0a23\u0a3e\u0a09\u0a02\u0a26\u0a3e \u0a39\u0a48 +Connection\ Timeout=\u0a15\u0a28\u0a48\u0a15\u0a38\u0a3c\u0a28 \u0a38\u0a2e\u0a3e\u0a02 \u0a38\u0a2e\u0a3e\u0a2a\u0a24 +Reconnect\ Period=\u0a2e\u0a41\u0a5c-\u0a15\u0a28\u0a48\u0a15\u0a1f \u0a2a\u0a40\u0a30\u0a40\u0a05\u0a21 +Max\ Reconnect\ Attempts=\u0a05\u0a27\u0a3f\u0a15\u0a24\u0a2e \u0a2e\u0a41\u0a5c \u0a1c\u0a41\u0a5c\u0a28 \u0a26\u0a40\u0a06\u0a02 \u0a15\u0a4b\u0a38\u0a3c\u0a3f\u0a38\u0a3c\u0a3e\u0a02 +Maximum\ number\ of\ times\ the\ client\ will\ attempt\ to\ reconnect\ when\ the\ connection\ is\ not\ available\ or\ lost.\ A\ negative\ value\ means\ that\ there\ is\ no\ limit\ to\ the\ number\ of\ reconnection\ attempts.\ Zero\ means\ not\ to\ attempt\ reconnection.=\u0a15\u0a28\u0a48\u0a15\u0a38\u0a3c\u0a28 \u0a09\u0a2a\u0a32\u0a2c\u0a27 \u0a28\u0a3e \u0a39\u0a4b\u0a23 \u0a1c\u0a3e\u0a02 \u0a17\u0a41\u0a70\u0a2e \u0a39\u0a4b\u0a23 ''\u0a24\u0a47 \u0a15\u0a32\u0a3e\u0a07\u0a70\u0a1f \u0a26\u0a41\u0a06\u0a30\u0a3e \u0a26\u0a41\u0a2c\u0a3e\u0a30\u0a3e \u0a15\u0a28\u0a48\u0a15\u0a1f \u0a15\u0a30\u0a28 \u0a26\u0a40 \u0a15\u0a4b\u0a38\u0a3c\u0a3f\u0a38\u0a3c \u0a15\u0a30\u0a28 \u0a26\u0a40 \u0a35\u0a71\u0a27 \u0a24\u0a4b\u0a02 \u0a35\u0a71\u0a27 \u0a17\u0a3f\u0a23\u0a24\u0a40\u0964 \u0a07\u0a71\u0a15 \u0a28\u0a15\u0a3e\u0a30\u0a3e\u0a24\u0a2e\u0a15 \u0a2e\u0a41\u0a71\u0a32 \u0a26\u0a3e \u0a2e\u0a24\u0a32\u0a2c \u0a39\u0a48 \u0a15\u0a3f \u0a2e\u0a41\u0a5c \u0a15\u0a41\u0a28\u0a48\u0a15\u0a38\u0a3c\u0a28 \u0a15\u0a4b\u0a38\u0a3c\u0a3f\u0a38\u0a3c\u0a3e\u0a02 \u0a26\u0a40 \u0a17\u0a3f\u0a23\u0a24\u0a40 \u0a26\u0a40 \u0a15\u0a4b\u0a08 \u0a38\u0a40\u0a2e\u0a3e \u0a28\u0a39\u0a40\u0a02 \u0a39\u0a48\u0964 \u0a1c\u0a3c\u0a40\u0a30\u0a4b \u0a26\u0a3e \u0a05\u0a30\u0a25 \u0a39\u0a48 \u0a2e\u0a41\u0a5c \u0a1c\u0a41\u0a5c\u0a28 \u0a26\u0a40 \u0a15\u0a4b\u0a38\u0a3c\u0a3f\u0a38\u0a3c \u0a28\u0a3e \u0a15\u0a30\u0a28\u0a3e\u0964 +IP\ or\ DNS\ name\ of\ remote\ host=\u0a30\u0a3f\u0a2e\u0a4b\u0a1f \u0a39\u0a4b\u0a38\u0a1f \u0a26\u0a3e IP \u0a1c\u0a3e\u0a02 DNS \u0a28\u0a3e\u0a2e +IP\ of\ local\ network\ interface\ to\ bind\ to\ or\ 'AUTO'\ to\ select\ it\ automatically=\u0a28\u0a3e\u0a32 \u0a2c\u0a70\u0a28\u0a4d\u0a39\u0a23 \u0a32\u0a08 \u0a38\u0a25\u0a3e\u0a28\u0a15 \u0a28\u0a48\u0a71\u0a1f\u0a35\u0a30\u0a15 \u0a07\u0a70\u0a1f\u0a30\u0a2b\u0a47\u0a38 \u0a26\u0a3e IP \u0a1c\u0a3e\u0a02 \u0a07\u0a38\u0a28\u0a42\u0a70 \u0a06\u0a2a\u0a23\u0a47 \u0a06\u0a2a \u0a1a\u0a41\u0a23\u0a28 \u0a32\u0a08 ''''AUTO'''' +Connection\ Options=\u0a15\u0a28\u0a48\u0a15\u0a38\u0a3c\u0a28 \u0a35\u0a3f\u0a15\u0a32\u0a2a +Serial\ port\ device\ name.\ Usually\ something\ like\ /dev/ttyXXX\ on\ Linux=\u0a38\u0a40\u0a30\u0a40\u0a05\u0a32 \u0a2a\u0a4b\u0a30\u0a1f \u0a21\u0a3f\u0a35\u0a3e\u0a08\u0a38 \u0a26\u0a3e \u0a28\u0a3e\u0a2e\u0964 \u0a32\u0a40\u0a28\u0a15\u0a38 ''\u0a24\u0a47 \u0a06\u0a2e \u0a24\u0a4c\u0a30 ''\u0a24\u0a47 /dev/ttyXXX \u0a35\u0a30\u0a17\u0a3e \u0a15\u0a4b\u0a08 \u0a1a\u0a40\u0a1c\u0a3c +Minimum\ number\ of\ bytes\ to\ receive\ before\ they\ are\ sent\ to\ the\ caller=\u0a15\u0a3e\u0a32\u0a30 \u0a28\u0a42\u0a70 \u0a2d\u0a47\u0a1c\u0a47 \u0a1c\u0a3e\u0a23 \u0a24\u0a4b\u0a02 \u0a2a\u0a39\u0a3f\u0a32\u0a3e\u0a02 \u0a2a\u0a4d\u0a30\u0a3e\u0a2a\u0a24 \u0a15\u0a30\u0a28 \u0a32\u0a08 \u0a2c\u0a3e\u0a08\u0a1f\u0a3e\u0a02 \u0a26\u0a40 \u0a18\u0a71\u0a1f\u0a4b-\u0a18\u0a71\u0a1f \u0a38\u0a70\u0a16\u0a3f\u0a06 +Local\ port\ number\ to\ use\ on\ the\ local\ host=\u0a38\u0a25\u0a3e\u0a28\u0a15 \u0a39\u0a4b\u0a38\u0a1f ''\u0a24\u0a47 \u0a35\u0a30\u0a24\u0a23 \u0a32\u0a08 \u0a38\u0a25\u0a3e\u0a28\u0a15 \u0a2a\u0a4b\u0a30\u0a1f \u0a28\u0a70\u0a2c\u0a30 +Physical\ address\ of\ Bluetooth\ device\ to\ connect\ to=\u0a15\u0a28\u0a48\u0a15\u0a1f \u0a15\u0a30\u0a28 \u0a32\u0a08 \u0a2c\u0a32\u0a42\u0a1f\u0a41\u0a71\u0a25 \u0a21\u0a3f\u0a35\u0a3e\u0a08\u0a38 \u0a26\u0a3e \u0a2d\u0a4c\u0a24\u0a3f\u0a15 \u0a2a\u0a24\u0a3e +Port\ number\ to\ connect\ to\ on\ remote\ host=\u0a30\u0a3f\u0a2e\u0a4b\u0a1f \u0a39\u0a4b\u0a38\u0a1f ''\u0a24\u0a47 \u0a15\u0a28\u0a48\u0a15\u0a1f \u0a15\u0a30\u0a28 \u0a32\u0a08 \u0a2a\u0a4b\u0a30\u0a1f \u0a28\u0a70\u0a2c\u0a30 +User\ Name=\u0a09\u0a2a\u0a2d\u0a4b\u0a17\u0a24\u0a3e \u0a28\u0a3e\u0a2e +Remote\ user\ name=\u0a30\u0a3f\u0a2e\u0a4b\u0a1f \u0a09\u0a2a\u0a2d\u0a4b\u0a17\u0a24\u0a3e \u0a28\u0a3e\u0a2e +Password=\u0a2a\u0a3e\u0a38\u0a35\u0a30\u0a21 +Remote\ password=\u0a30\u0a3f\u0a2e\u0a4b\u0a1f \u0a2a\u0a3e\u0a38\u0a35\u0a30\u0a21 +Secure\ communications\ with\ SSL/TLS=SSL/TLS \u0a28\u0a3e\u0a32 \u0a38\u0a41\u0a30\u0a71\u0a16\u0a3f\u0a05\u0a24 \u0a38\u0a70\u0a1a\u0a3e\u0a30 +Enable\ to\ check\ if\ remote\ host\ is\ reachable\ before\ attempting\ further\ operations=\u0a05\u0a17\u0a32\u0a47 \u0a13\u0a2a\u0a30\u0a47\u0a38\u0a3c\u0a28\u0a3e\u0a02 \u0a26\u0a40 \u0a15\u0a4b\u0a38\u0a3c\u0a3f\u0a38\u0a3c \u0a15\u0a30\u0a28 \u0a24\u0a4b\u0a02 \u0a2a\u0a39\u0a3f\u0a32\u0a3e\u0a02 \u0a07\u0a39 \u0a1c\u0a3e\u0a02\u0a1a \u0a15\u0a30\u0a28 \u0a32\u0a08 \u0a38\u0a2e\u0a30\u0a71\u0a25 \u0a15\u0a30\u0a4b \u0a15\u0a3f \u0a15\u0a40 \u0a30\u0a3f\u0a2e\u0a4b\u0a1f \u0a39\u0a4b\u0a38\u0a1f \u0a2a\u0a39\u0a41\u0a70\u0a1a\u0a2f\u0a4b\u0a17 \u0a39\u0a48 +Path\ or\ resource\ or\ service\ relative\ to\ server\ root=\u0a38\u0a30\u0a35\u0a30 \u0a30\u0a42\u0a1f \u0a26\u0a47 \u0a05\u0a28\u0a41\u0a38\u0a3e\u0a30\u0a40 \u0a2e\u0a3e\u0a30\u0a17 \u0a1c\u0a3e\u0a02 \u0a38\u0a30\u0a4b\u0a24 \u0a1c\u0a3e\u0a02 \u0a38\u0a47\u0a35\u0a3e +Unique\ ID\ of\ system\ group=\u0a38\u0a3f\u0a38\u0a1f\u0a2e \u0a17\u0a30\u0a41\u0a71\u0a2a \u0a26\u0a40 \u0a35\u0a3f\u0a32\u0a71\u0a16\u0a23 ID +Name\ of\ system\ group=\u0a38\u0a3f\u0a38\u0a1f\u0a2e \u0a17\u0a30\u0a41\u0a71\u0a2a \u0a26\u0a3e \u0a28\u0a3e\u0a02 +Description\ of\ system\ group=\u0a38\u0a3f\u0a38\u0a1f\u0a2e \u0a17\u0a30\u0a41\u0a71\u0a2a \u0a26\u0a3e \u0a35\u0a47\u0a30\u0a35\u0a3e +List\ of\ bundle\ repository\ URLs=\u0a2c\u0a70\u0a21\u0a32 \u0a30\u0a3f\u0a2a\u0a4b\u0a1c\u0a3c\u0a1f\u0a30\u0a40 URL \u0a26\u0a40 \u0a38\u0a42\u0a1a\u0a40 +A\ human\ readable\ friendly\ identifier\ for\ the\ deployment=\u0a24\u0a48\u0a28\u0a3e\u0a24\u0a40 \u0a32\u0a08 \u0a07\u0a71\u0a15 \u0a2e\u0a28\u0a41\u0a71\u0a16\u0a40 \u0a2a\u0a5c\u0a4d\u0a39\u0a28\u0a2f\u0a4b\u0a17 \u0a26\u0a4b\u0a38\u0a24\u0a3e\u0a28\u0a3e \u0a2a\u0a1b\u0a3e\u0a23\u0a15\u0a30\u0a24\u0a3e +Enable\ Landing\ Page=\u0a32\u0a48\u0a02\u0a21\u0a3f\u0a70\u0a17 \u0a2a\u0a70\u0a28\u0a3e \u0a1a\u0a3e\u0a32\u0a42 \u0a15\u0a30\u0a4b +Enable\ Landing\ Servlet\ to\ redirect\ users\ to\ landing\ page=\u0a09\u0a2a\u0a2d\u0a4b\u0a17\u0a24\u0a3e\u0a35\u0a3e\u0a02 \u0a28\u0a42\u0a70 \u0a32\u0a48\u0a02\u0a21\u0a3f\u0a70\u0a17 \u0a2a\u0a70\u0a28\u0a47 ''\u0a24\u0a47 \u0a30\u0a40\u0a21\u0a3e\u0a07\u0a30\u0a48\u0a15\u0a1f \u0a15\u0a30\u0a28 \u0a32\u0a08 \u0a32\u0a48\u0a02\u0a21\u0a3f\u0a70\u0a17 \u0a38\u0a30\u0a35\u0a32\u0a47\u0a1f \u0a28\u0a42\u0a70 \u0a38\u0a2e\u0a30\u0a71\u0a25 \u0a2c\u0a23\u0a3e\u0a13 +Config\ Class=\u0a38\u0a70\u0a30\u0a1a\u0a28\u0a3e \u0a15\u0a32\u0a3e\u0a38 +Type\ of\ module\ config\ class\ for\ which\ a\ custom\ panel\ must\ be\ generated=\u0a2e\u0a4b\u0a21\u0a40\u0a0a\u0a32 \u0a38\u0a70\u0a30\u0a1a\u0a28\u0a3e \u0a15\u0a32\u0a3e\u0a38 \u0a26\u0a40 \u0a15\u0a3f\u0a38\u0a2e \u0a1c\u0a3f\u0a38 \u0a32\u0a08 \u0a07\u0a71\u0a15 \u0a15\u0a38\u0a1f\u0a2e \u0a2a\u0a48\u0a28\u0a32 \u0a24\u0a3f\u0a06\u0a30 \u0a15\u0a40\u0a24\u0a3e \u0a1c\u0a3e\u0a23\u0a3e \u0a1a\u0a3e\u0a39\u0a40\u0a26\u0a3e \u0a39\u0a48 +UI\ Class=UI \u0a15\u0a32\u0a3e\u0a38 +Fully\ qualified\ name\ of\ class\ implementing\ IModuleAdminPanel=IModuleAdminPanel \u0a28\u0a42\u0a70 \u0a32\u0a3e\u0a17\u0a42 \u0a15\u0a30\u0a28 \u0a35\u0a3e\u0a32\u0a40 \u0a15\u0a32\u0a3e\u0a38 \u0a26\u0a3e \u0a2a\u0a42\u0a30\u0a40 \u0a24\u0a30\u0a4d\u0a39\u0a3e\u0a02 \u0a2f\u0a4b\u0a17 \u0a28\u0a3e\u0a2e + +# Auto-extracted property IDs +sensorML=\u0a38\u0a48\u0a02\u0a38\u0a30 \u0a10\u0a2e.\u0a10\u0a32 +lastUpdated=\u0a06\u0a16\u0a30\u0a40 \u0a35\u0a3e\u0a30 \u0a05\u0a71\u0a2a\u0a21\u0a47\u0a1f \u0a15\u0a40\u0a24\u0a3e +lat=Lat +lon=\u0a32\u0a4b\u0a28 +alt=Alt +x=\u0a10\u0a15\u0a38 +y=Y +z=\u0a1c\u0a3c\u0a48\u0a71\u0a21 +heading=\u0a38\u0a3f\u0a30\u0a32\u0a47\u0a16 +pitch=\u0a2a\u0a3f\u0a71\u0a1a +roll=\u0a30\u0a4b\u0a32 +location=\u0a1f\u0a3f\u0a15\u0a3e\u0a23\u0a3e +orientation=\u0a38\u0a25\u0a3f\u0a24\u0a40 +databaseNum=\u0a21\u0a3e\u0a1f\u0a3e\u0a2c\u0a47\u0a38 \u0a28\u0a70\u0a2c\u0a30 +enableAccessControl=\u0a2a\u0a39\u0a41\u0a70\u0a1a \u0a28\u0a3f\u0a2f\u0a70\u0a24\u0a30\u0a23 \u0a28\u0a42\u0a70 \u0a38\u0a2e\u0a30\u0a71\u0a25 \u0a2c\u0a23\u0a3e\u0a13 +requireAuth=\u0a2a\u0a4d\u0a30\u0a2e\u0a3e\u0a23\u0a40\u0a15\u0a30\u0a28 \u0a26\u0a40 \u0a32\u0a4b\u0a5c \u0a39\u0a48 +mimeType=\u0a2e\u0a3e\u0a08\u0a2e \u0a26\u0a40 \u0a15\u0a3f\u0a38\u0a2e +className=\u0a15\u0a32\u0a3e\u0a38 \u0a26\u0a3e \u0a28\u0a3e\u0a2e +endPoint=\u0a05\u0a70\u0a24 \u0a2c\u0a3f\u0a70\u0a26\u0a42 +id=\u0a06\u0a08.\u0a21\u0a40 +description=\u0a35\u0a30\u0a23\u0a28 +autoStart=\u0a06\u0a1f\u0a4b \u0a38\u0a1f\u0a3e\u0a30\u0a1f +topicName=\u0a35\u0a3f\u0a38\u0a3c\u0a47 \u0a26\u0a3e \u0a28\u0a3e\u0a2e +enablePublish=\u0a2a\u0a4d\u0a30\u0a15\u0a3e\u0a38\u0a3c\u0a3f\u0a24 \u0a15\u0a30\u0a4b \u0a28\u0a42\u0a70 \u0a38\u0a2e\u0a30\u0a71\u0a25 \u0a2c\u0a23\u0a3e\u0a13 +enableSubscribe=\u0a17\u0a3e\u0a39\u0a15\u0a40 \u0a28\u0a42\u0a70 \u0a2f\u0a4b\u0a17 \u0a2c\u0a23\u0a3e\u0a13 +protocol=\u0a2a\u0a4d\u0a30\u0a4b\u0a1f\u0a4b\u0a15\u0a4b\u0a32 +moduleConfigPath=\u0a2e\u0a4b\u0a21\u0a40\u0a0a\u0a32 \u0a38\u0a70\u0a30\u0a1a\u0a28\u0a3e \u0a2e\u0a3e\u0a30\u0a17 +moduleDataPath=\u0a2e\u0a4b\u0a21\u0a40\u0a0a\u0a32 \u0a21\u0a3e\u0a1f\u0a3e \u0a2e\u0a3e\u0a30\u0a17 +commonConfig=\u0a06\u0a2e \u0a38\u0a70\u0a30\u0a1a\u0a28\u0a3e +sensors=Sensors +config=\u0a38\u0a70\u0a30\u0a1a\u0a28\u0a3e +uniqueID=\u0a35\u0a3f\u0a32\u0a71\u0a16\u0a23 \u0a06\u0a08.\u0a21\u0a40 +subsystems=\u0a09\u0a2a-\u0a38\u0a3f\u0a38\u0a1f\u0a2e +dbConfig=Db \u0a38\u0a70\u0a30\u0a1a\u0a28\u0a3e +systemUIDs=\u0a38\u0a3f\u0a38\u0a1f\u0a2e Uids +autoPurgeConfig=\u0a06\u0a1f\u0a4b \u0a2a\u0a30\u0a1c \u0a15\u0a4c\u0a02\u0a2b\u0a3f\u0a17 +minCommitPeriod=\u0a18\u0a71\u0a1f\u0a4b-\u0a18\u0a71\u0a1f \u0a35\u0a1a\u0a28\u0a2c\u0a71\u0a27\u0a24\u0a3e \u0a26\u0a40 \u0a2e\u0a3f\u0a06\u0a26 +enabled=\u0a38\u0a2e\u0a30\u0a25\u0a3f\u0a24 +purgePeriod=\u0a2a\u0a30\u0a1c \u0a2a\u0a40\u0a30\u0a40\u0a05\u0a21 +maxRecordAge=\u0a05\u0a27\u0a3f\u0a15\u0a24\u0a2e \u0a30\u0a3f\u0a15\u0a3e\u0a30\u0a21 \u0a09\u0a2e\u0a30 +users=\u0a09\u0a2a\u0a2d\u0a4b\u0a17\u0a24\u0a3e +roles=\u0a2d\u0a42\u0a2e\u0a3f\u0a15\u0a3e\u0a35\u0a3e\u0a02 +allow=\u0a07\u0a1c\u0a3e\u0a1c\u0a3c\u0a24 \u0a26\u0a3f\u0a13 +deny=\u0a07\u0a28\u0a15\u0a3e\u0a30 +userID=\u0a2f\u0a42\u0a1c\u0a30 \u0a06\u0a08\u0a21\u0a40 +name=\u0a28\u0a3e\u0a2e +password=\u0a2a\u0a3e\u0a38\u0a35\u0a30\u0a21 +certificate=\u0a38\u0a30\u0a1f\u0a40\u0a2b\u0a3f\u0a15\u0a47\u0a1f +twoFactorSecret=\u0a26\u0a4b \u0a15\u0a3e\u0a30\u0a15 \u0a30\u0a3e\u0a1c\u0a3c +isTwoFactorEnabled=\u0a26\u0a4b \u0a2b\u0a48\u0a15\u0a1f\u0a30 \u0a2f\u0a4b\u0a17 \u0a39\u0a48 +roleID=\u0a2d\u0a42\u0a2e\u0a3f\u0a15\u0a3e \u0a06\u0a08.\u0a21\u0a40 +sourceDatabaseId=\u0a38\u0a30\u0a4b\u0a24 \u0a21\u0a3e\u0a1f\u0a3e\u0a2c\u0a47\u0a38 \u0a06\u0a08.\u0a21\u0a40 +includeFilter=\u0a2b\u0a3f\u0a32\u0a1f\u0a30 \u0a38\u0a3c\u0a3e\u0a2e\u0a32 \u0a15\u0a30\u0a4b +excludeFilter=\u0a2b\u0a3f\u0a32\u0a1f\u0a30 \u0a28\u0a42\u0a70 \u0a2c\u0a3e\u0a39\u0a30 \u0a15\u0a71\u0a22\u0a4b +httpPort=HTTP \u0a2a\u0a4b\u0a30\u0a1f +httpsPort=HTTPS \u0a2a\u0a4b\u0a30\u0a1f +staticDocsRootUrl=\u0a38\u0a25\u0a3f\u0a30 \u0a21\u0a4c\u0a15\u0a38 \u0a30\u0a42\u0a1f \u0a2f\u0a42\u0a06\u0a30\u0a10\u0a32 +staticDocsRootDir=\u0a38\u0a25\u0a3f\u0a30 \u0a21\u0a4c\u0a15\u0a38 \u0a30\u0a42\u0a1f \u0a21\u0a3e\u0a07\u0a30 +servletsRootUrl=\u0a38\u0a30\u0a35\u0a32\u0a48\u0a1f\u0a38 \u0a30\u0a42\u0a1f \u0a2f\u0a42\u0a06\u0a30\u0a10\u0a32 +proxyBaseUrl=\u0a2a\u0a4d\u0a30\u0a4c\u0a15\u0a38\u0a40 \u0a2c\u0a47\u0a38 \u0a2f\u0a42\u0a06\u0a30\u0a10\u0a32 +authMethod=\u0a2a\u0a4d\u0a30\u0a2e\u0a3e\u0a23\u0a3f\u0a15\u0a24\u0a3e \u0a35\u0a3f\u0a27\u0a40 +keyStorePath=\u0a15\u0a41\u0a70\u0a1c\u0a40 \u0a38\u0a1f\u0a4b\u0a30 \u0a2e\u0a3e\u0a30\u0a17 +keyStorePassword=\u0a15\u0a41\u0a70\u0a1c\u0a40 \u0a38\u0a1f\u0a4b\u0a30 \u0a2a\u0a3e\u0a38\u0a35\u0a30\u0a21 +keyAlias=\u0a2e\u0a41\u0a71\u0a16 \u0a09\u0a2a\u0a28\u0a3e\u0a2e +trustStorePath=\u0a38\u0a1f\u0a4b\u0a30 \u0a2e\u0a3e\u0a30\u0a17 ''\u0a24\u0a47 \u0a2d\u0a30\u0a4b\u0a38\u0a3e \u0a15\u0a30\u0a4b +trustStorePassword=\u0a38\u0a1f\u0a4b\u0a30 \u0a2a\u0a3e\u0a38\u0a35\u0a30\u0a21 ''\u0a24\u0a47 \u0a2d\u0a30\u0a4b\u0a38\u0a3e \u0a15\u0a30\u0a4b +xmlConfigFile=Xml \u0a38\u0a70\u0a30\u0a1a\u0a28\u0a3e \u0a2b\u0a3e\u0a07\u0a32 +enableCORS=Cors \u0a28\u0a42\u0a70 \u0a38\u0a2e\u0a30\u0a71\u0a25 \u0a2c\u0a23\u0a3e\u0a13 +title=Title +keywords=\u0a15\u0a40\u0a35\u0a30\u0a21\u0a38 +fees=\u0a2b\u0a40\u0a38 +accessConstraints=\u0a2a\u0a39\u0a41\u0a70\u0a1a \u0a2a\u0a3e\u0a2c\u0a70\u0a26\u0a40\u0a06\u0a02 +serviceProvider=\u0a38\u0a47\u0a35\u0a3e \u0a2a\u0a4d\u0a30\u0a26\u0a3e\u0a24\u0a3e +ogcCapabilitiesInfo=Ogc \u0a38\u0a2e\u0a30\u0a71\u0a25\u0a3e \u0a1c\u0a3e\u0a23\u0a15\u0a3e\u0a30\u0a40 +enableHttpGET=Http Get \u0a28\u0a42\u0a70 \u0a38\u0a2e\u0a30\u0a71\u0a25 \u0a2c\u0a23\u0a3e\u0a13 +enableHttpPOST=Http \u0a2a\u0a4b\u0a38\u0a1f \u0a28\u0a42\u0a70 \u0a38\u0a2e\u0a30\u0a71\u0a25 \u0a2c\u0a23\u0a3e\u0a13 +enableSOAP=\u0a38\u0a3e\u0a2c\u0a23 \u0a28\u0a42\u0a70 \u0a38\u0a2e\u0a30\u0a71\u0a25 \u0a2c\u0a23\u0a3e\u0a13 +connectTimeout=\u0a38\u0a2e\u0a3e\u0a02 \u0a38\u0a2e\u0a3e\u0a2a\u0a24 \u0a15\u0a28\u0a48\u0a15\u0a1f \u0a15\u0a30\u0a4b +reconnectPeriod=\u0a2e\u0a41\u0a5c-\u0a15\u0a28\u0a48\u0a15\u0a1f \u0a2a\u0a40\u0a30\u0a40\u0a05\u0a21 +reconnectAttempts=\u0a2e\u0a41\u0a5c-\u0a15\u0a28\u0a48\u0a15\u0a1f \u0a15\u0a30\u0a28 \u0a26\u0a40\u0a06\u0a02 \u0a15\u0a4b\u0a38\u0a3c\u0a3f\u0a38\u0a3c\u0a3e\u0a02 +deviceID=\u0a21\u0a3f\u0a35\u0a3e\u0a08\u0a38 \u0a06\u0a08.\u0a21\u0a40 +deviceClass=\u0a21\u0a3f\u0a35\u0a3e\u0a08\u0a38 \u0a15\u0a32\u0a3e\u0a38 +remoteHost=\u0a30\u0a3f\u0a2e\u0a4b\u0a1f \u0a39\u0a4b\u0a38\u0a1f +localAddress=\u0a38\u0a25\u0a3e\u0a28\u0a15 \u0a2a\u0a24\u0a3e +connection=\u0a15\u0a28\u0a48\u0a15\u0a38\u0a3c\u0a28 +portName=\u0a2a\u0a4b\u0a30\u0a1f \u0a28\u0a3e\u0a2e +baudRate=\u0a2c\u0a4c\u0a21 \u0a26\u0a30 +dataBits=\u0a21\u0a3e\u0a1f\u0a3e \u0a2c\u0a3f\u0a71\u0a1f +stopBits=\u0a38\u0a1f\u0a3e\u0a2a \u0a2c\u0a3f\u0a1f\u0a38 +parity=\u0a38\u0a2e\u0a3e\u0a28\u0a24\u0a3e +receiveTimeout=\u0a38\u0a2e\u0a3e\u0a02 \u0a38\u0a2e\u0a3e\u0a2a\u0a24 \u0a2a\u0a4d\u0a30\u0a3e\u0a2a\u0a24 \u0a15\u0a30\u0a4b +receiveThreshold=\u0a25\u0a4d\u0a30\u0a48\u0a38\u0a3c\u0a39\u0a4b\u0a32\u0a21 \u0a2a\u0a4d\u0a30\u0a3e\u0a2a\u0a24 \u0a15\u0a30\u0a4b +remotePort=\u0a30\u0a3f\u0a2e\u0a4b\u0a1f \u0a2a\u0a4b\u0a30\u0a1f +localPort=\u0a38\u0a25\u0a3e\u0a28\u0a15 \u0a2a\u0a4b\u0a30\u0a1f +deviceAddress=\u0a21\u0a3f\u0a35\u0a3e\u0a08\u0a38 \u0a26\u0a3e \u0a2a\u0a24\u0a3e +deviceName=\u0a21\u0a3f\u0a35\u0a3e\u0a08\u0a38 \u0a26\u0a3e \u0a28\u0a3e\u0a2e +serviceUuid=\u0a38\u0a47\u0a35\u0a3e Uuid +user=\u0a09\u0a2a\u0a2d\u0a4b\u0a17\u0a24\u0a3e +enableTLS=Tls \u0a28\u0a42\u0a70 \u0a38\u0a2e\u0a30\u0a71\u0a25 \u0a2c\u0a23\u0a3e\u0a13 +checkReachability=\u0a2a\u0a39\u0a41\u0a70\u0a1a\u0a2f\u0a4b\u0a17\u0a24\u0a3e \u0a26\u0a40 \u0a1c\u0a3e\u0a02\u0a1a \u0a15\u0a30\u0a4b +resourcePath=\u0a38\u0a30\u0a4b\u0a24 \u0a2e\u0a3e\u0a30\u0a17 +uid=\u0a2f\u0a42.\u0a06\u0a08.\u0a21\u0a40 +securityRole=\u0a38\u0a41\u0a30\u0a71\u0a16\u0a3f\u0a06 \u0a2d\u0a42\u0a2e\u0a3f\u0a15\u0a3e +passwordField=\u0a2a\u0a3e\u0a38\u0a35\u0a30\u0a21 \u0a16\u0a47\u0a24\u0a30 +widgetSet=\u0a35\u0a3f\u0a1c\u0a47\u0a1f \u0a38\u0a48\u0a71\u0a1f +bundleRepoUrls=\u0a2c\u0a70\u0a21\u0a32 \u0a30\u0a48\u0a2a\u0a4b Urls +customPanels=\u0a15\u0a38\u0a1f\u0a2e \u0a2a\u0a48\u0a28\u0a32 +customForms=\u0a15\u0a38\u0a1f\u0a2e \u0a2b\u0a3e\u0a30\u0a2e +deploymentName=\u0a24\u0a48\u0a28\u0a3e\u0a24\u0a40 \u0a26\u0a3e \u0a28\u0a3e\u0a2e +enableLandingPage=\u0a32\u0a48\u0a02\u0a21\u0a3f\u0a70\u0a17 \u0a2a\u0a70\u0a28\u0a3e \u0a1a\u0a3e\u0a32\u0a42 \u0a15\u0a30\u0a4b +configClass=\u0a38\u0a70\u0a30\u0a1a\u0a28\u0a3e \u0a15\u0a32\u0a3e\u0a38 +uiClass=Ui \u0a15\u0a32\u0a3e\u0a38 +moduleClass=\u0a2e\u0a4b\u0a21\u0a40\u0a0a\u0a32 \u0a15\u0a32\u0a3e\u0a38 + +# Auto-extracted hardcoded UI strings +testLinks1=\u0a1f\u0a48\u0a38\u0a1f \u0a32\u0a3f\u0a70\u0a15 +uniqueID1=\u0a35\u0a3f\u0a32\u0a71\u0a16\u0a23 \u0a06\u0a08.\u0a21\u0a40 +foiIDs1=FOI \u0a06\u0a08.\u0a21\u0a40 +version1=\u0a38\u0a70\u0a38\u0a15\u0a30\u0a23 + +Connected\ Systems\ Endpoint=\u0a15\u0a28\u0a48\u0a15\u0a1f \u0a15\u0a40\u0a24\u0a47 \u0a38\u0a3f\u0a38\u0a1f\u0a2e \u0a10\u0a02\u0a21\u0a2a\u0a41\u0a06\u0a07\u0a70\u0a1f +Connected\ Systems\ endpoint\ where\ the\ requests\ are\ sent=\u0a15\u0a28\u0a48\u0a15\u0a1f\u0a21 \u0a38\u0a3f\u0a38\u0a1f\u0a2e \u0a10\u0a02\u0a21\u0a2a\u0a41\u0a06\u0a07\u0a70\u0a1f \u0a1c\u0a3f\u0a71\u0a25\u0a47 \u0a2c\u0a47\u0a28\u0a24\u0a40\u0a06\u0a02 \u0a2d\u0a47\u0a1c\u0a40\u0a06\u0a02 \u0a1c\u0a3e\u0a02\u0a26\u0a40\u0a06\u0a02 \u0a39\u0a28 +Connection\ Settings=\u0a15\u0a28\u0a48\u0a15\u0a38\u0a3c\u0a28 \u0a38\u0a48\u0a1f\u0a3f\u0a70\u0a17\u0a3e\u0a02 +Custom\ connector\ configurations=\u0a15\u0a38\u0a1f\u0a2e \u0a15\u0a28\u0a48\u0a15\u0a1f\u0a30 \u0a38\u0a70\u0a30\u0a1a\u0a28\u0a3e\u0a35\u0a3e\u0a02 +Custom\ provider\ configurations=\u0a15\u0a38\u0a1f\u0a2e \u0a2a\u0a4d\u0a30\u0a26\u0a3e\u0a24\u0a3e \u0a38\u0a70\u0a30\u0a1a\u0a28\u0a3e\u0a35\u0a3e\u0a02 +Database\ ID=\u0a21\u0a3e\u0a1f\u0a3e\u0a2c\u0a47\u0a38 ID +Default\ live\ time-out\ for\ all\ offerings,\ unless\ overriden\ by\ custom\ provider\ settings=\u0a38\u0a3e\u0a30\u0a40\u0a06\u0a02 \u0a2a\u0a47\u0a38\u0a3c\u0a15\u0a38\u0a3c\u0a3e\u0a02 \u0a32\u0a08 \u0a21\u0a3f\u0a2b\u0a4c\u0a32\u0a1f \u0a32\u0a3e\u0a08\u0a35 \u0a1f\u0a3e\u0a08\u0a2e-\u0a06\u0a0a\u0a1f, \u0a1c\u0a26\u0a4b\u0a02 \u0a24\u0a71\u0a15 \u0a15\u0a38\u0a1f\u0a2e \u0a2a\u0a4d\u0a30\u0a26\u0a3e\u0a24\u0a3e \u0a38\u0a48\u0a1f\u0a3f\u0a70\u0a17\u0a3e\u0a02 \u0a26\u0a41\u0a06\u0a30\u0a3e \u0a13\u0a35\u0a30\u0a30\u0a3e\u0a08\u0a21 \u0a28\u0a39\u0a40\u0a02 \u0a15\u0a40\u0a24\u0a3e \u0a1c\u0a3e\u0a02\u0a26\u0a3e \u0a39\u0a48 +Default\ live\ time-out\ for\ new\ offerings\ created\ via\ SOS-T=SOS-T \u0a26\u0a41\u0a06\u0a30\u0a3e \u0a2c\u0a23\u0a3e\u0a08\u0a06\u0a02 \u0a17\u0a08\u0a06\u0a02 \u0a28\u0a35\u0a40\u0a06\u0a02 \u0a2a\u0a47\u0a38\u0a3c\u0a15\u0a38\u0a3c\u0a3e\u0a02 \u0a32\u0a08 \u0a21\u0a3f\u0a2b\u0a4c\u0a32\u0a1f \u0a32\u0a3e\u0a08\u0a35 \u0a1f\u0a3e\u0a08\u0a2e-\u0a06\u0a0a\u0a1f +Enable\ to\ use\ a\ persistent\ HTTP\ connection\ for\ InsertResult=InsertResult \u0a32\u0a08 \u0a07\u0a71\u0a15 \u0a38\u0a25\u0a3e\u0a08 HTTP \u0a15\u0a28\u0a48\u0a15\u0a38\u0a3c\u0a28 \u0a35\u0a30\u0a24\u0a23 \u0a32\u0a08 \u0a2f\u0a4b\u0a17 \u0a15\u0a30\u0a4b +Execution\ period\ of\ the\ purge\ policy\ (in\ seconds)=\u0a2a\u0a30\u0a1c \u0a2a\u0a3e\u0a32\u0a3f\u0a38\u0a40 \u0a26\u0a40 \u0a10\u0a17\u0a1c\u0a3c\u0a40\u0a15\u0a3f\u0a0a\u0a38\u0a3c\u0a28 \u0a2a\u0a40\u0a30\u0a40\u0a05\u0a21 (\u0a38\u0a15\u0a3f\u0a70\u0a1f\u0a3e\u0a02 \u0a35\u0a3f\u0a71\u0a1a) +Filtered\ view\ to\ select\ systems\ exposed\ as\ read-only\ through\ this\ service=\u0a07\u0a38 \u0a38\u0a47\u0a35\u0a3e \u0a30\u0a3e\u0a39\u0a40\u0a02 \u0a38\u0a3f\u0a30\u0a2b\u0a3c \u0a30\u0a40\u0a21-\u0a13\u0a28\u0a32\u0a40 \u0a35\u0a1c\u0a4b\u0a02 \u0a38\u0a3e\u0a39\u0a2e\u0a23\u0a47 \u0a06\u0a0f \u0a38\u0a3f\u0a38\u0a1f\u0a2e\u0a3e\u0a02 \u0a26\u0a40 \u0a1a\u0a4b\u0a23 \u0a15\u0a30\u0a28 \u0a32\u0a08 \u0a2b\u0a3f\u0a32\u0a1f\u0a30 \u0a15\u0a40\u0a24\u0a3e \u0a26\u0a4d\u0a30\u0a3f\u0a38\u0a3c +Filtered\ view\ to\ select\ systems/datastreams\ to\ register\ with\ Connected\ Systems=\u0a15\u0a28\u0a48\u0a15\u0a1f \u0a15\u0a40\u0a24\u0a47 \u0a38\u0a3f\u0a38\u0a1f\u0a2e\u0a3e\u0a02 \u0a28\u0a3e\u0a32 \u0a30\u0a1c\u0a3f\u0a38\u0a1f\u0a30 \u0a15\u0a30\u0a28 \u0a32\u0a08 \u0a38\u0a3f\u0a38\u0a1f\u0a2e/\u0a21\u0a3e\u0a1f\u0a3e\u0a38\u0a1f\u0a4d\u0a30\u0a40\u0a2e \u0a26\u0a40 \u0a1a\u0a4b\u0a23 \u0a15\u0a30\u0a28 \u0a32\u0a08 \u0a2b\u0a3f\u0a32\u0a1f\u0a30 \u0a15\u0a40\u0a24\u0a3e \u0a26\u0a4d\u0a30\u0a3f\u0a38\u0a3c +Filtered\ view\ to\ select\ systems/datastreams\ to\ register\ with\ remote\ SOS=\u0a30\u0a3f\u0a2e\u0a4b\u0a1f SOS \u0a28\u0a3e\u0a32 \u0a30\u0a1c\u0a3f\u0a38\u0a1f\u0a30 \u0a15\u0a30\u0a28 \u0a32\u0a08 \u0a38\u0a3f\u0a38\u0a1f\u0a2e/\u0a21\u0a47\u0a1f\u0a3e\u0a38\u0a1f\u0a4d\u0a30\u0a40\u0a2e \u0a26\u0a40 \u0a1a\u0a4b\u0a23 \u0a15\u0a30\u0a28 \u0a32\u0a08 \u0a2b\u0a3f\u0a32\u0a1f\u0a30 \u0a15\u0a40\u0a24\u0a3e \u0a26\u0a4d\u0a30\u0a3f\u0a38\u0a3c +Fixed\ system\ location\ in\ EPSG\ 4979\ (WGS84)\ coordinate\ system=EPSG 4979 (WGS84) \u0a15\u0a4b\u0a06\u0a30\u0a21\u0a40\u0a28\u0a47\u0a1f \u0a38\u0a3f\u0a38\u0a1f\u0a2e \u0a35\u0a3f\u0a71\u0a1a \u0a38\u0a25\u0a3f\u0a30 \u0a38\u0a3f\u0a38\u0a1f\u0a2e \u0a1f\u0a3f\u0a15\u0a3e\u0a23\u0a3e +For\ each\ connection\ or\ reconnection\ attempt,\ the\ client\ will\ wait\ for\ the\ remote\ side\ to\ respond\ until\ this\ timeout\ expires\ (in\ ms)=\u0a39\u0a30\u0a47\u0a15 \u0a15\u0a41\u0a28\u0a48\u0a15\u0a38\u0a3c\u0a28 \u0a1c\u0a3e\u0a02 \u0a2a\u0a41\u0a28\u0a30-\u0a15\u0a28\u0a48\u0a15\u0a38\u0a3c\u0a28 \u0a26\u0a40 \u0a15\u0a4b\u0a38\u0a3c\u0a3f\u0a38\u0a3c \u0a32\u0a08, \u0a15\u0a32\u0a3e\u0a07\u0a70\u0a1f \u0a30\u0a3f\u0a2e\u0a4b\u0a1f \u0a38\u0a3e\u0a08\u0a21 \u0a26\u0a47 \u0a1c\u0a35\u0a3e\u0a2c \u0a26\u0a47\u0a23 \u0a32\u0a08 \u0a09\u0a21\u0a40\u0a15 \u0a15\u0a30\u0a47\u0a17\u0a3e \u0a1c\u0a26\u0a4b\u0a02 \u0a24\u0a71\u0a15 \u0a07\u0a39 \u0a38\u0a2e\u0a3e\u0a02 \u0a38\u0a2e\u0a3e\u0a2a\u0a24 \u0a28\u0a39\u0a40\u0a02 \u0a39\u0a41\u0a70\u0a26\u0a3e (ms \u0a35\u0a3f\u0a71\u0a1a) +Heading\ (or\ yaw)\ angle\ about\ Z\ axis\ in\ degrees=\u0a21\u0a3f\u0a17\u0a30\u0a40 \u0a35\u0a3f\u0a71\u0a1a Z \u0a27\u0a41\u0a30\u0a47 \u0a2c\u0a3e\u0a30\u0a47 \u0a38\u0a3f\u0a30\u0a32\u0a47\u0a16 (\u0a1c\u0a3e\u0a02 \u0a2f\u0a3e\u0a35) \u0a15\u0a4b\u0a23 +How\ long\ the\ client\ will\ wait\ after\ connection\ is\ lost\ before\ it\ will\ attempt\ to\ reconnect\ (in\ ms)=\u0a15\u0a28\u0a48\u0a15\u0a38\u0a3c\u0a28 \u0a16\u0a24\u0a2e \u0a39\u0a4b\u0a23 \u0a24\u0a4b\u0a02 \u0a2c\u0a3e\u0a05\u0a26 \u0a15\u0a32\u0a3e\u0a07\u0a70\u0a1f \u0a15\u0a3f\u0a70\u0a28\u0a40 \u0a26\u0a47\u0a30 \u0a24\u0a71\u0a15 \u0a09\u0a21\u0a40\u0a15 \u0a15\u0a30\u0a47\u0a17\u0a3e \u0a07\u0a38 \u0a24\u0a4b\u0a02 \u0a2a\u0a39\u0a3f\u0a32\u0a3e\u0a02 \u0a15\u0a3f \u0a07\u0a39 \u0a26\u0a41\u0a2c\u0a3e\u0a30\u0a3e \u0a15\u0a28\u0a48\u0a15\u0a1f \u0a15\u0a30\u0a28 \u0a26\u0a40 \u0a15\u0a4b\u0a38\u0a3c\u0a3f\u0a38\u0a3c \u0a15\u0a30\u0a47\u0a17\u0a3e (ms \u0a35\u0a3f\u0a71\u0a1a) +ID\ Generator=ID \u0a1c\u0a47\u0a28\u0a30\u0a47\u0a1f\u0a30 +ID\ of\ database\ module\ used\ for\ persisting\ data\ received\ by\ this\ service.\ If\ none\ is\ provided,\ new\ systems\ registered\ through\ this\ service\ will\ be\ available\ on\ the\ hub,\ but\ with\ no\ persistence\ guarantee\ across\ restarts.=\u0a21\u0a3e\u0a1f\u0a3e\u0a2c\u0a47\u0a38 \u0a2e\u0a4b\u0a21\u0a40\u0a0a\u0a32 \u0a26\u0a40 ID \u0a07\u0a38 \u0a38\u0a47\u0a35\u0a3e \u0a26\u0a41\u0a06\u0a30\u0a3e \u0a2a\u0a4d\u0a30\u0a3e\u0a2a\u0a24 \u0a15\u0a40\u0a24\u0a47 \u0a21\u0a47\u0a1f\u0a3e \u0a28\u0a42\u0a70 \u0a15\u0a3e\u0a07\u0a2e \u0a30\u0a71\u0a16\u0a23 \u0a32\u0a08 \u0a35\u0a30\u0a24\u0a40 \u0a1c\u0a3e\u0a02\u0a26\u0a40 \u0a39\u0a48\u0964 \u0a1c\u0a47\u0a15\u0a30 \u0a15\u0a4b\u0a08 \u0a35\u0a40 \u0a2a\u0a4d\u0a30\u0a26\u0a3e\u0a28 \u0a28\u0a39\u0a40\u0a02 \u0a15\u0a40\u0a24\u0a3e \u0a1c\u0a3e\u0a02\u0a26\u0a3e \u0a39\u0a48, \u0a24\u0a3e\u0a02 \u0a07\u0a38 \u0a38\u0a47\u0a35\u0a3e \u0a26\u0a41\u0a06\u0a30\u0a3e \u0a30\u0a1c\u0a3f\u0a38\u0a1f\u0a30 \u0a15\u0a40\u0a24\u0a47 \u0a17\u0a0f \u0a28\u0a35\u0a47\u0a02 \u0a38\u0a3f\u0a38\u0a1f\u0a2e \u0a39\u0a71\u0a2c ''\u0a24\u0a47 \u0a09\u0a2a\u0a32\u0a2c\u0a27 \u0a39\u0a4b\u0a23\u0a17\u0a47, \u0a2a\u0a30 \u0a2e\u0a41\u0a5c-\u0a1a\u0a3e\u0a32\u0a42 \u0a39\u0a4b\u0a23 \u0a26\u0a40 \u0a15\u0a4b\u0a08 \u0a17\u0a3e\u0a30\u0a70\u0a1f\u0a40 \u0a28\u0a39\u0a40\u0a02 \u0a39\u0a48\u0964 +ID\ of\ database\ module\ used\ for\ persisting\ data\ received\ by\ this\ service.\ If\ none\ is\ provided,\ new\ systems\ registered\ through\ this\ service\ will\ be\ available\ on\ the\ hub,\ but\ with\ no\ persistence\ guarantee\ across\ restarts.\ Only\ the\ latest\ observation\ from\ each\ datastream\ will\ be\ available\ and\ older\ observations\ will\ be\ discarded=\u0a21\u0a3e\u0a1f\u0a3e\u0a2c\u0a47\u0a38 \u0a2e\u0a4b\u0a21\u0a40\u0a0a\u0a32 \u0a26\u0a40 ID \u0a07\u0a38 \u0a38\u0a47\u0a35\u0a3e \u0a26\u0a41\u0a06\u0a30\u0a3e \u0a2a\u0a4d\u0a30\u0a3e\u0a2a\u0a24 \u0a15\u0a40\u0a24\u0a47 \u0a21\u0a47\u0a1f\u0a3e \u0a28\u0a42\u0a70 \u0a15\u0a3e\u0a07\u0a2e \u0a30\u0a71\u0a16\u0a23 \u0a32\u0a08 \u0a35\u0a30\u0a24\u0a40 \u0a1c\u0a3e\u0a02\u0a26\u0a40 \u0a39\u0a48\u0964 \u0a1c\u0a47\u0a15\u0a30 \u0a15\u0a4b\u0a08 \u0a35\u0a40 \u0a2a\u0a4d\u0a30\u0a26\u0a3e\u0a28 \u0a28\u0a39\u0a40\u0a02 \u0a15\u0a40\u0a24\u0a3e \u0a1c\u0a3e\u0a02\u0a26\u0a3e \u0a39\u0a48, \u0a24\u0a3e\u0a02 \u0a07\u0a38 \u0a38\u0a47\u0a35\u0a3e \u0a26\u0a41\u0a06\u0a30\u0a3e \u0a30\u0a1c\u0a3f\u0a38\u0a1f\u0a30 \u0a15\u0a40\u0a24\u0a47 \u0a17\u0a0f \u0a28\u0a35\u0a47\u0a02 \u0a38\u0a3f\u0a38\u0a1f\u0a2e \u0a39\u0a71\u0a2c ''\u0a24\u0a47 \u0a09\u0a2a\u0a32\u0a2c\u0a27 \u0a39\u0a4b\u0a23\u0a17\u0a47, \u0a2a\u0a30 \u0a2e\u0a41\u0a5c-\u0a1a\u0a3e\u0a32\u0a42 \u0a39\u0a4b\u0a23 \u0a26\u0a40 \u0a15\u0a4b\u0a08 \u0a17\u0a3e\u0a30\u0a70\u0a1f\u0a40 \u0a28\u0a39\u0a40\u0a02 \u0a39\u0a48\u0964 \u0a39\u0a30\u0a47\u0a15 \u0a21\u0a47\u0a1f\u0a3e\u0a38\u0a1f\u0a4d\u0a30\u0a40\u0a2e \u0a24\u0a4b\u0a02 \u0a38\u0a3f\u0a30\u0a2b \u0a28\u0a35\u0a40\u0a28\u0a24\u0a2e \u0a28\u0a3f\u0a30\u0a40\u0a16\u0a23 \u0a09\u0a2a\u0a32\u0a2c\u0a27 \u0a39\u0a4b\u0a23\u0a17\u0a47 \u0a05\u0a24\u0a47 \u0a2a\u0a41\u0a30\u0a3e\u0a23\u0a47 \u0a28\u0a3f\u0a30\u0a40\u0a16\u0a23\u0a3e\u0a02 \u0a28\u0a42\u0a70 \u0a30\u0a71\u0a26 \u0a15\u0a30 \u0a26\u0a3f\u0a71\u0a24\u0a3e \u0a1c\u0a3e\u0a35\u0a47\u0a17\u0a3e +Individual\ configuration\ of\ sensors\ in\ the\ array\ (will\ override\ common\ configuration)=\u0a10\u0a30\u0a47 \u0a35\u0a3f\u0a71\u0a1a \u0a38\u0a48\u0a02\u0a38\u0a30\u0a3e\u0a02 \u0a26\u0a40 \u0a35\u0a3f\u0a05\u0a15\u0a24\u0a40\u0a17\u0a24 \u0a38\u0a70\u0a30\u0a1a\u0a28\u0a3e (\u0a06\u0a2e \u0a38\u0a70\u0a30\u0a1a\u0a28\u0a3e \u0a28\u0a42\u0a70 \u0a13\u0a35\u0a30\u0a30\u0a3e\u0a08\u0a21 \u0a15\u0a30\u0a47\u0a17\u0a40) +List\ of\ observed\ properties\ URI\ to\ make\ available\ as\ outputs=\u0a06\u0a0a\u0a1f\u0a2a\u0a41\u0a71\u0a1f \u0a26\u0a47 \u0a24\u0a4c\u0a30 ''\u0a24\u0a47 \u0a09\u0a2a\u0a32\u0a2c\u0a27 \u0a15\u0a30\u0a3e\u0a09\u0a23 \u0a32\u0a08 \u0a28\u0a3f\u0a30\u0a40\u0a16\u0a23 \u0a15\u0a40\u0a24\u0a40\u0a06\u0a02 \u0a35\u0a3f\u0a38\u0a3c\u0a47\u0a38\u0a3c\u0a24\u0a3e\u0a35\u0a3e\u0a02 \u0a26\u0a40 \u0a38\u0a42\u0a1a\u0a40 URI +Mapping\ of\ custom\ formats\ mime-types\ to\ custom\ serializer\ classes=\u0a15\u0a38\u0a1f\u0a2e \u0a38\u0a40\u0a30\u0a40\u0a05\u0a32\u0a3e\u0a08\u0a1c\u0a3c\u0a30 \u0a15\u0a32\u0a3e\u0a38\u0a3e\u0a02 \u0a32\u0a08 \u0a15\u0a38\u0a1f\u0a2e \u0a2b\u0a3e\u0a30\u0a2e\u0a48\u0a1f \u0a2e\u0a3e\u0a08\u0a2e-\u0a15\u0a3f\u0a38\u0a2e\u0a3e\u0a02 \u0a26\u0a40 \u0a2e\u0a48\u0a2a\u0a3f\u0a70\u0a17 +Mappings\ used\ by\ CURIE\ to\ URI\ resolver=CURIE \u0a26\u0a41\u0a06\u0a30\u0a3e URI \u0a30\u0a48\u0a1c\u0a3c\u0a4b\u0a32\u0a35\u0a30 \u0a32\u0a08 \u0a2e\u0a48\u0a2a\u0a3f\u0a70\u0a17\u0a38 +Max\ Limit=\u0a05\u0a27\u0a3f\u0a15\u0a24\u0a2e \u0a38\u0a40\u0a2e\u0a3e +Max\ Observations\ Returned=\u0a05\u0a27\u0a3f\u0a15\u0a24\u0a2e \u0a28\u0a3f\u0a30\u0a40\u0a16\u0a23 \u0a35\u0a3e\u0a2a\u0a38 \u0a06\u0a0f +Max\ Records\ Returned=\u0a05\u0a27\u0a3f\u0a15\u0a24\u0a2e \u0a30\u0a3f\u0a15\u0a3e\u0a30\u0a21 \u0a35\u0a3e\u0a2a\u0a38 \u0a15\u0a40\u0a24\u0a47 +Max\ delay\ between\ auto-commit\ execution,\ in\ seconds.\ 0\ to\ disable\ time-based\ auto-commit=\u0a06\u0a1f\u0a4b-\u0a15\u0a2e\u0a3f\u0a1f \u0a10\u0a17\u0a1c\u0a3c\u0a40\u0a15\u0a3f\u0a0a\u0a38\u0a3c\u0a28 \u0a35\u0a3f\u0a1a\u0a15\u0a3e\u0a30 \u0a05\u0a27\u0a3f\u0a15\u0a24\u0a2e \u0a26\u0a47\u0a30\u0a40, \u0a38\u0a15\u0a3f\u0a70\u0a1f\u0a3e\u0a02 \u0a35\u0a3f\u0a71\u0a1a\u0964 \u0a38\u0a2e\u0a3e\u0a02-\u0a06\u0a27\u0a3e\u0a30\u0a3f\u0a24 \u0a06\u0a1f\u0a4b-\u0a15\u0a2e\u0a3f\u0a1f \u0a28\u0a42\u0a70 \u0a05\u0a2f\u0a4b\u0a17 \u0a15\u0a30\u0a28 \u0a32\u0a08 0 +Maximum\ age\ of\ data\ to\ be\ kept\ in\ storage\ (in\ seconds)=\u0a38\u0a1f\u0a4b\u0a30\u0a47\u0a1c \u0a35\u0a3f\u0a71\u0a1a \u0a30\u0a71\u0a16\u0a47 \u0a1c\u0a3e\u0a23 \u0a35\u0a3e\u0a32\u0a47 \u0a21\u0a47\u0a1f\u0a3e \u0a26\u0a40 \u0a35\u0a71\u0a27 \u0a24\u0a4b\u0a02 \u0a35\u0a71\u0a27 \u0a09\u0a2e\u0a30 (\u0a38\u0a15\u0a3f\u0a70\u0a1f\u0a3e\u0a02 \u0a35\u0a3f\u0a71\u0a1a) +Maximum\ number\ of\ FoI\ IDs\ listed\ in\ capabilities=\u0a38\u0a2e\u0a30\u0a71\u0a25\u0a3e\u0a35\u0a3e\u0a02 \u0a35\u0a3f\u0a71\u0a1a \u0a38\u0a42\u0a1a\u0a40\u0a2c\u0a71\u0a27 FoI ID \u0a26\u0a40 \u0a05\u0a27\u0a3f\u0a15\u0a24\u0a2e \u0a38\u0a70\u0a16\u0a3f\u0a06 +Maximum\ number\ of\ observations\ returned\ \ by\ a\ historical\ GetObservation\ request\ (for\ each\ selected\ offering)=\u0a07\u0a71\u0a15 \u0a07\u0a24\u0a3f\u0a39\u0a3e\u0a38\u0a15 GetObservation \u0a2c\u0a47\u0a28\u0a24\u0a40 \u0a26\u0a41\u0a06\u0a30\u0a3e \u0a35\u0a3e\u0a2a\u0a38 \u0a15\u0a40\u0a24\u0a47 \u0a17\u0a0f \u0a28\u0a3f\u0a30\u0a40\u0a16\u0a23\u0a3e\u0a02 \u0a26\u0a40 \u0a05\u0a27\u0a3f\u0a15\u0a24\u0a2e \u0a38\u0a70\u0a16\u0a3f\u0a06 (\u0a39\u0a30\u0a47\u0a15 \u0a1a\u0a41\u0a23\u0a40 \u0a17\u0a08 \u0a2a\u0a47\u0a38\u0a3c\u0a15\u0a38\u0a3c \u0a32\u0a08) +Maximum\ number\ of\ records\ in\ upload\ queue\ (used\ to\ compensate\ for\ variable\ bandwidth)=\u0a05\u0a71\u0a2a\u0a32\u0a4b\u0a21 \u0a15\u0a24\u0a3e\u0a30 \u0a35\u0a3f\u0a71\u0a1a \u0a30\u0a3f\u0a15\u0a3e\u0a30\u0a21\u0a3e\u0a02 \u0a26\u0a40 \u0a05\u0a27\u0a3f\u0a15\u0a24\u0a2e \u0a38\u0a70\u0a16\u0a3f\u0a06 (\u0a35\u0a47\u0a30\u0a40\u0a0f\u0a2c\u0a32 \u0a2c\u0a48\u0a02\u0a21\u0a35\u0a3f\u0a21\u0a25 \u0a32\u0a08 \u0a2e\u0a41\u0a06\u0a35\u0a1c\u0a3c\u0a3e \u0a26\u0a47\u0a23 \u0a32\u0a08 \u0a35\u0a30\u0a24\u0a3f\u0a06 \u0a1c\u0a3e\u0a02\u0a26\u0a3e \u0a39\u0a48) +Maximum\ number\ of\ resources\ returned\ in\ a\ single\ page=\u0a07\u0a71\u0a15 \u0a2a\u0a70\u0a28\u0a47 \u0a35\u0a3f\u0a71\u0a1a \u0a35\u0a3e\u0a2a\u0a38 \u0a15\u0a40\u0a24\u0a47 \u0a38\u0a30\u0a4b\u0a24\u0a3e\u0a02 \u0a26\u0a40 \u0a05\u0a27\u0a3f\u0a15\u0a24\u0a2e \u0a38\u0a70\u0a16\u0a3f\u0a06 +Maximum\ number\ of\ result\ records\ returned\ by\ a\ historical\ GetResult\ request=\u0a07\u0a71\u0a15 \u0a07\u0a24\u0a3f\u0a39\u0a3e\u0a38\u0a15 GetResult \u0a2c\u0a47\u0a28\u0a24\u0a40 \u0a26\u0a41\u0a06\u0a30\u0a3e \u0a35\u0a3e\u0a2a\u0a38 \u0a15\u0a40\u0a24\u0a47 \u0a28\u0a24\u0a40\u0a1c\u0a47 \u0a30\u0a3f\u0a15\u0a3e\u0a30\u0a21\u0a3e\u0a02 \u0a26\u0a40 \u0a05\u0a27\u0a3f\u0a15\u0a24\u0a2e \u0a38\u0a70\u0a16\u0a3f\u0a06 +Maximum\ number\ of\ stream\ errors\ before\ we\ try\ to\ reconnect\ to\ remote\ server=\u0a30\u0a3f\u0a2e\u0a4b\u0a1f \u0a38\u0a30\u0a35\u0a30 \u0a28\u0a3e\u0a32 \u0a2e\u0a41\u0a5c \u0a15\u0a28\u0a48\u0a15\u0a1f \u0a15\u0a30\u0a28 \u0a26\u0a40 \u0a15\u0a4b\u0a38\u0a3c\u0a3f\u0a38\u0a3c \u0a15\u0a30\u0a28 \u0a24\u0a4b\u0a02 \u0a2a\u0a39\u0a3f\u0a32\u0a3e\u0a02 \u0a38\u0a1f\u0a4d\u0a30\u0a40\u0a2e \u0a26\u0a40\u0a06\u0a02 \u0a17\u0a32\u0a24\u0a40\u0a06\u0a02 \u0a26\u0a40 \u0a35\u0a71\u0a27 \u0a24\u0a4b\u0a02 \u0a35\u0a71\u0a27 \u0a38\u0a70\u0a16\u0a3f\u0a06 +Memory\ cache\ size\ for\ page\ chunks,\ in\ KB=\u0a38\u0a2b\u0a3c\u0a47 \u0a26\u0a47 \u0a2d\u0a3e\u0a17\u0a3e\u0a02 \u0a32\u0a08 \u0a2e\u0a48\u0a2e\u0a4b\u0a30\u0a40 \u0a15\u0a48\u0a38\u0a3c \u0a06\u0a15\u0a3e\u0a30, KB \u0a35\u0a3f\u0a71\u0a1a +Metadata\ of\ system\ group\ that\ will\ be\ created\ to\ contain\ all\ procedures/sensors\ registered\ through\ this\ service.\ Only\ sensors\ in\ this\ group\ will\ be\ modifiable\ by\ this\ service=\u0a38\u0a3f\u0a38\u0a1f\u0a2e \u0a38\u0a2e\u0a42\u0a39 \u0a26\u0a3e \u0a2e\u0a48\u0a1f\u0a3e\u0a21\u0a47\u0a1f\u0a3e \u0a1c\u0a4b \u0a07\u0a38 \u0a38\u0a47\u0a35\u0a3e \u0a26\u0a41\u0a06\u0a30\u0a3e \u0a30\u0a1c\u0a3f\u0a38\u0a1f\u0a30 \u0a15\u0a40\u0a24\u0a40\u0a06\u0a02 \u0a38\u0a3e\u0a30\u0a40\u0a06\u0a02 \u0a2a\u0a4d\u0a30\u0a15\u0a3f\u0a30\u0a3f\u0a06\u0a35\u0a3e\u0a02/\u0a38\u0a48\u0a02\u0a38\u0a30\u0a3e\u0a02 \u0a28\u0a42\u0a70 \u0a38\u0a3c\u0a3e\u0a2e\u0a32 \u0a15\u0a30\u0a28 \u0a32\u0a08 \u0a2c\u0a23\u0a3e\u0a07\u0a06 \u0a1c\u0a3e\u0a35\u0a47\u0a17\u0a3e\u0964 \u0a07\u0a38 \u0a38\u0a47\u0a35\u0a3e \u0a26\u0a41\u0a06\u0a30\u0a3e \u0a07\u0a38 \u0a38\u0a2e\u0a42\u0a39 \u0a35\u0a3f\u0a71\u0a1a \u0a38\u0a3f\u0a30\u0a2b\u0a3c \u0a38\u0a48\u0a02\u0a38\u0a30 \u0a39\u0a40 \u0a38\u0a4b\u0a27\u0a47 \u0a1c\u0a3e \u0a38\u0a15\u0a23\u0a17\u0a47 +Metadata\ of\ system\ group\ that\ will\ be\ created\ to\ contain\ all\ systems\ registered\ through\ this\ service.\ Only\ systems\ in\ this\ group\ will\ be\ modifiable\ by\ this\ service=\u0a38\u0a3f\u0a38\u0a1f\u0a2e \u0a17\u0a30\u0a41\u0a71\u0a2a \u0a26\u0a3e \u0a2e\u0a48\u0a1f\u0a3e\u0a21\u0a3e\u0a1f\u0a3e \u0a1c\u0a4b \u0a07\u0a38 \u0a38\u0a47\u0a35\u0a3e \u0a30\u0a3e\u0a39\u0a40\u0a02 \u0a30\u0a1c\u0a3f\u0a38\u0a1f\u0a30 \u0a15\u0a40\u0a24\u0a47 \u0a38\u0a3e\u0a30\u0a47 \u0a38\u0a3f\u0a38\u0a1f\u0a2e\u0a3e\u0a02 \u0a28\u0a42\u0a70 \u0a30\u0a71\u0a16\u0a23 \u0a32\u0a08 \u0a2c\u0a23\u0a3e\u0a07\u0a06 \u0a1c\u0a3e\u0a35\u0a47\u0a17\u0a3e\u0964 \u0a07\u0a38 \u0a38\u0a47\u0a35\u0a3e \u0a26\u0a41\u0a06\u0a30\u0a3e \u0a38\u0a3f\u0a30\u0a2b\u0a3c \u0a07\u0a38 \u0a17\u0a30\u0a41\u0a71\u0a2a \u0a35\u0a3f\u0a71\u0a1a \u0a38\u0a3f\u0a38\u0a1f\u0a2e\u0a3e\u0a02 \u0a28\u0a42\u0a70 \u0a38\u0a4b\u0a27\u0a3f\u0a06 \u0a1c\u0a3e \u0a38\u0a15\u0a26\u0a3e \u0a39\u0a48 +Method\ used\ to\ generate\ new\ resource\ IDs=\u0a28\u0a35\u0a47\u0a02 \u0a38\u0a30\u0a4b\u0a24 ID \u0a2c\u0a23\u0a3e\u0a09\u0a23 \u0a32\u0a08 \u0a35\u0a30\u0a24\u0a40 \u0a1c\u0a3e\u0a02\u0a26\u0a40 \u0a35\u0a3f\u0a27\u0a40 +Minimum\ fillrate\ above\ which\ auto\ compact\ operations\ may\ be\ triggered=\u0a18\u0a71\u0a1f\u0a4b-\u0a18\u0a71\u0a1f \u0a2b\u0a3f\u0a32\u0a30\u0a47\u0a1f \u0a1c\u0a3f\u0a38 \u0a24\u0a4b\u0a02 \u0a09\u0a71\u0a2a\u0a30 \u0a06\u0a1f\u0a4b \u0a15\u0a70\u0a2a\u0a48\u0a15\u0a1f \u0a13\u0a2a\u0a30\u0a47\u0a38\u0a3c\u0a28 \u0a38\u0a3c\u0a41\u0a30\u0a42 \u0a39\u0a4b \u0a38\u0a15\u0a26\u0a47 \u0a39\u0a28 +Minimum\ period\ between\ database\ commits\ (in\ ms)=\u0a21\u0a3e\u0a1f\u0a3e\u0a2c\u0a47\u0a38 \u0a2a\u0a4d\u0a30\u0a24\u0a40\u0a2c\u0a71\u0a27\u0a24\u0a3e\u0a35\u0a3e\u0a02 \u0a35\u0a3f\u0a1a\u0a15\u0a3e\u0a30 \u0a18\u0a71\u0a1f\u0a4b-\u0a18\u0a71\u0a1f \u0a2e\u0a3f\u0a06\u0a26 (ms \u0a35\u0a3f\u0a71\u0a1a) +Names\ of\ datastreams\ whose\ data\ will\ be\ hidden\ from\ the\ SOS.\ If\ this\ is\ null,\ all\ streams\ produced\ by\ the\ procedure\ are\ exposed=\u0a21\u0a47\u0a1f\u0a3e\u0a38\u0a1f\u0a4d\u0a30\u0a40\u0a2e \u0a26\u0a47 \u0a28\u0a3e\u0a2e \u0a1c\u0a3f\u0a28\u0a4d\u0a39\u0a3e\u0a02 \u0a26\u0a3e \u0a21\u0a47\u0a1f\u0a3e SOS \u0a24\u0a4b\u0a02 \u0a32\u0a41\u0a15\u0a3e\u0a07\u0a06 \u0a1c\u0a3e\u0a35\u0a47\u0a17\u0a3e\u0964 \u0a1c\u0a47\u0a15\u0a30 \u0a07\u0a39 \u0a28\u0a32 \u0a39\u0a48, \u0a24\u0a3e\u0a02 \u0a35\u0a3f\u0a27\u0a40 \u0a26\u0a41\u0a06\u0a30\u0a3e \u0a2a\u0a48\u0a26\u0a3e \u0a15\u0a40\u0a24\u0a40\u0a06\u0a02 \u0a38\u0a3e\u0a30\u0a40\u0a06\u0a02 \u0a27\u0a3e\u0a30\u0a3e\u0a35\u0a3e\u0a02 \u0a26\u0a3e \u0a38\u0a3e\u0a39\u0a2e\u0a23\u0a3e \u0a15\u0a40\u0a24\u0a3e \u0a1c\u0a3e\u0a02\u0a26\u0a3e \u0a39\u0a48 +Observed\ Properties=\u0a28\u0a3f\u0a30\u0a40\u0a16\u0a23 \u0a15\u0a40\u0a24\u0a40 \u0a35\u0a3f\u0a38\u0a3c\u0a47\u0a38\u0a3c\u0a24\u0a3e +Offering\ URI\ as\ exposed\ in\ capabilities.\ (if\ null,\ the\ procedure\ UID\ is\ used)=\u0a38\u0a2e\u0a30\u0a71\u0a25\u0a3e\u0a35\u0a3e\u0a02 \u0a26\u0a47 \u0a2a\u0a4d\u0a30\u0a17\u0a1f\u0a3e\u0a35\u0a47 \u0a35\u0a1c\u0a4b\u0a02 URI \u0a26\u0a40 \u0a2a\u0a47\u0a38\u0a3c\u0a15\u0a38\u0a3c \u0a15\u0a30\u0a28\u0a3e\u0964 (\u0a1c\u0a47\u0a15\u0a30 \u0a28\u0a32, \u0a35\u0a3f\u0a27\u0a40 UID \u0a35\u0a30\u0a24\u0a40 \u0a1c\u0a3e\u0a02\u0a26\u0a40 \u0a39\u0a48) +Offering\ description\ (if\ null,\ it\ will\ be\ auto-generated)=\u0a2a\u0a47\u0a38\u0a3c\u0a15\u0a38\u0a3c \u0a26\u0a3e \u0a35\u0a47\u0a30\u0a35\u0a3e (\u0a1c\u0a47\u0a15\u0a30 \u0a16\u0a3e\u0a32\u0a40 \u0a39\u0a48, \u0a24\u0a3e\u0a02 \u0a07\u0a39 \u0a38\u0a35\u0a48-\u0a24\u0a3f\u0a06\u0a30 \u0a39\u0a4b\u0a35\u0a47\u0a17\u0a3e) +Offering\ name\ (if\ null,\ the\ procedure\ name\ is\ used)=\u0a2a\u0a47\u0a38\u0a3c\u0a15\u0a38\u0a3c \u0a26\u0a3e \u0a28\u0a3e\u0a2e (\u0a1c\u0a47 \u0a28\u0a32, \u0a2a\u0a4d\u0a30\u0a15\u0a3f\u0a30\u0a3f\u0a06 \u0a26\u0a3e \u0a28\u0a3e\u0a2e \u0a35\u0a30\u0a24\u0a3f\u0a06 \u0a1c\u0a3e\u0a02\u0a26\u0a3e \u0a39\u0a48) +Orientation\ as\ Euler\ angles\ in\ NED\ coordinate\ reference\ frame.\nOrder\ of\ rotations\ is\ z-y\u2019-x"\ (in\ rotating\ frame)\ or\ x-y-z\ (in\ fixed\ frame)=NED \u0a15\u0a4b\u0a06\u0a30\u0a21\u0a40\u0a28\u0a47\u0a1f \u0a38\u0a70\u0a26\u0a30\u0a2d \u0a2b\u0a4d\u0a30\u0a47\u0a2e \u0a35\u0a3f\u0a71\u0a1a \u0a2f\u0a42\u0a32\u0a30 \u0a15\u0a4b\u0a23\u0a3e\u0a02 \u0a26\u0a47 \u0a30\u0a42\u0a2a \u0a35\u0a3f\u0a71\u0a1a \u0a38\u0a25\u0a3f\u0a24\u0a40\u0964\n\u0a30\u0a4b\u0a1f\u0a47\u0a38\u0a3c\u0a28\u0a3e\u0a02 \u0a26\u0a3e \u0a15\u0a4d\u0a30\u0a2e z-y\u2019-x" (\u0a30\u0a4b\u0a1f\u0a47\u0a1f\u0a3f\u0a70\u0a17 \u0a2b\u0a30\u0a47\u0a2e \u0a35\u0a3f\u0a71\u0a1a) \u0a1c\u0a3e\u0a02 x-y-z (\u0a38\u0a25\u0a3f\u0a30 \u0a2b\u0a30\u0a47\u0a2e \u0a35\u0a3f\u0a71\u0a1a) \u0a39\u0a48 +Password\ for\ the\ key\ store\ (and\ for\ the\ keypair\ within\ the\ keystore).\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ "javax.net.ssl.keyStorePassword"\ system\ property.\ This\ value\ can\ use\ variable\ expansion\ expressions\ of\ the\ form\ "$${name}"\ (for\ environment\ variables\ and\ system\ properties)\ or\ "$${file;/path/to/file}"\ (for\ secret\ file\ contents).=\u0a15\u0a41\u0a70\u0a1c\u0a40 \u0a38\u0a1f\u0a4b\u0a30 \u0a32\u0a08 \u0a2a\u0a3e\u0a38\u0a35\u0a30\u0a21 (\u0a05\u0a24\u0a47 \u0a15\u0a40\u0a38\u0a1f\u0a4b\u0a30 \u0a26\u0a47 \u0a05\u0a70\u0a26\u0a30 \u0a15\u0a40-\u0a2a\u0a47\u0a05\u0a30 \u0a32\u0a08)\u0964 \u0a1c\u0a47\u0a15\u0a30 \u0a07\u0a39 \u0a2e\u0a41\u0a71\u0a32 \u0a16\u0a3e\u0a32\u0a40 \u0a39\u0a48, \u0a24\u0a3e\u0a02 "javax.net.ssl.keyStorePassword" \u0a38\u0a3f\u0a38\u0a1f\u0a2e \u0a35\u0a3f\u0a38\u0a3c\u0a47\u0a38\u0a3c\u0a24\u0a3e \u0a26\u0a47 \u0a2e\u0a41\u0a71\u0a32 \u0a26\u0a40 \u0a35\u0a30\u0a24\u0a4b\u0a02 \u0a15\u0a30\u0a28 \u0a32\u0a08 \u0a21\u0a3f\u0a2b\u0a4c\u0a32\u0a1f \u0a39\u0a4b\u0a35\u0a47\u0a17\u0a3e\u0964 \u0a07\u0a39 \u0a2e\u0a41\u0a71\u0a32 "$${name}" (\u0a35\u0a3e\u0a24\u0a3e\u0a35\u0a30\u0a23 \u0a35\u0a47\u0a30\u0a40\u0a0f\u0a2c\u0a32 \u0a05\u0a24\u0a47 \u0a38\u0a3f\u0a38\u0a1f\u0a2e \u0a35\u0a3f\u0a38\u0a3c\u0a47\u0a38\u0a3c\u0a24\u0a3e\u0a35\u0a3e\u0a02 \u0a32\u0a08) \u0a1c\u0a3e\u0a02 "$${file;/path/to/file}" (\u0a17\u0a41\u0a2a\u0a24 \u0a2b\u0a3c\u0a3e\u0a08\u0a32 \u0a38\u0a2e\u0a71\u0a17\u0a30\u0a40 \u0a32\u0a08) \u0a26\u0a47 \u0a35\u0a47\u0a30\u0a40\u0a0f\u0a2c\u0a32 \u0a10\u0a15\u0a38\u0a2a\u0a48\u0a02\u0a38\u0a3c\u0a28 \u0a38\u0a2e\u0a40\u0a15\u0a30\u0a28\u0a3e\u0a02 \u0a26\u0a40 \u0a35\u0a30\u0a24\u0a4b\u0a02 \u0a15\u0a30 \u0a38\u0a15\u0a26\u0a3e \u0a39\u0a48\u0964 +Password\ for\ the\ trust\ store.\ Ignored\ if\ client\ certificate\ authentication\ is\ not\ used.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ "javax.net.ssl.trustStorePassword"\ system\ property.\ This\ value\ can\ use\ variable\ expansion\ expressions\ of\ the\ form\ "$${name}"\ (for\ environment\ variables\ and\ system\ properties)\ or\ "$${file;/path/to/file}"\ (for\ secret\ file\ contents).=\u0a1f\u0a30\u0a71\u0a38\u0a1f \u0a38\u0a1f\u0a4b\u0a30 \u0a32\u0a08 \u0a2a\u0a3e\u0a38\u0a35\u0a30\u0a21\u0964 \u0a05\u0a23\u0a21\u0a3f\u0a71\u0a20 \u0a15\u0a40\u0a24\u0a3e \u0a1c\u0a3e\u0a02\u0a26\u0a3e \u0a39\u0a48 \u0a1c\u0a47\u0a15\u0a30 \u0a15\u0a32\u0a3e\u0a07\u0a70\u0a1f \u0a38\u0a30\u0a1f\u0a40\u0a2b\u0a3f\u0a15\u0a47\u0a1f \u0a2a\u0a4d\u0a30\u0a2e\u0a3e\u0a23\u0a3f\u0a15\u0a24\u0a3e \u0a26\u0a40 \u0a35\u0a30\u0a24\u0a4b\u0a02 \u0a28\u0a39\u0a40\u0a02 \u0a15\u0a40\u0a24\u0a40 \u0a1c\u0a3e\u0a02\u0a26\u0a40 \u0a39\u0a48\u0964 \u0a1c\u0a47\u0a15\u0a30 \u0a07\u0a39 \u0a2e\u0a41\u0a71\u0a32 \u0a16\u0a3e\u0a32\u0a40 \u0a39\u0a48, \u0a24\u0a3e\u0a02 "javax.net.ssl.trustStorePassword" \u0a38\u0a3f\u0a38\u0a1f\u0a2e \u0a35\u0a3f\u0a38\u0a3c\u0a47\u0a38\u0a3c\u0a24\u0a3e \u0a26\u0a47 \u0a2e\u0a41\u0a71\u0a32 \u0a26\u0a40 \u0a35\u0a30\u0a24\u0a4b\u0a02 \u0a15\u0a30\u0a28 \u0a32\u0a08 \u0a21\u0a3f\u0a2b\u0a4c\u0a32\u0a1f \u0a39\u0a4b\u0a35\u0a47\u0a17\u0a3e\u0964 \u0a07\u0a39 \u0a2e\u0a41\u0a71\u0a32 "$${name}" (\u0a35\u0a3e\u0a24\u0a3e\u0a35\u0a30\u0a23 \u0a35\u0a47\u0a30\u0a40\u0a0f\u0a2c\u0a32 \u0a05\u0a24\u0a47 \u0a38\u0a3f\u0a38\u0a1f\u0a2e \u0a35\u0a3f\u0a38\u0a3c\u0a47\u0a38\u0a3c\u0a24\u0a3e\u0a35\u0a3e\u0a02 \u0a32\u0a08) \u0a1c\u0a3e\u0a02 "$${file;/path/to/file}" (\u0a17\u0a41\u0a2a\u0a24 \u0a2b\u0a3c\u0a3e\u0a08\u0a32 \u0a38\u0a2e\u0a71\u0a17\u0a30\u0a40 \u0a32\u0a08) \u0a26\u0a47 \u0a35\u0a47\u0a30\u0a40\u0a0f\u0a2c\u0a32 \u0a10\u0a15\u0a38\u0a2a\u0a48\u0a02\u0a38\u0a3c\u0a28 \u0a38\u0a2e\u0a40\u0a15\u0a30\u0a28\u0a3e\u0a02 \u0a26\u0a40 \u0a35\u0a30\u0a24\u0a4b\u0a02 \u0a15\u0a30 \u0a38\u0a15\u0a26\u0a3e \u0a39\u0a48\u0964 +Path\ of\ service\ endpoint\ relative\ to\ the\ context\ URL\ (e.g.\ http\://server.net/sensorhub)=\u0a38\u0a70\u0a26\u0a30\u0a2d URL (\u0a09\u0a26\u0a3e\u0a39\u0a30\u0a28 \u0a32\u0a08 http://server.net/sensorhub) \u0a26\u0a47 \u0a05\u0a28\u0a41\u0a38\u0a3e\u0a30\u0a40 \u0a38\u0a47\u0a35\u0a3e \u0a05\u0a70\u0a24\u0a2e \u0a2c\u0a3f\u0a70\u0a26\u0a42 \u0a26\u0a3e \u0a2e\u0a3e\u0a30\u0a17 +Path\ to\ a\ key\ store\ containing\ the\ certificate\ and\ keypair\ that\ this\ server\ will\ present\ to\ clients\ when\ accessed\ over\ HTTPS.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ "javax.net.ssl.keyStore"\ system\ property.\ This\ value\ can\ use\ variable\ expansion\ expressions\ of\ the\ form\ "$${name}"\ (for\ environment\ variables\ and\ system\ properties)\ or\ "$${file;/path/to/file}"\ (for\ secret\ file\ contents).=\u0a2a\u0a4d\u0a30\u0a2e\u0a3e\u0a23-\u0a2a\u0a71\u0a24\u0a30 \u0a05\u0a24\u0a47 \u0a15\u0a40-\u0a2a\u0a47\u0a05\u0a30 \u0a35\u0a3e\u0a32\u0a47 \u0a15\u0a41\u0a70\u0a1c\u0a40 \u0a38\u0a1f\u0a4b\u0a30 \u0a26\u0a3e \u0a2e\u0a3e\u0a30\u0a17 \u0a1c\u0a4b \u0a15\u0a3f \u0a07\u0a39 \u0a38\u0a30\u0a35\u0a30 \u0a17\u0a3e\u0a39\u0a15\u0a3e\u0a02 \u0a28\u0a42\u0a70 \u0a2a\u0a47\u0a38\u0a3c \u0a15\u0a30\u0a47\u0a17\u0a3e \u0a1c\u0a26\u0a4b\u0a02 HTTPS \u0a09\u0a71\u0a24\u0a47 \u0a2a\u0a39\u0a41\u0a70\u0a1a \u0a15\u0a40\u0a24\u0a40 \u0a1c\u0a3e\u0a02\u0a26\u0a40 \u0a39\u0a48\u0964 \u0a1c\u0a47\u0a15\u0a30 \u0a07\u0a39 \u0a2e\u0a41\u0a71\u0a32 \u0a16\u0a3e\u0a32\u0a40 \u0a39\u0a48, \u0a24\u0a3e\u0a02 "javax.net.ssl.keyStore" \u0a38\u0a3f\u0a38\u0a1f\u0a2e \u0a35\u0a3f\u0a38\u0a3c\u0a47\u0a38\u0a3c\u0a24\u0a3e \u0a26\u0a47 \u0a2e\u0a41\u0a71\u0a32 \u0a26\u0a40 \u0a35\u0a30\u0a24\u0a4b\u0a02 \u0a15\u0a30\u0a28 \u0a32\u0a08 \u0a21\u0a3f\u0a2b\u0a4c\u0a32\u0a1f \u0a39\u0a4b\u0a35\u0a47\u0a17\u0a3e\u0964 \u0a07\u0a39 \u0a2e\u0a41\u0a71\u0a32 "$${name}" (\u0a35\u0a3e\u0a24\u0a3e\u0a35\u0a30\u0a23 \u0a35\u0a47\u0a30\u0a40\u0a0f\u0a2c\u0a32 \u0a05\u0a24\u0a47 \u0a38\u0a3f\u0a38\u0a1f\u0a2e \u0a35\u0a3f\u0a38\u0a3c\u0a47\u0a38\u0a3c\u0a24\u0a3e\u0a35\u0a3e\u0a02 \u0a32\u0a08) \u0a1c\u0a3e\u0a02 "$${file;/path/to/file}" (\u0a17\u0a41\u0a2a\u0a24 \u0a2b\u0a3c\u0a3e\u0a08\u0a32 \u0a38\u0a2e\u0a71\u0a17\u0a30\u0a40 \u0a32\u0a08) \u0a26\u0a47 \u0a35\u0a47\u0a30\u0a40\u0a0f\u0a2c\u0a32 \u0a10\u0a15\u0a38\u0a2a\u0a48\u0a02\u0a38\u0a3c\u0a28 \u0a38\u0a2e\u0a40\u0a15\u0a30\u0a28\u0a3e\u0a02 \u0a26\u0a40 \u0a35\u0a30\u0a24\u0a4b\u0a02 \u0a15\u0a30 \u0a38\u0a15\u0a26\u0a3e \u0a39\u0a48\u0964 +Path\ to\ database\ file=\u0a21\u0a3e\u0a1f\u0a3e\u0a2c\u0a47\u0a38 \u0a2b\u0a3e\u0a08\u0a32 \u0a26\u0a3e \u0a2e\u0a3e\u0a30\u0a17 +Path\ to\ external\ config\ file\ (in\ Jetty\ IOC\ XML\ format)=\u0a2c\u0a3e\u0a39\u0a30\u0a40 \u0a38\u0a70\u0a30\u0a1a\u0a28\u0a3e \u0a2b\u0a3e\u0a08\u0a32 \u0a26\u0a3e \u0a2e\u0a3e\u0a30\u0a17 (\u0a1c\u0a47\u0a1f\u0a40 IOC XML \u0a2b\u0a3e\u0a30\u0a2e\u0a48\u0a1f \u0a35\u0a3f\u0a71\u0a1a) +Path\ to\ the\ TLS\ trust\ store\ that\ is\ used\ when\ client\ authentication\ is\ required.\ Ignored\ if\ client\ certificate\ authentication\ is\ not\ used.\ Certificates\ in\ this\ file\ designate\ the\ signing\ authorities\ for\ client\ certificates\ that\ will\ be\ trusted.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ "javax.net.ssl.trustStore"\ system\ property.\ This\ value\ can\ use\ variable\ expansion\ expressions\ of\ the\ form\ "$${name}"\ (for\ environment\ variables\ and\ system\ properties)\ or\ "$${file;/path/to/file}"\ (for\ secret\ file\ contents).=TLS \u0a1f\u0a30\u0a71\u0a38\u0a1f \u0a38\u0a1f\u0a4b\u0a30 \u0a26\u0a3e \u0a2e\u0a3e\u0a30\u0a17 \u0a1c\u0a4b \u0a15\u0a32\u0a3e\u0a07\u0a70\u0a1f \u0a2a\u0a4d\u0a30\u0a2e\u0a3e\u0a23\u0a40\u0a15\u0a30\u0a28 \u0a26\u0a40 \u0a32\u0a4b\u0a5c \u0a39\u0a4b\u0a23 ''\u0a24\u0a47 \u0a35\u0a30\u0a24\u0a3f\u0a06 \u0a1c\u0a3e\u0a02\u0a26\u0a3e \u0a39\u0a48\u0964 \u0a05\u0a23\u0a21\u0a3f\u0a71\u0a20 \u0a15\u0a40\u0a24\u0a3e \u0a1c\u0a3e\u0a02\u0a26\u0a3e \u0a39\u0a48 \u0a1c\u0a47\u0a15\u0a30 \u0a15\u0a32\u0a3e\u0a07\u0a70\u0a1f \u0a38\u0a30\u0a1f\u0a40\u0a2b\u0a3f\u0a15\u0a47\u0a1f \u0a2a\u0a4d\u0a30\u0a2e\u0a3e\u0a23\u0a3f\u0a15\u0a24\u0a3e \u0a26\u0a40 \u0a35\u0a30\u0a24\u0a4b\u0a02 \u0a28\u0a39\u0a40\u0a02 \u0a15\u0a40\u0a24\u0a40 \u0a1c\u0a3e\u0a02\u0a26\u0a40 \u0a39\u0a48\u0964 \u0a07\u0a38 \u0a2b\u0a3e\u0a08\u0a32 \u0a35\u0a3f\u0a71\u0a1a \u0a2a\u0a4d\u0a30\u0a2e\u0a3e\u0a23-\u0a2a\u0a71\u0a24\u0a30 \u0a17\u0a3e\u0a39\u0a15 \u0a2a\u0a4d\u0a30\u0a2e\u0a3e\u0a23-\u0a2a\u0a71\u0a24\u0a30\u0a3e\u0a02 \u0a32\u0a08 \u0a39\u0a38\u0a24\u0a3e\u0a16\u0a30 \u0a15\u0a30\u0a28 \u0a35\u0a3e\u0a32\u0a47 \u0a05\u0a27\u0a3f\u0a15\u0a3e\u0a30\u0a40\u0a06\u0a02 \u0a28\u0a42\u0a70 \u0a2e\u0a28\u0a4b\u0a28\u0a40\u0a24 \u0a15\u0a30\u0a26\u0a47 \u0a39\u0a28 \u0a1c\u0a4b \u0a2d\u0a30\u0a4b\u0a38\u0a47\u0a2f\u0a4b\u0a17 \u0a39\u0a4b\u0a23\u0a17\u0a47\u0964 \u0a1c\u0a47\u0a15\u0a30 \u0a07\u0a39 \u0a2e\u0a41\u0a71\u0a32 \u0a16\u0a3e\u0a32\u0a40 \u0a39\u0a48, \u0a24\u0a3e\u0a02 "javax.net.ssl.trustStore" \u0a38\u0a3f\u0a38\u0a1f\u0a2e \u0a35\u0a3f\u0a38\u0a3c\u0a47\u0a38\u0a3c\u0a24\u0a3e \u0a26\u0a47 \u0a2e\u0a41\u0a71\u0a32 \u0a26\u0a40 \u0a35\u0a30\u0a24\u0a4b\u0a02 \u0a15\u0a30\u0a28 \u0a32\u0a08 \u0a21\u0a3f\u0a2b\u0a4c\u0a32\u0a1f \u0a39\u0a4b\u0a35\u0a47\u0a17\u0a3e\u0964 \u0a07\u0a39 \u0a2e\u0a41\u0a71\u0a32 "$${name}" (\u0a35\u0a3e\u0a24\u0a3e\u0a35\u0a30\u0a23 \u0a35\u0a47\u0a30\u0a40\u0a0f\u0a2c\u0a32 \u0a05\u0a24\u0a47 \u0a38\u0a3f\u0a38\u0a1f\u0a2e \u0a35\u0a3f\u0a38\u0a3c\u0a47\u0a38\u0a3c\u0a24\u0a3e\u0a35\u0a3e\u0a02 \u0a32\u0a08) \u0a1c\u0a3e\u0a02 "$${file;/path/to/file}" (\u0a17\u0a41\u0a2a\u0a24 \u0a2b\u0a3c\u0a3e\u0a08\u0a32 \u0a38\u0a2e\u0a71\u0a17\u0a30\u0a40 \u0a32\u0a08) \u0a26\u0a47 \u0a35\u0a47\u0a30\u0a40\u0a0f\u0a2c\u0a32 \u0a10\u0a15\u0a38\u0a2a\u0a48\u0a02\u0a38\u0a3c\u0a28 \u0a38\u0a2e\u0a40\u0a15\u0a30\u0a28\u0a3e\u0a02 \u0a26\u0a40 \u0a35\u0a30\u0a24\u0a4b\u0a02 \u0a15\u0a30 \u0a38\u0a15\u0a26\u0a3e \u0a39\u0a48\u0964 +Port\ number\ to\ connect\ to\ on\ remote\ host\ (0\ to\ automatically\ select\ a\ port)=\u0a30\u0a3f\u0a2e\u0a4b\u0a1f \u0a39\u0a4b\u0a38\u0a1f ''\u0a24\u0a47 \u0a15\u0a28\u0a48\u0a15\u0a1f \u0a15\u0a30\u0a28 \u0a32\u0a08 \u0a2a\u0a4b\u0a30\u0a1f \u0a28\u0a70\u0a2c\u0a30 (\u0a07\u0a71\u0a15 \u0a2a\u0a4b\u0a30\u0a1f \u0a28\u0a42\u0a70 \u0a06\u0a2a\u0a23\u0a47 \u0a06\u0a2a \u0a1a\u0a41\u0a23\u0a28 \u0a32\u0a08 0) +SOS\ Endpoint=SOS \u0a05\u0a70\u0a24\u0a2e \u0a2c\u0a3f\u0a70\u0a26\u0a42 +SOS\ endpoint\ to\ fetch\ data\ from=\u0a24\u0a4b\u0a02 \u0a21\u0a3e\u0a1f\u0a3e \u0a2a\u0a4d\u0a30\u0a3e\u0a2a\u0a24 \u0a15\u0a30\u0a28 \u0a32\u0a08 SOS \u0a10\u0a02\u0a21\u0a2a\u0a41\u0a06\u0a07\u0a70\u0a1f +SOS\ endpoint\ where\ the\ requests\ are\ sent=SOS \u0a05\u0a70\u0a24\u0a2e \u0a2c\u0a3f\u0a70\u0a26\u0a42 \u0a1c\u0a3f\u0a71\u0a25\u0a47 \u0a2c\u0a47\u0a28\u0a24\u0a40\u0a06\u0a02 \u0a2d\u0a47\u0a1c\u0a40\u0a06\u0a02 \u0a1c\u0a3e\u0a02\u0a26\u0a40\u0a06\u0a02 \u0a39\u0a28 +SPS\ Endpoint=SPS \u0a05\u0a70\u0a24\u0a2e \u0a2c\u0a3f\u0a70\u0a26\u0a42 +SPS\ endpoint\ to\ send\ commands\ to=\u0a28\u0a42\u0a70 \u0a15\u0a2e\u0a3e\u0a02\u0a21\u0a3e\u0a02 \u0a2d\u0a47\u0a1c\u0a23 \u0a32\u0a08 SPS \u0a10\u0a02\u0a21\u0a2a\u0a41\u0a06\u0a07\u0a70\u0a1f +Security\ related\ options=\u0a38\u0a41\u0a30\u0a71\u0a16\u0a3f\u0a06 \u0a38\u0a70\u0a2c\u0a70\u0a27\u0a40 \u0a35\u0a3f\u0a15\u0a32\u0a2a +Sensor\ UID=\u0a38\u0a48\u0a02\u0a38\u0a30 UID +Set\ if\ WebSocket\ protocol\ should\ be\ used\ to\ get\ streaming\ data\ from\ SOS=\u0a38\u0a48\u0a71\u0a1f \u0a15\u0a30\u0a4b \u0a15\u0a3f \u0a15\u0a40 SOS \u0a24\u0a4b\u0a02 \u0a38\u0a1f\u0a4d\u0a30\u0a40\u0a2e\u0a3f\u0a70\u0a17 \u0a21\u0a3e\u0a1f\u0a3e \u0a2a\u0a4d\u0a30\u0a3e\u0a2a\u0a24 \u0a15\u0a30\u0a28 \u0a32\u0a08 WebSocket \u0a2a\u0a4d\u0a30\u0a4b\u0a1f\u0a4b\u0a15\u0a4b\u0a32 \u0a26\u0a40 \u0a35\u0a30\u0a24\u0a4b\u0a02 \u0a15\u0a40\u0a24\u0a40 \u0a1c\u0a3e\u0a23\u0a40 \u0a1a\u0a3e\u0a39\u0a40\u0a26\u0a40 \u0a39\u0a48 +Set\ if\ offering\ is\ enabled,\ unset\ if\ disabled=\u0a38\u0a48\u0a71\u0a1f \u0a15\u0a30\u0a4b \u0a1c\u0a47\u0a15\u0a30 \u0a2a\u0a47\u0a38\u0a3c\u0a15\u0a38\u0a3c \u0a38\u0a2e\u0a30\u0a25\u0a3f\u0a24 \u0a39\u0a48, \u0a1c\u0a47\u0a15\u0a30 \u0a05\u0a38\u0a2e\u0a30\u0a71\u0a25 \u0a39\u0a48 \u0a24\u0a3e\u0a02 \u0a38\u0a48\u0a71\u0a1f \u0a28\u0a3e \u0a15\u0a30\u0a4b +Set\ if\ websockets\ protocol\ should\ be\ used\ to\ send\ commands\ to\ SPS=\u0a38\u0a48\u0a71\u0a1f \u0a15\u0a30\u0a4b \u0a15\u0a3f \u0a15\u0a40 \u0a35\u0a48\u0a2c\u0a38\u0a3e\u0a15\u0a47\u0a1f \u0a2a\u0a4d\u0a30\u0a4b\u0a1f\u0a4b\u0a15\u0a4b\u0a32 SPS \u0a28\u0a42\u0a70 \u0a15\u0a2e\u0a3e\u0a02\u0a21\u0a3e\u0a02 \u0a2d\u0a47\u0a1c\u0a23 \u0a32\u0a08 \u0a35\u0a30\u0a24\u0a3f\u0a06 \u0a1c\u0a3e\u0a23\u0a3e \u0a1a\u0a3e\u0a39\u0a40\u0a26\u0a3e \u0a39\u0a48 +Set\ to\ compact\ the\ database\ file\ when\ the\ database\ module\ is\ stopped\ or\ restarted=\u0a1c\u0a26\u0a4b\u0a02 \u0a21\u0a47\u0a1f\u0a3e\u0a2c\u0a47\u0a38 \u0a2e\u0a4b\u0a21\u0a40\u0a0a\u0a32 \u0a28\u0a42\u0a70 \u0a30\u0a4b\u0a15\u0a3f\u0a06 \u0a1c\u0a3e\u0a02 \u0a2e\u0a41\u0a5c \u0a1a\u0a3e\u0a32\u0a42 \u0a15\u0a40\u0a24\u0a3e \u0a1c\u0a3e\u0a02\u0a26\u0a3e \u0a39\u0a48 \u0a24\u0a3e\u0a02 \u0a21\u0a47\u0a1f\u0a3e\u0a2c\u0a47\u0a38 \u0a2b\u0a3e\u0a08\u0a32 \u0a28\u0a42\u0a70 \u0a38\u0a70\u0a15\u0a41\u0a1a\u0a3f\u0a24 \u0a15\u0a30\u0a28 \u0a32\u0a08 \u0a38\u0a48\u0a71\u0a1f \u0a15\u0a30\u0a4b +Set\ to\ compress\ underlying\ file\ storage=\u0a05\u0a70\u0a21\u0a30\u0a32\u0a3e\u0a08\u0a70\u0a17 \u0a2b\u0a3e\u0a08\u0a32 \u0a38\u0a1f\u0a4b\u0a30\u0a47\u0a1c \u0a28\u0a42\u0a70 \u0a38\u0a70\u0a15\u0a41\u0a1a\u0a3f\u0a24 \u0a15\u0a30\u0a28 \u0a32\u0a08 \u0a38\u0a48\u0a71\u0a1f \u0a15\u0a30\u0a4b +Set\ to\ display\ MVStore\ debug\ info\ when\ database\ is\ closed\ (only\ if\ DEBUG\ log\ is\ also\ enabled)=\u0a21\u0a3e\u0a1f\u0a3e\u0a2c\u0a47\u0a38 \u0a2c\u0a70\u0a26 \u0a39\u0a4b\u0a23 ''\u0a24\u0a47 MVStore \u0a21\u0a40\u0a2c\u0a71\u0a17 \u0a1c\u0a3e\u0a23\u0a15\u0a3e\u0a30\u0a40 \u0a28\u0a42\u0a70 \u0a2a\u0a4d\u0a30\u0a26\u0a30\u0a38\u0a3c\u0a3f\u0a24 \u0a15\u0a30\u0a28 \u0a32\u0a08 \u0a38\u0a48\u0a71\u0a1f \u0a15\u0a30\u0a4b (\u0a15\u0a47\u0a35\u0a32 \u0a24\u0a3e\u0a02 \u0a1c\u0a47\u0a15\u0a30 DEBUG \u0a32\u0a4c\u0a17 \u0a35\u0a40 \u0a38\u0a2e\u0a30\u0a71\u0a25 \u0a39\u0a4b\u0a35\u0a47) +Set\ to\ enable\ spatial\ indexing\ of\ individual\ observations\ sampling\ locations\ (when\ provided)=\u0a35\u0a3f\u0a05\u0a15\u0a24\u0a40\u0a17\u0a24 \u0a28\u0a3f\u0a30\u0a40\u0a16\u0a23\u0a3e\u0a02 \u0a26\u0a47 \u0a28\u0a2e\u0a42\u0a28\u0a47 \u0a26\u0a47 \u0a38\u0a25\u0a3e\u0a28\u0a3e\u0a02 \u0a26\u0a40 \u0a38\u0a25\u0a3e\u0a28\u0a3f\u0a15 \u0a38\u0a42\u0a1a\u0a15\u0a3e\u0a02\u0a15 \u0a28\u0a42\u0a70 \u0a38\u0a2e\u0a30\u0a71\u0a25 \u0a2c\u0a23\u0a3e\u0a09\u0a23 \u0a32\u0a08 \u0a38\u0a48\u0a71\u0a1f \u0a15\u0a30\u0a4b (\u0a1c\u0a26\u0a4b\u0a02 \u0a2a\u0a4d\u0a30\u0a26\u0a3e\u0a28 \u0a15\u0a40\u0a24\u0a3e \u0a17\u0a3f\u0a06) +Set\ to\ open\ the\ database\ as\ read-only=\u0a21\u0a3e\u0a1f\u0a3e\u0a2c\u0a47\u0a38 \u0a28\u0a42\u0a70 \u0a38\u0a3f\u0a30\u0a2b\u0a3c \u0a2a\u0a5c\u0a4d\u0a39\u0a28 \u0a32\u0a08 \u0a16\u0a4b\u0a32\u0a4d\u0a39\u0a23 \u0a32\u0a08 \u0a38\u0a48\u0a71\u0a1f \u0a15\u0a30\u0a4b +Set\ to\ true\ to\ enable\ transactional\ operation\ support=\u0a1f\u0a4d\u0a30\u0a3e\u0a02\u0a1c\u0a48\u0a15\u0a38\u0a3c\u0a28\u0a32 \u0a13\u0a2a\u0a30\u0a47\u0a38\u0a3c\u0a28 \u0a38\u0a2e\u0a30\u0a25\u0a28 \u0a28\u0a42\u0a70 \u0a38\u0a2e\u0a30\u0a71\u0a25 \u0a15\u0a30\u0a28 \u0a32\u0a08 \u0a38\u0a39\u0a40 ''\u0a24\u0a47 \u0a38\u0a48\u0a71\u0a1f \u0a15\u0a30\u0a4b +Size\ of\ the\ auto-commit\ write\ buffer,\ in\ KB=\u0a06\u0a1f\u0a4b-\u0a15\u0a2e\u0a3f\u0a1f \u0a30\u0a3e\u0a08\u0a1f \u0a2c\u0a2b\u0a30 \u0a26\u0a3e \u0a06\u0a15\u0a3e\u0a30, KB \u0a35\u0a3f\u0a71\u0a1a +TCP\ port\ where\ server\ will\ listen\ for\ secure\ HTTP\ (HTTPS)\ connections\ (use\ 0\ to\ disable\ HTTPS).=TCP \u0a2a\u0a4b\u0a30\u0a1f \u0a1c\u0a3f\u0a71\u0a25\u0a47 \u0a38\u0a30\u0a35\u0a30 \u0a38\u0a41\u0a30\u0a71\u0a16\u0a3f\u0a05\u0a24 HTTP (HTTPS) \u0a15\u0a28\u0a48\u0a15\u0a38\u0a3c\u0a28\u0a3e\u0a02 \u0a32\u0a08 \u0a38\u0a41\u0a23\u0a47\u0a17\u0a3e (HTTPS \u0a28\u0a42\u0a70 \u0a05\u0a2f\u0a4b\u0a17 \u0a15\u0a30\u0a28 \u0a32\u0a08 0 \u0a26\u0a40 \u0a35\u0a30\u0a24\u0a4b\u0a02 \u0a15\u0a30\u0a4b)\u0964 +TCP\ port\ where\ server\ will\ listen\ for\ unsecure\ HTTP\ connections\ (use\ 0\ to\ disable\ HTTP).=TCP \u0a2a\u0a4b\u0a30\u0a1f \u0a1c\u0a3f\u0a71\u0a25\u0a47 \u0a38\u0a30\u0a35\u0a30 \u0a05\u0a38\u0a41\u0a30\u0a71\u0a16\u0a3f\u0a05\u0a24 HTTP \u0a15\u0a28\u0a48\u0a15\u0a38\u0a3c\u0a28\u0a3e\u0a02 \u0a32\u0a08 \u0a38\u0a41\u0a23\u0a47\u0a17\u0a3e (HTTP \u0a28\u0a42\u0a70 \u0a05\u0a2f\u0a4b\u0a17 \u0a15\u0a30\u0a28 \u0a32\u0a08 0 \u0a26\u0a40 \u0a35\u0a30\u0a24\u0a4b\u0a02 \u0a15\u0a30\u0a4b)\u0964 +Time-out\ after\ which\ real-time\ requests\ are\ disabled\ if\ no\ more\ measurements\ are\ received\ (in\ seconds).\ Real-time\ is\ reactivated\ as\ soon\ as\ new\ records\ start\ being\ received\ again=\u0a1f\u0a3e\u0a08\u0a2e-\u0a06\u0a0a\u0a1f \u0a1c\u0a3f\u0a38 \u0a24\u0a4b\u0a02 \u0a2c\u0a3e\u0a05\u0a26 \u0a30\u0a40\u0a05\u0a32-\u0a1f\u0a3e\u0a08\u0a2e \u0a2c\u0a47\u0a28\u0a24\u0a40\u0a06\u0a02 \u0a05\u0a38\u0a2e\u0a30\u0a71\u0a25 \u0a39\u0a4b \u0a1c\u0a3e\u0a02\u0a26\u0a40\u0a06\u0a02 \u0a39\u0a28 \u0a1c\u0a47\u0a15\u0a30 \u0a15\u0a4b\u0a08 \u0a39\u0a4b\u0a30 \u0a2e\u0a3e\u0a2a \u0a2a\u0a4d\u0a30\u0a3e\u0a2a\u0a24 \u0a28\u0a39\u0a40\u0a02 \u0a39\u0a41\u0a70\u0a26\u0a47 (\u0a38\u0a15\u0a3f\u0a70\u0a1f \u0a35\u0a3f\u0a71\u0a1a)\u0964 \u0a1c\u0a3f\u0a35\u0a47\u0a02 \u0a39\u0a40 \u0a28\u0a35\u0a47\u0a02 \u0a30\u0a3f\u0a15\u0a3e\u0a30\u0a21 \u0a26\u0a41\u0a2c\u0a3e\u0a30\u0a3e \u0a2a\u0a4d\u0a30\u0a3e\u0a2a\u0a24 \u0a39\u0a4b\u0a23\u0a47 \u0a38\u0a3c\u0a41\u0a30\u0a42 \u0a39\u0a41\u0a70\u0a26\u0a47 \u0a39\u0a28 \u0a30\u0a40\u0a05\u0a32-\u0a1f\u0a3e\u0a08\u0a2e \u0a2e\u0a41\u0a5c \u0a38\u0a30\u0a17\u0a30\u0a2e \u0a39\u0a4b \u0a1c\u0a3e\u0a02\u0a26\u0a3e \u0a39\u0a48 +Time-out\ period\ after\ which\ a\ template\ ID\ reserved\ using\ InsertResultTemplate\ will\ expire\ if\ not\ used\ in\ InsertResult\ requests\ (in\ seconds)=\u0a1f\u0a3e\u0a08\u0a2e-\u0a06\u0a0a\u0a1f \u0a2a\u0a40\u0a30\u0a40\u0a05\u0a21 \u0a1c\u0a3f\u0a38 \u0a24\u0a4b\u0a02 \u0a2c\u0a3e\u0a05\u0a26 InsertResultTemplate \u0a26\u0a40 \u0a35\u0a30\u0a24\u0a4b\u0a02 \u0a15\u0a30\u0a15\u0a47 \u0a30\u0a3e\u0a16\u0a35\u0a40\u0a02 \u0a15\u0a40\u0a24\u0a40 \u0a1f\u0a48\u0a2e\u0a2a\u0a32\u0a47\u0a1f ID \u0a26\u0a40 \u0a2e\u0a3f\u0a06\u0a26 \u0a2a\u0a41\u0a71\u0a17 \u0a1c\u0a3e\u0a35\u0a47\u0a17\u0a40 \u0a1c\u0a47\u0a15\u0a30 InsertResult \u0a2c\u0a47\u0a28\u0a24\u0a40\u0a06\u0a02 (\u0a38\u0a15\u0a3f\u0a70\u0a1f\u0a3e\u0a02 \u0a35\u0a3f\u0a71\u0a1a) \u0a35\u0a3f\u0a71\u0a1a \u0a28\u0a39\u0a40\u0a02 \u0a35\u0a30\u0a24\u0a40 \u0a1c\u0a3e\u0a02\u0a26\u0a40 \u0a39\u0a48\u0964 +Timeout\ after\ which\ data\ is\ released\ to\ the\ caller\ if\ at\ least\ one\ byte\ was\ received\ (in\ ms)=\u0a38\u0a2e\u0a3e\u0a02 \u0a38\u0a2e\u0a3e\u0a2a\u0a24 \u0a1c\u0a3f\u0a38 \u0a24\u0a4b\u0a02 \u0a2c\u0a3e\u0a05\u0a26 \u0a15\u0a3e\u0a32\u0a30 \u0a28\u0a42\u0a70 \u0a21\u0a3e\u0a1f\u0a3e \u0a1c\u0a3e\u0a30\u0a40 \u0a15\u0a40\u0a24\u0a3e \u0a1c\u0a3e\u0a02\u0a26\u0a3e \u0a39\u0a48 \u0a1c\u0a47\u0a15\u0a30 \u0a18\u0a71\u0a1f\u0a4b-\u0a18\u0a71\u0a1f \u0a07\u0a71\u0a15 \u0a2c\u0a3e\u0a08\u0a1f \u0a2a\u0a4d\u0a30\u0a3e\u0a2a\u0a24 \u0a39\u0a4b\u0a08 \u0a38\u0a40 (ms \u0a35\u0a3f\u0a71\u0a1a) +URI\ Prefix\ Map=URI \u0a2a\u0a4d\u0a30\u0a40\u0a2b\u0a3f\u0a15\u0a38 \u0a28\u0a15\u0a38\u0a3c\u0a3e +Unique\ ID\ (full\ URN\ or\ only\ suffix)\ to\ use\ for\ the\ sensor\ system\ or\ 'auto'\ to\ use\ the\ UUID\ randomly\ generated\ the\ first\ time\ the\ module\ is\ initialized=\u0a38\u0a70\u0a35\u0a47\u0a26\u0a15 \u0a38\u0a3f\u0a38\u0a1f\u0a2e \u0a32\u0a08 \u0a35\u0a30\u0a24\u0a23 \u0a32\u0a08 \u0a35\u0a3f\u0a32\u0a71\u0a16\u0a23 ID (\u0a2a\u0a42\u0a30\u0a3e URN \u0a1c\u0a3e\u0a02 \u0a38\u0a3f\u0a30\u0a2b\u0a3c \u0a2a\u0a3f\u0a1b\u0a47\u0a24\u0a30) \u0a1c\u0a3e\u0a02 \u0a2a\u0a39\u0a3f\u0a32\u0a40 \u0a35\u0a3e\u0a30 \u0a2e\u0a4b\u0a21\u0a40\u0a0a\u0a32 \u0a38\u0a3c\u0a41\u0a30\u0a42 \u0a39\u0a4b\u0a23 ''\u0a24\u0a47 \u0a2c\u0a47\u0a24\u0a30\u0a24\u0a40\u0a2c\u0a47 \u0a24\u0a4c\u0a30 ''\u0a24\u0a47 \u0a24\u0a3f\u0a06\u0a30 UUID \u0a26\u0a40 \u0a35\u0a30\u0a24\u0a4b\u0a02 \u0a15\u0a30\u0a28 \u0a32\u0a08 ''\u0a06\u0a1f\u0a4b'' +Unique\ ID\ of\ a\ system\ that\ this\ configuration\ applies\ to.\nCan\ include\ a\ trailing\ wildcard\ '*'\ to\ match\ several\ systems\ at\ once.=\u0a38\u0a3f\u0a38\u0a1f\u0a2e \u0a26\u0a40 \u0a35\u0a3f\u0a32\u0a71\u0a16\u0a23 ID \u0a1c\u0a3f\u0a38 ''\u0a24\u0a47 \u0a07\u0a39 \u0a38\u0a70\u0a30\u0a1a\u0a28\u0a3e \u0a32\u0a3e\u0a17\u0a42 \u0a39\u0a41\u0a70\u0a26\u0a40 \u0a39\u0a48\u0964\n\u0a07\u0a71\u0a15 \u0a35\u0a3e\u0a30 \u0a35\u0a3f\u0a71\u0a1a \u0a15\u0a08 \u0a38\u0a3f\u0a38\u0a1f\u0a2e\u0a3e\u0a02 \u0a28\u0a3e\u0a32 \u0a2e\u0a47\u0a32 \u0a15\u0a30\u0a28 \u0a32\u0a08 \u0a07\u0a71\u0a15 \u0a2a\u0a3f\u0a1b\u0a32\u0a3e \u0a35\u0a3e\u0a08\u0a32\u0a21\u0a15\u0a3e\u0a30\u0a21 ''*'' \u0a38\u0a3c\u0a3e\u0a2e\u0a32 \u0a15\u0a30 \u0a38\u0a15\u0a26\u0a3e \u0a39\u0a48\u0964 +Unique\ ID\ of\ sensor\ to\ connect\ to\ on\ SOS\ and\ SPS\ servers=SOS \u0a05\u0a24\u0a47 SPS \u0a38\u0a30\u0a35\u0a30\u0a3e\u0a02 ''\u0a24\u0a47 \u0a15\u0a28\u0a48\u0a15\u0a1f \u0a15\u0a30\u0a28 \u0a32\u0a08 \u0a38\u0a48\u0a02\u0a38\u0a30 \u0a26\u0a40 \u0a35\u0a3f\u0a32\u0a71\u0a16\u0a23 ID +Unique\ ID\ of\ system\ that\ this\ configuration\ applies\ to.\nCan\ include\ a\ trailing\ wildcard\ '*'\ to\ match\ several\ systems\ at\ once.=\u0a38\u0a3f\u0a38\u0a1f\u0a2e \u0a26\u0a40 \u0a35\u0a3f\u0a32\u0a71\u0a16\u0a23 ID \u0a1c\u0a3f\u0a38 ''\u0a24\u0a47 \u0a07\u0a39 \u0a38\u0a70\u0a30\u0a1a\u0a28\u0a3e \u0a32\u0a3e\u0a17\u0a42 \u0a39\u0a41\u0a70\u0a26\u0a40 \u0a39\u0a48\u0964\n\u0a07\u0a71\u0a15 \u0a35\u0a3e\u0a30 \u0a35\u0a3f\u0a71\u0a1a \u0a15\u0a08 \u0a38\u0a3f\u0a38\u0a1f\u0a2e\u0a3e\u0a02 \u0a28\u0a3e\u0a32 \u0a2e\u0a47\u0a32 \u0a15\u0a30\u0a28 \u0a32\u0a08 \u0a07\u0a71\u0a15 \u0a2a\u0a3f\u0a1b\u0a32\u0a3e \u0a35\u0a3e\u0a08\u0a32\u0a21\u0a15\u0a3e\u0a30\u0a21 ''*'' \u0a38\u0a3c\u0a3e\u0a2e\u0a32 \u0a15\u0a30 \u0a38\u0a15\u0a26\u0a3e \u0a39\u0a48\u0964 +Use\ WebSockets\ for\ SOS=SOS \u0a32\u0a08 WebSockets \u0a26\u0a40 \u0a35\u0a30\u0a24\u0a4b\u0a02 \u0a15\u0a30\u0a4b +Use\ WebSockets\ for\ SPS=SPS \u0a32\u0a08 WebSockets \u0a26\u0a40 \u0a35\u0a30\u0a24\u0a4b\u0a02 \u0a15\u0a30\u0a4b + +Node\ ID=\u0a28\u0a4b\u0a21 \u0a06\u0a08.\u0a21\u0a40 +Stats\ Frequency\ (min)=\u0a05\u0a70\u0a15\u0a5c\u0a3f\u0a06\u0a02 \u0a26\u0a40 \u0a2c\u0a3e\u0a30\u0a70\u0a2c\u0a3e\u0a30\u0a24\u0a3e (\u0a2e\u0a3f\u0a70\u0a1f) +Database\ URL=\u0a21\u0a3e\u0a1f\u0a3e\u0a2c\u0a47\u0a38 URL +Database\ Name=\u0a21\u0a3e\u0a1f\u0a3e\u0a2c\u0a47\u0a38 \u0a26\u0a3e \u0a28\u0a3e\u0a2e +ID\ Generator=ID \u0a1c\u0a47\u0a28\u0a30\u0a47\u0a1f\u0a30 +Database\ Number=\u0a21\u0a3e\u0a1f\u0a3e\u0a2c\u0a47\u0a38 \u0a28\u0a70\u0a2c\u0a30 +Remote\ Host=\u0a30\u0a3f\u0a2e\u0a4b\u0a1f \u0a39\u0a4b\u0a38\u0a1f +Remote\ Port=\u0a30\u0a3f\u0a2e\u0a4b\u0a1f \u0a2a\u0a4b\u0a30\u0a1f +Lane\ Width\ (m)=\u0a32\u0a47\u0a28 \u0a26\u0a40 \u0a1a\u0a4c\u0a5c\u0a3e\u0a08 (\u0a2e\u0a40) +Enable\ EML\ Analysis=EML \u0a35\u0a3f\u0a38\u0a3c\u0a32\u0a47\u0a38\u0a3c\u0a23 \u0a28\u0a42\u0a70 \u0a38\u0a2e\u0a30\u0a71\u0a25 \u0a2c\u0a23\u0a3e\u0a13 +Is\ Collimated=\u0a15\u0a4b\u0a32\u0a40\u0a2e\u0a47\u0a1f\u0a3f\u0a21 \u0a39\u0a48 +Stream\ Path=\u0a38\u0a1f\u0a4d\u0a30\u0a40\u0a2e \u0a2e\u0a3e\u0a30\u0a17 +Lane\ Options\ Config=\u0a32\u0a47\u0a28 \u0a35\u0a3f\u0a15\u0a32\u0a2a \u0a38\u0a70\u0a30\u0a1a\u0a28\u0a3e diff --git a/sensorhub-webui-core/src/main/resources/org/sensorhub/ui/i18n/messages_pt.properties b/sensorhub-webui-core/src/main/resources/org/sensorhub/ui/i18n/messages_pt.properties new file mode 100644 index 0000000000..93ee0b14d1 --- /dev/null +++ b/sensorhub-webui-core/src/main/resources/org/sensorhub/ui/i18n/messages_pt.properties @@ -0,0 +1,543 @@ +app.title=OpenSensor Hub +tab.sensors=Sensores +tab.databases=Bancos de Dados +tab.processing=Processamento +tab.services=Servi\u00e7os +tab.clients=Clientes +tab.network=Rede +tab.security=Seguran\u00e7a +action.shutdown=Desligar +action.logout=Sair +action.save=Salvar +action.addModule=Adicionar M\u00f3dulo +action.addSubmodule=Adicionar Subm\u00f3dulo +action.removeModule=Remover M\u00f3dulo +action.removeSubmodule=Remover Subm\u00f3dulo +action.start=Iniciar +action.stop=Parar +action.restart=Reiniciar +action.forceInit=For\u00e7ar In\u00edcio +action.selectAll=Selecionar Tudo +action.deselectAll=Desmarcar Tudo +dialog.shutdown.title=Desligamento Iniciado... +dialog.shutdown.message=A interface ir\u00e1 parar de responder +dialog.shutdown.confirm=Tem certeza que deseja desligar o Sensor Hub? +dialog.logout.confirm=Tem certeza que deseja sair? +dialog.save.confirm=Tem certeza que deseja salvar a configura\u00e7\u00e3o? +msg.configSaved=Configura\u00e7\u00e3o SensorHub Salva +msg.configSaveError=Erro ao salvar configura\u00e7\u00e3o +dialog.remove.confirm=Tem certeza que deseja remover {0}?
Todas as configura\u00e7\u00f5es ser\u00e3o perdidas. +msg.removeError={0} n\u00e3o p\u00f4de ser removido +msg.startError={0} n\u00e3o p\u00f4de ser iniciado +msg.stopError={0} n\u00e3o p\u00f4de ser parado +msg.restartError={0} n\u00e3o p\u00f4de ser reiniciado +msg.reinitError={0} n\u00e3o p\u00f4de ser reinicializado +msg.loadError=N\u00e3o \u00e9 poss\u00edvel carregar m\u00f3dulo +msg.addSubmoduleError=N\u00e3o \u00e9 poss\u00edvel adicionar subm\u00f3dulo +about.title=Sobre OpenSensorHub +about.desc=Plataforma de software para redes de sensores inteligentes e IoT +about.license=Licenciado sob Mozilla Public License v2.0 +about.version=Vers\u00e3o: +about.build=N\u00famero da Build: +about.deployment=Nome do Deployment: +tooltip.shutdown=Desligar SensorHub +tooltip.logout=Sair do n\u00f3 OSH +tooltip.save=Salvar Configura\u00e7\u00e3o SensorHub +dialog.start.confirm=Deseja iniciar {0}? +dialog.stop.confirm=Deseja parar {0}? +dialog.restart.confirm=Deseja reiniciar {0}? +dialog.reinit.confirm=Deseja for\u00e7ar reinicializa\u00e7\u00e3o de {0}? +backgroundUpdate=Atualiza\u00e7\u00e3o em Segundo Plano +sigmaThreshold=Limiar Sigma +nuclideIdentification=Identifica\u00e7\u00e3o de Nucl\u00eddeos +tamperAlarm=Alarme de Viola\u00e7\u00e3o +occupancySensor=Sensor de Ocupa\u00e7\u00e3o +stateOfHealth=Estado de Sa\u00fade +soh=SOH +1ScanThisQrCodeWithYourAuthenticatorApp=1. Digitalize este QR Code com seu aplicativo autenticador: +2EnterThe6digitCodeGeneratedByTheApp=2. Digite o c\u00f3digo de 6 d\u00edgitos gerado pelo aplicativo: +orEnterThisSecretKeyManually=Ou insira esta chave secreta manualmente: +loadingBundlesInformation=Carregando informa\u00e7\u00f5es dos pacotes... +loadingPackageInformation=Carregando informa\u00e7\u00f5es do pacote... +arrayComponentNotSupported=Componente de matriz n\u00e3o suportado +twofactorAuthentication=Autentica\u00e7\u00e3o de dois fatores +installMorePackages=Instale mais pacotes... +errorGeneratingQrCode=Erro ao gerar c\u00f3digo QR +installMoreModules=Instale mais m\u00f3dulos... +detailedInstructions=Instru\u00e7\u00f5es detalhadas +availableNetworks=Redes dispon\u00edveis +processParameters=Par\u00e2metros de Processo +verifyAndEnable=Verifique e ative +dataSourceInfo=Informa\u00e7\u00f5es da fonte de dados +detectedDevices=Dispositivos detectados +installSelected=Instalar selecionado +databaseContent=Conte\u00fado do banco de dados +itemsPerPage=Itens por p\u00e1gina: +commandInputs=Entradas de comando +processInputs=Entradas do Processo +providerClass=Classe de provedor +processName=Nome do Processo: +configuration=Configura\u00e7\u00e3o +applyChanges=Aplicar altera\u00e7\u00f5es +sendCommand=Enviar comando +useAddress=Usar endere\u00e7o +selectNone=Selecione Nenhum +timeRange=Intervalo de tempo: +permissions=Permiss\u00f5es +startScan=Iniciar verifica\u00e7\u00e3o +noReadme=Sem LEIA-ME +stopScan=Parar verifica\u00e7\u00e3o +reset2fa=Redefinir 2FA +previous=Anterior +useName=Usar nome +outputs=Resultados +refresh=Atualizar +modify=Modificar +cancel=Cancelar +logout=Sair +remove=Remover +verify=Verificar +first=Primeiro +login=Conecte-se +last=Durar +view=VISUALIZAR +next=Pr\u00f3ximo +stop=Parar +add=Adicionar +ui.empty=< +ok=OK +1ScanThisQrCodeWithYourAuthenticatorApp1=1. Digitalize este QR Code com seu aplicativo autenticador: +2EnterThe6digitCodeGeneratedByTheApp1=2. Digite o c\u00f3digo de 6 d\u00edgitos gerado pelo aplicativo: +orEnterThisSecretKeyManually1=Ou insira esta chave secreta manualmente: +loadingPackageInformation1=Carregando informa\u00e7\u00f5es do pacote... +loadingBundlesInformation1=Carregando informa\u00e7\u00f5es dos pacotes... +arrayComponentNotSupported1=Componente de matriz n\u00e3o suportado +twofactorAuthentication1=Autentica\u00e7\u00e3o de dois fatores +errorGeneratingQrCode1=Erro ao gerar c\u00f3digo QR +installMorePackages1=Instale mais pacotes... +installMoreModules1=Instale mais m\u00f3dulos... +detailedInstructions1=Instru\u00e7\u00f5es detalhadas +processParameters1=Par\u00e2metros de Processo +availableNetworks1=Redes dispon\u00edveis +verifyAndEnable1=Verifique e ative +databaseContent1=Conte\u00fado do banco de dados +installSelected1=Instalar selecionado +dataSourceInfo1=Informa\u00e7\u00f5es da fonte de dados +detectedDevices1=Dispositivos detectados +itemsPerPage1=Itens por p\u00e1gina: +processInputs1=Entradas do Processo +commandInputs1=Entradas de comando +providerClass1=Classe de provedor +configuration1=Configura\u00e7\u00e3o +processName1=Nome do Processo: +applyChanges1=Aplicar altera\u00e7\u00f5es +sendCommand1=Enviar comando +timeRange1=Intervalo de tempo: +useAddress1=Usar endere\u00e7o +permissions1=Permiss\u00f5es +selectNone1=Selecione Nenhum +startScan1=Iniciar verifica\u00e7\u00e3o +noReadme1=Sem LEIA-ME +reset2fa1=Redefinir 2FA +stopScan1=Parar verifica\u00e7\u00e3o +useName1=Usar nome +previous1=Anterior +refresh1=Atualizar +outputs1=Resultados +cancel1=Cancelar +logout1=Sair +modify1=Modificar +remove1=Remover +verify1=Verificar +first1=Primeiro +login1=Conecte-se +view1=VISUALIZAR +stop1=Parar +next1=Pr\u00f3ximo +last1=Durar +add1=Adicionar +last2=>> +first2=<< +ok1=OK +next2=> +previous2=< + +pleaseEnterAUserIDFirst1=Por favor, insira um ID de usu\u00e1rio primeiro +reset2FA1=Redefinir 2FA +enable2FA1=Habilitar 2FA +twoFAEnabledSuccessfully1=2FA ativado com sucesso +invalidCode1=C\u00f3digo inv\u00e1lido +allowedAndDeniedPermissionsForUsersWithThisRole1=Permiss\u00f5es permitidas e negadas para usu\u00e1rios com esta fun\u00e7\u00e3o +manualEntry1=Entrada manual +toggleAutoRefreshDataOncePerSecond1=Alternar dados de atualiza\u00e7\u00e3o autom\u00e1tica uma vez por segundo +lookupSystem1=Sistema de pesquisa +lookupModule1=M\u00f3dulo de pesquisa +lookupAddress1=Endere\u00e7o de pesquisa +showPassword1=Mostrar senha +showHistogram1=Mostrar histograma +hideHistogram1=Ocultar histograma +reloadDataFromDatabase1=Recarregar dados do banco de dados +fois1=FOIs +username1=Nome de usu\u00e1rio +password1=Senha +loginFailed1=Falha no login +invalidUsernameOrPassword1=Nome de usu\u00e1rio ou senha inv\u00e1lidos +verificationCode1=C\u00f3digo de verifica\u00e7\u00e3o +verificationFailed1=Falha na verifica\u00e7\u00e3o +datasource1=Fonte de dados +process1=Processo +logoutFromOshNode1=Sair do n\u00f3 OSH +setParameter1=Definir par\u00e2metro +setupTwoFactorAuthentication1=Configurar autentica\u00e7\u00e3o de dois fatores + +action.new_item=Novo {0} +Lane\ System=Sistema de pista +Module\ Class=Classe do m\u00f3dulo +Module\ Name=Nome do M\u00f3dulo +Module\ ID=ID do m\u00f3dulo +Description=Descri\u00e7\u00e3o +SensorML\ URL=URL do SensorML +UniqueID=ID \u00danico +Last\ Updated=\u00daltima atualiza\u00e7\u00e3o +Auto\ Start=In\u00edcio autom\u00e1tico +Delete\ Data\ on\ Lane\ Removal=Excluir dados na remo\u00e7\u00e3o de pista +Latitude=Latitude +Longitude=Longitude +Altitude=Altitude +Initial\ RPM\ Config=Configura\u00e7\u00e3o inicial de RPM +Initial\ Camera\ Config=Configura\u00e7\u00e3o inicial da c\u00e2mera +Lane\ Options\ Config=Configura\u00e7\u00e3o de op\u00e7\u00f5es de pista +tab.general=Em geral +tab.readme=LEIA-ME +Fixed\ Location=Localiza\u00e7\u00e3o Fixa +Fixed\ Orientation=Orienta\u00e7\u00e3o Fixa +# Auto-extracted DisplayInfo labels and descriptions +URL\ of\ SensorML\ file\ providing\ the\ base\ description\ of\ the\ sensor=URL do arquivo SensorML que fornece a descri\u00e7\u00e3o b\u00e1sica do sensor +Time\ at\ which\ the\ SensorML\ description\ was\ last\ updated=Hora em que a descri\u00e7\u00e3o do SensorML foi atualizada pela \u00faltima vez +Geodetic\ latitude,\ in\ degrees=Latitude geod\u00e9sica, em graus +Longitude,\ in\ degrees=Longitude, em graus +Height\ above\ ellipsoid,\ in\ meters=Altura acima do elips\u00f3ide, em metros +X\ coordinate,\ in\ meters=Coordenada X, em metros +Y\ coordinate,\ in\ meters=Coordenada Y, em metros +Z\ coordinate,\ in\ meters=Coordenada Z, em metros +Pitch\ angle\ about\ Y\ axis,\ in\ degrees=\u00c2ngulo de inclina\u00e7\u00e3o em rela\u00e7\u00e3o ao eixo Y, em graus +Roll\ angle\ about\ X\ axis,\ in\ degrees=\u00c2ngulo de rota\u00e7\u00e3o em torno do eixo X, em graus +Location\ in\ EPSG\:4979\ coordinate\ reference\ frame=Localiza\u00e7\u00e3o no quadro de refer\u00eancia de coordenadas EPSG:4979 +Database\ Number=N\u00famero do banco de dados +Numerical\ identifier\ of\ the\ database.\ Each\ database\ that\ should\ be\ exposed\ via\ the\ federated\ database\ API\ must\ have\ a\ unique\ number\ on\ the\ sensor\ hub.\ If\ visibility\ through\ the\ federated\ database\ is\ not\ desired,\ it\ can\ be\ omitted.=Identificador num\u00e9rico do banco de dados. Cada banco de dados que deve ser exposto por meio da API do banco de dados federado deve ter um n\u00famero exclusivo no hub do sensor. Se a visibilidade por meio do banco de dados federado n\u00e3o for desejada, ela poder\u00e1 ser omitida. +Enables\ fine-grained\ permission-based\ access\ control\ for\ this\ module=Permite controle de acesso refinado baseado em permiss\u00e3o para este m\u00f3dulo +Require\ Authentication=Exigir autentica\u00e7\u00e3o +Set\ to\ require\ remote\ users\ to\ be\ authentified\ before\ they\ can\ use\ this\ service=Definido para exigir que os usu\u00e1rios remotos sejam autenticados antes de poderem usar este servi\u00e7o +Endpoint=Ponto final +Unique\ local\ ID\ of\ the\ module=ID local exclusivo do m\u00f3dulo +User\ description\ for\ the\ module=Descri\u00e7\u00e3o do usu\u00e1rio para o m\u00f3dulo +Set\ to\ automatically\ start\ the\ module\ when\ it\ is\ loaded=Configure para iniciar automaticamente o m\u00f3dulo quando ele for carregado +Module\ implementation\ class=Classe de implementa\u00e7\u00e3o de m\u00f3dulo +User\ chosen\ name\ for\ the\ module=Nome escolhido pelo usu\u00e1rio para o m\u00f3dulo +Name\ of\ topic/queue\ to\ use=Nome do t\u00f3pico/fila a ser usado +Enable/disable\ writing\ to\ queue=Habilitar/desabilitar grava\u00e7\u00e3o na fila +Enable/disable\ reading\ from\ queue=Habilitar/desabilitar leitura da fila +Protocol\ Options=Op\u00e7\u00f5es de protocolo +Common\ Configuration=Configura\u00e7\u00e3o Comum +Common\ configuration\ for\ sensors\ in\ the\ array=Configura\u00e7\u00e3o comum para sensores na matriz +Sensors\ Configuration=Configura\u00e7\u00e3o de Sensores +Subsystem\ Config=Configura\u00e7\u00e3o do subsistema +Configuration\ of\ the\ subsystem=Configura\u00e7\u00e3o do subsistema +Relative\ Location=Localiza\u00e7\u00e3o relativa +Location\ of\ this\ subsystem\ relative\ to\ the\ main\ system\ or\ platform\ reference\ frame=Localiza\u00e7\u00e3o deste subsistema em rela\u00e7\u00e3o ao sistema principal ou quadro de refer\u00eancia da plataforma +Relative\ Orientation=Orienta\u00e7\u00e3o Relativa +Orientation\ of\ this\ subsystem\ relative\ to\ the\ main\ system\ or\ platform\ reference\ frame=Orienta\u00e7\u00e3o deste subsistema em rela\u00e7\u00e3o ao sistema principal ou quadro de refer\u00eancia da plataforma +Fixed\ system\ orientation\ in\ the\ local\ NED\ reference\ frame=Orienta\u00e7\u00e3o fixa do sistema no quadro de refer\u00eancia NED local +Subsystems=Subsistemas +Configuration\ of\ components\ of\ this\ sensor\ system=Configura\u00e7\u00e3o dos componentes deste sistema de sensores +Database\ Config=Configura\u00e7\u00e3o do banco de dados +Configuration\ of\ underlying\ database=Configura\u00e7\u00e3o do banco de dados subjacente +System\ UIDs=UIDs do sistema +Unique\ IDs\ of\ system\ drivers\ handled\ by\ this\ database=IDs exclusivos de drivers de sistema manipulados por este banco de dados +Automatic\ Purge\ Policy=Pol\u00edtica de elimina\u00e7\u00e3o autom\u00e1tica +Policy\ for\ automatically\ purging\ historical\ data=Pol\u00edtica para limpar automaticamente dados hist\u00f3ricos +Uncheck\ to\ disable\ auto-purge\ temporarily=Desmarque para desativar a limpeza autom\u00e1tica temporariamente +Purge\ Execution\ Period=Per\u00edodo de execu\u00e7\u00e3o de limpeza +Unique\ IDs\ of\ system\ drivers\ to\ purge=IDs exclusivos de drivers do sistema a serem eliminados +Max\ Record\ Age=Idade m\u00e1xima do registro +SensorML\ File=Arquivo SensorML +Path\ of\ SensorML\ description\ of\ the\ process=Caminho da descri\u00e7\u00e3o do SensorML do processo +List\ of\ users\ allowed\ access\ to\ this\ system=Lista de usu\u00e1rios com permiss\u00e3o de acesso a este sistema +List\ of\ security\ roles=Lista de fun\u00e7\u00f5es de seguran\u00e7a +User\ ID=ID do usu\u00e1rio +Role\ ID=ID da fun\u00e7\u00e3o +Source\ Database\ ID=ID do banco de dados de origem +ID\ of\ database\ module\ to\ read\ data\ from\ (Federated\ database\ will\ be\ used\ if\ not\ set=ID do m\u00f3dulo da base de dados para ler os dados (a base de dados federadaser\u00e1usada se n\u00e3o estiver definida +HTTP\ Port=Porta HTTP +HTTPS\ Port=Porta HTTPS +Root\ URL\ where\ static\ web\ content\ will\ be\ served.=URL raiz onde o conte\u00fado est\u00e1tico da web ser\u00e1 veiculado. +Directory\ where\ static\ web\ content\ is\ located.=Diret\u00f3rio onde o conte\u00fado est\u00e1tico da web est\u00e1 localizado. +Root\ URL\ where\ the\ server\ will\ accept\ requests.\ This\ will\ be\ the\ prefix\ to\ all\ servlet\ URLs.=URL raiz onde o servidor aceitar\u00e1 solicita\u00e7\u00f5es. Este ser\u00e1 o prefixo para todos os URLs de servlet. +Proxy\ Base\ URL=URL base do proxy +Public\ URL\ as\ viewed\ from\ the\ outside\ when\ requests\ transit\ through\ a\ proxy\ server.=URL p\u00fablico visto de fora quando as solicita\u00e7\u00f5es transitam por um servidor proxy. +Authentication\ Method=M\u00e9todo de autentica\u00e7\u00e3o +Method\ used\ to\ authenticate\ users\ on\ this\ server=M\u00e9todo usado para autenticar usu\u00e1rios neste servidor +Path\ to\ a\ key\ store\ containing\ the\ certificate\ and\ keypair\ that\ this\ server\ will\ present\ to\ clients\ when\ accessed\ over\ HTTPS.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ \"javax.net.ssl.keyStore\"\ system\ property.\=Path to a key store containing the certificate and keypair that this server will present to clients when accessed over HTTPS. If this value is blank, will default to using the value of the \"javax.net.ssl.keyStore\" system property. +Alias\ for\ the\ public/private\ keypair\ within\ the\ key\ store\ that\ will\ be\ used\ to\ identify\ this\ server.=Alias \u200b\u200bpara o par de chaves p\u00fablica/privada no armazenamento de chaves que ser\u00e1 usado para identificar este servidor. +Path\ to\ the\ TLS\ trust\ store\ that\ is\ used\ when\ client\ authentication\ is\ required.\ Ignored\ if\ client\ certificate\ authentication\ is\ not\ used.\ Certificates\ in\ this\ file\ designate\ the\ signing\ authorities\ for\ client\ certificates\ that\ will\ be\ trusted.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ \"javax.net.ssl.trustStore\"\ system\ property.\=Path to the TLS trust store that is used when client authentication is required. Ignored if client certificate authentication is not used. Certificates in this file designate the signing authorities for client certificates that will be trusted. If this value is blank, will default to using the value of the \"javax.net.ssl.trustStore\" system property. +Password\ for\ the\ trust\ store.\ Ignored\ if\ client\ certificate\ authentication\ is\ not\ used.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ \"javax.net.ssl.trustStorePassword\"\ system\ property.\=Password for the trust store. Ignored if client certificate authentication is not used. If this value is blank, will default to using the value of the \"javax.net.ssl.trustStorePassword\" system property. +Enable\ CORS=Habilitar CORS +Enable\ generation\ of\ CORS\ headers\ to\ allow\ cross-domain\ requests\ from\ browsers=Habilite a gera\u00e7\u00e3o de cabe\u00e7alhos CORS para permitir solicita\u00e7\u00f5es entre dom\u00ednios de navegadores +Capabilities\ Info=Informa\u00e7\u00f5es sobre capacidades +Information\ included\ in\ the\ service\ capabilities\ document=Informa\u00e7\u00f5es inclu\u00eddas no documento de capacidades de servi\u00e7o +Enable\ HTTP\ GET=Ativar HTTP GET +Enables/disables\ HTTP\ GET\ bindings\ on\ operations\ that\ support\ it=Habilita/desabilita liga\u00e7\u00f5es HTTP GET em opera\u00e7\u00f5es que o suportam +Enable\ HTTP\ POST=Habilitar HTTP POST +Enables/disables\ HTTP\ POST\ bindings\ on\ operations\ that\ support\ it=Ativa/desativa liga\u00e7\u00f5es HTTP POST em opera\u00e7\u00f5es que o suportam +Enable\ HTTP\ SOAP=Habilitar HTTP SOAP +Enables/disables\ HTTP\ SOAP\ bindings\ on\ operations\ that\ support\ it=Habilita/desabilita liga\u00e7\u00f5es HTTP SOAP em opera\u00e7\u00f5es que o suportam +Connection\ Timeout=Tempo limite de conex\u00e3o +Reconnect\ Period=Per\u00edodo de reconex\u00e3o +Max\ Reconnect\ Attempts=M\u00e1ximo de tentativas de reconex\u00e3o +Maximum\ number\ of\ times\ the\ client\ will\ attempt\ to\ reconnect\ when\ the\ connection\ is\ not\ available\ or\ lost.\ A\ negative\ value\ means\ that\ there\ is\ no\ limit\ to\ the\ number\ of\ reconnection\ attempts.\ Zero\ means\ not\ to\ attempt\ reconnection.=N\u00famero m\u00e1ximo de vezes que o cliente tentar\u00e1 se reconectar quando a conex\u00e3o n\u00e3o estiver dispon\u00edvel ou for perdida. Um valor negativo significa que n\u00e3o h\u00e1 limite para o n\u00famero de tentativas de reconex\u00e3o. Zero significa n\u00e3o tentar a reconex\u00e3o. +IP\ or\ DNS\ name\ of\ remote\ host=Nome IP ou DNS do host remoto +IP\ of\ local\ network\ interface\ to\ bind\ to\ or\ 'AUTO'\ to\ select\ it\ automatically=IP da interface de rede local para vincular ou ''''AUTO'''' para selecion\u00e1-la automaticamente +Connection\ Options=Op\u00e7\u00f5es de conex\u00e3o +Serial\ port\ device\ name.\ Usually\ something\ like\ /dev/ttyXXX\ on\ Linux=Nome do dispositivo da porta serial. Geralmente algo como /dev/ttyXXX no Linux +Minimum\ number\ of\ bytes\ to\ receive\ before\ they\ are\ sent\ to\ the\ caller=N\u00famero m\u00ednimo de bytes a serem recebidos antes de serem enviados ao chamador +Local\ port\ number\ to\ use\ on\ the\ local\ host=N\u00famero da porta local a ser usada no host local +Physical\ address\ of\ Bluetooth\ device\ to\ connect\ to=Endere\u00e7o f\u00edsico do dispositivo Bluetooth ao qual se conectar +Port\ number\ to\ connect\ to\ on\ remote\ host=N\u00famero da porta para conex\u00e3o no host remoto +User\ Name=Nome de usu\u00e1rio +Remote\ user\ name=Nome de usu\u00e1rio remoto +Password=Senha +Remote\ password=Senha remota +Secure\ communications\ with\ SSL/TLS=Comunica\u00e7\u00f5es seguras com SSL/TLS +Enable\ to\ check\ if\ remote\ host\ is\ reachable\ before\ attempting\ further\ operations=Habilite para verificar se o host remoto est\u00e1 acess\u00edvel antes de tentar outras opera\u00e7\u00f5es +Path\ or\ resource\ or\ service\ relative\ to\ server\ root=Caminho ou recurso ou servi\u00e7o relativo \u00e0 raiz do servidor +Unique\ ID\ of\ system\ group=ID exclusivo do grupo de sistemas +Name\ of\ system\ group=Nome do grupo de sistemas +Description\ of\ system\ group=Descri\u00e7\u00e3o do grupo de sistemas +List\ of\ bundle\ repository\ URLs=Lista de URLs de reposit\u00f3rio de pacotes configur\u00e1veis +A\ human\ readable\ friendly\ identifier\ for\ the\ deployment=Um identificador amig\u00e1vel e leg\u00edvel para a implanta\u00e7\u00e3o +Enable\ Landing\ Page=Ativar p\u00e1gina inicial +Enable\ Landing\ Servlet\ to\ redirect\ users\ to\ landing\ page=Habilite o Landing Servlet para redirecionar os usu\u00e1rios para a p\u00e1gina de destino +Config\ Class=Classe de configura\u00e7\u00e3o +Type\ of\ module\ config\ class\ for\ which\ a\ custom\ panel\ must\ be\ generated=Tipo de classe de configura\u00e7\u00e3o do m\u00f3dulo para a qual um painel personalizado deve ser gerado +UI\ Class=Classe de IU +Fully\ qualified\ name\ of\ class\ implementing\ IModuleAdminPanel=Nome totalmente qualificado da classe que implementa IModuleAdminPanel + +# Auto-extracted property IDs +sensorML=Sensor Ml +lastUpdated=\u00daltima atualiza\u00e7\u00e3o +lat=Lat. +lon=Lon +alt=Alt. +x=X +y=Y +z=Z +heading=Cabe\u00e7alho +pitch=Tom +roll=Rolar +location=Localiza\u00e7\u00e3o +orientation=Orienta\u00e7\u00e3o +databaseNum=N\u00famero do banco de dados +enableAccessControl=Habilitar controle de acesso +requireAuth=Exigir autentica\u00e7\u00e3o +mimeType=Tipo Mime +className=Nome da classe +endPoint=Ponto final +id=Eu ia +description=Descri\u00e7\u00e3o +autoStart=In\u00edcio autom\u00e1tico +topicName=Nome do t\u00f3pico +enablePublish=Habilitar publica\u00e7\u00e3o +enableSubscribe=Ativar assinatura +protocol=Protocolo +moduleConfigPath=Caminho de configura\u00e7\u00e3o do m\u00f3dulo +moduleDataPath=Caminho de dados do m\u00f3dulo +commonConfig=Configura\u00e7\u00e3o comum +sensors=Sensors +config=Configura\u00e7\u00e3o +uniqueID=ID exclusivo +subsystems=Subsistemas +dbConfig=Configura\u00e7\u00e3o do banco de dados +systemUIDs=Uids do sistema +autoPurgeConfig=Configura\u00e7\u00e3o de limpeza autom\u00e1tica +minCommitPeriod=Per\u00edodo m\u00ednimo de confirma\u00e7\u00e3o +enabled=Habilitado +purgePeriod=Per\u00edodo de purga +maxRecordAge=Idade m\u00e1xima do registro +users=Usu\u00e1rios +roles=Fun\u00e7\u00f5es +allow=Permitir +deny=Negar +userID=ID do usu\u00e1rio +name=Nome +password=Senha +certificate=Certificado +twoFactorSecret=Segredo de dois fatores +isTwoFactorEnabled=Dois fatores est\u00e3o ativados +roleID=ID da fun\u00e7\u00e3o +sourceDatabaseId=ID do banco de dados de origem +includeFilter=Incluir filtro +excludeFilter=Excluir filtro +httpPort=Porta HTTP +httpsPort=Porta HTTPS +staticDocsRootUrl=URL raiz de documentos est\u00e1ticos +staticDocsRootDir=Diret\u00f3rio raiz de documentos est\u00e1ticos +servletsRootUrl=URL raiz de servlets +proxyBaseUrl=URL base do proxy +authMethod=M\u00e9todo de autentica\u00e7\u00e3o +keyStorePath=Caminho do armazenamento de chaves +keyStorePassword=Senha do armazenamento de chaves +keyAlias=Alias \u200b\u200bde chave +trustStorePath=Caminho do armazenamento confi\u00e1vel +trustStorePassword=Senha do armazenamento confi\u00e1vel +xmlConfigFile=Arquivo de configura\u00e7\u00e3o XML +enableCORS=Habilitar Cors +title=Title +keywords=Palavras-chave +fees=Tarifas +accessConstraints=Restri\u00e7\u00f5es de acesso +serviceProvider=Provedor de servi\u00e7os +ogcCapabilitiesInfo=Informa\u00e7\u00f5es sobre capacidades Ogc +enableHttpGET=Ativar obten\u00e7\u00e3o de HTTP +enableHttpPOST=Habilitar postagem HTTP +enableSOAP=Ativar sabonete +connectTimeout=Tempo limite de conex\u00e3o +reconnectPeriod=Per\u00edodo de reconex\u00e3o +reconnectAttempts=Tentativas de reconectar +deviceID=ID do dispositivo +deviceClass=Classe de dispositivo +remoteHost=Anfitri\u00e3o Remoto +localAddress=Endere\u00e7o local +connection=Conex\u00e3o +portName=Nome da porta +baudRate=Taxa de transmiss\u00e3o +dataBits=Bits de dados +stopBits=Parar bits +parity=Paridade +receiveTimeout=Tempo limite de recebimento +receiveThreshold=Limite de recebimento +remotePort=Porta remota +localPort=Porto Local +deviceAddress=Endere\u00e7o do dispositivo +deviceName=Nome do dispositivo +serviceUuid=Uuid de servi\u00e7o +user=Usu\u00e1rio +enableTLS=Habilitar Tls +checkReachability=Verifique a acessibilidade +resourcePath=Caminho do recurso +uid=Uid +securityRole=Fun\u00e7\u00e3o de seguran\u00e7a +passwordField=Campo de senha +widgetSet=Conjunto de widgets +bundleRepoUrls=URLs de reposit\u00f3rio de pacotes +customPanels=Pain\u00e9is personalizados +customForms=Formul\u00e1rios personalizados +deploymentName=Nome da implanta\u00e7\u00e3o +enableLandingPage=Ativar p\u00e1gina inicial +configClass=Classe de configura\u00e7\u00e3o +uiClass=Classe de interface do usu\u00e1rio +moduleClass=Classe do M\u00f3dulo + +# Auto-extracted hardcoded UI strings +testLinks1=Links de teste +uniqueID1=ID exclusivo +foiIDs1=IDs FOI +version1=Vers\u00e3o + +Connected\ Systems\ Endpoint=Endpoint de sistemas conectados +Connected\ Systems\ endpoint\ where\ the\ requests\ are\ sent=Endpoint de sistemas conectados para onde as solicita\u00e7\u00f5es s\u00e3o enviadas +Connection\ Settings=Configura\u00e7\u00f5es de conex\u00e3o +Custom\ connector\ configurations=Configura\u00e7\u00f5es de conector personalizadas +Custom\ provider\ configurations=Configura\u00e7\u00f5es personalizadas do provedor +Database\ ID=ID do banco de dados +Default\ live\ time-out\ for\ all\ offerings,\ unless\ overriden\ by\ custom\ provider\ settings=Tempo limite ao vivo padr\u00e3o para todas as ofertas, a menos que seja substitu\u00eddo pelas configura\u00e7\u00f5es personalizadas do provedor +Default\ live\ time-out\ for\ new\ offerings\ created\ via\ SOS-T=Tempo limite padr\u00e3o ao vivo para novas ofertas criadas via SOS-T +Enable\ to\ use\ a\ persistent\ HTTP\ connection\ for\ InsertResult=Habilite o uso de uma conex\u00e3o HTTP persistente para InsertResult +Execution\ period\ of\ the\ purge\ policy\ (in\ seconds)=Per\u00edodo de execu\u00e7\u00e3o da pol\u00edtica de elimina\u00e7\u00e3o (em segundos) +Filtered\ view\ to\ select\ systems\ exposed\ as\ read-only\ through\ this\ service=Visualiza\u00e7\u00e3o filtrada para selecionar sistemas expostos como somente leitura por meio deste servi\u00e7o +Filtered\ view\ to\ select\ systems/datastreams\ to\ register\ with\ Connected\ Systems=Visualiza\u00e7\u00e3o filtrada para selecionar sistemas/fluxos de dados para registrar nos Sistemas Conectados +Filtered\ view\ to\ select\ systems/datastreams\ to\ register\ with\ remote\ SOS=Visualiza\u00e7\u00e3o filtrada para selecionar sistemas/fluxos de dados para registrar com SOS remoto +Fixed\ system\ location\ in\ EPSG\ 4979\ (WGS84)\ coordinate\ system=Localiza\u00e7\u00e3o fixa do sistema no sistema de coordenadas EPSG 4979 (WGS84) +For\ each\ connection\ or\ reconnection\ attempt,\ the\ client\ will\ wait\ for\ the\ remote\ side\ to\ respond\ until\ this\ timeout\ expires\ (in\ ms)=Para cada tentativa de conex\u00e3o ou reconex\u00e3o, o cliente aguardar\u00e1 a resposta do lado remoto at\u00e9 que esse tempo limite expire (em ms) +Heading\ (or\ yaw)\ angle\ about\ Z\ axis\ in\ degrees=\u00c2ngulo de rumo (ou guinada) em torno do eixo Z em graus +How\ long\ the\ client\ will\ wait\ after\ connection\ is\ lost\ before\ it\ will\ attempt\ to\ reconnect\ (in\ ms)=Quanto tempo o cliente esperar\u00e1 ap\u00f3s a perda da conex\u00e3o antes de tentar se reconectar (em ms) +ID\ Generator=Gerador de ID +ID\ of\ database\ module\ used\ for\ persisting\ data\ received\ by\ this\ service.\ If\ none\ is\ provided,\ new\ systems\ registered\ through\ this\ service\ will\ be\ available\ on\ the\ hub,\ but\ with\ no\ persistence\ guarantee\ across\ restarts.=ID do m\u00f3dulo de banco de dados usado para persistir dados recebidos por este servi\u00e7o. Se nada for fornecido, novos sistemas registrados por meio deste servi\u00e7o estar\u00e3o dispon\u00edveis no hub, mas sem garantia de persist\u00eancia nas reinicializa\u00e7\u00f5es. +ID\ of\ database\ module\ used\ for\ persisting\ data\ received\ by\ this\ service.\ If\ none\ is\ provided,\ new\ systems\ registered\ through\ this\ service\ will\ be\ available\ on\ the\ hub,\ but\ with\ no\ persistence\ guarantee\ across\ restarts.\ Only\ the\ latest\ observation\ from\ each\ datastream\ will\ be\ available\ and\ older\ observations\ will\ be\ discarded=ID do m\u00f3dulo de banco de dados usado para persistir dados recebidos por este servi\u00e7o. Se nada for fornecido, novos sistemas registrados por meio deste servi\u00e7o estar\u00e3o dispon\u00edveis no hub, mas sem garantia de persist\u00eancia nas reinicializa\u00e7\u00f5es. Somente a observa\u00e7\u00e3o mais recente de cada fluxo de dados estar\u00e1 dispon\u00edvel e as observa\u00e7\u00f5es mais antigas ser\u00e3o descartadas +Individual\ configuration\ of\ sensors\ in\ the\ array\ (will\ override\ common\ configuration)=Configura\u00e7\u00e3o individual de sensores na matriz (substituir\u00e1 a configura\u00e7\u00e3o comum) +List\ of\ observed\ properties\ URI\ to\ make\ available\ as\ outputs=Lista de URI de propriedades observadas para disponibilizar como sa\u00eddas +Mapping\ of\ custom\ formats\ mime-types\ to\ custom\ serializer\ classes=Mapeamento de tipos MIME de formatos personalizados para classes serializadoras personalizadas +Mappings\ used\ by\ CURIE\ to\ URI\ resolver=Mapeamentos usados \u200b\u200bpelo CURIE para o resolvedor de URI +Max\ Limit=Limite m\u00e1ximo +Max\ Observations\ Returned=M\u00e1ximo de observa\u00e7\u00f5es retornadas +Max\ Records\ Returned=M\u00e1ximo de registros retornados +Max\ delay\ between\ auto-commit\ execution,\ in\ seconds.\ 0\ to\ disable\ time-based\ auto-commit=Atraso m\u00e1ximo entre a execu\u00e7\u00e3o da confirma\u00e7\u00e3o autom\u00e1tica, em segundos. 0 para desativar a confirma\u00e7\u00e3o autom\u00e1tica baseada em tempo +Maximum\ age\ of\ data\ to\ be\ kept\ in\ storage\ (in\ seconds)=Idade m\u00e1xima dos dados a serem mantidos em armazenamento (em segundos) +Maximum\ number\ of\ FoI\ IDs\ listed\ in\ capabilities=N\u00famero m\u00e1ximo de IDs FoI listados em recursos +Maximum\ number\ of\ observations\ returned\ \ by\ a\ historical\ GetObservation\ request\ (for\ each\ selected\ offering)=N\u00famero m\u00e1ximo de observa\u00e7\u00f5es retornadas por uma solicita\u00e7\u00e3o GetObservation hist\u00f3rica (para cada oferta selecionada) +Maximum\ number\ of\ records\ in\ upload\ queue\ (used\ to\ compensate\ for\ variable\ bandwidth)=N\u00famero m\u00e1ximo de registros na fila de upload (usado para compensar a largura de banda vari\u00e1vel) +Maximum\ number\ of\ resources\ returned\ in\ a\ single\ page=N\u00famero m\u00e1ximo de recursos retornados em uma \u00fanica p\u00e1gina +Maximum\ number\ of\ result\ records\ returned\ by\ a\ historical\ GetResult\ request=N\u00famero m\u00e1ximo de registros de resultados retornados por uma solicita\u00e7\u00e3o GetResult hist\u00f3rica +Maximum\ number\ of\ stream\ errors\ before\ we\ try\ to\ reconnect\ to\ remote\ server=N\u00famero m\u00e1ximo de erros de stream antes de tentarmos reconectar ao servidor remoto +Memory\ cache\ size\ for\ page\ chunks,\ in\ KB=Tamanho do cache de mem\u00f3ria para blocos de p\u00e1ginas, em KB +Metadata\ of\ system\ group\ that\ will\ be\ created\ to\ contain\ all\ procedures/sensors\ registered\ through\ this\ service.\ Only\ sensors\ in\ this\ group\ will\ be\ modifiable\ by\ this\ service=Metadados do grupo de sistemas que ser\u00e3o criados para conter todos os procedimentos/sensores cadastrados atrav\u00e9s deste servi\u00e7o. Apenas os sensores deste grupo poder\u00e3o ser modificados por este servi\u00e7o +Metadata\ of\ system\ group\ that\ will\ be\ created\ to\ contain\ all\ systems\ registered\ through\ this\ service.\ Only\ systems\ in\ this\ group\ will\ be\ modifiable\ by\ this\ service=Metadados do grupo de sistemas que ser\u00e3o criados para conter todos os sistemas cadastrados atrav\u00e9s deste servi\u00e7o. Somente os sistemas deste grupo poder\u00e3o ser modificados por este servi\u00e7o +Method\ used\ to\ generate\ new\ resource\ IDs=M\u00e9todo usado para gerar novos IDs de recursos +Minimum\ fillrate\ above\ which\ auto\ compact\ operations\ may\ be\ triggered=Taxa de preenchimento m\u00ednima acima da qual as opera\u00e7\u00f5es de compacta\u00e7\u00e3o autom\u00e1tica podem ser acionadas +Minimum\ period\ between\ database\ commits\ (in\ ms)=Per\u00edodo m\u00ednimo entre commits do banco de dados (em ms) +Names\ of\ datastreams\ whose\ data\ will\ be\ hidden\ from\ the\ SOS.\ If\ this\ is\ null,\ all\ streams\ produced\ by\ the\ procedure\ are\ exposed=Nomes de fluxos de dados cujos dados ser\u00e3o ocultados do SOS. Se for nulo, todos os fluxos produzidos pelo procedimento ser\u00e3o expostos +Observed\ Properties=Propriedades observadas +Offering\ URI\ as\ exposed\ in\ capabilities.\ (if\ null,\ the\ procedure\ UID\ is\ used)=Oferecendo URI conforme exposto em recursos. (se nulo, o procedimento UID \u00e9 usado) +Offering\ description\ (if\ null,\ it\ will\ be\ auto-generated)=Descri\u00e7\u00e3o da oferta (se nula, ser\u00e1 gerada automaticamente) +Offering\ name\ (if\ null,\ the\ procedure\ name\ is\ used)=Nome da oferta (se nulo, o nome do procedimento ser\u00e1 usado) +Orientation\ as\ Euler\ angles\ in\ NED\ coordinate\ reference\ frame.\nOrder\ of\ rotations\ is\ z-y\u2019-x"\ (in\ rotating\ frame)\ or\ x-y-z\ (in\ fixed\ frame)=Orienta\u00e7\u00e3o como \u00e2ngulos de Euler no referencial de coordenadas NED.\nA ordem das rota\u00e7\u00f5es \u00e9 z-y\u2019-x" (no quadro girat\u00f3rio) ou x-y-z (no quadro fixo) +Password\ for\ the\ key\ store\ (and\ for\ the\ keypair\ within\ the\ keystore).\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ "javax.net.ssl.keyStorePassword"\ system\ property.\ This\ value\ can\ use\ variable\ expansion\ expressions\ of\ the\ form\ "$${name}"\ (for\ environment\ variables\ and\ system\ properties)\ or\ "$${file;/path/to/file}"\ (for\ secret\ file\ contents).=Senha para o armazenamento de chaves (e para o par de chaves dentro do armazenamento de chaves). Se esse valor estiver em branco, o padr\u00e3o ser\u00e1 usar o valor da propriedade do sistema "javax.net.ssl.keyStorePassword". Este valor pode usar express\u00f5es de expans\u00e3o de vari\u00e1veis \u200b\u200bno formato "$${name}" (para vari\u00e1veis \u200b\u200bde ambiente e propriedades do sistema) ou "$${file;/path/to/file}" (para conte\u00fado de arquivo secreto). +Password\ for\ the\ trust\ store.\ Ignored\ if\ client\ certificate\ authentication\ is\ not\ used.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ "javax.net.ssl.trustStorePassword"\ system\ property.\ This\ value\ can\ use\ variable\ expansion\ expressions\ of\ the\ form\ "$${name}"\ (for\ environment\ variables\ and\ system\ properties)\ or\ "$${file;/path/to/file}"\ (for\ secret\ file\ contents).=Senha para o armazenamento confi\u00e1vel. Ignorado se a autentica\u00e7\u00e3o de certificado de cliente n\u00e3o for usada. Se esse valor estiver em branco, o padr\u00e3o ser\u00e1 usar o valor da propriedade do sistema "javax.net.ssl.trustStorePassword". Este valor pode usar express\u00f5es de expans\u00e3o de vari\u00e1veis \u200b\u200bno formato "$${name}" (para vari\u00e1veis \u200b\u200bde ambiente e propriedades do sistema) ou "$${file;/path/to/file}" (para conte\u00fado de arquivo secreto). +Path\ of\ service\ endpoint\ relative\ to\ the\ context\ URL\ (e.g.\ http\://server.net/sensorhub)=Caminho do endpoint de servi\u00e7o relativo ao URL de contexto (por exemplo, http://server.net/sensorhub) +Path\ to\ a\ key\ store\ containing\ the\ certificate\ and\ keypair\ that\ this\ server\ will\ present\ to\ clients\ when\ accessed\ over\ HTTPS.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ "javax.net.ssl.keyStore"\ system\ property.\ This\ value\ can\ use\ variable\ expansion\ expressions\ of\ the\ form\ "$${name}"\ (for\ environment\ variables\ and\ system\ properties)\ or\ "$${file;/path/to/file}"\ (for\ secret\ file\ contents).=Caminho para um armazenamento de chaves que cont\u00e9m o certificado e o par de chaves que este servidor apresentar\u00e1 aos clientes quando acessado por HTTPS. Se esse valor estiver em branco, o padr\u00e3o ser\u00e1 usar o valor da propriedade do sistema "javax.net.ssl.keyStore". Este valor pode usar express\u00f5es de expans\u00e3o de vari\u00e1veis \u200b\u200bno formato "$${name}" (para vari\u00e1veis \u200b\u200bde ambiente e propriedades do sistema) ou "$${file;/path/to/file}" (para conte\u00fado de arquivo secreto). +Path\ to\ database\ file=Caminho para o arquivo do banco de dados +Path\ to\ external\ config\ file\ (in\ Jetty\ IOC\ XML\ format)=Caminho para o arquivo de configura\u00e7\u00e3o externo (no formato Jetty IOC XML) +Path\ to\ the\ TLS\ trust\ store\ that\ is\ used\ when\ client\ authentication\ is\ required.\ Ignored\ if\ client\ certificate\ authentication\ is\ not\ used.\ Certificates\ in\ this\ file\ designate\ the\ signing\ authorities\ for\ client\ certificates\ that\ will\ be\ trusted.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ "javax.net.ssl.trustStore"\ system\ property.\ This\ value\ can\ use\ variable\ expansion\ expressions\ of\ the\ form\ "$${name}"\ (for\ environment\ variables\ and\ system\ properties)\ or\ "$${file;/path/to/file}"\ (for\ secret\ file\ contents).=Caminho para o armazenamento confi\u00e1vel TLS usado quando a autentica\u00e7\u00e3o do cliente \u00e9 necess\u00e1ria. Ignorado se a autentica\u00e7\u00e3o de certificado de cliente n\u00e3o for usada. Os certificados neste arquivo designam as autoridades de assinatura dos certificados de cliente que ser\u00e3o confi\u00e1veis. Se esse valor estiver em branco, o padr\u00e3o ser\u00e1 usar o valor da propriedade do sistema "javax.net.ssl.trustStore". Este valor pode usar express\u00f5es de expans\u00e3o de vari\u00e1veis \u200b\u200bno formato "$${name}" (para vari\u00e1veis \u200b\u200bde ambiente e propriedades do sistema) ou "$${file;/path/to/file}" (para conte\u00fado de arquivo secreto). +Port\ number\ to\ connect\ to\ on\ remote\ host\ (0\ to\ automatically\ select\ a\ port)=N\u00famero da porta para conex\u00e3o no host remoto (0 para selecionar automaticamente uma porta) +SOS\ Endpoint=Ponto final SOS +SOS\ endpoint\ to\ fetch\ data\ from=Endpoint SOS para buscar dados +SOS\ endpoint\ where\ the\ requests\ are\ sent=Endpoint SOS para onde as solicita\u00e7\u00f5es s\u00e3o enviadas +SPS\ Endpoint=Ponto final do SPS +SPS\ endpoint\ to\ send\ commands\ to=Endpoint SPS para enviar comandos para +Security\ related\ options=Op\u00e7\u00f5es relacionadas \u00e0 seguran\u00e7a +Sensor\ UID=UID do sensor +Set\ if\ WebSocket\ protocol\ should\ be\ used\ to\ get\ streaming\ data\ from\ SOS=Defina se o protocolo WebSocket deve ser usado para obter dados de streaming do SOS +Set\ if\ offering\ is\ enabled,\ unset\ if\ disabled=Definir se a oferta estiver habilitada, desmarcar se estiver desabilitada +Set\ if\ websockets\ protocol\ should\ be\ used\ to\ send\ commands\ to\ SPS=Defina se o protocolo websockets deve ser usado para enviar comandos ao SPS +Set\ to\ compact\ the\ database\ file\ when\ the\ database\ module\ is\ stopped\ or\ restarted=Definido para compactar o arquivo de banco de dados quando o m\u00f3dulo de banco de dados for interrompido ou reiniciado +Set\ to\ compress\ underlying\ file\ storage=Definido para compactar o armazenamento de arquivos subjacente +Set\ to\ display\ MVStore\ debug\ info\ when\ database\ is\ closed\ (only\ if\ DEBUG\ log\ is\ also\ enabled)=Definido para exibir informa\u00e7\u00f5es de depura\u00e7\u00e3o do MVStore quando o banco de dados estiver fechado (somente se o log DEBUG tamb\u00e9m estiver habilitado) +Set\ to\ enable\ spatial\ indexing\ of\ individual\ observations\ sampling\ locations\ (when\ provided)=Definido para ativar a indexa\u00e7\u00e3o espacial de locais de amostragem de observa\u00e7\u00f5es individuais (quando fornecido) +Set\ to\ open\ the\ database\ as\ read-only=Defina para abrir o banco de dados como somente leitura +Set\ to\ true\ to\ enable\ transactional\ operation\ support=Defina como verdadeiro para ativar o suporte \u00e0 opera\u00e7\u00e3o transacional +Size\ of\ the\ auto-commit\ write\ buffer,\ in\ KB=Tamanho do buffer de grava\u00e7\u00e3o de confirma\u00e7\u00e3o autom\u00e1tica, em KB +TCP\ port\ where\ server\ will\ listen\ for\ secure\ HTTP\ (HTTPS)\ connections\ (use\ 0\ to\ disable\ HTTPS).=Porta TCP onde o servidor escutar\u00e1 conex\u00f5es HTTP seguras (HTTPS) (use 0 para desabilitar HTTPS). +TCP\ port\ where\ server\ will\ listen\ for\ unsecure\ HTTP\ connections\ (use\ 0\ to\ disable\ HTTP).=Porta TCP onde o servidor escutar\u00e1 conex\u00f5es HTTP n\u00e3o seguras (use 0 para desativar o HTTP). +Time-out\ after\ which\ real-time\ requests\ are\ disabled\ if\ no\ more\ measurements\ are\ received\ (in\ seconds).\ Real-time\ is\ reactivated\ as\ soon\ as\ new\ records\ start\ being\ received\ again=Tempo limite ap\u00f3s o qual as solicita\u00e7\u00f5es em tempo real ser\u00e3o desativadas se n\u00e3o forem recebidas mais medi\u00e7\u00f5es (em segundos). O tempo real \u00e9 reativado assim que novos registros voltam a ser recebidos +Time-out\ period\ after\ which\ a\ template\ ID\ reserved\ using\ InsertResultTemplate\ will\ expire\ if\ not\ used\ in\ InsertResult\ requests\ (in\ seconds)=Per\u00edodo de tempo limite ap\u00f3s o qual um ID de modelo reservado usando InsertResultTemplate expirar\u00e1 se n\u00e3o for usado em solicita\u00e7\u00f5es InsertResult (em segundos) +Timeout\ after\ which\ data\ is\ released\ to\ the\ caller\ if\ at\ least\ one\ byte\ was\ received\ (in\ ms)=Tempo limite ap\u00f3s o qual os dados ser\u00e3o liberados para o chamador se pelo menos um byte for recebido (em ms) +URI\ Prefix\ Map=Mapa de prefixo URI +Unique\ ID\ (full\ URN\ or\ only\ suffix)\ to\ use\ for\ the\ sensor\ system\ or\ 'auto'\ to\ use\ the\ UUID\ randomly\ generated\ the\ first\ time\ the\ module\ is\ initialized=ID exclusivo (URN completo ou apenas sufixo) para usar no sistema de sensor ou ''autom\u00e1tico'' para usar o UUID gerado aleatoriamente na primeira vez que o m\u00f3dulo for inicializado +Unique\ ID\ of\ a\ system\ that\ this\ configuration\ applies\ to.\nCan\ include\ a\ trailing\ wildcard\ '*'\ to\ match\ several\ systems\ at\ once.=ID exclusivo de um sistema ao qual esta configura\u00e7\u00e3o se aplica.\nPode incluir um curinga final ''*'' para corresponder a v\u00e1rios sistemas ao mesmo tempo. +Unique\ ID\ of\ sensor\ to\ connect\ to\ on\ SOS\ and\ SPS\ servers=ID exclusivo do sensor para conex\u00e3o em servidores SOS e SPS +Unique\ ID\ of\ system\ that\ this\ configuration\ applies\ to.\nCan\ include\ a\ trailing\ wildcard\ '*'\ to\ match\ several\ systems\ at\ once.=ID exclusivo do sistema ao qual esta configura\u00e7\u00e3o se aplica.\nPode incluir um curinga final ''*'' para corresponder a v\u00e1rios sistemas ao mesmo tempo. +Use\ WebSockets\ for\ SOS=Use WebSockets para SOS +Use\ WebSockets\ for\ SPS=Use WebSockets para SPS + +Node\ ID=ID do n\u00f3 +Stats\ Frequency\ (min)=Frequ\u00eancia de estat\u00edsticas (min) +Database\ URL=URL do banco de dados +Database\ Name=Nome do banco de dados +ID\ Generator=Gerador de ID +Database\ Number=N\u00famero do banco de dados +Remote\ Host=Anfitri\u00e3o Remoto +Remote\ Port=Porta remota +Lane\ Width\ (m)=Largura da pista (m) +Enable\ EML\ Analysis=Habilitar an\u00e1lise EML +Is\ Collimated=Est\u00e1 colimado +Stream\ Path=Caminho do fluxo +Lane\ Options\ Config=Configura\u00e7\u00e3o de op\u00e7\u00f5es de pista diff --git a/sensorhub-webui-core/src/main/resources/org/sensorhub/ui/i18n/messages_ru.properties b/sensorhub-webui-core/src/main/resources/org/sensorhub/ui/i18n/messages_ru.properties new file mode 100644 index 0000000000..85b0496172 --- /dev/null +++ b/sensorhub-webui-core/src/main/resources/org/sensorhub/ui/i18n/messages_ru.properties @@ -0,0 +1,543 @@ +app.title=OpenSensorHub +tab.sensors=\u0414\u0430\u0442\u0447\u0438\u043a\u0438 +tab.databases=\u0411\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445 +tab.processing=\u041e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 +tab.services=\u0421\u0435\u0440\u0432\u0438\u0441\u044b +tab.clients=\u041a\u043b\u0438\u0435\u043d\u0442\u044b +tab.network=\u0421\u0435\u0442\u044c +tab.security=\u0411\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c +action.shutdown=\u0412\u044b\u043a\u043b\u044e\u0447\u0438\u0442\u044c +action.logout=\u0412\u044b\u0439\u0442\u0438 +action.save=\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c +action.addModule=\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043c\u043e\u0434\u0443\u043b\u044c +action.addSubmodule=\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043f\u043e\u0434\u043c\u043e\u0434\u0443\u043b\u044c +action.removeModule=\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u043c\u043e\u0434\u0443\u043b\u044c +action.removeSubmodule=\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u043f\u043e\u0434\u043c\u043e\u0434\u0443\u043b\u044c +action.start=\u0421\u0442\u0430\u0440\u0442 +action.stop=\u0421\u0442\u043e\u043f +action.restart=\u041f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a +action.forceInit=\u041f\u0440\u0438\u043d\u0443\u0434. \u0438\u043d\u0438\u0446. +action.selectAll=\u0412\u044b\u0431\u0440\u0430\u0442\u044c \u0432\u0441\u0435 +action.deselectAll=\u0421\u043d\u044f\u0442\u044c \u0432\u044b\u0431\u043e\u0440 +dialog.shutdown.title=\u0412\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043d\u0430\u0447\u0430\u0442\u043e... +dialog.shutdown.message=\u0418\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u043d\u0435\u0442 \u043e\u0442\u0432\u0435\u0447\u0430\u0442\u044c +dialog.shutdown.confirm=\u0412\u044b \u0443\u0432\u0435\u0440\u0435\u043d\u044b, \u0447\u0442\u043e \u0445\u043e\u0442\u0438\u0442\u0435 \u0432\u044b\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043a\u043e\u043d\u0446\u0435\u043d\u0442\u0440\u0430\u0442\u043e\u0440 \u0434\u0430\u0442\u0447\u0438\u043a\u043e\u0432? +dialog.logout.confirm=\u0412\u044b \u0443\u0432\u0435\u0440\u0435\u043d\u044b, \u0447\u0442\u043e \u0445\u043e\u0442\u0438\u0442\u0435 \u0432\u044b\u0439\u0442\u0438? +dialog.save.confirm=\u0412\u044b \u0443\u0432\u0435\u0440\u0435\u043d\u044b, \u0447\u0442\u043e \u0445\u043e\u0442\u0438\u0442\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e? +msg.configSaved=\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f SensorHub \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0430 +msg.configSaveError=\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e +dialog.remove.confirm=\u0412\u044b \u0443\u0432\u0435\u0440\u0435\u043d\u044b, \u0447\u0442\u043e \u0445\u043e\u0442\u0438\u0442\u0435 \u0443\u0434\u0430\u043b\u0438\u0442\u044c {0}?
\u0412\u0441\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0431\u0443\u0434\u0443\u0442 \u0443\u0442\u0435\u0440\u044f\u043d\u044b. +msg.removeError={0} \u043d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0443\u0434\u0430\u043b\u0438\u0442\u044c +msg.startError={0} \u043d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c +msg.stopError={0} \u043d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c +msg.restartError={0} \u043d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c +msg.reinitError={0} \u043d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0440\u0435\u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c +msg.loadError=\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u043c\u043e\u0434\u0443\u043b\u044c +msg.addSubmoduleError=\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043f\u043e\u0434\u043c\u043e\u0434\u0443\u043b\u044c +about.title=\u041e OpenSensorHub +about.desc=\u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u0430\u044f \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430 \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0441\u0435\u0442\u0435\u0439 \u0443\u043c\u043d\u044b\u0445 \u0434\u0430\u0442\u0447\u0438\u043a\u043e\u0432 \u0438 IoT +about.license=\u041b\u0438\u0446\u0435\u043d\u0437\u0438\u044f Mozilla Public License v2.0 +about.version=\u0412\u0435\u0440\u0441\u0438\u044f: +about.build=\u041d\u043e\u043c\u0435\u0440 \u0441\u0431\u043e\u0440\u043a\u0438: +about.deployment=\u0418\u043c\u044f \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u044f: +tooltip.shutdown=\u0412\u044b\u043a\u043b\u044e\u0447\u0438\u0442\u044c SensorHub +tooltip.logout=\u0412\u044b\u0439\u0442\u0438 \u0438\u0437 \u0443\u0437\u043b\u0430 OSH +tooltip.save=\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e SensorHub +dialog.start.confirm=\u0412\u044b \u0443\u0432\u0435\u0440\u0435\u043d\u044b, \u0447\u0442\u043e \u0445\u043e\u0442\u0438\u0442\u0435 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c {0}? +dialog.stop.confirm=\u0412\u044b \u0443\u0432\u0435\u0440\u0435\u043d\u044b, \u0447\u0442\u043e \u0445\u043e\u0442\u0438\u0442\u0435 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c {0}? +dialog.restart.confirm=\u0412\u044b \u0443\u0432\u0435\u0440\u0435\u043d\u044b, \u0447\u0442\u043e \u0445\u043e\u0442\u0438\u0442\u0435 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c {0}? +dialog.reinit.confirm=\u0412\u044b \u0443\u0432\u0435\u0440\u0435\u043d\u044b, \u0447\u0442\u043e \u0445\u043e\u0442\u0438\u0442\u0435 \u043f\u0440\u0438\u043d\u0443\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0440\u0435\u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c {0}? +backgroundUpdate=\u0424\u043e\u043d\u043e\u0432\u043e\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 +sigmaThreshold=\u041f\u043e\u0440\u043e\u0433 \u0421\u0438\u0433\u043c\u0430 +nuclideIdentification=\u0418\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u043d\u0443\u043a\u043b\u0438\u0434\u043e\u0432 +tamperAlarm=\u0422\u0440\u0435\u0432\u043e\u0433\u0430 \u0432\u0437\u043b\u043e\u043c\u0430 +occupancySensor=\u0414\u0430\u0442\u0447\u0438\u043a \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u044f +stateOfHealth=\u0421\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0437\u0434\u043e\u0440\u043e\u0432\u044c\u044f +soh=\u0421\u041e\u0425 +1ScanThisQrCodeWithYourAuthenticatorApp=1. \u041e\u0442\u0441\u043a\u0430\u043d\u0438\u0440\u0443\u0439\u0442\u0435 \u044d\u0442\u043e\u0442 QR-\u043a\u043e\u0434 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438: +2EnterThe6digitCodeGeneratedByTheApp=2. \u0412\u0432\u0435\u0434\u0438\u0442\u0435 6-\u0437\u043d\u0430\u0447\u043d\u044b\u0439 \u043a\u043e\u0434, \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043c: +orEnterThisSecretKeyManually=\u0418\u043b\u0438 \u0432\u0432\u0435\u0434\u0438\u0442\u0435 \u044d\u0442\u043e\u0442 \u0441\u0435\u043a\u0440\u0435\u0442\u043d\u044b\u0439 \u043a\u043b\u044e\u0447 \u0432\u0440\u0443\u0447\u043d\u0443\u044e: +loadingBundlesInformation=\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e \u043f\u0430\u043a\u0435\u0442\u0430\u0445... +loadingPackageInformation=\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e \u043f\u0430\u043a\u0435\u0442\u0435... +arrayComponentNotSupported=\u041a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f +twofactorAuthentication=\u0414\u0432\u0443\u0445\u0444\u0430\u043a\u0442\u043e\u0440\u043d\u0430\u044f \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f +installMorePackages=\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u0430\u043a\u0435\u0442\u044b... +errorGeneratingQrCode=\u041e\u0448\u0438\u0431\u043a\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f QR-\u043a\u043e\u0434\u0430 +installMoreModules=\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043c\u043e\u0434\u0443\u043b\u0438... +detailedInstructions=\u041f\u043e\u0434\u0440\u043e\u0431\u043d\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 +availableNetworks=\u0414\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u0441\u0435\u0442\u0438 +processParameters=\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 +verifyAndEnable=\u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u0438 \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u0435 +dataSourceInfo=\u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e\u0431 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 +detectedDevices=\u041e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u043d\u044b\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 +installSelected=\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u0435 +databaseContent=\u0421\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445 +itemsPerPage=\u042d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435: +commandInputs=\u041a\u043e\u043c\u0430\u043d\u0434\u043d\u044b\u0435 \u0432\u0445\u043e\u0434\u044b +processInputs=\u0412\u0445\u043e\u0434\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 +providerClass=\u041a\u043b\u0430\u0441\u0441 \u043f\u043e\u0441\u0442\u0430\u0432\u0449\u0438\u043a\u0430 +processName=\u0418\u043c\u044f \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430: +configuration=\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f +applyChanges=\u041f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f +sendCommand=\u041e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u0443 +useAddress=\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0430\u0434\u0440\u0435\u0441 +selectNone=\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u041d\u0435\u0442 +timeRange=\u0412\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d: +permissions=\u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f +startScan=\u041d\u0430\u0447\u0430\u0442\u044c \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 +noReadme=\u041d\u0435\u0442 README +stopScan=\u041e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 +reset2fa=\u0421\u0431\u0440\u043e\u0441\u0438\u0442\u044c 2FA +previous=\u041f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0439 +useName=\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0438\u043c\u044f +outputs=\u0412\u044b\u0445\u043e\u0434\u044b +refresh=\u041e\u0431\u043d\u043e\u0432\u0438\u0442\u044c +modify=\u0418\u0437\u043c\u0435\u043d\u0438\u0442\u044c +cancel=\u041e\u0442\u043c\u0435\u043d\u0430 +logout=\u0412\u044b\u0445\u043e\u0434 \u0438\u0437 \u0441\u0438\u0441\u0442\u0435\u043c\u044b +remove=\u0423\u0434\u0430\u043b\u044f\u0442\u044c +verify=\u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c +first=\u041f\u0435\u0440\u0432\u044b\u0439 +login=\u0410\u0432\u0442\u043e\u0440\u0438\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f +last=\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 +view=\u0412\u0418\u0414 +next=\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 +stop=\u041e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c\u0441\u044f +add=\u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c +ui.empty=< +ok=\u0425\u041e\u0420\u041e\u0428\u041e +1ScanThisQrCodeWithYourAuthenticatorApp1=1. \u041e\u0442\u0441\u043a\u0430\u043d\u0438\u0440\u0443\u0439\u0442\u0435 \u044d\u0442\u043e\u0442 QR-\u043a\u043e\u0434 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438: +2EnterThe6digitCodeGeneratedByTheApp1=2. \u0412\u0432\u0435\u0434\u0438\u0442\u0435 6-\u0437\u043d\u0430\u0447\u043d\u044b\u0439 \u043a\u043e\u0434, \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043c: +orEnterThisSecretKeyManually1=\u0418\u043b\u0438 \u0432\u0432\u0435\u0434\u0438\u0442\u0435 \u044d\u0442\u043e\u0442 \u0441\u0435\u043a\u0440\u0435\u0442\u043d\u044b\u0439 \u043a\u043b\u044e\u0447 \u0432\u0440\u0443\u0447\u043d\u0443\u044e: +loadingPackageInformation1=\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e \u043f\u0430\u043a\u0435\u0442\u0435... +loadingBundlesInformation1=\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e \u043f\u0430\u043a\u0435\u0442\u0430\u0445... +arrayComponentNotSupported1=\u041a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f +twofactorAuthentication1=\u0414\u0432\u0443\u0445\u0444\u0430\u043a\u0442\u043e\u0440\u043d\u0430\u044f \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f +errorGeneratingQrCode1=\u041e\u0448\u0438\u0431\u043a\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f QR-\u043a\u043e\u0434\u0430 +installMorePackages1=\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u0430\u043a\u0435\u0442\u044b... +installMoreModules1=\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043c\u043e\u0434\u0443\u043b\u0438... +detailedInstructions1=\u041f\u043e\u0434\u0440\u043e\u0431\u043d\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 +processParameters1=\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 +availableNetworks1=\u0414\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u0441\u0435\u0442\u0438 +verifyAndEnable1=\u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u0438 \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u0435 +databaseContent1=\u0421\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445 +installSelected1=\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u0435 +dataSourceInfo1=\u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e\u0431 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 +detectedDevices1=\u041e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u043d\u044b\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 +itemsPerPage1=\u042d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435: +processInputs1=\u0412\u0445\u043e\u0434\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 +commandInputs1=\u041a\u043e\u043c\u0430\u043d\u0434\u043d\u044b\u0435 \u0432\u0445\u043e\u0434\u044b +providerClass1=\u041a\u043b\u0430\u0441\u0441 \u043f\u043e\u0441\u0442\u0430\u0432\u0449\u0438\u043a\u0430 +configuration1=\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f +processName1=\u0418\u043c\u044f \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430: +applyChanges1=\u041f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f +sendCommand1=\u041e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u0443 +timeRange1=\u0412\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d: +useAddress1=\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0430\u0434\u0440\u0435\u0441 +permissions1=\u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f +selectNone1=\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u041d\u0435\u0442 +startScan1=\u041d\u0430\u0447\u0430\u0442\u044c \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 +noReadme1=\u041d\u0435\u0442 README +reset2fa1=\u0421\u0431\u0440\u043e\u0441\u0438\u0442\u044c 2FA +stopScan1=\u041e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 +useName1=\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0438\u043c\u044f +previous1=\u041f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0439 +refresh1=\u041e\u0431\u043d\u043e\u0432\u0438\u0442\u044c +outputs1=\u0412\u044b\u0445\u043e\u0434\u044b +cancel1=\u041e\u0442\u043c\u0435\u043d\u0430 +logout1=\u0412\u044b\u0445\u043e\u0434 \u0438\u0437 \u0441\u0438\u0441\u0442\u0435\u043c\u044b +modify1=\u0418\u0437\u043c\u0435\u043d\u0438\u0442\u044c +remove1=\u0423\u0434\u0430\u043b\u044f\u0442\u044c +verify1=\u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c +first1=\u041f\u0435\u0440\u0432\u044b\u0439 +login1=\u0410\u0432\u0442\u043e\u0440\u0438\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f +view1=\u0412\u0418\u0414 +stop1=\u041e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c\u0441\u044f +next1=\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 +last1=\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 +add1=\u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c +last2=>> +first2=<< +ok1=\u0425\u041e\u0420\u041e\u0428\u041e +next2=> +previous2=< + +pleaseEnterAUserIDFirst1=\u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0432\u0432\u0435\u0434\u0438\u0442\u0435 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f +reset2FA1=\u0421\u0431\u0440\u043e\u0441\u0438\u0442\u044c 2FA +enable2FA1=\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c 2FA +twoFAEnabledSuccessfully1=2FA \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0430 +invalidCode1=\u041d\u0435\u0432\u0435\u0440\u043d\u044b\u0439 \u043a\u043e\u0434 +allowedAndDeniedPermissionsForUsersWithThisRole1=\u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u044b \u0438 \u0437\u0430\u043f\u0440\u0435\u0449\u0435\u043d\u044b \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0441 \u044d\u0442\u043e\u0439 \u0440\u043e\u043b\u044c\u044e +manualEntry1=\u0420\u0443\u0447\u043d\u043e\u0439 \u0432\u0432\u043e\u0434 +toggleAutoRefreshDataOncePerSecond1=\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0440\u0430\u0437 \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0443 +lookupSystem1=\u0421\u0438\u0441\u0442\u0435\u043c\u0430 \u043f\u043e\u0438\u0441\u043a\u0430 +lookupModule1=\u041c\u043e\u0434\u0443\u043b\u044c \u043f\u043e\u0438\u0441\u043a\u0430 +lookupAddress1=\u0410\u0434\u0440\u0435\u0441 \u043f\u043e\u0438\u0441\u043a\u0430 +showPassword1=\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0430\u0440\u043e\u043b\u044c +showHistogram1=\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0433\u0438\u0441\u0442\u043e\u0433\u0440\u0430\u043c\u043c\u0443 +hideHistogram1=\u0421\u043a\u0440\u044b\u0442\u044c \u0433\u0438\u0441\u0442\u043e\u0433\u0440\u0430\u043c\u043c\u0443 +reloadDataFromDatabase1=\u041f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445 +fois1=\u0441\u0432\u043e\u0431\u043e\u0434\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 +username1=\u0418\u043c\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f +password1=\u041f\u0430\u0440\u043e\u043b\u044c +loginFailed1=\u041e\u0448\u0438\u0431\u043a\u0430 \u0432\u0445\u043e\u0434\u0430 +invalidUsernameOrPassword1=\u041d\u0435\u0432\u0435\u0440\u043d\u043e\u0435 \u0438\u043c\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0438\u043b\u0438 \u043f\u0430\u0440\u043e\u043b\u044c +verificationCode1=\u041f\u0440\u043e\u0432\u0435\u0440\u043e\u0447\u043d\u044b\u0439 \u043a\u043e\u0434 +verificationFailed1=\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043d\u0435 \u0443\u0434\u0430\u043b\u0430\u0441\u044c +datasource1=\u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u0434\u0430\u043d\u043d\u044b\u0445 +process1=\u041f\u0440\u043e\u0446\u0435\u0441\u0441 +logoutFromOshNode1=\u0412\u044b\u0445\u043e\u0434 \u0438\u0437 \u0443\u0437\u043b\u0430 OSH +setParameter1=\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 +setupTwoFactorAuthentication1=\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0434\u0432\u0443\u0445\u0444\u0430\u043a\u0442\u043e\u0440\u043d\u043e\u0439 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 + +action.new_item=\u041d\u043e\u0432\u044b\u0439 {0} +Lane\ System=\u0421\u0438\u0441\u0442\u0435\u043c\u0430 \u043f\u043e\u043b\u043e\u0441 +Module\ Class=\u041a\u043b\u0430\u0441\u0441 \u043c\u043e\u0434\u0443\u043b\u044f +Module\ Name=\u0418\u043c\u044f \u043c\u043e\u0434\u0443\u043b\u044f +Module\ ID=\u0418\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u043c\u043e\u0434\u0443\u043b\u044f +Description=\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 +SensorML\ URL=URL-\u0430\u0434\u0440\u0435\u0441 SensorML +UniqueID=\u0423\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439ID +Last\ Updated=\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 +Auto\ Start=\u0410\u0432\u0442\u043e\u0437\u0430\u043f\u0443\u0441\u043a +Delete\ Data\ on\ Lane\ Removal=\u0423\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u043e\u0431 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0438 \u043f\u043e\u043b\u043e\u0441\u044b \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f +Latitude=\u0428\u0438\u0440\u043e\u0442\u0430 +Longitude=\u0414\u043e\u043b\u0433\u043e\u0442\u0430 +Altitude=\u0412\u044b\u0441\u043e\u0442\u0430 +Initial\ RPM\ Config=\u041d\u0430\u0447\u0430\u043b\u044c\u043d\u0430\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f RPM +Initial\ Camera\ Config=\u041d\u0430\u0447\u0430\u043b\u044c\u043d\u0430\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u043a\u0430\u043c\u0435\u0440\u044b +Lane\ Options\ Config=\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u043e\u043f\u0446\u0438\u0439 \u043f\u043e\u043b\u043e\u0441\u044b \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f +tab.general=\u041e\u0431\u0449\u0438\u0439 +tab.readme=\u0427\u0418\u0422\u0410\u0419\u0422\u0415 +Fixed\ Location=\u0424\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u043c\u0435\u0441\u0442\u043e\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 +Fixed\ Orientation=\u0424\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u043e\u0440\u0438\u0435\u043d\u0442\u0430\u0446\u0438\u044f +# Auto-extracted DisplayInfo labels and descriptions +URL\ of\ SensorML\ file\ providing\ the\ base\ description\ of\ the\ sensor=URL-\u0430\u0434\u0440\u0435\u0441 \u0444\u0430\u0439\u043b\u0430 SensorML, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0439 \u0431\u0430\u0437\u043e\u0432\u043e\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0434\u0430\u0442\u0447\u0438\u043a\u0430. +Time\ at\ which\ the\ SensorML\ description\ was\ last\ updated=\u0412\u0440\u0435\u043c\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0433\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f SensorML. +Geodetic\ latitude,\ in\ degrees=\u0413\u0435\u043e\u0434\u0435\u0437\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0448\u0438\u0440\u043e\u0442\u0430, \u0432 \u0433\u0440\u0430\u0434\u0443\u0441\u0430\u0445 +Longitude,\ in\ degrees=\u0414\u043e\u043b\u0433\u043e\u0442\u0430, \u0432 \u0433\u0440\u0430\u0434\u0443\u0441\u0430\u0445 +Height\ above\ ellipsoid,\ in\ meters=\u0412\u044b\u0441\u043e\u0442\u0430 \u043d\u0430\u0434 \u044d\u043b\u043b\u0438\u043f\u0441\u043e\u0438\u0434\u043e\u043c, \u0432 \u043c\u0435\u0442\u0440\u0430\u0445 +X\ coordinate,\ in\ meters=\u041a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430 X, \u0432 \u043c\u0435\u0442\u0440\u0430\u0445 +Y\ coordinate,\ in\ meters=\u041a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430 Y, \u0432 \u043c\u0435\u0442\u0440\u0430\u0445 +Z\ coordinate,\ in\ meters=\u041a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430 Z, \u0432 \u043c\u0435\u0442\u0440\u0430\u0445 +Pitch\ angle\ about\ Y\ axis,\ in\ degrees=\u0423\u0433\u043e\u043b \u0442\u0430\u043d\u0433\u0430\u0436\u0430 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043e\u0441\u0438 Y, \u0432 \u0433\u0440\u0430\u0434\u0443\u0441\u0430\u0445 +Roll\ angle\ about\ X\ axis,\ in\ degrees=\u0423\u0433\u043e\u043b \u043a\u0440\u0435\u043d\u0430 \u0432\u043e\u043a\u0440\u0443\u0433 \u043e\u0441\u0438 X, \u0432 \u0433\u0440\u0430\u0434\u0443\u0441\u0430\u0445 +Location\ in\ EPSG\:4979\ coordinate\ reference\ frame=\u041c\u0435\u0441\u0442\u043e\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 EPSG: 4979. +Database\ Number=\u041d\u043e\u043c\u0435\u0440 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445 +Numerical\ identifier\ of\ the\ database.\ Each\ database\ that\ should\ be\ exposed\ via\ the\ federated\ database\ API\ must\ have\ a\ unique\ number\ on\ the\ sensor\ hub.\ If\ visibility\ through\ the\ federated\ database\ is\ not\ desired,\ it\ can\ be\ omitted.=\u0427\u0438\u0441\u043b\u043e\u0432\u043e\u0439 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445. \u041a\u0430\u0436\u0434\u0430\u044f \u0431\u0430\u0437\u0430 \u0434\u0430\u043d\u043d\u044b\u0445, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u0447\u0435\u0440\u0435\u0437 API \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u043d\u043e\u0439 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445, \u0434\u043e\u043b\u0436\u043d\u0430 \u0438\u043c\u0435\u0442\u044c \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u043d\u043e\u043c\u0435\u0440 \u0432 \u043a\u043e\u043d\u0446\u0435\u043d\u0442\u0440\u0430\u0442\u043e\u0440\u0435 \u0434\u0430\u0442\u0447\u0438\u043a\u043e\u0432. \u0415\u0441\u043b\u0438 \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u044c \u0447\u0435\u0440\u0435\u0437 \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u043d\u0443\u044e \u0431\u0430\u0437\u0443 \u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0435\u0436\u0435\u043b\u0430\u0442\u0435\u043b\u044c\u043d\u0430, \u0435\u0435 \u043c\u043e\u0436\u043d\u043e \u043e\u043f\u0443\u0441\u0442\u0438\u0442\u044c. +Enables\ fine-grained\ permission-based\ access\ control\ for\ this\ module=\u0412\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0434\u0435\u0442\u0430\u043b\u044c\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f. +Require\ Authentication=\u0422\u0440\u0435\u0431\u043e\u0432\u0430\u0442\u044c \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044e +Set\ to\ require\ remote\ users\ to\ be\ authentified\ before\ they\ can\ use\ this\ service=\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e, \u0447\u0442\u043e \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u044b\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u0434\u043e\u043b\u0436\u043d\u044b \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442\u044c \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044e, \u043f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u043e\u043d\u0438 \u0441\u043c\u043e\u0433\u0443\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u0443 \u0443\u0441\u043b\u0443\u0433\u0443. +Endpoint=\u041a\u043e\u043d\u0435\u0447\u043d\u0430\u044f \u0442\u043e\u0447\u043a\u0430 +Unique\ local\ ID\ of\ the\ module=\u0423\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u043c\u043e\u0434\u0443\u043b\u044f +User\ description\ for\ the\ module=\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0434\u043b\u044f \u043c\u043e\u0434\u0443\u043b\u044f +Set\ to\ automatically\ start\ the\ module\ when\ it\ is\ loaded=\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0437\u0430\u043f\u0443\u0441\u043a \u043c\u043e\u0434\u0443\u043b\u044f \u043f\u0440\u0438 \u0435\u0433\u043e \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0435. +Module\ implementation\ class=\u041a\u043b\u0430\u0441\u0441 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043c\u043e\u0434\u0443\u043b\u044f +User\ chosen\ name\ for\ the\ module=\u0418\u043c\u044f, \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c \u0434\u043b\u044f \u043c\u043e\u0434\u0443\u043b\u044f +Name\ of\ topic/queue\ to\ use=\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0442\u0435\u043c\u044b/\u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u0434\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f +Enable/disable\ writing\ to\ queue=\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c/\u0432\u044b\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0437\u0430\u043f\u0438\u0441\u044c \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u044c +Enable/disable\ reading\ from\ queue=\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c/\u0432\u044b\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0447\u0442\u0435\u043d\u0438\u0435 \u0438\u0437 \u043e\u0447\u0435\u0440\u0435\u0434\u0438 +Protocol\ Options=\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430 +Common\ Configuration=\u041e\u0431\u0449\u0430\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f +Common\ configuration\ for\ sensors\ in\ the\ array=\u041e\u0431\u0449\u0430\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u0434\u0430\u0442\u0447\u0438\u043a\u043e\u0432 \u0432 \u043c\u0430\u0441\u0441\u0438\u0432\u0435 +Sensors\ Configuration=\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u0434\u0430\u0442\u0447\u0438\u043a\u043e\u0432 +Subsystem\ Config=\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u043f\u043e\u0434\u0441\u0438\u0441\u0442\u0435\u043c\u044b +Configuration\ of\ the\ subsystem=\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u043f\u043e\u0434\u0441\u0438\u0441\u0442\u0435\u043c\u044b +Relative\ Location=\u041e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u043c\u0435\u0441\u0442\u043e\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 +Location\ of\ this\ subsystem\ relative\ to\ the\ main\ system\ or\ platform\ reference\ frame=\u0420\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u044d\u0442\u043e\u0439 \u043f\u043e\u0434\u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0438\u043b\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043e\u0442\u0441\u0447\u0435\u0442\u0430 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b. +Relative\ Orientation=\u041e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u043e\u0440\u0438\u0435\u043d\u0442\u0430\u0446\u0438\u044f +Orientation\ of\ this\ subsystem\ relative\ to\ the\ main\ system\ or\ platform\ reference\ frame=\u041e\u0440\u0438\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u044d\u0442\u043e\u0439 \u043f\u043e\u0434\u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043e\u0442\u0441\u0447\u0435\u0442\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0438\u043b\u0438 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b. +Fixed\ system\ orientation\ in\ the\ local\ NED\ reference\ frame=\u0418\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0430 \u200b\u200b\u043e\u0440\u0438\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0432 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043e\u0442\u0441\u0447\u0435\u0442\u0430 NED. +Subsystems=\u041f\u043e\u0434\u0441\u0438\u0441\u0442\u0435\u043c\u044b +Configuration\ of\ components\ of\ this\ sensor\ system=\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 \u044d\u0442\u043e\u0439 \u0441\u0435\u043d\u0441\u043e\u0440\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b +Database\ Config=\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445 +Configuration\ of\ underlying\ database=\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u0431\u0430\u0437\u043e\u0432\u043e\u0439 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445 +System\ UIDs=\u0421\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0435 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u044b +Unique\ IDs\ of\ system\ drivers\ handled\ by\ this\ database=\u0423\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u044b \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0445 \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u043e\u0432, \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u043c\u044b\u0445 \u044d\u0442\u043e\u0439 \u0431\u0430\u0437\u043e\u0439 \u0434\u0430\u043d\u043d\u044b\u0445. +Automatic\ Purge\ Policy=\u041f\u043e\u043b\u0438\u0442\u0438\u043a\u0430 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043e\u0447\u0438\u0441\u0442\u043a\u0438 +Policy\ for\ automatically\ purging\ historical\ data=\u041f\u043e\u043b\u0438\u0442\u0438\u043a\u0430 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043e\u0447\u0438\u0441\u0442\u043a\u0438 \u0438\u0441\u0442\u043e\u0440\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 +Uncheck\ to\ disable\ auto-purge\ temporarily=\u0421\u043d\u0438\u043c\u0438\u0442\u0435 \u0444\u043b\u0430\u0436\u043e\u043a, \u0447\u0442\u043e\u0431\u044b \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u043e\u0447\u0438\u0441\u0442\u043a\u0443. +Purge\ Execution\ Period=\u041f\u0435\u0440\u0438\u043e\u0434 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043e\u0447\u0438\u0441\u0442\u043a\u0438 +Unique\ IDs\ of\ system\ drivers\ to\ purge=\u0423\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u044b \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0445 \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u043e\u0432 \u0434\u043b\u044f \u043e\u0447\u0438\u0441\u0442\u043a\u0438 +Max\ Record\ Age=\u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u0435\u043a\u043e\u0440\u0434\u043d\u044b\u0439 \u0432\u043e\u0437\u0440\u0430\u0441\u0442 +SensorML\ File=\u0424\u0430\u0439\u043b SensorML +Path\ of\ SensorML\ description\ of\ the\ process=\u041f\u0443\u0442\u044c SensorML \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 +List\ of\ users\ allowed\ access\ to\ this\ system=\u0421\u043f\u0438\u0441\u043e\u043a \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u044d\u0442\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 +List\ of\ security\ roles=\u0421\u043f\u0438\u0441\u043e\u043a \u0440\u043e\u043b\u0435\u0439 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 +User\ ID=ID \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f +Role\ ID=\u0418\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0440\u043e\u043b\u0438 +Source\ Database\ ID=\u0418\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0439 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445 +ID\ of\ database\ module\ to\ read\ data\ from\ (Federated\ database\ will\ be\ used\ if\ not\ set=\u0418\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u043c\u043e\u0434\u0443\u043b\u044f \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u043b\u044f \u0447\u0442\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 (\u0435\u0441\u043b\u0438 \u043d\u0435 \u0437\u0430\u0434\u0430\u043d\u043e, \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0431\u0430\u0437\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f). +HTTP\ Port=HTTP-\u043f\u043e\u0440\u0442 +HTTPS\ Port=HTTPS-\u043f\u043e\u0440\u0442 +Root\ URL\ where\ static\ web\ content\ will\ be\ served.=\u041a\u043e\u0440\u043d\u0435\u0432\u043e\u0439 URL-\u0430\u0434\u0440\u0435\u0441, \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u0431\u0443\u0434\u0435\u0442 \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0432\u0435\u0431-\u043a\u043e\u043d\u0442\u0435\u043d\u0442. +Directory\ where\ static\ web\ content\ is\ located.=\u041a\u0430\u0442\u0430\u043b\u043e\u0433, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0432\u0435\u0431-\u043a\u043e\u043d\u0442\u0435\u043d\u0442. +Root\ URL\ where\ the\ server\ will\ accept\ requests.\ This\ will\ be\ the\ prefix\ to\ all\ servlet\ URLs.=\u041a\u043e\u0440\u043d\u0435\u0432\u043e\u0439 URL-\u0430\u0434\u0440\u0435\u0441, \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u0441\u0435\u0440\u0432\u0435\u0440 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u0437\u0430\u043f\u0440\u043e\u0441\u044b. \u042d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0435\u0444\u0438\u043a\u0441 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 URL-\u0430\u0434\u0440\u0435\u0441\u043e\u0432 \u0441\u0435\u0440\u0432\u043b\u0435\u0442\u043e\u0432. +Proxy\ Base\ URL=\u0411\u0430\u0437\u043e\u0432\u044b\u0439 URL-\u0430\u0434\u0440\u0435\u0441 \u043f\u0440\u043e\u043a\u0441\u0438-\u0441\u0435\u0440\u0432\u0435\u0440\u0430 +Public\ URL\ as\ viewed\ from\ the\ outside\ when\ requests\ transit\ through\ a\ proxy\ server.=\u041f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0439 URL-\u0430\u0434\u0440\u0435\u0441, \u0435\u0441\u043b\u0438 \u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0441\u043d\u0430\u0440\u0443\u0436\u0438, \u043a\u043e\u0433\u0434\u0430 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043f\u0440\u043e\u0445\u043e\u0434\u044f\u0442 \u0447\u0435\u0440\u0435\u0437 \u043f\u0440\u043e\u043a\u0441\u0438-\u0441\u0435\u0440\u0432\u0435\u0440. +Authentication\ Method=\u041c\u0435\u0442\u043e\u0434 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 +Method\ used\ to\ authenticate\ users\ on\ this\ server=\u041c\u0435\u0442\u043e\u0434, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0439 \u0434\u043b\u044f \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u043d\u0430 \u044d\u0442\u043e\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u0435 +Path\ to\ a\ key\ store\ containing\ the\ certificate\ and\ keypair\ that\ this\ server\ will\ present\ to\ clients\ when\ accessed\ over\ HTTPS.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ \"javax.net.ssl.keyStore\"\ system\ property.\=Path to a key store containing the certificate and keypair that this server will present to clients when accessed over HTTPS. If this value is blank, will default to using the value of the \"javax.net.ssl.keyStore\" system property. +Alias\ for\ the\ public/private\ keypair\ within\ the\ key\ store\ that\ will\ be\ used\ to\ identify\ this\ server.=\u041f\u0441\u0435\u0432\u0434\u043e\u043d\u0438\u043c \u043f\u0430\u0440\u044b \u043e\u0442\u043a\u0440\u044b\u0442\u043e\u0433\u043e/\u0437\u0430\u043a\u0440\u044b\u0442\u043e\u0433\u043e \u043a\u043b\u044e\u0447\u0435\u0439 \u0432 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u043a\u043b\u044e\u0447\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u043b\u044f \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u044d\u0442\u043e\u0433\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u0430. +Path\ to\ the\ TLS\ trust\ store\ that\ is\ used\ when\ client\ authentication\ is\ required.\ Ignored\ if\ client\ certificate\ authentication\ is\ not\ used.\ Certificates\ in\ this\ file\ designate\ the\ signing\ authorities\ for\ client\ certificates\ that\ will\ be\ trusted.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ \"javax.net.ssl.trustStore\"\ system\ property.\=Path to the TLS trust store that is used when client authentication is required. Ignored if client certificate authentication is not used. Certificates in this file designate the signing authorities for client certificates that will be trusted. If this value is blank, will default to using the value of the \"javax.net.ssl.trustStore\" system property. +Password\ for\ the\ trust\ store.\ Ignored\ if\ client\ certificate\ authentication\ is\ not\ used.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ \"javax.net.ssl.trustStorePassword\"\ system\ property.\=Password for the trust store. Ignored if client certificate authentication is not used. If this value is blank, will default to using the value of the \"javax.net.ssl.trustStorePassword\" system property. +Enable\ CORS=\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c CORS +Enable\ generation\ of\ CORS\ headers\ to\ allow\ cross-domain\ requests\ from\ browsers=\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u0435 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044e \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u043e\u0432 CORS, \u0447\u0442\u043e\u0431\u044b \u0440\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u043c\u0435\u0436\u0434\u043e\u043c\u0435\u043d\u043d\u044b\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0438\u0437 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u043e\u0432. +Capabilities\ Info=\u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044f\u0445 +Information\ included\ in\ the\ service\ capabilities\ document=\u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f, \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u0430\u044f \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442 \u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044f\u0445 \u0443\u0441\u043b\u0443\u0433\u0438 +Enable\ HTTP\ GET=\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c HTTP GET +Enables/disables\ HTTP\ GET\ bindings\ on\ operations\ that\ support\ it=\u0412\u043a\u043b\u044e\u0447\u0430\u0435\u0442/\u043e\u0442\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0438 HTTP GET \u0434\u043b\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0435\u0433\u043e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442. +Enable\ HTTP\ POST=\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c HTTP POST +Enables/disables\ HTTP\ POST\ bindings\ on\ operations\ that\ support\ it=\u0412\u043a\u043b\u044e\u0447\u0430\u0435\u0442/\u043e\u0442\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0438 HTTP POST \u0434\u043b\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0435\u0433\u043e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442. +Enable\ HTTP\ SOAP=\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c HTTP SOAP +Enables/disables\ HTTP\ SOAP\ bindings\ on\ operations\ that\ support\ it=\u0412\u043a\u043b\u044e\u0447\u0430\u0435\u0442/\u043e\u0442\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0438 HTTP SOAP \u0434\u043b\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0435\u0433\u043e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442. +Connection\ Timeout=\u0422\u0430\u0439\u043c-\u0430\u0443\u0442 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f +Reconnect\ Period=\u041f\u0435\u0440\u0438\u043e\u0434 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e\u0433\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f +Max\ Reconnect\ Attempts=\u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u043e\u043f\u044b\u0442\u043e\u043a \u043f\u0435\u0440\u0435\u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f +Maximum\ number\ of\ times\ the\ client\ will\ attempt\ to\ reconnect\ when\ the\ connection\ is\ not\ available\ or\ lost.\ A\ negative\ value\ means\ that\ there\ is\ no\ limit\ to\ the\ number\ of\ reconnection\ attempts.\ Zero\ means\ not\ to\ attempt\ reconnection.=\u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0440\u0430\u0437, \u043a\u043e\u0433\u0434\u0430 \u043a\u043b\u0438\u0435\u043d\u0442 \u0431\u0443\u0434\u0435\u0442 \u043f\u044b\u0442\u0430\u0442\u044c\u0441\u044f \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f, \u0435\u0441\u043b\u0438 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u0438\u043b\u0438 \u043f\u043e\u0442\u0435\u0440\u044f\u043d\u043e. \u041e\u0442\u0440\u0438\u0446\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u043e\u043f\u044b\u0442\u043e\u043a \u043f\u0435\u0440\u0435\u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043d\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043e. \u041d\u043e\u043b\u044c \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u043f\u043e\u043f\u044b\u0442\u043e\u043a \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e\u0433\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f. +IP\ or\ DNS\ name\ of\ remote\ host=IP \u0438\u043b\u0438 DNS-\u0438\u043c\u044f \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0445\u043e\u0441\u0442\u0430 +IP\ of\ local\ network\ interface\ to\ bind\ to\ or\ 'AUTO'\ to\ select\ it\ automatically=IP-\u0430\u0434\u0440\u0435\u0441 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0441\u0435\u0442\u0435\u0432\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u0434\u043b\u044f \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0438 \u0438\u043b\u0438 \u00ab\u0410\u0412\u0422\u041e\u00bb \u0434\u043b\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0432\u044b\u0431\u043e\u0440\u0430 +Connection\ Options=\u0412\u0430\u0440\u0438\u0430\u043d\u0442\u044b \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f +Serial\ port\ device\ name.\ Usually\ something\ like\ /dev/ttyXXX\ on\ Linux=\u0418\u043c\u044f \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u043e\u0440\u0442\u0430. \u041e\u0431\u044b\u0447\u043d\u043e \u0447\u0442\u043e-\u0442\u043e \u0432\u0440\u043e\u0434\u0435 /dev/ttyXXX \u0432 Linux. +Minimum\ number\ of\ bytes\ to\ receive\ before\ they\ are\ sent\ to\ the\ caller=\u041c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0431\u0430\u0439\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c, \u043f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u043e\u043d\u0438 \u0431\u0443\u0434\u0443\u0442 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u044b \u0432\u044b\u0437\u044b\u0432\u0430\u044e\u0449\u0435\u043c\u0443 \u0430\u0431\u043e\u043d\u0435\u043d\u0442\u0443. +Local\ port\ number\ to\ use\ on\ the\ local\ host=\u041d\u043e\u043c\u0435\u0440 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u043e\u0440\u0442\u0430 \u0434\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043d\u0430 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u043c \u0445\u043e\u0441\u0442\u0435 +Physical\ address\ of\ Bluetooth\ device\ to\ connect\ to=\u0424\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0430\u0434\u0440\u0435\u0441 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 Bluetooth \u0434\u043b\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f +Port\ number\ to\ connect\ to\ on\ remote\ host=\u041d\u043e\u043c\u0435\u0440 \u043f\u043e\u0440\u0442\u0430 \u0434\u043b\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043d\u0430 \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u043e\u043c \u0445\u043e\u0441\u0442\u0435 +User\ Name=\u0418\u043c\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f +Remote\ user\ name=\u0418\u043c\u044f \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f +Password=\u041f\u0430\u0440\u043e\u043b\u044c +Remote\ password=\u0423\u0434\u0430\u043b\u0435\u043d\u043d\u044b\u0439 \u043f\u0430\u0440\u043e\u043b\u044c +Secure\ communications\ with\ SSL/TLS=\u0411\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u0430\u044f \u0441\u0432\u044f\u0437\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e SSL/TLS +Enable\ to\ check\ if\ remote\ host\ is\ reachable\ before\ attempting\ further\ operations=\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u0435, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c, \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u043b\u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u044b\u0439 \u0445\u043e\u0441\u0442, \u043f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u043f\u0440\u0435\u0434\u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0438\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438. +Path\ or\ resource\ or\ service\ relative\ to\ server\ root=\u041f\u0443\u0442\u044c, \u0440\u0435\u0441\u0443\u0440\u0441 \u0438\u043b\u0438 \u0441\u043b\u0443\u0436\u0431\u0430 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043a\u043e\u0440\u043d\u044f \u0441\u0435\u0440\u0432\u0435\u0440\u0430 +Unique\ ID\ of\ system\ group=\u0423\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u0439 \u0433\u0440\u0443\u043f\u043f\u044b +Name\ of\ system\ group=\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u0439 \u0433\u0440\u0443\u043f\u043f\u044b +Description\ of\ system\ group=\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u0439 \u0433\u0440\u0443\u043f\u043f\u044b +List\ of\ bundle\ repository\ URLs=\u0421\u043f\u0438\u0441\u043e\u043a URL-\u0430\u0434\u0440\u0435\u0441\u043e\u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f \u043f\u0430\u043a\u0435\u0442\u043e\u0432 +A\ human\ readable\ friendly\ identifier\ for\ the\ deployment=\u0423\u0434\u043e\u0431\u043d\u044b\u0439 \u0434\u043b\u044f \u0447\u0442\u0435\u043d\u0438\u044f \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u043e\u043c \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u044f. +Enable\ Landing\ Page=\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0446\u0435\u043b\u0435\u0432\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 +Enable\ Landing\ Servlet\ to\ redirect\ users\ to\ landing\ page=\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u0435 \u0446\u0435\u043b\u0435\u0432\u043e\u0439 \u0441\u0435\u0440\u0432\u043b\u0435\u0442, \u0447\u0442\u043e\u0431\u044b \u043f\u0435\u0440\u0435\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u043d\u0430 \u0446\u0435\u043b\u0435\u0432\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443. +Config\ Class=\u041a\u043b\u0430\u0441\u0441 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 +Type\ of\ module\ config\ class\ for\ which\ a\ custom\ panel\ must\ be\ generated=\u0422\u0438\u043f \u043a\u043b\u0430\u0441\u0441\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043c\u043e\u0434\u0443\u043b\u044f, \u0434\u043b\u044f \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0443\u044e \u043f\u0430\u043d\u0435\u043b\u044c. +UI\ Class=\u041a\u043b\u0430\u0441\u0441 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 +Fully\ qualified\ name\ of\ class\ implementing\ IModuleAdminPanel=\u041f\u043e\u043b\u043d\u043e\u0435 \u0438\u043c\u044f \u043a\u043b\u0430\u0441\u0441\u0430, \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u044e\u0449\u0435\u0433\u043e IModuleAdminPanel. + +# Auto-extracted property IDs +sensorML=\u0414\u0430\u0442\u0447\u0438\u043a \u041c\u043b +lastUpdated=\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 +lat=\u043b\u0430\u0442. +lon=\u041b\u043e\u043d +alt=\u0410\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 +x=\u0425 +y=Y +z=\u0417 +heading=\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a +pitch=\u041f\u043e\u0434\u0430\u0447\u0430 +roll=\u0420\u0443\u043b\u043e\u043d +location=\u0420\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 +orientation=\u041e\u0440\u0438\u0435\u043d\u0442\u0430\u0446\u0438\u044f +databaseNum=\u041d\u043e\u043c\u0435\u0440 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445 +enableAccessControl=\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c \u0434\u043e\u0441\u0442\u0443\u043f\u0430 +requireAuth=\u0422\u0440\u0435\u0431\u043e\u0432\u0430\u0442\u044c \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044e +mimeType=\u0422\u0438\u043f \u043f\u0430\u043d\u0442\u043e\u043c\u0438\u043c\u044b +className=\u0418\u043c\u044f \u043a\u043b\u0430\u0441\u0441\u0430 +endPoint=\u041a\u043e\u043d\u0435\u0447\u043d\u0430\u044f \u0442\u043e\u0447\u043a\u0430 +id=\u0418\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 +description=\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 +autoStart=\u0410\u0432\u0442\u043e\u0437\u0430\u043f\u0443\u0441\u043a +topicName=\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0442\u0435\u043c\u044b +enablePublish=\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u044e +enableSubscribe=\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043f\u043e\u0434\u043f\u0438\u0441\u043a\u0443 +protocol=\u041f\u0440\u043e\u0442\u043e\u043a\u043e\u043b +moduleConfigPath=\u041f\u0443\u0442\u044c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043c\u043e\u0434\u0443\u043b\u044f +moduleDataPath=\u041f\u0443\u0442\u044c \u043a \u0434\u0430\u043d\u043d\u044b\u043c \u043c\u043e\u0434\u0443\u043b\u044f +commonConfig=\u041e\u0431\u0449\u0430\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f +sensors=Sensors +config=\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f +uniqueID=\u0423\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 +subsystems=\u041f\u043e\u0434\u0441\u0438\u0441\u0442\u0435\u043c\u044b +dbConfig=\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445 +systemUIDs=\u0421\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0435 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u044b +autoPurgeConfig=\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043e\u0447\u0438\u0441\u0442\u043a\u0438 +minCommitPeriod=\u041c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u0435\u0440\u0438\u043e\u0434 \u0444\u0438\u043a\u0441\u0430\u0446\u0438\u0438 +enabled=\u0412\u043a\u043b\u044e\u0447\u0435\u043d\u043e +purgePeriod=\u041f\u0435\u0440\u0438\u043e\u0434 \u043e\u0447\u0438\u0441\u0442\u043a\u0438 +maxRecordAge=\u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u0435\u043a\u043e\u0440\u0434\u043d\u044b\u0439 \u0432\u043e\u0437\u0440\u0430\u0441\u0442 +users=\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 +roles=\u0420\u043e\u043b\u0438 +allow=\u041f\u043e\u0437\u0432\u043e\u043b\u044f\u0442\u044c +deny=\u041e\u0442\u0440\u0438\u0446\u0430\u0442\u044c +userID=ID \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f +name=\u0418\u043c\u044f +password=\u041f\u0430\u0440\u043e\u043b\u044c +certificate=\u0421\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 +twoFactorSecret=\u0414\u0432\u0443\u0445\u0444\u0430\u043a\u0442\u043e\u0440\u043d\u044b\u0439 \u0441\u0435\u043a\u0440\u0435\u0442 +isTwoFactorEnabled=\u0412\u043a\u043b\u044e\u0447\u0435\u043d \u043b\u0438 \u0434\u0432\u0443\u0445\u0444\u0430\u043a\u0442\u043e\u0440\u043d\u044b\u0439 \u0440\u0435\u0436\u0438\u043c +roleID=\u0418\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0440\u043e\u043b\u0438 +sourceDatabaseId=\u0418\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0439 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445 +includeFilter=\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0444\u0438\u043b\u044c\u0442\u0440 +excludeFilter=\u0418\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0444\u0438\u043b\u044c\u0442\u0440 +httpPort=HTTP-\u043f\u043e\u0440\u0442 +httpsPort=HTTPS-\u043f\u043e\u0440\u0442 +staticDocsRootUrl=\u041a\u043e\u0440\u043d\u0435\u0432\u043e\u0439 URL \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432 +staticDocsRootDir=\u041a\u043e\u0440\u043d\u0435\u0432\u043e\u0439 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432 +servletsRootUrl=\u041a\u043e\u0440\u043d\u0435\u0432\u043e\u0439 URL-\u0430\u0434\u0440\u0435\u0441 \u0441\u0435\u0440\u0432\u043b\u0435\u0442\u043e\u0432 +proxyBaseUrl=\u0411\u0430\u0437\u043e\u0432\u044b\u0439 URL-\u0430\u0434\u0440\u0435\u0441 \u043f\u0440\u043e\u043a\u0441\u0438-\u0441\u0435\u0440\u0432\u0435\u0440\u0430 +authMethod=\u041c\u0435\u0442\u043e\u0434 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 +keyStorePath=\u041f\u0443\u0442\u044c \u043a \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0443 \u043a\u043b\u044e\u0447\u0435\u0439 +keyStorePassword=\u041f\u0430\u0440\u043e\u043b\u044c \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430 \u043a\u043b\u044e\u0447\u0435\u0439 +keyAlias=\u041a\u043b\u044e\u0447\u0435\u0432\u043e\u0439 \u043f\u0441\u0435\u0432\u0434\u043e\u043d\u0438\u043c +trustStorePath=\u041f\u0443\u0442\u044c \u043a \u0434\u043e\u0432\u0435\u0440\u0435\u043d\u043d\u043e\u043c\u0443 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0443 +trustStorePassword=\u041f\u0430\u0440\u043e\u043b\u044c \u0434\u043e\u0432\u0435\u0440\u0435\u043d\u043d\u043e\u0433\u043e \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430 +xmlConfigFile=XML-\u0444\u0430\u0439\u043b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 +enableCORS=\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u041a\u043e\u0440\u0441 +title=Title +keywords=\u041a\u043b\u044e\u0447\u0435\u0432\u044b\u0435 \u0441\u043b\u043e\u0432\u0430 +fees=\u0421\u0431\u043e\u0440\u044b +accessConstraints=\u041e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 +serviceProvider=\u041f\u043e\u0441\u0442\u0430\u0432\u0449\u0438\u043a \u0443\u0441\u043b\u0443\u0433 +ogcCapabilitiesInfo=\u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044f\u0445 OGC +enableHttpGET=\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c HTTP-\u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 +enableHttpPOST=\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c HTTP-\u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u044e +enableSOAP=\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043c\u044b\u043b\u043e +connectTimeout=\u0422\u0430\u0439\u043c-\u0430\u0443\u0442 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f +reconnectPeriod=\u041f\u0435\u0440\u0438\u043e\u0434 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e\u0433\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f +reconnectAttempts=\u041f\u043e\u043f\u044b\u0442\u043a\u0438 \u043f\u0435\u0440\u0435\u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f +deviceID=\u0418\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 +deviceClass=\u041a\u043b\u0430\u0441\u0441 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 +remoteHost=\u0423\u0434\u0430\u043b\u0435\u043d\u043d\u044b\u0439 \u0445\u043e\u0441\u0442 +localAddress=\u041b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0430\u0434\u0440\u0435\u0441 +connection=\u0421\u0432\u044f\u0437\u044c +portName=\u0418\u043c\u044f \u043f\u043e\u0440\u0442\u0430 +baudRate=\u0421\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 +dataBits=\u0411\u0438\u0442\u044b \u0434\u0430\u043d\u043d\u044b\u0445 +stopBits=\u0421\u0442\u043e\u043f-\u0431\u0438\u0442\u044b +parity=\u041f\u0430\u0440\u0438\u0442\u0435\u0442 +receiveTimeout=\u0422\u0430\u0439\u043c-\u0430\u0443\u0442 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f +receiveThreshold=\u041f\u043e\u0440\u043e\u0433 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f +remotePort=\u0423\u0434\u0430\u043b\u0435\u043d\u043d\u044b\u0439 \u043f\u043e\u0440\u0442 +localPort=\u041c\u0435\u0441\u0442\u043d\u044b\u0439 \u043f\u043e\u0440\u0442 +deviceAddress=\u0410\u0434\u0440\u0435\u0441 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 +deviceName=\u0418\u043c\u044f \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 +serviceUuid=UUID \u0441\u043b\u0443\u0436\u0431\u044b +user=\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c +enableTLS=\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c TLS +checkReachability=\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u044c +resourcePath=\u041f\u0443\u0442\u044c \u043a \u0440\u0435\u0441\u0443\u0440\u0441\u0443 +uid=\u0423\u0438\u0434 +securityRole=\u0420\u043e\u043b\u044c \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 +passwordField=\u041f\u043e\u043b\u0435 \u043f\u0430\u0440\u043e\u043b\u044f +widgetSet=\u041d\u0430\u0431\u043e\u0440 \u0432\u0438\u0434\u0436\u0435\u0442\u043e\u0432 +bundleRepoUrls=\u041e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 URL-\u0430\u0434\u0440\u0435\u0441\u043e\u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f +customPanels=\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0435 \u043f\u0430\u043d\u0435\u043b\u0438 +customForms=\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0435 \u0444\u043e\u0440\u043c\u044b +deploymentName=\u0418\u043c\u044f \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u044f +enableLandingPage=\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0446\u0435\u043b\u0435\u0432\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 +configClass=\u041a\u043b\u0430\u0441\u0441 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 +uiClass=\u041a\u043b\u0430\u0441\u0441 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 +moduleClass=\u041a\u043b\u0430\u0441\u0441 \u043c\u043e\u0434\u0443\u043b\u044f + +# Auto-extracted hardcoded UI strings +testLinks1=\u0422\u0435\u0441\u0442\u043e\u0432\u044b\u0435 \u0441\u0441\u044b\u043b\u043a\u0438 +uniqueID1=\u0423\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 +foiIDs1=\u0418\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u044b \u0441\u0432\u043e\u0431\u043e\u0434\u044b \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 +version1=\u0412\u0435\u0440\u0441\u0438\u044f + +Connected\ Systems\ Endpoint=\u041a\u043e\u043d\u0435\u0447\u043d\u0430\u044f \u0442\u043e\u0447\u043a\u0430 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c +Connected\ Systems\ endpoint\ where\ the\ requests\ are\ sent=\u041a\u043e\u043d\u0435\u0447\u043d\u0430\u044f \u0442\u043e\u0447\u043a\u0430 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c, \u043a\u0443\u0434\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0437\u0430\u043f\u0440\u043e\u0441\u044b +Connection\ Settings=\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f +Custom\ connector\ configurations=\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0441\u043e\u0435\u0434\u0438\u043d\u0438\u0442\u0435\u043b\u0435\u0439 +Custom\ provider\ configurations=\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043f\u043e\u0441\u0442\u0430\u0432\u0449\u0438\u043a\u0430 +Database\ ID=\u0418\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445 +Default\ live\ time-out\ for\ all\ offerings,\ unless\ overriden\ by\ custom\ provider\ settings=\u0422\u0430\u0439\u043c-\u0430\u0443\u0442 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u0439, \u0435\u0441\u043b\u0438 \u043e\u043d \u043d\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u043c\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u043c\u0438 \u043f\u043e\u0441\u0442\u0430\u0432\u0449\u0438\u043a\u0430. +Default\ live\ time-out\ for\ new\ offerings\ created\ via\ SOS-T=\u0422\u0430\u0439\u043c-\u0430\u0443\u0442 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0434\u043b\u044f \u043d\u043e\u0432\u044b\u0445 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u0439, \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0445 \u0447\u0435\u0440\u0435\u0437 SOS-T. +Enable\ to\ use\ a\ persistent\ HTTP\ connection\ for\ InsertResult=\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u0435, \u0447\u0442\u043e\u0431\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e\u0435 HTTP-\u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u0434\u043b\u044f InsertResult. +Execution\ period\ of\ the\ purge\ policy\ (in\ seconds)=\u041f\u0435\u0440\u0438\u043e\u0434 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438 \u043e\u0447\u0438\u0441\u0442\u043a\u0438 (\u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0430\u0445) +Filtered\ view\ to\ select\ systems\ exposed\ as\ read-only\ through\ this\ service=\u041e\u0442\u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u0432\u044b\u0431\u043e\u0440\u0430 \u0441\u0438\u0441\u0442\u0435\u043c, \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0447\u0442\u0435\u043d\u0438\u044f \u0447\u0435\u0440\u0435\u0437 \u044d\u0442\u0443 \u0441\u043b\u0443\u0436\u0431\u0443. +Filtered\ view\ to\ select\ systems/datastreams\ to\ register\ with\ Connected\ Systems=\u041e\u0442\u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u0432\u044b\u0431\u043e\u0440\u0430 \u0441\u0438\u0441\u0442\u0435\u043c/\u043f\u043e\u0442\u043e\u043a\u043e\u0432 \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u043b\u044f \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u0432 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0445. +Filtered\ view\ to\ select\ systems/datastreams\ to\ register\ with\ remote\ SOS=\u0424\u0438\u043b\u044c\u0442\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u0432\u044b\u0431\u043e\u0440\u0430 \u0441\u0438\u0441\u0442\u0435\u043c/\u043f\u043e\u0442\u043e\u043a\u043e\u0432 \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u043b\u044f \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u0432 \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u043e\u0439 SOS. +Fixed\ system\ location\ in\ EPSG\ 4979\ (WGS84)\ coordinate\ system=\u0424\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 EPSG 4979 (WGS84). +For\ each\ connection\ or\ reconnection\ attempt,\ the\ client\ will\ wait\ for\ the\ remote\ side\ to\ respond\ until\ this\ timeout\ expires\ (in\ ms)=\u0414\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u043f\u043e\u043f\u044b\u0442\u043a\u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0438\u043b\u0438 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e\u0433\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a\u043b\u0438\u0435\u043d\u0442 \u0431\u0443\u0434\u0435\u0442 \u0436\u0434\u0430\u0442\u044c \u043e\u0442\u0432\u0435\u0442\u0430 \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b, \u043f\u043e\u043a\u0430 \u043d\u0435 \u0438\u0441\u0442\u0435\u0447\u0435\u0442 \u044d\u0442\u043e\u0442 \u0442\u0430\u0439\u043c-\u0430\u0443\u0442 (\u0432 \u043c\u0441). +Heading\ (or\ yaw)\ angle\ about\ Z\ axis\ in\ degrees=\u0423\u0433\u043e\u043b \u043a\u0443\u0440\u0441\u0430 (\u0438\u043b\u0438 \u0440\u044b\u0441\u043a\u0430\u043d\u0438\u044f) \u0432\u043e\u043a\u0440\u0443\u0433 \u043e\u0441\u0438 Z \u0432 \u0433\u0440\u0430\u0434\u0443\u0441\u0430\u0445 +How\ long\ the\ client\ will\ wait\ after\ connection\ is\ lost\ before\ it\ will\ attempt\ to\ reconnect\ (in\ ms)=\u041a\u0430\u043a \u0434\u043e\u043b\u0433\u043e \u043a\u043b\u0438\u0435\u043d\u0442 \u0431\u0443\u0434\u0435\u0442 \u0436\u0434\u0430\u0442\u044c \u043f\u043e\u0441\u043b\u0435 \u043f\u043e\u0442\u0435\u0440\u0438 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f, \u043f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u043f\u043e\u043f\u044b\u0442\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f (\u0432 \u043c\u0441) +ID\ Generator=\u0413\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u043e\u0432 +ID\ of\ database\ module\ used\ for\ persisting\ data\ received\ by\ this\ service.\ If\ none\ is\ provided,\ new\ systems\ registered\ through\ this\ service\ will\ be\ available\ on\ the\ hub,\ but\ with\ no\ persistence\ guarantee\ across\ restarts.=\u0418\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u043c\u043e\u0434\u0443\u043b\u044f \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u043e\u0433\u043e \u0434\u043b\u044f \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0445 \u044d\u0442\u043e\u0439 \u0441\u043b\u0443\u0436\u0431\u043e\u0439. \u0415\u0441\u043b\u0438 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u043e, \u043d\u043e\u0432\u044b\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0447\u0435\u0440\u0435\u0437 \u044d\u0442\u0443 \u0441\u043b\u0443\u0436\u0431\u0443, \u0431\u0443\u0434\u0443\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0432 \u043a\u043e\u043d\u0446\u0435\u043d\u0442\u0440\u0430\u0442\u043e\u0440\u0435, \u043d\u043e \u0431\u0435\u0437 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a\u0430. +ID\ of\ database\ module\ used\ for\ persisting\ data\ received\ by\ this\ service.\ If\ none\ is\ provided,\ new\ systems\ registered\ through\ this\ service\ will\ be\ available\ on\ the\ hub,\ but\ with\ no\ persistence\ guarantee\ across\ restarts.\ Only\ the\ latest\ observation\ from\ each\ datastream\ will\ be\ available\ and\ older\ observations\ will\ be\ discarded=\u0418\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u043c\u043e\u0434\u0443\u043b\u044f \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u043e\u0433\u043e \u0434\u043b\u044f \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0445 \u044d\u0442\u043e\u0439 \u0441\u043b\u0443\u0436\u0431\u043e\u0439. \u0415\u0441\u043b\u0438 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u043e, \u043d\u043e\u0432\u044b\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0447\u0435\u0440\u0435\u0437 \u044d\u0442\u0443 \u0441\u043b\u0443\u0436\u0431\u0443, \u0431\u0443\u0434\u0443\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0432 \u043a\u043e\u043d\u0446\u0435\u043d\u0442\u0440\u0430\u0442\u043e\u0440\u0435, \u043d\u043e \u0431\u0435\u0437 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a\u0430. \u0411\u0443\u0434\u0443\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0430\u043c\u044b\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u043d\u0430\u0431\u043b\u044e\u0434\u0435\u043d\u0438\u044f \u0438\u0437 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043f\u043e\u0442\u043e\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445, \u0430 \u0431\u043e\u043b\u0435\u0435 \u0441\u0442\u0430\u0440\u044b\u0435 \u043d\u0430\u0431\u043b\u044e\u0434\u0435\u043d\u0438\u044f \u0431\u0443\u0434\u0443\u0442 \u043e\u0442\u0431\u0440\u043e\u0448\u0435\u043d\u044b. +Individual\ configuration\ of\ sensors\ in\ the\ array\ (will\ override\ common\ configuration)=\u0418\u043d\u0434\u0438\u0432\u0438\u0434\u0443\u0430\u043b\u044c\u043d\u0430\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u0434\u0430\u0442\u0447\u0438\u043a\u043e\u0432 \u0432 \u043c\u0430\u0441\u0441\u0438\u0432\u0435 (\u043f\u0440\u0435\u043e\u0431\u043b\u0430\u0434\u0430\u0435\u0442 \u043d\u0430\u0434 \u043e\u0431\u0449\u0435\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0435\u0439) +List\ of\ observed\ properties\ URI\ to\ make\ available\ as\ outputs=\u0421\u043f\u0438\u0441\u043e\u043a URI \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0435\u043c\u044b\u0445 \u0441\u0432\u043e\u0439\u0441\u0442\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u043c\u0438 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0432\u044b\u0445\u043e\u0434\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445. +Mapping\ of\ custom\ formats\ mime-types\ to\ custom\ serializer\ classes=\u0421\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 mime-\u0442\u0438\u043f\u043e\u0432 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0445 \u0444\u043e\u0440\u043c\u0430\u0442\u043e\u0432 \u0441 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u043c\u0438 \u043a\u043b\u0430\u0441\u0441\u0430\u043c\u0438 \u0441\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u043e\u0432. +Mappings\ used\ by\ CURIE\ to\ URI\ resolver=\u0421\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0435 CURIE \u0434\u043b\u044f \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f URI +Max\ Limit=\u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u043b\u0438\u043c\u0438\u0442 +Max\ Observations\ Returned=\u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0435\u043d\u043d\u044b\u0445 \u043d\u0430\u0431\u043b\u044e\u0434\u0435\u043d\u0438\u0439 +Max\ Records\ Returned=\u041c\u0430\u043a\u0441. \u0437\u0430\u043f\u0438\u0441\u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0435\u043d\u044b +Max\ delay\ between\ auto-commit\ execution,\ in\ seconds.\ 0\ to\ disable\ time-based\ auto-commit=\u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u043c\u0435\u0436\u0434\u0443 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435\u043c \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0444\u0438\u043a\u0441\u0430\u0446\u0438\u0438 \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0430\u0445. 0, \u0447\u0442\u043e\u0431\u044b \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u0444\u0438\u043a\u0441\u0430\u0446\u0438\u044e \u043f\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 +Maximum\ age\ of\ data\ to\ be\ kept\ in\ storage\ (in\ seconds)=\u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0432\u043e\u0437\u0440\u0430\u0441\u0442 \u0434\u0430\u043d\u043d\u044b\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u0445\u0440\u0430\u043d\u0438\u0442\u044c\u0441\u044f \u0432 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 (\u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0430\u0445) +Maximum\ number\ of\ FoI\ IDs\ listed\ in\ capabilities=\u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u043e\u0432 FoI, \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0445 \u0432 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044f\u0445 +Maximum\ number\ of\ observations\ returned\ \ by\ a\ historical\ GetObservation\ request\ (for\ each\ selected\ offering)=\u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043d\u0430\u0431\u043b\u044e\u0434\u0435\u043d\u0438\u0439, \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u044b\u0445 \u0438\u0441\u0442\u043e\u0440\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u043c GetObservation (\u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u044f) +Maximum\ number\ of\ records\ in\ upload\ queue\ (used\ to\ compensate\ for\ variable\ bandwidth)=\u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0437\u0430\u043f\u0438\u0441\u0435\u0439 \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 (\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043a\u043e\u043c\u043f\u0435\u043d\u0441\u0430\u0446\u0438\u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u043d\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u0438) +Maximum\ number\ of\ resources\ returned\ in\ a\ single\ page=\u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432, \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u044b\u0445 \u043d\u0430 \u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 +Maximum\ number\ of\ result\ records\ returned\ by\ a\ historical\ GetResult\ request=\u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0437\u0430\u043f\u0438\u0441\u0435\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432, \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u044b\u0445 \u0438\u0441\u0442\u043e\u0440\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u043c GetResult +Maximum\ number\ of\ stream\ errors\ before\ we\ try\ to\ reconnect\ to\ remote\ server=\u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043e\u0448\u0438\u0431\u043e\u043a \u043f\u043e\u0442\u043e\u043a\u0430, \u043f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u043c\u044b \u043f\u043e\u043f\u044b\u0442\u0430\u0435\u043c\u0441\u044f \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f \u043a \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u043e\u043c\u0443 \u0441\u0435\u0440\u0432\u0435\u0440\u0443 +Memory\ cache\ size\ for\ page\ chunks,\ in\ KB=\u0420\u0430\u0437\u043c\u0435\u0440 \u043a\u044d\u0448\u0430 \u043f\u0430\u043c\u044f\u0442\u0438 \u0434\u043b\u044f \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u043e\u0432 \u0441\u0442\u0440\u0430\u043d\u0438\u0446, \u0432 \u041a\u0411 +Metadata\ of\ system\ group\ that\ will\ be\ created\ to\ contain\ all\ procedures/sensors\ registered\ through\ this\ service.\ Only\ sensors\ in\ this\ group\ will\ be\ modifiable\ by\ this\ service=\u041c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u0439 \u0433\u0440\u0443\u043f\u043f\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u0441\u043e\u0437\u0434\u0430\u043d\u044b \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0432\u0441\u0435\u0445 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440/\u0434\u0430\u0442\u0447\u0438\u043a\u043e\u0432, \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0447\u0435\u0440\u0435\u0437 \u044d\u0442\u043e\u0442 \u0441\u0435\u0440\u0432\u0438\u0441. \u042d\u0442\u043e\u0442 \u0441\u0435\u0440\u0432\u0438\u0441 \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0434\u043b\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u0430\u0442\u0447\u0438\u043a\u043e\u0432 \u0432 \u044d\u0442\u043e\u0439 \u0433\u0440\u0443\u043f\u043f\u0435. +Metadata\ of\ system\ group\ that\ will\ be\ created\ to\ contain\ all\ systems\ registered\ through\ this\ service.\ Only\ systems\ in\ this\ group\ will\ be\ modifiable\ by\ this\ service=\u041c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0435 \u0433\u0440\u0443\u043f\u043f\u044b \u0441\u0438\u0441\u0442\u0435\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u0441\u043e\u0437\u0434\u0430\u043d\u044b \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0432\u0441\u0435\u0445 \u0441\u0438\u0441\u0442\u0435\u043c, \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0447\u0435\u0440\u0435\u0437 \u044d\u0442\u0443 \u0441\u043b\u0443\u0436\u0431\u0443. \u0422\u043e\u043b\u044c\u043a\u043e \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0438\u0437 \u044d\u0442\u043e\u0439 \u0433\u0440\u0443\u043f\u043f\u044b \u0431\u0443\u0434\u0443\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0434\u043b\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u044d\u0442\u043e\u0439 \u0441\u043b\u0443\u0436\u0431\u044b. +Method\ used\ to\ generate\ new\ resource\ IDs=\u041c\u0435\u0442\u043e\u0434, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0439 \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043d\u043e\u0432\u044b\u0445 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u043e\u0432 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 +Minimum\ fillrate\ above\ which\ auto\ compact\ operations\ may\ be\ triggered=\u041c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f, \u043f\u0440\u0438 \u043f\u0440\u0435\u0432\u044b\u0448\u0435\u043d\u0438\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043c\u043e\u0433\u0443\u0442 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c\u0441\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0441\u0436\u0430\u0442\u0438\u044f. +Minimum\ period\ between\ database\ commits\ (in\ ms)=\u041c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u0435\u0440\u0438\u043e\u0434 \u043c\u0435\u0436\u0434\u0443 \u0444\u0438\u043a\u0441\u0430\u0446\u0438\u044f\u043c\u0438 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445 (\u0432 \u043c\u0441) +Names\ of\ datastreams\ whose\ data\ will\ be\ hidden\ from\ the\ SOS.\ If\ this\ is\ null,\ all\ streams\ produced\ by\ the\ procedure\ are\ exposed=\u0418\u043c\u0435\u043d\u0430 \u043f\u043e\u0442\u043e\u043a\u043e\u0432 \u0434\u0430\u043d\u043d\u044b\u0445, \u0434\u0430\u043d\u043d\u044b\u0435 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0431\u0443\u0434\u0443\u0442 \u0441\u043a\u0440\u044b\u0442\u044b \u043e\u0442 SOS. \u0415\u0441\u043b\u0438 \u044d\u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0440\u0430\u0432\u043d\u043e \u043d\u0443\u043b\u044e, \u0432\u0441\u0435 \u043f\u043e\u0442\u043e\u043a\u0438, \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u043e\u0439, \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b. +Observed\ Properties=\u041d\u0430\u0431\u043b\u044e\u0434\u0430\u0435\u043c\u044b\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 +Offering\ URI\ as\ exposed\ in\ capabilities.\ (if\ null,\ the\ procedure\ UID\ is\ used)=\u041f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 URI \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044f\u043c\u0438. (\u0435\u0441\u043b\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0440\u0430\u0432\u043d\u043e \u043d\u0443\u043b\u044e, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f UID \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u044b) +Offering\ description\ (if\ null,\ it\ will\ be\ auto-generated)=\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u044f (\u0435\u0441\u043b\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0440\u0430\u0432\u043d\u043e \u043d\u0443\u043b\u044e, \u043e\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u043d\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438) +Offering\ name\ (if\ null,\ the\ procedure\ name\ is\ used)=\u0418\u043c\u044f \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u044f (\u0435\u0441\u043b\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0440\u0430\u0432\u043d\u043e \u043d\u0443\u043b\u044e, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0438\u043c\u044f \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u044b) +Orientation\ as\ Euler\ angles\ in\ NED\ coordinate\ reference\ frame.\nOrder\ of\ rotations\ is\ z-y\u2019-x"\ (in\ rotating\ frame)\ or\ x-y-z\ (in\ fixed\ frame)=\u041e\u0440\u0438\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u043a\u0430\u043a \u0443\u0433\u043b\u044b \u042d\u0439\u043b\u0435\u0440\u0430 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 NED.\n\u041f\u043e\u0440\u044f\u0434\u043e\u043a \u0432\u0440\u0430\u0449\u0435\u043d\u0438\u044f: z-y\u2019-x\u00bb (\u0432\u043e \u0432\u0440\u0430\u0449\u0430\u044e\u0449\u0435\u0439\u0441\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442) \u0438\u043b\u0438 x-y-z (\u0432 \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442). +Password\ for\ the\ key\ store\ (and\ for\ the\ keypair\ within\ the\ keystore).\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ "javax.net.ssl.keyStorePassword"\ system\ property.\ This\ value\ can\ use\ variable\ expansion\ expressions\ of\ the\ form\ "$${name}"\ (for\ environment\ variables\ and\ system\ properties)\ or\ "$${file;/path/to/file}"\ (for\ secret\ file\ contents).=\u041f\u0430\u0440\u043e\u043b\u044c \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430 \u043a\u043b\u044e\u0447\u0435\u0439 (\u0438 \u0434\u043b\u044f \u043f\u0430\u0440\u044b \u043a\u043b\u044e\u0447\u0435\u0439 \u0432\u043d\u0443\u0442\u0440\u0438 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430 \u043a\u043b\u044e\u0447\u0435\u0439). \u0415\u0441\u043b\u0438 \u044d\u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u0443\u0441\u0442\u043e\u0435, \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u0433\u043e \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u00abjavax.net.ssl.keyStorePassword\u00bb. \u0412 \u044d\u0442\u043e\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0438 \u043c\u043e\u0433\u0443\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0432 \u0444\u043e\u0440\u043c\u0435 \u00ab$${\u0438\u043c\u044f}\u00bb (\u0434\u043b\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0441\u0440\u0435\u0434\u044b \u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0445 \u0441\u0432\u043e\u0439\u0441\u0442\u0432) \u0438\u043b\u0438 \u00ab$${\u0444\u0430\u0439\u043b;/\u043f\u0443\u0442\u044c/\u043a/\u0444\u0430\u0439\u043b\u0443}\u00bb (\u0434\u043b\u044f \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e \u0441\u0435\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430). +Password\ for\ the\ trust\ store.\ Ignored\ if\ client\ certificate\ authentication\ is\ not\ used.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ "javax.net.ssl.trustStorePassword"\ system\ property.\ This\ value\ can\ use\ variable\ expansion\ expressions\ of\ the\ form\ "$${name}"\ (for\ environment\ variables\ and\ system\ properties)\ or\ "$${file;/path/to/file}"\ (for\ secret\ file\ contents).=\u041f\u0430\u0440\u043e\u043b\u044c \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430 \u0434\u043e\u0432\u0435\u0440\u0435\u043d\u043d\u044b\u0445 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0432. \u0418\u0433\u043d\u043e\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044f, \u0435\u0441\u043b\u0438 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043f\u043e\u0434\u043b\u0438\u043d\u043d\u043e\u0441\u0442\u0438 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430 \u043a\u043b\u0438\u0435\u043d\u0442\u0430. \u0415\u0441\u043b\u0438 \u044d\u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u0443\u0441\u0442\u043e\u0435, \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u0433\u043e \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u00abjavax.net.ssl.trustStorePassword\u00bb. \u0412 \u044d\u0442\u043e\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0438 \u043c\u043e\u0433\u0443\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0432 \u0444\u043e\u0440\u043c\u0435 \u00ab$${\u0438\u043c\u044f}\u00bb (\u0434\u043b\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0441\u0440\u0435\u0434\u044b \u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0445 \u0441\u0432\u043e\u0439\u0441\u0442\u0432) \u0438\u043b\u0438 \u00ab$${\u0444\u0430\u0439\u043b;/\u043f\u0443\u0442\u044c/\u043a/\u0444\u0430\u0439\u043b\u0443}\u00bb (\u0434\u043b\u044f \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e \u0441\u0435\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430). +Path\ of\ service\ endpoint\ relative\ to\ the\ context\ URL\ (e.g.\ http\://server.net/sensorhub)=\u041f\u0443\u0442\u044c \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0439 \u0442\u043e\u0447\u043a\u0438 \u0441\u043b\u0443\u0436\u0431\u044b \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e URL-\u0430\u0434\u0440\u0435\u0441\u0430 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, http://server.net/sensorhub) +Path\ to\ a\ key\ store\ containing\ the\ certificate\ and\ keypair\ that\ this\ server\ will\ present\ to\ clients\ when\ accessed\ over\ HTTPS.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ "javax.net.ssl.keyStore"\ system\ property.\ This\ value\ can\ use\ variable\ expansion\ expressions\ of\ the\ form\ "$${name}"\ (for\ environment\ variables\ and\ system\ properties)\ or\ "$${file;/path/to/file}"\ (for\ secret\ file\ contents).=\u041f\u0443\u0442\u044c \u043a \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0443 \u043a\u043b\u044e\u0447\u0435\u0439, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0435\u043c\u0443 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u0438 \u043f\u0430\u0440\u0443 \u043a\u043b\u044e\u0447\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u044d\u0442\u043e\u0442 \u0441\u0435\u0440\u0432\u0435\u0440 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u043a\u043b\u0438\u0435\u043d\u0442\u0430\u043c \u043f\u0440\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u0435 \u0447\u0435\u0440\u0435\u0437 HTTPS. \u0415\u0441\u043b\u0438 \u044d\u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u0443\u0441\u0442\u043e\u0435, \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u0433\u043e \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u00abjavax.net.ssl.keyStore\u00bb. \u0412 \u044d\u0442\u043e\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0438 \u043c\u043e\u0433\u0443\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0432 \u0444\u043e\u0440\u043c\u0435 \u00ab$${\u0438\u043c\u044f}\u00bb (\u0434\u043b\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0441\u0440\u0435\u0434\u044b \u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0445 \u0441\u0432\u043e\u0439\u0441\u0442\u0432) \u0438\u043b\u0438 \u00ab$${\u0444\u0430\u0439\u043b;/\u043f\u0443\u0442\u044c/\u043a/\u0444\u0430\u0439\u043b\u0443}\u00bb (\u0434\u043b\u044f \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e \u0441\u0435\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430). +Path\ to\ database\ file=\u041f\u0443\u0442\u044c \u043a \u0444\u0430\u0439\u043b\u0443 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445 +Path\ to\ external\ config\ file\ (in\ Jetty\ IOC\ XML\ format)=\u041f\u0443\u0442\u044c \u043a \u0432\u043d\u0435\u0448\u043d\u0435\u043c\u0443 \u0444\u0430\u0439\u043b\u0443 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 (\u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 Jetty IOC XML) +Path\ to\ the\ TLS\ trust\ store\ that\ is\ used\ when\ client\ authentication\ is\ required.\ Ignored\ if\ client\ certificate\ authentication\ is\ not\ used.\ Certificates\ in\ this\ file\ designate\ the\ signing\ authorities\ for\ client\ certificates\ that\ will\ be\ trusted.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ "javax.net.ssl.trustStore"\ system\ property.\ This\ value\ can\ use\ variable\ expansion\ expressions\ of\ the\ form\ "$${name}"\ (for\ environment\ variables\ and\ system\ properties)\ or\ "$${file;/path/to/file}"\ (for\ secret\ file\ contents).=\u041f\u0443\u0442\u044c \u043a \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0443 \u0434\u043e\u0432\u0435\u0440\u0435\u043d\u043d\u044b\u0445 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0432 TLS, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f, \u043a\u043e\u0433\u0434\u0430 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043f\u043e\u0434\u043b\u0438\u043d\u043d\u043e\u0441\u0442\u0438 \u043a\u043b\u0438\u0435\u043d\u0442\u0430. \u0418\u0433\u043d\u043e\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044f, \u0435\u0441\u043b\u0438 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043f\u043e\u0434\u043b\u0438\u043d\u043d\u043e\u0441\u0442\u0438 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430 \u043a\u043b\u0438\u0435\u043d\u0442\u0430. \u0421\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b \u0432 \u044d\u0442\u043e\u043c \u0444\u0430\u0439\u043b\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0442 \u0446\u0435\u043d\u0442\u0440\u044b \u043f\u043e\u0434\u043f\u0438\u0441\u0438 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0432 \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0432\u0435\u0440\u044f\u0442\u044c. \u0415\u0441\u043b\u0438 \u044d\u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u0443\u0441\u0442\u043e\u0435, \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u0433\u043e \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u00abjavax.net.ssl.trustStore\u00bb. \u0412 \u044d\u0442\u043e\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0438 \u043c\u043e\u0433\u0443\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0432 \u0444\u043e\u0440\u043c\u0435 \u00ab$${\u0438\u043c\u044f}\u00bb (\u0434\u043b\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0441\u0440\u0435\u0434\u044b \u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0445 \u0441\u0432\u043e\u0439\u0441\u0442\u0432) \u0438\u043b\u0438 \u00ab$${\u0444\u0430\u0439\u043b;/\u043f\u0443\u0442\u044c/\u043a/\u0444\u0430\u0439\u043b\u0443}\u00bb (\u0434\u043b\u044f \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e \u0441\u0435\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430). +Port\ number\ to\ connect\ to\ on\ remote\ host\ (0\ to\ automatically\ select\ a\ port)=\u041d\u043e\u043c\u0435\u0440 \u043f\u043e\u0440\u0442\u0430 \u0434\u043b\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u043e\u043c\u0443 \u0445\u043e\u0441\u0442\u0443 (0 \u0434\u043b\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0432\u044b\u0431\u043e\u0440\u0430 \u043f\u043e\u0440\u0442\u0430) +SOS\ Endpoint=\u041a\u043e\u043d\u0435\u0447\u043d\u0430\u044f \u0442\u043e\u0447\u043a\u0430 SOS +SOS\ endpoint\ to\ fetch\ data\ from=\u041a\u043e\u043d\u0435\u0447\u043d\u0430\u044f \u0442\u043e\u0447\u043a\u0430 SOS \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0437 +SOS\ endpoint\ where\ the\ requests\ are\ sent=\u041a\u043e\u043d\u0435\u0447\u043d\u0430\u044f \u0442\u043e\u0447\u043a\u0430 SOS, \u043a\u0443\u0434\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0437\u0430\u043f\u0440\u043e\u0441\u044b +SPS\ Endpoint=\u041a\u043e\u043d\u0435\u0447\u043d\u0430\u044f \u0442\u043e\u0447\u043a\u0430 SPS +SPS\ endpoint\ to\ send\ commands\ to=\u041a\u043e\u043d\u0435\u0447\u043d\u0430\u044f \u0442\u043e\u0447\u043a\u0430 SPS \u0434\u043b\u044f \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u043a\u043e\u043c\u0430\u043d\u0434 +Security\ related\ options=\u041e\u043f\u0446\u0438\u0438, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0441 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c\u044e +Sensor\ UID=UID \u0434\u0430\u0442\u0447\u0438\u043a\u0430 +Set\ if\ WebSocket\ protocol\ should\ be\ used\ to\ get\ streaming\ data\ from\ SOS=\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435, \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b WebSocket \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u043f\u043e\u0442\u043e\u043a\u043e\u0432\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0437 SOS. +Set\ if\ offering\ is\ enabled,\ unset\ if\ disabled=\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435, \u0435\u0441\u043b\u0438 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u043e, \u0438 \u0441\u043d\u0438\u043c\u0438\u0442\u0435, \u0435\u0441\u043b\u0438 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u043e. +Set\ if\ websockets\ protocol\ should\ be\ used\ to\ send\ commands\ to\ SPS=\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435, \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u0432\u0435\u0431-\u0441\u043e\u043a\u0435\u0442\u043e\u0432 \u0434\u043b\u044f \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u043a\u043e\u043c\u0430\u043d\u0434 \u0432 SPS. +Set\ to\ compact\ the\ database\ file\ when\ the\ database\ module\ is\ stopped\ or\ restarted=\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u0434\u043b\u044f \u0441\u0436\u0430\u0442\u0438\u044f \u0444\u0430\u0439\u043b\u0430 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u0440\u0438 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 \u0438\u043b\u0438 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u043c\u043e\u0434\u0443\u043b\u044f \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445. +Set\ to\ compress\ underlying\ file\ storage=\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e \u0441\u0436\u0430\u0442\u0438\u0435 \u0431\u0430\u0437\u043e\u0432\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u043e\u0432\u043e\u0433\u043e \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430. +Set\ to\ display\ MVStore\ debug\ info\ when\ database\ is\ closed\ (only\ if\ DEBUG\ log\ is\ also\ enabled)=\u041d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e\u0431 \u043e\u0442\u043b\u0430\u0434\u043a\u0435 MVStore \u043f\u0440\u0438 \u0437\u0430\u043a\u0440\u044b\u0442\u0438\u0438 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445 (\u0442\u043e\u043b\u044c\u043a\u043e \u0435\u0441\u043b\u0438 \u0436\u0443\u0440\u043d\u0430\u043b \u043e\u0442\u043b\u0430\u0434\u043a\u0438 \u0442\u0430\u043a\u0436\u0435 \u0432\u043a\u043b\u044e\u0447\u0435\u043d) +Set\ to\ enable\ spatial\ indexing\ of\ individual\ observations\ sampling\ locations\ (when\ provided)=\u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u0438\u043d\u0434\u0435\u043a\u0441\u0430\u0446\u0438\u0438 \u043c\u0435\u0441\u0442 \u043e\u0442\u0431\u043e\u0440\u0430 \u043f\u0440\u043e\u0431 \u043f\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u043c \u043d\u0430\u0431\u043b\u044e\u0434\u0435\u043d\u0438\u044f\u043c (\u0435\u0441\u043b\u0438 \u043f\u0440\u0435\u0434\u0443\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u043e) +Set\ to\ open\ the\ database\ as\ read-only=\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u0435 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0447\u0442\u0435\u043d\u0438\u044f. +Set\ to\ true\ to\ enable\ transactional\ operation\ support=\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 true, \u0447\u0442\u043e\u0431\u044b \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439. +Size\ of\ the\ auto-commit\ write\ buffer,\ in\ KB=\u0420\u0430\u0437\u043c\u0435\u0440 \u0431\u0443\u0444\u0435\u0440\u0430 \u0437\u0430\u043f\u0438\u0441\u0438 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0444\u0438\u043a\u0441\u0430\u0446\u0438\u0438, \u0432 \u041a\u0411 +TCP\ port\ where\ server\ will\ listen\ for\ secure\ HTTP\ (HTTPS)\ connections\ (use\ 0\ to\ disable\ HTTPS).=TCP-\u043f\u043e\u0440\u0442, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0441\u0435\u0440\u0432\u0435\u0440 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0441\u043b\u0443\u0448\u0438\u0432\u0430\u0442\u044c \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u0435 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f HTTP (HTTPS) (\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 0, \u0447\u0442\u043e\u0431\u044b \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c HTTPS). +TCP\ port\ where\ server\ will\ listen\ for\ unsecure\ HTTP\ connections\ (use\ 0\ to\ disable\ HTTP).=TCP-\u043f\u043e\u0440\u0442, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0441\u0435\u0440\u0432\u0435\u0440 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0441\u043b\u0443\u0448\u0438\u0432\u0430\u0442\u044c \u043d\u0435\u0437\u0430\u0449\u0438\u0449\u0435\u043d\u043d\u044b\u0435 HTTP-\u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f (\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 0, \u0447\u0442\u043e\u0431\u044b \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c HTTP). +Time-out\ after\ which\ real-time\ requests\ are\ disabled\ if\ no\ more\ measurements\ are\ received\ (in\ seconds).\ Real-time\ is\ reactivated\ as\ soon\ as\ new\ records\ start\ being\ received\ again=\u0422\u0430\u0439\u043c-\u0430\u0443\u0442, \u043f\u043e \u0438\u0441\u0442\u0435\u0447\u0435\u043d\u0438\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043e\u0442\u043a\u043b\u044e\u0447\u0430\u044e\u0442\u0441\u044f, \u0435\u0441\u043b\u0438 \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u044b \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044f (\u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0430\u0445). \u0420\u0435\u0436\u0438\u043c \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0432\u043e\u0437\u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u0442\u0441\u044f, \u043a\u0430\u043a \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u043d\u043e\u0432\u0430 \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0442 \u043f\u043e\u0441\u0442\u0443\u043f\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0435 \u0437\u0430\u043f\u0438\u0441\u0438. +Time-out\ period\ after\ which\ a\ template\ ID\ reserved\ using\ InsertResultTemplate\ will\ expire\ if\ not\ used\ in\ InsertResult\ requests\ (in\ seconds)=\u041f\u0435\u0440\u0438\u043e\u0434 \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u044f, \u043f\u043e \u0438\u0441\u0442\u0435\u0447\u0435\u043d\u0438\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0448\u0430\u0431\u043b\u043e\u043d\u0430, \u0437\u0430\u0440\u0435\u0437\u0435\u0440\u0432\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e InsertResultTemplate, \u0438\u0441\u0442\u0435\u0447\u0435\u0442, \u0435\u0441\u043b\u0438 \u043e\u043d \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 \u0437\u0430\u043f\u0440\u043e\u0441\u0430\u0445 InsertResult (\u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0430\u0445). +Timeout\ after\ which\ data\ is\ released\ to\ the\ caller\ if\ at\ least\ one\ byte\ was\ received\ (in\ ms)=\u0422\u0430\u0439\u043c\u0430\u0443\u0442, \u043f\u043e \u0438\u0441\u0442\u0435\u0447\u0435\u043d\u0438\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0442\u0441\u044f \u0432\u044b\u0437\u044b\u0432\u0430\u044e\u0449\u0435\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u0435, \u0435\u0441\u043b\u0438 \u0431\u044b\u043b \u043f\u043e\u043b\u0443\u0447\u0435\u043d \u0445\u043e\u0442\u044f \u0431\u044b \u043e\u0434\u0438\u043d \u0431\u0430\u0439\u0442 (\u0432 \u043c\u0441) +URI\ Prefix\ Map=\u041a\u0430\u0440\u0442\u0430 \u043f\u0440\u0435\u0444\u0438\u043a\u0441\u043e\u0432 URI +Unique\ ID\ (full\ URN\ or\ only\ suffix)\ to\ use\ for\ the\ sensor\ system\ or\ 'auto'\ to\ use\ the\ UUID\ randomly\ generated\ the\ first\ time\ the\ module\ is\ initialized=\u0423\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 (\u043f\u043e\u043b\u043d\u044b\u0439 URN \u0438\u043b\u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0443\u0444\u0444\u0438\u043a\u0441), \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u043b\u044f \u0441\u0435\u043d\u0441\u043e\u0440\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u0438\u043b\u0438 \u00ab\u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439\u00bb, \u0447\u0442\u043e\u0431\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c UUID, \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043f\u0440\u0438 \u043f\u0435\u0440\u0432\u043e\u0439 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043c\u043e\u0434\u0443\u043b\u044f. +Unique\ ID\ of\ a\ system\ that\ this\ configuration\ applies\ to.\nCan\ include\ a\ trailing\ wildcard\ '*'\ to\ match\ several\ systems\ at\ once.=\u0423\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u043a \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u044d\u0442\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f.\n\u041c\u043e\u0436\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u044e\u0449\u0438\u0439 \u043f\u043e\u0434\u0441\u0442\u0430\u043d\u043e\u0432\u043e\u0447\u043d\u044b\u0439 \u0437\u043d\u0430\u043a \u00ab*\u00bb, \u0447\u0442\u043e\u0431\u044b \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u043c \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e. +Unique\ ID\ of\ sensor\ to\ connect\ to\ on\ SOS\ and\ SPS\ servers=\u0423\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0434\u0430\u0442\u0447\u0438\u043a\u0430 \u0434\u043b\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a \u0441\u0435\u0440\u0432\u0435\u0440\u0430\u043c SOS \u0438 SPS. +Unique\ ID\ of\ system\ that\ this\ configuration\ applies\ to.\nCan\ include\ a\ trailing\ wildcard\ '*'\ to\ match\ several\ systems\ at\ once.=\u0423\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u043a \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u044d\u0442\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f.\n\u041c\u043e\u0436\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u044e\u0449\u0438\u0439 \u043f\u043e\u0434\u0441\u0442\u0430\u043d\u043e\u0432\u043e\u0447\u043d\u044b\u0439 \u0437\u043d\u0430\u043a \u00ab*\u00bb, \u0447\u0442\u043e\u0431\u044b \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u043c \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e. +Use\ WebSockets\ for\ SOS=\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 WebSockets \u0434\u043b\u044f SOS +Use\ WebSockets\ for\ SPS=\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 WebSockets \u0434\u043b\u044f SPS + +Node\ ID=\u0418\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0443\u0437\u043b\u0430 +Stats\ Frequency\ (min)=\u0421\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0430 \u0427\u0430\u0441\u0442\u043e\u0442\u0430 (\u043c\u0438\u043d) +Database\ URL=URL-\u0430\u0434\u0440\u0435\u0441 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445 +Database\ Name=\u0418\u043c\u044f \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445 +ID\ Generator=\u0413\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u043e\u0432 +Database\ Number=\u041d\u043e\u043c\u0435\u0440 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445 +Remote\ Host=\u0423\u0434\u0430\u043b\u0435\u043d\u043d\u044b\u0439 \u0445\u043e\u0441\u0442 +Remote\ Port=\u0423\u0434\u0430\u043b\u0435\u043d\u043d\u044b\u0439 \u043f\u043e\u0440\u0442 +Lane\ Width\ (m)=\u0428\u0438\u0440\u0438\u043d\u0430 \u043f\u043e\u043b\u043e\u0441\u044b (\u043c) +Enable\ EML\ Analysis=\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0430\u043d\u0430\u043b\u0438\u0437 EML +Is\ Collimated=\u041a\u043e\u043b\u043b\u0438\u043c\u0438\u0440\u043e\u0432\u0430\u043d +Stream\ Path=\u041f\u0443\u0442\u044c \u043f\u043e\u0442\u043e\u043a\u0430 +Lane\ Options\ Config=\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u043e\u043f\u0446\u0438\u0439 \u043f\u043e\u043b\u043e\u0441\u044b \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f diff --git a/sensorhub-webui-core/src/main/resources/org/sensorhub/ui/i18n/messages_th.properties b/sensorhub-webui-core/src/main/resources/org/sensorhub/ui/i18n/messages_th.properties new file mode 100644 index 0000000000..04c491a8f0 --- /dev/null +++ b/sensorhub-webui-core/src/main/resources/org/sensorhub/ui/i18n/messages_th.properties @@ -0,0 +1,543 @@ +app.title=OpenSensorHub +tab.sensors=\u0e40\u0e0b\u0e47\u0e19\u0e40\u0e0b\u0e2d\u0e23\u0e4c +tab.databases=\u0e10\u0e32\u0e19\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25 +tab.processing=\u0e01\u0e32\u0e23\u0e1b\u0e23\u0e30\u0e21\u0e27\u0e25\u0e1c\u0e25 +tab.services=\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23 +tab.clients=\u0e25\u0e39\u0e01\u0e04\u0e49\u0e32 +tab.network=\u0e40\u0e04\u0e23\u0e37\u0e2d\u0e02\u0e48\u0e32\u0e22 +tab.security=\u0e04\u0e27\u0e32\u0e21\u0e1b\u0e25\u0e2d\u0e14\u0e20\u0e31\u0e22 +action.shutdown=\u0e1b\u0e34\u0e14\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07 +action.logout=\u0e2d\u0e2d\u0e01\u0e08\u0e32\u0e01\u0e23\u0e30\u0e1a\u0e1a +action.save=\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01 +action.addModule=\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e42\u0e21\u0e14\u0e39\u0e25\u0e43\u0e2b\u0e21\u0e48 +action.addSubmodule=\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e42\u0e21\u0e14\u0e39\u0e25\u0e22\u0e48\u0e2d\u0e22 +action.removeModule=\u0e25\u0e1a\u0e42\u0e21\u0e14\u0e39\u0e25 +action.removeSubmodule=\u0e25\u0e1a\u0e42\u0e21\u0e14\u0e39\u0e25\u0e22\u0e48\u0e2d\u0e22 +action.start=\u0e40\u0e23\u0e34\u0e48\u0e21 +action.stop=\u0e2b\u0e22\u0e38\u0e14 +action.restart=\u0e23\u0e35\u0e2a\u0e15\u0e32\u0e23\u0e4c\u0e17 +action.forceInit=\u0e1a\u0e31\u0e07\u0e04\u0e31\u0e1a\u0e40\u0e23\u0e34\u0e48\u0e21\u0e15\u0e49\u0e19 +action.selectAll=\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14 +action.deselectAll=\u0e44\u0e21\u0e48\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14 +dialog.shutdown.title=\u0e40\u0e23\u0e34\u0e48\u0e21\u0e01\u0e32\u0e23\u0e1b\u0e34\u0e14\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07... +dialog.shutdown.message=UI \u0e08\u0e30\u0e2b\u0e22\u0e38\u0e14\u0e15\u0e2d\u0e1a\u0e2a\u0e19\u0e2d\u0e07 +dialog.shutdown.confirm=\u0e04\u0e38\u0e13\u0e41\u0e19\u0e48\u0e43\u0e08\u0e2b\u0e23\u0e37\u0e2d\u0e44\u0e21\u0e48\u0e27\u0e48\u0e32\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e1b\u0e34\u0e14\u0e2e\u0e31\u0e1a\u0e40\u0e0b\u0e47\u0e19\u0e40\u0e0b\u0e2d\u0e23\u0e4c? +dialog.logout.confirm=\u0e04\u0e38\u0e13\u0e41\u0e19\u0e48\u0e43\u0e08\u0e2b\u0e23\u0e37\u0e2d\u0e44\u0e21\u0e48\u0e27\u0e48\u0e32\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e2d\u0e2d\u0e01\u0e08\u0e32\u0e01\u0e23\u0e30\u0e1a\u0e1a? +dialog.save.confirm=\u0e04\u0e38\u0e13\u0e41\u0e19\u0e48\u0e43\u0e08\u0e2b\u0e23\u0e37\u0e2d\u0e44\u0e21\u0e48\u0e27\u0e48\u0e32\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01\u0e01\u0e32\u0e23\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e04\u0e48\u0e32? +msg.configSaved=\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01\u0e01\u0e32\u0e23\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e04\u0e48\u0e32 SensorHub \u0e41\u0e25\u0e49\u0e27 +msg.configSaveError=\u0e44\u0e21\u0e48\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01\u0e01\u0e32\u0e23\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e04\u0e48\u0e32 +dialog.remove.confirm=\u0e04\u0e38\u0e13\u0e41\u0e19\u0e48\u0e43\u0e08\u0e2b\u0e23\u0e37\u0e2d\u0e44\u0e21\u0e48\u0e27\u0e48\u0e32\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e25\u0e1a {0}?
\u0e01\u0e32\u0e23\u0e15\u0e31\u0e49\u0e07\u0e04\u0e48\u0e32\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14\u0e08\u0e30\u0e2b\u0e32\u0e22\u0e44\u0e1b +msg.removeError=\u0e44\u0e21\u0e48\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e25\u0e1a {0} +msg.startError=\u0e44\u0e21\u0e48\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e40\u0e23\u0e34\u0e48\u0e21 {0} +msg.stopError=\u0e44\u0e21\u0e48\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e2b\u0e22\u0e38\u0e14 {0} +msg.restartError=\u0e44\u0e21\u0e48\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e23\u0e35\u0e2a\u0e15\u0e32\u0e23\u0e4c\u0e17 {0} +msg.reinitError=\u0e44\u0e21\u0e48\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e40\u0e23\u0e34\u0e48\u0e21\u0e15\u0e49\u0e19\u0e43\u0e2b\u0e21\u0e48 {0} +msg.loadError=\u0e44\u0e21\u0e48\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e42\u0e2b\u0e25\u0e14\u0e42\u0e21\u0e14\u0e39\u0e25 +msg.addSubmoduleError=\u0e44\u0e21\u0e48\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e42\u0e21\u0e14\u0e39\u0e25\u0e22\u0e48\u0e2d\u0e22 +about.title=\u0e40\u0e01\u0e35\u0e48\u0e22\u0e27\u0e01\u0e31\u0e1a OpenSensorHub +about.desc=\u0e41\u0e1e\u0e25\u0e15\u0e1f\u0e2d\u0e23\u0e4c\u0e21\u0e0b\u0e2d\u0e1f\u0e15\u0e4c\u0e41\u0e27\u0e23\u0e4c\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e2a\u0e23\u0e49\u0e32\u0e07\u0e40\u0e04\u0e23\u0e37\u0e2d\u0e02\u0e48\u0e32\u0e22\u0e40\u0e0b\u0e47\u0e19\u0e40\u0e0b\u0e2d\u0e23\u0e4c\u0e2d\u0e31\u0e08\u0e09\u0e23\u0e34\u0e22\u0e30\u0e41\u0e25\u0e30 IoT +about.license=\u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a\u0e2d\u0e19\u0e38\u0e0d\u0e32\u0e15\u0e20\u0e32\u0e22\u0e43\u0e15\u0e49 Mozilla Public License v2.0 +about.version=\u0e40\u0e27\u0e2d\u0e23\u0e4c\u0e0a\u0e31\u0e19: +about.build=\u0e2b\u0e21\u0e32\u0e22\u0e40\u0e25\u0e02\u0e1a\u0e34\u0e25\u0e14\u0e4c: +about.deployment=\u0e0a\u0e37\u0e48\u0e2d\u0e01\u0e32\u0e23\u0e1b\u0e23\u0e31\u0e1a\u0e43\u0e0a\u0e49: +tooltip.shutdown=\u0e1b\u0e34\u0e14 SensorHub +tooltip.logout=\u0e2d\u0e2d\u0e01\u0e08\u0e32\u0e01\u0e23\u0e30\u0e1a\u0e1a OSH +tooltip.save=\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01\u0e01\u0e32\u0e23\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e04\u0e48\u0e32 SensorHub +dialog.start.confirm=\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e40\u0e23\u0e34\u0e48\u0e21 {0} \u0e2b\u0e23\u0e37\u0e2d\u0e44\u0e21\u0e48? +dialog.stop.confirm=\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e2b\u0e22\u0e38\u0e14 {0} \u0e2b\u0e23\u0e37\u0e2d\u0e44\u0e21\u0e48? +dialog.restart.confirm=\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e23\u0e35\u0e2a\u0e15\u0e32\u0e23\u0e4c\u0e17 {0} \u0e2b\u0e23\u0e37\u0e2d\u0e44\u0e21\u0e48? +dialog.reinit.confirm=\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e1a\u0e31\u0e07\u0e04\u0e31\u0e1a\u0e40\u0e23\u0e34\u0e48\u0e21\u0e15\u0e49\u0e19 {0} \u0e43\u0e2b\u0e21\u0e48\u0e2b\u0e23\u0e37\u0e2d\u0e44\u0e21\u0e48? +backgroundUpdate=\u0e01\u0e32\u0e23\u0e2d\u0e31\u0e1b\u0e40\u0e14\u0e15\u0e40\u0e1a\u0e37\u0e49\u0e2d\u0e07\u0e2b\u0e25\u0e31\u0e07 +sigmaThreshold=\u0e40\u0e01\u0e13\u0e11\u0e4c\u0e0b\u0e34\u0e01\u0e21\u0e48\u0e32 +nuclideIdentification=\u0e01\u0e32\u0e23\u0e23\u0e30\u0e1a\u0e38\u0e19\u0e34\u0e27\u0e44\u0e04\u0e25\u0e14\u0e4c +tamperAlarm=\u0e2a\u0e31\u0e0d\u0e0d\u0e32\u0e13\u0e40\u0e15\u0e37\u0e2d\u0e19\u0e01\u0e32\u0e23\u0e07\u0e31\u0e14\u0e41\u0e07\u0e30 +occupancySensor=\u0e40\u0e0b\u0e47\u0e19\u0e40\u0e0b\u0e2d\u0e23\u0e4c\u0e01\u0e32\u0e23\u0e04\u0e23\u0e2d\u0e1a\u0e04\u0e23\u0e2d\u0e07 +stateOfHealth=\u0e2a\u0e16\u0e32\u0e19\u0e30\u0e2a\u0e38\u0e02\u0e20\u0e32\u0e1e +soh=\u0e2a\u0e42\u0e2d +1ScanThisQrCodeWithYourAuthenticatorApp=1. \u0e2a\u0e41\u0e01\u0e19\u0e23\u0e2b\u0e31\u0e2a QR \u0e19\u0e35\u0e49\u0e14\u0e49\u0e27\u0e22\u0e41\u0e2d\u0e1b\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e15\u0e31\u0e27\u0e15\u0e19\u0e02\u0e2d\u0e07\u0e04\u0e38\u0e13: +2EnterThe6digitCodeGeneratedByTheApp=2. \u0e1b\u0e49\u0e2d\u0e19\u0e23\u0e2b\u0e31\u0e2a 6 \u0e2b\u0e25\u0e31\u0e01\u0e17\u0e35\u0e48\u0e2a\u0e23\u0e49\u0e32\u0e07\u0e42\u0e14\u0e22\u0e41\u0e2d\u0e1b: +orEnterThisSecretKeyManually=\u0e2b\u0e23\u0e37\u0e2d\u0e1b\u0e49\u0e2d\u0e19\u0e23\u0e2b\u0e31\u0e2a\u0e25\u0e31\u0e1a\u0e19\u0e35\u0e49\u0e14\u0e49\u0e27\u0e22\u0e15\u0e19\u0e40\u0e2d\u0e07: +loadingBundlesInformation=\u0e01\u0e33\u0e25\u0e31\u0e07\u0e42\u0e2b\u0e25\u0e14\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e0a\u0e38\u0e14\u0e23\u0e27\u0e21... +loadingPackageInformation=\u0e01\u0e33\u0e25\u0e31\u0e07\u0e42\u0e2b\u0e25\u0e14\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e41\u0e1e\u0e47\u0e04\u0e40\u0e01\u0e08... +arrayComponentNotSupported=\u0e44\u0e21\u0e48\u0e23\u0e2d\u0e07\u0e23\u0e31\u0e1a\u0e04\u0e2d\u0e21\u0e42\u0e1e\u0e40\u0e19\u0e19\u0e15\u0e4c\u0e2d\u0e32\u0e23\u0e4c\u0e40\u0e23\u0e22\u0e4c +twofactorAuthentication=\u0e01\u0e32\u0e23\u0e23\u0e31\u0e1a\u0e23\u0e2d\u0e07\u0e04\u0e27\u0e32\u0e21\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07\u0e14\u0e49\u0e27\u0e22\u0e2a\u0e2d\u0e07\u0e1b\u0e31\u0e08\u0e08\u0e31\u0e22 +installMorePackages=\u0e15\u0e34\u0e14\u0e15\u0e31\u0e49\u0e07\u0e41\u0e1e\u0e47\u0e04\u0e40\u0e01\u0e08\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e40\u0e15\u0e34\u0e21... +errorGeneratingQrCode=\u0e40\u0e01\u0e34\u0e14\u0e02\u0e49\u0e2d\u0e1c\u0e34\u0e14\u0e1e\u0e25\u0e32\u0e14\u0e43\u0e19\u0e01\u0e32\u0e23\u0e2a\u0e23\u0e49\u0e32\u0e07\u0e23\u0e2b\u0e31\u0e2a QR +installMoreModules=\u0e15\u0e34\u0e14\u0e15\u0e31\u0e49\u0e07\u0e42\u0e21\u0e14\u0e39\u0e25\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e40\u0e15\u0e34\u0e21... +detailedInstructions=\u0e04\u0e33\u0e41\u0e19\u0e30\u0e19\u0e33\u0e42\u0e14\u0e22\u0e25\u0e30\u0e40\u0e2d\u0e35\u0e22\u0e14 +availableNetworks=\u0e40\u0e04\u0e23\u0e37\u0e2d\u0e02\u0e48\u0e32\u0e22\u0e17\u0e35\u0e48\u0e21\u0e35\u0e2d\u0e22\u0e39\u0e48 +processParameters=\u0e1e\u0e32\u0e23\u0e32\u0e21\u0e34\u0e40\u0e15\u0e2d\u0e23\u0e4c\u0e01\u0e23\u0e30\u0e1a\u0e27\u0e19\u0e01\u0e32\u0e23 +verifyAndEnable=\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e41\u0e25\u0e30\u0e40\u0e1b\u0e34\u0e14\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19 +dataSourceInfo=\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e41\u0e2b\u0e25\u0e48\u0e07\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25 +detectedDevices=\u0e2d\u0e38\u0e1b\u0e01\u0e23\u0e13\u0e4c\u0e17\u0e35\u0e48\u0e15\u0e23\u0e27\u0e08\u0e1e\u0e1a +installSelected=\u0e15\u0e34\u0e14\u0e15\u0e31\u0e49\u0e07\u0e17\u0e35\u0e48\u0e40\u0e25\u0e37\u0e2d\u0e01 +databaseContent=\u0e40\u0e19\u0e37\u0e49\u0e2d\u0e2b\u0e32\u0e10\u0e32\u0e19\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25 +itemsPerPage=\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e15\u0e48\u0e2d\u0e2b\u0e19\u0e49\u0e32: +commandInputs=\u0e2d\u0e34\u0e19\u0e1e\u0e38\u0e15\u0e04\u0e33\u0e2a\u0e31\u0e48\u0e07 +processInputs=\u0e2d\u0e34\u0e19\u0e1e\u0e38\u0e15\u0e01\u0e23\u0e30\u0e1a\u0e27\u0e19\u0e01\u0e32\u0e23 +providerClass=\u0e04\u0e25\u0e32\u0e2a\u0e1c\u0e39\u0e49\u0e43\u0e2b\u0e49\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23 +processName=\u0e0a\u0e37\u0e48\u0e2d\u0e01\u0e23\u0e30\u0e1a\u0e27\u0e19\u0e01\u0e32\u0e23: +configuration=\u0e01\u0e32\u0e23\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e04\u0e48\u0e32 +applyChanges=\u0e43\u0e0a\u0e49\u0e01\u0e32\u0e23\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e41\u0e1b\u0e25\u0e07 +sendCommand=\u0e2a\u0e48\u0e07\u0e04\u0e33\u0e2a\u0e31\u0e48\u0e07 +useAddress=\u0e43\u0e0a\u0e49\u0e17\u0e35\u0e48\u0e2d\u0e22\u0e39\u0e48 +selectNone=\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e44\u0e21\u0e48\u0e21\u0e35 +timeRange=\u0e0a\u0e48\u0e27\u0e07\u0e40\u0e27\u0e25\u0e32: +permissions=\u0e2a\u0e34\u0e17\u0e18\u0e34\u0e4c +startScan=\u0e40\u0e23\u0e34\u0e48\u0e21\u0e01\u0e32\u0e23\u0e2a\u0e41\u0e01\u0e19 +noReadme=\u0e44\u0e21\u0e48\u0e21\u0e35\u0e01\u0e32\u0e23\u0e2d\u0e48\u0e32\u0e19 +stopScan=\u0e2b\u0e22\u0e38\u0e14\u0e01\u0e32\u0e23\u0e2a\u0e41\u0e01\u0e19 +reset2fa=\u0e23\u0e35\u0e40\u0e0b\u0e47\u0e15 2FA +previous=\u0e01\u0e48\u0e2d\u0e19\u0e2b\u0e19\u0e49\u0e32 +useName=\u0e43\u0e0a\u0e49\u0e0a\u0e37\u0e48\u0e2d +outputs=\u0e40\u0e2d\u0e32\u0e17\u0e4c\u0e1e\u0e38\u0e15 +refresh=\u0e23\u0e35\u0e40\u0e1f\u0e23\u0e0a +modify=\u0e41\u0e01\u0e49\u0e44\u0e02 +cancel=\u0e22\u0e01\u0e40\u0e25\u0e34\u0e01 +logout=\u0e2d\u0e2d\u0e01\u0e08\u0e32\u0e01\u0e23\u0e30\u0e1a\u0e1a +remove=\u0e25\u0e1a +verify=\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a +first=\u0e2d\u0e31\u0e19\u0e14\u0e31\u0e1a\u0e41\u0e23\u0e01 +login=\u0e40\u0e02\u0e49\u0e32\u0e2a\u0e39\u0e48\u0e23\u0e30\u0e1a\u0e1a +last=\u0e25\u0e48\u0e32\u0e2a\u0e38\u0e14 +view=\u0e14\u0e39 +next=\u0e15\u0e48\u0e2d\u0e44\u0e1b +stop=\u0e2b\u0e22\u0e38\u0e14 +add=\u0e40\u0e1e\u0e34\u0e48\u0e21 +ui.empty=< +ok=\u0e15\u0e01\u0e25\u0e07 +1ScanThisQrCodeWithYourAuthenticatorApp1=1. \u0e2a\u0e41\u0e01\u0e19\u0e23\u0e2b\u0e31\u0e2a QR \u0e19\u0e35\u0e49\u0e14\u0e49\u0e27\u0e22\u0e41\u0e2d\u0e1b\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e15\u0e31\u0e27\u0e15\u0e19\u0e02\u0e2d\u0e07\u0e04\u0e38\u0e13: +2EnterThe6digitCodeGeneratedByTheApp1=2. \u0e1b\u0e49\u0e2d\u0e19\u0e23\u0e2b\u0e31\u0e2a 6 \u0e2b\u0e25\u0e31\u0e01\u0e17\u0e35\u0e48\u0e2a\u0e23\u0e49\u0e32\u0e07\u0e42\u0e14\u0e22\u0e41\u0e2d\u0e1b: +orEnterThisSecretKeyManually1=\u0e2b\u0e23\u0e37\u0e2d\u0e1b\u0e49\u0e2d\u0e19\u0e23\u0e2b\u0e31\u0e2a\u0e25\u0e31\u0e1a\u0e19\u0e35\u0e49\u0e14\u0e49\u0e27\u0e22\u0e15\u0e19\u0e40\u0e2d\u0e07: +loadingPackageInformation1=\u0e01\u0e33\u0e25\u0e31\u0e07\u0e42\u0e2b\u0e25\u0e14\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e41\u0e1e\u0e47\u0e04\u0e40\u0e01\u0e08... +loadingBundlesInformation1=\u0e01\u0e33\u0e25\u0e31\u0e07\u0e42\u0e2b\u0e25\u0e14\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e0a\u0e38\u0e14\u0e23\u0e27\u0e21... +arrayComponentNotSupported1=\u0e44\u0e21\u0e48\u0e23\u0e2d\u0e07\u0e23\u0e31\u0e1a\u0e04\u0e2d\u0e21\u0e42\u0e1e\u0e40\u0e19\u0e19\u0e15\u0e4c\u0e2d\u0e32\u0e23\u0e4c\u0e40\u0e23\u0e22\u0e4c +twofactorAuthentication1=\u0e01\u0e32\u0e23\u0e23\u0e31\u0e1a\u0e23\u0e2d\u0e07\u0e04\u0e27\u0e32\u0e21\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07\u0e14\u0e49\u0e27\u0e22\u0e2a\u0e2d\u0e07\u0e1b\u0e31\u0e08\u0e08\u0e31\u0e22 +errorGeneratingQrCode1=\u0e40\u0e01\u0e34\u0e14\u0e02\u0e49\u0e2d\u0e1c\u0e34\u0e14\u0e1e\u0e25\u0e32\u0e14\u0e43\u0e19\u0e01\u0e32\u0e23\u0e2a\u0e23\u0e49\u0e32\u0e07\u0e23\u0e2b\u0e31\u0e2a QR +installMorePackages1=\u0e15\u0e34\u0e14\u0e15\u0e31\u0e49\u0e07\u0e41\u0e1e\u0e47\u0e04\u0e40\u0e01\u0e08\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e40\u0e15\u0e34\u0e21... +installMoreModules1=\u0e15\u0e34\u0e14\u0e15\u0e31\u0e49\u0e07\u0e42\u0e21\u0e14\u0e39\u0e25\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e40\u0e15\u0e34\u0e21... +detailedInstructions1=\u0e04\u0e33\u0e41\u0e19\u0e30\u0e19\u0e33\u0e42\u0e14\u0e22\u0e25\u0e30\u0e40\u0e2d\u0e35\u0e22\u0e14 +processParameters1=\u0e1e\u0e32\u0e23\u0e32\u0e21\u0e34\u0e40\u0e15\u0e2d\u0e23\u0e4c\u0e01\u0e23\u0e30\u0e1a\u0e27\u0e19\u0e01\u0e32\u0e23 +availableNetworks1=\u0e40\u0e04\u0e23\u0e37\u0e2d\u0e02\u0e48\u0e32\u0e22\u0e17\u0e35\u0e48\u0e21\u0e35\u0e2d\u0e22\u0e39\u0e48 +verifyAndEnable1=\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e41\u0e25\u0e30\u0e40\u0e1b\u0e34\u0e14\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19 +databaseContent1=\u0e40\u0e19\u0e37\u0e49\u0e2d\u0e2b\u0e32\u0e10\u0e32\u0e19\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25 +installSelected1=\u0e15\u0e34\u0e14\u0e15\u0e31\u0e49\u0e07\u0e17\u0e35\u0e48\u0e40\u0e25\u0e37\u0e2d\u0e01 +dataSourceInfo1=\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e41\u0e2b\u0e25\u0e48\u0e07\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25 +detectedDevices1=\u0e2d\u0e38\u0e1b\u0e01\u0e23\u0e13\u0e4c\u0e17\u0e35\u0e48\u0e15\u0e23\u0e27\u0e08\u0e1e\u0e1a +itemsPerPage1=\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e15\u0e48\u0e2d\u0e2b\u0e19\u0e49\u0e32: +processInputs1=\u0e2d\u0e34\u0e19\u0e1e\u0e38\u0e15\u0e01\u0e23\u0e30\u0e1a\u0e27\u0e19\u0e01\u0e32\u0e23 +commandInputs1=\u0e2d\u0e34\u0e19\u0e1e\u0e38\u0e15\u0e04\u0e33\u0e2a\u0e31\u0e48\u0e07 +providerClass1=\u0e04\u0e25\u0e32\u0e2a\u0e1c\u0e39\u0e49\u0e43\u0e2b\u0e49\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23 +configuration1=\u0e01\u0e32\u0e23\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e04\u0e48\u0e32 +processName1=\u0e0a\u0e37\u0e48\u0e2d\u0e01\u0e23\u0e30\u0e1a\u0e27\u0e19\u0e01\u0e32\u0e23: +applyChanges1=\u0e43\u0e0a\u0e49\u0e01\u0e32\u0e23\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e41\u0e1b\u0e25\u0e07 +sendCommand1=\u0e2a\u0e48\u0e07\u0e04\u0e33\u0e2a\u0e31\u0e48\u0e07 +timeRange1=\u0e0a\u0e48\u0e27\u0e07\u0e40\u0e27\u0e25\u0e32: +useAddress1=\u0e43\u0e0a\u0e49\u0e17\u0e35\u0e48\u0e2d\u0e22\u0e39\u0e48 +permissions1=\u0e2a\u0e34\u0e17\u0e18\u0e34\u0e4c +selectNone1=\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e44\u0e21\u0e48\u0e21\u0e35 +startScan1=\u0e40\u0e23\u0e34\u0e48\u0e21\u0e01\u0e32\u0e23\u0e2a\u0e41\u0e01\u0e19 +noReadme1=\u0e44\u0e21\u0e48\u0e21\u0e35\u0e01\u0e32\u0e23\u0e2d\u0e48\u0e32\u0e19 +reset2fa1=\u0e23\u0e35\u0e40\u0e0b\u0e47\u0e15 2FA +stopScan1=\u0e2b\u0e22\u0e38\u0e14\u0e01\u0e32\u0e23\u0e2a\u0e41\u0e01\u0e19 +useName1=\u0e43\u0e0a\u0e49\u0e0a\u0e37\u0e48\u0e2d +previous1=\u0e01\u0e48\u0e2d\u0e19\u0e2b\u0e19\u0e49\u0e32 +refresh1=\u0e23\u0e35\u0e40\u0e1f\u0e23\u0e0a +outputs1=\u0e40\u0e2d\u0e32\u0e17\u0e4c\u0e1e\u0e38\u0e15 +cancel1=\u0e22\u0e01\u0e40\u0e25\u0e34\u0e01 +logout1=\u0e2d\u0e2d\u0e01\u0e08\u0e32\u0e01\u0e23\u0e30\u0e1a\u0e1a +modify1=\u0e41\u0e01\u0e49\u0e44\u0e02 +remove1=\u0e25\u0e1a +verify1=\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a +first1=\u0e2d\u0e31\u0e19\u0e14\u0e31\u0e1a\u0e41\u0e23\u0e01 +login1=\u0e40\u0e02\u0e49\u0e32\u0e2a\u0e39\u0e48\u0e23\u0e30\u0e1a\u0e1a +view1=\u0e14\u0e39 +stop1=\u0e2b\u0e22\u0e38\u0e14 +next1=\u0e15\u0e48\u0e2d\u0e44\u0e1b +last1=\u0e25\u0e48\u0e32\u0e2a\u0e38\u0e14 +add1=\u0e40\u0e1e\u0e34\u0e48\u0e21 +last2=>> +first2=<< +ok1=\u0e15\u0e01\u0e25\u0e07 +next2=> +previous2=< + +pleaseEnterAUserIDFirst1=\u0e01\u0e23\u0e38\u0e13\u0e32\u0e01\u0e23\u0e2d\u0e01 User ID \u0e01\u0e48\u0e2d\u0e19 +reset2FA1=\u0e23\u0e35\u0e40\u0e0b\u0e47\u0e15 2FA +enable2FA1=\u0e40\u0e1b\u0e34\u0e14\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19 2FA +twoFAEnabledSuccessfully1=\u0e40\u0e1b\u0e34\u0e14\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19 2FA \u0e2a\u0e33\u0e40\u0e23\u0e47\u0e08\u0e41\u0e25\u0e49\u0e27 +invalidCode1=\u0e23\u0e2b\u0e31\u0e2a\u0e44\u0e21\u0e48\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07 +allowedAndDeniedPermissionsForUsersWithThisRole1=\u0e2d\u0e19\u0e38\u0e0d\u0e32\u0e15\u0e41\u0e25\u0e30\u0e1b\u0e0f\u0e34\u0e40\u0e2a\u0e18\u0e2a\u0e34\u0e17\u0e18\u0e34\u0e4c\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e17\u0e35\u0e48\u0e21\u0e35\u0e1a\u0e17\u0e1a\u0e32\u0e17\u0e19\u0e35\u0e49 +manualEntry1=\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e14\u0e49\u0e27\u0e22\u0e15\u0e19\u0e40\u0e2d\u0e07 +toggleAutoRefreshDataOncePerSecond1=\u0e2a\u0e25\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e23\u0e35\u0e40\u0e1f\u0e23\u0e0a\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e2d\u0e31\u0e15\u0e42\u0e19\u0e21\u0e31\u0e15\u0e34\u0e2b\u0e19\u0e36\u0e48\u0e07\u0e04\u0e23\u0e31\u0e49\u0e07\u0e15\u0e48\u0e2d\u0e27\u0e34\u0e19\u0e32\u0e17\u0e35 +lookupSystem1=\u0e23\u0e30\u0e1a\u0e1a\u0e04\u0e49\u0e19\u0e2b\u0e32 +lookupModule1=\u0e42\u0e21\u0e14\u0e39\u0e25\u0e01\u0e32\u0e23\u0e04\u0e49\u0e19\u0e2b\u0e32 +lookupAddress1=\u0e04\u0e49\u0e19\u0e2b\u0e32\u0e17\u0e35\u0e48\u0e2d\u0e22\u0e39\u0e48 +showPassword1=\u0e41\u0e2a\u0e14\u0e07\u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e48\u0e32\u0e19 +showHistogram1=\u0e41\u0e2a\u0e14\u0e07\u0e2e\u0e34\u0e2a\u0e42\u0e15\u0e41\u0e01\u0e23\u0e21 +hideHistogram1=\u0e0b\u0e48\u0e2d\u0e19\u0e2e\u0e34\u0e2a\u0e42\u0e15\u0e41\u0e01\u0e23\u0e21 +reloadDataFromDatabase1=\u0e42\u0e2b\u0e25\u0e14\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e08\u0e32\u0e01\u0e10\u0e32\u0e19\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e2d\u0e35\u0e01\u0e04\u0e23\u0e31\u0e49\u0e07 +fois1=FOI +username1=\u0e0a\u0e37\u0e48\u0e2d\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49 +password1=\u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e48\u0e32\u0e19 +loginFailed1=\u0e01\u0e32\u0e23\u0e40\u0e02\u0e49\u0e32\u0e2a\u0e39\u0e48\u0e23\u0e30\u0e1a\u0e1a\u0e25\u0e49\u0e21\u0e40\u0e2b\u0e25\u0e27 +invalidUsernameOrPassword1=\u0e0a\u0e37\u0e48\u0e2d\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e2b\u0e23\u0e37\u0e2d\u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e48\u0e32\u0e19\u0e44\u0e21\u0e48\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07 +verificationCode1=\u0e23\u0e2b\u0e31\u0e2a\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19 +verificationFailed1=\u0e01\u0e32\u0e23\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e25\u0e49\u0e21\u0e40\u0e2b\u0e25\u0e27 +datasource1=\u0e41\u0e2b\u0e25\u0e48\u0e07\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25 +process1=\u0e01\u0e23\u0e30\u0e1a\u0e27\u0e19\u0e01\u0e32\u0e23 +logoutFromOshNode1=\u0e2d\u0e2d\u0e01\u0e08\u0e32\u0e01\u0e23\u0e30\u0e1a\u0e1a\u0e42\u0e2b\u0e19\u0e14 OSH +setParameter1=\u0e15\u0e31\u0e49\u0e07\u0e04\u0e48\u0e32\u0e1e\u0e32\u0e23\u0e32\u0e21\u0e34\u0e40\u0e15\u0e2d\u0e23\u0e4c +setupTwoFactorAuthentication1=\u0e15\u0e31\u0e49\u0e07\u0e04\u0e48\u0e32\u0e01\u0e32\u0e23\u0e23\u0e31\u0e1a\u0e23\u0e2d\u0e07\u0e04\u0e27\u0e32\u0e21\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07\u0e14\u0e49\u0e27\u0e22\u0e2a\u0e2d\u0e07\u0e1b\u0e31\u0e08\u0e08\u0e31\u0e22 + +action.new_item=\u0e43\u0e2b\u0e21\u0e48 {0} +Lane\ System=\u0e23\u0e30\u0e1a\u0e1a\u0e40\u0e25\u0e19 +Module\ Class=\u0e04\u0e25\u0e32\u0e2a\u0e42\u0e21\u0e14\u0e39\u0e25 +Module\ Name=\u0e0a\u0e37\u0e48\u0e2d\u0e42\u0e21\u0e14\u0e39\u0e25 +Module\ ID=\u0e23\u0e2b\u0e31\u0e2a\u0e42\u0e21\u0e14\u0e39\u0e25 +Description=\u0e04\u0e33\u0e2d\u0e18\u0e34\u0e1a\u0e32\u0e22 +SensorML\ URL=URL \u0e02\u0e2d\u0e07 SensorML +UniqueID=\u0e23\u0e2b\u0e31\u0e2a\u0e40\u0e09\u0e1e\u0e32\u0e30 +Last\ Updated=\u0e2d\u0e31\u0e1b\u0e40\u0e14\u0e15\u0e25\u0e48\u0e32\u0e2a\u0e38\u0e14 +Auto\ Start=\u0e40\u0e23\u0e34\u0e48\u0e21\u0e2d\u0e31\u0e15\u0e42\u0e19\u0e21\u0e31\u0e15\u0e34 +Delete\ Data\ on\ Lane\ Removal=\u0e25\u0e1a\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e43\u0e19\u0e01\u0e32\u0e23\u0e25\u0e1a\u0e40\u0e25\u0e19 +Latitude=\u0e25\u0e30\u0e15\u0e34\u0e08\u0e39\u0e14 +Longitude=\u0e25\u0e2d\u0e07\u0e08\u0e34\u0e08\u0e39\u0e14 +Altitude=\u0e23\u0e30\u0e14\u0e31\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e2a\u0e39\u0e07 +Initial\ RPM\ Config=\u0e01\u0e32\u0e23\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e04\u0e48\u0e32 RPM \u0e40\u0e23\u0e34\u0e48\u0e21\u0e15\u0e49\u0e19 +Initial\ Camera\ Config=\u0e01\u0e32\u0e23\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e04\u0e48\u0e32\u0e01\u0e25\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e34\u0e48\u0e21\u0e15\u0e49\u0e19 +Lane\ Options\ Config=\u0e01\u0e32\u0e23\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e04\u0e48\u0e32\u0e15\u0e31\u0e27\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e0a\u0e48\u0e2d\u0e07\u0e17\u0e32\u0e07 +tab.general=\u0e17\u0e31\u0e48\u0e27\u0e44\u0e1b +tab.readme=\u0e2d\u0e48\u0e32\u0e19\u0e09\u0e31\u0e19 +Fixed\ Location=\u0e15\u0e33\u0e41\u0e2b\u0e19\u0e48\u0e07\u0e04\u0e07\u0e17\u0e35\u0e48 +Fixed\ Orientation=\u0e01\u0e32\u0e23\u0e27\u0e32\u0e07\u0e41\u0e19\u0e27\u0e04\u0e07\u0e17\u0e35\u0e48 +# Auto-extracted DisplayInfo labels and descriptions +URL\ of\ SensorML\ file\ providing\ the\ base\ description\ of\ the\ sensor=URL \u0e02\u0e2d\u0e07\u0e44\u0e1f\u0e25\u0e4c SensorML \u0e17\u0e35\u0e48\u0e43\u0e2b\u0e49\u0e04\u0e33\u0e2d\u0e18\u0e34\u0e1a\u0e32\u0e22\u0e1e\u0e37\u0e49\u0e19\u0e10\u0e32\u0e19\u0e02\u0e2d\u0e07\u0e40\u0e0b\u0e47\u0e19\u0e40\u0e0b\u0e2d\u0e23\u0e4c +Time\ at\ which\ the\ SensorML\ description\ was\ last\ updated=\u0e40\u0e27\u0e25\u0e32\u0e17\u0e35\u0e48\u0e04\u0e33\u0e2d\u0e18\u0e34\u0e1a\u0e32\u0e22 SensorML \u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e2d\u0e31\u0e1b\u0e40\u0e14\u0e15\u0e04\u0e23\u0e31\u0e49\u0e07\u0e25\u0e48\u0e32\u0e2a\u0e38\u0e14 +Geodetic\ latitude,\ in\ degrees=\u0e25\u0e30\u0e15\u0e34\u0e08\u0e39\u0e14\u0e08\u0e35\u0e42\u0e2d\u0e40\u0e14\u0e15\u0e34\u0e01 \u0e2b\u0e19\u0e48\u0e27\u0e22\u0e40\u0e1b\u0e47\u0e19\u0e2d\u0e07\u0e28\u0e32 +Longitude,\ in\ degrees=\u0e25\u0e2d\u0e07\u0e08\u0e34\u0e08\u0e39\u0e14 \u0e40\u0e1b\u0e47\u0e19\u0e2d\u0e07\u0e28\u0e32 +Height\ above\ ellipsoid,\ in\ meters=\u0e04\u0e27\u0e32\u0e21\u0e2a\u0e39\u0e07\u0e40\u0e2b\u0e19\u0e37\u0e2d\u0e17\u0e23\u0e07\u0e23\u0e35 \u0e2b\u0e19\u0e48\u0e27\u0e22\u0e40\u0e1b\u0e47\u0e19\u0e40\u0e21\u0e15\u0e23 +X\ coordinate,\ in\ meters=\u0e1e\u0e34\u0e01\u0e31\u0e14 X \u0e2b\u0e19\u0e48\u0e27\u0e22\u0e40\u0e1b\u0e47\u0e19\u0e40\u0e21\u0e15\u0e23 +Y\ coordinate,\ in\ meters=\u0e1e\u0e34\u0e01\u0e31\u0e14 Y \u0e2b\u0e19\u0e48\u0e27\u0e22\u0e40\u0e1b\u0e47\u0e19\u0e40\u0e21\u0e15\u0e23 +Z\ coordinate,\ in\ meters=\u0e1e\u0e34\u0e01\u0e31\u0e14 Z \u0e21\u0e35\u0e2b\u0e19\u0e48\u0e27\u0e22\u0e40\u0e1b\u0e47\u0e19\u0e40\u0e21\u0e15\u0e23 +Pitch\ angle\ about\ Y\ axis,\ in\ degrees=\u0e21\u0e38\u0e21\u0e1e\u0e34\u0e17\u0e0a\u0e4c\u0e1b\u0e23\u0e30\u0e21\u0e32\u0e13\u0e41\u0e01\u0e19 Y \u0e21\u0e35\u0e2b\u0e19\u0e48\u0e27\u0e22\u0e40\u0e1b\u0e47\u0e19\u0e2d\u0e07\u0e28\u0e32 +Roll\ angle\ about\ X\ axis,\ in\ degrees=\u0e21\u0e38\u0e21\u0e21\u0e49\u0e27\u0e19\u0e1b\u0e23\u0e30\u0e21\u0e32\u0e13\u0e41\u0e01\u0e19 X \u0e21\u0e35\u0e2b\u0e19\u0e48\u0e27\u0e22\u0e40\u0e1b\u0e47\u0e19\u0e2d\u0e07\u0e28\u0e32 +Location\ in\ EPSG\:4979\ coordinate\ reference\ frame=\u0e15\u0e33\u0e41\u0e2b\u0e19\u0e48\u0e07\u0e43\u0e19\u0e2b\u0e19\u0e49\u0e32\u0e15\u0e48\u0e32\u0e07\u0e2d\u0e49\u0e32\u0e07\u0e2d\u0e34\u0e07\u0e1e\u0e34\u0e01\u0e31\u0e14 EPSG:4979 +Database\ Number=\u0e2b\u0e21\u0e32\u0e22\u0e40\u0e25\u0e02\u0e10\u0e32\u0e19\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25 +Numerical\ identifier\ of\ the\ database.\ Each\ database\ that\ should\ be\ exposed\ via\ the\ federated\ database\ API\ must\ have\ a\ unique\ number\ on\ the\ sensor\ hub.\ If\ visibility\ through\ the\ federated\ database\ is\ not\ desired,\ it\ can\ be\ omitted.=\u0e15\u0e31\u0e27\u0e23\u0e30\u0e1a\u0e38\u0e15\u0e31\u0e27\u0e40\u0e25\u0e02\u0e02\u0e2d\u0e07\u0e10\u0e32\u0e19\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25 \u0e41\u0e15\u0e48\u0e25\u0e30\u0e10\u0e32\u0e19\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e17\u0e35\u0e48\u0e04\u0e27\u0e23\u0e40\u0e1b\u0e34\u0e14\u0e40\u0e1c\u0e22\u0e1c\u0e48\u0e32\u0e19 API \u0e10\u0e32\u0e19\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e23\u0e27\u0e21\u0e08\u0e30\u0e15\u0e49\u0e2d\u0e07\u0e21\u0e35\u0e2b\u0e21\u0e32\u0e22\u0e40\u0e25\u0e02\u0e40\u0e09\u0e1e\u0e32\u0e30\u0e1a\u0e19\u0e2e\u0e31\u0e1a\u0e40\u0e0b\u0e47\u0e19\u0e40\u0e0b\u0e2d\u0e23\u0e4c \u0e2b\u0e32\u0e01\u0e44\u0e21\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e01\u0e32\u0e23\u0e21\u0e2d\u0e07\u0e40\u0e2b\u0e47\u0e19\u0e1c\u0e48\u0e32\u0e19\u0e10\u0e32\u0e19\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e41\u0e1a\u0e1a\u0e23\u0e27\u0e21 \u0e01\u0e47\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e25\u0e30\u0e40\u0e27\u0e49\u0e19\u0e44\u0e14\u0e49 +Enables\ fine-grained\ permission-based\ access\ control\ for\ this\ module=\u0e40\u0e1b\u0e34\u0e14\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e01\u0e32\u0e23\u0e04\u0e27\u0e1a\u0e04\u0e38\u0e21\u0e01\u0e32\u0e23\u0e40\u0e02\u0e49\u0e32\u0e16\u0e36\u0e07\u0e15\u0e32\u0e21\u0e2a\u0e34\u0e17\u0e18\u0e34\u0e4c\u0e41\u0e1a\u0e1a\u0e25\u0e30\u0e40\u0e2d\u0e35\u0e22\u0e14\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e42\u0e21\u0e14\u0e39\u0e25\u0e19\u0e35\u0e49 +Require\ Authentication=\u0e15\u0e49\u0e2d\u0e07\u0e21\u0e35\u0e01\u0e32\u0e23\u0e23\u0e31\u0e1a\u0e23\u0e2d\u0e07\u0e04\u0e27\u0e32\u0e21\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07 +Set\ to\ require\ remote\ users\ to\ be\ authentified\ before\ they\ can\ use\ this\ service=\u0e15\u0e31\u0e49\u0e07\u0e04\u0e48\u0e32\u0e43\u0e2b\u0e49\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e43\u0e2b\u0e49\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e23\u0e30\u0e22\u0e30\u0e44\u0e01\u0e25\u0e15\u0e49\u0e2d\u0e07\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e2a\u0e34\u0e17\u0e18\u0e34\u0e4c\u0e01\u0e48\u0e2d\u0e19\u0e08\u0e36\u0e07\u0e08\u0e30\u0e43\u0e0a\u0e49\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23\u0e19\u0e35\u0e49\u0e44\u0e14\u0e49 +Endpoint=\u0e08\u0e38\u0e14\u0e2a\u0e34\u0e49\u0e19\u0e2a\u0e38\u0e14 +Unique\ local\ ID\ of\ the\ module=ID \u0e40\u0e09\u0e1e\u0e32\u0e30\u0e17\u0e49\u0e2d\u0e07\u0e16\u0e34\u0e48\u0e19\u0e02\u0e2d\u0e07\u0e42\u0e21\u0e14\u0e39\u0e25 +User\ description\ for\ the\ module=\u0e04\u0e33\u0e2d\u0e18\u0e34\u0e1a\u0e32\u0e22\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e42\u0e21\u0e14\u0e39\u0e25 +Set\ to\ automatically\ start\ the\ module\ when\ it\ is\ loaded=\u0e15\u0e31\u0e49\u0e07\u0e04\u0e48\u0e32\u0e43\u0e2b\u0e49\u0e40\u0e23\u0e34\u0e48\u0e21\u0e42\u0e21\u0e14\u0e39\u0e25\u0e42\u0e14\u0e22\u0e2d\u0e31\u0e15\u0e42\u0e19\u0e21\u0e31\u0e15\u0e34\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e21\u0e35\u0e01\u0e32\u0e23\u0e42\u0e2b\u0e25\u0e14 +Module\ implementation\ class=\u0e04\u0e25\u0e32\u0e2a\u0e01\u0e32\u0e23\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e42\u0e21\u0e14\u0e39\u0e25 +User\ chosen\ name\ for\ the\ module=\u0e0a\u0e37\u0e48\u0e2d\u0e17\u0e35\u0e48\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e42\u0e21\u0e14\u0e39\u0e25 +Name\ of\ topic/queue\ to\ use=\u0e0a\u0e37\u0e48\u0e2d\u0e2b\u0e31\u0e27\u0e02\u0e49\u0e2d/\u0e04\u0e34\u0e27\u0e17\u0e35\u0e48\u0e08\u0e30\u0e43\u0e0a\u0e49 +Enable/disable\ writing\ to\ queue=\u0e40\u0e1b\u0e34\u0e14/\u0e1b\u0e34\u0e14\u0e01\u0e32\u0e23\u0e40\u0e02\u0e35\u0e22\u0e19\u0e44\u0e1b\u0e22\u0e31\u0e07\u0e04\u0e34\u0e27 +Enable/disable\ reading\ from\ queue=\u0e40\u0e1b\u0e34\u0e14/\u0e1b\u0e34\u0e14\u0e01\u0e32\u0e23\u0e2d\u0e48\u0e32\u0e19\u0e08\u0e32\u0e01\u0e04\u0e34\u0e27 +Protocol\ Options=\u0e15\u0e31\u0e27\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e42\u0e1b\u0e23\u0e42\u0e15\u0e04\u0e2d\u0e25 +Common\ Configuration=\u0e01\u0e32\u0e23\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e04\u0e48\u0e32\u0e17\u0e31\u0e48\u0e27\u0e44\u0e1b +Common\ configuration\ for\ sensors\ in\ the\ array=\u0e01\u0e32\u0e23\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e04\u0e48\u0e32\u0e17\u0e31\u0e48\u0e27\u0e44\u0e1b\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e40\u0e0b\u0e47\u0e19\u0e40\u0e0b\u0e2d\u0e23\u0e4c\u0e43\u0e19\u0e2d\u0e32\u0e40\u0e23\u0e22\u0e4c +Sensors\ Configuration=\u0e01\u0e32\u0e23\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e04\u0e48\u0e32\u0e40\u0e0b\u0e47\u0e19\u0e40\u0e0b\u0e2d\u0e23\u0e4c +Subsystem\ Config=\u0e01\u0e32\u0e23\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e04\u0e48\u0e32\u0e23\u0e30\u0e1a\u0e1a\u0e22\u0e48\u0e2d\u0e22 +Configuration\ of\ the\ subsystem=\u0e01\u0e32\u0e23\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e04\u0e48\u0e32\u0e02\u0e2d\u0e07\u0e23\u0e30\u0e1a\u0e1a\u0e22\u0e48\u0e2d\u0e22 +Relative\ Location=\u0e17\u0e35\u0e48\u0e15\u0e31\u0e49\u0e07\u0e2a\u0e31\u0e21\u0e1e\u0e31\u0e17\u0e18\u0e4c +Location\ of\ this\ subsystem\ relative\ to\ the\ main\ system\ or\ platform\ reference\ frame=\u0e15\u0e33\u0e41\u0e2b\u0e19\u0e48\u0e07\u0e02\u0e2d\u0e07\u0e23\u0e30\u0e1a\u0e1a\u0e22\u0e48\u0e2d\u0e22\u0e19\u0e35\u0e49\u0e2a\u0e31\u0e21\u0e1e\u0e31\u0e19\u0e18\u0e4c\u0e01\u0e31\u0e1a\u0e23\u0e30\u0e1a\u0e1a\u0e2b\u0e25\u0e31\u0e01\u0e2b\u0e23\u0e37\u0e2d\u0e2b\u0e19\u0e49\u0e32\u0e15\u0e48\u0e32\u0e07\u0e2d\u0e49\u0e32\u0e07\u0e2d\u0e34\u0e07\u0e41\u0e1e\u0e25\u0e15\u0e1f\u0e2d\u0e23\u0e4c\u0e21 +Relative\ Orientation=\u0e1b\u0e10\u0e21\u0e19\u0e34\u0e40\u0e17\u0e28\u0e2a\u0e31\u0e21\u0e1e\u0e31\u0e19\u0e18\u0e4c +Orientation\ of\ this\ subsystem\ relative\ to\ the\ main\ system\ or\ platform\ reference\ frame=\u0e01\u0e32\u0e23\u0e27\u0e32\u0e07\u0e41\u0e19\u0e27\u0e02\u0e2d\u0e07\u0e23\u0e30\u0e1a\u0e1a\u0e22\u0e48\u0e2d\u0e22\u0e19\u0e35\u0e49\u0e2a\u0e31\u0e21\u0e1e\u0e31\u0e19\u0e18\u0e4c\u0e01\u0e31\u0e1a\u0e23\u0e30\u0e1a\u0e1a\u0e2b\u0e25\u0e31\u0e01\u0e2b\u0e23\u0e37\u0e2d\u0e2b\u0e19\u0e49\u0e32\u0e15\u0e48\u0e32\u0e07\u0e2d\u0e49\u0e32\u0e07\u0e2d\u0e34\u0e07\u0e41\u0e1e\u0e25\u0e15\u0e1f\u0e2d\u0e23\u0e4c\u0e21 +Fixed\ system\ orientation\ in\ the\ local\ NED\ reference\ frame=\u0e41\u0e01\u0e49\u0e44\u0e02\u0e01\u0e32\u0e23\u0e27\u0e32\u0e07\u0e41\u0e19\u0e27\u0e02\u0e2d\u0e07\u0e23\u0e30\u0e1a\u0e1a\u0e43\u0e19\u0e2b\u0e19\u0e49\u0e32\u0e15\u0e48\u0e32\u0e07\u0e2d\u0e49\u0e32\u0e07\u0e2d\u0e34\u0e07 NED \u0e20\u0e32\u0e22\u0e43\u0e19\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07 +Subsystems=\u0e23\u0e30\u0e1a\u0e1a\u0e22\u0e48\u0e2d\u0e22 +Configuration\ of\ components\ of\ this\ sensor\ system=\u0e01\u0e32\u0e23\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e04\u0e48\u0e32\u0e2a\u0e48\u0e27\u0e19\u0e1b\u0e23\u0e30\u0e01\u0e2d\u0e1a\u0e02\u0e2d\u0e07\u0e23\u0e30\u0e1a\u0e1a\u0e40\u0e0b\u0e47\u0e19\u0e40\u0e0b\u0e2d\u0e23\u0e4c\u0e19\u0e35\u0e49 +Database\ Config=\u0e01\u0e32\u0e23\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e04\u0e48\u0e32\u0e10\u0e32\u0e19\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25 +Configuration\ of\ underlying\ database=\u0e01\u0e32\u0e23\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e04\u0e48\u0e32\u0e10\u0e32\u0e19\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e1e\u0e37\u0e49\u0e19\u0e10\u0e32\u0e19 +System\ UIDs=UID \u0e02\u0e2d\u0e07\u0e23\u0e30\u0e1a\u0e1a +Unique\ IDs\ of\ system\ drivers\ handled\ by\ this\ database=ID \u0e40\u0e09\u0e1e\u0e32\u0e30\u0e02\u0e2d\u0e07\u0e44\u0e14\u0e23\u0e40\u0e27\u0e2d\u0e23\u0e4c\u0e23\u0e30\u0e1a\u0e1a\u0e17\u0e35\u0e48\u0e08\u0e31\u0e14\u0e01\u0e32\u0e23\u0e42\u0e14\u0e22\u0e10\u0e32\u0e19\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e19\u0e35\u0e49 +Automatic\ Purge\ Policy=\u0e19\u0e42\u0e22\u0e1a\u0e32\u0e22\u0e01\u0e32\u0e23\u0e25\u0e49\u0e32\u0e07\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e2d\u0e31\u0e15\u0e42\u0e19\u0e21\u0e31\u0e15\u0e34 +Policy\ for\ automatically\ purging\ historical\ data=\u0e19\u0e42\u0e22\u0e1a\u0e32\u0e22\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e25\u0e49\u0e32\u0e07\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e1b\u0e23\u0e30\u0e27\u0e31\u0e15\u0e34\u0e42\u0e14\u0e22\u0e2d\u0e31\u0e15\u0e42\u0e19\u0e21\u0e31\u0e15\u0e34 +Uncheck\ to\ disable\ auto-purge\ temporarily=\u0e22\u0e01\u0e40\u0e25\u0e34\u0e01\u0e01\u0e32\u0e23\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e1b\u0e34\u0e14\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e01\u0e32\u0e23\u0e25\u0e49\u0e32\u0e07\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e2d\u0e31\u0e15\u0e42\u0e19\u0e21\u0e31\u0e15\u0e34\u0e0a\u0e31\u0e48\u0e27\u0e04\u0e23\u0e32\u0e27 +Purge\ Execution\ Period=\u0e23\u0e30\u0e22\u0e30\u0e40\u0e27\u0e25\u0e32\u0e01\u0e32\u0e23\u0e14\u0e33\u0e40\u0e19\u0e34\u0e19\u0e01\u0e32\u0e23\u0e25\u0e49\u0e32\u0e07\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25 +Unique\ IDs\ of\ system\ drivers\ to\ purge=ID \u0e40\u0e09\u0e1e\u0e32\u0e30\u0e02\u0e2d\u0e07\u0e44\u0e14\u0e23\u0e40\u0e27\u0e2d\u0e23\u0e4c\u0e23\u0e30\u0e1a\u0e1a\u0e17\u0e35\u0e48\u0e08\u0e30\u0e25\u0e49\u0e32\u0e07\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25 +Max\ Record\ Age=\u0e2d\u0e32\u0e22\u0e38\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01\u0e2a\u0e39\u0e07\u0e2a\u0e38\u0e14 +SensorML\ File=\u0e44\u0e1f\u0e25\u0e4c SensorML +Path\ of\ SensorML\ description\ of\ the\ process=\u0e40\u0e2a\u0e49\u0e19\u0e17\u0e32\u0e07\u0e02\u0e2d\u0e07\u0e04\u0e33\u0e2d\u0e18\u0e34\u0e1a\u0e32\u0e22 SensorML \u0e02\u0e2d\u0e07\u0e01\u0e23\u0e30\u0e1a\u0e27\u0e19\u0e01\u0e32\u0e23 +List\ of\ users\ allowed\ access\ to\ this\ system=\u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e17\u0e35\u0e48\u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a\u0e2d\u0e19\u0e38\u0e0d\u0e32\u0e15\u0e43\u0e2b\u0e49\u0e40\u0e02\u0e49\u0e32\u0e16\u0e36\u0e07\u0e23\u0e30\u0e1a\u0e1a\u0e19\u0e35\u0e49 +List\ of\ security\ roles=\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e1a\u0e17\u0e1a\u0e32\u0e17\u0e04\u0e27\u0e32\u0e21\u0e1b\u0e25\u0e2d\u0e14\u0e20\u0e31\u0e22 +User\ ID=\u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49 +Role\ ID=\u0e23\u0e2b\u0e31\u0e2a\u0e1a\u0e17\u0e1a\u0e32\u0e17 +Source\ Database\ ID=\u0e23\u0e2b\u0e31\u0e2a\u0e10\u0e32\u0e19\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e15\u0e49\u0e19\u0e17\u0e32\u0e07 +ID\ of\ database\ module\ to\ read\ data\ from\ (Federated\ database\ will\ be\ used\ if\ not\ set=ID \u0e02\u0e2d\u0e07\u0e42\u0e21\u0e14\u0e39\u0e25\u0e10\u0e32\u0e19\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e17\u0e35\u0e48\u0e08\u0e30\u0e2d\u0e48\u0e32\u0e19\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25 (\u0e10\u0e32\u0e19\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e41\u0e1a\u0e1a\u0e23\u0e27\u0e21\u0e08\u0e30\u0e16\u0e39\u0e01\u0e43\u0e0a\u0e49\u0e2b\u0e32\u0e01\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\u0e15\u0e31\u0e49\u0e07\u0e04\u0e48\u0e32 +HTTP\ Port=\u0e1e\u0e2d\u0e23\u0e4c\u0e15 HTTP +HTTPS\ Port=\u0e1e\u0e2d\u0e23\u0e4c\u0e15 HTTPS +Root\ URL\ where\ static\ web\ content\ will\ be\ served.=URL \u0e23\u0e32\u0e01\u0e17\u0e35\u0e48\u0e08\u0e30\u0e41\u0e2a\u0e14\u0e07\u0e40\u0e19\u0e37\u0e49\u0e2d\u0e2b\u0e32\u0e40\u0e27\u0e47\u0e1a\u0e41\u0e1a\u0e1a\u0e04\u0e07\u0e17\u0e35\u0e48 +Directory\ where\ static\ web\ content\ is\ located.=\u0e44\u0e14\u0e40\u0e23\u0e47\u0e01\u0e17\u0e2d\u0e23\u0e35\u0e17\u0e35\u0e48\u0e21\u0e35\u0e40\u0e19\u0e37\u0e49\u0e2d\u0e2b\u0e32\u0e40\u0e27\u0e47\u0e1a\u0e41\u0e1a\u0e1a\u0e04\u0e07\u0e17\u0e35\u0e48 +Root\ URL\ where\ the\ server\ will\ accept\ requests.\ This\ will\ be\ the\ prefix\ to\ all\ servlet\ URLs.=URL \u0e23\u0e32\u0e01\u0e17\u0e35\u0e48\u0e40\u0e0b\u0e34\u0e23\u0e4c\u0e1f\u0e40\u0e27\u0e2d\u0e23\u0e4c\u0e08\u0e30\u0e22\u0e2d\u0e21\u0e23\u0e31\u0e1a\u0e04\u0e33\u0e02\u0e2d \u0e19\u0e35\u0e48\u0e08\u0e30\u0e40\u0e1b\u0e47\u0e19\u0e04\u0e33\u0e19\u0e33\u0e2b\u0e19\u0e49\u0e32\u0e02\u0e2d\u0e07 URL \u0e40\u0e0b\u0e34\u0e23\u0e4c\u0e1f\u0e40\u0e25\u0e47\u0e15\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14 +Proxy\ Base\ URL=URL \u0e10\u0e32\u0e19\u0e1e\u0e23\u0e47\u0e2d\u0e01\u0e0b\u0e35 +Public\ URL\ as\ viewed\ from\ the\ outside\ when\ requests\ transit\ through\ a\ proxy\ server.=URL \u0e2a\u0e32\u0e18\u0e32\u0e23\u0e13\u0e30\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e14\u0e39\u0e08\u0e32\u0e01\u0e20\u0e32\u0e22\u0e19\u0e2d\u0e01\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e21\u0e35\u0e01\u0e32\u0e23\u0e23\u0e49\u0e2d\u0e07\u0e02\u0e2d\u0e1c\u0e48\u0e32\u0e19\u0e1e\u0e23\u0e47\u0e2d\u0e01\u0e0b\u0e35\u0e40\u0e0b\u0e34\u0e23\u0e4c\u0e1f\u0e40\u0e27\u0e2d\u0e23\u0e4c +Authentication\ Method=\u0e27\u0e34\u0e18\u0e35\u0e01\u0e32\u0e23\u0e23\u0e31\u0e1a\u0e23\u0e2d\u0e07\u0e04\u0e27\u0e32\u0e21\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07 +Method\ used\ to\ authenticate\ users\ on\ this\ server=\u0e27\u0e34\u0e18\u0e35\u0e01\u0e32\u0e23\u0e17\u0e35\u0e48\u0e43\u0e0a\u0e49\u0e43\u0e19\u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e2a\u0e34\u0e17\u0e18\u0e34\u0e4c\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e1a\u0e19\u0e40\u0e0b\u0e34\u0e23\u0e4c\u0e1f\u0e40\u0e27\u0e2d\u0e23\u0e4c\u0e19\u0e35\u0e49 +Path\ to\ a\ key\ store\ containing\ the\ certificate\ and\ keypair\ that\ this\ server\ will\ present\ to\ clients\ when\ accessed\ over\ HTTPS.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ \"javax.net.ssl.keyStore\"\ system\ property.\=Path to a key store containing the certificate and keypair that this server will present to clients when accessed over HTTPS. If this value is blank, will default to using the value of the \"javax.net.ssl.keyStore\" system property. +Alias\ for\ the\ public/private\ keypair\ within\ the\ key\ store\ that\ will\ be\ used\ to\ identify\ this\ server.=\u0e19\u0e32\u0e21\u0e41\u0e1d\u0e07\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e04\u0e39\u0e48\u0e04\u0e35\u0e22\u0e4c\u0e2a\u0e32\u0e18\u0e32\u0e23\u0e13\u0e30/\u0e2a\u0e48\u0e27\u0e19\u0e15\u0e31\u0e27\u0e20\u0e32\u0e22\u0e43\u0e19\u0e17\u0e35\u0e48\u0e40\u0e01\u0e47\u0e1a\u0e04\u0e35\u0e22\u0e4c\u0e17\u0e35\u0e48\u0e08\u0e30\u0e43\u0e0a\u0e49\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e23\u0e30\u0e1a\u0e38\u0e40\u0e0b\u0e34\u0e23\u0e4c\u0e1f\u0e40\u0e27\u0e2d\u0e23\u0e4c\u0e19\u0e35\u0e49 +Path\ to\ the\ TLS\ trust\ store\ that\ is\ used\ when\ client\ authentication\ is\ required.\ Ignored\ if\ client\ certificate\ authentication\ is\ not\ used.\ Certificates\ in\ this\ file\ designate\ the\ signing\ authorities\ for\ client\ certificates\ that\ will\ be\ trusted.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ \"javax.net.ssl.trustStore\"\ system\ property.\=Path to the TLS trust store that is used when client authentication is required. Ignored if client certificate authentication is not used. Certificates in this file designate the signing authorities for client certificates that will be trusted. If this value is blank, will default to using the value of the \"javax.net.ssl.trustStore\" system property. +Password\ for\ the\ trust\ store.\ Ignored\ if\ client\ certificate\ authentication\ is\ not\ used.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ \"javax.net.ssl.trustStorePassword\"\ system\ property.\=Password for the trust store. Ignored if client certificate authentication is not used. If this value is blank, will default to using the value of the \"javax.net.ssl.trustStorePassword\" system property. +Enable\ CORS=\u0e40\u0e1b\u0e34\u0e14\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19 CORS +Enable\ generation\ of\ CORS\ headers\ to\ allow\ cross-domain\ requests\ from\ browsers=\u0e40\u0e1b\u0e34\u0e14\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e01\u0e32\u0e23\u0e2a\u0e23\u0e49\u0e32\u0e07\u0e2a\u0e48\u0e27\u0e19\u0e2b\u0e31\u0e27 CORS \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e2d\u0e19\u0e38\u0e0d\u0e32\u0e15\u0e04\u0e33\u0e02\u0e2d\u0e02\u0e49\u0e32\u0e21\u0e42\u0e14\u0e40\u0e21\u0e19\u0e08\u0e32\u0e01\u0e40\u0e1a\u0e23\u0e32\u0e27\u0e4c\u0e40\u0e0b\u0e2d\u0e23\u0e4c +Capabilities\ Info=\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e04\u0e27\u0e32\u0e21\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16 +Information\ included\ in\ the\ service\ capabilities\ document=\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e17\u0e35\u0e48\u0e23\u0e27\u0e21\u0e2d\u0e22\u0e39\u0e48\u0e43\u0e19\u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23\u0e04\u0e27\u0e32\u0e21\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e43\u0e19\u0e01\u0e32\u0e23\u0e43\u0e2b\u0e49\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23 +Enable\ HTTP\ GET=\u0e40\u0e1b\u0e34\u0e14\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19 HTTP GET +Enables/disables\ HTTP\ GET\ bindings\ on\ operations\ that\ support\ it=\u0e40\u0e1b\u0e34\u0e14\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19/\u0e1b\u0e34\u0e14\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e01\u0e32\u0e23\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e21\u0e42\u0e22\u0e07 HTTP GET \u0e43\u0e19\u0e01\u0e32\u0e23\u0e14\u0e33\u0e40\u0e19\u0e34\u0e19\u0e01\u0e32\u0e23\u0e17\u0e35\u0e48\u0e23\u0e2d\u0e07\u0e23\u0e31\u0e1a +Enable\ HTTP\ POST=\u0e40\u0e1b\u0e34\u0e14\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19 HTTP \u0e42\u0e1e\u0e2a\u0e15\u0e4c +Enables/disables\ HTTP\ POST\ bindings\ on\ operations\ that\ support\ it=\u0e40\u0e1b\u0e34\u0e14\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19/\u0e1b\u0e34\u0e14\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e01\u0e32\u0e23\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e21\u0e42\u0e22\u0e07 HTTP POST \u0e43\u0e19\u0e01\u0e32\u0e23\u0e14\u0e33\u0e40\u0e19\u0e34\u0e19\u0e01\u0e32\u0e23\u0e17\u0e35\u0e48\u0e23\u0e2d\u0e07\u0e23\u0e31\u0e1a +Enable\ HTTP\ SOAP=\u0e40\u0e1b\u0e34\u0e14\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19 HTTP SOAP +Enables/disables\ HTTP\ SOAP\ bindings\ on\ operations\ that\ support\ it=\u0e40\u0e1b\u0e34\u0e14\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19/\u0e1b\u0e34\u0e14\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e01\u0e32\u0e23\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e21\u0e42\u0e22\u0e07 HTTP SOAP \u0e43\u0e19\u0e01\u0e32\u0e23\u0e14\u0e33\u0e40\u0e19\u0e34\u0e19\u0e01\u0e32\u0e23\u0e17\u0e35\u0e48\u0e23\u0e2d\u0e07\u0e23\u0e31\u0e1a +Connection\ Timeout=\u0e2b\u0e21\u0e14\u0e40\u0e27\u0e25\u0e32\u0e01\u0e32\u0e23\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e21\u0e15\u0e48\u0e2d +Reconnect\ Period=\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e21\u0e15\u0e48\u0e2d\u0e43\u0e2b\u0e21\u0e48\u0e2d\u0e35\u0e01\u0e04\u0e23\u0e31\u0e49\u0e07 +Max\ Reconnect\ Attempts=\u0e04\u0e27\u0e32\u0e21\u0e1e\u0e22\u0e32\u0e22\u0e32\u0e21\u0e43\u0e19\u0e01\u0e32\u0e23\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e21\u0e15\u0e48\u0e2d\u0e43\u0e2b\u0e21\u0e48\u0e2a\u0e39\u0e07\u0e2a\u0e38\u0e14 +Maximum\ number\ of\ times\ the\ client\ will\ attempt\ to\ reconnect\ when\ the\ connection\ is\ not\ available\ or\ lost.\ A\ negative\ value\ means\ that\ there\ is\ no\ limit\ to\ the\ number\ of\ reconnection\ attempts.\ Zero\ means\ not\ to\ attempt\ reconnection.=\u0e08\u0e33\u0e19\u0e27\u0e19\u0e04\u0e23\u0e31\u0e49\u0e07\u0e2a\u0e39\u0e07\u0e2a\u0e38\u0e14\u0e17\u0e35\u0e48\u0e44\u0e04\u0e25\u0e40\u0e2d\u0e47\u0e19\u0e15\u0e4c\u0e08\u0e30\u0e1e\u0e22\u0e32\u0e22\u0e32\u0e21\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e21\u0e15\u0e48\u0e2d\u0e43\u0e2b\u0e21\u0e48\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e01\u0e32\u0e23\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e21\u0e15\u0e48\u0e2d\u0e44\u0e21\u0e48\u0e1e\u0e23\u0e49\u0e2d\u0e21\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e2b\u0e23\u0e37\u0e2d\u0e2a\u0e39\u0e0d\u0e2b\u0e32\u0e22 \u0e04\u0e48\u0e32\u0e25\u0e1a\u0e2b\u0e21\u0e32\u0e22\u0e04\u0e27\u0e32\u0e21\u0e27\u0e48\u0e32\u0e44\u0e21\u0e48\u0e21\u0e35\u0e01\u0e32\u0e23\u0e08\u0e33\u0e01\u0e31\u0e14\u0e08\u0e33\u0e19\u0e27\u0e19\u0e04\u0e23\u0e31\u0e49\u0e07\u0e43\u0e19\u0e01\u0e32\u0e23\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e21\u0e15\u0e48\u0e2d\u0e43\u0e2b\u0e21\u0e48 \u0e28\u0e39\u0e19\u0e22\u0e4c\u0e2b\u0e21\u0e32\u0e22\u0e16\u0e36\u0e07\u0e44\u0e21\u0e48\u0e1e\u0e22\u0e32\u0e22\u0e32\u0e21\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e21\u0e15\u0e48\u0e2d\u0e43\u0e2b\u0e21\u0e48 +IP\ or\ DNS\ name\ of\ remote\ host=\u0e0a\u0e37\u0e48\u0e2d IP \u0e2b\u0e23\u0e37\u0e2d DNS \u0e02\u0e2d\u0e07\u0e42\u0e2e\u0e2a\u0e15\u0e4c\u0e23\u0e30\u0e22\u0e30\u0e44\u0e01\u0e25 +IP\ of\ local\ network\ interface\ to\ bind\ to\ or\ 'AUTO'\ to\ select\ it\ automatically=IP \u0e02\u0e2d\u0e07\u0e2d\u0e34\u0e19\u0e40\u0e17\u0e2d\u0e23\u0e4c\u0e40\u0e1f\u0e0b\u0e40\u0e04\u0e23\u0e37\u0e2d\u0e02\u0e48\u0e32\u0e22\u0e17\u0e49\u0e2d\u0e07\u0e16\u0e34\u0e48\u0e19\u0e17\u0e35\u0e48\u0e08\u0e30\u0e1c\u0e39\u0e01\u0e2b\u0e23\u0e37\u0e2d "\u0e2d\u0e31\u0e15\u0e42\u0e19\u0e21\u0e31\u0e15\u0e34" \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e42\u0e14\u0e22\u0e2d\u0e31\u0e15\u0e42\u0e19\u0e21\u0e31\u0e15\u0e34 +Connection\ Options=\u0e15\u0e31\u0e27\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e01\u0e32\u0e23\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e21\u0e15\u0e48\u0e2d +Serial\ port\ device\ name.\ Usually\ something\ like\ /dev/ttyXXX\ on\ Linux=\u0e0a\u0e37\u0e48\u0e2d\u0e2d\u0e38\u0e1b\u0e01\u0e23\u0e13\u0e4c\u0e1e\u0e2d\u0e23\u0e4c\u0e15\u0e2d\u0e19\u0e38\u0e01\u0e23\u0e21 \u0e42\u0e14\u0e22\u0e1b\u0e01\u0e15\u0e34\u0e41\u0e25\u0e49\u0e27\u0e08\u0e30\u0e40\u0e1b\u0e47\u0e19\u0e40\u0e0a\u0e48\u0e19 /dev/ttyXXX \u0e1a\u0e19 Linux +Minimum\ number\ of\ bytes\ to\ receive\ before\ they\ are\ sent\ to\ the\ caller=\u0e08\u0e33\u0e19\u0e27\u0e19\u0e44\u0e1a\u0e15\u0e4c\u0e02\u0e31\u0e49\u0e19\u0e15\u0e48\u0e33\u0e17\u0e35\u0e48\u0e08\u0e30\u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a\u0e01\u0e48\u0e2d\u0e19\u0e17\u0e35\u0e48\u0e08\u0e30\u0e16\u0e39\u0e01\u0e2a\u0e48\u0e07\u0e44\u0e1b\u0e22\u0e31\u0e07\u0e1c\u0e39\u0e49\u0e42\u0e17\u0e23 +Local\ port\ number\ to\ use\ on\ the\ local\ host=\u0e2b\u0e21\u0e32\u0e22\u0e40\u0e25\u0e02\u0e1e\u0e2d\u0e23\u0e4c\u0e15\u0e17\u0e49\u0e2d\u0e07\u0e16\u0e34\u0e48\u0e19\u0e17\u0e35\u0e48\u0e08\u0e30\u0e43\u0e0a\u0e49\u0e1a\u0e19\u0e42\u0e2e\u0e2a\u0e15\u0e4c\u0e17\u0e49\u0e2d\u0e07\u0e16\u0e34\u0e48\u0e19 +Physical\ address\ of\ Bluetooth\ device\ to\ connect\ to=\u0e17\u0e35\u0e48\u0e2d\u0e22\u0e39\u0e48\u0e17\u0e32\u0e07\u0e01\u0e32\u0e22\u0e20\u0e32\u0e1e\u0e02\u0e2d\u0e07\u0e2d\u0e38\u0e1b\u0e01\u0e23\u0e13\u0e4c Bluetooth \u0e17\u0e35\u0e48\u0e08\u0e30\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e21\u0e15\u0e48\u0e2d +Port\ number\ to\ connect\ to\ on\ remote\ host=\u0e2b\u0e21\u0e32\u0e22\u0e40\u0e25\u0e02\u0e1e\u0e2d\u0e23\u0e4c\u0e15\u0e17\u0e35\u0e48\u0e08\u0e30\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e21\u0e15\u0e48\u0e2d\u0e1a\u0e19\u0e42\u0e2e\u0e2a\u0e15\u0e4c\u0e23\u0e30\u0e22\u0e30\u0e44\u0e01\u0e25 +User\ Name=\u0e0a\u0e37\u0e48\u0e2d\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49 +Remote\ user\ name=\u0e0a\u0e37\u0e48\u0e2d\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e23\u0e30\u0e22\u0e30\u0e44\u0e01\u0e25 +Password=\u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e48\u0e32\u0e19 +Remote\ password=\u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e48\u0e32\u0e19\u0e23\u0e30\u0e22\u0e30\u0e44\u0e01\u0e25 +Secure\ communications\ with\ SSL/TLS=\u0e01\u0e32\u0e23\u0e2a\u0e37\u0e48\u0e2d\u0e2a\u0e32\u0e23\u0e17\u0e35\u0e48\u0e1b\u0e25\u0e2d\u0e14\u0e20\u0e31\u0e22\u0e14\u0e49\u0e27\u0e22 SSL/TLS +Enable\ to\ check\ if\ remote\ host\ is\ reachable\ before\ attempting\ further\ operations=\u0e40\u0e1b\u0e34\u0e14\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e27\u0e48\u0e32\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e40\u0e02\u0e49\u0e32\u0e16\u0e36\u0e07\u0e42\u0e2e\u0e2a\u0e15\u0e4c\u0e23\u0e30\u0e22\u0e30\u0e44\u0e01\u0e25\u0e44\u0e14\u0e49\u0e2b\u0e23\u0e37\u0e2d\u0e44\u0e21\u0e48 \u0e01\u0e48\u0e2d\u0e19\u0e17\u0e35\u0e48\u0e08\u0e30\u0e1e\u0e22\u0e32\u0e22\u0e32\u0e21\u0e14\u0e33\u0e40\u0e19\u0e34\u0e19\u0e01\u0e32\u0e23\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e40\u0e15\u0e34\u0e21 +Path\ or\ resource\ or\ service\ relative\ to\ server\ root=\u0e40\u0e2a\u0e49\u0e19\u0e17\u0e32\u0e07\u0e2b\u0e23\u0e37\u0e2d\u0e17\u0e23\u0e31\u0e1e\u0e22\u0e32\u0e01\u0e23\u0e2b\u0e23\u0e37\u0e2d\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23\u0e17\u0e35\u0e48\u0e40\u0e01\u0e35\u0e48\u0e22\u0e27\u0e02\u0e49\u0e2d\u0e07\u0e01\u0e31\u0e1a\u0e23\u0e39\u0e17\u0e40\u0e0b\u0e34\u0e23\u0e4c\u0e1f\u0e40\u0e27\u0e2d\u0e23\u0e4c +Unique\ ID\ of\ system\ group=ID \u0e40\u0e09\u0e1e\u0e32\u0e30\u0e02\u0e2d\u0e07\u0e01\u0e25\u0e38\u0e48\u0e21\u0e23\u0e30\u0e1a\u0e1a +Name\ of\ system\ group=\u0e0a\u0e37\u0e48\u0e2d\u0e02\u0e2d\u0e07\u0e01\u0e25\u0e38\u0e48\u0e21\u0e23\u0e30\u0e1a\u0e1a +Description\ of\ system\ group=\u0e04\u0e33\u0e2d\u0e18\u0e34\u0e1a\u0e32\u0e22\u0e01\u0e25\u0e38\u0e48\u0e21\u0e23\u0e30\u0e1a\u0e1a +List\ of\ bundle\ repository\ URLs=\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23 URL \u0e17\u0e35\u0e48\u0e40\u0e01\u0e47\u0e1a\u0e1a\u0e31\u0e19\u0e40\u0e14\u0e34\u0e25 +A\ human\ readable\ friendly\ identifier\ for\ the\ deployment=\u0e15\u0e31\u0e27\u0e23\u0e30\u0e1a\u0e38\u0e17\u0e35\u0e48\u0e40\u0e1b\u0e47\u0e19\u0e21\u0e34\u0e15\u0e23\u0e0b\u0e36\u0e48\u0e07\u0e21\u0e19\u0e38\u0e29\u0e22\u0e4c\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e2d\u0e48\u0e32\u0e19\u0e44\u0e14\u0e49\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e1b\u0e23\u0e31\u0e1a\u0e43\u0e0a\u0e49 +Enable\ Landing\ Page=\u0e40\u0e1b\u0e34\u0e14\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e41\u0e25\u0e19\u0e14\u0e34\u0e49\u0e07\u0e40\u0e1e\u0e08 +Enable\ Landing\ Servlet\ to\ redirect\ users\ to\ landing\ page=\u0e40\u0e1b\u0e34\u0e14\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19 Landing Servlet \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e40\u0e2a\u0e49\u0e19\u0e17\u0e32\u0e07\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e44\u0e1b\u0e22\u0e31\u0e07\u0e2b\u0e19\u0e49\u0e32 Landing Page +Config\ Class=\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e04\u0e48\u0e32\u0e04\u0e25\u0e32\u0e2a +Type\ of\ module\ config\ class\ for\ which\ a\ custom\ panel\ must\ be\ generated=\u0e1b\u0e23\u0e30\u0e40\u0e20\u0e17\u0e02\u0e2d\u0e07\u0e04\u0e25\u0e32\u0e2a\u0e01\u0e32\u0e23\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e04\u0e48\u0e32\u0e42\u0e21\u0e14\u0e39\u0e25\u0e17\u0e35\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e2a\u0e23\u0e49\u0e32\u0e07\u0e1e\u0e32\u0e40\u0e19\u0e25\u0e41\u0e1a\u0e1a\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e40\u0e2d\u0e07 +UI\ Class=\u0e04\u0e25\u0e32\u0e2a UI +Fully\ qualified\ name\ of\ class\ implementing\ IModuleAdminPanel=\u0e0a\u0e37\u0e48\u0e2d\u0e41\u0e1a\u0e1a\u0e40\u0e15\u0e47\u0e21\u0e02\u0e2d\u0e07\u0e04\u0e25\u0e32\u0e2a\u0e17\u0e35\u0e48\u0e43\u0e0a\u0e49 IModuleAdminPanel + +# Auto-extracted property IDs +sensorML=\u0e40\u0e0b\u0e19\u0e40\u0e0b\u0e2d\u0e23\u0e4c \u0e21\u0e25 +lastUpdated=\u0e2d\u0e31\u0e1b\u0e40\u0e14\u0e15\u0e25\u0e48\u0e32\u0e2a\u0e38\u0e14 +lat=\u0e25\u0e32\u0e14 +lon=\u0e42\u0e2b\u0e25\u0e19 +alt=Alt +x=\u0e40\u0e2d\u0e47\u0e01\u0e0b\u0e4c +y=Y +z=\u0e0b\u0e35 +heading=\u0e2b\u0e31\u0e27\u0e40\u0e23\u0e37\u0e48\u0e2d\u0e07 +pitch=\u0e02\u0e27\u0e49\u0e32\u0e07 +roll=\u0e21\u0e49\u0e27\u0e19 +location=\u0e17\u0e35\u0e48\u0e15\u0e31\u0e49\u0e07 +orientation=\u0e1b\u0e10\u0e21\u0e19\u0e34\u0e40\u0e17\u0e28 +databaseNum=\u0e2b\u0e21\u0e32\u0e22\u0e40\u0e25\u0e02\u0e10\u0e32\u0e19\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25 +enableAccessControl=\u0e40\u0e1b\u0e34\u0e14\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e01\u0e32\u0e23\u0e04\u0e27\u0e1a\u0e04\u0e38\u0e21\u0e01\u0e32\u0e23\u0e40\u0e02\u0e49\u0e32\u0e16\u0e36\u0e07 +requireAuth=\u0e15\u0e49\u0e2d\u0e07\u0e21\u0e35\u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e2a\u0e34\u0e17\u0e18\u0e34\u0e4c +mimeType=\u0e1b\u0e23\u0e30\u0e40\u0e20\u0e17\u0e44\u0e21\u0e21\u0e4c +className=\u0e0a\u0e37\u0e48\u0e2d\u0e0a\u0e31\u0e49\u0e19\u0e40\u0e23\u0e35\u0e22\u0e19 +endPoint=\u0e08\u0e38\u0e14\u0e2a\u0e34\u0e49\u0e19\u0e2a\u0e38\u0e14 +id=\u0e23\u0e2b\u0e31\u0e2a +description=\u0e04\u0e33\u0e2d\u0e18\u0e34\u0e1a\u0e32\u0e22 +autoStart=\u0e40\u0e23\u0e34\u0e48\u0e21\u0e2d\u0e31\u0e15\u0e42\u0e19\u0e21\u0e31\u0e15\u0e34 +topicName=\u0e0a\u0e37\u0e48\u0e2d\u0e2b\u0e31\u0e27\u0e02\u0e49\u0e2d +enablePublish=\u0e40\u0e1b\u0e34\u0e14\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e01\u0e32\u0e23\u0e40\u0e1c\u0e22\u0e41\u0e1e\u0e23\u0e48 +enableSubscribe=\u0e40\u0e1b\u0e34\u0e14\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e01\u0e32\u0e23\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e2a\u0e21\u0e32\u0e0a\u0e34\u0e01 +protocol=\u0e42\u0e1b\u0e23\u0e42\u0e15\u0e04\u0e2d\u0e25 +moduleConfigPath=\u0e40\u0e2a\u0e49\u0e19\u0e17\u0e32\u0e07\u0e01\u0e32\u0e23\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e04\u0e48\u0e32\u0e42\u0e21\u0e14\u0e39\u0e25 +moduleDataPath=\u0e40\u0e2a\u0e49\u0e19\u0e17\u0e32\u0e07\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e42\u0e21\u0e14\u0e39\u0e25 +commonConfig=\u0e01\u0e32\u0e23\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e04\u0e48\u0e32\u0e17\u0e31\u0e48\u0e27\u0e44\u0e1b +sensors=Sensors +config=\u0e01\u0e32\u0e23\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e04\u0e48\u0e32 +uniqueID=\u0e23\u0e2b\u0e31\u0e2a\u0e17\u0e35\u0e48\u0e44\u0e21\u0e48\u0e0b\u0e49\u0e33 +subsystems=\u0e23\u0e30\u0e1a\u0e1a\u0e22\u0e48\u0e2d\u0e22 +dbConfig=\u0e01\u0e32\u0e23\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e04\u0e48\u0e32\u0e10\u0e32\u0e19\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25 +systemUIDs=Uid \u0e02\u0e2d\u0e07\u0e23\u0e30\u0e1a\u0e1a +autoPurgeConfig=\u0e01\u0e32\u0e23\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e04\u0e48\u0e32\u0e01\u0e32\u0e23\u0e25\u0e49\u0e32\u0e07\u0e2d\u0e31\u0e15\u0e42\u0e19\u0e21\u0e31\u0e15\u0e34 +minCommitPeriod=\u0e23\u0e30\u0e22\u0e30\u0e40\u0e27\u0e25\u0e32\u0e01\u0e23\u0e30\u0e17\u0e33\u0e01\u0e32\u0e23\u0e02\u0e31\u0e49\u0e19\u0e15\u0e48\u0e33 +enabled=\u0e40\u0e1b\u0e34\u0e14\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e41\u0e25\u0e49\u0e27 +purgePeriod=\u0e23\u0e30\u0e22\u0e30\u0e40\u0e27\u0e25\u0e32\u0e01\u0e32\u0e23\u0e01\u0e27\u0e32\u0e14\u0e25\u0e49\u0e32\u0e07 +maxRecordAge=\u0e2d\u0e32\u0e22\u0e38\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01\u0e2a\u0e39\u0e07\u0e2a\u0e38\u0e14 +users=\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49 +roles=\u0e1a\u0e17\u0e1a\u0e32\u0e17 +allow=\u0e2d\u0e19\u0e38\u0e0d\u0e32\u0e15 +deny=\u0e1b\u0e0f\u0e34\u0e40\u0e2a\u0e18 +userID=\u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49 +name=\u0e0a\u0e37\u0e48\u0e2d +password=\u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e48\u0e32\u0e19 +certificate=\u0e43\u0e1a\u0e23\u0e31\u0e1a\u0e23\u0e2d\u0e07 +twoFactorSecret=\u0e04\u0e27\u0e32\u0e21\u0e25\u0e31\u0e1a\u0e2a\u0e2d\u0e07\u0e1b\u0e31\u0e08\u0e08\u0e31\u0e22 +isTwoFactorEnabled=\u0e40\u0e1b\u0e34\u0e14\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e2a\u0e2d\u0e07\u0e1b\u0e31\u0e08\u0e08\u0e31\u0e22\u0e41\u0e25\u0e49\u0e27 +roleID=\u0e23\u0e2b\u0e31\u0e2a\u0e1a\u0e17\u0e1a\u0e32\u0e17 +sourceDatabaseId=\u0e23\u0e2b\u0e31\u0e2a\u0e10\u0e32\u0e19\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e15\u0e49\u0e19\u0e17\u0e32\u0e07 +includeFilter=\u0e23\u0e27\u0e21\u0e15\u0e31\u0e27\u0e01\u0e23\u0e2d\u0e07 +excludeFilter=\u0e44\u0e21\u0e48\u0e23\u0e27\u0e21\u0e15\u0e31\u0e27\u0e01\u0e23\u0e2d\u0e07 +httpPort=\u0e1e\u0e2d\u0e23\u0e4c\u0e15 HTTP +httpsPort=\u0e1e\u0e2d\u0e23\u0e4c\u0e15 HTTPS +staticDocsRootUrl=URL \u0e23\u0e32\u0e01\u0e02\u0e2d\u0e07\u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23\u0e41\u0e1a\u0e1a\u0e04\u0e07\u0e17\u0e35\u0e48 +staticDocsRootDir=Dir \u0e23\u0e39\u0e17\u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23\u0e41\u0e1a\u0e1a\u0e04\u0e07\u0e17\u0e35\u0e48 +servletsRootUrl=URL \u0e23\u0e32\u0e01\u0e02\u0e2d\u0e07\u0e40\u0e0b\u0e34\u0e23\u0e4c\u0e1f\u0e40\u0e25\u0e47\u0e15 +proxyBaseUrl=URL \u0e10\u0e32\u0e19\u0e1e\u0e23\u0e47\u0e2d\u0e01\u0e0b\u0e35 +authMethod=\u0e27\u0e34\u0e18\u0e35\u0e01\u0e32\u0e23\u0e23\u0e31\u0e1a\u0e23\u0e2d\u0e07\u0e04\u0e27\u0e32\u0e21\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07 +keyStorePath=\u0e40\u0e2a\u0e49\u0e19\u0e17\u0e32\u0e07\u0e23\u0e49\u0e32\u0e19\u0e04\u0e49\u0e32\u0e04\u0e35\u0e22\u0e4c +keyStorePassword=\u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e48\u0e32\u0e19\u0e17\u0e35\u0e48\u0e40\u0e01\u0e47\u0e1a\u0e04\u0e35\u0e22\u0e4c +keyAlias=\u0e19\u0e32\u0e21\u0e41\u0e1d\u0e07\u0e17\u0e35\u0e48\u0e2a\u0e33\u0e04\u0e31\u0e0d +trustStorePath=\u0e40\u0e2a\u0e49\u0e19\u0e17\u0e32\u0e07\u0e23\u0e49\u0e32\u0e19\u0e04\u0e49\u0e32\u0e17\u0e35\u0e48\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e16\u0e37\u0e2d\u0e44\u0e14\u0e49 +trustStorePassword=\u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e48\u0e32\u0e19\u0e23\u0e49\u0e32\u0e19\u0e04\u0e49\u0e32\u0e17\u0e35\u0e48\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e16\u0e37\u0e2d\u0e44\u0e14\u0e49 +xmlConfigFile=\u0e44\u0e1f\u0e25\u0e4c\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e04\u0e48\u0e32 XML +enableCORS=\u0e40\u0e1b\u0e34\u0e14\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19 Cors +title=Title +keywords=\u0e04\u0e33\u0e2b\u0e25\u0e31\u0e01 +fees=\u0e04\u0e48\u0e32\u0e18\u0e23\u0e23\u0e21\u0e40\u0e19\u0e35\u0e22\u0e21 +accessConstraints=\u0e02\u0e49\u0e2d\u0e08\u0e33\u0e01\u0e31\u0e14\u0e43\u0e19\u0e01\u0e32\u0e23\u0e40\u0e02\u0e49\u0e32\u0e16\u0e36\u0e07 +serviceProvider=\u0e1c\u0e39\u0e49\u0e43\u0e2b\u0e49\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23 +ogcCapabilitiesInfo=\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e04\u0e27\u0e32\u0e21\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e02\u0e2d\u0e07 Ogc +enableHttpGET=\u0e40\u0e1b\u0e34\u0e14\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e01\u0e32\u0e23\u0e23\u0e31\u0e1a Http +enableHttpPOST=\u0e40\u0e1b\u0e34\u0e14\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e42\u0e1e\u0e2a\u0e15\u0e4c Http +enableSOAP=\u0e40\u0e1b\u0e34\u0e14\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e2a\u0e1a\u0e39\u0e48 +connectTimeout=\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e21\u0e15\u0e48\u0e2d\u0e2b\u0e21\u0e14\u0e40\u0e27\u0e25\u0e32 +reconnectPeriod=\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e21\u0e15\u0e48\u0e2d\u0e43\u0e2b\u0e21\u0e48\u0e2d\u0e35\u0e01\u0e04\u0e23\u0e31\u0e49\u0e07 +reconnectAttempts=\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e21\u0e15\u0e48\u0e2d\u0e04\u0e27\u0e32\u0e21\u0e1e\u0e22\u0e32\u0e22\u0e32\u0e21\u0e2d\u0e35\u0e01\u0e04\u0e23\u0e31\u0e49\u0e07 +deviceID=\u0e23\u0e2b\u0e31\u0e2a\u0e2d\u0e38\u0e1b\u0e01\u0e23\u0e13\u0e4c +deviceClass=\u0e04\u0e25\u0e32\u0e2a\u0e2d\u0e38\u0e1b\u0e01\u0e23\u0e13\u0e4c +remoteHost=\u0e42\u0e2e\u0e2a\u0e15\u0e4c\u0e23\u0e30\u0e22\u0e30\u0e44\u0e01\u0e25 +localAddress=\u0e17\u0e35\u0e48\u0e2d\u0e22\u0e39\u0e48\u0e43\u0e19\u0e17\u0e49\u0e2d\u0e07\u0e16\u0e34\u0e48\u0e19 +connection=\u0e01\u0e32\u0e23\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e21\u0e15\u0e48\u0e2d +portName=\u0e0a\u0e37\u0e48\u0e2d\u0e1e\u0e2d\u0e23\u0e4c\u0e15 +baudRate=\u0e2d\u0e31\u0e15\u0e23\u0e32\u0e23\u0e31\u0e1a\u0e2a\u0e48\u0e07\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25 +dataBits=\u0e1a\u0e34\u0e15\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25 +stopBits=\u0e2b\u0e22\u0e38\u0e14\u0e1a\u0e34\u0e15 +parity=\u0e04\u0e27\u0e32\u0e21\u0e40\u0e17\u0e48\u0e32\u0e40\u0e17\u0e35\u0e22\u0e21\u0e01\u0e31\u0e19 +receiveTimeout=\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e2b\u0e21\u0e14\u0e40\u0e27\u0e25\u0e32 +receiveThreshold=\u0e23\u0e31\u0e1a\u0e40\u0e01\u0e13\u0e11\u0e4c +remotePort=\u0e1e\u0e2d\u0e23\u0e4c\u0e15\u0e23\u0e30\u0e22\u0e30\u0e44\u0e01\u0e25 +localPort=\u0e17\u0e48\u0e32\u0e40\u0e23\u0e37\u0e2d\u0e17\u0e49\u0e2d\u0e07\u0e16\u0e34\u0e48\u0e19 +deviceAddress=\u0e17\u0e35\u0e48\u0e2d\u0e22\u0e39\u0e48\u0e2d\u0e38\u0e1b\u0e01\u0e23\u0e13\u0e4c +deviceName=\u0e0a\u0e37\u0e48\u0e2d\u0e2d\u0e38\u0e1b\u0e01\u0e23\u0e13\u0e4c +serviceUuid=\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23 \u0e2d\u0e38\u0e49\u0e22 +user=\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49 +enableTLS=\u0e40\u0e1b\u0e34\u0e14\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19 Tls +checkReachability=\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e43\u0e19\u0e01\u0e32\u0e23\u0e40\u0e02\u0e49\u0e32\u0e16\u0e36\u0e07 +resourcePath=\u0e40\u0e2a\u0e49\u0e19\u0e17\u0e32\u0e07\u0e17\u0e23\u0e31\u0e1e\u0e22\u0e32\u0e01\u0e23 +uid=\u0e2d\u0e38\u0e49\u0e22 +securityRole=\u0e1a\u0e17\u0e1a\u0e32\u0e17\u0e04\u0e27\u0e32\u0e21\u0e1b\u0e25\u0e2d\u0e14\u0e20\u0e31\u0e22 +passwordField=\u0e0a\u0e48\u0e2d\u0e07\u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e48\u0e32\u0e19 +widgetSet=\u0e0a\u0e38\u0e14\u0e27\u0e34\u0e14\u0e40\u0e08\u0e47\u0e15 +bundleRepoUrls=URL Repo \u0e40\u0e1b\u0e47\u0e19\u0e01\u0e25\u0e38\u0e48\u0e21 +customPanels=\u0e41\u0e1c\u0e07\u0e41\u0e1a\u0e1a\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e40\u0e2d\u0e07 +customForms=\u0e41\u0e1a\u0e1a\u0e1f\u0e2d\u0e23\u0e4c\u0e21\u0e17\u0e35\u0e48\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e40\u0e2d\u0e07 +deploymentName=\u0e0a\u0e37\u0e48\u0e2d\u0e01\u0e32\u0e23\u0e17\u0e33\u0e43\u0e2b\u0e49\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e44\u0e14\u0e49 +enableLandingPage=\u0e40\u0e1b\u0e34\u0e14\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e41\u0e25\u0e19\u0e14\u0e34\u0e49\u0e07\u0e40\u0e1e\u0e08 +configClass=\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e04\u0e48\u0e32\u0e04\u0e25\u0e32\u0e2a +uiClass=\u0e2d\u0e38\u0e49\u0e22\u0e04\u0e25\u0e32\u0e2a +moduleClass=\u0e04\u0e25\u0e32\u0e2a\u0e42\u0e21\u0e14\u0e39\u0e25 + +# Auto-extracted hardcoded UI strings +testLinks1=\u0e25\u0e34\u0e07\u0e04\u0e4c\u0e17\u0e14\u0e2a\u0e2d\u0e1a +uniqueID1=\u0e23\u0e2b\u0e31\u0e2a\u0e17\u0e35\u0e48\u0e44\u0e21\u0e48\u0e0b\u0e49\u0e33 +foiIDs1=\u0e23\u0e2b\u0e31\u0e2a FOI +version1=\u0e40\u0e27\u0e2d\u0e23\u0e4c\u0e0a\u0e31\u0e19 + +Connected\ Systems\ Endpoint=\u0e08\u0e38\u0e14\u0e2a\u0e34\u0e49\u0e19\u0e2a\u0e38\u0e14\u0e02\u0e2d\u0e07\u0e23\u0e30\u0e1a\u0e1a\u0e17\u0e35\u0e48\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e21\u0e15\u0e48\u0e2d +Connected\ Systems\ endpoint\ where\ the\ requests\ are\ sent=\u0e08\u0e38\u0e14\u0e2a\u0e34\u0e49\u0e19\u0e2a\u0e38\u0e14\u0e23\u0e30\u0e1a\u0e1a\u0e17\u0e35\u0e48\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e21\u0e15\u0e48\u0e2d\u0e0b\u0e36\u0e48\u0e07\u0e21\u0e35\u0e01\u0e32\u0e23\u0e2a\u0e48\u0e07\u0e04\u0e33\u0e02\u0e2d +Connection\ Settings=\u0e01\u0e32\u0e23\u0e15\u0e31\u0e49\u0e07\u0e04\u0e48\u0e32\u0e01\u0e32\u0e23\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e21\u0e15\u0e48\u0e2d +Custom\ connector\ configurations=\u0e01\u0e32\u0e23\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e04\u0e48\u0e32\u0e15\u0e31\u0e27\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e21\u0e15\u0e48\u0e2d\u0e41\u0e1a\u0e1a\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e40\u0e2d\u0e07 +Custom\ provider\ configurations=\u0e01\u0e32\u0e23\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e04\u0e48\u0e32\u0e1c\u0e39\u0e49\u0e43\u0e2b\u0e49\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23\u0e41\u0e1a\u0e1a\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e40\u0e2d\u0e07 +Database\ ID=\u0e23\u0e2b\u0e31\u0e2a\u0e10\u0e32\u0e19\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25 +Default\ live\ time-out\ for\ all\ offerings,\ unless\ overriden\ by\ custom\ provider\ settings=\u0e01\u0e32\u0e23\u0e2b\u0e21\u0e14\u0e40\u0e27\u0e25\u0e32\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e08\u0e23\u0e34\u0e07\u0e40\u0e23\u0e34\u0e48\u0e21\u0e15\u0e49\u0e19\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e02\u0e49\u0e2d\u0e40\u0e2a\u0e19\u0e2d\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14 \u0e40\u0e27\u0e49\u0e19\u0e41\u0e15\u0e48\u0e08\u0e30\u0e16\u0e39\u0e01\u0e41\u0e17\u0e19\u0e17\u0e35\u0e48\u0e42\u0e14\u0e22\u0e01\u0e32\u0e23\u0e15\u0e31\u0e49\u0e07\u0e04\u0e48\u0e32\u0e1c\u0e39\u0e49\u0e43\u0e2b\u0e49\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23\u0e41\u0e1a\u0e1a\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e40\u0e2d\u0e07 +Default\ live\ time-out\ for\ new\ offerings\ created\ via\ SOS-T=\u0e01\u0e32\u0e23\u0e2b\u0e21\u0e14\u0e40\u0e27\u0e25\u0e32\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e08\u0e23\u0e34\u0e07\u0e40\u0e23\u0e34\u0e48\u0e21\u0e15\u0e49\u0e19\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e02\u0e49\u0e2d\u0e40\u0e2a\u0e19\u0e2d\u0e43\u0e2b\u0e21\u0e48\u0e17\u0e35\u0e48\u0e2a\u0e23\u0e49\u0e32\u0e07\u0e1c\u0e48\u0e32\u0e19 SOS-T +Enable\ to\ use\ a\ persistent\ HTTP\ connection\ for\ InsertResult=\u0e40\u0e1b\u0e34\u0e14\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e43\u0e0a\u0e49\u0e01\u0e32\u0e23\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e21\u0e15\u0e48\u0e2d HTTP \u0e41\u0e1a\u0e1a\u0e16\u0e32\u0e27\u0e23\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a InsertResult +Execution\ period\ of\ the\ purge\ policy\ (in\ seconds)=\u0e23\u0e30\u0e22\u0e30\u0e40\u0e27\u0e25\u0e32\u0e01\u0e32\u0e23\u0e14\u0e33\u0e40\u0e19\u0e34\u0e19\u0e01\u0e32\u0e23\u0e02\u0e2d\u0e07\u0e19\u0e42\u0e22\u0e1a\u0e32\u0e22\u0e01\u0e32\u0e23\u0e25\u0e49\u0e32\u0e07\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25 (\u0e40\u0e1b\u0e47\u0e19\u0e27\u0e34\u0e19\u0e32\u0e17\u0e35) +Filtered\ view\ to\ select\ systems\ exposed\ as\ read-only\ through\ this\ service=\u0e21\u0e38\u0e21\u0e21\u0e2d\u0e07\u0e17\u0e35\u0e48\u0e01\u0e23\u0e2d\u0e07\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e23\u0e30\u0e1a\u0e1a\u0e17\u0e35\u0e48\u0e40\u0e1b\u0e34\u0e14\u0e40\u0e1c\u0e22\u0e40\u0e1b\u0e47\u0e19\u0e41\u0e1a\u0e1a\u0e2d\u0e48\u0e32\u0e19\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e40\u0e14\u0e35\u0e22\u0e27\u0e1c\u0e48\u0e32\u0e19\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23\u0e19\u0e35\u0e49 +Filtered\ view\ to\ select\ systems/datastreams\ to\ register\ with\ Connected\ Systems=\u0e21\u0e38\u0e21\u0e21\u0e2d\u0e07\u0e17\u0e35\u0e48\u0e01\u0e23\u0e2d\u0e07\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e23\u0e30\u0e1a\u0e1a/\u0e2a\u0e15\u0e23\u0e35\u0e21\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e25\u0e07\u0e17\u0e30\u0e40\u0e1a\u0e35\u0e22\u0e19\u0e01\u0e31\u0e1a Connected Systems +Filtered\ view\ to\ select\ systems/datastreams\ to\ register\ with\ remote\ SOS=\u0e21\u0e38\u0e21\u0e21\u0e2d\u0e07\u0e17\u0e35\u0e48\u0e01\u0e23\u0e2d\u0e07\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e23\u0e30\u0e1a\u0e1a/\u0e2a\u0e15\u0e23\u0e35\u0e21\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e25\u0e07\u0e17\u0e30\u0e40\u0e1a\u0e35\u0e22\u0e19\u0e01\u0e31\u0e1a SOS \u0e23\u0e30\u0e22\u0e30\u0e44\u0e01\u0e25 +Fixed\ system\ location\ in\ EPSG\ 4979\ (WGS84)\ coordinate\ system=\u0e15\u0e33\u0e41\u0e2b\u0e19\u0e48\u0e07\u0e23\u0e30\u0e1a\u0e1a\u0e04\u0e07\u0e17\u0e35\u0e48\u0e43\u0e19\u0e23\u0e30\u0e1a\u0e1a\u0e1e\u0e34\u0e01\u0e31\u0e14 EPSG 4979 (WGS84) +For\ each\ connection\ or\ reconnection\ attempt,\ the\ client\ will\ wait\ for\ the\ remote\ side\ to\ respond\ until\ this\ timeout\ expires\ (in\ ms)=\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e21\u0e15\u0e48\u0e2d\u0e2b\u0e23\u0e37\u0e2d\u0e1e\u0e22\u0e32\u0e22\u0e32\u0e21\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e21\u0e15\u0e48\u0e2d\u0e43\u0e2b\u0e21\u0e48\u0e41\u0e15\u0e48\u0e25\u0e30\u0e04\u0e23\u0e31\u0e49\u0e07 \u0e44\u0e04\u0e25\u0e40\u0e2d\u0e19\u0e15\u0e4c\u0e08\u0e30\u0e23\u0e2d\u0e43\u0e2b\u0e49\u0e1d\u0e48\u0e32\u0e22\u0e23\u0e30\u0e22\u0e30\u0e44\u0e01\u0e25\u0e15\u0e2d\u0e1a\u0e2a\u0e19\u0e2d\u0e07\u0e08\u0e19\u0e01\u0e27\u0e48\u0e32\u0e01\u0e32\u0e23\u0e2b\u0e21\u0e14\u0e40\u0e27\u0e25\u0e32\u0e19\u0e35\u0e49\u0e08\u0e30\u0e2b\u0e21\u0e14\u0e25\u0e07 (\u0e40\u0e1b\u0e47\u0e19\u0e21\u0e34\u0e25\u0e25\u0e34\u0e27\u0e34\u0e19\u0e32\u0e17\u0e35) +Heading\ (or\ yaw)\ angle\ about\ Z\ axis\ in\ degrees=\u0e21\u0e38\u0e21\u0e21\u0e38\u0e48\u0e07\u0e2b\u0e19\u0e49\u0e32 (\u0e2b\u0e23\u0e37\u0e2d\u0e2b\u0e31\u0e19\u0e40\u0e2b) \u0e23\u0e2d\u0e1a\u0e41\u0e01\u0e19 Z \u0e21\u0e35\u0e2b\u0e19\u0e48\u0e27\u0e22\u0e40\u0e1b\u0e47\u0e19\u0e2d\u0e07\u0e28\u0e32 +How\ long\ the\ client\ will\ wait\ after\ connection\ is\ lost\ before\ it\ will\ attempt\ to\ reconnect\ (in\ ms)=\u0e23\u0e30\u0e22\u0e30\u0e40\u0e27\u0e25\u0e32\u0e17\u0e35\u0e48\u0e44\u0e04\u0e25\u0e40\u0e2d\u0e47\u0e19\u0e15\u0e4c\u0e08\u0e30\u0e23\u0e2d\u0e2b\u0e25\u0e31\u0e07\u0e08\u0e32\u0e01\u0e01\u0e32\u0e23\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e21\u0e15\u0e48\u0e2d\u0e02\u0e32\u0e14\u0e2b\u0e32\u0e22\u0e44\u0e1b\u0e01\u0e48\u0e2d\u0e19\u0e17\u0e35\u0e48\u0e08\u0e30\u0e1e\u0e22\u0e32\u0e22\u0e32\u0e21\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e21\u0e15\u0e48\u0e2d\u0e43\u0e2b\u0e21\u0e48 (\u0e40\u0e1b\u0e47\u0e19\u0e21\u0e34\u0e25\u0e25\u0e34\u0e27\u0e34\u0e19\u0e32\u0e17\u0e35) +ID\ Generator=\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e01\u0e33\u0e40\u0e19\u0e34\u0e14 ID +ID\ of\ database\ module\ used\ for\ persisting\ data\ received\ by\ this\ service.\ If\ none\ is\ provided,\ new\ systems\ registered\ through\ this\ service\ will\ be\ available\ on\ the\ hub,\ but\ with\ no\ persistence\ guarantee\ across\ restarts.=ID \u0e02\u0e2d\u0e07\u0e42\u0e21\u0e14\u0e39\u0e25\u0e10\u0e32\u0e19\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e17\u0e35\u0e48\u0e43\u0e0a\u0e49\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e40\u0e01\u0e47\u0e1a\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e17\u0e35\u0e48\u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a\u0e08\u0e32\u0e01\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23\u0e19\u0e35\u0e49 \u0e2b\u0e32\u0e01\u0e44\u0e21\u0e48\u0e21\u0e35\u0e01\u0e32\u0e23\u0e23\u0e30\u0e1a\u0e38 \u0e23\u0e30\u0e1a\u0e1a\u0e43\u0e2b\u0e21\u0e48\u0e17\u0e35\u0e48\u0e25\u0e07\u0e17\u0e30\u0e40\u0e1a\u0e35\u0e22\u0e19\u0e1c\u0e48\u0e32\u0e19\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23\u0e19\u0e35\u0e49\u0e08\u0e30\u0e1e\u0e23\u0e49\u0e2d\u0e21\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e1a\u0e19\u0e2e\u0e31\u0e1a \u0e41\u0e15\u0e48\u0e44\u0e21\u0e48\u0e21\u0e35\u0e01\u0e32\u0e23\u0e23\u0e31\u0e1a\u0e1b\u0e23\u0e30\u0e01\u0e31\u0e19\u0e04\u0e27\u0e32\u0e21\u0e04\u0e07\u0e17\u0e19\u0e43\u0e19\u0e01\u0e32\u0e23\u0e23\u0e35\u0e2a\u0e15\u0e32\u0e23\u0e4c\u0e17 +ID\ of\ database\ module\ used\ for\ persisting\ data\ received\ by\ this\ service.\ If\ none\ is\ provided,\ new\ systems\ registered\ through\ this\ service\ will\ be\ available\ on\ the\ hub,\ but\ with\ no\ persistence\ guarantee\ across\ restarts.\ Only\ the\ latest\ observation\ from\ each\ datastream\ will\ be\ available\ and\ older\ observations\ will\ be\ discarded=ID \u0e02\u0e2d\u0e07\u0e42\u0e21\u0e14\u0e39\u0e25\u0e10\u0e32\u0e19\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e17\u0e35\u0e48\u0e43\u0e0a\u0e49\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e40\u0e01\u0e47\u0e1a\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e17\u0e35\u0e48\u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a\u0e08\u0e32\u0e01\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23\u0e19\u0e35\u0e49 \u0e2b\u0e32\u0e01\u0e44\u0e21\u0e48\u0e21\u0e35\u0e01\u0e32\u0e23\u0e23\u0e30\u0e1a\u0e38 \u0e23\u0e30\u0e1a\u0e1a\u0e43\u0e2b\u0e21\u0e48\u0e17\u0e35\u0e48\u0e25\u0e07\u0e17\u0e30\u0e40\u0e1a\u0e35\u0e22\u0e19\u0e1c\u0e48\u0e32\u0e19\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23\u0e19\u0e35\u0e49\u0e08\u0e30\u0e1e\u0e23\u0e49\u0e2d\u0e21\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e1a\u0e19\u0e2e\u0e31\u0e1a \u0e41\u0e15\u0e48\u0e44\u0e21\u0e48\u0e21\u0e35\u0e01\u0e32\u0e23\u0e23\u0e31\u0e1a\u0e1b\u0e23\u0e30\u0e01\u0e31\u0e19\u0e04\u0e27\u0e32\u0e21\u0e04\u0e07\u0e17\u0e19\u0e43\u0e19\u0e01\u0e32\u0e23\u0e23\u0e35\u0e2a\u0e15\u0e32\u0e23\u0e4c\u0e17 \u0e40\u0e09\u0e1e\u0e32\u0e30\u0e01\u0e32\u0e23\u0e2a\u0e31\u0e07\u0e40\u0e01\u0e15\u0e25\u0e48\u0e32\u0e2a\u0e38\u0e14\u0e08\u0e32\u0e01\u0e41\u0e15\u0e48\u0e25\u0e30\u0e2a\u0e15\u0e23\u0e35\u0e21\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e40\u0e17\u0e48\u0e32\u0e19\u0e31\u0e49\u0e19\u0e17\u0e35\u0e48\u0e08\u0e30\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e43\u0e0a\u0e49\u0e44\u0e14\u0e49 \u0e41\u0e25\u0e30\u0e01\u0e32\u0e23\u0e2a\u0e31\u0e07\u0e40\u0e01\u0e15\u0e40\u0e01\u0e48\u0e32\u0e46 \u0e08\u0e30\u0e16\u0e39\u0e01\u0e25\u0e30\u0e17\u0e34\u0e49\u0e07 +Individual\ configuration\ of\ sensors\ in\ the\ array\ (will\ override\ common\ configuration)=\u0e01\u0e32\u0e23\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e04\u0e48\u0e32\u0e2a\u0e48\u0e27\u0e19\u0e1a\u0e38\u0e04\u0e04\u0e25\u0e02\u0e2d\u0e07\u0e40\u0e0b\u0e47\u0e19\u0e40\u0e0b\u0e2d\u0e23\u0e4c\u0e43\u0e19\u0e2d\u0e32\u0e40\u0e23\u0e22\u0e4c (\u0e08\u0e30\u0e41\u0e17\u0e19\u0e17\u0e35\u0e48\u0e01\u0e32\u0e23\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e04\u0e48\u0e32\u0e17\u0e31\u0e48\u0e27\u0e44\u0e1b) +List\ of\ observed\ properties\ URI\ to\ make\ available\ as\ outputs=\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e04\u0e38\u0e13\u0e2a\u0e21\u0e1a\u0e31\u0e15\u0e34\u0e17\u0e35\u0e48\u0e2a\u0e31\u0e07\u0e40\u0e01\u0e15\u0e44\u0e14\u0e49 URI \u0e17\u0e35\u0e48\u0e08\u0e30\u0e17\u0e33\u0e43\u0e2b\u0e49\u0e1e\u0e23\u0e49\u0e2d\u0e21\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e40\u0e1b\u0e47\u0e19\u0e40\u0e2d\u0e32\u0e15\u0e4c\u0e1e\u0e38\u0e15 +Mapping\ of\ custom\ formats\ mime-types\ to\ custom\ serializer\ classes=\u0e01\u0e32\u0e23\u0e41\u0e21\u0e1b\u0e23\u0e39\u0e1b\u0e41\u0e1a\u0e1a\u0e17\u0e35\u0e48\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e40\u0e2d\u0e07\u0e1b\u0e23\u0e30\u0e40\u0e20\u0e17 mime \u0e01\u0e31\u0e1a\u0e04\u0e25\u0e32\u0e2a\u0e0b\u0e35\u0e40\u0e23\u0e35\u0e22\u0e25\u0e44\u0e25\u0e40\u0e0b\u0e2d\u0e23\u0e4c\u0e41\u0e1a\u0e1a\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e40\u0e2d\u0e07 +Mappings\ used\ by\ CURIE\ to\ URI\ resolver=\u0e01\u0e32\u0e23\u0e41\u0e21\u0e1b\u0e17\u0e35\u0e48\u0e43\u0e0a\u0e49\u0e42\u0e14\u0e22 CURIE \u0e01\u0e31\u0e1a\u0e15\u0e31\u0e27\u0e41\u0e01\u0e49\u0e44\u0e02 URI +Max\ Limit=\u0e02\u0e35\u0e14\u0e08\u0e33\u0e01\u0e31\u0e14\u0e2a\u0e39\u0e07\u0e2a\u0e38\u0e14 +Max\ Observations\ Returned=\u0e01\u0e32\u0e23\u0e2a\u0e31\u0e07\u0e40\u0e01\u0e15\u0e2a\u0e39\u0e07\u0e2a\u0e38\u0e14\u0e01\u0e25\u0e31\u0e1a\u0e21\u0e32\u0e41\u0e25\u0e49\u0e27 +Max\ Records\ Returned=\u0e41\u0e21\u0e47\u0e01\u0e0b\u0e4c\u0e40\u0e23\u0e04\u0e04\u0e2d\u0e23\u0e4c\u0e14\u0e01\u0e25\u0e31\u0e1a\u0e21\u0e32\u0e41\u0e25\u0e49\u0e27 +Max\ delay\ between\ auto-commit\ execution,\ in\ seconds.\ 0\ to\ disable\ time-based\ auto-commit=\u0e04\u0e27\u0e32\u0e21\u0e25\u0e48\u0e32\u0e0a\u0e49\u0e32\u0e2a\u0e39\u0e07\u0e2a\u0e38\u0e14\u0e23\u0e30\u0e2b\u0e27\u0e48\u0e32\u0e07\u0e01\u0e32\u0e23\u0e14\u0e33\u0e40\u0e19\u0e34\u0e19\u0e01\u0e32\u0e23\u0e04\u0e2d\u0e21\u0e21\u0e34\u0e15\u0e2d\u0e31\u0e15\u0e42\u0e19\u0e21\u0e31\u0e15\u0e34 \u0e2b\u0e19\u0e48\u0e27\u0e22\u0e40\u0e1b\u0e47\u0e19\u0e27\u0e34\u0e19\u0e32\u0e17\u0e35 0 \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e1b\u0e34\u0e14\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e01\u0e32\u0e23\u0e04\u0e2d\u0e21\u0e21\u0e34\u0e15\u0e2d\u0e31\u0e15\u0e42\u0e19\u0e21\u0e31\u0e15\u0e34\u0e15\u0e32\u0e21\u0e40\u0e27\u0e25\u0e32 +Maximum\ age\ of\ data\ to\ be\ kept\ in\ storage\ (in\ seconds)=\u0e2d\u0e32\u0e22\u0e38\u0e2a\u0e39\u0e07\u0e2a\u0e38\u0e14\u0e02\u0e2d\u0e07\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e17\u0e35\u0e48\u0e08\u0e30\u0e40\u0e01\u0e47\u0e1a\u0e44\u0e27\u0e49\u0e43\u0e19\u0e17\u0e35\u0e48\u0e08\u0e31\u0e14\u0e40\u0e01\u0e47\u0e1a\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25 (\u0e40\u0e1b\u0e47\u0e19\u0e27\u0e34\u0e19\u0e32\u0e17\u0e35) +Maximum\ number\ of\ FoI\ IDs\ listed\ in\ capabilities=\u0e08\u0e33\u0e19\u0e27\u0e19 FoI ID \u0e2a\u0e39\u0e07\u0e2a\u0e38\u0e14\u0e17\u0e35\u0e48\u0e41\u0e2a\u0e14\u0e07\u0e2d\u0e22\u0e39\u0e48\u0e43\u0e19\u0e04\u0e27\u0e32\u0e21\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16 +Maximum\ number\ of\ observations\ returned\ \ by\ a\ historical\ GetObservation\ request\ (for\ each\ selected\ offering)=\u0e08\u0e33\u0e19\u0e27\u0e19\u0e01\u0e32\u0e23\u0e2a\u0e31\u0e07\u0e40\u0e01\u0e15\u0e2a\u0e39\u0e07\u0e2a\u0e38\u0e14\u0e17\u0e35\u0e48\u0e2a\u0e48\u0e07\u0e04\u0e37\u0e19\u0e42\u0e14\u0e22\u0e04\u0e33\u0e02\u0e2d GetObservation \u0e43\u0e19\u0e2d\u0e14\u0e35\u0e15 (\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e02\u0e49\u0e2d\u0e40\u0e2a\u0e19\u0e2d\u0e17\u0e35\u0e48\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e41\u0e15\u0e48\u0e25\u0e30\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23) +Maximum\ number\ of\ records\ in\ upload\ queue\ (used\ to\ compensate\ for\ variable\ bandwidth)=\u0e08\u0e33\u0e19\u0e27\u0e19\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01\u0e2a\u0e39\u0e07\u0e2a\u0e38\u0e14\u0e43\u0e19\u0e04\u0e34\u0e27\u0e01\u0e32\u0e23\u0e2d\u0e31\u0e1b\u0e42\u0e2b\u0e25\u0e14 (\u0e43\u0e0a\u0e49\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e0a\u0e14\u0e40\u0e0a\u0e22\u0e41\u0e1a\u0e19\u0e14\u0e4c\u0e27\u0e34\u0e18\u0e17\u0e35\u0e48\u0e41\u0e1b\u0e23\u0e1c\u0e31\u0e19) +Maximum\ number\ of\ resources\ returned\ in\ a\ single\ page=\u0e08\u0e33\u0e19\u0e27\u0e19\u0e17\u0e23\u0e31\u0e1e\u0e22\u0e32\u0e01\u0e23\u0e2a\u0e39\u0e07\u0e2a\u0e38\u0e14\u0e17\u0e35\u0e48\u0e2a\u0e48\u0e07\u0e04\u0e37\u0e19\u0e43\u0e19\u0e2b\u0e19\u0e49\u0e32\u0e40\u0e14\u0e35\u0e22\u0e27 +Maximum\ number\ of\ result\ records\ returned\ by\ a\ historical\ GetResult\ request=\u0e08\u0e33\u0e19\u0e27\u0e19\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01\u0e1c\u0e25\u0e25\u0e31\u0e1e\u0e18\u0e4c\u0e2a\u0e39\u0e07\u0e2a\u0e38\u0e14\u0e17\u0e35\u0e48\u0e2a\u0e48\u0e07\u0e04\u0e37\u0e19\u0e42\u0e14\u0e22\u0e04\u0e33\u0e02\u0e2d GetResult \u0e43\u0e19\u0e2d\u0e14\u0e35\u0e15 +Maximum\ number\ of\ stream\ errors\ before\ we\ try\ to\ reconnect\ to\ remote\ server=\u0e08\u0e33\u0e19\u0e27\u0e19\u0e02\u0e49\u0e2d\u0e1c\u0e34\u0e14\u0e1e\u0e25\u0e32\u0e14\u0e43\u0e19\u0e01\u0e32\u0e23\u0e2a\u0e15\u0e23\u0e35\u0e21\u0e2a\u0e39\u0e07\u0e2a\u0e38\u0e14\u0e01\u0e48\u0e2d\u0e19\u0e17\u0e35\u0e48\u0e40\u0e23\u0e32\u0e08\u0e30\u0e1e\u0e22\u0e32\u0e22\u0e32\u0e21\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e21\u0e15\u0e48\u0e2d\u0e01\u0e31\u0e1a\u0e40\u0e0b\u0e34\u0e23\u0e4c\u0e1f\u0e40\u0e27\u0e2d\u0e23\u0e4c\u0e23\u0e30\u0e22\u0e30\u0e44\u0e01\u0e25\u0e2d\u0e35\u0e01\u0e04\u0e23\u0e31\u0e49\u0e07 +Memory\ cache\ size\ for\ page\ chunks,\ in\ KB=\u0e02\u0e19\u0e32\u0e14\u0e41\u0e04\u0e0a\u0e2b\u0e19\u0e48\u0e27\u0e22\u0e04\u0e27\u0e32\u0e21\u0e08\u0e33\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e2a\u0e48\u0e27\u0e19\u0e02\u0e2d\u0e07\u0e2b\u0e19\u0e49\u0e32 \u0e21\u0e35\u0e2b\u0e19\u0e48\u0e27\u0e22\u0e40\u0e1b\u0e47\u0e19 KB +Metadata\ of\ system\ group\ that\ will\ be\ created\ to\ contain\ all\ procedures/sensors\ registered\ through\ this\ service.\ Only\ sensors\ in\ this\ group\ will\ be\ modifiable\ by\ this\ service=\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e40\u0e21\u0e15\u0e32\u0e02\u0e2d\u0e07\u0e01\u0e25\u0e38\u0e48\u0e21\u0e23\u0e30\u0e1a\u0e1a\u0e17\u0e35\u0e48\u0e08\u0e30\u0e16\u0e39\u0e01\u0e2a\u0e23\u0e49\u0e32\u0e07\u0e02\u0e36\u0e49\u0e19\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e43\u0e2b\u0e49\u0e21\u0e35\u0e02\u0e31\u0e49\u0e19\u0e15\u0e2d\u0e19/\u0e40\u0e0b\u0e47\u0e19\u0e40\u0e0b\u0e2d\u0e23\u0e4c\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14\u0e17\u0e35\u0e48\u0e25\u0e07\u0e17\u0e30\u0e40\u0e1a\u0e35\u0e22\u0e19\u0e1c\u0e48\u0e32\u0e19\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23\u0e19\u0e35\u0e49 \u0e40\u0e09\u0e1e\u0e32\u0e30\u0e40\u0e0b\u0e47\u0e19\u0e40\u0e0b\u0e2d\u0e23\u0e4c\u0e43\u0e19\u0e01\u0e25\u0e38\u0e48\u0e21\u0e19\u0e35\u0e49\u0e40\u0e17\u0e48\u0e32\u0e19\u0e31\u0e49\u0e19\u0e17\u0e35\u0e48\u0e08\u0e30\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e41\u0e01\u0e49\u0e44\u0e02\u0e44\u0e14\u0e49\u0e42\u0e14\u0e22\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23\u0e19\u0e35\u0e49 +Metadata\ of\ system\ group\ that\ will\ be\ created\ to\ contain\ all\ systems\ registered\ through\ this\ service.\ Only\ systems\ in\ this\ group\ will\ be\ modifiable\ by\ this\ service=\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e40\u0e21\u0e15\u0e32\u0e02\u0e2d\u0e07\u0e01\u0e25\u0e38\u0e48\u0e21\u0e23\u0e30\u0e1a\u0e1a\u0e17\u0e35\u0e48\u0e08\u0e30\u0e16\u0e39\u0e01\u0e2a\u0e23\u0e49\u0e32\u0e07\u0e02\u0e36\u0e49\u0e19\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e23\u0e27\u0e21\u0e23\u0e30\u0e1a\u0e1a\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14\u0e17\u0e35\u0e48\u0e25\u0e07\u0e17\u0e30\u0e40\u0e1a\u0e35\u0e22\u0e19\u0e1c\u0e48\u0e32\u0e19\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23\u0e19\u0e35\u0e49 \u0e40\u0e09\u0e1e\u0e32\u0e30\u0e23\u0e30\u0e1a\u0e1a\u0e43\u0e19\u0e01\u0e25\u0e38\u0e48\u0e21\u0e19\u0e35\u0e49\u0e40\u0e17\u0e48\u0e32\u0e19\u0e31\u0e49\u0e19\u0e17\u0e35\u0e48\u0e08\u0e30\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e41\u0e01\u0e49\u0e44\u0e02\u0e44\u0e14\u0e49\u0e42\u0e14\u0e22\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23\u0e19\u0e35\u0e49 +Method\ used\ to\ generate\ new\ resource\ IDs=\u0e27\u0e34\u0e18\u0e35\u0e17\u0e35\u0e48\u0e43\u0e0a\u0e49\u0e43\u0e19\u0e01\u0e32\u0e23\u0e2a\u0e23\u0e49\u0e32\u0e07\u0e23\u0e2b\u0e31\u0e2a\u0e17\u0e23\u0e31\u0e1e\u0e22\u0e32\u0e01\u0e23\u0e43\u0e2b\u0e21\u0e48 +Minimum\ fillrate\ above\ which\ auto\ compact\ operations\ may\ be\ triggered=\u0e2d\u0e31\u0e15\u0e23\u0e32\u0e01\u0e32\u0e23\u0e2a\u0e48\u0e07\u0e02\u0e31\u0e49\u0e19\u0e15\u0e48\u0e33\u0e17\u0e35\u0e48\u0e2a\u0e39\u0e07\u0e01\u0e27\u0e48\u0e32\u0e0b\u0e36\u0e48\u0e07\u0e2d\u0e32\u0e08\u0e17\u0e23\u0e34\u0e01\u0e40\u0e01\u0e2d\u0e23\u0e4c\u0e01\u0e32\u0e23\u0e14\u0e33\u0e40\u0e19\u0e34\u0e19\u0e01\u0e32\u0e23\u0e01\u0e23\u0e30\u0e0a\u0e31\u0e1a\u0e2d\u0e31\u0e15\u0e42\u0e19\u0e21\u0e31\u0e15\u0e34\u0e44\u0e14\u0e49 +Minimum\ period\ between\ database\ commits\ (in\ ms)=\u0e23\u0e30\u0e22\u0e30\u0e40\u0e27\u0e25\u0e32\u0e02\u0e31\u0e49\u0e19\u0e15\u0e48\u0e33\u0e23\u0e30\u0e2b\u0e27\u0e48\u0e32\u0e07\u0e10\u0e32\u0e19\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e17\u0e35\u0e48\u0e04\u0e2d\u0e21\u0e21\u0e34\u0e15 (\u0e40\u0e1b\u0e47\u0e19\u0e21\u0e34\u0e25\u0e25\u0e34\u0e27\u0e34\u0e19\u0e32\u0e17\u0e35) +Names\ of\ datastreams\ whose\ data\ will\ be\ hidden\ from\ the\ SOS.\ If\ this\ is\ null,\ all\ streams\ produced\ by\ the\ procedure\ are\ exposed=\u0e0a\u0e37\u0e48\u0e2d\u0e02\u0e2d\u0e07\u0e2a\u0e15\u0e23\u0e35\u0e21\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e0b\u0e36\u0e48\u0e07\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e08\u0e30\u0e16\u0e39\u0e01\u0e0b\u0e48\u0e2d\u0e19\u0e08\u0e32\u0e01 SOS \u0e2b\u0e32\u0e01\u0e40\u0e1b\u0e47\u0e19\u0e04\u0e48\u0e32\u0e27\u0e48\u0e32\u0e07 \u0e2a\u0e15\u0e23\u0e35\u0e21\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14\u0e17\u0e35\u0e48\u0e2a\u0e23\u0e49\u0e32\u0e07\u0e42\u0e14\u0e22\u0e42\u0e1e\u0e23\u0e0b\u0e35\u0e40\u0e14\u0e2d\u0e23\u0e4c\u0e08\u0e30\u0e16\u0e39\u0e01\u0e40\u0e1b\u0e34\u0e14\u0e40\u0e1c\u0e22 +Observed\ Properties=\u0e04\u0e38\u0e13\u0e2a\u0e21\u0e1a\u0e31\u0e15\u0e34\u0e17\u0e35\u0e48\u0e2a\u0e31\u0e07\u0e40\u0e01\u0e15\u0e44\u0e14\u0e49 +Offering\ URI\ as\ exposed\ in\ capabilities.\ (if\ null,\ the\ procedure\ UID\ is\ used)=\u0e40\u0e2a\u0e19\u0e2d URI \u0e15\u0e32\u0e21\u0e04\u0e27\u0e32\u0e21\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e17\u0e35\u0e48\u0e40\u0e1b\u0e34\u0e14\u0e40\u0e1c\u0e22 (\u0e2b\u0e32\u0e01\u0e40\u0e1b\u0e47\u0e19\u0e04\u0e48\u0e32\u0e27\u0e48\u0e32\u0e07 \u0e08\u0e30\u0e43\u0e0a\u0e49\u0e02\u0e31\u0e49\u0e19\u0e15\u0e2d\u0e19 UID) +Offering\ description\ (if\ null,\ it\ will\ be\ auto-generated)=\u0e04\u0e33\u0e2d\u0e18\u0e34\u0e1a\u0e32\u0e22\u0e02\u0e49\u0e2d\u0e40\u0e2a\u0e19\u0e2d (\u0e2b\u0e32\u0e01\u0e40\u0e1b\u0e47\u0e19\u0e04\u0e48\u0e32\u0e27\u0e48\u0e32\u0e07 \u0e23\u0e30\u0e1a\u0e1a\u0e08\u0e30\u0e2a\u0e23\u0e49\u0e32\u0e07\u0e02\u0e36\u0e49\u0e19\u0e42\u0e14\u0e22\u0e2d\u0e31\u0e15\u0e42\u0e19\u0e21\u0e31\u0e15\u0e34) +Offering\ name\ (if\ null,\ the\ procedure\ name\ is\ used)=\u0e0a\u0e37\u0e48\u0e2d\u0e02\u0e49\u0e2d\u0e40\u0e2a\u0e19\u0e2d (\u0e2b\u0e32\u0e01\u0e40\u0e1b\u0e47\u0e19\u0e42\u0e21\u0e06\u0e30 \u0e08\u0e30\u0e43\u0e0a\u0e49\u0e0a\u0e37\u0e48\u0e2d\u0e02\u0e31\u0e49\u0e19\u0e15\u0e2d\u0e19) +Orientation\ as\ Euler\ angles\ in\ NED\ coordinate\ reference\ frame.\nOrder\ of\ rotations\ is\ z-y\u2019-x"\ (in\ rotating\ frame)\ or\ x-y-z\ (in\ fixed\ frame)=\u0e01\u0e32\u0e23\u0e27\u0e32\u0e07\u0e41\u0e19\u0e27\u0e40\u0e1b\u0e47\u0e19\u0e21\u0e38\u0e21\u0e2d\u0e2d\u0e22\u0e40\u0e25\u0e2d\u0e23\u0e4c\u0e43\u0e19\u0e2b\u0e19\u0e49\u0e32\u0e15\u0e48\u0e32\u0e07\u0e2d\u0e49\u0e32\u0e07\u0e2d\u0e34\u0e07\u0e1e\u0e34\u0e01\u0e31\u0e14 NED\n\u0e25\u0e33\u0e14\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e2b\u0e21\u0e38\u0e19\u0e04\u0e37\u0e2d z-y''-x" (\u0e43\u0e19\u0e40\u0e1f\u0e23\u0e21\u0e17\u0e35\u0e48\u0e2b\u0e21\u0e38\u0e19) \u0e2b\u0e23\u0e37\u0e2d x-y-z (\u0e43\u0e19\u0e40\u0e1f\u0e23\u0e21\u0e04\u0e07\u0e17\u0e35\u0e48) +Password\ for\ the\ key\ store\ (and\ for\ the\ keypair\ within\ the\ keystore).\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ "javax.net.ssl.keyStorePassword"\ system\ property.\ This\ value\ can\ use\ variable\ expansion\ expressions\ of\ the\ form\ "$${name}"\ (for\ environment\ variables\ and\ system\ properties)\ or\ "$${file;/path/to/file}"\ (for\ secret\ file\ contents).=\u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e48\u0e32\u0e19\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e17\u0e35\u0e48\u0e40\u0e01\u0e47\u0e1a\u0e04\u0e35\u0e22\u0e4c (\u0e41\u0e25\u0e30\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e04\u0e39\u0e48\u0e04\u0e35\u0e22\u0e4c\u0e20\u0e32\u0e22\u0e43\u0e19\u0e17\u0e35\u0e48\u0e40\u0e01\u0e47\u0e1a\u0e04\u0e35\u0e22\u0e4c) \u0e2b\u0e32\u0e01\u0e04\u0e48\u0e32\u0e19\u0e35\u0e49\u0e40\u0e27\u0e49\u0e19\u0e27\u0e48\u0e32\u0e07\u0e44\u0e27\u0e49 \u0e08\u0e30\u0e43\u0e0a\u0e49\u0e04\u0e48\u0e32\u0e04\u0e38\u0e13\u0e2a\u0e21\u0e1a\u0e31\u0e15\u0e34\u0e23\u0e30\u0e1a\u0e1a "javax.net.ssl.keyStorePassword" \u0e40\u0e1b\u0e47\u0e19\u0e04\u0e48\u0e32\u0e40\u0e23\u0e34\u0e48\u0e21\u0e15\u0e49\u0e19 \u0e04\u0e48\u0e32\u0e19\u0e35\u0e49\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e43\u0e0a\u0e49\u0e19\u0e34\u0e1e\u0e08\u0e19\u0e4c\u0e01\u0e32\u0e23\u0e02\u0e22\u0e32\u0e22\u0e15\u0e31\u0e27\u0e41\u0e1b\u0e23\u0e43\u0e19\u0e23\u0e39\u0e1b\u0e41\u0e1a\u0e1a "$${name}" (\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e15\u0e31\u0e27\u0e41\u0e1b\u0e23\u0e2a\u0e20\u0e32\u0e1e\u0e41\u0e27\u0e14\u0e25\u0e49\u0e2d\u0e21\u0e41\u0e25\u0e30\u0e04\u0e38\u0e13\u0e2a\u0e21\u0e1a\u0e31\u0e15\u0e34\u0e02\u0e2d\u0e07\u0e23\u0e30\u0e1a\u0e1a) \u0e2b\u0e23\u0e37\u0e2d "$${file;/path/to/file}" (\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e40\u0e19\u0e37\u0e49\u0e2d\u0e2b\u0e32\u0e44\u0e1f\u0e25\u0e4c\u0e25\u0e31\u0e1a) +Password\ for\ the\ trust\ store.\ Ignored\ if\ client\ certificate\ authentication\ is\ not\ used.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ "javax.net.ssl.trustStorePassword"\ system\ property.\ This\ value\ can\ use\ variable\ expansion\ expressions\ of\ the\ form\ "$${name}"\ (for\ environment\ variables\ and\ system\ properties)\ or\ "$${file;/path/to/file}"\ (for\ secret\ file\ contents).=\u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e48\u0e32\u0e19\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e23\u0e49\u0e32\u0e19\u0e04\u0e49\u0e32\u0e17\u0e35\u0e48\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e16\u0e37\u0e2d\u0e44\u0e14\u0e49 \u0e25\u0e30\u0e40\u0e27\u0e49\u0e19\u0e2b\u0e32\u0e01\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\u0e43\u0e0a\u0e49\u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e2a\u0e34\u0e17\u0e18\u0e34\u0e4c\u0e43\u0e1a\u0e23\u0e31\u0e1a\u0e23\u0e2d\u0e07\u0e44\u0e04\u0e25\u0e40\u0e2d\u0e47\u0e19\u0e15\u0e4c \u0e2b\u0e32\u0e01\u0e04\u0e48\u0e32\u0e19\u0e35\u0e49\u0e40\u0e27\u0e49\u0e19\u0e27\u0e48\u0e32\u0e07\u0e44\u0e27\u0e49 \u0e08\u0e30\u0e43\u0e0a\u0e49\u0e04\u0e48\u0e32\u0e04\u0e38\u0e13\u0e2a\u0e21\u0e1a\u0e31\u0e15\u0e34\u0e23\u0e30\u0e1a\u0e1a "javax.net.ssl.trustStorePassword" \u0e40\u0e1b\u0e47\u0e19\u0e04\u0e48\u0e32\u0e40\u0e23\u0e34\u0e48\u0e21\u0e15\u0e49\u0e19 \u0e04\u0e48\u0e32\u0e19\u0e35\u0e49\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e43\u0e0a\u0e49\u0e19\u0e34\u0e1e\u0e08\u0e19\u0e4c\u0e01\u0e32\u0e23\u0e02\u0e22\u0e32\u0e22\u0e15\u0e31\u0e27\u0e41\u0e1b\u0e23\u0e43\u0e19\u0e23\u0e39\u0e1b\u0e41\u0e1a\u0e1a "$${name}" (\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e15\u0e31\u0e27\u0e41\u0e1b\u0e23\u0e2a\u0e20\u0e32\u0e1e\u0e41\u0e27\u0e14\u0e25\u0e49\u0e2d\u0e21\u0e41\u0e25\u0e30\u0e04\u0e38\u0e13\u0e2a\u0e21\u0e1a\u0e31\u0e15\u0e34\u0e02\u0e2d\u0e07\u0e23\u0e30\u0e1a\u0e1a) \u0e2b\u0e23\u0e37\u0e2d "$${file;/path/to/file}" (\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e40\u0e19\u0e37\u0e49\u0e2d\u0e2b\u0e32\u0e44\u0e1f\u0e25\u0e4c\u0e25\u0e31\u0e1a) +Path\ of\ service\ endpoint\ relative\ to\ the\ context\ URL\ (e.g.\ http\://server.net/sensorhub)=\u0e40\u0e2a\u0e49\u0e19\u0e17\u0e32\u0e07\u0e02\u0e2d\u0e07\u0e08\u0e38\u0e14\u0e2a\u0e34\u0e49\u0e19\u0e2a\u0e38\u0e14\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23\u0e17\u0e35\u0e48\u0e40\u0e01\u0e35\u0e48\u0e22\u0e27\u0e02\u0e49\u0e2d\u0e07\u0e01\u0e31\u0e1a URL \u0e1a\u0e23\u0e34\u0e1a\u0e17 (\u0e40\u0e0a\u0e48\u0e19 http://server.net/sensorhub) +Path\ to\ a\ key\ store\ containing\ the\ certificate\ and\ keypair\ that\ this\ server\ will\ present\ to\ clients\ when\ accessed\ over\ HTTPS.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ "javax.net.ssl.keyStore"\ system\ property.\ This\ value\ can\ use\ variable\ expansion\ expressions\ of\ the\ form\ "$${name}"\ (for\ environment\ variables\ and\ system\ properties)\ or\ "$${file;/path/to/file}"\ (for\ secret\ file\ contents).=\u0e40\u0e2a\u0e49\u0e19\u0e17\u0e32\u0e07\u0e44\u0e1b\u0e22\u0e31\u0e07\u0e17\u0e35\u0e48\u0e40\u0e01\u0e47\u0e1a\u0e04\u0e35\u0e22\u0e4c\u0e17\u0e35\u0e48\u0e21\u0e35\u0e43\u0e1a\u0e23\u0e31\u0e1a\u0e23\u0e2d\u0e07\u0e41\u0e25\u0e30\u0e04\u0e39\u0e48\u0e04\u0e35\u0e22\u0e4c\u0e17\u0e35\u0e48\u0e40\u0e0b\u0e34\u0e23\u0e4c\u0e1f\u0e40\u0e27\u0e2d\u0e23\u0e4c\u0e19\u0e35\u0e49\u0e08\u0e30\u0e19\u0e33\u0e40\u0e2a\u0e19\u0e2d\u0e15\u0e48\u0e2d\u0e44\u0e04\u0e25\u0e40\u0e2d\u0e47\u0e19\u0e15\u0e4c\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e40\u0e02\u0e49\u0e32\u0e16\u0e36\u0e07\u0e1c\u0e48\u0e32\u0e19 HTTPS \u0e2b\u0e32\u0e01\u0e04\u0e48\u0e32\u0e19\u0e35\u0e49\u0e40\u0e27\u0e49\u0e19\u0e27\u0e48\u0e32\u0e07\u0e44\u0e27\u0e49 \u0e08\u0e30\u0e21\u0e35\u0e04\u0e48\u0e32\u0e40\u0e23\u0e34\u0e48\u0e21\u0e15\u0e49\u0e19\u0e40\u0e1b\u0e47\u0e19\u0e01\u0e32\u0e23\u0e43\u0e0a\u0e49\u0e04\u0e48\u0e32\u0e02\u0e2d\u0e07\u0e04\u0e38\u0e13\u0e2a\u0e21\u0e1a\u0e31\u0e15\u0e34\u0e23\u0e30\u0e1a\u0e1a "javax.net.ssl.keyStore" \u0e04\u0e48\u0e32\u0e19\u0e35\u0e49\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e43\u0e0a\u0e49\u0e19\u0e34\u0e1e\u0e08\u0e19\u0e4c\u0e01\u0e32\u0e23\u0e02\u0e22\u0e32\u0e22\u0e15\u0e31\u0e27\u0e41\u0e1b\u0e23\u0e43\u0e19\u0e23\u0e39\u0e1b\u0e41\u0e1a\u0e1a "$${name}" (\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e15\u0e31\u0e27\u0e41\u0e1b\u0e23\u0e2a\u0e20\u0e32\u0e1e\u0e41\u0e27\u0e14\u0e25\u0e49\u0e2d\u0e21\u0e41\u0e25\u0e30\u0e04\u0e38\u0e13\u0e2a\u0e21\u0e1a\u0e31\u0e15\u0e34\u0e02\u0e2d\u0e07\u0e23\u0e30\u0e1a\u0e1a) \u0e2b\u0e23\u0e37\u0e2d "$${file;/path/to/file}" (\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e40\u0e19\u0e37\u0e49\u0e2d\u0e2b\u0e32\u0e44\u0e1f\u0e25\u0e4c\u0e25\u0e31\u0e1a) +Path\ to\ database\ file=\u0e40\u0e2a\u0e49\u0e19\u0e17\u0e32\u0e07\u0e44\u0e1b\u0e22\u0e31\u0e07\u0e44\u0e1f\u0e25\u0e4c\u0e10\u0e32\u0e19\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25 +Path\ to\ external\ config\ file\ (in\ Jetty\ IOC\ XML\ format)=\u0e40\u0e2a\u0e49\u0e19\u0e17\u0e32\u0e07\u0e44\u0e1b\u0e22\u0e31\u0e07\u0e44\u0e1f\u0e25\u0e4c\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e04\u0e48\u0e32\u0e20\u0e32\u0e22\u0e19\u0e2d\u0e01 (\u0e43\u0e19\u0e23\u0e39\u0e1b\u0e41\u0e1a\u0e1a Jetty IOC XML) +Path\ to\ the\ TLS\ trust\ store\ that\ is\ used\ when\ client\ authentication\ is\ required.\ Ignored\ if\ client\ certificate\ authentication\ is\ not\ used.\ Certificates\ in\ this\ file\ designate\ the\ signing\ authorities\ for\ client\ certificates\ that\ will\ be\ trusted.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ "javax.net.ssl.trustStore"\ system\ property.\ This\ value\ can\ use\ variable\ expansion\ expressions\ of\ the\ form\ "$${name}"\ (for\ environment\ variables\ and\ system\ properties)\ or\ "$${file;/path/to/file}"\ (for\ secret\ file\ contents).=\u0e40\u0e2a\u0e49\u0e19\u0e17\u0e32\u0e07\u0e44\u0e1b\u0e22\u0e31\u0e07\u0e23\u0e49\u0e32\u0e19\u0e04\u0e49\u0e32\u0e17\u0e35\u0e48\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e16\u0e37\u0e2d\u0e44\u0e14\u0e49 TLS \u0e17\u0e35\u0e48\u0e43\u0e0a\u0e49\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e08\u0e33\u0e40\u0e1b\u0e47\u0e19\u0e15\u0e49\u0e2d\u0e07\u0e21\u0e35\u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e2a\u0e34\u0e17\u0e18\u0e34\u0e4c\u0e44\u0e04\u0e25\u0e40\u0e2d\u0e47\u0e19\u0e15\u0e4c \u0e25\u0e30\u0e40\u0e27\u0e49\u0e19\u0e2b\u0e32\u0e01\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\u0e43\u0e0a\u0e49\u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e2a\u0e34\u0e17\u0e18\u0e34\u0e4c\u0e43\u0e1a\u0e23\u0e31\u0e1a\u0e23\u0e2d\u0e07\u0e44\u0e04\u0e25\u0e40\u0e2d\u0e47\u0e19\u0e15\u0e4c \u0e43\u0e1a\u0e23\u0e31\u0e1a\u0e23\u0e2d\u0e07\u0e43\u0e19\u0e44\u0e1f\u0e25\u0e4c\u0e19\u0e35\u0e49\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e2b\u0e19\u0e48\u0e27\u0e22\u0e07\u0e32\u0e19\u0e17\u0e35\u0e48\u0e25\u0e07\u0e19\u0e32\u0e21\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e43\u0e1a\u0e23\u0e31\u0e1a\u0e23\u0e2d\u0e07\u0e44\u0e04\u0e25\u0e40\u0e2d\u0e47\u0e19\u0e15\u0e4c\u0e17\u0e35\u0e48\u0e08\u0e30\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e16\u0e37\u0e2d\u0e44\u0e14\u0e49 \u0e2b\u0e32\u0e01\u0e04\u0e48\u0e32\u0e19\u0e35\u0e49\u0e40\u0e27\u0e49\u0e19\u0e27\u0e48\u0e32\u0e07\u0e44\u0e27\u0e49 \u0e08\u0e30\u0e43\u0e0a\u0e49\u0e04\u0e48\u0e32\u0e04\u0e38\u0e13\u0e2a\u0e21\u0e1a\u0e31\u0e15\u0e34\u0e23\u0e30\u0e1a\u0e1a "javax.net.ssl.trustStore" \u0e40\u0e1b\u0e47\u0e19\u0e04\u0e48\u0e32\u0e40\u0e23\u0e34\u0e48\u0e21\u0e15\u0e49\u0e19 \u0e04\u0e48\u0e32\u0e19\u0e35\u0e49\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e43\u0e0a\u0e49\u0e19\u0e34\u0e1e\u0e08\u0e19\u0e4c\u0e01\u0e32\u0e23\u0e02\u0e22\u0e32\u0e22\u0e15\u0e31\u0e27\u0e41\u0e1b\u0e23\u0e43\u0e19\u0e23\u0e39\u0e1b\u0e41\u0e1a\u0e1a "$${name}" (\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e15\u0e31\u0e27\u0e41\u0e1b\u0e23\u0e2a\u0e20\u0e32\u0e1e\u0e41\u0e27\u0e14\u0e25\u0e49\u0e2d\u0e21\u0e41\u0e25\u0e30\u0e04\u0e38\u0e13\u0e2a\u0e21\u0e1a\u0e31\u0e15\u0e34\u0e02\u0e2d\u0e07\u0e23\u0e30\u0e1a\u0e1a) \u0e2b\u0e23\u0e37\u0e2d "$${file;/path/to/file}" (\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e40\u0e19\u0e37\u0e49\u0e2d\u0e2b\u0e32\u0e44\u0e1f\u0e25\u0e4c\u0e25\u0e31\u0e1a) +Port\ number\ to\ connect\ to\ on\ remote\ host\ (0\ to\ automatically\ select\ a\ port)=\u0e2b\u0e21\u0e32\u0e22\u0e40\u0e25\u0e02\u0e1e\u0e2d\u0e23\u0e4c\u0e15\u0e17\u0e35\u0e48\u0e08\u0e30\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e21\u0e15\u0e48\u0e2d\u0e1a\u0e19\u0e42\u0e2e\u0e2a\u0e15\u0e4c\u0e23\u0e30\u0e22\u0e30\u0e44\u0e01\u0e25 (0 \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e1e\u0e2d\u0e23\u0e4c\u0e15\u0e42\u0e14\u0e22\u0e2d\u0e31\u0e15\u0e42\u0e19\u0e21\u0e31\u0e15\u0e34) +SOS\ Endpoint=\u0e08\u0e38\u0e14\u0e2a\u0e34\u0e49\u0e19\u0e2a\u0e38\u0e14 SOS +SOS\ endpoint\ to\ fetch\ data\ from=\u0e08\u0e38\u0e14\u0e2a\u0e34\u0e49\u0e19\u0e2a\u0e38\u0e14 SOS \u0e17\u0e35\u0e48\u0e08\u0e30\u0e14\u0e36\u0e07\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e21\u0e32 +SOS\ endpoint\ where\ the\ requests\ are\ sent=\u0e15\u0e33\u0e41\u0e2b\u0e19\u0e48\u0e07\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25 SOS \u0e17\u0e35\u0e48\u0e21\u0e35\u0e01\u0e32\u0e23\u0e23\u0e49\u0e2d\u0e07\u0e02\u0e2d +SPS\ Endpoint=\u0e08\u0e38\u0e14\u0e2a\u0e34\u0e49\u0e19\u0e2a\u0e38\u0e14 SPS +SPS\ endpoint\ to\ send\ commands\ to=\u0e08\u0e38\u0e14\u0e2a\u0e34\u0e49\u0e19\u0e2a\u0e38\u0e14 SPS \u0e17\u0e35\u0e48\u0e08\u0e30\u0e2a\u0e48\u0e07\u0e04\u0e33\u0e2a\u0e31\u0e48\u0e07\u0e44\u0e1b +Security\ related\ options=\u0e15\u0e31\u0e27\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e17\u0e35\u0e48\u0e40\u0e01\u0e35\u0e48\u0e22\u0e27\u0e02\u0e49\u0e2d\u0e07\u0e01\u0e31\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e1b\u0e25\u0e2d\u0e14\u0e20\u0e31\u0e22 +Sensor\ UID=UID \u0e40\u0e0b\u0e47\u0e19\u0e40\u0e0b\u0e2d\u0e23\u0e4c +Set\ if\ WebSocket\ protocol\ should\ be\ used\ to\ get\ streaming\ data\ from\ SOS=\u0e15\u0e31\u0e49\u0e07\u0e04\u0e48\u0e32\u0e27\u0e48\u0e32\u0e04\u0e27\u0e23\u0e43\u0e0a\u0e49\u0e42\u0e1b\u0e23\u0e42\u0e15\u0e04\u0e2d\u0e25 WebSocket \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e23\u0e31\u0e1a\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e01\u0e32\u0e23\u0e2a\u0e15\u0e23\u0e35\u0e21\u0e08\u0e32\u0e01 SOS \u0e2b\u0e23\u0e37\u0e2d\u0e44\u0e21\u0e48 +Set\ if\ offering\ is\ enabled,\ unset\ if\ disabled=\u0e15\u0e31\u0e49\u0e07\u0e04\u0e48\u0e32\u0e27\u0e48\u0e32\u0e08\u0e30\u0e40\u0e1b\u0e34\u0e14\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e02\u0e49\u0e2d\u0e40\u0e2a\u0e19\u0e2d\u0e2b\u0e23\u0e37\u0e2d\u0e44\u0e21\u0e48 \u0e22\u0e01\u0e40\u0e25\u0e34\u0e01\u0e01\u0e32\u0e23\u0e15\u0e31\u0e49\u0e07\u0e04\u0e48\u0e32\u0e2b\u0e32\u0e01\u0e1b\u0e34\u0e14\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19 +Set\ if\ websockets\ protocol\ should\ be\ used\ to\ send\ commands\ to\ SPS=\u0e15\u0e31\u0e49\u0e07\u0e04\u0e48\u0e32\u0e27\u0e48\u0e32\u0e04\u0e27\u0e23\u0e43\u0e0a\u0e49\u0e42\u0e1b\u0e23\u0e42\u0e15\u0e04\u0e2d\u0e25 websockets \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e2a\u0e48\u0e07\u0e04\u0e33\u0e2a\u0e31\u0e48\u0e07\u0e44\u0e1b\u0e22\u0e31\u0e07 SPS \u0e2b\u0e23\u0e37\u0e2d\u0e44\u0e21\u0e48 +Set\ to\ compact\ the\ database\ file\ when\ the\ database\ module\ is\ stopped\ or\ restarted=\u0e15\u0e31\u0e49\u0e07\u0e04\u0e48\u0e32\u0e43\u0e2b\u0e49\u0e01\u0e23\u0e30\u0e0a\u0e31\u0e1a\u0e44\u0e1f\u0e25\u0e4c\u0e10\u0e32\u0e19\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e42\u0e21\u0e14\u0e39\u0e25\u0e10\u0e32\u0e19\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e2b\u0e22\u0e38\u0e14\u0e2b\u0e23\u0e37\u0e2d\u0e23\u0e35\u0e2a\u0e15\u0e32\u0e23\u0e4c\u0e17 +Set\ to\ compress\ underlying\ file\ storage=\u0e15\u0e31\u0e49\u0e07\u0e04\u0e48\u0e32\u0e43\u0e2b\u0e49\u0e1a\u0e35\u0e1a\u0e2d\u0e31\u0e14\u0e17\u0e35\u0e48\u0e40\u0e01\u0e47\u0e1a\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e44\u0e1f\u0e25\u0e4c\u0e17\u0e35\u0e48\u0e0b\u0e48\u0e2d\u0e19\u0e2d\u0e22\u0e39\u0e48 +Set\ to\ display\ MVStore\ debug\ info\ when\ database\ is\ closed\ (only\ if\ DEBUG\ log\ is\ also\ enabled)=\u0e15\u0e31\u0e49\u0e07\u0e04\u0e48\u0e32\u0e43\u0e2b\u0e49\u0e41\u0e2a\u0e14\u0e07\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e01\u0e32\u0e23\u0e14\u0e35\u0e1a\u0e31\u0e01 MVStore \u0e40\u0e21\u0e37\u0e48\u0e2d\u0e10\u0e32\u0e19\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e16\u0e39\u0e01\u0e1b\u0e34\u0e14 (\u0e40\u0e09\u0e1e\u0e32\u0e30\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e40\u0e1b\u0e34\u0e14\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01 DEBUG \u0e14\u0e49\u0e27\u0e22) +Set\ to\ enable\ spatial\ indexing\ of\ individual\ observations\ sampling\ locations\ (when\ provided)=\u0e15\u0e31\u0e49\u0e07\u0e04\u0e48\u0e32\u0e43\u0e2b\u0e49\u0e40\u0e1b\u0e34\u0e14\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e01\u0e32\u0e23\u0e08\u0e31\u0e14\u0e17\u0e33\u0e14\u0e31\u0e0a\u0e19\u0e35\u0e40\u0e0a\u0e34\u0e07\u0e1e\u0e37\u0e49\u0e19\u0e17\u0e35\u0e48\u0e02\u0e2d\u0e07\u0e15\u0e33\u0e41\u0e2b\u0e19\u0e48\u0e07\u0e2a\u0e38\u0e48\u0e21\u0e15\u0e31\u0e27\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e01\u0e32\u0e23\u0e2a\u0e31\u0e07\u0e40\u0e01\u0e15\u0e41\u0e15\u0e48\u0e25\u0e30\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23 (\u0e2b\u0e32\u0e01\u0e21\u0e35\u0e43\u0e2b\u0e49) +Set\ to\ open\ the\ database\ as\ read-only=\u0e15\u0e31\u0e49\u0e07\u0e04\u0e48\u0e32\u0e43\u0e2b\u0e49\u0e40\u0e1b\u0e34\u0e14\u0e10\u0e32\u0e19\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e40\u0e1b\u0e47\u0e19\u0e41\u0e1a\u0e1a\u0e2d\u0e48\u0e32\u0e19\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e40\u0e14\u0e35\u0e22\u0e27 +Set\ to\ true\ to\ enable\ transactional\ operation\ support=\u0e15\u0e31\u0e49\u0e07\u0e04\u0e48\u0e32\u0e40\u0e1b\u0e47\u0e19\u0e08\u0e23\u0e34\u0e07\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e40\u0e1b\u0e34\u0e14\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e01\u0e32\u0e23\u0e2a\u0e19\u0e31\u0e1a\u0e2a\u0e19\u0e38\u0e19\u0e01\u0e32\u0e23\u0e14\u0e33\u0e40\u0e19\u0e34\u0e19\u0e01\u0e32\u0e23\u0e17\u0e32\u0e07\u0e18\u0e38\u0e23\u0e01\u0e23\u0e23\u0e21 +Size\ of\ the\ auto-commit\ write\ buffer,\ in\ KB=\u0e02\u0e19\u0e32\u0e14\u0e02\u0e2d\u0e07\u0e1a\u0e31\u0e1f\u0e40\u0e1f\u0e2d\u0e23\u0e4c\u0e01\u0e32\u0e23\u0e40\u0e02\u0e35\u0e22\u0e19\u0e04\u0e2d\u0e21\u0e21\u0e34\u0e15\u0e2d\u0e31\u0e15\u0e42\u0e19\u0e21\u0e31\u0e15\u0e34\u0e43\u0e19\u0e2b\u0e19\u0e48\u0e27\u0e22 KB +TCP\ port\ where\ server\ will\ listen\ for\ secure\ HTTP\ (HTTPS)\ connections\ (use\ 0\ to\ disable\ HTTPS).=\u0e1e\u0e2d\u0e23\u0e4c\u0e15 TCP \u0e17\u0e35\u0e48\u0e40\u0e0b\u0e34\u0e23\u0e4c\u0e1f\u0e40\u0e27\u0e2d\u0e23\u0e4c\u0e08\u0e30\u0e23\u0e31\u0e1a\u0e1f\u0e31\u0e07\u0e01\u0e32\u0e23\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e21\u0e15\u0e48\u0e2d HTTP \u0e17\u0e35\u0e48\u0e1b\u0e25\u0e2d\u0e14\u0e20\u0e31\u0e22 (HTTPS) (\u0e43\u0e0a\u0e49 0 \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e1b\u0e34\u0e14\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19 HTTPS) +TCP\ port\ where\ server\ will\ listen\ for\ unsecure\ HTTP\ connections\ (use\ 0\ to\ disable\ HTTP).=\u0e1e\u0e2d\u0e23\u0e4c\u0e15 TCP \u0e17\u0e35\u0e48\u0e40\u0e0b\u0e34\u0e23\u0e4c\u0e1f\u0e40\u0e27\u0e2d\u0e23\u0e4c\u0e08\u0e30\u0e23\u0e31\u0e1a\u0e1f\u0e31\u0e07\u0e01\u0e32\u0e23\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e21\u0e15\u0e48\u0e2d HTTP \u0e17\u0e35\u0e48\u0e44\u0e21\u0e48\u0e1b\u0e25\u0e2d\u0e14\u0e20\u0e31\u0e22 (\u0e43\u0e0a\u0e49 0 \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e1b\u0e34\u0e14\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19 HTTP) +Time-out\ after\ which\ real-time\ requests\ are\ disabled\ if\ no\ more\ measurements\ are\ received\ (in\ seconds).\ Real-time\ is\ reactivated\ as\ soon\ as\ new\ records\ start\ being\ received\ again=\u0e01\u0e32\u0e23\u0e2b\u0e21\u0e14\u0e40\u0e27\u0e25\u0e32\u0e2b\u0e25\u0e31\u0e07\u0e08\u0e32\u0e01\u0e17\u0e35\u0e48\u0e04\u0e33\u0e02\u0e2d\u0e41\u0e1a\u0e1a\u0e40\u0e23\u0e35\u0e22\u0e25\u0e44\u0e17\u0e21\u0e4c\u0e08\u0e30\u0e16\u0e39\u0e01\u0e1b\u0e34\u0e14\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e2b\u0e32\u0e01\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e27\u0e31\u0e14\u0e2d\u0e35\u0e01\u0e15\u0e48\u0e2d\u0e44\u0e1b (\u0e40\u0e1b\u0e47\u0e19\u0e27\u0e34\u0e19\u0e32\u0e17\u0e35) \u0e40\u0e23\u0e35\u0e22\u0e25\u0e44\u0e17\u0e21\u0e4c\u0e08\u0e30\u0e16\u0e39\u0e01\u0e40\u0e1b\u0e34\u0e14\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e2d\u0e35\u0e01\u0e04\u0e23\u0e31\u0e49\u0e07\u0e17\u0e31\u0e19\u0e17\u0e35\u0e17\u0e35\u0e48\u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01\u0e43\u0e2b\u0e21\u0e48\u0e2d\u0e35\u0e01\u0e04\u0e23\u0e31\u0e49\u0e07 +Time-out\ period\ after\ which\ a\ template\ ID\ reserved\ using\ InsertResultTemplate\ will\ expire\ if\ not\ used\ in\ InsertResult\ requests\ (in\ seconds)=\u0e23\u0e30\u0e22\u0e30\u0e40\u0e27\u0e25\u0e32\u0e2b\u0e21\u0e14\u0e40\u0e27\u0e25\u0e32\u0e2b\u0e25\u0e31\u0e07\u0e08\u0e32\u0e01\u0e17\u0e35\u0e48 ID \u0e40\u0e17\u0e21\u0e40\u0e1e\u0e25\u0e15\u0e17\u0e35\u0e48\u0e08\u0e2d\u0e07\u0e44\u0e27\u0e49\u0e42\u0e14\u0e22\u0e43\u0e0a\u0e49 InsertResultTemplate \u0e08\u0e30\u0e2b\u0e21\u0e14\u0e2d\u0e32\u0e22\u0e38\u0e2b\u0e32\u0e01\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\u0e43\u0e0a\u0e49\u0e43\u0e19\u0e04\u0e33\u0e02\u0e2d InsertResult (\u0e40\u0e1b\u0e47\u0e19\u0e27\u0e34\u0e19\u0e32\u0e17\u0e35) +Timeout\ after\ which\ data\ is\ released\ to\ the\ caller\ if\ at\ least\ one\ byte\ was\ received\ (in\ ms)=\u0e2b\u0e21\u0e14\u0e40\u0e27\u0e25\u0e32\u0e2b\u0e25\u0e31\u0e07\u0e08\u0e32\u0e01\u0e17\u0e35\u0e48\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e16\u0e39\u0e01\u0e40\u0e1c\u0e22\u0e41\u0e1e\u0e23\u0e48\u0e44\u0e1b\u0e22\u0e31\u0e07\u0e1c\u0e39\u0e49\u0e40\u0e23\u0e35\u0e22\u0e01\u0e2b\u0e32\u0e01\u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e19\u0e49\u0e2d\u0e22\u0e2b\u0e19\u0e36\u0e48\u0e07\u0e44\u0e1a\u0e15\u0e4c (\u0e40\u0e1b\u0e47\u0e19\u0e21\u0e34\u0e25\u0e25\u0e34\u0e27\u0e34\u0e19\u0e32\u0e17\u0e35) +URI\ Prefix\ Map=\u0e41\u0e1c\u0e19\u0e17\u0e35\u0e48\u0e04\u0e33\u0e19\u0e33\u0e2b\u0e19\u0e49\u0e32 URI +Unique\ ID\ (full\ URN\ or\ only\ suffix)\ to\ use\ for\ the\ sensor\ system\ or\ 'auto'\ to\ use\ the\ UUID\ randomly\ generated\ the\ first\ time\ the\ module\ is\ initialized=ID \u0e40\u0e09\u0e1e\u0e32\u0e30 (URN \u0e41\u0e1a\u0e1a\u0e40\u0e15\u0e47\u0e21\u0e2b\u0e23\u0e37\u0e2d\u0e2a\u0e48\u0e27\u0e19\u0e15\u0e48\u0e2d\u0e17\u0e49\u0e32\u0e22\u0e40\u0e17\u0e48\u0e32\u0e19\u0e31\u0e49\u0e19) \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e43\u0e0a\u0e49\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e23\u0e30\u0e1a\u0e1a\u0e40\u0e0b\u0e47\u0e19\u0e40\u0e0b\u0e2d\u0e23\u0e4c\u0e2b\u0e23\u0e37\u0e2d ''\u0e2d\u0e31\u0e15\u0e42\u0e19\u0e21\u0e31\u0e15\u0e34'' \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e43\u0e0a\u0e49 UUID \u0e17\u0e35\u0e48\u0e2a\u0e23\u0e49\u0e32\u0e07\u0e02\u0e36\u0e49\u0e19\u0e41\u0e1a\u0e1a\u0e2a\u0e38\u0e48\u0e21\u0e43\u0e19\u0e04\u0e23\u0e31\u0e49\u0e07\u0e41\u0e23\u0e01\u0e17\u0e35\u0e48\u0e40\u0e23\u0e34\u0e48\u0e21\u0e15\u0e49\u0e19\u0e42\u0e21\u0e14\u0e39\u0e25 +Unique\ ID\ of\ a\ system\ that\ this\ configuration\ applies\ to.\nCan\ include\ a\ trailing\ wildcard\ '*'\ to\ match\ several\ systems\ at\ once.=ID \u0e40\u0e09\u0e1e\u0e32\u0e30\u0e02\u0e2d\u0e07\u0e23\u0e30\u0e1a\u0e1a\u0e17\u0e35\u0e48\u0e43\u0e0a\u0e49\u0e01\u0e32\u0e23\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e04\u0e48\u0e32\u0e19\u0e35\u0e49\n\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e43\u0e2a\u0e48\u0e44\u0e27\u0e14\u0e4c\u0e01\u0e32\u0e23\u0e4c\u0e14\u0e15\u0e48\u0e2d\u0e17\u0e49\u0e32\u0e22 ''*'' \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e08\u0e31\u0e1a\u0e04\u0e39\u0e48\u0e2b\u0e25\u0e32\u0e22\u0e23\u0e30\u0e1a\u0e1a\u0e1e\u0e23\u0e49\u0e2d\u0e21\u0e01\u0e31\u0e19\u0e44\u0e14\u0e49 +Unique\ ID\ of\ sensor\ to\ connect\ to\ on\ SOS\ and\ SPS\ servers=ID \u0e40\u0e09\u0e1e\u0e32\u0e30\u0e02\u0e2d\u0e07\u0e40\u0e0b\u0e47\u0e19\u0e40\u0e0b\u0e2d\u0e23\u0e4c\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e21\u0e15\u0e48\u0e2d\u0e01\u0e31\u0e1a\u0e40\u0e0b\u0e34\u0e23\u0e4c\u0e1f\u0e40\u0e27\u0e2d\u0e23\u0e4c SOS \u0e41\u0e25\u0e30 SPS +Unique\ ID\ of\ system\ that\ this\ configuration\ applies\ to.\nCan\ include\ a\ trailing\ wildcard\ '*'\ to\ match\ several\ systems\ at\ once.=ID \u0e40\u0e09\u0e1e\u0e32\u0e30\u0e02\u0e2d\u0e07\u0e23\u0e30\u0e1a\u0e1a\u0e17\u0e35\u0e48\u0e43\u0e0a\u0e49\u0e01\u0e32\u0e23\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e04\u0e48\u0e32\u0e19\u0e35\u0e49\n\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e43\u0e2a\u0e48\u0e44\u0e27\u0e14\u0e4c\u0e01\u0e32\u0e23\u0e4c\u0e14\u0e15\u0e48\u0e2d\u0e17\u0e49\u0e32\u0e22 ''*'' \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e08\u0e31\u0e1a\u0e04\u0e39\u0e48\u0e2b\u0e25\u0e32\u0e22\u0e23\u0e30\u0e1a\u0e1a\u0e1e\u0e23\u0e49\u0e2d\u0e21\u0e01\u0e31\u0e19\u0e44\u0e14\u0e49 +Use\ WebSockets\ for\ SOS=\u0e43\u0e0a\u0e49 WebSockets \u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a SOS +Use\ WebSockets\ for\ SPS=\u0e43\u0e0a\u0e49 WebSockets \u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a SPS + +Node\ ID=\u0e23\u0e2b\u0e31\u0e2a\u0e42\u0e2b\u0e19\u0e14 +Stats\ Frequency\ (min)=\u0e04\u0e27\u0e32\u0e21\u0e16\u0e35\u0e48\u0e2a\u0e16\u0e34\u0e15\u0e34 (\u0e19\u0e32\u0e17\u0e35) +Database\ URL=URL \u0e10\u0e32\u0e19\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25 +Database\ Name=\u0e0a\u0e37\u0e48\u0e2d\u0e10\u0e32\u0e19\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25 +ID\ Generator=\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e01\u0e33\u0e40\u0e19\u0e34\u0e14 ID +Database\ Number=\u0e2b\u0e21\u0e32\u0e22\u0e40\u0e25\u0e02\u0e10\u0e32\u0e19\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25 +Remote\ Host=\u0e42\u0e2e\u0e2a\u0e15\u0e4c\u0e23\u0e30\u0e22\u0e30\u0e44\u0e01\u0e25 +Remote\ Port=\u0e1e\u0e2d\u0e23\u0e4c\u0e15\u0e23\u0e30\u0e22\u0e30\u0e44\u0e01\u0e25 +Lane\ Width\ (m)=\u0e04\u0e27\u0e32\u0e21\u0e01\u0e27\u0e49\u0e32\u0e07\u0e02\u0e2d\u0e07\u0e40\u0e25\u0e19 (\u0e21.) +Enable\ EML\ Analysis=\u0e40\u0e1b\u0e34\u0e14\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e01\u0e32\u0e23\u0e27\u0e34\u0e40\u0e04\u0e23\u0e32\u0e30\u0e2b\u0e4c EML +Is\ Collimated=\u0e40\u0e1b\u0e47\u0e19\u0e41\u0e1a\u0e1a\u0e04\u0e2d\u0e25\u0e25\u0e34\u0e40\u0e21\u0e15 +Stream\ Path=\u0e40\u0e2a\u0e49\u0e19\u0e17\u0e32\u0e07\u0e2a\u0e15\u0e23\u0e35\u0e21 +Lane\ Options\ Config=\u0e01\u0e32\u0e23\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e04\u0e48\u0e32\u0e15\u0e31\u0e27\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e0a\u0e48\u0e2d\u0e07\u0e17\u0e32\u0e07 diff --git a/sensorhub-webui-core/src/main/resources/org/sensorhub/ui/i18n/messages_tr.properties b/sensorhub-webui-core/src/main/resources/org/sensorhub/ui/i18n/messages_tr.properties new file mode 100644 index 0000000000..ca78417099 --- /dev/null +++ b/sensorhub-webui-core/src/main/resources/org/sensorhub/ui/i18n/messages_tr.properties @@ -0,0 +1,543 @@ +app.title=OpenSensorHub +tab.sensors=Sens\u00f6rler +tab.databases=Veritabanlar\u0131 +tab.processing=\u0130\u015fleme +tab.services=Servisler +tab.clients=\u0130stemciler +tab.network=A\u011f +tab.security=G\u00fcvenlik +action.shutdown=Kapat +action.logout=\u00c7\u0131k\u0131\u015f +action.save=Kaydet +action.addModule=Yeni Mod\u00fcl Ekle +action.addSubmodule=Alt Mod\u00fcl Ekle +action.removeModule=Mod\u00fcl\u00fc Kald\u0131r +action.removeSubmodule=Alt Mod\u00fcl\u00fc Kald\u0131r +action.start=Ba\u015flat +action.stop=Durdur +action.restart=Yeniden Ba\u015flat +action.forceInit=Ba\u015flatmaya Zorla +action.selectAll=T\u00fcm Mod\u00fclleri Se\u00e7 +action.deselectAll=T\u00fcm Se\u00e7imleri Kald\u0131r +dialog.shutdown.title=Kapatma Ba\u015flat\u0131ld\u0131... +dialog.shutdown.message=Aray\u00fcz yan\u0131t vermeyi durduracak +dialog.shutdown.confirm=Sens\u00f6r merkezini kapatmak istedi\u011finizden emin misiniz? +dialog.logout.confirm=\u00c7\u0131k\u0131\u015f yapmak istedi\u011finizden emin misiniz? +dialog.save.confirm=Konfig\u00fcrasyonu kaydetmek (ve \u00f6ncekini \u00fczerine yazmak) istedi\u011finizden emin misiniz? +msg.configSaved=SensorHub Konfig\u00fcrasyonu Kaydedildi +msg.configSaveError=Konfig\u00fcrasyon kaydedilemiyor +dialog.remove.confirm={0} \u00f6\u011fesini kald\u0131rmak istedi\u011finizden emin misiniz?
T\u00fcm ayarlar kaybolacak. +msg.removeError={0} kald\u0131r\u0131lamad\u0131 +msg.startError={0} ba\u015flat\u0131lamad\u0131 +msg.stopError={0} durdurulamad\u0131 +msg.restartError={0} yeniden ba\u015flat\u0131lamad\u0131 +msg.reinitError={0} yeniden ba\u015flat\u0131lamad\u0131 +msg.loadError=Mod\u00fcl y\u00fcklenemiyor +msg.addSubmoduleError=Alt mod\u00fcl eklenemiyor +about.title=OpenSensorHub Hakk\u0131nda +about.desc=Ak\u0131ll\u0131 sens\u00f6r a\u011flar\u0131 ve Nesnelerin \u0130nterneti (IoT) olu\u015fturmak i\u00e7in bir yaz\u0131l\u0131m platformu +about.license=Mozilla Kamu Lisans\u0131 v2.0 alt\u0131nda lisanslanm\u0131\u015ft\u0131r +about.version=S\u00fcr\u00fcm: +about.build=Yap\u0131 Numaras\u0131: +about.deployment=Da\u011f\u0131t\u0131m Ad\u0131: +tooltip.shutdown=SensorHub''\u0131 Kapat +tooltip.logout=OSH d\u00fc\u011f\u00fcm\u00fcnden \u00e7\u0131k\u0131\u015f yap +tooltip.save=SensorHub Konfig\u00fcrasyonunu Kaydet +dialog.start.confirm={0} mod\u00fcl\u00fcn\u00fc ba\u015flatmak istedi\u011finizden emin misiniz? +dialog.stop.confirm={0} mod\u00fcl\u00fcn\u00fc durdurmak istedi\u011finizden emin misiniz? +dialog.restart.confirm={0} mod\u00fcl\u00fcn\u00fc yeniden ba\u015flatmak istedi\u011finizden emin misiniz? +dialog.reinit.confirm={0} mod\u00fcl\u00fcn\u00fc yeniden ba\u015flatmaya zorlamak istedi\u011finizden emin misiniz? +backgroundUpdate=Arka Plan G\u00fcncellemesi +sigmaThreshold=Sigma E\u015fi\u011fi +nuclideIdentification=N\u00fcklid Tan\u0131mlama +tamperAlarm=Kurcalama Alarm\u0131 +occupancySensor=Doluluk Sens\u00f6r\u00fc +stateOfHealth=Sa\u011fl\u0131k Durumu +soh=SOH +1ScanThisQrCodeWithYourAuthenticatorApp=1. Kimlik do\u011frulay\u0131c\u0131 uygulaman\u0131zla bu QR Kodunu taray\u0131n: +2EnterThe6digitCodeGeneratedByTheApp=2. Uygulaman\u0131n olu\u015fturdu\u011fu 6 haneli kodu girin: +orEnterThisSecretKeyManually=Veya bu Gizli Anahtar\u0131 manuel olarak girin: +loadingBundlesInformation=Paket Bilgileri Y\u00fckleniyor... +loadingPackageInformation=Paket Bilgileri Y\u00fckleniyor... +arrayComponentNotSupported=Dizi bile\u015feni desteklenmiyor +twofactorAuthentication=\u0130ki Fakt\u00f6rl\u00fc Kimlik Do\u011frulama +installMorePackages=Daha Fazla Paket Y\u00fckleyin... +errorGeneratingQrCode=QR Kodu olu\u015fturulurken hata olu\u015ftu +installMoreModules=Daha Fazla Mod\u00fcl Y\u00fckleyin... +detailedInstructions=Ayr\u0131nt\u0131l\u0131 Talimatlar +availableNetworks=Mevcut A\u011flar +processParameters=Proses Parametreleri +verifyAndEnable=Do\u011frula ve Etkinle\u015ftir +dataSourceInfo=Veri Kayna\u011f\u0131 Bilgisi +detectedDevices=Alg\u0131lanan Cihazlar +installSelected=Se\u00e7ileni Y\u00fckle +databaseContent=Veritaban\u0131 \u0130\u00e7eri\u011fi +itemsPerPage=Sayfa ba\u015f\u0131na \u00f6\u011fe say\u0131s\u0131: +commandInputs=Komut Giri\u015fleri +processInputs=Proses Giri\u015fleri +providerClass=Sa\u011flay\u0131c\u0131 S\u0131n\u0131f\u0131 +processName=\u0130\u015flem Ad\u0131: +configuration=Yap\u0131land\u0131rma +applyChanges=De\u011fi\u015fiklikleri Uygula +sendCommand=Komut G\u00f6nder +useAddress=Adresi Kullan +selectNone=Yok''u se\u00e7in +timeRange=Zaman Aral\u0131\u011f\u0131: +permissions=\u0130zinler +startScan=Taramay\u0131 Ba\u015flat +noReadme=BEN\u0130OKU yok +stopScan=Taramay\u0131 Durdur +reset2fa=2FA''y\u0131 s\u0131f\u0131rla +previous=\u00d6ncesi +useName=Ad\u0131 Kullan +outputs=\u00c7\u0131k\u0131\u015flar +refresh=Yenile +modify=De\u011fi\u015ftir +cancel=\u0130ptal etmek +logout=Oturumu kapat +remove=Kald\u0131rmak +verify=Do\u011frulamak +first=Birinci +login=Giri\u015f yapmak +last=Son +view=G\u00d6R\u00dc\u015e +next=Sonraki +stop=Durmak +add=Eklemek +ui.empty=< +ok=TAMAM +1ScanThisQrCodeWithYourAuthenticatorApp1=1. Kimlik do\u011frulay\u0131c\u0131 uygulaman\u0131zla bu QR Kodunu taray\u0131n: +2EnterThe6digitCodeGeneratedByTheApp1=2. Uygulaman\u0131n olu\u015fturdu\u011fu 6 haneli kodu girin: +orEnterThisSecretKeyManually1=Veya bu Gizli Anahtar\u0131 manuel olarak girin: +loadingPackageInformation1=Paket Bilgileri Y\u00fckleniyor... +loadingBundlesInformation1=Paket Bilgileri Y\u00fckleniyor... +arrayComponentNotSupported1=Dizi bile\u015feni desteklenmiyor +twofactorAuthentication1=\u0130ki Fakt\u00f6rl\u00fc Kimlik Do\u011frulama +errorGeneratingQrCode1=QR Kodu olu\u015fturulurken hata olu\u015ftu +installMorePackages1=Daha Fazla Paket Y\u00fckleyin... +installMoreModules1=Daha Fazla Mod\u00fcl Y\u00fckleyin... +detailedInstructions1=Ayr\u0131nt\u0131l\u0131 Talimatlar +processParameters1=Proses Parametreleri +availableNetworks1=Mevcut A\u011flar +verifyAndEnable1=Do\u011frula ve Etkinle\u015ftir +databaseContent1=Veritaban\u0131 \u0130\u00e7eri\u011fi +installSelected1=Se\u00e7ileni Y\u00fckle +dataSourceInfo1=Veri Kayna\u011f\u0131 Bilgisi +detectedDevices1=Alg\u0131lanan Cihazlar +itemsPerPage1=Sayfa ba\u015f\u0131na \u00f6\u011fe say\u0131s\u0131: +processInputs1=Proses Giri\u015fleri +commandInputs1=Komut Giri\u015fleri +providerClass1=Sa\u011flay\u0131c\u0131 S\u0131n\u0131f\u0131 +configuration1=Yap\u0131land\u0131rma +processName1=\u0130\u015flem Ad\u0131: +applyChanges1=De\u011fi\u015fiklikleri Uygula +sendCommand1=Komut G\u00f6nder +timeRange1=Zaman Aral\u0131\u011f\u0131: +useAddress1=Adresi Kullan +permissions1=\u0130zinler +selectNone1=Yok''u se\u00e7in +startScan1=Taramay\u0131 Ba\u015flat +noReadme1=BEN\u0130OKU yok +reset2fa1=2FA''y\u0131 s\u0131f\u0131rla +stopScan1=Taramay\u0131 Durdur +useName1=Ad\u0131 Kullan +previous1=\u00d6ncesi +refresh1=Yenile +outputs1=\u00c7\u0131k\u0131\u015flar +cancel1=\u0130ptal etmek +logout1=Oturumu kapat +modify1=De\u011fi\u015ftir +remove1=Kald\u0131rmak +verify1=Do\u011frulamak +first1=Birinci +login1=Giri\u015f yapmak +view1=G\u00d6R\u00dc\u015e +stop1=Durmak +next1=Sonraki +last1=Son +add1=Eklemek +last2=>> +first2=<< +ok1=TAMAM +next2=> +previous2=< + +pleaseEnterAUserIDFirst1=L\u00fctfen \u00f6nce bir Kullan\u0131c\u0131 Kimli\u011fi girin +reset2FA1=2FA''y\u0131 s\u0131f\u0131rla +enable2FA1=2FA''y\u0131 etkinle\u015ftir +twoFAEnabledSuccessfully1=2FA Ba\u015far\u0131yla Etkinle\u015ftirildi +invalidCode1=Ge\u00e7ersiz Kod +allowedAndDeniedPermissionsForUsersWithThisRole1=Bu role sahip kullan\u0131c\u0131lar i\u00e7in izin verilen ve reddedilen izinler +manualEntry1=Manuel Giri\u015f +toggleAutoRefreshDataOncePerSecond1=Verilerin otomatik olarak yenilenmesini saniyede bir kez de\u011fi\u015ftir +lookupSystem1=Arama Sistemi +lookupModule1=Arama Mod\u00fcl\u00fc +lookupAddress1=Arama Adresi +showPassword1=\u015eifreyi G\u00f6ster +showHistogram1=Histogram\u0131 G\u00f6ster +hideHistogram1=Histogram\u0131 Gizle +reloadDataFromDatabase1=Veritaban\u0131ndan verileri yeniden y\u00fckle +fois1=FOI''ler +username1=Kullan\u0131c\u0131 ad\u0131 +password1=\u015eifre +loginFailed1=Giri\u015f ba\u015far\u0131s\u0131z oldu +invalidUsernameOrPassword1=Ge\u00e7ersiz kullan\u0131c\u0131 ad\u0131 veya \u015fifre +verificationCode1=Do\u011frulama Kodu +verificationFailed1=Do\u011frulama Ba\u015far\u0131s\u0131z +datasource1=Veri kayna\u011f\u0131 +process1=\u0130\u015flem +logoutFromOshNode1=OSH d\u00fc\u011f\u00fcm\u00fcnden \u00e7\u0131k\u0131\u015f yap\u0131n +setParameter1=Parametreyi Ayarla +setupTwoFactorAuthentication1=\u0130ki Fakt\u00f6rl\u00fc Kimlik Do\u011frulamay\u0131 Kurun + +action.new_item=Yeni {0} +Lane\ System=\u015eerit Sistemi +Module\ Class=Mod\u00fcl S\u0131n\u0131f\u0131 +Module\ Name=Mod\u00fcl Ad\u0131 +Module\ ID=Mod\u00fcl Kimli\u011fi +Description=Tan\u0131m +SensorML\ URL=Sens\u00f6rML URL''si +UniqueID=Benzersiz Kimlik +Last\ Updated=Son G\u00fcncelleme +Auto\ Start=Otomatik Ba\u015flatma +Delete\ Data\ on\ Lane\ Removal=\u015eerit Kald\u0131rma S\u0131ras\u0131nda Verileri Sil +Latitude=Enlem +Longitude=Boylam +Altitude=Rak\u0131m +Initial\ RPM\ Config=\u0130lk RPM Yap\u0131land\u0131rmas\u0131 +Initial\ Camera\ Config=\u0130lk Kamera Yap\u0131land\u0131rmas\u0131 +Lane\ Options\ Config=\u015eerit Se\u00e7enekleri Yap\u0131land\u0131rmas\u0131 +tab.general=Genel +tab.readme=BEN\u0130OKU +Fixed\ Location=Sabit Konum +Fixed\ Orientation=Sabit Y\u00f6nlendirme +# Auto-extracted DisplayInfo labels and descriptions +URL\ of\ SensorML\ file\ providing\ the\ base\ description\ of\ the\ sensor=Sens\u00f6r\u00fcn temel a\u00e7\u0131klamas\u0131n\u0131 sa\u011flayan SensorML dosyas\u0131n\u0131n URL''si +Time\ at\ which\ the\ SensorML\ description\ was\ last\ updated=SensorML a\u00e7\u0131klamas\u0131n\u0131n en son g\u00fcncellendi\u011fi zaman +Geodetic\ latitude,\ in\ degrees=Jeodezik enlem, derece cinsinden +Longitude,\ in\ degrees=Boylam, derece cinsinden +Height\ above\ ellipsoid,\ in\ meters=Elipsoidin \u00fczerindeki y\u00fckseklik, metre cinsinden +X\ coordinate,\ in\ meters=X koordinat\u0131, metre cinsinden +Y\ coordinate,\ in\ meters=Y koordinat\u0131, metre cinsinden +Z\ coordinate,\ in\ meters=Z koordinat\u0131, metre cinsinden +Pitch\ angle\ about\ Y\ axis,\ in\ degrees=Derece olarak Y ekseni etraf\u0131ndaki e\u011fim a\u00e7\u0131s\u0131 +Roll\ angle\ about\ X\ axis,\ in\ degrees=X ekseni etraf\u0131nda derece cinsinden d\u00f6n\u00fc\u015f a\u00e7\u0131s\u0131 +Location\ in\ EPSG\:4979\ coordinate\ reference\ frame=EPSG:4979 koordinat referans \u00e7er\u00e7evesindeki konum +Database\ Number=Veritaban\u0131 Numaras\u0131 +Numerical\ identifier\ of\ the\ database.\ Each\ database\ that\ should\ be\ exposed\ via\ the\ federated\ database\ API\ must\ have\ a\ unique\ number\ on\ the\ sensor\ hub.\ If\ visibility\ through\ the\ federated\ database\ is\ not\ desired,\ it\ can\ be\ omitted.=Veritaban\u0131n\u0131n say\u0131sal tan\u0131mlay\u0131c\u0131s\u0131. Birle\u015fik veritaban\u0131 API''si arac\u0131l\u0131\u011f\u0131yla kullan\u0131ma sunulmas\u0131 gereken her veritaban\u0131n\u0131n sens\u00f6r hub''\u0131nda benzersiz bir numaras\u0131 olmal\u0131d\u0131r. Birle\u015fik veritaban\u0131 \u00fczerinden g\u00f6r\u00fcn\u00fcrl\u00fck istenmiyorsa, bu atlanabilir. +Enables\ fine-grained\ permission-based\ access\ control\ for\ this\ module=Bu mod\u00fcl i\u00e7in ayr\u0131nt\u0131l\u0131 izin tabanl\u0131 eri\u015fim kontrol\u00fcn\u00fc etkinle\u015ftirir +Require\ Authentication=Kimlik Do\u011frulamas\u0131 Gerektir +Set\ to\ require\ remote\ users\ to\ be\ authentified\ before\ they\ can\ use\ this\ service=Uzak kullan\u0131c\u0131lar\u0131n bu hizmeti kullanmadan \u00f6nce kimlik do\u011frulamas\u0131n\u0131 gerektirecek \u015fekilde ayarlay\u0131n +Endpoint=U\u00e7 nokta +Unique\ local\ ID\ of\ the\ module=Mod\u00fcl\u00fcn benzersiz yerel kimli\u011fi +User\ description\ for\ the\ module=Mod\u00fcl i\u00e7in kullan\u0131c\u0131 a\u00e7\u0131klamas\u0131 +Set\ to\ automatically\ start\ the\ module\ when\ it\ is\ loaded=Mod\u00fcl y\u00fcklendi\u011finde otomatik olarak ba\u015flat\u0131lacak \u015fekilde ayarlay\u0131n +Module\ implementation\ class=Mod\u00fcl uygulama s\u0131n\u0131f\u0131 +User\ chosen\ name\ for\ the\ module=Kullan\u0131c\u0131n\u0131n mod\u00fcl i\u00e7in se\u00e7ti\u011fi ad +Name\ of\ topic/queue\ to\ use=Kullan\u0131lacak konunun/s\u0131ran\u0131n ad\u0131 +Enable/disable\ writing\ to\ queue=Kuyru\u011fa yazmay\u0131 etkinle\u015ftirme/devre d\u0131\u015f\u0131 b\u0131rakma +Enable/disable\ reading\ from\ queue=Kuyruktan okumay\u0131 etkinle\u015ftirme/devre d\u0131\u015f\u0131 b\u0131rakma +Protocol\ Options=Protokol Se\u00e7enekleri +Common\ Configuration=Ortak Yap\u0131land\u0131rma +Common\ configuration\ for\ sensors\ in\ the\ array=Dizideki sens\u00f6rler i\u00e7in ortak konfig\u00fcrasyon +Sensors\ Configuration=Sens\u00f6r Yap\u0131land\u0131rmas\u0131 +Subsystem\ Config=Alt Sistem Yap\u0131land\u0131rmas\u0131 +Configuration\ of\ the\ subsystem=Alt sistemin konfig\u00fcrasyonu +Relative\ Location=G\u00f6receli Konum +Location\ of\ this\ subsystem\ relative\ to\ the\ main\ system\ or\ platform\ reference\ frame=Bu alt sistemin ana sisteme veya platform referans \u00e7er\u00e7evesine g\u00f6re konumu +Relative\ Orientation=G\u00f6receli Y\u00f6nelim +Orientation\ of\ this\ subsystem\ relative\ to\ the\ main\ system\ or\ platform\ reference\ frame=Bu alt sistemin ana sisteme veya platform referans \u00e7er\u00e7evesine g\u00f6re y\u00f6nelimi +Fixed\ system\ orientation\ in\ the\ local\ NED\ reference\ frame=Yerel NED referans \u00e7er\u00e7evesinde sabit sistem y\u00f6nelimi +Subsystems=Alt sistemler +Configuration\ of\ components\ of\ this\ sensor\ system=Bu sens\u00f6r sisteminin bile\u015fenlerinin konfig\u00fcrasyonu +Database\ Config=Veritaban\u0131 Yap\u0131land\u0131rmas\u0131 +Configuration\ of\ underlying\ database=Temel veritaban\u0131n\u0131n yap\u0131land\u0131r\u0131lmas\u0131 +System\ UIDs=Sistem UID''leri +Unique\ IDs\ of\ system\ drivers\ handled\ by\ this\ database=Bu veritaban\u0131 taraf\u0131ndan i\u015flenen sistem s\u00fcr\u00fcc\u00fclerinin benzersiz kimlikleri +Automatic\ Purge\ Policy=Otomatik Temizleme Politikas\u0131 +Policy\ for\ automatically\ purging\ historical\ data=Ge\u00e7mi\u015f verileri otomatik olarak temizleme politikas\u0131 +Uncheck\ to\ disable\ auto-purge\ temporarily=Otomatik temizlemeyi ge\u00e7ici olarak devre d\u0131\u015f\u0131 b\u0131rakmak i\u00e7in i\u015fareti kald\u0131r\u0131n +Purge\ Execution\ Period=Tasfiye Y\u00fcr\u00fctme S\u00fcresi +Unique\ IDs\ of\ system\ drivers\ to\ purge=Temizlenecek sistem s\u00fcr\u00fcc\u00fclerinin benzersiz kimlikleri +Max\ Record\ Age=Maksimum Kay\u0131t Ya\u015f\u0131 +SensorML\ File=SensorML Dosyas\u0131 +Path\ of\ SensorML\ description\ of\ the\ process=S\u00fcrecin SensorML Yolu a\u00e7\u0131klamas\u0131 +List\ of\ users\ allowed\ access\ to\ this\ system=Bu sisteme eri\u015fmesine izin verilen kullan\u0131c\u0131lar\u0131n listesi +List\ of\ security\ roles=G\u00fcvenlik rollerinin listesi +User\ ID=Kullan\u0131c\u0131 kimli\u011fi +Role\ ID=Rol Kimli\u011fi +Source\ Database\ ID=Kaynak Veritaban\u0131 Kimli\u011fi +ID\ of\ database\ module\ to\ read\ data\ from\ (Federated\ database\ will\ be\ used\ if\ not\ set=Verilerin okunaca\u011f\u0131 veritaban\u0131 mod\u00fcl\u00fcn\u00fcn kimli\u011fi (Ayarlanmad\u0131\u011f\u0131 takdirde birle\u015ftirilmi\u015f veritaban\u0131 kullan\u0131lacakt\u0131r) +HTTP\ Port=HTTP Ba\u011flant\u0131 Noktas\u0131 +HTTPS\ Port=HTTPS Ba\u011flant\u0131 Noktas\u0131 +Root\ URL\ where\ static\ web\ content\ will\ be\ served.=Statik web i\u00e7eri\u011finin sunulaca\u011f\u0131 k\u00f6k URL. +Directory\ where\ static\ web\ content\ is\ located.=Statik web i\u00e7eri\u011finin bulundu\u011fu dizin. +Root\ URL\ where\ the\ server\ will\ accept\ requests.\ This\ will\ be\ the\ prefix\ to\ all\ servlet\ URLs.=Sunucunun istekleri kabul edece\u011fi k\u00f6k URL. Bu, t\u00fcm sunucu uygulamas\u0131 URL''lerinin \u00f6neki olacakt\u0131r. +Proxy\ Base\ URL=Proxy Temel URL''si +Public\ URL\ as\ viewed\ from\ the\ outside\ when\ requests\ transit\ through\ a\ proxy\ server.=\u0130stekler bir proxy sunucusu \u00fczerinden aktar\u0131ld\u0131\u011f\u0131nda d\u0131\u015far\u0131dan g\u00f6r\u00fcnt\u00fclenen genel URL. +Authentication\ Method=Kimlik Do\u011frulama Y\u00f6ntemi +Method\ used\ to\ authenticate\ users\ on\ this\ server=Bu sunucudaki kullan\u0131c\u0131lar\u0131n kimli\u011fini do\u011frulamak i\u00e7in kullan\u0131lan y\u00f6ntem +Path\ to\ a\ key\ store\ containing\ the\ certificate\ and\ keypair\ that\ this\ server\ will\ present\ to\ clients\ when\ accessed\ over\ HTTPS.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ \"javax.net.ssl.keyStore\"\ system\ property.\=Path to a key store containing the certificate and keypair that this server will present to clients when accessed over HTTPS. If this value is blank, will default to using the value of the \"javax.net.ssl.keyStore\" system property. +Alias\ for\ the\ public/private\ keypair\ within\ the\ key\ store\ that\ will\ be\ used\ to\ identify\ this\ server.=Bu sunucuyu tan\u0131mlamak i\u00e7in kullan\u0131lacak anahtar deposundaki genel/\u00f6zel anahtar \u00e7iftinin takma ad\u0131. +Path\ to\ the\ TLS\ trust\ store\ that\ is\ used\ when\ client\ authentication\ is\ required.\ Ignored\ if\ client\ certificate\ authentication\ is\ not\ used.\ Certificates\ in\ this\ file\ designate\ the\ signing\ authorities\ for\ client\ certificates\ that\ will\ be\ trusted.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ \"javax.net.ssl.trustStore\"\ system\ property.\=Path to the TLS trust store that is used when client authentication is required. Ignored if client certificate authentication is not used. Certificates in this file designate the signing authorities for client certificates that will be trusted. If this value is blank, will default to using the value of the \"javax.net.ssl.trustStore\" system property. +Password\ for\ the\ trust\ store.\ Ignored\ if\ client\ certificate\ authentication\ is\ not\ used.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ \"javax.net.ssl.trustStorePassword\"\ system\ property.\=Password for the trust store. Ignored if client certificate authentication is not used. If this value is blank, will default to using the value of the \"javax.net.ssl.trustStorePassword\" system property. +Enable\ CORS=CORS''u etkinle\u015ftir +Enable\ generation\ of\ CORS\ headers\ to\ allow\ cross-domain\ requests\ from\ browsers=Taray\u0131c\u0131lardan gelen etki alanlar\u0131 aras\u0131 isteklere izin vermek i\u00e7in CORS \u00fcstbilgilerinin olu\u015fturulmas\u0131n\u0131 etkinle\u015ftirin +Capabilities\ Info=Yetenek Bilgileri +Information\ included\ in\ the\ service\ capabilities\ document=Hizmet yetenekleri belgesinde yer alan bilgiler +Enable\ HTTP\ GET=HTTP GET''i etkinle\u015ftir +Enables/disables\ HTTP\ GET\ bindings\ on\ operations\ that\ support\ it=Onu destekleyen i\u015flemlerde HTTP GET ba\u011flamalar\u0131n\u0131 etkinle\u015ftirir/devre d\u0131\u015f\u0131 b\u0131rak\u0131r +Enable\ HTTP\ POST=HTTP POST''u etkinle\u015ftir +Enables/disables\ HTTP\ POST\ bindings\ on\ operations\ that\ support\ it=Onu destekleyen i\u015flemlerde HTTP POST ba\u011flamalar\u0131n\u0131 etkinle\u015ftirir/devre d\u0131\u015f\u0131 b\u0131rak\u0131r +Enable\ HTTP\ SOAP=HTTP SOAP''u etkinle\u015ftir +Enables/disables\ HTTP\ SOAP\ bindings\ on\ operations\ that\ support\ it=Onu destekleyen i\u015flemlerde HTTP SOAP ba\u011flamalar\u0131n\u0131 etkinle\u015ftirir/devre d\u0131\u015f\u0131 b\u0131rak\u0131r +Connection\ Timeout=Ba\u011flant\u0131 Zaman A\u015f\u0131m\u0131 +Reconnect\ Period=Yeniden Ba\u011flanma D\u00f6nemi +Max\ Reconnect\ Attempts=Maksimum Yeniden Ba\u011flanma Denemesi +Maximum\ number\ of\ times\ the\ client\ will\ attempt\ to\ reconnect\ when\ the\ connection\ is\ not\ available\ or\ lost.\ A\ negative\ value\ means\ that\ there\ is\ no\ limit\ to\ the\ number\ of\ reconnection\ attempts.\ Zero\ means\ not\ to\ attempt\ reconnection.=Ba\u011flant\u0131 mevcut olmad\u0131\u011f\u0131nda veya kayboldu\u011funda istemcinin maksimum yeniden ba\u011flanma giri\u015fimi say\u0131s\u0131. Negatif bir de\u011fer, yeniden ba\u011flanma denemelerinin say\u0131s\u0131nda herhangi bir s\u0131n\u0131rlama olmad\u0131\u011f\u0131 anlam\u0131na gelir. S\u0131f\u0131r, yeniden ba\u011flanmaya \u00e7al\u0131\u015fmamak anlam\u0131na gelir. +IP\ or\ DNS\ name\ of\ remote\ host=Uzak ana bilgisayar\u0131n IP veya DNS ad\u0131 +IP\ of\ local\ network\ interface\ to\ bind\ to\ or\ 'AUTO'\ to\ select\ it\ automatically=Ba\u011flan\u0131lacak yerel a\u011f aray\u00fcz\u00fcn\u00fcn IP''si veya otomatik olarak se\u00e7ilmesi i\u00e7in ''''OTOMAT\u0130K'''' +Connection\ Options=Ba\u011flant\u0131 Se\u00e7enekleri +Serial\ port\ device\ name.\ Usually\ something\ like\ /dev/ttyXXX\ on\ Linux=Seri ba\u011flant\u0131 noktas\u0131 ayg\u0131t\u0131n\u0131n ad\u0131. Genellikle Linux''ta /dev/ttyXXX gibi bir \u015fey +Minimum\ number\ of\ bytes\ to\ receive\ before\ they\ are\ sent\ to\ the\ caller=Arayana g\u00f6nderilmeden \u00f6nce al\u0131nmas\u0131 gereken minimum bayt say\u0131s\u0131 +Local\ port\ number\ to\ use\ on\ the\ local\ host=Yerel ana bilgisayarda kullan\u0131lacak yerel ba\u011flant\u0131 noktas\u0131 numaras\u0131 +Physical\ address\ of\ Bluetooth\ device\ to\ connect\ to=Ba\u011flan\u0131lacak Bluetooth cihaz\u0131n\u0131n fiziksel adresi +Port\ number\ to\ connect\ to\ on\ remote\ host=Uzak ana makineye ba\u011flan\u0131lacak ba\u011flant\u0131 noktas\u0131 numaras\u0131 +User\ Name=Kullan\u0131c\u0131 ad\u0131 +Remote\ user\ name=Uzak kullan\u0131c\u0131 ad\u0131 +Password=\u015eifre +Remote\ password=Uzak \u015fifre +Secure\ communications\ with\ SSL/TLS=SSL/TLS ile g\u00fcvenli ileti\u015fim +Enable\ to\ check\ if\ remote\ host\ is\ reachable\ before\ attempting\ further\ operations=Daha fazla i\u015flem yapmadan \u00f6nce uzak ana bilgisayar\u0131n eri\u015filebilir olup olmad\u0131\u011f\u0131n\u0131 kontrol etmek i\u00e7in etkinle\u015ftirin +Path\ or\ resource\ or\ service\ relative\ to\ server\ root=Sunucu k\u00f6k\u00fcne g\u00f6re yol, kaynak veya hizmet +Unique\ ID\ of\ system\ group=Sistem grubunun benzersiz kimli\u011fi +Name\ of\ system\ group=Sistem grubunun ad\u0131 +Description\ of\ system\ group=Sistem grubunun a\u00e7\u0131klamas\u0131 +List\ of\ bundle\ repository\ URLs=Paket deposu URL''lerinin listesi +A\ human\ readable\ friendly\ identifier\ for\ the\ deployment=Da\u011f\u0131t\u0131m i\u00e7in insanlar taraf\u0131ndan okunabilen kolay bir tan\u0131mlay\u0131c\u0131 +Enable\ Landing\ Page=A\u00e7\u0131l\u0131\u015f Sayfas\u0131n\u0131 Etkinle\u015ftir +Enable\ Landing\ Servlet\ to\ redirect\ users\ to\ landing\ page=Kullan\u0131c\u0131lar\u0131 a\u00e7\u0131l\u0131\u015f sayfas\u0131na y\u00f6nlendirmek i\u00e7in A\u00e7\u0131l\u0131\u015f Servlet''ini etkinle\u015ftirin +Config\ Class=Yap\u0131land\u0131rma S\u0131n\u0131f\u0131 +Type\ of\ module\ config\ class\ for\ which\ a\ custom\ panel\ must\ be\ generated=\u00d6zel bir panelin olu\u015fturulmas\u0131 gereken mod\u00fcl yap\u0131land\u0131rma s\u0131n\u0131f\u0131 t\u00fcr\u00fc +UI\ Class=Kullan\u0131c\u0131 Aray\u00fcz\u00fc S\u0131n\u0131f\u0131 +Fully\ qualified\ name\ of\ class\ implementing\ IModuleAdminPanel=IModuleAdminPanel''i uygulayan s\u0131n\u0131f\u0131n tam ad\u0131 + +# Auto-extracted property IDs +sensorML=Sens\u00f6r Ml +lastUpdated=Son G\u00fcncelleme +lat=Enlem +lon=boylam +alt=Alternatif +x=X +y=Y +z=Z +heading=Ba\u015fl\u0131k +pitch=Saha +roll=Rulo +location=Konum +orientation=Oryantasyon +databaseNum=Veritaban\u0131 Numaras\u0131 +enableAccessControl=Eri\u015fim Denetimini Etkinle\u015ftir +requireAuth=Yetkilendirme gerektir +mimeType=Mim T\u00fcr\u00fc +className=S\u0131n\u0131f Ad\u0131 +endPoint=Biti\u015f Noktas\u0131 +id=\u0130D +description=Tan\u0131m +autoStart=Otomatik Ba\u015flatma +topicName=Konu Ad\u0131 +enablePublish=Yay\u0131nlamay\u0131 Etkinle\u015ftir +enableSubscribe=Aboneli\u011fi Etkinle\u015ftir +protocol=Protokol +moduleConfigPath=Mod\u00fcl Yap\u0131land\u0131rma Yolu +moduleDataPath=Mod\u00fcl Veri Yolu +commonConfig=Ortak Yap\u0131land\u0131rma +sensors=Sensors +config=Yap\u0131land\u0131rma +uniqueID=Benzersiz Kimlik +subsystems=Alt sistemler +dbConfig=Veritaban\u0131 Yap\u0131land\u0131rmas\u0131 +systemUIDs=Sistem Kullan\u0131c\u0131 Kimlikleri +autoPurgeConfig=Otomatik Temizleme Yap\u0131land\u0131rmas\u0131 +minCommitPeriod=Minimum Taahh\u00fct S\u00fcresi +enabled=Etkinle\u015ftirilmi\u015f +purgePeriod=Tasfiye D\u00f6nemi +maxRecordAge=Maksimum Kay\u0131t Ya\u015f\u0131 +users=Kullan\u0131c\u0131lar +roles=Roller +allow=\u0130zin vermek +deny=Reddetmek +userID=Kullan\u0131c\u0131 kimli\u011fi +name=\u0130sim +password=\u015eifre +certificate=Sertifika +twoFactorSecret=\u0130ki Fakt\u00f6rl\u00fc S\u0131r +isTwoFactorEnabled=\u0130ki Fakt\u00f6r Etkin mi +roleID=Rol Kimli\u011fi +sourceDatabaseId=Kaynak Veritaban\u0131 Kimli\u011fi +includeFilter=Filtreyi Ekle +excludeFilter=Filtreyi Hari\u00e7 Tut +httpPort=Http Ba\u011flant\u0131 Noktas\u0131 +httpsPort=HTTPS Ba\u011flant\u0131 Noktas\u0131 +staticDocsRootUrl=Statik Dok\u00fcmanlar K\u00f6k URL''si +staticDocsRootDir=Statik Dok\u00fcmanlar K\u00f6k Dizini +servletsRootUrl=Sunucu Uygulamalar\u0131 K\u00f6k URL''si +proxyBaseUrl=Proxy Taban URL''si +authMethod=Kimlik Do\u011frulama Y\u00f6ntemi +keyStorePath=Anahtar Deposu Yolu +keyStorePassword=Anahtar Deposu \u015eifresi +keyAlias=Anahtar Takma Ad\u0131 +trustStorePath=G\u00fcven Ma\u011faza Yolu +trustStorePassword=G\u00fcven Ma\u011fazas\u0131 \u015eifresi +xmlConfigFile=Xml Yap\u0131land\u0131rma Dosyas\u0131 +enableCORS=Cors''u Etkinle\u015ftir +title=Title +keywords=Anahtar Kelimeler +fees=\u00dccretler +accessConstraints=Eri\u015fim K\u0131s\u0131tlamalar\u0131 +serviceProvider=Servis Sa\u011flay\u0131c\u0131 +ogcCapabilitiesInfo=OGC Yetenekleri Bilgisi +enableHttpGET=Http Get''i Etkinle\u015ftir +enableHttpPOST=Http G\u00f6nderisini Etkinle\u015ftir +enableSOAP=Sabunu Etkinle\u015ftir +connectTimeout=Ba\u011flant\u0131 Zaman A\u015f\u0131m\u0131 +reconnectPeriod=Yeniden Ba\u011flanma D\u00f6nemi +reconnectAttempts=Yeniden Ba\u011flanma Denemeleri +deviceID=Cihaz Kimli\u011fi +deviceClass=Cihaz S\u0131n\u0131f\u0131 +remoteHost=Uzak Ana Bilgisayar +localAddress=Yerel Adres +connection=Ba\u011flant\u0131 +portName=Ba\u011flant\u0131 Noktas\u0131 Ad\u0131 +baudRate=Baud H\u0131z\u0131 +dataBits=Veri Bitleri +stopBits=Bitleri Durdur +parity=Parite +receiveTimeout=Zaman A\u015f\u0131m\u0131 Alma +receiveThreshold=E\u015fik Alma +remotePort=Uzak Ba\u011flant\u0131 Noktas\u0131 +localPort=Yerel Liman +deviceAddress=Cihaz Adresi +deviceName=Cihaz Ad\u0131 +serviceUuid=Hizmet Kullan\u0131c\u0131 Kimli\u011fi +user=Kullan\u0131c\u0131 +enableTLS=Tls''yi etkinle\u015ftir +checkReachability=Eri\u015filebilirli\u011fi Kontrol Edin +resourcePath=Kaynak Yolu +uid=Kullan\u0131c\u0131 kimli\u011fi +securityRole=G\u00fcvenlik Rol\u00fc +passwordField=\u015eifre Alan\u0131 +widgetSet=Widget Seti +bundleRepoUrls=Paket Repo URL''leri +customPanels=\u00d6zel Paneller +customForms=\u00d6zel Formlar +deploymentName=Da\u011f\u0131t\u0131m Ad\u0131 +enableLandingPage=A\u00e7\u0131l\u0131\u015f Sayfas\u0131n\u0131 Etkinle\u015ftir +configClass=Yap\u0131land\u0131rma S\u0131n\u0131f\u0131 +uiClass=Kullan\u0131c\u0131 Aray\u00fcz\u00fc S\u0131n\u0131f\u0131 +moduleClass=Mod\u00fcl S\u0131n\u0131f\u0131 + +# Auto-extracted hardcoded UI strings +testLinks1=Test Ba\u011flant\u0131lar\u0131 +uniqueID1=Benzersiz kimlik +foiIDs1=FOI kimlikleri +version1=S\u00fcr\u00fcm + +Connected\ Systems\ Endpoint=Ba\u011flant\u0131l\u0131 Sistemler U\u00e7 Noktas\u0131 +Connected\ Systems\ endpoint\ where\ the\ requests\ are\ sent=\u0130steklerin g\u00f6nderildi\u011fi Connected Systems u\u00e7 noktas\u0131 +Connection\ Settings=Ba\u011flant\u0131 Ayarlar\u0131 +Custom\ connector\ configurations=\u00d6zel ba\u011flay\u0131c\u0131 yap\u0131land\u0131rmalar\u0131 +Custom\ provider\ configurations=\u00d6zel sa\u011flay\u0131c\u0131 yap\u0131land\u0131rmalar\u0131 +Database\ ID=Veritaban\u0131 Kimli\u011fi +Default\ live\ time-out\ for\ all\ offerings,\ unless\ overriden\ by\ custom\ provider\ settings=\u00d6zel sa\u011flay\u0131c\u0131 ayarlar\u0131 taraf\u0131ndan ge\u00e7ersiz k\u0131l\u0131nmad\u0131\u011f\u0131 s\u00fcrece, t\u00fcm teklifler i\u00e7in varsay\u0131lan canl\u0131 zaman a\u015f\u0131m\u0131 +Default\ live\ time-out\ for\ new\ offerings\ created\ via\ SOS-T=SOS-T arac\u0131l\u0131\u011f\u0131yla olu\u015fturulan yeni teklifler i\u00e7in varsay\u0131lan canl\u0131 zaman a\u015f\u0131m\u0131 +Enable\ to\ use\ a\ persistent\ HTTP\ connection\ for\ InsertResult=InsertResult i\u00e7in kal\u0131c\u0131 bir HTTP ba\u011flant\u0131s\u0131 kullanmay\u0131 etkinle\u015ftirin +Execution\ period\ of\ the\ purge\ policy\ (in\ seconds)=Temizleme ilkesinin y\u00fcr\u00fctme s\u00fcresi (saniye cinsinden) +Filtered\ view\ to\ select\ systems\ exposed\ as\ read-only\ through\ this\ service=Bu hizmet arac\u0131l\u0131\u011f\u0131yla salt okunur olarak kullan\u0131ma sunulan sistemleri se\u00e7mek i\u00e7in filtrelenmi\u015f g\u00f6r\u00fcn\u00fcm +Filtered\ view\ to\ select\ systems/datastreams\ to\ register\ with\ Connected\ Systems=Connected Systems''e kaydedilecek sistemleri/veri ak\u0131\u015flar\u0131n\u0131 se\u00e7mek i\u00e7in filtrelenmi\u015f g\u00f6r\u00fcn\u00fcm +Filtered\ view\ to\ select\ systems/datastreams\ to\ register\ with\ remote\ SOS=Uzak SOS''a kaydedilecek sistemleri/veri ak\u0131\u015flar\u0131n\u0131 se\u00e7mek i\u00e7in filtrelenmi\u015f g\u00f6r\u00fcn\u00fcm +Fixed\ system\ location\ in\ EPSG\ 4979\ (WGS84)\ coordinate\ system=EPSG 4979 (WGS84) koordinat sisteminde sabit sistem konumu +For\ each\ connection\ or\ reconnection\ attempt,\ the\ client\ will\ wait\ for\ the\ remote\ side\ to\ respond\ until\ this\ timeout\ expires\ (in\ ms)=Her ba\u011flant\u0131 veya yeniden ba\u011flanma giri\u015fiminde istemci, bu zaman a\u015f\u0131m\u0131 s\u00fcresi dolana kadar (ms cinsinden) uzak taraf\u0131n yan\u0131t vermesini bekleyecektir. +Heading\ (or\ yaw)\ angle\ about\ Z\ axis\ in\ degrees=Derece olarak Z ekseni etraf\u0131ndaki y\u00f6n (veya yalpalama) a\u00e7\u0131s\u0131 +How\ long\ the\ client\ will\ wait\ after\ connection\ is\ lost\ before\ it\ will\ attempt\ to\ reconnect\ (in\ ms)=\u0130stemcinin ba\u011flant\u0131 kesildikten sonra yeniden ba\u011flanmay\u0131 denemeden \u00f6nce ne kadar s\u00fcre bekleyece\u011fi (ms cinsinden) +ID\ Generator=Kimlik Olu\u015fturucu +ID\ of\ database\ module\ used\ for\ persisting\ data\ received\ by\ this\ service.\ If\ none\ is\ provided,\ new\ systems\ registered\ through\ this\ service\ will\ be\ available\ on\ the\ hub,\ but\ with\ no\ persistence\ guarantee\ across\ restarts.=Bu hizmet taraf\u0131ndan al\u0131nan kal\u0131c\u0131 veriler i\u00e7in kullan\u0131lan veritaban\u0131 mod\u00fcl\u00fcn\u00fcn kimli\u011fi. Hi\u00e7biri sa\u011flanmazsa, bu hizmet arac\u0131l\u0131\u011f\u0131yla kaydedilen yeni sistemler hub''da kullan\u0131labilir olacak, ancak yeniden ba\u015flatmalarda kal\u0131c\u0131l\u0131k garantisi olmayacak. +ID\ of\ database\ module\ used\ for\ persisting\ data\ received\ by\ this\ service.\ If\ none\ is\ provided,\ new\ systems\ registered\ through\ this\ service\ will\ be\ available\ on\ the\ hub,\ but\ with\ no\ persistence\ guarantee\ across\ restarts.\ Only\ the\ latest\ observation\ from\ each\ datastream\ will\ be\ available\ and\ older\ observations\ will\ be\ discarded=Bu hizmet taraf\u0131ndan al\u0131nan kal\u0131c\u0131 veriler i\u00e7in kullan\u0131lan veritaban\u0131 mod\u00fcl\u00fcn\u00fcn kimli\u011fi. Hi\u00e7biri sa\u011flanmazsa, bu hizmet arac\u0131l\u0131\u011f\u0131yla kaydedilen yeni sistemler hub''da kullan\u0131labilir olacak, ancak yeniden ba\u015flatmalarda kal\u0131c\u0131l\u0131k garantisi olmayacak. Her veri ak\u0131\u015f\u0131ndan yaln\u0131zca en son g\u00f6zlem mevcut olacak ve daha eski g\u00f6zlemler at\u0131lacak +Individual\ configuration\ of\ sensors\ in\ the\ array\ (will\ override\ common\ configuration)=Dizideki sens\u00f6rlerin bireysel konfig\u00fcrasyonu (ortak konfig\u00fcrasyonu ge\u00e7ersiz k\u0131lacakt\u0131r) +List\ of\ observed\ properties\ URI\ to\ make\ available\ as\ outputs=\u00c7\u0131k\u0131\u015f olarak kullan\u0131ma sunulacak g\u00f6zlemlenen \u00f6zellikler URI''sinin listesi +Mapping\ of\ custom\ formats\ mime-types\ to\ custom\ serializer\ classes=\u00d6zel format mime t\u00fcrlerinin \u00f6zel seri hale getirici s\u0131n\u0131flarla e\u015fle\u015ftirilmesi +Mappings\ used\ by\ CURIE\ to\ URI\ resolver=CURIE taraf\u0131ndan URI \u00e7\u00f6z\u00fcmleyiciye kullan\u0131lan e\u015flemeler +Max\ Limit=Maksimum Limit +Max\ Observations\ Returned=Geri D\u00f6nen Maksimum G\u00f6zlem Say\u0131s\u0131 +Max\ Records\ Returned=Geri D\u00f6nen Maksimum Kay\u0131t Say\u0131s\u0131 +Max\ delay\ between\ auto-commit\ execution,\ in\ seconds.\ 0\ to\ disable\ time-based\ auto-commit=Otomatik kesinle\u015ftirmenin y\u00fcr\u00fct\u00fclmesi aras\u0131ndaki saniye cinsinden maksimum gecikme. Zamana dayal\u0131 otomatik tamamlamay\u0131 devre d\u0131\u015f\u0131 b\u0131rakmak i\u00e7in 0 +Maximum\ age\ of\ data\ to\ be\ kept\ in\ storage\ (in\ seconds)=Depolamada tutulacak verilerin maksimum ya\u015f\u0131 (saniye cinsinden) +Maximum\ number\ of\ FoI\ IDs\ listed\ in\ capabilities=Yeteneklerde listelenen maksimum FoI ID say\u0131s\u0131 +Maximum\ number\ of\ observations\ returned\ \ by\ a\ historical\ GetObservation\ request\ (for\ each\ selected\ offering)=Ge\u00e7mi\u015f bir GetObservation iste\u011fi taraf\u0131ndan d\u00f6nd\u00fcr\u00fclen maksimum g\u00f6zlem say\u0131s\u0131 (se\u00e7ilen her teklif i\u00e7in) +Maximum\ number\ of\ records\ in\ upload\ queue\ (used\ to\ compensate\ for\ variable\ bandwidth)=Y\u00fckleme kuyru\u011fundaki maksimum kay\u0131t say\u0131s\u0131 (de\u011fi\u015fken bant geni\u015fli\u011fini dengelemek i\u00e7in kullan\u0131l\u0131r) +Maximum\ number\ of\ resources\ returned\ in\ a\ single\ page=Tek bir sayfada d\u00f6nd\u00fcr\u00fclen maksimum kaynak say\u0131s\u0131 +Maximum\ number\ of\ result\ records\ returned\ by\ a\ historical\ GetResult\ request=Ge\u00e7mi\u015f bir GetResult iste\u011finin d\u00f6nd\u00fcrd\u00fc\u011f\u00fc maksimum sonu\u00e7 kayd\u0131 say\u0131s\u0131 +Maximum\ number\ of\ stream\ errors\ before\ we\ try\ to\ reconnect\ to\ remote\ server=Uzak sunucuya yeniden ba\u011flanmay\u0131 denemeden \u00f6nce olu\u015fabilecek maksimum ak\u0131\u015f hatas\u0131 say\u0131s\u0131 +Memory\ cache\ size\ for\ page\ chunks,\ in\ KB=KB cinsinden sayfa par\u00e7alar\u0131 i\u00e7in bellek \u00f6nbellek boyutu +Metadata\ of\ system\ group\ that\ will\ be\ created\ to\ contain\ all\ procedures/sensors\ registered\ through\ this\ service.\ Only\ sensors\ in\ this\ group\ will\ be\ modifiable\ by\ this\ service=Bu hizmet arac\u0131l\u0131\u011f\u0131yla kaydedilen t\u00fcm prosed\u00fcrleri/sens\u00f6rleri i\u00e7erecek \u015fekilde olu\u015fturulacak sistem grubunun meta verileri. Bu hizmet taraf\u0131ndan yaln\u0131zca bu gruptaki sens\u00f6rler de\u011fi\u015ftirilebilir +Metadata\ of\ system\ group\ that\ will\ be\ created\ to\ contain\ all\ systems\ registered\ through\ this\ service.\ Only\ systems\ in\ this\ group\ will\ be\ modifiable\ by\ this\ service=Bu hizmet arac\u0131l\u0131\u011f\u0131yla kaydedilen t\u00fcm sistemleri i\u00e7erecek \u015fekilde olu\u015fturulacak sistem grubunun meta verileri. Bu hizmet taraf\u0131ndan yaln\u0131zca bu gruptaki sistemler de\u011fi\u015ftirilebilir +Method\ used\ to\ generate\ new\ resource\ IDs=Yeni kaynak kimlikleri olu\u015fturmak i\u00e7in kullan\u0131lan y\u00f6ntem +Minimum\ fillrate\ above\ which\ auto\ compact\ operations\ may\ be\ triggered=Otomatik s\u0131k\u0131\u015ft\u0131rma i\u015flemlerinin tetiklenebilece\u011fi minimum doldurma h\u0131z\u0131 +Minimum\ period\ between\ database\ commits\ (in\ ms)=Veritaban\u0131 taahh\u00fctleri aras\u0131ndaki minimum s\u00fcre (ms cinsinden) +Names\ of\ datastreams\ whose\ data\ will\ be\ hidden\ from\ the\ SOS.\ If\ this\ is\ null,\ all\ streams\ produced\ by\ the\ procedure\ are\ exposed=Verileri SOS''tan gizlenecek veri ak\u0131\u015flar\u0131n\u0131n adlar\u0131. Bu null ise prosed\u00fcr taraf\u0131ndan \u00fcretilen t\u00fcm ak\u0131\u015flar a\u00e7\u0131\u011fa \u00e7\u0131kar +Observed\ Properties=G\u00f6zlemlenen \u00d6zellikler +Offering\ URI\ as\ exposed\ in\ capabilities.\ (if\ null,\ the\ procedure\ UID\ is\ used)=URI''yi yeteneklerde a\u00e7\u0131k olarak sunma. (e\u011fer bo\u015fsa, UID prosed\u00fcr\u00fc kullan\u0131l\u0131r) +Offering\ description\ (if\ null,\ it\ will\ be\ auto-generated)=Teklif a\u00e7\u0131klamas\u0131 (e\u011fer bo\u015fsa otomatik olarak olu\u015fturulur) +Offering\ name\ (if\ null,\ the\ procedure\ name\ is\ used)=Teklif ad\u0131 (bo\u015f ise prosed\u00fcr ad\u0131 kullan\u0131l\u0131r) +Orientation\ as\ Euler\ angles\ in\ NED\ coordinate\ reference\ frame.\nOrder\ of\ rotations\ is\ z-y\u2019-x"\ (in\ rotating\ frame)\ or\ x-y-z\ (in\ fixed\ frame)=NED koordinat referans \u00e7er\u00e7evesinde Euler a\u00e7\u0131lar\u0131 olarak y\u00f6nlendirme.\nD\u00f6n\u00fc\u015f s\u0131ras\u0131 z-y''-x" (d\u00f6ner \u00e7er\u00e7evede) veya x-y-z''dir (sabit \u00e7er\u00e7evede) +Password\ for\ the\ key\ store\ (and\ for\ the\ keypair\ within\ the\ keystore).\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ "javax.net.ssl.keyStorePassword"\ system\ property.\ This\ value\ can\ use\ variable\ expansion\ expressions\ of\ the\ form\ "$${name}"\ (for\ environment\ variables\ and\ system\ properties)\ or\ "$${file;/path/to/file}"\ (for\ secret\ file\ contents).=Anahtar deposunun \u015fifresi (ve anahtar deposundaki anahtar \u00e7iftinin \u015fifresi). Bu de\u011fer bo\u015fsa, varsay\u0131lan olarak "javax.net.ssl.keyStorePassword" sistem \u00f6zelli\u011finin de\u011feri kullan\u0131lacakt\u0131r. Bu de\u011fer, "$${name}" (ortam de\u011fi\u015fkenleri ve sistem \u00f6zellikleri i\u00e7in) veya "$${file;/path/to/file}" (gizli dosya i\u00e7erikleri i\u00e7in) bi\u00e7imindeki de\u011fi\u015fken geni\u015fletme ifadelerini kullanabilir. +Password\ for\ the\ trust\ store.\ Ignored\ if\ client\ certificate\ authentication\ is\ not\ used.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ "javax.net.ssl.trustStorePassword"\ system\ property.\ This\ value\ can\ use\ variable\ expansion\ expressions\ of\ the\ form\ "$${name}"\ (for\ environment\ variables\ and\ system\ properties)\ or\ "$${file;/path/to/file}"\ (for\ secret\ file\ contents).=G\u00fcven ma\u011fazas\u0131n\u0131n \u015fifresi. \u0130stemci sertifikas\u0131 kimlik do\u011frulamas\u0131 kullan\u0131lmazsa yok say\u0131l\u0131r. Bu de\u011fer bo\u015fsa, varsay\u0131lan olarak "javax.net.ssl.trustStorePassword" sistem \u00f6zelli\u011finin de\u011feri kullan\u0131l\u0131r. Bu de\u011fer, "$${name}" (ortam de\u011fi\u015fkenleri ve sistem \u00f6zellikleri i\u00e7in) veya "$${file;/path/to/file}" (gizli dosya i\u00e7erikleri i\u00e7in) bi\u00e7imindeki de\u011fi\u015fken geni\u015fletme ifadelerini kullanabilir. +Path\ of\ service\ endpoint\ relative\ to\ the\ context\ URL\ (e.g.\ http\://server.net/sensorhub)=\u0130\u00e7erik URL''sine g\u00f6re hizmet u\u00e7 noktas\u0131 yolu (\u00f6r. http://server.net/sensorhub) +Path\ to\ a\ key\ store\ containing\ the\ certificate\ and\ keypair\ that\ this\ server\ will\ present\ to\ clients\ when\ accessed\ over\ HTTPS.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ "javax.net.ssl.keyStore"\ system\ property.\ This\ value\ can\ use\ variable\ expansion\ expressions\ of\ the\ form\ "$${name}"\ (for\ environment\ variables\ and\ system\ properties)\ or\ "$${file;/path/to/file}"\ (for\ secret\ file\ contents).=Bu sunucunun HTTPS \u00fczerinden eri\u015fildi\u011finde istemcilere sunaca\u011f\u0131 sertifikay\u0131 ve anahtar \u00e7iftini i\u00e7eren anahtar deposunun yolu. Bu de\u011fer bo\u015fsa, varsay\u0131lan olarak "javax.net.ssl.keyStore" sistem \u00f6zelli\u011finin de\u011feri kullan\u0131lacakt\u0131r. Bu de\u011fer, "$${name}" (ortam de\u011fi\u015fkenleri ve sistem \u00f6zellikleri i\u00e7in) veya "$${file;/path/to/file}" (gizli dosya i\u00e7erikleri i\u00e7in) bi\u00e7imindeki de\u011fi\u015fken geni\u015fletme ifadelerini kullanabilir. +Path\ to\ database\ file=Veritaban\u0131 dosyas\u0131n\u0131n yolu +Path\ to\ external\ config\ file\ (in\ Jetty\ IOC\ XML\ format)=Harici yap\u0131land\u0131rma dosyas\u0131n\u0131n yolu (Jetty IOC XML format\u0131nda) +Path\ to\ the\ TLS\ trust\ store\ that\ is\ used\ when\ client\ authentication\ is\ required.\ Ignored\ if\ client\ certificate\ authentication\ is\ not\ used.\ Certificates\ in\ this\ file\ designate\ the\ signing\ authorities\ for\ client\ certificates\ that\ will\ be\ trusted.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ "javax.net.ssl.trustStore"\ system\ property.\ This\ value\ can\ use\ variable\ expansion\ expressions\ of\ the\ form\ "$${name}"\ (for\ environment\ variables\ and\ system\ properties)\ or\ "$${file;/path/to/file}"\ (for\ secret\ file\ contents).=\u0130stemci kimlik do\u011frulamas\u0131 gerekti\u011finde kullan\u0131lan TLS g\u00fcven deposunun yolu. \u0130stemci sertifikas\u0131 kimlik do\u011frulamas\u0131 kullan\u0131lmazsa yok say\u0131l\u0131r. Bu dosyadaki sertifikalar, g\u00fcvenilecek istemci sertifikalar\u0131n\u0131n imzalama yetkililerini belirler. Bu de\u011fer bo\u015fsa, varsay\u0131lan olarak "javax.net.ssl.trustStore" sistem \u00f6zelli\u011finin de\u011feri kullan\u0131l\u0131r. Bu de\u011fer, "$${name}" (ortam de\u011fi\u015fkenleri ve sistem \u00f6zellikleri i\u00e7in) veya "$${file;/path/to/file}" (gizli dosya i\u00e7erikleri i\u00e7in) bi\u00e7imindeki de\u011fi\u015fken geni\u015fletme ifadelerini kullanabilir. +Port\ number\ to\ connect\ to\ on\ remote\ host\ (0\ to\ automatically\ select\ a\ port)=Uzak ana makinede ba\u011flan\u0131lacak ba\u011flant\u0131 noktas\u0131 numaras\u0131 (bir ba\u011flant\u0131 noktas\u0131n\u0131 otomatik olarak se\u00e7mek i\u00e7in 0) +SOS\ Endpoint=SOS U\u00e7 Noktas\u0131 +SOS\ endpoint\ to\ fetch\ data\ from=Verilerin al\u0131naca\u011f\u0131 SOS u\u00e7 noktas\u0131 +SOS\ endpoint\ where\ the\ requests\ are\ sent=\u0130steklerin g\u00f6nderildi\u011fi SOS u\u00e7 noktas\u0131 +SPS\ Endpoint=SPS U\u00e7 Noktas\u0131 +SPS\ endpoint\ to\ send\ commands\ to=Komutlar\u0131n g\u00f6nderilece\u011fi SPS u\u00e7 noktas\u0131 +Security\ related\ options=G\u00fcvenlikle ilgili se\u00e7enekler +Sensor\ UID=Sens\u00f6r UID''si +Set\ if\ WebSocket\ protocol\ should\ be\ used\ to\ get\ streaming\ data\ from\ SOS=SOS''tan ak\u0131\u015f verilerini almak i\u00e7in WebSocket protokol\u00fcn\u00fcn kullan\u0131lmas\u0131 gerekip gerekmedi\u011fini ayarlay\u0131n +Set\ if\ offering\ is\ enabled,\ unset\ if\ disabled=Teklif etkinse ayarlay\u0131n, devre d\u0131\u015f\u0131ysa ayar\u0131 kald\u0131r\u0131n +Set\ if\ websockets\ protocol\ should\ be\ used\ to\ send\ commands\ to\ SPS=SPS''ye komut g\u00f6ndermek i\u00e7in websockets protokol\u00fcn\u00fcn kullan\u0131lmas\u0131 gerekip gerekmedi\u011fini ayarlay\u0131n +Set\ to\ compact\ the\ database\ file\ when\ the\ database\ module\ is\ stopped\ or\ restarted=Veritaban\u0131 mod\u00fcl\u00fc durduruldu\u011funda veya yeniden ba\u015flat\u0131ld\u0131\u011f\u0131nda veritaban\u0131 dosyas\u0131n\u0131 s\u0131k\u0131\u015ft\u0131racak \u015fekilde ayarlay\u0131n +Set\ to\ compress\ underlying\ file\ storage=Temel dosya depolama alan\u0131n\u0131 s\u0131k\u0131\u015ft\u0131rmak i\u00e7in ayarla +Set\ to\ display\ MVStore\ debug\ info\ when\ database\ is\ closed\ (only\ if\ DEBUG\ log\ is\ also\ enabled)=Veritaban\u0131 kapat\u0131ld\u0131\u011f\u0131nda MVStore hata ay\u0131klama bilgilerini g\u00f6r\u00fcnt\u00fcleyecek \u015fekilde ayarlay\u0131n (yaln\u0131zca DEBUG g\u00fcnl\u00fc\u011f\u00fc de etkinse) +Set\ to\ enable\ spatial\ indexing\ of\ individual\ observations\ sampling\ locations\ (when\ provided)=Bireysel g\u00f6zlem \u00f6rnekleme konumlar\u0131n\u0131n (sa\u011fland\u0131\u011f\u0131nda) mekansal indekslenmesini sa\u011flayacak \u015fekilde ayarlay\u0131n +Set\ to\ open\ the\ database\ as\ read-only=Veritaban\u0131n\u0131 salt okunur olarak a\u00e7acak \u015fekilde ayarlay\u0131n +Set\ to\ true\ to\ enable\ transactional\ operation\ support=\u0130\u015flemsel i\u015flem deste\u011fini etkinle\u015ftirmek i\u00e7in true olarak ayarlay\u0131n +Size\ of\ the\ auto-commit\ write\ buffer,\ in\ KB=Otomatik kesinle\u015ftirme yazma arabelle\u011finin boyutu, KB cinsinden +TCP\ port\ where\ server\ will\ listen\ for\ secure\ HTTP\ (HTTPS)\ connections\ (use\ 0\ to\ disable\ HTTPS).=Sunucunun g\u00fcvenli HTTP (HTTPS) ba\u011flant\u0131lar\u0131n\u0131 dinleyece\u011fi TCP ba\u011flant\u0131 noktas\u0131 (HTTPS''yi devre d\u0131\u015f\u0131 b\u0131rakmak i\u00e7in 0 kullan\u0131n). +TCP\ port\ where\ server\ will\ listen\ for\ unsecure\ HTTP\ connections\ (use\ 0\ to\ disable\ HTTP).=Sunucunun g\u00fcvenli olmayan HTTP ba\u011flant\u0131lar\u0131n\u0131 dinleyece\u011fi TCP ba\u011flant\u0131 noktas\u0131 (HTTP''yi devre d\u0131\u015f\u0131 b\u0131rakmak i\u00e7in 0 kullan\u0131n). +Time-out\ after\ which\ real-time\ requests\ are\ disabled\ if\ no\ more\ measurements\ are\ received\ (in\ seconds).\ Real-time\ is\ reactivated\ as\ soon\ as\ new\ records\ start\ being\ received\ again=Daha fazla \u00f6l\u00e7\u00fcm al\u0131nmamas\u0131 durumunda ger\u00e7ek zamanl\u0131 isteklerin devre d\u0131\u015f\u0131 b\u0131rak\u0131laca\u011f\u0131 zaman a\u015f\u0131m\u0131 (saniye cinsinden). Yeni kay\u0131tlar yeniden al\u0131nmaya ba\u015fland\u0131\u011f\u0131nda ger\u00e7ek zamanl\u0131 yeniden etkinle\u015ftirilir +Time-out\ period\ after\ which\ a\ template\ ID\ reserved\ using\ InsertResultTemplate\ will\ expire\ if\ not\ used\ in\ InsertResult\ requests\ (in\ seconds)=InsertResultTemplate kullan\u0131larak ayr\u0131lan \u015fablon kimli\u011finin, InsertResult isteklerinde kullan\u0131lmamas\u0131 durumunda s\u00fcresinin dolaca\u011f\u0131 zaman a\u015f\u0131m\u0131 s\u00fcresi (saniye olarak) +Timeout\ after\ which\ data\ is\ released\ to\ the\ caller\ if\ at\ least\ one\ byte\ was\ received\ (in\ ms)=En az bir bayt al\u0131nm\u0131\u015fsa, verinin arayan ki\u015fiye yay\u0131nlanmas\u0131ndan sonra zaman a\u015f\u0131m\u0131 (ms cinsinden) +URI\ Prefix\ Map=URI \u00d6nek Haritas\u0131 +Unique\ ID\ (full\ URN\ or\ only\ suffix)\ to\ use\ for\ the\ sensor\ system\ or\ 'auto'\ to\ use\ the\ UUID\ randomly\ generated\ the\ first\ time\ the\ module\ is\ initialized=Sens\u00f6r sistemi i\u00e7in kullan\u0131lacak benzersiz kimlik (tam URN veya yaln\u0131zca son ek) veya mod\u00fcl ilk ba\u015flat\u0131ld\u0131\u011f\u0131nda rastgele olu\u015fturulan UUID''yi kullanmak i\u00e7in ''otomatik'' +Unique\ ID\ of\ a\ system\ that\ this\ configuration\ applies\ to.\nCan\ include\ a\ trailing\ wildcard\ '*'\ to\ match\ several\ systems\ at\ once.=Bu yap\u0131land\u0131rman\u0131n ge\u00e7erli oldu\u011fu sistemin benzersiz kimli\u011fi.\nAyn\u0131 anda birden fazla sistemi e\u015fle\u015ftirmek i\u00e7in sonuna ''*'' joker karakteri eklenebilir. +Unique\ ID\ of\ sensor\ to\ connect\ to\ on\ SOS\ and\ SPS\ servers=SOS ve SPS sunucular\u0131na ba\u011flan\u0131lacak sens\u00f6r\u00fcn benzersiz kimli\u011fi +Unique\ ID\ of\ system\ that\ this\ configuration\ applies\ to.\nCan\ include\ a\ trailing\ wildcard\ '*'\ to\ match\ several\ systems\ at\ once.=Bu yap\u0131land\u0131rman\u0131n ge\u00e7erli oldu\u011fu sistemin benzersiz kimli\u011fi.\nAyn\u0131 anda birden fazla sistemi e\u015fle\u015ftirmek i\u00e7in sonuna ''*'' joker karakteri eklenebilir. +Use\ WebSockets\ for\ SOS=SOS i\u00e7in WebSockets''\u0131 kullan\u0131n +Use\ WebSockets\ for\ SPS=SPS i\u00e7in WebSockets''i kullan\u0131n + +Node\ ID=D\u00fc\u011f\u00fcm kimli\u011fi +Stats\ Frequency\ (min)=\u0130statistik S\u0131kl\u0131\u011f\u0131 (dak) +Database\ URL=Veritaban\u0131 URL'si +Database\ Name=Veritaban\u0131 Ad\u0131 +ID\ Generator=Kimlik Olu\u015fturucu +Database\ Number=Veritaban\u0131 Numaras\u0131 +Remote\ Host=Uzak Ana Bilgisayar +Remote\ Port=Uzak Ba\u011flant\u0131 Noktas\u0131 +Lane\ Width\ (m)=\u015eerit Geni\u015fli\u011fi (m) +Enable\ EML\ Analysis=EML Analizini Etkinle\u015ftir +Is\ Collimated=Y\u00f6nlendirilmi\u015f +Stream\ Path=Ak\u0131\u015f Yolu +Lane\ Options\ Config=\u015eerit Se\u00e7enekleri Yap\u0131land\u0131rmas\u0131 diff --git a/sensorhub-webui-core/src/main/resources/org/sensorhub/ui/i18n/messages_ur.properties b/sensorhub-webui-core/src/main/resources/org/sensorhub/ui/i18n/messages_ur.properties new file mode 100644 index 0000000000..5117581a5e --- /dev/null +++ b/sensorhub-webui-core/src/main/resources/org/sensorhub/ui/i18n/messages_ur.properties @@ -0,0 +1,543 @@ +app.title=\u0627\u0648\u067e\u0646 \u0633\u06cc\u0646\u0633\u0631 \u06c1\u0628 +tab.sensors=\u0633\u06cc\u0646\u0633\u0631\u0632 +tab.databases=\u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 +tab.processing=\u067e\u0631\u0648\u0633\u06cc\u0633\u0646\u06af +tab.services=\u062e\u062f\u0645\u0627\u062a +tab.clients=\u06a9\u0644\u0627\u0626\u0646\u0679\u0633 +tab.network=\u0646\u06cc\u0679 \u0648\u0631\u06a9 +tab.security=\u0633\u06cc\u06a9\u06cc\u0648\u0631\u0679\u06cc +action.shutdown=\u0634\u0679 \u0688\u0627\u0624\u0646 +action.logout=\u0644\u0627\u06af \u0622\u0624\u0679 +action.save=\u0645\u062d\u0641\u0648\u0638 \u06a9\u0631\u06cc\u06ba +action.addModule=\u0646\u06cc\u0627 \u0645\u0627\u0688\u06cc\u0648\u0644 \u0634\u0627\u0645\u0644 \u06a9\u0631\u06cc\u06ba +action.addSubmodule=\u0630\u06cc\u0644\u06cc \u0645\u0627\u0688\u06cc\u0648\u0644 \u0634\u0627\u0645\u0644 \u06a9\u0631\u06cc\u06ba +action.removeModule=\u0645\u0627\u0688\u06cc\u0648\u0644 \u06a9\u0648 \u06c1\u0679\u0627 \u062f\u06cc\u06ba +action.removeSubmodule=\u0630\u06cc\u0644\u06cc \u0645\u0627\u0688\u06cc\u0648\u0644 \u06a9\u0648 \u06c1\u0679\u0627 \u062f\u06cc\u06ba +action.start=\u0634\u0631\u0648\u0639 \u06a9\u0631\u06cc\u06ba +action.stop=\u0631\u0648\u06a9\u06cc\u06ba +action.restart=\u062f\u0648\u0628\u0627\u0631\u06c1 \u0634\u0631\u0648\u0639 \u06a9\u0631\u06cc\u06ba +action.forceInit=\u0632\u0628\u0631\u062f\u0633\u062a\u06cc \u0634\u0631\u0648\u0639 \u06a9\u0631\u06cc\u06ba +action.selectAll=\u062a\u0645\u0627\u0645 \u0645\u0627\u0688\u06cc\u0648\u0644\u0632 \u0645\u0646\u062a\u062e\u0628 \u06a9\u0631\u06cc\u06ba +action.deselectAll=\u062a\u0645\u0627\u0645 \u0645\u0627\u0688\u06cc\u0648\u0644\u0632 \u063a\u06cc\u0631 \u0645\u0646\u062a\u062e\u0628 \u06a9\u0631\u06cc\u06ba +dialog.shutdown.title=\u0634\u0679 \u0688\u0627\u0624\u0646 \u0634\u0631\u0648\u0639 \u06c1\u0648 \u06af\u06cc\u0627... +dialog.shutdown.message=\u06cc\u0648\u0632\u0631 \u0627\u0646\u0679\u0631\u0641\u06cc\u0633 \u062c\u0648\u0627\u0628 \u062f\u06cc\u0646\u0627 \u0628\u0646\u062f \u06a9\u0631 \u062f\u06d2 \u06af\u0627 +dialog.shutdown.confirm=\u06a9\u06cc\u0627 \u0622\u067e \u0648\u0627\u0642\u0639\u06cc \u0633\u06cc\u0646\u0633\u0631 \u06c1\u0628 \u06a9\u0648 \u0628\u0646\u062f \u06a9\u0631\u0646\u0627 \u0686\u0627\u06c1\u062a\u06d2 \u06c1\u06cc\u06ba\u061f +dialog.logout.confirm=\u06a9\u06cc\u0627 \u0622\u067e \u0648\u0627\u0642\u0639\u06cc \u0644\u0627\u06af \u0622\u0624\u0679 \u06a9\u0631\u0646\u0627 \u0686\u0627\u06c1\u062a\u06d2 \u06c1\u06cc\u06ba\u061f +dialog.save.confirm=\u06a9\u06cc\u0627 \u0622\u067e \u0648\u0627\u0642\u0639\u06cc \u06a9\u0646\u0641\u06cc\u06af\u0631\u06cc\u0634\u0646 \u06a9\u0648 \u0645\u062d\u0641\u0648\u0638 \u06a9\u0631\u0646\u0627 (\u0627\u0648\u0631 \u067e\u0686\u06be\u0644\u06cc \u06a9\u0648 \u0627\u0648\u0648\u0631 \u0631\u0627\u0626\u0679 \u06a9\u0631\u0646\u0627) \u0686\u0627\u06c1\u062a\u06d2 \u06c1\u06cc\u06ba\u061f +msg.configSaved=SensorHub \u06a9\u0646\u0641\u06cc\u06af\u0631\u06cc\u0634\u0646 \u0645\u062d\u0641\u0648\u0638 \u06c1\u0648 \u06af\u0626\u06cc +msg.configSaveError=\u06a9\u0646\u0641\u06cc\u06af\u0631\u06cc\u0634\u0646 \u0645\u062d\u0641\u0648\u0638 \u0646\u06c1\u06cc\u06ba \u06a9\u06cc \u062c\u0627 \u0633\u06a9\u06cc +dialog.remove.confirm=\u06a9\u06cc\u0627 \u0622\u067e \u0648\u0627\u0642\u0639\u06cc {0} \u06a9\u0648 \u06c1\u0679\u0627\u0646\u0627 \u0686\u0627\u06c1\u062a\u06d2 \u06c1\u06cc\u06ba\u061f
\u062a\u0645\u0627\u0645 \u062a\u0631\u062a\u06cc\u0628\u0627\u062a \u0636\u0627\u0626\u0639 \u06c1\u0648 \u062c\u0627\u0626\u06cc\u06ba \u06af\u06cc\u06d4 +msg.removeError={0} \u06a9\u0648 \u0646\u06c1\u06cc\u06ba \u06c1\u0679\u0627\u06cc\u0627 \u062c\u0627 \u0633\u06a9\u0627 +msg.startError={0} \u06a9\u0648 \u0634\u0631\u0648\u0639 \u0646\u06c1\u06cc\u06ba \u06a9\u06cc\u0627 \u062c\u0627 \u0633\u06a9\u0627 +msg.stopError={0} \u06a9\u0648 \u0631\u0648\u06a9\u0627 \u0646\u06c1\u06cc\u06ba \u062c\u0627 \u0633\u06a9\u0627 +msg.restartError={0} \u06a9\u0648 \u062f\u0648\u0628\u0627\u0631\u06c1 \u0634\u0631\u0648\u0639 \u0646\u06c1\u06cc\u06ba \u06a9\u06cc\u0627 \u062c\u0627 \u0633\u06a9\u0627 +msg.reinitError={0} \u06a9\u0648 \u062f\u0648\u0628\u0627\u0631\u06c1 \u0634\u0631\u0648\u0639 (Re-init) \u0646\u06c1\u06cc\u06ba \u06a9\u06cc\u0627 \u062c\u0627 \u0633\u06a9\u0627 +msg.loadError=\u0645\u0627\u0688\u06cc\u0648\u0644 \u0644\u0648\u0688 \u0646\u06c1\u06cc\u06ba \u06a9\u06cc\u0627 \u062c\u0627 \u0633\u06a9\u062a\u0627 +msg.addSubmoduleError=\u0630\u06cc\u0644\u06cc \u0645\u0627\u0688\u06cc\u0648\u0644 \u0634\u0627\u0645\u0644 \u0646\u06c1\u06cc\u06ba \u06a9\u06cc\u0627 \u062c\u0627 \u0633\u06a9\u062a\u0627 +about.title=OpenSensorHub \u06a9\u06d2 \u0628\u0627\u0631\u06d2 \u0645\u06cc\u06ba +about.desc=\u0633\u0645\u0627\u0631\u0679 \u0633\u06cc\u0646\u0633\u0631 \u0646\u06cc\u0679 \u0648\u0631\u06a9\u0633 \u0627\u0648\u0631 \u0627\u0646\u0679\u0631\u0646\u06cc\u0679 \u0622\u0641 \u062a\u06be\u0646\u06af\u0632 (IoT) \u06a9\u06cc \u062a\u0639\u0645\u06cc\u0631 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u06cc\u06a9 \u0633\u0627\u0641\u0679 \u0648\u06cc\u0626\u0631 \u067e\u0644\u06cc\u0679 \u0641\u0627\u0631\u0645 +about.license=Mozilla Public License v2.0 \u06a9\u06d2 \u062a\u062d\u062a \u0644\u0627\u0626\u0633\u0646\u0633 \u06cc\u0627\u0641\u062a\u06c1 +about.version=\u0648\u0631\u0698\u0646: +about.build=\u0628\u0644\u0688 \u0646\u0645\u0628\u0631: +about.deployment=\u062a\u0639\u06cc\u0646\u0627\u062a\u06cc \u06a9\u0627 \u0646\u0627\u0645: +tooltip.shutdown=SensorHub \u06a9\u0648 \u0634\u0679 \u0688\u0627\u0624\u0646 \u06a9\u0631\u06cc\u06ba +tooltip.logout=OSH \u0646\u0648\u0688 \u0633\u06d2 \u0644\u0627\u06af \u0622\u0624\u0679 \u06a9\u0631\u06cc\u06ba +tooltip.save=SensorHub \u06a9\u0646\u0641\u06cc\u06af\u0631\u06cc\u0634\u0646 \u0645\u062d\u0641\u0648\u0638 \u06a9\u0631\u06cc\u06ba +dialog.start.confirm=\u06a9\u06cc\u0627 \u0622\u067e \u0648\u0627\u0642\u0639\u06cc {0} \u06a9\u0648 \u0634\u0631\u0648\u0639 \u06a9\u0631\u0646\u0627 \u0686\u0627\u06c1\u062a\u06d2 \u06c1\u06cc\u06ba\u061f +dialog.stop.confirm=\u06a9\u06cc\u0627 \u0622\u067e \u0648\u0627\u0642\u0639\u06cc {0} \u06a9\u0648 \u0631\u0648\u06a9\u0646\u0627 \u0686\u0627\u06c1\u062a\u06d2 \u06c1\u06cc\u06ba\u061f +dialog.restart.confirm=\u06a9\u06cc\u0627 \u0622\u067e \u0648\u0627\u0642\u0639\u06cc {0} \u06a9\u0648 \u062f\u0648\u0628\u0627\u0631\u06c1 \u0634\u0631\u0648\u0639 \u06a9\u0631\u0646\u0627 \u0686\u0627\u06c1\u062a\u06d2 \u06c1\u06cc\u06ba\u061f +dialog.reinit.confirm=\u06a9\u06cc\u0627 \u0622\u067e \u0648\u0627\u0642\u0639\u06cc {0} \u06a9\u0648 \u0632\u0628\u0631\u062f\u0633\u062a\u06cc \u062f\u0648\u0628\u0627\u0631\u06c1 \u0634\u0631\u0648\u0639 (force re-init) \u06a9\u0631\u0646\u0627 \u0686\u0627\u06c1\u062a\u06d2 \u06c1\u06cc\u06ba\u061f +backgroundUpdate=\u067e\u0633 \u0645\u0646\u0638\u0631 \u06a9\u06cc \u062a\u0627\u0632\u06c1 \u06a9\u0627\u0631\u06cc +sigmaThreshold=\u0633\u06af\u0645\u0627 \u06a9\u06cc \u062d\u062f +nuclideIdentification=\u0646\u06cc\u0648\u06a9\u0644\u0627\u0626\u0688 \u06a9\u06cc \u0634\u0646\u0627\u062e\u062a +tamperAlarm=\u0686\u06be\u06cc\u0691 \u0686\u06be\u0627\u0691 \u06a9\u0627 \u0627\u0644\u0627\u0631\u0645 +occupancySensor=\u0645\u0648\u062c\u0648\u062f\u06af\u06cc \u0633\u06cc\u0646\u0633\u0631 +stateOfHealth=\u0635\u062d\u062a \u06a9\u06cc \u062d\u0627\u0644\u062a +soh=\u0627\u06cc\u0633 \u0627\u0648 \u0627\u06cc\u0686 +1ScanThisQrCodeWithYourAuthenticatorApp=1. \u0627\u0633 QR \u06a9\u0648\u0688 \u06a9\u0648 \u0627\u067e\u0646\u06cc \u062a\u0635\u062f\u06cc\u0642 \u06a9\u0646\u0646\u062f\u06c1 \u0627\u06cc\u067e \u0633\u06d2 \u0627\u0633\u06a9\u06cc\u0646 \u06a9\u0631\u06cc\u06ba: +2EnterThe6digitCodeGeneratedByTheApp=2. \u0627\u06cc\u067e \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06d2 \u062a\u06cc\u0627\u0631 \u06a9\u0631\u062f\u06c1 6 \u06c1\u0646\u062f\u0633\u0648\u06ba \u06a9\u0627 \u06a9\u0648\u0688 \u062f\u0631\u062c \u06a9\u0631\u06cc\u06ba: +orEnterThisSecretKeyManually=\u06cc\u0627 \u0627\u0633 \u062e\u0641\u06cc\u06c1 \u06a9\u0644\u06cc\u062f \u06a9\u0648 \u062f\u0633\u062a\u06cc \u0637\u0648\u0631 \u067e\u0631 \u062f\u0631\u062c \u06a9\u0631\u06cc\u06ba: +loadingBundlesInformation=\u0628\u0646\u0688\u0644\u0632 \u06a9\u06cc \u0645\u0639\u0644\u0648\u0645\u0627\u062a \u0644\u0648\u0688 \u06c1\u0648 \u0631\u06c1\u06cc \u06c1\u06d2... +loadingPackageInformation=\u067e\u06cc\u06a9\u06cc\u062c \u06a9\u06cc \u0645\u0639\u0644\u0648\u0645\u0627\u062a \u0644\u0648\u0688 \u06c1\u0648 \u0631\u06c1\u06cc \u06c1\u06d2... +arrayComponentNotSupported=\u0635\u0641 \u06a9\u0627 \u062c\u0632\u0648 \u062a\u0639\u0627\u0648\u0646 \u06cc\u0627\u0641\u062a\u06c1 \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4 +twofactorAuthentication=\u062f\u0648 \u0639\u0646\u0635\u0631 \u06a9\u06cc \u062a\u0648\u062b\u06cc\u0642 +installMorePackages=\u0645\u0632\u06cc\u062f \u067e\u06cc\u06a9\u062c\u0632 \u0627\u0646\u0633\u0679\u0627\u0644 \u06a9\u0631\u06cc\u06ba... +errorGeneratingQrCode=QR \u06a9\u0648\u0688 \u0628\u0646\u0627\u0646\u06d2 \u0645\u06cc\u06ba \u062e\u0631\u0627\u0628\u06cc\u06d4 +installMoreModules=\u0645\u0632\u06cc\u062f \u0645\u0627\u0688\u06cc\u0648\u0644\u0632 \u0627\u0646\u0633\u0679\u0627\u0644 \u06a9\u0631\u06cc\u06ba... +detailedInstructions=\u062a\u0641\u0635\u06cc\u0644\u06cc \u06c1\u062f\u0627\u06cc\u0627\u062a +availableNetworks=\u062f\u0633\u062a\u06cc\u0627\u0628 \u0646\u06cc\u0679 \u0648\u0631\u06a9\u0633 +processParameters=\u0639\u0645\u0644 \u06a9\u06d2 \u067e\u06cc\u0631\u0627\u0645\u06cc\u0679\u0631\u0632 +verifyAndEnable=\u062a\u0635\u062f\u06cc\u0642 \u06a9\u0631\u06cc\u06ba \u0627\u0648\u0631 \u0641\u0639\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u06d4 +dataSourceInfo=\u0688\u06cc\u0679\u0627 \u0633\u0648\u0631\u0633 \u06a9\u06cc \u0645\u0639\u0644\u0648\u0645\u0627\u062a +detectedDevices=\u062f\u0631\u06cc\u0627\u0641\u062a \u0634\u062f\u06c1 \u0622\u0644\u0627\u062a +installSelected=\u0645\u0646\u062a\u062e\u0628 \u06a9\u0631\u062f\u06c1 \u0627\u0646\u0633\u0679\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u06d4 +databaseContent=\u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 \u06a9\u0627 \u0645\u0648\u0627\u062f +itemsPerPage=\u0641\u06cc \u0635\u0641\u062d\u06c1 \u0627\u0634\u06cc\u0627\u0621: +commandInputs=\u06a9\u0645\u0627\u0646\u0688 \u0627\u0646 \u067e\u0679\u0633 +processInputs=\u067e\u0631\u0648\u0633\u06cc\u0633 \u0627\u0646 \u067e\u0679\u0633 +providerClass=\u0641\u0631\u0627\u06c1\u0645 \u06a9\u0646\u0646\u062f\u06c1 \u06a9\u0644\u0627\u0633 +processName=\u0639\u0645\u0644 \u06a9\u0627 \u0646\u0627\u0645: +configuration=\u06a9\u0646\u0641\u06cc\u06af\u0631\u06cc\u0634\u0646 +applyChanges=\u062a\u0628\u062f\u06cc\u0644\u06cc\u0627\u06ba \u0644\u0627\u06af\u0648 \u06a9\u0631\u06cc\u06ba\u06d4 +sendCommand=\u06a9\u0645\u0627\u0646\u0688 \u0628\u06be\u06cc\u062c\u06cc\u06ba\u06d4 +useAddress=\u0627\u06cc\u0688\u0631\u06cc\u0633 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u06d4 +selectNone=\u06a9\u0648\u0626\u06cc \u0646\u06c1\u06cc\u06ba \u0645\u0646\u062a\u062e\u0628 \u06a9\u0631\u06cc\u06ba\u06d4 +timeRange=\u0648\u0642\u062a \u06a9\u06cc \u062d\u062f: +permissions=\u0627\u062c\u0627\u0632\u062a\u06cc\u06ba +startScan=\u0627\u0633\u06a9\u06cc\u0646 \u0634\u0631\u0648\u0639 \u06a9\u0631\u06cc\u06ba\u06d4 +noReadme=\u06a9\u0648\u0626\u06cc README \u0646\u06c1\u06cc\u06ba\u06d4 +stopScan=\u0627\u0633\u06a9\u06cc\u0646 \u0628\u0646\u062f \u06a9\u0631\u06cc\u06ba\u06d4 +reset2fa=2FA \u06a9\u0648 \u062f\u0648\u0628\u0627\u0631\u06c1 \u062a\u0631\u062a\u06cc\u0628 \u062f\u06cc\u06ba\u06d4 +previous=\u067e\u0686\u06be\u0644\u0627 +useName=\u0646\u0627\u0645 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u06d4 +outputs=\u0622\u0624\u0679 \u067e\u0679\u0633 +refresh=\u0631\u06cc\u0641\u0631\u06cc\u0634 \u06a9\u0631\u06cc\u06ba\u06d4 +modify=\u062a\u0631\u0645\u06cc\u0645 \u06a9\u0631\u06cc\u06ba\u06d4 +cancel=\u0645\u0646\u0633\u0648\u062e \u06a9\u0631\u06cc\u06ba\u06d4 +logout=\u0644\u0627\u06af \u0622\u0624\u0679 +remove=\u06c1\u0679\u0627 \u062f\u06cc\u06ba\u06d4 +verify=\u062a\u0635\u062f\u06cc\u0642 \u06a9\u0631\u06cc\u06ba\u06d4 +first=\u0633\u0628 \u0633\u06d2 \u067e\u06c1\u0644\u06d2 +login=\u0644\u0627\u06af \u0627\u0646 +last=\u0622\u062e\u0631\u06cc +view=\u062f\u06cc\u06a9\u06be\u06cc\u06ba +next=\u0627\u06af\u0644\u0627 +stop=\u0631\u06a9 \u062c\u0627\u0624 +add=\u0634\u0627\u0645\u0644 \u06a9\u0631\u06cc\u06ba\u06d4 +ui.empty=< +ok=\u0679\u06be\u06cc\u06a9 \u06c1\u06d2 +1ScanThisQrCodeWithYourAuthenticatorApp1=1. \u0627\u0633 QR \u06a9\u0648\u0688 \u06a9\u0648 \u0627\u067e\u0646\u06cc \u062a\u0635\u062f\u06cc\u0642 \u06a9\u0646\u0646\u062f\u06c1 \u0627\u06cc\u067e \u0633\u06d2 \u0627\u0633\u06a9\u06cc\u0646 \u06a9\u0631\u06cc\u06ba: +2EnterThe6digitCodeGeneratedByTheApp1=2. \u0627\u06cc\u067e \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06d2 \u062a\u06cc\u0627\u0631 \u06a9\u0631\u062f\u06c1 6 \u06c1\u0646\u062f\u0633\u0648\u06ba \u06a9\u0627 \u06a9\u0648\u0688 \u062f\u0631\u062c \u06a9\u0631\u06cc\u06ba: +orEnterThisSecretKeyManually1=\u06cc\u0627 \u0627\u0633 \u062e\u0641\u06cc\u06c1 \u06a9\u0644\u06cc\u062f \u06a9\u0648 \u062f\u0633\u062a\u06cc \u0637\u0648\u0631 \u067e\u0631 \u062f\u0631\u062c \u06a9\u0631\u06cc\u06ba: +loadingPackageInformation1=\u067e\u06cc\u06a9\u06cc\u062c \u06a9\u06cc \u0645\u0639\u0644\u0648\u0645\u0627\u062a \u0644\u0648\u0688 \u06c1\u0648 \u0631\u06c1\u06cc \u06c1\u06d2... +loadingBundlesInformation1=\u0628\u0646\u0688\u0644\u0632 \u06a9\u06cc \u0645\u0639\u0644\u0648\u0645\u0627\u062a \u0644\u0648\u0688 \u06c1\u0648 \u0631\u06c1\u06cc \u06c1\u06d2... +arrayComponentNotSupported1=\u0635\u0641 \u06a9\u0627 \u062c\u0632\u0648 \u062a\u0639\u0627\u0648\u0646 \u06cc\u0627\u0641\u062a\u06c1 \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4 +twofactorAuthentication1=\u062f\u0648 \u0639\u0646\u0635\u0631 \u06a9\u06cc \u062a\u0648\u062b\u06cc\u0642 +errorGeneratingQrCode1=QR \u06a9\u0648\u0688 \u0628\u0646\u0627\u0646\u06d2 \u0645\u06cc\u06ba \u062e\u0631\u0627\u0628\u06cc\u06d4 +installMorePackages1=\u0645\u0632\u06cc\u062f \u067e\u06cc\u06a9\u062c\u0632 \u0627\u0646\u0633\u0679\u0627\u0644 \u06a9\u0631\u06cc\u06ba... +installMoreModules1=\u0645\u0632\u06cc\u062f \u0645\u0627\u0688\u06cc\u0648\u0644\u0632 \u0627\u0646\u0633\u0679\u0627\u0644 \u06a9\u0631\u06cc\u06ba... +detailedInstructions1=\u062a\u0641\u0635\u06cc\u0644\u06cc \u06c1\u062f\u0627\u06cc\u0627\u062a +processParameters1=\u0639\u0645\u0644 \u06a9\u06d2 \u067e\u06cc\u0631\u0627\u0645\u06cc\u0679\u0631\u0632 +availableNetworks1=\u062f\u0633\u062a\u06cc\u0627\u0628 \u0646\u06cc\u0679 \u0648\u0631\u06a9\u0633 +verifyAndEnable1=\u062a\u0635\u062f\u06cc\u0642 \u06a9\u0631\u06cc\u06ba \u0627\u0648\u0631 \u0641\u0639\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u06d4 +databaseContent1=\u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 \u06a9\u0627 \u0645\u0648\u0627\u062f +installSelected1=\u0645\u0646\u062a\u062e\u0628 \u06a9\u0631\u062f\u06c1 \u0627\u0646\u0633\u0679\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u06d4 +dataSourceInfo1=\u0688\u06cc\u0679\u0627 \u0633\u0648\u0631\u0633 \u06a9\u06cc \u0645\u0639\u0644\u0648\u0645\u0627\u062a +detectedDevices1=\u062f\u0631\u06cc\u0627\u0641\u062a \u0634\u062f\u06c1 \u0622\u0644\u0627\u062a +itemsPerPage1=\u0641\u06cc \u0635\u0641\u062d\u06c1 \u0627\u0634\u06cc\u0627\u0621: +processInputs1=\u067e\u0631\u0648\u0633\u06cc\u0633 \u0627\u0646 \u067e\u0679\u0633 +commandInputs1=\u06a9\u0645\u0627\u0646\u0688 \u0627\u0646 \u067e\u0679\u0633 +providerClass1=\u0641\u0631\u0627\u06c1\u0645 \u06a9\u0646\u0646\u062f\u06c1 \u06a9\u0644\u0627\u0633 +configuration1=\u06a9\u0646\u0641\u06cc\u06af\u0631\u06cc\u0634\u0646 +processName1=\u0639\u0645\u0644 \u06a9\u0627 \u0646\u0627\u0645: +applyChanges1=\u062a\u0628\u062f\u06cc\u0644\u06cc\u0627\u06ba \u0644\u0627\u06af\u0648 \u06a9\u0631\u06cc\u06ba\u06d4 +sendCommand1=\u06a9\u0645\u0627\u0646\u0688 \u0628\u06be\u06cc\u062c\u06cc\u06ba\u06d4 +timeRange1=\u0648\u0642\u062a \u06a9\u06cc \u062d\u062f: +useAddress1=\u0627\u06cc\u0688\u0631\u06cc\u0633 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u06d4 +permissions1=\u0627\u062c\u0627\u0632\u062a\u06cc\u06ba +selectNone1=\u06a9\u0648\u0626\u06cc \u0646\u06c1\u06cc\u06ba \u0645\u0646\u062a\u062e\u0628 \u06a9\u0631\u06cc\u06ba\u06d4 +startScan1=\u0627\u0633\u06a9\u06cc\u0646 \u0634\u0631\u0648\u0639 \u06a9\u0631\u06cc\u06ba\u06d4 +noReadme1=\u06a9\u0648\u0626\u06cc README \u0646\u06c1\u06cc\u06ba\u06d4 +reset2fa1=2FA \u06a9\u0648 \u062f\u0648\u0628\u0627\u0631\u06c1 \u062a\u0631\u062a\u06cc\u0628 \u062f\u06cc\u06ba\u06d4 +stopScan1=\u0627\u0633\u06a9\u06cc\u0646 \u0628\u0646\u062f \u06a9\u0631\u06cc\u06ba\u06d4 +useName1=\u0646\u0627\u0645 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u06d4 +previous1=\u067e\u0686\u06be\u0644\u0627 +refresh1=\u0631\u06cc\u0641\u0631\u06cc\u0634 \u06a9\u0631\u06cc\u06ba\u06d4 +outputs1=\u0622\u0624\u0679 \u067e\u0679\u0633 +cancel1=\u0645\u0646\u0633\u0648\u062e \u06a9\u0631\u06cc\u06ba\u06d4 +logout1=\u0644\u0627\u06af \u0622\u0624\u0679 +modify1=\u062a\u0631\u0645\u06cc\u0645 \u06a9\u0631\u06cc\u06ba\u06d4 +remove1=\u06c1\u0679\u0627 \u062f\u06cc\u06ba\u06d4 +verify1=\u062a\u0635\u062f\u06cc\u0642 \u06a9\u0631\u06cc\u06ba\u06d4 +first1=\u0633\u0628 \u0633\u06d2 \u067e\u06c1\u0644\u06d2 +login1=\u0644\u0627\u06af \u0627\u0646 +view1=\u062f\u06cc\u06a9\u06be\u06cc\u06ba +stop1=\u0631\u06a9 \u062c\u0627\u0624 +next1=\u0627\u06af\u0644\u0627 +last1=\u0622\u062e\u0631\u06cc +add1=\u0634\u0627\u0645\u0644 \u06a9\u0631\u06cc\u06ba\u06d4 +last2=>> +first2=<< +ok1=\u0679\u06be\u06cc\u06a9 \u06c1\u06d2 +next2=> +previous2=< + +pleaseEnterAUserIDFirst1=\u0628\u0631\u0627\u06c1 \u06a9\u0631\u0645 \u067e\u06c1\u0644\u06d2 \u0635\u0627\u0631\u0641 \u06a9\u06cc \u0634\u0646\u0627\u062e\u062a \u062f\u0631\u062c \u06a9\u0631\u06cc\u06ba\u06d4 +reset2FA1=2FA \u06a9\u0648 \u062f\u0648\u0628\u0627\u0631\u06c1 \u062a\u0631\u062a\u06cc\u0628 \u062f\u06cc\u06ba\u06d4 +enable2FA1=2FA \u06a9\u0648 \u0641\u0639\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u06d4 +twoFAEnabledSuccessfully1=2FA \u06a9\u0627\u0645\u06cc\u0627\u0628\u06cc \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0641\u0639\u0627\u0644 \u06c1\u0648 \u06af\u06cc\u0627\u06d4 +invalidCode1=\u063a\u0644\u0637 \u06a9\u0648\u0688 +allowedAndDeniedPermissionsForUsersWithThisRole1=\u0627\u0633 \u06a9\u0631\u062f\u0627\u0631 \u06a9\u06d2 \u062d\u0627\u0645\u0644 \u0635\u0627\u0631\u0641\u06cc\u0646 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u062c\u0627\u0632\u062a \u06cc\u0627\u0641\u062a\u06c1 \u0627\u0648\u0631 \u0645\u0633\u062a\u0631\u062f \u06a9\u0631\u062f\u06c1 \u0627\u062c\u0627\u0632\u062a\u06cc\u06ba\u06d4 +manualEntry1=\u062f\u0633\u062a\u06cc \u0627\u0646\u062f\u0631\u0627\u062c +toggleAutoRefreshDataOncePerSecond1=\u0641\u06cc \u0633\u06cc\u06a9\u0646\u0688 \u0645\u06cc\u06ba \u0627\u06cc\u06a9 \u0628\u0627\u0631 \u0622\u0679\u0648 \u0631\u06cc\u0641\u0631\u06cc\u0634 \u0688\u06cc\u0679\u0627 \u06a9\u0648 \u0679\u0648\u06af\u0644 \u06a9\u0631\u06cc\u06ba\u06d4 +lookupSystem1=\u062a\u0644\u0627\u0634 \u06a9\u0627 \u0646\u0638\u0627\u0645 +lookupModule1=\u062a\u0644\u0627\u0634 \u06a9\u0627 \u0645\u0627\u0688\u06cc\u0648\u0644 +lookupAddress1=\u062a\u0644\u0627\u0634 \u06a9\u0627 \u067e\u062a\u06c1 +showPassword1=\u067e\u0627\u0633 \u0648\u0631\u0688 \u062f\u06a9\u06be\u0627\u0626\u06cc\u06ba\u06d4 +showHistogram1=\u06c1\u0633\u0679\u0648\u06af\u0631\u0627\u0645 \u062f\u06a9\u06be\u0627\u0626\u06cc\u06ba\u06d4 +hideHistogram1=\u06c1\u0633\u0679\u0648\u06af\u0631\u0627\u0645 \u0686\u06be\u067e\u0627\u0626\u06cc\u06ba\u06d4 +reloadDataFromDatabase1=\u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 \u0633\u06d2 \u0688\u06cc\u0679\u0627 \u06a9\u0648 \u062f\u0648\u0628\u0627\u0631\u06c1 \u0644\u0648\u0688 \u06a9\u0631\u06cc\u06ba\u06d4 +fois1=\u0627\u06cc\u0641 \u0627\u0648 \u0622\u0626\u06cc\u0632 +username1=\u0635\u0627\u0631\u0641 \u0646\u0627\u0645 +password1=\u067e\u0627\u0633 \u0648\u0631\u0688 +loginFailed1=\u0644\u0627\u06af \u0627\u0646 \u0646\u0627\u06a9\u0627\u0645 \u06c1\u0648 \u06af\u06cc\u0627\u06d4 +invalidUsernameOrPassword1=\u063a\u0644\u0637 \u0635\u0627\u0631\u0641 \u0646\u0627\u0645 \u06cc\u0627 \u067e\u0627\u0633 \u0648\u0631\u0688 +verificationCode1=\u062a\u0635\u062f\u06cc\u0642\u06cc \u06a9\u0648\u0688 +verificationFailed1=\u062a\u0648\u062b\u06cc\u0642 \u0646\u0627\u06a9\u0627\u0645 \u06c1\u0648 \u06af\u0626\u06cc\u06d4 +datasource1=\u0688\u06cc\u0679\u0627 \u0633\u0648\u0631\u0633 +process1=\u0639\u0645\u0644 +logoutFromOshNode1=OSH \u0646\u0648\u0688 \u0633\u06d2 \u0644\u0627\u06af \u0622\u0624\u0679 \u06a9\u0631\u06cc\u06ba\u06d4 +setParameter1=\u067e\u06cc\u0631\u0627\u0645\u06cc\u0679\u0631 \u0633\u06cc\u0679 \u06a9\u0631\u06cc\u06ba\u06d4 +setupTwoFactorAuthentication1=\u062f\u0648 \u0641\u06cc\u06a9\u0679\u0631 \u06a9\u06cc \u062a\u0648\u062b\u06cc\u0642 \u0633\u06cc\u0679 \u0627\u067e \u06a9\u0631\u06cc\u06ba\u06d4 + +action.new_item=\u0646\u06cc\u0627 {0} +Lane\ System=\u0644\u06cc\u0646 \u0633\u0633\u0679\u0645 +Module\ Class=\u0645\u0627\u0688\u06cc\u0648\u0644 \u06a9\u0644\u0627\u0633 +Module\ Name=\u0645\u0627\u0688\u06cc\u0648\u0644 \u06a9\u0627 \u0646\u0627\u0645 +Module\ ID=\u0645\u0627\u0688\u06cc\u0648\u0644 ID +Description=\u062a\u0641\u0635\u06cc\u0644 +SensorML\ URL=\u0633\u06cc\u0646\u0633\u0631 \u0627\u06cc\u0645 \u0627\u06cc\u0644 \u06cc\u0648 \u0622\u0631 \u0627\u06cc\u0644 +UniqueID=\u0645\u0646\u0641\u0631\u062f ID +Last\ Updated=\u0622\u062e\u0631\u06cc \u062a\u0627\u0632\u06c1 \u06a9\u0627\u0631\u06cc +Auto\ Start=\u0622\u0679\u0648 \u0627\u0633\u0679\u0627\u0631\u0679 +Delete\ Data\ on\ Lane\ Removal=\u0644\u06cc\u0646 \u06c1\u0679\u0627\u0646\u06d2 \u067e\u0631 \u0688\u06cc\u0679\u0627 \u06a9\u0648 \u062d\u0630\u0641 \u06a9\u0631\u06cc\u06ba\u06d4 +Latitude=\u0639\u0631\u0636 \u0628\u0644\u062f +Longitude=\u0637\u0648\u0644 \u0627\u0644\u0628\u0644\u062f +Altitude=\u0627\u0648\u0646\u0686\u0627\u0626\u06cc +Initial\ RPM\ Config=\u0627\u0628\u062a\u062f\u0627\u0626\u06cc RPM \u062a\u0631\u062a\u06cc\u0628 +Initial\ Camera\ Config=\u0627\u0628\u062a\u062f\u0627\u0626\u06cc \u06a9\u06cc\u0645\u0631\u06d2 \u06a9\u06cc \u062a\u0631\u062a\u06cc\u0628 +Lane\ Options\ Config=\u0644\u06cc\u0646 \u06a9\u06d2 \u0627\u062e\u062a\u06cc\u0627\u0631\u0627\u062a \u06a9\u06cc \u062a\u0631\u062a\u06cc\u0628 +tab.general=\u062c\u0646\u0631\u0644 +tab.readme=\u067e\u0691\u06be\u06cc\u06ba +Fixed\ Location=\u0641\u06a9\u0633\u0688 \u0644\u0648\u06a9\u06cc\u0634\u0646 +Fixed\ Orientation=\u0641\u06a9\u0633\u0688 \u0648\u0627\u0642\u0641\u06cc\u062a +# Auto-extracted DisplayInfo labels and descriptions +URL\ of\ SensorML\ file\ providing\ the\ base\ description\ of\ the\ sensor=\u0633\u06cc\u0646\u0633\u0631 \u0627\u06cc\u0645 \u0627\u06cc\u0644 \u0641\u0627\u0626\u0644 \u06a9\u0627 URL \u062c\u0648 \u0633\u06cc\u0646\u0633\u0631 \u06a9\u06cc \u0628\u0646\u06cc\u0627\u062f\u06cc \u062a\u0641\u0635\u06cc\u0644 \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 +Time\ at\ which\ the\ SensorML\ description\ was\ last\ updated=\u0648\u06c1 \u0648\u0642\u062a \u062c\u0633 \u067e\u0631 \u0633\u06cc\u0646\u0633\u0631 \u0627\u06cc\u0645 \u0627\u06cc\u0644 \u06a9\u06cc \u062a\u0641\u0635\u06cc\u0644 \u06a9\u0648 \u0622\u062e\u0631\u06cc \u0628\u0627\u0631 \u0627\u067e \u0688\u06cc\u0679 \u06a9\u06cc\u0627 \u06af\u06cc\u0627 \u062a\u06be\u0627\u06d4 +Geodetic\ latitude,\ in\ degrees=\u062c\u06cc\u0648\u0688\u06cc\u0679\u06a9 \u0639\u0631\u0636 \u0628\u0644\u062f\u060c \u0688\u06af\u0631\u06cc\u0648\u06ba \u0645\u06cc\u06ba +Longitude,\ in\ degrees=\u0637\u0648\u0644 \u0627\u0644\u0628\u0644\u062f\u060c \u0688\u06af\u0631\u06cc\u0648\u06ba \u0645\u06cc\u06ba +Height\ above\ ellipsoid,\ in\ meters=\u0628\u06cc\u0636\u0648\u06cc \u0633\u06d2 \u0627\u0648\u067e\u0631 \u06a9\u06cc \u0627\u0648\u0646\u0686\u0627\u0626\u06cc\u060c \u0645\u06cc\u0679\u0631 \u0645\u06cc\u06ba +X\ coordinate,\ in\ meters=\u0627\u06cc\u06a9\u0633 \u06a9\u0648\u0622\u0631\u0688\u06cc\u0646\u06cc\u0679\u060c \u0645\u06cc\u0679\u0631 \u0645\u06cc\u06ba +Y\ coordinate,\ in\ meters=Y \u06a9\u0648\u0622\u0631\u0688\u06cc\u0646\u06cc\u0679\u060c \u0645\u06cc\u0679\u0631 \u0645\u06cc\u06ba +Z\ coordinate,\ in\ meters=Z \u06a9\u0648\u0622\u0631\u0688\u06cc\u0646\u06cc\u0679\u060c \u0645\u06cc\u0679\u0631 \u0645\u06cc\u06ba +Pitch\ angle\ about\ Y\ axis,\ in\ degrees=Y \u0645\u062d\u0648\u0631 \u06a9\u06d2 \u0628\u0627\u0631\u06d2 \u0645\u06cc\u06ba \u067e\u0686 \u0632\u0627\u0648\u06cc\u06c1\u060c \u0688\u06af\u0631\u06cc \u0645\u06cc\u06ba +Roll\ angle\ about\ X\ axis,\ in\ degrees=X \u0645\u062d\u0648\u0631 \u06a9\u06d2 \u0628\u0627\u0631\u06d2 \u0645\u06cc\u06ba \u0632\u0627\u0648\u06cc\u06c1 \u06a9\u0648 \u0688\u06af\u0631\u06cc \u0645\u06cc\u06ba \u0631\u0648\u0644 \u06a9\u0631\u06cc\u06ba\u06d4 +Location\ in\ EPSG\:4979\ coordinate\ reference\ frame=EPSG \u0645\u06cc\u06ba \u0645\u0642\u0627\u0645: 4979 \u06a9\u0648\u0622\u0631\u0688\u06cc\u0646\u06cc\u0679 \u0631\u06cc\u0641\u0631\u0646\u0633 \u0641\u0631\u06cc\u0645 +Database\ Number=\u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 \u0646\u0645\u0628\u0631 +Numerical\ identifier\ of\ the\ database.\ Each\ database\ that\ should\ be\ exposed\ via\ the\ federated\ database\ API\ must\ have\ a\ unique\ number\ on\ the\ sensor\ hub.\ If\ visibility\ through\ the\ federated\ database\ is\ not\ desired,\ it\ can\ be\ omitted.=\u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 \u06a9\u0627 \u0639\u062f\u062f\u06cc \u0634\u0646\u0627\u062e\u062a \u06a9\u0646\u0646\u062f\u06c1\u06d4 \u06c1\u0631 \u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 \u062c\u0648 \u0641\u06cc\u0688\u0631\u06cc\u0679\u0688 \u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 API \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06d2 \u0633\u0627\u0645\u0646\u06d2 \u0622\u0646\u0627 \u0686\u0627\u06c1\u06cc\u06d2 \u0627\u0633 \u06a9\u0627 \u0633\u06cc\u0646\u0633\u0631 \u06c1\u0628 \u067e\u0631 \u0627\u06cc\u06a9 \u0645\u0646\u0641\u0631\u062f \u0646\u0645\u0628\u0631 \u06c1\u0648\u0646\u0627 \u0686\u0627\u06c1\u06cc\u06d2\u06d4 \u0627\u06af\u0631 \u0641\u06cc\u0688\u0631\u06cc\u0679\u0688 \u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06d2 \u0645\u0631\u0626\u06cc\u062a \u0645\u0637\u0644\u0648\u0628 \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u060c \u062a\u0648 \u0627\u0633\u06d2 \u0686\u06be\u0648\u0691\u0627 \u062c\u0627 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4 +Enables\ fine-grained\ permission-based\ access\ control\ for\ this\ module=\u0627\u0633 \u0645\u0627\u0688\u06cc\u0648\u0644 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0639\u0645\u062f\u06c1 \u0627\u062c\u0627\u0632\u062a \u067e\u0631 \u0645\u0628\u0646\u06cc \u0631\u0633\u0627\u0626\u06cc \u06a9\u0646\u0679\u0631\u0648\u0644 \u06a9\u0648 \u0641\u0639\u0627\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 +Require\ Authentication=\u062a\u0635\u062f\u06cc\u0642 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u06d2\u06d4 +Set\ to\ require\ remote\ users\ to\ be\ authentified\ before\ they\ can\ use\ this\ service=\u0627\u0633 \u0633\u0631\u0648\u0633 \u06a9\u0648 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u0646\u06d2 \u0633\u06d2 \u067e\u06c1\u0644\u06d2 \u062f\u0648\u0631 \u062f\u0631\u0627\u0632 \u06a9\u06d2 \u0635\u0627\u0631\u0641\u06cc\u0646 \u06a9\u06cc \u062a\u0635\u062f\u06cc\u0642 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06a9\u06d2 \u0644\u06cc\u06d2 \u0633\u06cc\u0679 \u06a9\u0631\u06cc\u06ba\u06d4 +Endpoint=\u0627\u062e\u062a\u062a\u0627\u0645\u06cc \u0646\u0642\u0637\u06c1 +Unique\ local\ ID\ of\ the\ module=\u0645\u0627\u0688\u06cc\u0648\u0644 \u06a9\u06cc \u0645\u0646\u0641\u0631\u062f \u0645\u0642\u0627\u0645\u06cc ID +User\ description\ for\ the\ module=\u0645\u0627\u0688\u06cc\u0648\u0644 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0635\u0627\u0631\u0641 \u06a9\u06cc \u062a\u0641\u0635\u06cc\u0644 +Set\ to\ automatically\ start\ the\ module\ when\ it\ is\ loaded=\u0645\u0627\u0688\u06cc\u0648\u0644 \u0644\u0648\u0688 \u06c1\u0648\u0646\u06d2 \u067e\u0631 \u0627\u0633\u06d2 \u062e\u0648\u062f \u0628\u062e\u0648\u062f \u0634\u0631\u0648\u0639 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0633\u06cc\u0679 \u06a9\u0631\u06cc\u06ba\u06d4 +Module\ implementation\ class=\u0645\u0627\u0688\u06cc\u0648\u0644 \u06a9\u06d2 \u0646\u0641\u0627\u0630 \u06a9\u06cc \u06a9\u0644\u0627\u0633 +User\ chosen\ name\ for\ the\ module=\u0645\u0627\u0688\u06cc\u0648\u0644 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0635\u0627\u0631\u0641 \u06a9\u0627 \u0645\u0646\u062a\u062e\u0628 \u06a9\u0631\u062f\u06c1 \u0646\u0627\u0645 +Name\ of\ topic/queue\ to\ use=\u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0645\u0648\u0636\u0648\u0639/\u0642\u0637\u0627\u0631 \u06a9\u0627 \u0646\u0627\u0645 +Enable/disable\ writing\ to\ queue=\u0642\u0637\u0627\u0631 \u0645\u06cc\u06ba \u0644\u06a9\u06be\u0646\u06d2 \u06a9\u0648 \u0641\u0639\u0627\u0644/\u063a\u06cc\u0631 \u0641\u0639\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u06d4 +Enable/disable\ reading\ from\ queue=\u0642\u0637\u0627\u0631 \u0633\u06d2 \u067e\u0691\u06be\u0646\u06d2 \u06a9\u0648 \u0641\u0639\u0627\u0644/\u063a\u06cc\u0631 \u0641\u0639\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u06d4 +Protocol\ Options=\u067e\u0631\u0648\u0679\u0648\u06a9\u0648\u0644 \u06a9\u06d2 \u0627\u062e\u062a\u06cc\u0627\u0631\u0627\u062a +Common\ Configuration=\u0639\u0627\u0645 \u062a\u0631\u062a\u06cc\u0628 +Common\ configuration\ for\ sensors\ in\ the\ array=\u0635\u0641 \u0645\u06cc\u06ba \u0633\u06cc\u0646\u0633\u0631 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0639\u0627\u0645 \u062a\u0631\u062a\u06cc\u0628 +Sensors\ Configuration=\u0633\u06cc\u0646\u0633\u0631 \u06a9\u0646\u0641\u06cc\u06af\u0631\u06cc\u0634\u0646 +Subsystem\ Config=\u0633\u0628 \u0633\u0633\u0679\u0645 \u06a9\u06cc \u062a\u0631\u062a\u06cc\u0628 +Configuration\ of\ the\ subsystem=\u0630\u06cc\u0644\u06cc \u0646\u0638\u0627\u0645 \u06a9\u06cc \u062a\u0631\u062a\u06cc\u0628 +Relative\ Location=\u0631\u0634\u062a\u06c1 \u062f\u0627\u0631 \u0645\u0642\u0627\u0645 +Location\ of\ this\ subsystem\ relative\ to\ the\ main\ system\ or\ platform\ reference\ frame=\u0645\u0631\u06a9\u0632\u06cc \u0646\u0638\u0627\u0645 \u06cc\u0627 \u067e\u0644\u06cc\u0679 \u0641\u0627\u0631\u0645 \u0631\u06cc\u0641\u0631\u0646\u0633 \u0641\u0631\u06cc\u0645 \u0633\u06d2 \u0645\u062a\u0639\u0644\u0642 \u0627\u0633 \u0633\u0628 \u0633\u0633\u0679\u0645 \u06a9\u0627 \u0645\u0642\u0627\u0645 +Relative\ Orientation=\u0631\u0634\u062a\u06c1 \u062f\u0627\u0631 \u0648\u0627\u0642\u0641\u06cc\u062a +Orientation\ of\ this\ subsystem\ relative\ to\ the\ main\ system\ or\ platform\ reference\ frame=\u0645\u0631\u06a9\u0632\u06cc \u0646\u0638\u0627\u0645 \u06cc\u0627 \u067e\u0644\u06cc\u0679 \u0641\u0627\u0631\u0645 \u0631\u06cc\u0641\u0631\u0646\u0633 \u0641\u0631\u06cc\u0645 \u0633\u06d2 \u0645\u062a\u0639\u0644\u0642 \u0627\u0633 \u0633\u0628 \u0633\u0633\u0679\u0645 \u06a9\u06cc \u0648\u0627\u0642\u0641\u06cc\u062a +Fixed\ system\ orientation\ in\ the\ local\ NED\ reference\ frame=\u0645\u0642\u0627\u0645\u06cc NED \u0631\u06cc\u0641\u0631\u0646\u0633 \u0641\u0631\u06cc\u0645 \u0645\u06cc\u06ba \u0641\u06a9\u0633\u0688 \u0633\u0633\u0679\u0645 \u06a9\u06cc \u0648\u0627\u0642\u0641\u06cc\u062a +Subsystems=\u0630\u06cc\u0644\u06cc \u0646\u0638\u0627\u0645 +Configuration\ of\ components\ of\ this\ sensor\ system=\u0627\u0633 \u0633\u06cc\u0646\u0633\u0631 \u0633\u0633\u0679\u0645 \u06a9\u06d2 \u0627\u062c\u0632\u0627\u0621 \u06a9\u06cc \u062a\u0631\u062a\u06cc\u0628 +Database\ Config=\u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 \u06a9\u06cc \u062a\u0631\u062a\u06cc\u0628 +Configuration\ of\ underlying\ database=\u0628\u0646\u06cc\u0627\u062f\u06cc \u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 \u06a9\u06cc \u062a\u0631\u062a\u06cc\u0628 +System\ UIDs=\u0633\u0633\u0679\u0645 UIDs +Unique\ IDs\ of\ system\ drivers\ handled\ by\ this\ database=\u0627\u0633 \u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06d2 \u0633\u0646\u0628\u06be\u0627\u0644\u06d2 \u06af\u0626\u06d2 \u0633\u0633\u0679\u0645 \u0688\u0631\u0627\u0626\u06cc\u0648\u0631\u0632 \u06a9\u06cc \u0645\u0646\u0641\u0631\u062f IDs +Automatic\ Purge\ Policy=\u062e\u0648\u062f\u06a9\u0627\u0631 \u0635\u0627\u0641 \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u067e\u0627\u0644\u06cc\u0633\u06cc +Policy\ for\ automatically\ purging\ historical\ data=\u062a\u0627\u0631\u06cc\u062e\u06cc \u0688\u06cc\u0679\u0627 \u06a9\u0648 \u062e\u0648\u062f \u0628\u062e\u0648\u062f \u0635\u0627\u0641 \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u067e\u0627\u0644\u06cc\u0633\u06cc +Uncheck\ to\ disable\ auto-purge\ temporarily=\u0639\u0627\u0631\u0636\u06cc \u0637\u0648\u0631 \u067e\u0631 \u062e\u0648\u062f\u06a9\u0627\u0631 \u0635\u0627\u0641 \u06a9\u0631\u0646\u06d2 \u06a9\u0648 \u063a\u06cc\u0631 \u0641\u0639\u0627\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0646\u0634\u0627\u0646 \u06c1\u0679\u0627 \u062f\u06cc\u06ba\u06d4 +Purge\ Execution\ Period=\u067e\u06be\u0627\u0646\u0633\u06cc \u06a9\u06cc \u0645\u062f\u062a \u06a9\u0648 \u0635\u0627\u0641 \u06a9\u0631\u06cc\u06ba\u06d4 +Unique\ IDs\ of\ system\ drivers\ to\ purge=\u0635\u0627\u0641 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0633\u0633\u0679\u0645 \u0688\u0631\u0627\u0626\u06cc\u0648\u0631\u0632 \u06a9\u06cc \u0645\u0646\u0641\u0631\u062f IDs +Max\ Record\ Age=\u0632\u06cc\u0627\u062f\u06c1 \u0633\u06d2 \u0632\u06cc\u0627\u062f\u06c1 \u0631\u06cc\u06a9\u0627\u0631\u0688 \u0639\u0645\u0631 +SensorML\ File=\u0633\u06cc\u0646\u0633\u0631 \u0627\u06cc\u0645 \u0627\u06cc\u0644 \u0641\u0627\u0626\u0644 +Path\ of\ SensorML\ description\ of\ the\ process=\u0633\u06cc\u0646\u0633\u0631 \u0627\u06cc\u0645 \u0627\u06cc\u0644 \u06a9\u0627 \u0631\u0627\u0633\u062a\u06c1 \u0639\u0645\u0644 \u06a9\u06cc \u062a\u0641\u0635\u06cc\u0644 +List\ of\ users\ allowed\ access\ to\ this\ system=\u0627\u0633 \u0633\u0633\u0679\u0645 \u062a\u06a9 \u0631\u0633\u0627\u0626\u06cc \u06a9\u06cc \u0627\u062c\u0627\u0632\u062a \u0648\u0627\u0644\u06d2 \u0635\u0627\u0631\u0641\u06cc\u0646 \u06a9\u06cc \u0641\u06c1\u0631\u0633\u062a +List\ of\ security\ roles=\u062d\u0641\u0627\u0638\u062a\u06cc \u06a9\u0631\u062f\u0627\u0631\u0648\u06ba \u06a9\u06cc \u0641\u06c1\u0631\u0633\u062a +User\ ID=\u06cc\u0648\u0632\u0631 \u0622\u0626\u06cc \u0688\u06cc +Role\ ID=\u06a9\u0631\u062f\u0627\u0631 \u06a9\u06cc \u0634\u0646\u0627\u062e\u062a +Source\ Database\ ID=\u0645\u0627\u062e\u0630 \u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 ID +ID\ of\ database\ module\ to\ read\ data\ from\ (Federated\ database\ will\ be\ used\ if\ not\ set=\u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 \u0645\u0627\u0688\u06cc\u0648\u0644 \u06a9\u06cc ID \u0633\u06d2 \u0688\u06cc\u0679\u0627 \u067e\u0691\u06be\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 +HTTP\ Port=HTTP \u067e\u0648\u0631\u0679 +HTTPS\ Port=HTTPS \u067e\u0648\u0631\u0679 +Root\ URL\ where\ static\ web\ content\ will\ be\ served.=\u0631\u0648\u0679 URL \u062c\u06c1\u0627\u06ba \u062c\u0627\u0645\u062f \u0648\u06cc\u0628 \u0645\u0648\u0627\u062f \u067e\u06cc\u0634 \u06a9\u06cc\u0627 \u062c\u0627\u0626\u06d2 \u06af\u0627\u06d4 +Directory\ where\ static\ web\ content\ is\ located.=\u0688\u0627\u0626\u0631\u06a9\u0679\u0631\u06cc \u062c\u06c1\u0627\u06ba \u062c\u0627\u0645\u062f \u0648\u06cc\u0628 \u0645\u0648\u0627\u062f \u0648\u0627\u0642\u0639 \u06c1\u06d2\u06d4 +Root\ URL\ where\ the\ server\ will\ accept\ requests.\ This\ will\ be\ the\ prefix\ to\ all\ servlet\ URLs.=\u0631\u0648\u0679 \u06cc\u0648 \u0622\u0631 \u0627\u06cc\u0644 \u062c\u06c1\u0627\u06ba \u0633\u0631\u0648\u0631 \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u06cc\u06ba \u0642\u0628\u0648\u0644 \u06a9\u0631\u06d2 \u06af\u0627\u06d4 \u06cc\u06c1 \u062a\u0645\u0627\u0645 \u0633\u0631\u0648\u0644\u06cc\u0679 \u06cc\u0648 \u0622\u0631 \u0627\u06cc\u0644 \u06a9\u0627 \u0633\u0627\u0628\u0642\u06c1 \u200b\u200b\u06c1\u0648\u06af\u0627\u06d4 +Proxy\ Base\ URL=\u067e\u0631\u0627\u06a9\u0633\u06cc \u0628\u06cc\u0633 \u06cc\u0648 \u0622\u0631 \u0627\u06cc\u0644 +Public\ URL\ as\ viewed\ from\ the\ outside\ when\ requests\ transit\ through\ a\ proxy\ server.=\u0639\u0648\u0627\u0645\u06cc URL \u062c\u06cc\u0633\u0627 \u06a9\u06c1 \u0628\u0627\u06c1\u0631 \u0633\u06d2 \u062f\u06cc\u06a9\u06be\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2 \u062c\u0628 \u067e\u0631\u0627\u06a9\u0633\u06cc \u0633\u0631\u0648\u0631 \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06d2 \u0679\u0631\u0627\u0646\u0632\u0679 \u06a9\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u06a9\u06cc \u062c\u0627\u062a\u06cc \u06c1\u06d2\u06d4 +Authentication\ Method=\u062a\u0635\u062f\u06cc\u0642 \u06a9\u0627 \u0637\u0631\u06cc\u0642\u06c1 +Method\ used\ to\ authenticate\ users\ on\ this\ server=\u0627\u0633 \u0633\u0631\u0648\u0631 \u067e\u0631 \u0635\u0627\u0631\u0641\u06cc\u0646 \u06a9\u06cc \u062a\u0648\u062b\u06cc\u0642 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06c1\u0648\u0646\u06d2 \u0648\u0627\u0644\u0627 \u0637\u0631\u06cc\u0642\u06c1 +Path\ to\ a\ key\ store\ containing\ the\ certificate\ and\ keypair\ that\ this\ server\ will\ present\ to\ clients\ when\ accessed\ over\ HTTPS.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ \"javax.net.ssl.keyStore\"\ system\ property.\=Path to a key store containing the certificate and keypair that this server will present to clients when accessed over HTTPS. If this value is blank, will default to using the value of the \"javax.net.ssl.keyStore\" system property. +Alias\ for\ the\ public/private\ keypair\ within\ the\ key\ store\ that\ will\ be\ used\ to\ identify\ this\ server.=\u06a9\u0644\u06cc\u062f\u06cc \u0627\u0633\u0679\u0648\u0631 \u06a9\u06d2 \u0627\u0646\u062f\u0631 \u0639\u0648\u0627\u0645\u06cc/\u0646\u062c\u06cc \u06a9\u06cc \u062c\u0648\u0691\u06cc \u06a9\u06d2 \u0644\u06cc\u06d2 \u0639\u0631\u0641 \u062c\u0648 \u0627\u0633 \u0633\u0631\u0648\u0631 \u06a9\u06cc \u0634\u0646\u0627\u062e\u062a \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u06cc\u0627 \u062c\u0627\u0626\u06d2 \u06af\u0627\u06d4 +Path\ to\ the\ TLS\ trust\ store\ that\ is\ used\ when\ client\ authentication\ is\ required.\ Ignored\ if\ client\ certificate\ authentication\ is\ not\ used.\ Certificates\ in\ this\ file\ designate\ the\ signing\ authorities\ for\ client\ certificates\ that\ will\ be\ trusted.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ \"javax.net.ssl.trustStore\"\ system\ property.\=Path to the TLS trust store that is used when client authentication is required. Ignored if client certificate authentication is not used. Certificates in this file designate the signing authorities for client certificates that will be trusted. If this value is blank, will default to using the value of the \"javax.net.ssl.trustStore\" system property. +Password\ for\ the\ trust\ store.\ Ignored\ if\ client\ certificate\ authentication\ is\ not\ used.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ \"javax.net.ssl.trustStorePassword\"\ system\ property.\=Password for the trust store. Ignored if client certificate authentication is not used. If this value is blank, will default to using the value of the \"javax.net.ssl.trustStorePassword\" system property. +Enable\ CORS=CORS \u06a9\u0648 \u0641\u0639\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u06d4 +Enable\ generation\ of\ CORS\ headers\ to\ allow\ cross-domain\ requests\ from\ browsers=\u0628\u0631\u0627\u0624\u0632\u0631\u0632 \u0633\u06d2 \u06a9\u0631\u0627\u0633 \u0688\u0648\u0645\u06cc\u0646 \u06a9\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u0648\u06ba \u06a9\u06cc \u0627\u062c\u0627\u0632\u062a \u062f\u06cc\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 CORS \u06c1\u06cc\u0688\u0631 \u06a9\u06cc \u062a\u062e\u0644\u06cc\u0642 \u06a9\u0648 \u0641\u0639\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u06d4 +Capabilities\ Info=\u0635\u0644\u0627\u062d\u06cc\u062a\u0648\u06ba \u06a9\u06cc \u0645\u0639\u0644\u0648\u0645\u0627\u062a +Information\ included\ in\ the\ service\ capabilities\ document=\u0633\u0631\u0648\u0633 \u06a9\u06cc \u0635\u0644\u0627\u062d\u06cc\u062a\u0648\u06ba \u06a9\u06cc \u062f\u0633\u062a\u0627\u0648\u06cc\u0632 \u0645\u06cc\u06ba \u0634\u0627\u0645\u0644 \u0645\u0639\u0644\u0648\u0645\u0627\u062a +Enable\ HTTP\ GET=HTTP GET \u06a9\u0648 \u0641\u0639\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u06d4 +Enables/disables\ HTTP\ GET\ bindings\ on\ operations\ that\ support\ it=HTTP GET \u0628\u0627\u0626\u0646\u0688\u0646\u06af \u06a9\u0648 \u0627\u0646 \u06a9\u0627\u0631\u0631\u0648\u0627\u0626\u06cc\u0648\u06ba \u067e\u0631 \u0641\u0639\u0627\u0644/\u063a\u06cc\u0631 \u0641\u0639\u0627\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u062c\u0648 \u0627\u0633 \u06a9\u06cc \u062d\u0645\u0627\u06cc\u062a \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 +Enable\ HTTP\ POST=HTTP POST \u06a9\u0648 \u0641\u0639\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u06d4 +Enables/disables\ HTTP\ POST\ bindings\ on\ operations\ that\ support\ it=HTTP POST \u0628\u0627\u0626\u0646\u0688\u0646\u06af \u06a9\u0648 \u0627\u0646 \u06a9\u0627\u0631\u0631\u0648\u0627\u0626\u06cc\u0648\u06ba \u067e\u0631 \u0641\u0639\u0627\u0644/\u063a\u06cc\u0631 \u0641\u0639\u0627\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u062c\u0648 \u0627\u0633 \u06a9\u06cc \u062d\u0645\u0627\u06cc\u062a \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 +Enable\ HTTP\ SOAP=HTTP SOAP \u06a9\u0648 \u0641\u0639\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u06d4 +Enables/disables\ HTTP\ SOAP\ bindings\ on\ operations\ that\ support\ it=HTTP SOAP \u0628\u0627\u0626\u0646\u0688\u0646\u06af \u06a9\u0648 \u0627\u0646 \u06a9\u0627\u0631\u0631\u0648\u0627\u0626\u06cc\u0648\u06ba \u067e\u0631 \u0641\u0639\u0627\u0644/\u063a\u06cc\u0631 \u0641\u0639\u0627\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u062c\u0648 \u0627\u0633 \u06a9\u06cc \u062d\u0645\u0627\u06cc\u062a \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 +Connection\ Timeout=\u06a9\u0646\u06a9\u0634\u0646 \u0679\u0627\u0626\u0645 \u0622\u0624\u0679 +Reconnect\ Period=\u0645\u062f\u062a \u06a9\u0648 \u062f\u0648\u0628\u0627\u0631\u06c1 \u062c\u0648\u0691\u06cc\u06ba\u06d4 +Max\ Reconnect\ Attempts=\u0632\u06cc\u0627\u062f\u06c1 \u0633\u06d2 \u0632\u06cc\u0627\u062f\u06c1 \u062f\u0648\u0628\u0627\u0631\u06c1 \u062c\u0691\u0646\u06d2 \u06a9\u06cc \u06a9\u0648\u0634\u0634\u06cc\u06ba\u06d4 +Maximum\ number\ of\ times\ the\ client\ will\ attempt\ to\ reconnect\ when\ the\ connection\ is\ not\ available\ or\ lost.\ A\ negative\ value\ means\ that\ there\ is\ no\ limit\ to\ the\ number\ of\ reconnection\ attempts.\ Zero\ means\ not\ to\ attempt\ reconnection.=\u06a9\u0646\u06a9\u0634\u0646 \u062f\u0633\u062a\u06cc\u0627\u0628 \u0646\u06c1 \u06c1\u0648\u0646\u06d2 \u06cc\u0627 \u06a9\u06be\u0648 \u062c\u0627\u0646\u06d2 \u067e\u0631 \u06a9\u0644\u0627\u0626\u0646\u0679 \u06a9\u06d2 \u062f\u0648\u0628\u0627\u0631\u06c1 \u062c\u0691\u0646\u06d2 \u06a9\u06cc \u0632\u06cc\u0627\u062f\u06c1 \u0633\u06d2 \u0632\u06cc\u0627\u062f\u06c1 \u062a\u0639\u062f\u0627\u062f\u06d4 \u0645\u0646\u0641\u06cc \u0642\u062f\u0631 \u06a9\u0627 \u0645\u0637\u0644\u0628 \u06c1\u06d2 \u06a9\u06c1 \u062f\u0648\u0628\u0627\u0631\u06c1 \u06a9\u0646\u06a9\u0634\u0646 \u06a9\u06cc \u06a9\u0648\u0634\u0634\u0648\u06ba \u06a9\u06cc \u062a\u0639\u062f\u0627\u062f \u06a9\u06cc \u06a9\u0648\u0626\u06cc \u062d\u062f \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4 \u0635\u0641\u0631 \u06a9\u0627 \u0645\u0637\u0644\u0628 \u06c1\u06d2 \u062f\u0648\u0628\u0627\u0631\u06c1 \u0631\u0627\u0628\u0637\u06c1 \u0642\u0627\u0626\u0645 \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u06a9\u0648\u0634\u0634 \u0646\u06c1 \u06a9\u0631\u0646\u0627\u06d4 +IP\ or\ DNS\ name\ of\ remote\ host=\u0631\u06cc\u0645\u0648\u0679 \u06c1\u0648\u0633\u0679 \u06a9\u0627 IP \u06cc\u0627 DNS \u0646\u0627\u0645 +IP\ of\ local\ network\ interface\ to\ bind\ to\ or\ 'AUTO'\ to\ select\ it\ automatically=\u067e\u0627\u0628\u0646\u062f \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0645\u0642\u0627\u0645\u06cc \u0646\u06cc\u0679 \u0648\u0631\u06a9 \u0627\u0646\u0679\u0631\u0641\u06cc\u0633 \u06a9\u0627 IP \u06cc\u0627 \u0627\u0633\u06d2 \u062e\u0648\u062f \u0628\u062e\u0648\u062f \u0645\u0646\u062a\u062e\u0628 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 ''''AUTO'''' +Connection\ Options=\u06a9\u0646\u06a9\u0634\u0646 \u06a9\u06d2 \u0627\u062e\u062a\u06cc\u0627\u0631\u0627\u062a +Serial\ port\ device\ name.\ Usually\ something\ like\ /dev/ttyXXX\ on\ Linux=\u0633\u06cc\u0631\u06cc\u0644 \u067e\u0648\u0631\u0679 \u0688\u06cc\u0648\u0627\u0626\u0633 \u06a9\u0627 \u0646\u0627\u0645\u06d4 \u0639\u0627\u0645 \u0637\u0648\u0631 \u067e\u0631 \u0644\u06cc\u0646\u06a9\u0633 \u067e\u0631 /dev/ttyXXX \u06a9\u06cc \u0637\u0631\u062d \u06a9\u0686\u06be +Minimum\ number\ of\ bytes\ to\ receive\ before\ they\ are\ sent\ to\ the\ caller=\u06a9\u0627\u0644 \u06a9\u0631\u0646\u06d2 \u0648\u0627\u0644\u06d2 \u06a9\u0648 \u0628\u06be\u06cc\u062c\u06d2 \u062c\u0627\u0646\u06d2 \u0633\u06d2 \u067e\u06c1\u0644\u06d2 \u0648\u0635\u0648\u0644 \u06a9\u0631\u0646\u06d2 \u0648\u0627\u0644\u06d2 \u0628\u0627\u0626\u0679\u0633 \u06a9\u06cc \u06a9\u0645 \u0627\u0632 \u06a9\u0645 \u062a\u0639\u062f\u0627\u062f +Local\ port\ number\ to\ use\ on\ the\ local\ host=\u0645\u0642\u0627\u0645\u06cc \u0645\u06cc\u0632\u0628\u0627\u0646 \u067e\u0631 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0645\u0642\u0627\u0645\u06cc \u067e\u0648\u0631\u0679 \u0646\u0645\u0628\u0631 +Physical\ address\ of\ Bluetooth\ device\ to\ connect\ to=\u0628\u0644\u0648\u0679\u0648\u062a\u06be \u0688\u06cc\u0648\u0627\u0626\u0633 \u06a9\u0627 \u062c\u0633\u0645\u0627\u0646\u06cc \u067e\u062a\u06c1 \u062c\u0633 \u0633\u06d2 \u0645\u0646\u0633\u0644\u06a9 \u06c1\u0648\u0646\u0627 \u06c1\u06d2\u06d4 +Port\ number\ to\ connect\ to\ on\ remote\ host=\u0631\u06cc\u0645\u0648\u0679 \u06c1\u0648\u0633\u0679 \u067e\u0631 \u062c\u0691\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u067e\u0648\u0631\u0679 \u0646\u0645\u0628\u0631 +User\ Name=\u0635\u0627\u0631\u0641 \u06a9\u0627 \u0646\u0627\u0645 +Remote\ user\ name=\u0631\u06cc\u0645\u0648\u0679 \u0635\u0627\u0631\u0641 \u06a9\u0627 \u0646\u0627\u0645 +Password=\u067e\u0627\u0633 \u0648\u0631\u0688 +Remote\ password=\u0631\u06cc\u0645\u0648\u0679 \u067e\u0627\u0633 \u0648\u0631\u0688 +Secure\ communications\ with\ SSL/TLS=SSL/TLS \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0645\u062d\u0641\u0648\u0638 \u0645\u0648\u0627\u0635\u0644\u0627\u062a +Enable\ to\ check\ if\ remote\ host\ is\ reachable\ before\ attempting\ further\ operations=\u0645\u0632\u06cc\u062f \u06a9\u0627\u0631\u0631\u0648\u0627\u0626\u06cc\u0648\u06ba \u06a9\u06cc \u06a9\u0648\u0634\u0634 \u06a9\u0631\u0646\u06d2 \u0633\u06d2 \u067e\u06c1\u0644\u06d2 \u06cc\u06c1 \u0686\u06cc\u06a9 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0641\u0639\u0627\u0644 \u06a9\u0631\u06cc\u06ba \u06a9\u06c1 \u0622\u06cc\u0627 \u0631\u06cc\u0645\u0648\u0679 \u06c1\u0648\u0633\u0679 \u0642\u0627\u0628\u0644 \u0631\u0633\u0627\u0626\u06cc \u06c1\u06d2\u06d4 +Path\ or\ resource\ or\ service\ relative\ to\ server\ root=\u0633\u0631\u0648\u0631 \u0631\u0648\u0679 \u0633\u06d2 \u0645\u062a\u0639\u0644\u0642 \u0631\u0627\u0633\u062a\u06c1 \u06cc\u0627 \u0648\u0633\u0627\u0626\u0644 \u06cc\u0627 \u062e\u062f\u0645\u062a +Unique\ ID\ of\ system\ group=\u0633\u0633\u0679\u0645 \u06af\u0631\u0648\u067e \u06a9\u06cc \u0645\u0646\u0641\u0631\u062f ID +Name\ of\ system\ group=\u0633\u0633\u0679\u0645 \u06af\u0631\u0648\u067e \u06a9\u0627 \u0646\u0627\u0645 +Description\ of\ system\ group=\u0633\u0633\u0679\u0645 \u06af\u0631\u0648\u067e \u06a9\u06cc \u062a\u0641\u0635\u06cc\u0644 +List\ of\ bundle\ repository\ URLs=\u0628\u0646\u0688\u0644 \u0631\u06cc\u067e\u0648\u0632\u0679\u0631\u06cc URLs \u06a9\u06cc \u0641\u06c1\u0631\u0633\u062a +A\ human\ readable\ friendly\ identifier\ for\ the\ deployment=\u062a\u0639\u06cc\u0646\u0627\u062a\u06cc \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u06cc\u06a9 \u0627\u0646\u0633\u0627\u0646\u06cc \u067e\u0691\u06be\u0646\u06d2 \u06a9\u06d2 \u0642\u0627\u0628\u0644 \u062f\u0648\u0633\u062a\u0627\u0646\u06c1 \u0634\u0646\u0627\u062e\u062a \u06a9\u0646\u0646\u062f\u06c1 +Enable\ Landing\ Page=\u0644\u06cc\u0646\u0688\u0646\u06af \u067e\u06cc\u062c \u06a9\u0648 \u0641\u0639\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u06d4 +Enable\ Landing\ Servlet\ to\ redirect\ users\ to\ landing\ page=\u0635\u0627\u0631\u0641\u06cc\u0646 \u06a9\u0648 \u0644\u06cc\u0646\u0688\u0646\u06af \u067e\u06cc\u062c \u067e\u0631 \u0631\u06cc \u0688\u0627\u0626\u0631\u06cc\u06a9\u0679 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0644\u06cc\u0646\u0688\u0646\u06af \u0633\u0631\u0648\u0644\u06cc\u0679 \u06a9\u0648 \u0641\u0639\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u06d4 +Config\ Class=\u062a\u0631\u062a\u06cc\u0628 \u06a9\u0644\u0627\u0633 +Type\ of\ module\ config\ class\ for\ which\ a\ custom\ panel\ must\ be\ generated=\u0645\u0627\u0688\u06cc\u0648\u0644 \u06a9\u0646\u0641\u06af \u06a9\u0644\u0627\u0633 \u06a9\u06cc \u0642\u0633\u0645 \u062c\u0633 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u06cc\u06a9 \u062d\u0633\u0628 \u0636\u0631\u0648\u0631\u062a \u067e\u06cc\u0646\u0644 \u0628\u0646\u0627\u0646\u0627 \u0636\u0631\u0648\u0631\u06cc \u06c1\u06d2\u06d4 +UI\ Class=UI \u06a9\u0644\u0627\u0633 +Fully\ qualified\ name\ of\ class\ implementing\ IModuleAdminPanel=IModuleAdminPanel \u06a9\u0648 \u0646\u0627\u0641\u0630 \u06a9\u0631\u0646\u06d2 \u0648\u0627\u0644\u06cc \u06a9\u0644\u0627\u0633 \u06a9\u0627 \u0645\u06a9\u0645\u0644 \u0637\u0648\u0631 \u067e\u0631 \u0627\u06c1\u0644 \u0646\u0627\u0645 + +# Auto-extracted property IDs +sensorML=\u0633\u06cc\u0646\u0633\u0631 \u0627\u06cc\u0645 \u0627\u06cc\u0644 +lastUpdated=\u0622\u062e\u0631\u06cc \u062a\u0627\u0632\u06c1 \u06a9\u0627\u0631\u06cc +lat=\u0644\u0627\u062a +lon=\u0644\u0648\u0646 +alt=Alt +x=\u0627\u06cc\u06a9\u0633 +y=Y +z=Z +heading=\u0633\u0631\u062e\u06cc +pitch=\u067e\u0686 +roll=\u0631\u0648\u0644 +location=\u0645\u0642\u0627\u0645 +orientation=\u0648\u0627\u0642\u0641\u06cc\u062a +databaseNum=\u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 \u0646\u0645\u0628\u0631 +enableAccessControl=\u0631\u0633\u0627\u0626\u06cc \u06a9\u0646\u0679\u0631\u0648\u0644 \u06a9\u0648 \u0641\u0639\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u06d4 +requireAuth=Auth \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u06d2\u06d4 +mimeType=\u0645\u0627\u0626\u0645 \u06a9\u06cc \u0642\u0633\u0645 +className=\u06a9\u0644\u0627\u0633 \u06a9\u0627 \u0646\u0627\u0645 +endPoint=\u0627\u062e\u062a\u062a\u0627\u0645\u06cc \u0646\u0642\u0637\u06c1 +id=\u0622\u0626\u06cc \u0688\u06cc +description=\u062a\u0641\u0635\u06cc\u0644 +autoStart=\u0622\u0679\u0648 \u0627\u0633\u0679\u0627\u0631\u0679 +topicName=\u0645\u0648\u0636\u0648\u0639 \u06a9\u0627 \u0646\u0627\u0645 +enablePublish=\u0627\u0634\u0627\u0639\u062a \u06a9\u0648 \u0641\u0639\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u06d4 +enableSubscribe=\u0633\u0628\u0633\u06a9\u0631\u0627\u0626\u0628 \u06a9\u0648 \u0641\u0639\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u06d4 +protocol=\u067e\u0631\u0648\u0679\u0648\u06a9\u0648\u0644 +moduleConfigPath=\u0645\u0627\u0688\u06cc\u0648\u0644 \u06a9\u0646\u0641\u06cc\u06af \u067e\u0627\u062a\u06be +moduleDataPath=\u0645\u0627\u0688\u06cc\u0648\u0644 \u0688\u06cc\u0679\u0627 \u067e\u0627\u062a\u06be +commonConfig=\u0639\u0627\u0645 \u062a\u0631\u062a\u06cc\u0628 +sensors=Sensors +config=\u062a\u0631\u062a\u06cc\u0628 +uniqueID=\u0645\u0646\u0641\u0631\u062f \u0622\u0626\u06cc \u0688\u06cc +subsystems=\u0630\u06cc\u0644\u06cc \u0646\u0638\u0627\u0645 +dbConfig=\u0688\u06cc \u0628\u06cc \u062a\u0631\u062a\u06cc\u0628 +systemUIDs=\u0633\u0633\u0679\u0645 Uids +autoPurgeConfig=\u0622\u0679\u0648 \u067e\u0631\u062c \u06a9\u0646\u0641\u06cc\u06af\u0631\u06cc\u0634\u0646 +minCommitPeriod=\u06a9\u0645 \u0633\u06d2 \u06a9\u0645 \u06a9\u0645\u0679 \u06a9\u06cc \u0645\u062f\u062a +enabled=\u0641\u0639\u0627\u0644 +purgePeriod=\u0635\u0627\u0641 \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u0645\u062f\u062a +maxRecordAge=\u0632\u06cc\u0627\u062f\u06c1 \u0633\u06d2 \u0632\u06cc\u0627\u062f\u06c1 \u0631\u06cc\u06a9\u0627\u0631\u0688 \u0639\u0645\u0631 +users=\u0635\u0627\u0631\u0641\u06cc\u0646 +roles=\u06a9\u0631\u062f\u0627\u0631 +allow=\u0627\u062c\u0627\u0632\u062a \u062f\u06cc\u06ba\u06d4 +deny=\u0627\u0646\u06a9\u0627\u0631 \u06a9\u0631\u0646\u0627 +userID=\u06cc\u0648\u0632\u0631 \u0622\u0626\u06cc \u0688\u06cc +name=\u0646\u0627\u0645 +password=\u067e\u0627\u0633 \u0648\u0631\u0688 +certificate=\u0633\u0631\u0679\u06cc\u0641\u06a9\u06cc\u0679 +twoFactorSecret=\u062f\u0648 \u0641\u06cc\u06a9\u0679\u0631 \u0633\u06cc\u06a9\u0631\u0679 +isTwoFactorEnabled=\u06a9\u06cc\u0627 \u0679\u0648 \u0641\u06cc\u06a9\u0679\u0631 \u0641\u0639\u0627\u0644 \u06c1\u06d2\u06d4 +roleID=\u06a9\u0631\u062f\u0627\u0631 \u06a9\u06cc \u0634\u0646\u0627\u062e\u062a +sourceDatabaseId=\u0645\u0627\u062e\u0630 \u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 \u06a9\u06cc \u0634\u0646\u0627\u062e\u062a +includeFilter=\u0641\u0644\u0679\u0631 \u0634\u0627\u0645\u0644 \u06a9\u0631\u06cc\u06ba\u06d4 +excludeFilter=\u0641\u0644\u0679\u0631 \u06a9\u0648 \u062e\u0627\u0631\u062c \u06a9\u0631\u06cc\u06ba\u06d4 +httpPort=\u0627\u06cc\u0686 \u0679\u06cc \u067e\u06cc \u067e\u0648\u0631\u0679 +httpsPort=\u0627\u06cc\u0686 \u0679\u06cc \u067e\u06cc \u0627\u06cc\u0633 \u067e\u0648\u0631\u0679 +staticDocsRootUrl=\u062c\u0627\u0645\u062f \u062f\u0633\u062a\u0627\u0648\u06cc\u0632\u0627\u062a \u06a9\u0627 \u0631\u0648\u0679 \u06cc\u0648 \u0622\u0631 \u0627\u06cc\u0644 +staticDocsRootDir=\u062c\u0627\u0645\u062f \u0688\u0627\u06a9\u0633 \u0631\u0648\u0679 \u062f\u06cc\u0631 +servletsRootUrl=\u0633\u0631\u0648\u0644\u06cc\u0679\u0633 \u0631\u0648\u0679 \u06cc\u0648 \u0622\u0631 \u0627\u06cc\u0644 +proxyBaseUrl=\u067e\u0631\u0627\u06a9\u0633\u06cc \u0628\u06cc\u0633 \u06cc\u0648 \u0622\u0631 \u0627\u06cc\u0644 +authMethod=\u062a\u0648\u062b\u06cc\u0642 \u06a9\u0627 \u0637\u0631\u06cc\u0642\u06c1 +keyStorePath=\u06a9\u0644\u06cc\u062f\u06cc \u0627\u0633\u0679\u0648\u0631 \u06a9\u0627 \u0631\u0627\u0633\u062a\u06c1 +keyStorePassword=\u06a9\u0644\u06cc\u062f\u06cc \u0627\u0633\u0679\u0648\u0631 \u067e\u0627\u0633 \u0648\u0631\u0688 +keyAlias=\u06a9\u0644\u06cc\u062f\u06cc \u0639\u0631\u0641 +trustStorePath=\u0679\u0631\u0633\u0679 \u0627\u0633\u0679\u0648\u0631 \u067e\u0627\u062a\u06be +trustStorePassword=\u0679\u0631\u0633\u0679 \u0627\u0633\u0679\u0648\u0631 \u067e\u0627\u0633 \u0648\u0631\u0688 +xmlConfigFile=XML \u06a9\u0646\u0641\u06cc\u06af \u0641\u0627\u0626\u0644 +enableCORS=Cors \u06a9\u0648 \u0641\u0639\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u06d4 +title=Title +keywords=\u0645\u0637\u0644\u0648\u0628\u06c1 \u0627\u0644\u0641\u0627\u0638 +fees=\u0641\u06cc\u0633 +accessConstraints=\u0631\u0633\u0627\u0626\u06cc \u06a9\u06cc \u067e\u0627\u0628\u0646\u062f\u06cc\u0627\u06ba +serviceProvider=\u0633\u0631\u0648\u0633 \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u0646\u06d2 \u0648\u0627\u0644\u0627 +ogcCapabilitiesInfo=Ogc \u0635\u0644\u0627\u062d\u06cc\u062a\u0648\u06ba \u06a9\u06cc \u0645\u0639\u0644\u0648\u0645\u0627\u062a +enableHttpGET=Http Get \u06a9\u0648 \u0641\u0639\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u06d4 +enableHttpPOST=\u0627\u06cc\u0686 \u0679\u06cc \u0679\u06cc \u067e\u06cc \u067e\u0648\u0633\u0679 \u06a9\u0648 \u0641\u0639\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u06d4 +enableSOAP=\u0635\u0627\u0628\u0646 \u06a9\u0648 \u0641\u0639\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u06d4 +connectTimeout=\u0679\u0627\u0626\u0645 \u0622\u0624\u0679 \u06a9\u0648 \u0645\u0631\u0628\u0648\u0637 \u06a9\u0631\u06cc\u06ba\u06d4 +reconnectPeriod=\u0645\u062f\u062a \u06a9\u0648 \u062f\u0648\u0628\u0627\u0631\u06c1 \u062c\u0648\u0691\u06cc\u06ba\u06d4 +reconnectAttempts=\u06a9\u0648\u0634\u0634\u06cc\u06ba \u062f\u0648\u0628\u0627\u0631\u06c1 \u062c\u0648\u0691\u06cc\u06ba\u06d4 +deviceID=\u0688\u06cc\u0648\u0627\u0626\u0633 \u06a9\u06cc \u0634\u0646\u0627\u062e\u062a +deviceClass=\u0688\u06cc\u0648\u0627\u0626\u0633 \u06a9\u0644\u0627\u0633 +remoteHost=\u0631\u06cc\u0645\u0648\u0679 \u0645\u06cc\u0632\u0628\u0627\u0646 +localAddress=\u0645\u0642\u0627\u0645\u06cc \u067e\u062a\u06c1 +connection=\u06a9\u0646\u06a9\u0634\u0646 +portName=\u067e\u0648\u0631\u0679 \u06a9\u0627 \u0646\u0627\u0645 +baudRate=\u0628\u0648\u0688 \u0631\u06cc\u0679 +dataBits=\u0688\u06cc\u0679\u0627 \u0628\u0679\u0633 +stopBits=\u0633\u0679\u0627\u067e \u0628\u0679\u0633 +parity=\u0628\u0631\u0627\u0628\u0631\u06cc +receiveTimeout=\u0679\u0627\u0626\u0645 \u0622\u0624\u0679 \u0648\u0635\u0648\u0644 \u06a9\u0631\u06cc\u06ba\u06d4 +receiveThreshold=\u062a\u06be\u0631\u06cc\u0634\u0648\u0644\u0688 \u0648\u0635\u0648\u0644 \u06a9\u0631\u06cc\u06ba\u06d4 +remotePort=\u0631\u06cc\u0645\u0648\u0679 \u067e\u0648\u0631\u0679 +localPort=\u0645\u0642\u0627\u0645\u06cc \u0628\u0646\u062f\u0631\u06af\u0627\u06c1 +deviceAddress=\u0688\u06cc\u0648\u0627\u0626\u0633 \u06a9\u0627 \u067e\u062a\u06c1 +deviceName=\u0688\u06cc\u0648\u0627\u0626\u0633 \u06a9\u0627 \u0646\u0627\u0645 +serviceUuid=\u0633\u0631\u0648\u0633 Uuid +user=\u0635\u0627\u0631\u0641 +enableTLS=Tls \u06a9\u0648 \u0641\u0639\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u06d4 +checkReachability=\u0631\u0633\u0627\u0626\u06cc \u06a9\u06cc \u062c\u0627\u0646\u0686 \u06a9\u0631\u06cc\u06ba\u06d4 +resourcePath=\u0648\u0633\u0627\u0626\u0644 \u06a9\u0627 \u0631\u0627\u0633\u062a\u06c1 +uid=\u06cc\u0648 \u0622\u0626\u06cc \u0688\u06cc +securityRole=\u062d\u0641\u0627\u0638\u062a\u06cc \u06a9\u0631\u062f\u0627\u0631 +passwordField=\u067e\u0627\u0633 \u0648\u0631\u0688 \u0641\u06cc\u0644\u0688 +widgetSet=\u0648\u06cc\u062c\u06cc\u0679 \u0633\u06cc\u0679 +bundleRepoUrls=\u0628\u0646\u0688\u0644 \u0631\u06cc\u067e\u0648 \u06cc\u0648 \u0622\u0631 \u0627\u06cc\u0644 +customPanels=\u062d\u0633\u0628 \u0636\u0631\u0648\u0631\u062a \u067e\u06cc\u0646\u0644\u0632 +customForms=\u062d\u0633\u0628 \u0636\u0631\u0648\u0631\u062a \u0641\u0627\u0631\u0645 +deploymentName=\u062a\u0639\u06cc\u0646\u0627\u062a\u06cc \u06a9\u0627 \u0646\u0627\u0645 +enableLandingPage=\u0644\u06cc\u0646\u0688\u0646\u06af \u067e\u06cc\u062c \u06a9\u0648 \u0641\u0639\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u06d4 +configClass=\u062a\u0631\u062a\u06cc\u0628 \u06a9\u0644\u0627\u0633 +uiClass=\u06cc\u0648 \u0622\u0626\u06cc \u06a9\u0644\u0627\u0633 +moduleClass=\u0645\u0627\u0688\u06cc\u0648\u0644 \u06a9\u0644\u0627\u0633 + +# Auto-extracted hardcoded UI strings +testLinks1=\u0679\u06cc\u0633\u0679 \u0644\u0646\u06a9\u0633 +uniqueID1=\u0645\u0646\u0641\u0631\u062f ID +foiIDs1=FOI IDs +version1=\u0648\u0631\u0698\u0646 + +Connected\ Systems\ Endpoint=\u0645\u0646\u0633\u0644\u06a9 \u0633\u0633\u0679\u0645\u0632 \u0627\u06cc\u0646\u0688 \u067e\u0648\u0627\u0626\u0646\u0679 +Connected\ Systems\ endpoint\ where\ the\ requests\ are\ sent=\u0645\u0646\u0633\u0644\u06a9 \u0633\u0633\u0679\u0645\u0632 \u0627\u06cc\u0646\u0688 \u067e\u0648\u0627\u0626\u0646\u0679 \u062c\u06c1\u0627\u06ba \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u06cc\u06ba \u0628\u06be\u06cc\u062c\u06cc \u062c\u0627\u062a\u06cc \u06c1\u06cc\u06ba\u06d4 +Connection\ Settings=\u06a9\u0646\u06a9\u0634\u0646 \u06a9\u06cc \u062a\u0631\u062a\u06cc\u0628\u0627\u062a +Custom\ connector\ configurations=\u06a9\u0633\u0679\u0645 \u06a9\u0646\u06cc\u06a9\u0679\u0631 \u06a9\u0646\u0641\u06cc\u06af\u0631\u06cc\u0634\u0646\u0632 +Custom\ provider\ configurations=\u0627\u067e\u0646\u06cc \u0645\u0631\u0636\u06cc \u06a9\u06d2 \u0645\u0637\u0627\u0628\u0642 \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0646\u0646\u062f\u06c1 \u06a9\u0646\u0641\u06cc\u06af\u0631\u06cc\u0634\u0646\u0632 +Database\ ID=\u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 ID +Default\ live\ time-out\ for\ all\ offerings,\ unless\ overriden\ by\ custom\ provider\ settings=\u062a\u0645\u0627\u0645 \u067e\u06cc\u0634\u06a9\u0634\u0648\u06ba \u06a9\u06d2 \u0644\u06cc\u06d2 \u0688\u06cc\u0641\u0627\u0644\u0679 \u0644\u0627\u0626\u06cc\u0648 \u0679\u0627\u0626\u0645 \u0622\u0624\u0679\u060c \u062c\u0628 \u062a\u06a9 \u06a9\u06c1 \u062d\u0633\u0628 \u0636\u0631\u0648\u0631\u062a \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0646\u0646\u062f\u06c1 \u06a9\u06cc \u062a\u0631\u062a\u06cc\u0628\u0627\u062a \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06d2 \u0627\u0648\u0648\u0631 \u0631\u0627\u0626\u06cc\u0688 \u0646\u06c1 \u06a9\u06cc\u0627 \u062c\u0627\u0626\u06d2\u06d4 +Default\ live\ time-out\ for\ new\ offerings\ created\ via\ SOS-T=SOS-T \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06d2 \u062a\u062e\u0644\u06cc\u0642 \u06a9\u0631\u062f\u06c1 \u0646\u0626\u06cc \u067e\u06cc\u0634\u06a9\u0634\u0648\u06ba \u06a9\u06d2 \u0644\u06cc\u06d2 \u0688\u06cc\u0641\u0627\u0644\u0679 \u0644\u0627\u0626\u06cc\u0648 \u0679\u0627\u0626\u0645 \u0622\u0624\u0679 +Enable\ to\ use\ a\ persistent\ HTTP\ connection\ for\ InsertResult=InsertResult \u06a9\u06d2 \u0644\u06cc\u06d2 \u0645\u0633\u062a\u0642\u0644 HTTP \u06a9\u0646\u06a9\u0634\u0646 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0641\u0639\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u06d4 +Execution\ period\ of\ the\ purge\ policy\ (in\ seconds)=\u0635\u0627\u0641 \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u067e\u0627\u0644\u06cc\u0633\u06cc \u06a9\u06d2 \u0646\u0641\u0627\u0630 \u06a9\u06cc \u0645\u062f\u062a (\u0633\u06cc\u06a9\u0646\u0688 \u0645\u06cc\u06ba) +Filtered\ view\ to\ select\ systems\ exposed\ as\ read-only\ through\ this\ service=\u0627\u0633 \u0633\u0631\u0648\u0633 \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06d2 \u0635\u0631\u0641 \u067e\u0691\u06be\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0633\u0627\u0645\u0646\u06d2 \u0622\u0646\u06d2 \u0648\u0627\u0644\u06d2 \u0633\u0633\u0679\u0645\u0632 \u06a9\u0648 \u0645\u0646\u062a\u062e\u0628 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0641\u0644\u0679\u0631 \u0634\u062f\u06c1 \u0645\u0646\u0638\u0631 +Filtered\ view\ to\ select\ systems/datastreams\ to\ register\ with\ Connected\ Systems=\u06a9\u0646\u06cc\u06a9\u0679\u0688 \u0633\u0633\u0679\u0645\u0632 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0631\u062c\u0633\u0679\u0631 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0633\u0633\u0679\u0645\u0632/\u0688\u06cc\u0679\u0627 \u0627\u0633\u0679\u0631\u06cc\u0645\u0632 \u06a9\u0648 \u0645\u0646\u062a\u062e\u0628 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0641\u0644\u0679\u0631 \u0634\u062f\u06c1 \u0645\u0646\u0638\u0631 +Filtered\ view\ to\ select\ systems/datastreams\ to\ register\ with\ remote\ SOS=\u0631\u06cc\u0645\u0648\u0679 SOS \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0631\u062c\u0633\u0679\u0631 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0633\u0633\u0679\u0645/\u0688\u06cc\u0679\u0627 \u0627\u0633\u0679\u0631\u06cc\u0645\u0632 \u06a9\u0648 \u0645\u0646\u062a\u062e\u0628 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0641\u0644\u0679\u0631 \u0634\u062f\u06c1 \u0645\u0646\u0638\u0631 +Fixed\ system\ location\ in\ EPSG\ 4979\ (WGS84)\ coordinate\ system=EPSG 4979 (WGS84) \u06a9\u0648\u0622\u0631\u0688\u06cc\u0646\u06cc\u0679 \u0633\u0633\u0679\u0645 \u0645\u06cc\u06ba \u0641\u06a9\u0633\u0688 \u0633\u0633\u0679\u0645 \u0644\u0648\u06a9\u06cc\u0634\u0646 +For\ each\ connection\ or\ reconnection\ attempt,\ the\ client\ will\ wait\ for\ the\ remote\ side\ to\ respond\ until\ this\ timeout\ expires\ (in\ ms)=\u06c1\u0631 \u06a9\u0646\u06a9\u0634\u0646 \u06cc\u0627 \u062f\u0648\u0628\u0627\u0631\u06c1 \u06a9\u0646\u06a9\u0634\u0646 \u06a9\u06cc \u06a9\u0648\u0634\u0634 \u06a9\u06d2 \u0644\u06cc\u06d2\u060c \u06a9\u0644\u0627\u0626\u0646\u0679 \u0627\u0633 \u0679\u0627\u0626\u0645 \u0622\u0624\u0679 \u06a9\u06d2 \u062e\u062a\u0645 \u06c1\u0648\u0646\u06d2 \u062a\u06a9 \u0631\u06cc\u0645\u0648\u0679 \u0633\u0627\u0626\u06cc\u0688 \u06a9\u06d2 \u062c\u0648\u0627\u0628 \u06a9\u0627 \u0627\u0646\u062a\u0638\u0627\u0631 \u06a9\u0631\u06d2 \u06af\u0627 (\u0627\u06cc\u0645 \u0627\u06cc\u0633 \u0645\u06cc\u06ba) +Heading\ (or\ yaw)\ angle\ about\ Z\ axis\ in\ degrees=\u0688\u06af\u0631\u06cc \u0645\u06cc\u06ba Z \u0645\u062d\u0648\u0631 \u06a9\u06d2 \u0628\u0627\u0631\u06d2 \u0645\u06cc\u06ba \u0633\u0631\u062e\u06cc (\u06cc\u0627 yaw) \u0632\u0627\u0648\u06cc\u06c1 +How\ long\ the\ client\ will\ wait\ after\ connection\ is\ lost\ before\ it\ will\ attempt\ to\ reconnect\ (in\ ms)=\u06a9\u0646\u06a9\u0634\u0646 \u062e\u062a\u0645 \u06c1\u0648\u0646\u06d2 \u06a9\u06d2 \u0628\u0639\u062f \u06a9\u0644\u0627\u0626\u0646\u0679 \u06a9\u062a\u0646\u06cc \u062f\u06cc\u0631 \u0627\u0646\u062a\u0638\u0627\u0631 \u06a9\u0631\u06d2 \u06af\u0627 \u0627\u0633 \u0633\u06d2 \u067e\u06c1\u0644\u06d2 \u06a9\u06c1 \u0648\u06c1 \u062f\u0648\u0628\u0627\u0631\u06c1 \u062c\u0691\u0646\u06d2 \u06a9\u06cc \u06a9\u0648\u0634\u0634 \u06a9\u0631\u06d2 \u06af\u0627 (\u0627\u06cc\u0645 \u0627\u06cc\u0633 \u0645\u06cc\u06ba) +ID\ Generator=\u0622\u0626\u06cc \u0688\u06cc \u062c\u0646\u0631\u06cc\u0679\u0631 +ID\ of\ database\ module\ used\ for\ persisting\ data\ received\ by\ this\ service.\ If\ none\ is\ provided,\ new\ systems\ registered\ through\ this\ service\ will\ be\ available\ on\ the\ hub,\ but\ with\ no\ persistence\ guarantee\ across\ restarts.=\u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 \u0645\u0627\u0688\u06cc\u0648\u0644 \u06a9\u06cc ID \u062c\u0648 \u0627\u0633 \u0633\u0631\u0648\u0633 \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06d2 \u0645\u0648\u0635\u0648\u0644 \u06c1\u0648\u0646\u06d2 \u0648\u0627\u0644\u06d2 \u0688\u06cc\u0679\u0627 \u06a9\u0648 \u0628\u0631\u0642\u0631\u0627\u0631 \u0631\u06a9\u06be\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06c1\u0648\u062a\u06cc \u06c1\u06d2\u06d4 \u0627\u06af\u0631 \u06a9\u0648\u0626\u06cc \u0628\u06be\u06cc \u0641\u0631\u0627\u06c1\u0645 \u0646\u06c1\u06cc\u06ba \u06a9\u06cc\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2 \u062a\u0648\u060c \u0627\u0633 \u0633\u0631\u0648\u0633 \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06d2 \u0631\u062c\u0633\u0679\u0631\u0688 \u0646\u0626\u06d2 \u0633\u0633\u0679\u0645\u0632 \u062d\u0628 \u067e\u0631 \u062f\u0633\u062a\u06cc\u0627\u0628 \u06c1\u0648\u06ba \u06af\u06d2\u060c \u0644\u06cc\u06a9\u0646 \u062f\u0648\u0628\u0627\u0631\u06c1 \u0634\u0631\u0648\u0639 \u06c1\u0648\u0646\u06d2 \u067e\u0631 \u06a9\u0648\u0626\u06cc \u0645\u0633\u062a\u0642\u0644 \u0636\u0645\u0627\u0646\u062a \u0646\u06c1\u06cc\u06ba \u06c1\u0648\u06af\u06cc\u06d4 +ID\ of\ database\ module\ used\ for\ persisting\ data\ received\ by\ this\ service.\ If\ none\ is\ provided,\ new\ systems\ registered\ through\ this\ service\ will\ be\ available\ on\ the\ hub,\ but\ with\ no\ persistence\ guarantee\ across\ restarts.\ Only\ the\ latest\ observation\ from\ each\ datastream\ will\ be\ available\ and\ older\ observations\ will\ be\ discarded=\u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 \u0645\u0627\u0688\u06cc\u0648\u0644 \u06a9\u06cc ID \u062c\u0648 \u0627\u0633 \u0633\u0631\u0648\u0633 \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06d2 \u0645\u0648\u0635\u0648\u0644 \u06c1\u0648\u0646\u06d2 \u0648\u0627\u0644\u06d2 \u0688\u06cc\u0679\u0627 \u06a9\u0648 \u0628\u0631\u0642\u0631\u0627\u0631 \u0631\u06a9\u06be\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06c1\u0648\u062a\u06cc \u06c1\u06d2\u06d4 \u0627\u06af\u0631 \u06a9\u0648\u0626\u06cc \u0628\u06be\u06cc \u0641\u0631\u0627\u06c1\u0645 \u0646\u06c1\u06cc\u06ba \u06a9\u06cc\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2 \u062a\u0648\u060c \u0627\u0633 \u0633\u0631\u0648\u0633 \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06d2 \u0631\u062c\u0633\u0679\u0631\u0688 \u0646\u0626\u06d2 \u0633\u0633\u0679\u0645\u0632 \u062d\u0628 \u067e\u0631 \u062f\u0633\u062a\u06cc\u0627\u0628 \u06c1\u0648\u06ba \u06af\u06d2\u060c \u0644\u06cc\u06a9\u0646 \u062f\u0648\u0628\u0627\u0631\u06c1 \u0634\u0631\u0648\u0639 \u06c1\u0648\u0646\u06d2 \u067e\u0631 \u06a9\u0648\u0626\u06cc \u0645\u0633\u062a\u0642\u0644 \u0636\u0645\u0627\u0646\u062a \u0646\u06c1\u06cc\u06ba \u06c1\u0648\u06af\u06cc\u06d4 \u06c1\u0631 \u0688\u06cc\u0679\u0627 \u0627\u0633\u0679\u0631\u06cc\u0645 \u0633\u06d2 \u0635\u0631\u0641 \u062a\u0627\u0632\u06c1 \u062a\u0631\u06cc\u0646 \u0645\u0634\u0627\u06c1\u062f\u0627\u062a \u062f\u0633\u062a\u06cc\u0627\u0628 \u06c1\u0648\u06ba \u06af\u06d2 \u0627\u0648\u0631 \u067e\u0631\u0627\u0646\u06d2 \u0645\u0634\u0627\u06c1\u062f\u0627\u062a \u06a9\u0648 \u0645\u0633\u062a\u0631\u062f \u06a9\u0631\u062f\u06cc\u0627 \u062c\u0627\u0626\u06d2 \u06af\u0627\u06d4 +Individual\ configuration\ of\ sensors\ in\ the\ array\ (will\ override\ common\ configuration)=\u0635\u0641 \u0645\u06cc\u06ba \u0633\u06cc\u0646\u0633\u0631\u0632 \u06a9\u06cc \u0627\u0646\u0641\u0631\u0627\u062f\u06cc \u062a\u0631\u062a\u06cc\u0628 (\u0639\u0627\u0645 \u062a\u0631\u062a\u06cc\u0628 \u06a9\u0648 \u0627\u0648\u0648\u0631 \u0631\u0627\u0626\u06cc\u0688 \u06a9\u0631\u06d2 \u06af\u06cc) +List\ of\ observed\ properties\ URI\ to\ make\ available\ as\ outputs=\u0622\u0624\u0679 \u067e\u0679 \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631 \u062f\u0633\u062a\u06cc\u0627\u0628 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0645\u0634\u0627\u06c1\u062f\u06c1 \u0634\u062f\u06c1 \u062e\u0635\u0648\u0635\u06cc\u0627\u062a URI \u06a9\u06cc \u0641\u06c1\u0631\u0633\u062a +Mapping\ of\ custom\ formats\ mime-types\ to\ custom\ serializer\ classes=\u0627\u067e\u0646\u06cc \u0645\u0631\u0636\u06cc \u06a9\u06d2 \u0645\u0637\u0627\u0628\u0642 \u0633\u06cc\u0631\u06cc\u0644\u0627\u0626\u0632\u0631 \u06a9\u0644\u0627\u0633\u0648\u06ba \u06a9\u06d2 \u0644\u0626\u06d2 \u0627\u067e\u0646\u06cc \u0645\u0631\u0636\u06cc \u06a9\u06d2 \u0645\u0637\u0627\u0628\u0642 \u0641\u0627\u0631\u0645\u06cc\u0679\u0633 \u06a9\u06cc \u0645\u0627\u0626\u0645 \u0642\u0633\u0645 \u06a9\u06cc \u0645\u06cc\u067e\u0646\u06af +Mappings\ used\ by\ CURIE\ to\ URI\ resolver=CURIE \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06d2 URI \u0631\u06cc\u0632\u0648\u0644\u0648\u0631 \u0633\u06d2 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06c1\u0648\u0646\u06d2 \u0648\u0627\u0644\u06cc \u0645\u06cc\u067e\u0646\u06af\u0632 +Max\ Limit=\u0632\u06cc\u0627\u062f\u06c1 \u0633\u06d2 \u0632\u06cc\u0627\u062f\u06c1 \u062d\u062f +Max\ Observations\ Returned=\u0632\u06cc\u0627\u062f\u06c1 \u0633\u06d2 \u0632\u06cc\u0627\u062f\u06c1 \u0645\u0634\u0627\u06c1\u062f\u0627\u062a \u0648\u0627\u067e\u0633 \u0622\u0626\u06d2 +Max\ Records\ Returned=\u0632\u06cc\u0627\u062f\u06c1 \u0633\u06d2 \u0632\u06cc\u0627\u062f\u06c1 \u0631\u06cc\u06a9\u0627\u0631\u0688 \u0648\u0627\u067e\u0633 \u0622\u0626\u06d2 +Max\ delay\ between\ auto-commit\ execution,\ in\ seconds.\ 0\ to\ disable\ time-based\ auto-commit=\u0627\u0632 \u062e\u0648\u062f \u06a9\u0645\u0679 \u0627\u06cc\u06af\u0632\u06cc\u06a9\u06cc\u0648\u0634\u0646 \u06a9\u06d2 \u062f\u0631\u0645\u06cc\u0627\u0646 \u0632\u06cc\u0627\u062f\u06c1 \u0633\u06d2 \u0632\u06cc\u0627\u062f\u06c1 \u062a\u0627\u062e\u06cc\u0631\u060c \u0633\u06cc\u06a9\u0646\u0688\u0648\u06ba \u0645\u06cc\u06ba\u06d4 \u0648\u0642\u062a \u067e\u0631 \u0645\u0628\u0646\u06cc \u0622\u0679\u0648 \u06a9\u0645\u0679 \u06a9\u0648 \u063a\u06cc\u0631 \u0641\u0639\u0627\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 0 +Maximum\ age\ of\ data\ to\ be\ kept\ in\ storage\ (in\ seconds)=\u0633\u0679\u0648\u0631\u06cc\u062c \u0645\u06cc\u06ba \u0631\u06a9\u06be\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0688\u06cc\u0679\u0627 \u06a9\u06cc \u0632\u06cc\u0627\u062f\u06c1 \u0633\u06d2 \u0632\u06cc\u0627\u062f\u06c1 \u0639\u0645\u0631 (\u0633\u06cc\u06a9\u0646\u0688 \u0645\u06cc\u06ba) +Maximum\ number\ of\ FoI\ IDs\ listed\ in\ capabilities=\u0635\u0644\u0627\u062d\u06cc\u062a\u0648\u06ba \u0645\u06cc\u06ba \u062f\u0631\u062c FoI IDs \u06a9\u06cc \u0632\u06cc\u0627\u062f\u06c1 \u0633\u06d2 \u0632\u06cc\u0627\u062f\u06c1 \u062a\u0639\u062f\u0627\u062f +Maximum\ number\ of\ observations\ returned\ \ by\ a\ historical\ GetObservation\ request\ (for\ each\ selected\ offering)=\u0627\u06cc\u06a9 \u062a\u0627\u0631\u06cc\u062e\u06cc GetObservation \u06a9\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06d2 \u0648\u0627\u067e\u0633 \u06a9\u06cc\u06d2 \u06af\u0626\u06d2 \u0645\u0634\u0627\u06c1\u062f\u0627\u062a \u06a9\u06cc \u0632\u06cc\u0627\u062f\u06c1 \u0633\u06d2 \u0632\u06cc\u0627\u062f\u06c1 \u062a\u0639\u062f\u0627\u062f (\u06c1\u0631 \u0645\u0646\u062a\u062e\u0628 \u067e\u06cc\u0634\u06a9\u0634 \u06a9\u06d2 \u0644\u06cc\u06d2) +Maximum\ number\ of\ records\ in\ upload\ queue\ (used\ to\ compensate\ for\ variable\ bandwidth)=\u0627\u067e \u0644\u0648\u0688 \u06a9\u06cc \u0642\u0637\u0627\u0631 \u0645\u06cc\u06ba \u0631\u06cc\u06a9\u0627\u0631\u0688\u0632 \u06a9\u06cc \u0632\u06cc\u0627\u062f\u06c1 \u0633\u06d2 \u0632\u06cc\u0627\u062f\u06c1 \u062a\u0639\u062f\u0627\u062f (\u0645\u062a\u063a\u06cc\u0631 \u0628\u06cc\u0646\u0688\u0648\u062a\u06be \u06a9\u06cc \u062a\u0644\u0627\u0641\u06cc \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u06cc\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2) +Maximum\ number\ of\ resources\ returned\ in\ a\ single\ page=\u0627\u06cc\u06a9 \u0635\u0641\u062d\u06d2 \u0645\u06cc\u06ba \u0648\u0627\u067e\u0633 \u06a9\u06cc\u06d2 \u06af\u0626\u06d2 \u0648\u0633\u0627\u0626\u0644 \u06a9\u06cc \u0632\u06cc\u0627\u062f\u06c1 \u0633\u06d2 \u0632\u06cc\u0627\u062f\u06c1 \u062a\u0639\u062f\u0627\u062f +Maximum\ number\ of\ result\ records\ returned\ by\ a\ historical\ GetResult\ request=\u0627\u06cc\u06a9 \u062a\u0627\u0631\u06cc\u062e\u06cc GetResult \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06d2 \u0648\u0627\u067e\u0633 \u06a9\u06cc\u06d2 \u06af\u0626\u06d2 \u0646\u062a\u0627\u0626\u062c \u06a9\u06d2 \u0631\u06cc\u06a9\u0627\u0631\u0688\u0632 \u06a9\u06cc \u0632\u06cc\u0627\u062f\u06c1 \u0633\u06d2 \u0632\u06cc\u0627\u062f\u06c1 \u062a\u0639\u062f\u0627\u062f +Maximum\ number\ of\ stream\ errors\ before\ we\ try\ to\ reconnect\ to\ remote\ server=\u0627\u0633 \u0633\u06d2 \u067e\u06c1\u0644\u06d2 \u06a9\u06c1 \u06c1\u0645 \u0631\u06cc\u0645\u0648\u0679 \u0633\u0631\u0648\u0631 \u0633\u06d2 \u062f\u0648\u0628\u0627\u0631\u06c1 \u062c\u0691\u0646\u06d2 \u06a9\u06cc \u06a9\u0648\u0634\u0634 \u06a9\u0631\u06cc\u06ba\u060c \u0633\u0644\u0633\u0644\u06c1 \u06a9\u06cc \u0632\u06cc\u0627\u062f\u06c1 \u0633\u06d2 \u0632\u06cc\u0627\u062f\u06c1 \u062e\u0631\u0627\u0628\u06cc\u0627\u06ba +Memory\ cache\ size\ for\ page\ chunks,\ in\ KB=KB \u0645\u06cc\u06ba \u0635\u0641\u062d\u06c1 \u06a9\u06d2 \u0679\u06a9\u0691\u0648\u06ba \u06a9\u06d2 \u0644\u06cc\u06d2 \u0645\u06cc\u0645\u0648\u0631\u06cc \u06a9\u06cc\u0634\u06d2 \u06a9\u0627 \u0633\u0627\u0626\u0632 +Metadata\ of\ system\ group\ that\ will\ be\ created\ to\ contain\ all\ procedures/sensors\ registered\ through\ this\ service.\ Only\ sensors\ in\ this\ group\ will\ be\ modifiable\ by\ this\ service=\u0633\u0633\u0679\u0645 \u06af\u0631\u0648\u067e \u06a9\u0627 \u0645\u06cc\u0679\u0627 \u0688\u06cc\u0679\u0627 \u062c\u0648 \u0627\u0633 \u0633\u0631\u0648\u0633 \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06d2 \u0631\u062c\u0633\u0679\u0631\u0688 \u062a\u0645\u0627\u0645 \u0637\u0631\u06cc\u0642\u06c1 \u06a9\u0627\u0631/\u0633\u06cc\u0646\u0633\u0631 \u067e\u0631 \u0645\u0634\u062a\u0645\u0644 \u06c1\u0648 \u06af\u0627\u06d4 \u0627\u0633 \u06af\u0631\u0648\u067e \u0645\u06cc\u06ba \u0635\u0631\u0641 \u0633\u06cc\u0646\u0633\u0631 \u0627\u0633 \u0633\u0631\u0648\u0633 \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06d2 \u0642\u0627\u0628\u0644 \u062a\u0631\u0645\u06cc\u0645 \u06c1\u0648\u06ba \u06af\u06d2\u06d4 +Metadata\ of\ system\ group\ that\ will\ be\ created\ to\ contain\ all\ systems\ registered\ through\ this\ service.\ Only\ systems\ in\ this\ group\ will\ be\ modifiable\ by\ this\ service=\u0633\u0633\u0679\u0645 \u06af\u0631\u0648\u067e \u06a9\u0627 \u0645\u06cc\u0679\u0627 \u0688\u06cc\u0679\u0627 \u062c\u0648 \u0627\u0633 \u0633\u0631\u0648\u0633 \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06d2 \u0631\u062c\u0633\u0679\u0631\u0688 \u062a\u0645\u0627\u0645 \u0633\u0633\u0679\u0645\u0632 \u06a9\u0648 \u0634\u0627\u0645\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0628\u0646\u0627\u06cc\u0627 \u062c\u0627\u0626\u06d2 \u06af\u0627\u06d4 \u0627\u0633 \u0633\u0631\u0648\u0633 \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06d2 \u0635\u0631\u0641 \u0627\u0633 \u06af\u0631\u0648\u067e \u0645\u06cc\u06ba \u0645\u0648\u062c\u0648\u062f \u0633\u0633\u0679\u0645\u0632 \u0642\u0627\u0628\u0644 \u062a\u0631\u0645\u06cc\u0645 \u06c1\u0648\u06ba \u06af\u06d2\u06d4 +Method\ used\ to\ generate\ new\ resource\ IDs=\u0646\u0626\u06d2 \u0648\u0633\u0627\u0626\u0644 \u06a9\u06cc IDs \u0628\u0646\u0627\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06c1\u0648\u0646\u06d2 \u0648\u0627\u0644\u0627 \u0637\u0631\u06cc\u0642\u06c1 +Minimum\ fillrate\ above\ which\ auto\ compact\ operations\ may\ be\ triggered=\u06a9\u0645 \u0627\u0632 \u06a9\u0645 \u0641\u0644 \u0631\u06cc\u0679 \u062c\u0633 \u0633\u06d2 \u0627\u0648\u067e\u0631 \u0622\u0679\u0648 \u06a9\u0645\u067e\u06cc\u06a9\u0679 \u0622\u067e\u0631\u06cc\u0634\u0646\u0632 \u06a9\u0648 \u0645\u062a\u062d\u0631\u06a9 \u06a9\u06cc\u0627 \u062c\u0627 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4 +Minimum\ period\ between\ database\ commits\ (in\ ms)=\u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 \u06a9\u0645\u0679 \u06a9\u06d2 \u062f\u0631\u0645\u06cc\u0627\u0646 \u06a9\u0645 \u0627\u0632 \u06a9\u0645 \u0645\u062f\u062a (\u0627\u06cc\u0645 \u0627\u06cc\u0633 \u0645\u06cc\u06ba) +Names\ of\ datastreams\ whose\ data\ will\ be\ hidden\ from\ the\ SOS.\ If\ this\ is\ null,\ all\ streams\ produced\ by\ the\ procedure\ are\ exposed=\u0688\u06cc\u0679\u0627 \u0627\u0633\u0679\u0631\u06cc\u0645\u0632 \u06a9\u06d2 \u0646\u0627\u0645 \u062c\u0646 \u06a9\u0627 \u0688\u06cc\u0679\u0627 SOS \u0633\u06d2 \u0686\u06be\u067e\u0627\u06cc\u0627 \u062c\u0627\u0626\u06d2 \u06af\u0627\u06d4 \u0627\u06af\u0631 \u06cc\u06c1 \u06a9\u0627\u0644\u0639\u062f\u0645 \u06c1\u06d2 \u062a\u0648\u060c \u0637\u0631\u06cc\u0642\u06c1 \u06a9\u0627\u0631 \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06c1 \u062a\u06cc\u0627\u0631 \u06a9\u0631\u062f\u06c1 \u062a\u0645\u0627\u0645 \u0633\u0644\u0633\u0644\u06d2 \u0628\u06d2 \u0646\u0642\u0627\u0628 \u06c1\u0648 \u062c\u0627\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 +Observed\ Properties=\u0645\u0634\u0627\u06c1\u062f\u06c1 \u0634\u062f\u06c1 \u067e\u0631\u0627\u067e\u0631\u0679\u06cc\u0632 +Offering\ URI\ as\ exposed\ in\ capabilities.\ (if\ null,\ the\ procedure\ UID\ is\ used)=\u0635\u0644\u0627\u062d\u06cc\u062a\u0648\u06ba \u0645\u06cc\u06ba \u0638\u0627\u06c1\u0631 \u06c1\u0648\u0646\u06d2 \u06a9\u06d2 \u0645\u0637\u0627\u0628\u0642 URI \u06a9\u06cc \u067e\u06cc\u0634\u06a9\u0634 \u06a9\u0631\u0646\u0627\u06d4 (\u0627\u06af\u0631 \u06a9\u0627\u0644\u0639\u062f\u0645 \u06c1\u0648 \u062a\u0648 \u0637\u0631\u06cc\u0642\u06c1 \u06a9\u0627\u0631 UID \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u06cc\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2) +Offering\ description\ (if\ null,\ it\ will\ be\ auto-generated)=\u067e\u06cc\u0634\u06a9\u0634 \u06a9\u06cc \u062a\u0641\u0635\u06cc\u0644 (\u0627\u06af\u0631 \u06a9\u0627\u0644\u0639\u062f\u0645 \u06c1\u0648 \u062a\u0648 \u06cc\u06c1 \u062e\u0648\u062f \u0628\u062e\u0648\u062f \u062a\u06cc\u0627\u0631 \u06c1\u0648 \u062c\u0627\u0626\u06d2 \u06af\u06cc) +Offering\ name\ (if\ null,\ the\ procedure\ name\ is\ used)=\u067e\u06cc\u0634\u06a9\u0634 \u06a9\u0627 \u0646\u0627\u0645 (\u0627\u06af\u0631 \u06a9\u0627\u0644\u0639\u062f\u0645 \u06c1\u0648 \u062a\u0648 \u0637\u0631\u06cc\u0642\u06c1 \u06a9\u0627\u0631 \u06a9\u0627 \u0646\u0627\u0645 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u06cc\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2) +Orientation\ as\ Euler\ angles\ in\ NED\ coordinate\ reference\ frame.\nOrder\ of\ rotations\ is\ z-y\u2019-x"\ (in\ rotating\ frame)\ or\ x-y-z\ (in\ fixed\ frame)=NED \u06a9\u0648\u0622\u0631\u0688\u06cc\u0646\u06cc\u0679 \u0631\u06cc\u0641\u0631\u0646\u0633 \u0641\u0631\u06cc\u0645 \u0645\u06cc\u06ba \u06cc\u0648\u0644\u0631 \u0632\u0627\u0648\u06cc\u0648\u06ba \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631 \u0648\u0627\u0642\u0641\u06cc\u062a\u06d4\n\u06af\u0631\u062f\u0634\u0648\u06ba \u06a9\u06cc \u062a\u0631\u062a\u06cc\u0628 z-y\u2019-x" \u06c1\u06d2 (\u06af\u06be\u0648\u0645\u0646\u06d2 \u0648\u0627\u0644\u06d2 \u0641\u0631\u06cc\u0645 \u0645\u06cc\u06ba) \u06cc\u0627 x-y-z (\u0645\u0642\u0631\u0631\u06c1 \u0641\u0631\u06cc\u0645 \u0645\u06cc\u06ba) +Password\ for\ the\ key\ store\ (and\ for\ the\ keypair\ within\ the\ keystore).\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ "javax.net.ssl.keyStorePassword"\ system\ property.\ This\ value\ can\ use\ variable\ expansion\ expressions\ of\ the\ form\ "$${name}"\ (for\ environment\ variables\ and\ system\ properties)\ or\ "$${file;/path/to/file}"\ (for\ secret\ file\ contents).=\u06a9\u0644\u06cc\u062f\u06cc \u0627\u0633\u0679\u0648\u0631 \u06a9\u06d2 \u0644\u06cc\u06d2 \u067e\u0627\u0633 \u0648\u0631\u0688 (\u0627\u0648\u0631 \u06a9\u06cc \u0627\u0633\u0679\u0648\u0631 \u06a9\u06d2 \u0627\u0646\u062f\u0631 \u06a9\u06cc \u062c\u0648\u0691\u06cc \u06a9\u06d2 \u0644\u06cc\u06d2)\u06d4 \u0627\u06af\u0631 \u06cc\u06c1 \u0642\u062f\u0631 \u062e\u0627\u0644\u06cc \u06c1\u06d2\u060c \u062a\u0648 "javax.net.ssl.keyStorePassword" \u0633\u0633\u0679\u0645 \u06a9\u06cc \u062e\u0627\u0635\u06cc\u062a \u06a9\u06cc \u0642\u062f\u0631 \u06a9\u0648 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u067e\u06c1\u0644\u06d2 \u0633\u06d2 \u0637\u06d2 \u0634\u062f\u06c1 \u06c1\u0648\u06af\u06cc\u06d4 \u06cc\u06c1 \u0642\u062f\u0631 "$${name}" (\u0645\u0627\u062d\u0648\u0644\u06cc\u0627\u062a\u06cc \u0645\u062a\u063a\u06cc\u0631\u0627\u062a \u0627\u0648\u0631 \u0633\u0633\u0679\u0645 \u06a9\u06cc \u062e\u0635\u0648\u0635\u06cc\u0627\u062a \u06a9\u06d2 \u0644\u06cc\u06d2) \u06cc\u0627 "$${file;/path/to/file}" (\u062e\u0641\u06cc\u06c1 \u0641\u0627\u0626\u0644 \u06a9\u06d2 \u0645\u0648\u0627\u062f \u06a9\u06d2 \u0644\u06cc\u06d2) \u0641\u0627\u0631\u0645 \u06a9\u06d2 \u0645\u062a\u063a\u06cc\u0631 \u062a\u0648\u0633\u06cc\u0639\u06cc \u0627\u0638\u06c1\u0627\u0631 \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631 \u0633\u06a9\u062a\u06cc \u06c1\u06d2\u06d4 +Password\ for\ the\ trust\ store.\ Ignored\ if\ client\ certificate\ authentication\ is\ not\ used.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ "javax.net.ssl.trustStorePassword"\ system\ property.\ This\ value\ can\ use\ variable\ expansion\ expressions\ of\ the\ form\ "$${name}"\ (for\ environment\ variables\ and\ system\ properties)\ or\ "$${file;/path/to/file}"\ (for\ secret\ file\ contents).=\u0679\u0631\u0633\u0679 \u0627\u0633\u0679\u0648\u0631 \u06a9\u06d2 \u0644\u06cc\u06d2 \u067e\u0627\u0633 \u0648\u0631\u0688\u06d4 \u0646\u0638\u0631 \u0627\u0646\u062f\u0627\u0632 \u06a9\u06cc\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2 \u0627\u06af\u0631 \u06a9\u0644\u0627\u0626\u0646\u0679 \u0633\u0631\u0679\u06cc\u0641\u06a9\u06cc\u0679 \u06a9\u06cc \u062a\u0648\u062b\u06cc\u0642 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u0646\u06c1\u06cc\u06ba \u06a9\u06cc \u062c\u0627\u062a\u06cc \u06c1\u06d2\u06d4 \u0627\u06af\u0631 \u06cc\u06c1 \u0642\u062f\u0631 \u062e\u0627\u0644\u06cc \u06c1\u06d2\u060c \u062a\u0648 "javax.net.ssl.trustStorePassword" \u0633\u0633\u0679\u0645 \u067e\u0631\u0627\u067e\u0631\u0679\u06cc \u06a9\u06cc \u0642\u062f\u0631 \u06a9\u0648 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u067e\u06c1\u0644\u06d2 \u0633\u06d2 \u0637\u06d2 \u0634\u062f\u06c1 \u06c1\u0648\u06af\u06cc\u06d4 \u06cc\u06c1 \u0642\u062f\u0631 "$${name}" (\u0645\u0627\u062d\u0648\u0644\u06cc\u0627\u062a\u06cc \u0645\u062a\u063a\u06cc\u0631\u0627\u062a \u0627\u0648\u0631 \u0633\u0633\u0679\u0645 \u06a9\u06cc \u062e\u0635\u0648\u0635\u06cc\u0627\u062a \u06a9\u06d2 \u0644\u06cc\u06d2) \u06cc\u0627 "$${file;/path/to/file}" (\u062e\u0641\u06cc\u06c1 \u0641\u0627\u0626\u0644 \u06a9\u06d2 \u0645\u0648\u0627\u062f \u06a9\u06d2 \u0644\u06cc\u06d2) \u0641\u0627\u0631\u0645 \u06a9\u06d2 \u0645\u062a\u063a\u06cc\u0631 \u062a\u0648\u0633\u06cc\u0639\u06cc \u0627\u0638\u06c1\u0627\u0631 \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631 \u0633\u06a9\u062a\u06cc \u06c1\u06d2\u06d4 +Path\ of\ service\ endpoint\ relative\ to\ the\ context\ URL\ (e.g.\ http\://server.net/sensorhub)=\u0633\u06cc\u0627\u0642 \u0648 \u0633\u0628\u0627\u0642 \u06a9\u06d2 URL \u0633\u06d2 \u0645\u062a\u0639\u0644\u0642 \u0633\u0631\u0648\u0633 \u0627\u06cc\u0646\u0688 \u067e\u0648\u0627\u0626\u0646\u0679 \u06a9\u0627 \u0631\u0627\u0633\u062a\u06c1 (\u062c\u06cc\u0633\u06d2 http://server.net/sensorhub) +Path\ to\ a\ key\ store\ containing\ the\ certificate\ and\ keypair\ that\ this\ server\ will\ present\ to\ clients\ when\ accessed\ over\ HTTPS.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ "javax.net.ssl.keyStore"\ system\ property.\ This\ value\ can\ use\ variable\ expansion\ expressions\ of\ the\ form\ "$${name}"\ (for\ environment\ variables\ and\ system\ properties)\ or\ "$${file;/path/to/file}"\ (for\ secret\ file\ contents).=\u0633\u0631\u0679\u06cc\u0641\u06a9\u06cc\u0679 \u0627\u0648\u0631 \u06a9\u0644\u06cc\u062f\u06cc \u062c\u0648\u0691\u06d2 \u067e\u0631 \u0645\u0634\u062a\u0645\u0644 \u06a9\u0644\u06cc\u062f\u06cc \u0627\u0633\u0679\u0648\u0631 \u06a9\u0627 \u0631\u0627\u0633\u062a\u06c1 \u062c\u0633\u06d2 \u06cc\u06c1 \u0633\u0631\u0648\u0631 HTTPS \u067e\u0631 \u0631\u0633\u0627\u0626\u06cc \u062d\u0627\u0635\u0644 \u06a9\u0631\u0646\u06d2 \u067e\u0631 \u06a9\u0644\u0627\u0626\u0646\u0679\u0633 \u06a9\u0648 \u067e\u06cc\u0634 \u06a9\u0631\u06d2 \u06af\u0627\u06d4 \u0627\u06af\u0631 \u06cc\u06c1 \u0642\u062f\u0631 \u062e\u0627\u0644\u06cc \u06c1\u06d2\u060c \u062a\u0648 "javax.net.ssl.keyStore" \u0633\u0633\u0679\u0645 \u067e\u0631\u0627\u067e\u0631\u0679\u06cc \u06a9\u06cc \u0642\u062f\u0631 \u06a9\u0648 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u067e\u06c1\u0644\u06d2 \u0633\u06d2 \u0637\u06d2 \u0634\u062f\u06c1 \u06c1\u0648\u06af\u06cc\u06d4 \u06cc\u06c1 \u0642\u062f\u0631 "$${name}" (\u0645\u0627\u062d\u0648\u0644\u06cc\u0627\u062a\u06cc \u0645\u062a\u063a\u06cc\u0631\u0627\u062a \u0627\u0648\u0631 \u0633\u0633\u0679\u0645 \u06a9\u06cc \u062e\u0635\u0648\u0635\u06cc\u0627\u062a \u06a9\u06d2 \u0644\u06cc\u06d2) \u06cc\u0627 "$${file;/path/to/file}" (\u062e\u0641\u06cc\u06c1 \u0641\u0627\u0626\u0644 \u06a9\u06d2 \u0645\u0648\u0627\u062f \u06a9\u06d2 \u0644\u06cc\u06d2) \u0641\u0627\u0631\u0645 \u06a9\u06d2 \u0645\u062a\u063a\u06cc\u0631 \u062a\u0648\u0633\u06cc\u0639\u06cc \u0627\u0638\u06c1\u0627\u0631 \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631 \u0633\u06a9\u062a\u06cc \u06c1\u06d2\u06d4 +Path\ to\ database\ file=\u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 \u0641\u0627\u0626\u0644 \u06a9\u0627 \u0631\u0627\u0633\u062a\u06c1 +Path\ to\ external\ config\ file\ (in\ Jetty\ IOC\ XML\ format)=\u0628\u06cc\u0631\u0648\u0646\u06cc \u062a\u0634\u06a9\u06cc\u0644 \u0641\u0627\u0626\u0644 \u06a9\u0627 \u0631\u0627\u0633\u062a\u06c1 (\u062c\u06cc\u0679\u06cc IOC XML \u0641\u0627\u0631\u0645\u06cc\u0679 \u0645\u06cc\u06ba) +Path\ to\ the\ TLS\ trust\ store\ that\ is\ used\ when\ client\ authentication\ is\ required.\ Ignored\ if\ client\ certificate\ authentication\ is\ not\ used.\ Certificates\ in\ this\ file\ designate\ the\ signing\ authorities\ for\ client\ certificates\ that\ will\ be\ trusted.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ "javax.net.ssl.trustStore"\ system\ property.\ This\ value\ can\ use\ variable\ expansion\ expressions\ of\ the\ form\ "$${name}"\ (for\ environment\ variables\ and\ system\ properties)\ or\ "$${file;/path/to/file}"\ (for\ secret\ file\ contents).=TLS \u0679\u0631\u0633\u0679 \u0627\u0633\u0679\u0648\u0631 \u06a9\u0627 \u0631\u0627\u0633\u062a\u06c1 \u062c\u0648 \u06a9\u0644\u0627\u0626\u0646\u0679 \u06a9\u06cc \u062a\u0635\u062f\u06cc\u0642 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06a9\u06d2 \u0648\u0642\u062a \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06c1\u0648\u062a\u0627 \u06c1\u06d2\u06d4 \u0646\u0638\u0631 \u0627\u0646\u062f\u0627\u0632 \u06a9\u06cc\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2 \u0627\u06af\u0631 \u06a9\u0644\u0627\u0626\u0646\u0679 \u0633\u0631\u0679\u06cc\u0641\u06a9\u06cc\u0679 \u06a9\u06cc \u062a\u0648\u062b\u06cc\u0642 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u0646\u06c1\u06cc\u06ba \u06a9\u06cc \u062c\u0627\u062a\u06cc \u06c1\u06d2\u06d4 \u0627\u0633 \u0641\u0627\u0626\u0644 \u0645\u06cc\u06ba \u0645\u0648\u062c\u0648\u062f \u0633\u0631\u0679\u06cc\u0641\u06a9\u06cc\u0679\u0633 \u06a9\u0644\u0627\u0626\u0646\u0679 \u0633\u0631\u0679\u06cc\u0641\u06a9\u06cc\u0679\u0633 \u06a9\u06d2 \u0644\u06cc\u06d2 \u062f\u0633\u062a\u062e\u0637 \u06a9\u0631\u0646\u06d2 \u0648\u0627\u0644\u06d2 \u062d\u06a9\u0627\u0645 \u06a9\u0648 \u0646\u0627\u0645\u0632\u062f \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba \u062c\u0646 \u067e\u0631 \u0628\u06be\u0631\u0648\u0633\u06c1 \u06a9\u06cc\u0627 \u062c\u0627\u0626\u06d2 \u06af\u0627\u06d4 \u0627\u06af\u0631 \u06cc\u06c1 \u0642\u062f\u0631 \u062e\u0627\u0644\u06cc \u06c1\u06d2\u060c \u062a\u0648 "javax.net.ssl.trustStore" \u0633\u0633\u0679\u0645 \u067e\u0631\u0627\u067e\u0631\u0679\u06cc \u06a9\u06cc \u0642\u062f\u0631 \u06a9\u0648 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u067e\u06c1\u0644\u06d2 \u0633\u06d2 \u0637\u06d2 \u0634\u062f\u06c1 \u06c1\u0648\u06af\u06cc\u06d4 \u06cc\u06c1 \u0642\u062f\u0631 "$${name}" (\u0645\u0627\u062d\u0648\u0644\u06cc\u0627\u062a\u06cc \u0645\u062a\u063a\u06cc\u0631\u0627\u062a \u0627\u0648\u0631 \u0633\u0633\u0679\u0645 \u06a9\u06cc \u062e\u0635\u0648\u0635\u06cc\u0627\u062a \u06a9\u06d2 \u0644\u06cc\u06d2) \u06cc\u0627 "$${file;/path/to/file}" (\u062e\u0641\u06cc\u06c1 \u0641\u0627\u0626\u0644 \u06a9\u06d2 \u0645\u0648\u0627\u062f \u06a9\u06d2 \u0644\u06cc\u06d2) \u0641\u0627\u0631\u0645 \u06a9\u06d2 \u0645\u062a\u063a\u06cc\u0631 \u062a\u0648\u0633\u06cc\u0639\u06cc \u0627\u0638\u06c1\u0627\u0631 \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631 \u0633\u06a9\u062a\u06cc \u06c1\u06d2\u06d4 +Port\ number\ to\ connect\ to\ on\ remote\ host\ (0\ to\ automatically\ select\ a\ port)=\u067e\u0648\u0631\u0679 \u0646\u0645\u0628\u0631 \u0631\u06cc\u0645\u0648\u0679 \u06c1\u0648\u0633\u0679 \u067e\u0631 \u062c\u0691\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 (0 \u062e\u0648\u062f \u0628\u062e\u0648\u062f \u067e\u0648\u0631\u0679 \u0645\u0646\u062a\u062e\u0628 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2) +SOS\ Endpoint=SOS \u0627\u06cc\u0646\u0688 \u067e\u0648\u0627\u0626\u0646\u0679 +SOS\ endpoint\ to\ fetch\ data\ from=\u0688\u06cc\u0679\u0627 \u062d\u0627\u0635\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 SOS \u0627\u06cc\u0646\u0688 \u067e\u0648\u0627\u0626\u0646\u0679 +SOS\ endpoint\ where\ the\ requests\ are\ sent=SOS \u0627\u06cc\u0646\u0688 \u067e\u0648\u0627\u0626\u0646\u0679 \u062c\u06c1\u0627\u06ba \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u06cc\u06ba \u0628\u06be\u06cc\u062c\u06cc \u062c\u0627\u062a\u06cc \u06c1\u06cc\u06ba\u06d4 +SPS\ Endpoint=\u0627\u06cc\u0633 \u067e\u06cc \u0627\u06cc\u0633 \u0627\u06cc\u0646\u0688 \u067e\u0648\u0627\u0626\u0646\u0679 +SPS\ endpoint\ to\ send\ commands\ to=\u06a9\u0645\u0627\u0646\u0688 \u0628\u06be\u06cc\u062c\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 SPS \u0627\u06cc\u0646\u0688 \u067e\u0648\u0627\u0626\u0646\u0679 +Security\ related\ options=\u0633\u06cc\u06a9\u06cc\u0648\u0631\u0679\u06cc \u0633\u06d2 \u0645\u062a\u0639\u0644\u0642 \u0627\u062e\u062a\u06cc\u0627\u0631\u0627\u062a +Sensor\ UID=\u0633\u06cc\u0646\u0633\u0631 UID +Set\ if\ WebSocket\ protocol\ should\ be\ used\ to\ get\ streaming\ data\ from\ SOS=\u0633\u06cc\u0679 \u06a9\u0631\u06cc\u06ba \u06a9\u06c1 \u0622\u06cc\u0627 SOS \u0633\u06d2 \u0627\u0633\u0679\u0631\u06cc\u0645\u0646\u06af \u0688\u06cc\u0679\u0627 \u062d\u0627\u0635\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 WebSocket \u067e\u0631\u0648\u0679\u0648\u06a9\u0648\u0644 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u06cc\u0627 \u062c\u0627\u0646\u0627 \u0686\u0627\u06c1\u06cc\u06d2\u06d4 +Set\ if\ offering\ is\ enabled,\ unset\ if\ disabled=\u0633\u06cc\u0679 \u06a9\u0631\u06cc\u06ba \u0627\u06af\u0631 \u067e\u06cc\u0634\u06a9\u0634 \u0641\u0639\u0627\u0644 \u06c1\u06d2\u060c \u063a\u06cc\u0631 \u0633\u06cc\u0679 \u0627\u06af\u0631 \u063a\u06cc\u0631 \u0641\u0639\u0627\u0644 \u06c1\u06d2\u06d4 +Set\ if\ websockets\ protocol\ should\ be\ used\ to\ send\ commands\ to\ SPS=\u0633\u06cc\u0679 \u06a9\u0631\u06cc\u06ba \u06a9\u06c1 \u0622\u06cc\u0627 \u0648\u06cc\u0628 \u0633\u0627\u06a9\u0679\u0633 \u067e\u0631\u0648\u0679\u0648\u06a9\u0648\u0644 \u06a9\u0648 SPS \u06a9\u0648 \u06a9\u0645\u0627\u0646\u0688 \u0628\u06be\u06cc\u062c\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u06cc\u0627 \u062c\u0627\u0646\u0627 \u0686\u0627\u06c1\u06cc\u06d2\u06d4 +Set\ to\ compact\ the\ database\ file\ when\ the\ database\ module\ is\ stopped\ or\ restarted=\u0688\u06cc\u0679\u0627\u0628\u06cc\u0633 \u0645\u0627\u0688\u06cc\u0648\u0644 \u06a9\u06d2 \u0628\u0646\u062f \u06cc\u0627 \u062f\u0648\u0628\u0627\u0631\u06c1 \u0634\u0631\u0648\u0639 \u06c1\u0648\u0646\u06d2 \u067e\u0631 \u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 \u0641\u0627\u0626\u0644 \u06a9\u0648 \u06a9\u0645\u067e\u06cc\u06a9\u0679 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0633\u06cc\u0679 \u06a9\u0631\u06cc\u06ba\u06d4 +Set\ to\ compress\ underlying\ file\ storage=\u0628\u0646\u06cc\u0627\u062f\u06cc \u0641\u0627\u0626\u0644 \u0627\u0633\u0679\u0648\u0631\u06cc\u062c \u06a9\u0648 \u06a9\u0645\u067e\u0631\u06cc\u0633 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0633\u06cc\u0679 \u06a9\u0631\u06cc\u06ba\u06d4 +Set\ to\ display\ MVStore\ debug\ info\ when\ database\ is\ closed\ (only\ if\ DEBUG\ log\ is\ also\ enabled)=\u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 \u0628\u0646\u062f \u06c1\u0648\u0646\u06d2 \u067e\u0631 MVStore \u0688\u06cc\u0628\u06af \u0627\u0646\u0641\u0627\u0631\u0645\u06cc\u0634\u0646 \u0688\u0633\u067e\u0644\u06d2 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0633\u06cc\u0679 \u06a9\u0631\u06cc\u06ba (\u0635\u0631\u0641 \u0627\u0633 \u0635\u0648\u0631\u062a \u0645\u06cc\u06ba \u062c\u0628 DEBUG \u0644\u0627\u06af \u0628\u06be\u06cc \u0641\u0639\u0627\u0644 \u06c1\u0648) +Set\ to\ enable\ spatial\ indexing\ of\ individual\ observations\ sampling\ locations\ (when\ provided)=\u0627\u0646\u0641\u0631\u0627\u062f\u06cc \u0645\u0634\u0627\u06c1\u062f\u0627\u062a \u06a9\u06d2 \u0646\u0645\u0648\u0646\u06d2 \u0644\u06cc\u0646\u06d2 \u0648\u0627\u0644\u06d2 \u0645\u0642\u0627\u0645\u0627\u062a \u06a9\u06cc \u0645\u0642\u0627\u0645\u06cc \u0627\u0634\u0627\u0631\u06cc\u06c1 \u0633\u0627\u0632\u06cc \u06a9\u0648 \u0641\u0639\u0627\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0633\u06cc\u0679 \u06a9\u0631\u06cc\u06ba (\u062c\u0628 \u0641\u0631\u0627\u06c1\u0645 \u06a9\u06cc\u0627 \u062c\u0627\u0626\u06d2) +Set\ to\ open\ the\ database\ as\ read-only=\u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 \u06a9\u0648 \u0635\u0631\u0641 \u067e\u0691\u06be\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u06a9\u06be\u0648\u0644\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0633\u06cc\u0679 \u06a9\u0631\u06cc\u06ba\u06d4 +Set\ to\ true\ to\ enable\ transactional\ operation\ support=\u0679\u0631\u0627\u0646\u0632\u06cc\u06a9\u0634\u0646\u0644 \u0622\u067e\u0631\u06cc\u0634\u0646 \u0633\u067e\u0648\u0631\u0679 \u06a9\u0648 \u0641\u0639\u0627\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u062f\u0631\u0633\u062a \u067e\u0631 \u0633\u06cc\u0679 \u06a9\u0631\u06cc\u06ba\u06d4 +Size\ of\ the\ auto-commit\ write\ buffer,\ in\ KB=KB \u0645\u06cc\u06ba \u0622\u0679\u0648 \u06a9\u0645\u0679 \u0631\u0627\u0626\u0679 \u0628\u0641\u0631 \u06a9\u0627 \u0633\u0627\u0626\u0632 +TCP\ port\ where\ server\ will\ listen\ for\ secure\ HTTP\ (HTTPS)\ connections\ (use\ 0\ to\ disable\ HTTPS).=TCP \u067e\u0648\u0631\u0679 \u062c\u06c1\u0627\u06ba \u0633\u0631\u0648\u0631 \u0645\u062d\u0641\u0648\u0638 HTTP (HTTPS) \u06a9\u0646\u06a9\u0634\u0646\u0632 \u06a9\u0648 \u0633\u0646\u06d2 \u06af\u0627 (HTTPS \u06a9\u0648 \u063a\u06cc\u0631 \u0641\u0639\u0627\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 0 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u06cc\u06ba)\u06d4 +TCP\ port\ where\ server\ will\ listen\ for\ unsecure\ HTTP\ connections\ (use\ 0\ to\ disable\ HTTP).=TCP \u067e\u0648\u0631\u0679 \u062c\u06c1\u0627\u06ba \u0633\u0631\u0648\u0631 \u063a\u06cc\u0631 \u0645\u062d\u0641\u0648\u0638 HTTP \u06a9\u0646\u06a9\u0634\u0646\u0632 \u06a9\u0648 \u0633\u0646\u06d2 \u06af\u0627 (HTTP \u06a9\u0648 \u063a\u06cc\u0631 \u0641\u0639\u0627\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 0 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u06cc\u06ba)\u06d4 +Time-out\ after\ which\ real-time\ requests\ are\ disabled\ if\ no\ more\ measurements\ are\ received\ (in\ seconds).\ Real-time\ is\ reactivated\ as\ soon\ as\ new\ records\ start\ being\ received\ again=\u0679\u0627\u0626\u0645 \u0622\u0624\u0679 \u062c\u0633 \u06a9\u06d2 \u0628\u0639\u062f \u0631\u06cc\u0626\u0644 \u0679\u0627\u0626\u0645 \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u06cc\u06ba \u063a\u06cc\u0631 \u0641\u0639\u0627\u0644 \u06c1\u0648 \u062c\u0627\u062a\u06cc \u06c1\u06cc\u06ba \u0627\u06af\u0631 \u0645\u0632\u06cc\u062f \u067e\u06cc\u0645\u0627\u0626\u0634 \u0645\u0648\u0635\u0648\u0644 \u0646\u06c1 \u06c1\u0648 (\u0633\u06cc\u06a9\u0646\u0688 \u0645\u06cc\u06ba)\u06d4 \u062c\u06cc\u0633\u06d2 \u06c1\u06cc \u0646\u0626\u06d2 \u0631\u06cc\u06a9\u0627\u0631\u0688 \u062f\u0648\u0628\u0627\u0631\u06c1 \u0645\u0648\u0635\u0648\u0644 \u06c1\u0648\u0646\u0627 \u0634\u0631\u0648\u0639 \u06c1\u0648\u062a\u06d2 \u06c1\u06cc \u0631\u06cc\u0626\u0644 \u0679\u0627\u0626\u0645 \u062f\u0648\u0628\u0627\u0631\u06c1 \u0641\u0639\u0627\u0644 \u06c1\u0648 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u06d4 +Time-out\ period\ after\ which\ a\ template\ ID\ reserved\ using\ InsertResultTemplate\ will\ expire\ if\ not\ used\ in\ InsertResult\ requests\ (in\ seconds)=\u0679\u0627\u0626\u0645 \u0622\u0624\u0679 \u067e\u06cc\u0631\u06cc\u0688 \u062c\u0633 \u06a9\u06d2 \u0628\u0639\u062f InsertResultTemplate \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u0648\u0626\u06d2 \u0645\u062d\u0641\u0648\u0638 \u06a9\u0631\u062f\u06c1 \u0679\u06cc\u0645\u067e\u0644\u06cc\u0679 ID \u06a9\u06cc \u0645\u06cc\u0639\u0627\u062f \u062e\u062a\u0645 \u06c1\u0648 \u062c\u0627\u0626\u06d2 \u06af\u06cc \u0627\u06af\u0631 InsertResult \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u0648\u06ba \u0645\u06cc\u06ba \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u0646\u06c1 \u06a9\u06cc\u0627 \u062c\u0627\u0626\u06d2 (\u0633\u06cc\u06a9\u0646\u0688\u0648\u06ba \u0645\u06cc\u06ba) +Timeout\ after\ which\ data\ is\ released\ to\ the\ caller\ if\ at\ least\ one\ byte\ was\ received\ (in\ ms)=\u0679\u0627\u0626\u0645 \u0622\u0624\u0679 \u062c\u0633 \u06a9\u06d2 \u0628\u0639\u062f \u06a9\u0627\u0644 \u06a9\u0631\u0646\u06d2 \u0648\u0627\u0644\u06d2 \u06a9\u0648 \u0688\u06cc\u0679\u0627 \u062c\u0627\u0631\u06cc \u06a9\u06cc\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2 \u0627\u06af\u0631 \u06a9\u0645 \u0627\u0632 \u06a9\u0645 \u0627\u06cc\u06a9 \u0628\u0627\u0626\u0679 \u0645\u0648\u0635\u0648\u0644 \u06c1\u0648\u0627 \u06c1\u0648 (\u0627\u06cc\u0645 \u0627\u06cc\u0633 \u0645\u06cc\u06ba) +URI\ Prefix\ Map=URI \u0633\u0627\u0628\u0642\u06c1 \u200b\u200b\u0646\u0642\u0634\u06c1 +Unique\ ID\ (full\ URN\ or\ only\ suffix)\ to\ use\ for\ the\ sensor\ system\ or\ 'auto'\ to\ use\ the\ UUID\ randomly\ generated\ the\ first\ time\ the\ module\ is\ initialized=\u0633\u06cc\u0646\u0633\u0631 \u0633\u0633\u0679\u0645 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0645\u0646\u0641\u0631\u062f ID (\u0645\u06a9\u0645\u0644 URN \u06cc\u0627 \u0635\u0631\u0641 \u0644\u0627\u062d\u0642\u06c1) \u06cc\u0627 UUID \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 ''\u0622\u0679\u0648'' \u062c\u0648 \u067e\u06c1\u0644\u06cc \u0628\u0627\u0631 \u0645\u0627\u0688\u06cc\u0648\u0644 \u06a9\u06d2 \u0634\u0631\u0648\u0639 \u06c1\u0648\u0646\u06d2 \u067e\u0631 \u062a\u0635\u0627\u062f\u0641\u06cc \u0637\u0648\u0631 \u067e\u0631 \u062a\u06cc\u0627\u0631 \u06a9\u06cc\u0627 \u06af\u06cc\u0627 \u06c1\u06d2\u06d4 +Unique\ ID\ of\ a\ system\ that\ this\ configuration\ applies\ to.\nCan\ include\ a\ trailing\ wildcard\ '*'\ to\ match\ several\ systems\ at\ once.=\u0633\u0633\u0679\u0645 \u06a9\u06cc \u0645\u0646\u0641\u0631\u062f ID \u062c\u0633 \u067e\u0631 \u06cc\u06c1 \u06a9\u0646\u0641\u06cc\u06af\u0631\u06cc\u0634\u0646 \u0644\u0627\u06af\u0648 \u06c1\u0648\u062a\u06cc \u06c1\u06d2\u06d4\n\u0627\u06cc\u06a9 \u0633\u0627\u062a\u06be \u06a9\u0626\u06cc \u0633\u0633\u0679\u0645\u0632 \u0633\u06d2 \u0645\u0645\u0627\u062b\u0644 \u06c1\u0648\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u067e\u0686\u06be\u0644\u0627 \u0648\u0627\u0626\u0644\u0688 \u06a9\u0627\u0631\u0688 ''*'' \u0634\u0627\u0645\u0644 \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 +Unique\ ID\ of\ sensor\ to\ connect\ to\ on\ SOS\ and\ SPS\ servers=SOS \u0627\u0648\u0631 SPS \u0633\u0631\u0648\u0631\u0632 \u067e\u0631 \u0645\u0631\u0628\u0648\u0637 \u06c1\u0648\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0633\u06cc\u0646\u0633\u0631 \u06a9\u06cc \u0645\u0646\u0641\u0631\u062f ID +Unique\ ID\ of\ system\ that\ this\ configuration\ applies\ to.\nCan\ include\ a\ trailing\ wildcard\ '*'\ to\ match\ several\ systems\ at\ once.=\u0633\u0633\u0679\u0645 \u06a9\u06cc \u0645\u0646\u0641\u0631\u062f ID \u062c\u0633 \u067e\u0631 \u06cc\u06c1 \u06a9\u0646\u0641\u06cc\u06af\u0631\u06cc\u0634\u0646 \u0644\u0627\u06af\u0648 \u06c1\u0648\u062a\u06cc \u06c1\u06d2\u06d4\n\u0627\u06cc\u06a9 \u0633\u0627\u062a\u06be \u06a9\u0626\u06cc \u0633\u0633\u0679\u0645\u0632 \u0633\u06d2 \u0645\u0645\u0627\u062b\u0644 \u06c1\u0648\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u067e\u0686\u06be\u0644\u0627 \u0648\u0627\u0626\u0644\u0688 \u06a9\u0627\u0631\u0688 ''*'' \u0634\u0627\u0645\u0644 \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 +Use\ WebSockets\ for\ SOS=SOS \u06a9\u06d2 \u0644\u06cc\u06d2 WebSockets \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u06d4 +Use\ WebSockets\ for\ SPS=SPS \u06a9\u06d2 \u0644\u06cc\u06d2 WebSockets \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u06d4 + +Node\ ID=\u0646\u0648\u0688 ID +Stats\ Frequency\ (min)=\u0627\u0639\u062f\u0627\u062f\u0648\u0634\u0645\u0627\u0631 \u06a9\u06cc \u062a\u0639\u062f\u062f (\u0645\u0646\u0679) +Database\ URL=\u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 URL +Database\ Name=\u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 \u06a9\u0627 \u0646\u0627\u0645 +ID\ Generator=\u0622\u0626\u06cc \u0688\u06cc \u062c\u0646\u0631\u06cc\u0679\u0631 +Database\ Number=\u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 \u0646\u0645\u0628\u0631 +Remote\ Host=\u0631\u06cc\u0645\u0648\u0679 \u0645\u06cc\u0632\u0628\u0627\u0646 +Remote\ Port=\u0631\u06cc\u0645\u0648\u0679 \u067e\u0648\u0631\u0679 +Lane\ Width\ (m)=\u0644\u06cc\u0646 \u06a9\u06cc \u0686\u0648\u0691\u0627\u0626\u06cc (\u0645\u06cc\u0679\u0631) +Enable\ EML\ Analysis=EML \u062a\u062c\u0632\u06cc\u06c1 \u06a9\u0648 \u0641\u0639\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u06d4 +Is\ Collimated=\u06a9\u0648\u0644\u06cc\u0645\u06cc\u0679\u0688 \u06c1\u06d2\u06d4 +Stream\ Path=\u0633\u0679\u0631\u06cc\u0645 \u067e\u0627\u062a\u06be +Lane\ Options\ Config=\u0644\u06cc\u0646 \u06a9\u06d2 \u0627\u062e\u062a\u06cc\u0627\u0631\u0627\u062a \u06a9\u06cc \u062a\u0631\u062a\u06cc\u0628 diff --git a/sensorhub-webui-core/src/main/resources/org/sensorhub/ui/i18n/messages_vi.properties b/sensorhub-webui-core/src/main/resources/org/sensorhub/ui/i18n/messages_vi.properties new file mode 100644 index 0000000000..a6302340cd --- /dev/null +++ b/sensorhub-webui-core/src/main/resources/org/sensorhub/ui/i18n/messages_vi.properties @@ -0,0 +1,543 @@ +app.title=OpenSensorHub +tab.sensors=C\u1ea3m bi\u1ebfn +tab.databases=C\u01a1 s\u1edf d\u1eef li\u1ec7u +tab.processing=X\u1eed l\u00fd +tab.services=D\u1ecbch v\u1ee5 +tab.clients=Kh\u00e1ch h\u00e0ng +tab.network=M\u1ea1ng +tab.security=B\u1ea3o m\u1eadt +action.shutdown=T\u1eaft m\u00e1y +action.logout=\u0110\u0103ng xu\u1ea5t +action.save=L\u01b0u +action.addModule=Th\u00eam m\u00f4-\u0111un m\u1edbi +action.addSubmodule=Th\u00eam m\u00f4-\u0111un con +action.removeModule=X\u00f3a m\u00f4-\u0111un +action.removeSubmodule=X\u00f3a m\u00f4-\u0111un con +action.start=B\u1eaft \u0111\u1ea7u +action.stop=D\u1eebng +action.restart=Kh\u1edfi \u0111\u1ed9ng l\u1ea1i +action.forceInit=B\u1eaft bu\u1ed9c kh\u1edfi t\u1ea1o +action.selectAll=Ch\u1ecdn t\u1ea5t c\u1ea3 m\u00f4-\u0111un +action.deselectAll=B\u1ecf ch\u1ecdn t\u1ea5t c\u1ea3 m\u00f4-\u0111un +dialog.shutdown.title=\u0110ang t\u1eaft m\u00e1y... +dialog.shutdown.message=Giao di\u1ec7n ng\u01b0\u1eddi d\u00f9ng s\u1ebd ng\u1eebng ph\u1ea3n h\u1ed3i +dialog.shutdown.confirm=B\u1ea1n c\u00f3 ch\u1eafc ch\u1eafn mu\u1ed1n t\u1eaft trung t\u00e2m c\u1ea3m bi\u1ebfn kh\u00f4ng? +dialog.logout.confirm=B\u1ea1n c\u00f3 ch\u1eafc ch\u1eafn mu\u1ed1n \u0111\u0103ng xu\u1ea5t kh\u00f4ng? +dialog.save.confirm=B\u1ea1n c\u00f3 ch\u1eafc ch\u1eafn mu\u1ed1n l\u01b0u c\u1ea5u h\u00ecnh (v\u00e0 ghi \u0111\u00e8 c\u1ea5u h\u00ecnh tr\u01b0\u1edbc \u0111\u00f3) kh\u00f4ng? +msg.configSaved=\u0110\u00e3 l\u01b0u c\u1ea5u h\u00ecnh SensorHub +msg.configSaveError=Kh\u00f4ng th\u1ec3 l\u01b0u c\u1ea5u h\u00ecnh +dialog.remove.confirm=B\u1ea1n c\u00f3 ch\u1eafc ch\u1eafn mu\u1ed1n x\u00f3a {0} kh\u00f4ng?
M\u1ecdi c\u00e0i \u0111\u1eb7t s\u1ebd b\u1ecb m\u1ea5t. +msg.removeError=Kh\u00f4ng th\u1ec3 x\u00f3a {0} +msg.startError=Kh\u00f4ng th\u1ec3 b\u1eaft \u0111\u1ea7u {0} +msg.stopError=Kh\u00f4ng th\u1ec3 d\u1eebng {0} +msg.restartError=Kh\u00f4ng th\u1ec3 kh\u1edfi \u0111\u1ed9ng l\u1ea1i {0} +msg.reinitError=Kh\u00f4ng th\u1ec3 kh\u1edfi t\u1ea1o l\u1ea1i {0} +msg.loadError=Kh\u00f4ng th\u1ec3 t\u1ea3i m\u00f4-\u0111un +msg.addSubmoduleError=Kh\u00f4ng th\u1ec3 th\u00eam m\u00f4-\u0111un con +about.title=Gi\u1edbi thi\u1ec7u v\u1ec1 OpenSensorHub +about.desc=N\u1ec1n t\u1ea3ng ph\u1ea7n m\u1ec1m \u0111\u1ec3 x\u00e2y d\u1ef1ng m\u1ea1ng c\u1ea3m bi\u1ebfn th\u00f4ng minh v\u00e0 Internet of Things +about.license=\u0110\u01b0\u1ee3c c\u1ea5p ph\u00e9p theo Mozilla Public License v2.0 +about.version=Phi\u00ean b\u1ea3n: +about.build=S\u1ed1 b\u1ea3n d\u1ef1ng: +about.deployment=T\u00ean tri\u1ec3n khai: +tooltip.shutdown=T\u1eaft SensorHub +tooltip.logout=\u0110\u0103ng xu\u1ea5t kh\u1ecfi n\u00fat OSH +tooltip.save=L\u01b0u c\u1ea5u h\u00ecnh SensorHub +dialog.start.confirm=B\u1ea1n c\u00f3 ch\u1eafc ch\u1eafn mu\u1ed1n b\u1eaft \u0111\u1ea7u {0} kh\u00f4ng? +dialog.stop.confirm=B\u1ea1n c\u00f3 ch\u1eafc ch\u1eafn mu\u1ed1n d\u1eebng {0} kh\u00f4ng? +dialog.restart.confirm=B\u1ea1n c\u00f3 ch\u1eafc ch\u1eafn mu\u1ed1n kh\u1edfi \u0111\u1ed9ng l\u1ea1i {0} kh\u00f4ng? +dialog.reinit.confirm=B\u1ea1n c\u00f3 ch\u1eafc ch\u1eafn mu\u1ed1n b\u1eaft bu\u1ed9c kh\u1edfi t\u1ea1o l\u1ea1i {0} kh\u00f4ng? +backgroundUpdate=C\u1eadp nh\u1eadt n\u1ec1n +sigmaThreshold=Ng\u01b0\u1ee1ng Sigma +nuclideIdentification=Nh\u1eadn d\u1ea1ng h\u1ea1t nh\u00e2n +tamperAlarm=C\u1ea3nh b\u00e1o gi\u1ea3 m\u1ea1o +occupancySensor=C\u1ea3m bi\u1ebfn hi\u1ec7n di\u1ec7n +stateOfHealth=T\u00ecnh tr\u1ea1ng s\u1ee9c kh\u1ecfe +soh=SOH +1ScanThisQrCodeWithYourAuthenticatorApp=1. Qu\u00e9t m\u00e3 QR n\u00e0y b\u1eb1ng \u1ee9ng d\u1ee5ng x\u00e1c th\u1ef1c c\u1ee7a b\u1ea1n: +2EnterThe6digitCodeGeneratedByTheApp=2. Nh\u1eadp m\u00e3 g\u1ed3m 6 ch\u1eef s\u1ed1 do \u1ee9ng d\u1ee5ng t\u1ea1o ra: +orEnterThisSecretKeyManually=Ho\u1eb7c nh\u1eadp Secret Key n\u00e0y theo c\u00e1ch th\u1ee7 c\u00f4ng: +loadingBundlesInformation=\u0110ang t\u1ea3i th\u00f4ng tin v\u1ec1 g\u00f3i... +loadingPackageInformation=\u0110ang t\u1ea3i th\u00f4ng tin g\u00f3i... +arrayComponentNotSupported=Th\u00e0nh ph\u1ea7n m\u1ea3ng kh\u00f4ng \u0111\u01b0\u1ee3c h\u1ed7 tr\u1ee3 +twofactorAuthentication=X\u00e1c th\u1ef1c hai y\u1ebfu t\u1ed1 +installMorePackages=C\u00e0i \u0111\u1eb7t th\u00eam g\u00f3i... +errorGeneratingQrCode=L\u1ed7i t\u1ea1o m\u00e3 QR +installMoreModules=C\u00e0i \u0111\u1eb7t th\u00eam m\u00f4-\u0111un... +detailedInstructions=H\u01b0\u1edbng d\u1eabn chi ti\u1ebft +availableNetworks=M\u1ea1ng c\u00f3 s\u1eb5n +processParameters=Th\u00f4ng s\u1ed1 quy tr\u00ecnh +verifyAndEnable=X\u00e1c minh v\u00e0 k\u00edch ho\u1ea1t +dataSourceInfo=Th\u00f4ng tin ngu\u1ed3n d\u1eef li\u1ec7u +detectedDevices=Thi\u1ebft b\u1ecb \u0111\u01b0\u1ee3c ph\u00e1t hi\u1ec7n +installSelected=\u0110\u00e3 ch\u1ecdn c\u00e0i \u0111\u1eb7t +databaseContent=N\u1ed9i dung c\u01a1 s\u1edf d\u1eef li\u1ec7u +itemsPerPage=C\u00e1c m\u1ee5c tr\u00ean m\u1ed7i trang: +commandInputs=\u0110\u1ea7u v\u00e0o l\u1ec7nh +processInputs=Quy tr\u00ecnh \u0111\u1ea7u v\u00e0o +providerClass=L\u1edbp nh\u00e0 cung c\u1ea5p +processName=T\u00ean quy tr\u00ecnh: +configuration=C\u1ea5u h\u00ecnh +applyChanges=\u00c1p d\u1ee5ng Thay \u0111\u1ed5i +sendCommand=G\u1eedi l\u1ec7nh +useAddress=S\u1eed d\u1ee5ng \u0111\u1ecba ch\u1ec9 +selectNone=Ch\u1ecdn Kh\u00f4ng c\u00f3 +timeRange=Ph\u1ea1m vi th\u1eddi gian: +permissions=Quy\u1ec1n +startScan=B\u1eaft \u0111\u1ea7u qu\u00e9t +noReadme=Kh\u00f4ng c\u00f3 README +stopScan=D\u1eebng qu\u00e9t +reset2fa=\u0110\u1eb7t l\u1ea1i 2FA +previous=Tr\u01b0\u1edbc +useName=T\u00ean s\u1eed d\u1ee5ng +outputs=\u0111\u1ea7u ra +refresh=L\u00e0m cho kh\u1ecfe l\u1ea1i +modify=Bi\u1ebfn \u0111\u1ed5i +cancel=H\u1ee7y b\u1ecf +logout=\u0110\u0103ng xu\u1ea5t +remove=Di d\u1eddi +verify=X\u00e1c minh +first=\u0110\u1ea7u ti\u00ean +login=\u0110\u0103ng nh\u1eadp +last=Cu\u1ed1i c\u00f9ng +view=XEM +next=K\u1ebf ti\u1ebfp +stop=D\u1eebng l\u1ea1i +add=Th\u00eam v\u00e0o +ui.empty=< +ok=\u0110\u01af\u1ee2C R\u1ed2I +1ScanThisQrCodeWithYourAuthenticatorApp1=1. Qu\u00e9t m\u00e3 QR n\u00e0y b\u1eb1ng \u1ee9ng d\u1ee5ng x\u00e1c th\u1ef1c c\u1ee7a b\u1ea1n: +2EnterThe6digitCodeGeneratedByTheApp1=2. Nh\u1eadp m\u00e3 g\u1ed3m 6 ch\u1eef s\u1ed1 do \u1ee9ng d\u1ee5ng t\u1ea1o ra: +orEnterThisSecretKeyManually1=Ho\u1eb7c nh\u1eadp Secret Key n\u00e0y theo c\u00e1ch th\u1ee7 c\u00f4ng: +loadingPackageInformation1=\u0110ang t\u1ea3i th\u00f4ng tin g\u00f3i... +loadingBundlesInformation1=\u0110ang t\u1ea3i th\u00f4ng tin v\u1ec1 g\u00f3i... +arrayComponentNotSupported1=Th\u00e0nh ph\u1ea7n m\u1ea3ng kh\u00f4ng \u0111\u01b0\u1ee3c h\u1ed7 tr\u1ee3 +twofactorAuthentication1=X\u00e1c th\u1ef1c hai y\u1ebfu t\u1ed1 +errorGeneratingQrCode1=L\u1ed7i t\u1ea1o m\u00e3 QR +installMorePackages1=C\u00e0i \u0111\u1eb7t th\u00eam g\u00f3i... +installMoreModules1=C\u00e0i \u0111\u1eb7t th\u00eam m\u00f4-\u0111un... +detailedInstructions1=H\u01b0\u1edbng d\u1eabn chi ti\u1ebft +processParameters1=Th\u00f4ng s\u1ed1 quy tr\u00ecnh +availableNetworks1=M\u1ea1ng c\u00f3 s\u1eb5n +verifyAndEnable1=X\u00e1c minh v\u00e0 k\u00edch ho\u1ea1t +databaseContent1=N\u1ed9i dung c\u01a1 s\u1edf d\u1eef li\u1ec7u +installSelected1=\u0110\u00e3 ch\u1ecdn c\u00e0i \u0111\u1eb7t +dataSourceInfo1=Th\u00f4ng tin ngu\u1ed3n d\u1eef li\u1ec7u +detectedDevices1=Thi\u1ebft b\u1ecb \u0111\u01b0\u1ee3c ph\u00e1t hi\u1ec7n +itemsPerPage1=C\u00e1c m\u1ee5c tr\u00ean m\u1ed7i trang: +processInputs1=Quy tr\u00ecnh \u0111\u1ea7u v\u00e0o +commandInputs1=\u0110\u1ea7u v\u00e0o l\u1ec7nh +providerClass1=L\u1edbp nh\u00e0 cung c\u1ea5p +configuration1=C\u1ea5u h\u00ecnh +processName1=T\u00ean quy tr\u00ecnh: +applyChanges1=\u00c1p d\u1ee5ng Thay \u0111\u1ed5i +sendCommand1=G\u1eedi l\u1ec7nh +timeRange1=Ph\u1ea1m vi th\u1eddi gian: +useAddress1=S\u1eed d\u1ee5ng \u0111\u1ecba ch\u1ec9 +permissions1=Quy\u1ec1n +selectNone1=Ch\u1ecdn Kh\u00f4ng c\u00f3 +startScan1=B\u1eaft \u0111\u1ea7u qu\u00e9t +noReadme1=Kh\u00f4ng c\u00f3 README +reset2fa1=\u0110\u1eb7t l\u1ea1i 2FA +stopScan1=D\u1eebng qu\u00e9t +useName1=T\u00ean s\u1eed d\u1ee5ng +previous1=Tr\u01b0\u1edbc +refresh1=L\u00e0m cho kh\u1ecfe l\u1ea1i +outputs1=\u0111\u1ea7u ra +cancel1=H\u1ee7y b\u1ecf +logout1=\u0110\u0103ng xu\u1ea5t +modify1=Bi\u1ebfn \u0111\u1ed5i +remove1=Di d\u1eddi +verify1=X\u00e1c minh +first1=\u0110\u1ea7u ti\u00ean +login1=\u0110\u0103ng nh\u1eadp +view1=XEM +stop1=D\u1eebng l\u1ea1i +next1=K\u1ebf ti\u1ebfp +last1=Cu\u1ed1i c\u00f9ng +add1=Th\u00eam v\u00e0o +last2=>> +first2=<< +ok1=\u0110\u01af\u1ee2C R\u1ed2I +next2=> +previous2=< + +pleaseEnterAUserIDFirst1=Vui l\u00f2ng nh\u1eadp ID ng\u01b0\u1eddi d\u00f9ng tr\u01b0\u1edbc +reset2FA1=\u0110\u1eb7t l\u1ea1i 2FA +enable2FA1=K\u00edch ho\u1ea1t 2FA +twoFAEnabledSuccessfully1=\u0110\u00e3 b\u1eadt 2FA th\u00e0nh c\u00f4ng +invalidCode1=M\u00e3 kh\u00f4ng h\u1ee3p l\u1ec7 +allowedAndDeniedPermissionsForUsersWithThisRole1=Quy\u1ec1n \u0111\u01b0\u1ee3c ph\u00e9p v\u00e0 b\u1ecb t\u1eeb ch\u1ed1i \u0111\u1ed1i v\u1edbi ng\u01b0\u1eddi d\u00f9ng c\u00f3 vai tr\u00f2 n\u00e0y +manualEntry1=Nh\u1eadp th\u1ee7 c\u00f4ng +toggleAutoRefreshDataOncePerSecond1=Chuy\u1ec3n \u0111\u1ed5i d\u1eef li\u1ec7u t\u1ef1 \u0111\u1ed9ng l\u00e0m m\u1edbi m\u1ed9t l\u1ea7n m\u1ed7i gi\u00e2y +lookupSystem1=H\u1ec7 th\u1ed1ng tra c\u1ee9u +lookupModule1=M\u00f4-\u0111un tra c\u1ee9u +lookupAddress1=\u0110\u1ecba ch\u1ec9 tra c\u1ee9u +showPassword1=Hi\u1ec3n th\u1ecb m\u1eadt kh\u1ea9u +showHistogram1=Hi\u1ec3n th\u1ecb bi\u1ec3u \u0111\u1ed3 +hideHistogram1=\u1ea8n bi\u1ec3u \u0111\u1ed3 +reloadDataFromDatabase1=T\u1ea3i l\u1ea1i d\u1eef li\u1ec7u t\u1eeb c\u01a1 s\u1edf d\u1eef li\u1ec7u +fois1=th\u00f4ng tin quan t\u00e2m +username1=T\u00ean ng\u01b0\u1eddi d\u00f9ng +password1=M\u1eadt kh\u1ea9u +loginFailed1=\u0110\u0103ng nh\u1eadp kh\u00f4ng th\u00e0nh c\u00f4ng +invalidUsernameOrPassword1=T\u00ean ng\u01b0\u1eddi d\u00f9ng ho\u1eb7c m\u1eadt kh\u1ea9u kh\u00f4ng h\u1ee3p l\u1ec7 +verificationCode1=M\u00e3 x\u00e1c minh +verificationFailed1=X\u00e1c minh kh\u00f4ng th\u00e0nh c\u00f4ng +datasource1=Ngu\u1ed3n d\u1eef li\u1ec7u +process1=Qu\u00e1 tr\u00ecnh +logoutFromOshNode1=\u0110\u0103ng xu\u1ea5t kh\u1ecfi n\u00fat OSH +setParameter1=\u0110\u1eb7t tham s\u1ed1 +setupTwoFactorAuthentication1=Thi\u1ebft l\u1eadp x\u00e1c th\u1ef1c hai y\u1ebfu t\u1ed1 + +action.new_item={0} m\u1edbi +Lane\ System=H\u1ec7 th\u1ed1ng l\u00e0n \u0111\u01b0\u1eddng +Module\ Class=L\u1edbp m\u00f4-\u0111un +Module\ Name=T\u00ean m\u00f4-\u0111un +Module\ ID=ID m\u00f4-\u0111un +Description=S\u1ef1 mi\u00eau t\u1ea3 +SensorML\ URL=URL c\u1ea3m bi\u1ebfnML +UniqueID=ID duy nh\u1ea5t +Last\ Updated=C\u1eadp nh\u1eadt l\u1ea7n cu\u1ed1i +Auto\ Start=T\u1ef1 \u0111\u1ed9ng b\u1eaft \u0111\u1ea7u +Delete\ Data\ on\ Lane\ Removal=X\u00f3a d\u1eef li\u1ec7u v\u1ec1 vi\u1ec7c lo\u1ea1i b\u1ecf l\u00e0n \u0111\u01b0\u1eddng +Latitude=V\u0129 \u0111\u1ed9 +Longitude=Kinh \u0111\u1ed9 +Altitude=\u0110\u1ed9 cao +Initial\ RPM\ Config=C\u1ea5u h\u00ecnh RPM ban \u0111\u1ea7u +Initial\ Camera\ Config=C\u1ea5u h\u00ecnh camera ban \u0111\u1ea7u +Lane\ Options\ Config=C\u1ea5u h\u00ecnh t\u00f9y ch\u1ecdn l\u00e0n \u0111\u01b0\u1eddng +tab.general=T\u1ed5ng quan +tab.readme=\u0110\u1eccC T\u00d4I +Fixed\ Location=V\u1ecb tr\u00ed c\u1ed1 \u0111\u1ecbnh +Fixed\ Orientation=\u0110\u1ecbnh h\u01b0\u1edbng c\u1ed1 \u0111\u1ecbnh +# Auto-extracted DisplayInfo labels and descriptions +URL\ of\ SensorML\ file\ providing\ the\ base\ description\ of\ the\ sensor=URL c\u1ee7a t\u1ec7p SensorML cung c\u1ea5p m\u00f4 t\u1ea3 c\u01a1 s\u1edf c\u1ee7a c\u1ea3m bi\u1ebfn +Time\ at\ which\ the\ SensorML\ description\ was\ last\ updated=Th\u1eddi gian m\u00e0 m\u00f4 t\u1ea3 SensorML \u0111\u01b0\u1ee3c c\u1eadp nh\u1eadt l\u1ea7n cu\u1ed1i +Geodetic\ latitude,\ in\ degrees=V\u0129 \u0111\u1ed9 tr\u1eafc \u0111\u1ecba, t\u00ednh b\u1eb1ng \u0111\u1ed9 +Longitude,\ in\ degrees=Kinh \u0111\u1ed9, t\u00ednh b\u1eb1ng \u0111\u1ed9 +Height\ above\ ellipsoid,\ in\ meters=Chi\u1ec1u cao tr\u00ean h\u00ecnh elip, t\u00ednh b\u1eb1ng m\u00e9t +X\ coordinate,\ in\ meters=T\u1ecda \u0111\u1ed9 X, t\u00ednh b\u1eb1ng m\u00e9t +Y\ coordinate,\ in\ meters=T\u1ecda \u0111\u1ed9 Y, t\u00ednh b\u1eb1ng m\u00e9t +Z\ coordinate,\ in\ meters=T\u1ecda \u0111\u1ed9 Z, t\u00ednh b\u1eb1ng m\u00e9t +Pitch\ angle\ about\ Y\ axis,\ in\ degrees=G\u00f3c nghi\u00eang quanh tr\u1ee5c Y, t\u00ednh b\u1eb1ng \u0111\u1ed9 +Roll\ angle\ about\ X\ axis,\ in\ degrees=G\u00f3c cu\u1ed9n quanh tr\u1ee5c X, t\u00ednh b\u1eb1ng \u0111\u1ed9 +Location\ in\ EPSG\:4979\ coordinate\ reference\ frame=V\u1ecb tr\u00ed trong khung tham chi\u1ebfu t\u1ecda \u0111\u1ed9 EPSG:4979 +Database\ Number=S\u1ed1 c\u01a1 s\u1edf d\u1eef li\u1ec7u +Numerical\ identifier\ of\ the\ database.\ Each\ database\ that\ should\ be\ exposed\ via\ the\ federated\ database\ API\ must\ have\ a\ unique\ number\ on\ the\ sensor\ hub.\ If\ visibility\ through\ the\ federated\ database\ is\ not\ desired,\ it\ can\ be\ omitted.=M\u00e3 \u0111\u1ecbnh danh s\u1ed1 c\u1ee7a c\u01a1 s\u1edf d\u1eef li\u1ec7u. M\u1ed7i c\u01a1 s\u1edf d\u1eef li\u1ec7u \u0111\u01b0\u1ee3c hi\u1ec3n th\u1ecb th\u00f4ng qua API c\u01a1 s\u1edf d\u1eef li\u1ec7u li\u00ean k\u1ebft ph\u1ea3i c\u00f3 m\u1ed9t s\u1ed1 duy nh\u1ea5t tr\u00ean trung t\u00e2m c\u1ea3m bi\u1ebfn. N\u1ebfu kh\u00f4ng mu\u1ed1n hi\u1ec3n th\u1ecb th\u00f4ng qua c\u01a1 s\u1edf d\u1eef li\u1ec7u li\u00ean k\u1ebft th\u00ec c\u00f3 th\u1ec3 b\u1ecf qua. +Enables\ fine-grained\ permission-based\ access\ control\ for\ this\ module=Cho ph\u00e9p ki\u1ec3m so\u00e1t truy c\u1eadp d\u1ef1a tr\u00ean quy\u1ec1n chi ti\u1ebft cho m\u00f4-\u0111un n\u00e0y +Require\ Authentication=Y\u00eau c\u1ea7u x\u00e1c th\u1ef1c +Set\ to\ require\ remote\ users\ to\ be\ authentified\ before\ they\ can\ use\ this\ service=\u0110\u1eb7t \u0111\u1ec3 y\u00eau c\u1ea7u ng\u01b0\u1eddi d\u00f9ng t\u1eeb xa ph\u1ea3i \u0111\u01b0\u1ee3c x\u00e1c th\u1ef1c tr\u01b0\u1edbc khi h\u1ecd c\u00f3 th\u1ec3 s\u1eed d\u1ee5ng d\u1ecbch v\u1ee5 n\u00e0y +Endpoint=\u0110i\u1ec3m cu\u1ed1i +Unique\ local\ ID\ of\ the\ module=ID c\u1ee5c b\u1ed9 duy nh\u1ea5t c\u1ee7a m\u00f4-\u0111un +User\ description\ for\ the\ module=M\u00f4 t\u1ea3 ng\u01b0\u1eddi d\u00f9ng cho m\u00f4-\u0111un +Set\ to\ automatically\ start\ the\ module\ when\ it\ is\ loaded=\u0110\u1eb7t \u0111\u1ec3 t\u1ef1 \u0111\u1ed9ng kh\u1edfi \u0111\u1ed9ng m\u00f4-\u0111un khi \u0111\u01b0\u1ee3c t\u1ea3i +Module\ implementation\ class=L\u1edbp th\u1ef1c hi\u1ec7n m\u00f4-\u0111un +User\ chosen\ name\ for\ the\ module=T\u00ean do ng\u01b0\u1eddi d\u00f9ng ch\u1ecdn cho m\u00f4-\u0111un +Name\ of\ topic/queue\ to\ use=T\u00ean ch\u1ee7 \u0111\u1ec1/h\u00e0ng \u0111\u1ee3i s\u1ebd s\u1eed d\u1ee5ng +Enable/disable\ writing\ to\ queue=B\u1eadt/t\u1eaft t\u00ednh n\u0103ng ghi v\u00e0o h\u00e0ng \u0111\u1ee3i +Enable/disable\ reading\ from\ queue=B\u1eadt/t\u1eaft t\u00ednh n\u0103ng \u0111\u1ecdc t\u1eeb h\u00e0ng \u0111\u1ee3i +Protocol\ Options=T\u00f9y ch\u1ecdn giao th\u1ee9c +Common\ Configuration=C\u1ea5u h\u00ecnh chung +Common\ configuration\ for\ sensors\ in\ the\ array=C\u1ea5u h\u00ecnh chung cho c\u00e1c c\u1ea3m bi\u1ebfn trong m\u1ea3ng +Sensors\ Configuration=C\u1ea5u h\u00ecnh c\u1ea3m bi\u1ebfn +Subsystem\ Config=C\u1ea5u h\u00ecnh h\u1ec7 th\u1ed1ng con +Configuration\ of\ the\ subsystem=C\u1ea5u h\u00ecnh c\u1ee7a h\u1ec7 th\u1ed1ng con +Relative\ Location=V\u1ecb tr\u00ed t\u01b0\u01a1ng \u0111\u1ed1i +Location\ of\ this\ subsystem\ relative\ to\ the\ main\ system\ or\ platform\ reference\ frame=V\u1ecb tr\u00ed c\u1ee7a h\u1ec7 th\u1ed1ng con n\u00e0y so v\u1edbi h\u1ec7 th\u1ed1ng ch\u00ednh ho\u1eb7c khung tham chi\u1ebfu n\u1ec1n t\u1ea3ng +Relative\ Orientation=\u0110\u1ecbnh h\u01b0\u1edbng t\u01b0\u01a1ng \u0111\u1ed1i +Orientation\ of\ this\ subsystem\ relative\ to\ the\ main\ system\ or\ platform\ reference\ frame=\u0110\u1ecbnh h\u01b0\u1edbng c\u1ee7a h\u1ec7 th\u1ed1ng con n\u00e0y so v\u1edbi h\u1ec7 th\u1ed1ng ch\u00ednh ho\u1eb7c khung tham chi\u1ebfu n\u1ec1n t\u1ea3ng +Fixed\ system\ orientation\ in\ the\ local\ NED\ reference\ frame=\u0110\u00e3 s\u1eeda h\u01b0\u1edbng h\u1ec7 th\u1ed1ng trong khung tham chi\u1ebfu NED c\u1ee5c b\u1ed9 +Subsystems=H\u1ec7 th\u1ed1ng con +Configuration\ of\ components\ of\ this\ sensor\ system=C\u1ea5u h\u00ecnh c\u00e1c th\u00e0nh ph\u1ea7n c\u1ee7a h\u1ec7 th\u1ed1ng c\u1ea3m bi\u1ebfn n\u00e0y +Database\ Config=C\u1ea5u h\u00ecnh c\u01a1 s\u1edf d\u1eef li\u1ec7u +Configuration\ of\ underlying\ database=C\u1ea5u h\u00ecnh c\u01a1 s\u1edf d\u1eef li\u1ec7u c\u01a1 b\u1ea3n +System\ UIDs=UID h\u1ec7 th\u1ed1ng +Unique\ IDs\ of\ system\ drivers\ handled\ by\ this\ database=ID duy nh\u1ea5t c\u1ee7a tr\u00ecnh \u0111i\u1ec1u khi\u1ec3n h\u1ec7 th\u1ed1ng \u0111\u01b0\u1ee3c c\u01a1 s\u1edf d\u1eef li\u1ec7u n\u00e0y x\u1eed l\u00fd +Automatic\ Purge\ Policy=Ch\u00ednh s\u00e1ch thanh l\u1ecdc t\u1ef1 \u0111\u1ed9ng +Policy\ for\ automatically\ purging\ historical\ data=Ch\u00ednh s\u00e1ch t\u1ef1 \u0111\u1ed9ng x\u00f3a d\u1eef li\u1ec7u l\u1ecbch s\u1eed +Uncheck\ to\ disable\ auto-purge\ temporarily=B\u1ecf ch\u1ecdn \u0111\u1ec3 t\u1ea1m th\u1eddi t\u1eaft t\u00ednh n\u0103ng t\u1ef1 \u0111\u1ed9ng thanh l\u1ecdc +Purge\ Execution\ Period=Th\u1eddi gian th\u1ef1c hi\u1ec7n thanh l\u1ecdc +Unique\ IDs\ of\ system\ drivers\ to\ purge=ID duy nh\u1ea5t c\u1ee7a tr\u00ecnh \u0111i\u1ec1u khi\u1ec3n h\u1ec7 th\u1ed1ng \u0111\u1ec3 l\u1ecdc +Max\ Record\ Age=Tu\u1ed5i k\u1ef7 l\u1ee5c t\u1ed1i \u0111a +SensorML\ File=T\u1ec7p c\u1ea3m bi\u1ebfnML +Path\ of\ SensorML\ description\ of\ the\ process=\u0110\u01b0\u1eddng d\u1eabn m\u00f4 t\u1ea3 quy tr\u00ecnh c\u1ee7a SensorML +List\ of\ users\ allowed\ access\ to\ this\ system=Danh s\u00e1ch ng\u01b0\u1eddi d\u00f9ng \u0111\u01b0\u1ee3c ph\u00e9p truy c\u1eadp v\u00e0o h\u1ec7 th\u1ed1ng n\u00e0y +List\ of\ security\ roles=Danh s\u00e1ch vai tr\u00f2 b\u1ea3o m\u1eadt +User\ ID=ID ng\u01b0\u1eddi d\u00f9ng +Role\ ID=ID vai tr\u00f2 +Source\ Database\ ID=ID c\u01a1 s\u1edf d\u1eef li\u1ec7u ngu\u1ed3n +ID\ of\ database\ module\ to\ read\ data\ from\ (Federated\ database\ will\ be\ used\ if\ not\ set=ID c\u1ee7a m\u00f4-\u0111un c\u01a1 s\u1edf d\u1eef li\u1ec7u \u0111\u1ec3 \u0111\u1ecdc d\u1eef li\u1ec7u t\u1eeb (C\u01a1 s\u1edf d\u1eef li\u1ec7u li\u00ean k\u1ebft s\u1ebd \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng n\u1ebfu kh\u00f4ng \u0111\u01b0\u1ee3c \u0111\u1eb7t +HTTP\ Port=C\u1ed5ng HTTP +HTTPS\ Port=C\u1ed5ng HTTPS +Root\ URL\ where\ static\ web\ content\ will\ be\ served.=URL g\u1ed1c n\u01a1i n\u1ed9i dung web t\u0129nh s\u1ebd \u0111\u01b0\u1ee3c ph\u1ee5c v\u1ee5. +Directory\ where\ static\ web\ content\ is\ located.=Th\u01b0 m\u1ee5c ch\u1ee9a n\u1ed9i dung web t\u0129nh. +Root\ URL\ where\ the\ server\ will\ accept\ requests.\ This\ will\ be\ the\ prefix\ to\ all\ servlet\ URLs.=URL g\u1ed1c n\u01a1i m\u00e1y ch\u1ee7 s\u1ebd ch\u1ea5p nh\u1eadn y\u00eau c\u1ea7u. \u0110\u00e2y s\u1ebd l\u00e0 ti\u1ec1n t\u1ed1 cho t\u1ea5t c\u1ea3 c\u00e1c URL servlet. +Proxy\ Base\ URL=URL c\u01a1 s\u1edf proxy +Public\ URL\ as\ viewed\ from\ the\ outside\ when\ requests\ transit\ through\ a\ proxy\ server.=URL c\u00f4ng khai \u0111\u01b0\u1ee3c xem t\u1eeb b\u00ean ngo\u00e0i khi y\u00eau c\u1ea7u chuy\u1ec3n qua m\u00e1y ch\u1ee7 proxy. +Authentication\ Method=Ph\u01b0\u01a1ng th\u1ee9c x\u00e1c th\u1ef1c +Method\ used\ to\ authenticate\ users\ on\ this\ server=Ph\u01b0\u01a1ng th\u1ee9c \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng \u0111\u1ec3 x\u00e1c th\u1ef1c ng\u01b0\u1eddi d\u00f9ng tr\u00ean m\u00e1y ch\u1ee7 n\u00e0y +Path\ to\ a\ key\ store\ containing\ the\ certificate\ and\ keypair\ that\ this\ server\ will\ present\ to\ clients\ when\ accessed\ over\ HTTPS.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ \"javax.net.ssl.keyStore\"\ system\ property.\=Path to a key store containing the certificate and keypair that this server will present to clients when accessed over HTTPS. If this value is blank, will default to using the value of the \"javax.net.ssl.keyStore\" system property. +Alias\ for\ the\ public/private\ keypair\ within\ the\ key\ store\ that\ will\ be\ used\ to\ identify\ this\ server.=B\u00ed danh cho c\u1eb7p kh\u00f3a c\u00f4ng khai/ri\u00eang t\u01b0 trong kho kh\u00f3a s\u1ebd \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng \u0111\u1ec3 nh\u1eadn d\u1ea1ng m\u00e1y ch\u1ee7 n\u00e0y. +Path\ to\ the\ TLS\ trust\ store\ that\ is\ used\ when\ client\ authentication\ is\ required.\ Ignored\ if\ client\ certificate\ authentication\ is\ not\ used.\ Certificates\ in\ this\ file\ designate\ the\ signing\ authorities\ for\ client\ certificates\ that\ will\ be\ trusted.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ \"javax.net.ssl.trustStore\"\ system\ property.\=Path to the TLS trust store that is used when client authentication is required. Ignored if client certificate authentication is not used. Certificates in this file designate the signing authorities for client certificates that will be trusted. If this value is blank, will default to using the value of the \"javax.net.ssl.trustStore\" system property. +Password\ for\ the\ trust\ store.\ Ignored\ if\ client\ certificate\ authentication\ is\ not\ used.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ \"javax.net.ssl.trustStorePassword\"\ system\ property.\=Password for the trust store. Ignored if client certificate authentication is not used. If this value is blank, will default to using the value of the \"javax.net.ssl.trustStorePassword\" system property. +Enable\ CORS=K\u00edch ho\u1ea1t CORS +Enable\ generation\ of\ CORS\ headers\ to\ allow\ cross-domain\ requests\ from\ browsers=Cho ph\u00e9p t\u1ea1o ti\u00eau \u0111\u1ec1 CORS \u0111\u1ec3 cho ph\u00e9p c\u00e1c y\u00eau c\u1ea7u t\u00ean mi\u1ec1n ch\u00e9o t\u1eeb tr\u00ecnh duy\u1ec7t +Capabilities\ Info=Th\u00f4ng tin kh\u1ea3 n\u0103ng +Information\ included\ in\ the\ service\ capabilities\ document=Th\u00f4ng tin c\u00f3 trong t\u00e0i li\u1ec7u v\u1ec1 kh\u1ea3 n\u0103ng d\u1ecbch v\u1ee5 +Enable\ HTTP\ GET=K\u00edch ho\u1ea1t HTTP NH\u1eacN +Enables/disables\ HTTP\ GET\ bindings\ on\ operations\ that\ support\ it=B\u1eadt/t\u1eaft c\u00e1c li\u00ean k\u1ebft HTTP GET tr\u00ean c\u00e1c ho\u1ea1t \u0111\u1ed9ng h\u1ed7 tr\u1ee3 n\u00f3 +Enable\ HTTP\ POST=B\u1eadt b\u00e0i \u0111\u0103ng HTTP +Enables/disables\ HTTP\ POST\ bindings\ on\ operations\ that\ support\ it=B\u1eadt/t\u1eaft c\u00e1c li\u00ean k\u1ebft HTTP POST tr\u00ean c\u00e1c ho\u1ea1t \u0111\u1ed9ng h\u1ed7 tr\u1ee3 n\u00f3 +Enable\ HTTP\ SOAP=K\u00edch ho\u1ea1t HTTP SOAP +Enables/disables\ HTTP\ SOAP\ bindings\ on\ operations\ that\ support\ it=B\u1eadt/t\u1eaft c\u00e1c li\u00ean k\u1ebft HTTP SOAP tr\u00ean c\u00e1c ho\u1ea1t \u0111\u1ed9ng h\u1ed7 tr\u1ee3 n\u00f3 +Connection\ Timeout=H\u1ebft th\u1eddi gian k\u1ebft n\u1ed1i +Reconnect\ Period=Th\u1eddi gian k\u1ebft n\u1ed1i l\u1ea1i +Max\ Reconnect\ Attempts=S\u1ed1 l\u1ea7n k\u1ebft n\u1ed1i l\u1ea1i t\u1ed1i \u0111a +Maximum\ number\ of\ times\ the\ client\ will\ attempt\ to\ reconnect\ when\ the\ connection\ is\ not\ available\ or\ lost.\ A\ negative\ value\ means\ that\ there\ is\ no\ limit\ to\ the\ number\ of\ reconnection\ attempts.\ Zero\ means\ not\ to\ attempt\ reconnection.=S\u1ed1 l\u1ea7n t\u1ed1i \u0111a m\u00e1y kh\u00e1ch s\u1ebd c\u1ed1 g\u1eafng k\u1ebft n\u1ed1i l\u1ea1i khi k\u1ebft n\u1ed1i kh\u00f4ng kh\u1ea3 d\u1ee5ng ho\u1eb7c b\u1ecb m\u1ea5t. Gi\u00e1 tr\u1ecb \u00e2m c\u00f3 ngh\u0129a l\u00e0 kh\u00f4ng c\u00f3 gi\u1edbi h\u1ea1n v\u1ec1 s\u1ed1 l\u1ea7n th\u1eed k\u1ebft n\u1ed1i l\u1ea1i. Zero c\u00f3 ngh\u0129a l\u00e0 kh\u00f4ng th\u1eed k\u1ebft n\u1ed1i l\u1ea1i. +IP\ or\ DNS\ name\ of\ remote\ host=T\u00ean IP ho\u1eb7c DNS c\u1ee7a m\u00e1y ch\u1ee7 t\u1eeb xa +IP\ of\ local\ network\ interface\ to\ bind\ to\ or\ 'AUTO'\ to\ select\ it\ automatically=IP c\u1ee7a giao di\u1ec7n m\u1ea1ng c\u1ee5c b\u1ed9 \u0111\u1ec3 li\u00ean k\u1ebft ho\u1eb7c ''AUTO'' \u0111\u1ec3 t\u1ef1 \u0111\u1ed9ng ch\u1ecdn n\u00f3 +Connection\ Options=T\u00f9y ch\u1ecdn k\u1ebft n\u1ed1i +Serial\ port\ device\ name.\ Usually\ something\ like\ /dev/ttyXXX\ on\ Linux=T\u00ean thi\u1ebft b\u1ecb c\u1ed5ng n\u1ed1i ti\u1ebfp. Th\u00f4ng th\u01b0\u1eddng m\u1ed9t c\u00e1i g\u00ec \u0111\u00f3 nh\u01b0 /dev/ttyXXX tr\u00ean Linux +Minimum\ number\ of\ bytes\ to\ receive\ before\ they\ are\ sent\ to\ the\ caller=S\u1ed1 byte t\u1ed1i thi\u1ec3u c\u1ea7n nh\u1eadn tr\u01b0\u1edbc khi ch\u00fang \u0111\u01b0\u1ee3c g\u1eedi \u0111\u1ebfn ng\u01b0\u1eddi g\u1ecdi +Local\ port\ number\ to\ use\ on\ the\ local\ host=S\u1ed1 c\u1ed5ng c\u1ee5c b\u1ed9 \u0111\u1ec3 s\u1eed d\u1ee5ng tr\u00ean m\u00e1y ch\u1ee7 c\u1ee5c b\u1ed9 +Physical\ address\ of\ Bluetooth\ device\ to\ connect\ to=\u0110\u1ecba ch\u1ec9 v\u1eadt l\u00fd c\u1ee7a thi\u1ebft b\u1ecb Bluetooth \u0111\u1ec3 k\u1ebft n\u1ed1i +Port\ number\ to\ connect\ to\ on\ remote\ host=S\u1ed1 c\u1ed5ng \u0111\u1ec3 k\u1ebft n\u1ed1i tr\u00ean m\u00e1y ch\u1ee7 t\u1eeb xa +User\ Name=T\u00ean ng\u01b0\u1eddi d\u00f9ng +Remote\ user\ name=T\u00ean ng\u01b0\u1eddi d\u00f9ng t\u1eeb xa +Password=M\u1eadt kh\u1ea9u +Remote\ password=M\u1eadt kh\u1ea9u t\u1eeb xa +Secure\ communications\ with\ SSL/TLS=B\u1ea3o m\u1eadt th\u00f4ng tin li\u00ean l\u1ea1c v\u1edbi SSL/TLS +Enable\ to\ check\ if\ remote\ host\ is\ reachable\ before\ attempting\ further\ operations=Cho ph\u00e9p ki\u1ec3m tra xem m\u00e1y ch\u1ee7 t\u1eeb xa c\u00f3 th\u1ec3 truy c\u1eadp \u0111\u01b0\u1ee3c hay kh\u00f4ng tr\u01b0\u1edbc khi th\u1eed c\u00e1c thao t\u00e1c ti\u1ebfp theo +Path\ or\ resource\ or\ service\ relative\ to\ server\ root=\u0110\u01b0\u1eddng d\u1eabn ho\u1eb7c t\u00e0i nguy\u00ean ho\u1eb7c d\u1ecbch v\u1ee5 li\u00ean quan \u0111\u1ebfn root m\u00e1y ch\u1ee7 +Unique\ ID\ of\ system\ group=ID duy nh\u1ea5t c\u1ee7a nh\u00f3m h\u1ec7 th\u1ed1ng +Name\ of\ system\ group=T\u00ean nh\u00f3m h\u1ec7 th\u1ed1ng +Description\ of\ system\ group=M\u00f4 t\u1ea3 nh\u00f3m h\u1ec7 th\u1ed1ng +List\ of\ bundle\ repository\ URLs=Danh s\u00e1ch URL kho l\u01b0u tr\u1eef g\u00f3i +A\ human\ readable\ friendly\ identifier\ for\ the\ deployment=M\u00e3 \u0111\u1ecbnh danh th\u00e2n thi\u1ec7n v\u1edbi con ng\u01b0\u1eddi c\u00f3 th\u1ec3 \u0111\u1ecdc \u0111\u01b0\u1ee3c \u0111\u1ec3 tri\u1ec3n khai +Enable\ Landing\ Page=K\u00edch ho\u1ea1t trang \u0111\u00edch +Enable\ Landing\ Servlet\ to\ redirect\ users\ to\ landing\ page=K\u00edch ho\u1ea1t Landing Servlet \u0111\u1ec3 chuy\u1ec3n h\u01b0\u1edbng ng\u01b0\u1eddi d\u00f9ng \u0111\u1ebfn trang \u0111\u00edch +Config\ Class=L\u1edbp c\u1ea5u h\u00ecnh +Type\ of\ module\ config\ class\ for\ which\ a\ custom\ panel\ must\ be\ generated=Lo\u1ea1i l\u1edbp c\u1ea5u h\u00ecnh m\u00f4-\u0111un m\u00e0 b\u1ea3ng t\u00f9y ch\u1ec9nh ph\u1ea3i \u0111\u01b0\u1ee3c t\u1ea1o +UI\ Class=L\u1edbp giao di\u1ec7n ng\u01b0\u1eddi d\u00f9ng +Fully\ qualified\ name\ of\ class\ implementing\ IModuleAdminPanel=T\u00ean \u0111\u1ea7y \u0111\u1ee7 c\u1ee7a l\u1edbp tri\u1ec3n khai IModuleAdminPanel + +# Auto-extracted property IDs +sensorML=C\u1ea3m bi\u1ebfn Ml +lastUpdated=C\u1eadp nh\u1eadt l\u1ea7n cu\u1ed1i +lat=L\u1ea1t +lon=Lon +alt=thay th\u1ebf +x=X +y=Y +z=Z +heading=ti\u00eau \u0111\u1ec1 +pitch=S\u00e2n b\u00f3ng \u0111\u00e1 +roll=Cu\u1ed9n +location=V\u1ecb tr\u00ed +orientation=\u0110\u1ecbnh h\u01b0\u1edbng +databaseNum=S\u1ed1 c\u01a1 s\u1edf d\u1eef li\u1ec7u +enableAccessControl=B\u1eadt ki\u1ec3m so\u00e1t truy c\u1eadp +requireAuth=Y\u00eau c\u1ea7u x\u00e1c th\u1ef1c +mimeType=Lo\u1ea1i k\u1ecbch c\u00e2m +className=T\u00ean l\u1edbp +endPoint=\u0110i\u1ec3m cu\u1ed1i +id=Nh\u1eadn d\u1ea1ng +description=S\u1ef1 mi\u00eau t\u1ea3 +autoStart=T\u1ef1 \u0111\u1ed9ng b\u1eaft \u0111\u1ea7u +topicName=T\u00ean ch\u1ee7 \u0111\u1ec1 +enablePublish=B\u1eadt xu\u1ea5t b\u1ea3n +enableSubscribe=B\u1eadt \u0111\u0103ng k\u00fd +protocol=Giao th\u1ee9c +moduleConfigPath=\u0110\u01b0\u1eddng d\u1eabn c\u1ea5u h\u00ecnh m\u00f4-\u0111un +moduleDataPath=\u0110\u01b0\u1eddng d\u1eabn d\u1eef li\u1ec7u m\u00f4-\u0111un +commonConfig=C\u1ea5u h\u00ecnh chung +sensors=Sensors +config=C\u1ea5u h\u00ecnh +uniqueID=Id duy nh\u1ea5t +subsystems=H\u1ec7 th\u1ed1ng con +dbConfig=C\u1ea5u h\u00ecnh DB +systemUIDs=Uid h\u1ec7 th\u1ed1ng +autoPurgeConfig=C\u1ea5u h\u00ecnh t\u1ef1 \u0111\u1ed9ng thanh l\u1ecdc +minCommitPeriod=Th\u1eddi gian cam k\u1ebft t\u1ed1i thi\u1ec3u +enabled=\u0110\u00e3 b\u1eadt +purgePeriod=Th\u1eddi k\u1ef3 thanh l\u1ecdc +maxRecordAge=Tu\u1ed5i k\u1ef7 l\u1ee5c t\u1ed1i \u0111a +users=Ng\u01b0\u1eddi d\u00f9ng +roles=Vai tr\u00f2 +allow=Cho ph\u00e9p +deny=T\u1eeb ch\u1ed1i +userID=M\u00e3 ng\u01b0\u1eddi d\u00f9ng +name=T\u00ean +password=M\u1eadt kh\u1ea9u +certificate=Gi\u1ea5y ch\u1ee9ng nh\u1eadn +twoFactorSecret=B\u00ed m\u1eadt hai y\u1ebfu t\u1ed1 +isTwoFactorEnabled=\u0110\u00e3 b\u1eadt hai y\u1ebfu t\u1ed1 ch\u01b0a +roleID=Id vai tr\u00f2 +sourceDatabaseId=Id c\u01a1 s\u1edf d\u1eef li\u1ec7u ngu\u1ed3n +includeFilter=Bao g\u1ed3m b\u1ed9 l\u1ecdc +excludeFilter=Lo\u1ea1i tr\u1eeb b\u1ed9 l\u1ecdc +httpPort=C\u1ed5ng http +httpsPort=C\u1ed5ng Https +staticDocsRootUrl=Url g\u1ed1c c\u1ee7a t\u00e0i li\u1ec7u t\u0129nh +staticDocsRootDir=Th\u01b0 m\u1ee5c g\u1ed1c c\u1ee7a t\u00e0i li\u1ec7u t\u0129nh +servletsRootUrl=Url g\u1ed1c c\u1ee7a servlet +proxyBaseUrl=Url c\u01a1 s\u1edf proxy +authMethod=Ph\u01b0\u01a1ng th\u1ee9c x\u00e1c th\u1ef1c +keyStorePath=\u0110\u01b0\u1eddng d\u1eabn l\u01b0u tr\u1eef kh\u00f3a +keyStorePassword=M\u1eadt kh\u1ea9u l\u01b0u tr\u1eef kh\u00f3a +keyAlias=B\u00ed danh ch\u00ednh +trustStorePath=\u0110\u01b0\u1eddng d\u1eabn c\u1eeda h\u00e0ng tin c\u1eady +trustStorePassword=M\u1eadt kh\u1ea9u c\u1eeda h\u00e0ng tin c\u1eady +xmlConfigFile=T\u1ec7p c\u1ea5u h\u00ecnh Xml +enableCORS=K\u00edch ho\u1ea1t Cors +title=Title +keywords=T\u1eeb kh\u00f3a +fees=Ph\u00ed +accessConstraints=R\u00e0ng bu\u1ed9c truy c\u1eadp +serviceProvider=Nh\u00e0 cung c\u1ea5p d\u1ecbch v\u1ee5 +ogcCapabilitiesInfo=Th\u00f4ng tin v\u1ec1 kh\u1ea3 n\u0103ng c\u1ee7a Ogc +enableHttpGET=K\u00edch ho\u1ea1t t\u00ednh n\u0103ng Nh\u1eadn http +enableHttpPOST=K\u00edch ho\u1ea1t b\u00e0i \u0111\u0103ng http +enableSOAP=K\u00edch ho\u1ea1t x\u00e0 ph\u00f2ng +connectTimeout=H\u1ebft th\u1eddi gian k\u1ebft n\u1ed1i +reconnectPeriod=Th\u1eddi gian k\u1ebft n\u1ed1i l\u1ea1i +reconnectAttempts=Th\u1eed k\u1ebft n\u1ed1i l\u1ea1i +deviceID=Id thi\u1ebft b\u1ecb +deviceClass=L\u1edbp thi\u1ebft b\u1ecb +remoteHost=M\u00e1y ch\u1ee7 t\u1eeb xa +localAddress=\u0110\u1ecba ch\u1ec9 \u0111\u1ecba ph\u01b0\u01a1ng +connection=S\u1ef1 li\u00ean quan +portName=T\u00ean c\u1ed5ng +baudRate=T\u1ed1c \u0111\u1ed9 truy\u1ec1n +dataBits=Bit d\u1eef li\u1ec7u +stopBits=D\u1eebng bit +parity=Ch\u1eb5n l\u1ebb +receiveTimeout=Nh\u1eadn th\u1eddi gian ch\u1edd +receiveThreshold=Nh\u1eadn ng\u01b0\u1ee1ng +remotePort=C\u1ed5ng t\u1eeb xa +localPort=C\u1ea3ng \u0111\u1ecba ph\u01b0\u01a1ng +deviceAddress=\u0110\u1ecba ch\u1ec9 thi\u1ebft b\u1ecb +deviceName=T\u00ean thi\u1ebft b\u1ecb +serviceUuid=D\u1ecbch v\u1ee5 Uuid +user=ng\u01b0\u1eddi d\u00f9ng +enableTLS=B\u1eadt Tls +checkReachability=Ki\u1ec3m tra kh\u1ea3 n\u0103ng ti\u1ebfp c\u1eadn +resourcePath=\u0110\u01b0\u1eddng d\u1eabn t\u00e0i nguy\u00ean +uid=Uid +securityRole=Vai tr\u00f2 b\u1ea3o m\u1eadt +passwordField=Tr\u01b0\u1eddng m\u1eadt kh\u1ea9u +widgetSet=B\u1ed9 ti\u1ec7n \u00edch +bundleRepoUrls=G\u00f3i Repo Url +customPanels=B\u1ea3ng t\u00f9y ch\u1ec9nh +customForms=Bi\u1ec3u m\u1eabu t\u00f9y ch\u1ec9nh +deploymentName=T\u00ean tri\u1ec3n khai +enableLandingPage=K\u00edch ho\u1ea1t trang \u0111\u00edch +configClass=L\u1edbp c\u1ea5u h\u00ecnh +uiClass=L\u1edbp giao di\u1ec7n ng\u01b0\u1eddi d\u00f9ng +moduleClass=L\u1edbp m\u00f4-\u0111un + +# Auto-extracted hardcoded UI strings +testLinks1=Li\u00ean k\u1ebft th\u1eed nghi\u1ec7m +uniqueID1=ID duy nh\u1ea5t +foiIDs1=ID th\u00f4ng tin c\u00e1 nh\u00e2n +version1=Phi\u00ean b\u1ea3n + +Connected\ Systems\ Endpoint=\u0110i\u1ec3m cu\u1ed1i c\u1ee7a h\u1ec7 th\u1ed1ng \u0111\u01b0\u1ee3c k\u1ebft n\u1ed1i +Connected\ Systems\ endpoint\ where\ the\ requests\ are\ sent=\u0110i\u1ec3m cu\u1ed1i c\u1ee7a H\u1ec7 th\u1ed1ng \u0111\u01b0\u1ee3c k\u1ebft n\u1ed1i n\u01a1i g\u1eedi y\u00eau c\u1ea7u +Connection\ Settings=C\u00e0i \u0111\u1eb7t k\u1ebft n\u1ed1i +Custom\ connector\ configurations=C\u1ea5u h\u00ecnh tr\u00ecnh k\u1ebft n\u1ed1i t\u00f9y ch\u1ec9nh +Custom\ provider\ configurations=C\u1ea5u h\u00ecnh nh\u00e0 cung c\u1ea5p t\u00f9y ch\u1ec9nh +Database\ ID=ID c\u01a1 s\u1edf d\u1eef li\u1ec7u +Default\ live\ time-out\ for\ all\ offerings,\ unless\ overriden\ by\ custom\ provider\ settings=Th\u1eddi gian ch\u1edd tr\u1ef1c ti\u1ebfp m\u1eb7c \u0111\u1ecbnh cho t\u1ea5t c\u1ea3 c\u00e1c d\u1ecbch v\u1ee5, tr\u1eeb khi b\u1ecb ghi \u0111\u00e8 b\u1edfi c\u00e0i \u0111\u1eb7t nh\u00e0 cung c\u1ea5p t\u00f9y ch\u1ec9nh +Default\ live\ time-out\ for\ new\ offerings\ created\ via\ SOS-T=Th\u1eddi gian ch\u1edd tr\u1ef1c ti\u1ebfp m\u1eb7c \u0111\u1ecbnh cho c\u00e1c d\u1ecbch v\u1ee5 m\u1edbi \u0111\u01b0\u1ee3c t\u1ea1o th\u00f4ng qua SOS-T +Enable\ to\ use\ a\ persistent\ HTTP\ connection\ for\ InsertResult=Cho ph\u00e9p s\u1eed d\u1ee5ng k\u1ebft n\u1ed1i HTTP li\u00ean t\u1ee5c cho InsertResult +Execution\ period\ of\ the\ purge\ policy\ (in\ seconds)=Th\u1eddi gian th\u1ef1c hi\u1ec7n ch\u00ednh s\u00e1ch thanh l\u1ecdc (t\u00ednh b\u1eb1ng gi\u00e2y) +Filtered\ view\ to\ select\ systems\ exposed\ as\ read-only\ through\ this\ service=Ch\u1ebf \u0111\u1ed9 xem \u0111\u01b0\u1ee3c l\u1ecdc \u0111\u1ec3 ch\u1ecdn c\u00e1c h\u1ec7 th\u1ed1ng \u0111\u01b0\u1ee3c hi\u1ec3n th\u1ecb \u1edf d\u1ea1ng ch\u1ec9 \u0111\u1ecdc th\u00f4ng qua d\u1ecbch v\u1ee5 n\u00e0y +Filtered\ view\ to\ select\ systems/datastreams\ to\ register\ with\ Connected\ Systems=Ch\u1ebf \u0111\u1ed9 xem \u0111\u01b0\u1ee3c l\u1ecdc \u0111\u1ec3 ch\u1ecdn h\u1ec7 th\u1ed1ng/lu\u1ed3ng d\u1eef li\u1ec7u \u0111\u1ec3 \u0111\u0103ng k\u00fd v\u1edbi H\u1ec7 th\u1ed1ng \u0111\u01b0\u1ee3c k\u1ebft n\u1ed1i +Filtered\ view\ to\ select\ systems/datastreams\ to\ register\ with\ remote\ SOS=Ch\u1ebf \u0111\u1ed9 xem \u0111\u01b0\u1ee3c l\u1ecdc \u0111\u1ec3 ch\u1ecdn h\u1ec7 th\u1ed1ng/d\u00f2ng d\u1eef li\u1ec7u \u0111\u1ec3 \u0111\u0103ng k\u00fd v\u1edbi SOS t\u1eeb xa +Fixed\ system\ location\ in\ EPSG\ 4979\ (WGS84)\ coordinate\ system=\u0110\u00e3 s\u1eeda l\u1ed7i v\u1ecb tr\u00ed h\u1ec7 th\u1ed1ng trong h\u1ec7 t\u1ecda \u0111\u1ed9 EPSG 4979 (WGS84) +For\ each\ connection\ or\ reconnection\ attempt,\ the\ client\ will\ wait\ for\ the\ remote\ side\ to\ respond\ until\ this\ timeout\ expires\ (in\ ms)=\u0110\u1ed1i v\u1edbi m\u1ed7i l\u1ea7n th\u1eed k\u1ebft n\u1ed1i ho\u1eb7c k\u1ebft n\u1ed1i l\u1ea1i, m\u00e1y kh\u00e1ch s\u1ebd \u0111\u1ee3i ph\u00eda t\u1eeb xa ph\u1ea3n h\u1ed3i cho \u0111\u1ebfn khi h\u1ebft th\u1eddi gian ch\u1edd n\u00e0y (t\u00ednh b\u1eb1ng ms) +Heading\ (or\ yaw)\ angle\ about\ Z\ axis\ in\ degrees=G\u00f3c h\u01b0\u1edbng (ho\u1eb7c ng\u00e1p) quanh tr\u1ee5c Z t\u00ednh b\u1eb1ng \u0111\u1ed9 +How\ long\ the\ client\ will\ wait\ after\ connection\ is\ lost\ before\ it\ will\ attempt\ to\ reconnect\ (in\ ms)=M\u00e1y kh\u00e1ch s\u1ebd \u0111\u1ee3i bao l\u00e2u sau khi m\u1ea5t k\u1ebft n\u1ed1i tr\u01b0\u1edbc khi c\u1ed1 g\u1eafng k\u1ebft n\u1ed1i l\u1ea1i (t\u00ednh b\u1eb1ng mili gi\u00e2y) +ID\ Generator=Tr\u00ecnh t\u1ea1o ID +ID\ of\ database\ module\ used\ for\ persisting\ data\ received\ by\ this\ service.\ If\ none\ is\ provided,\ new\ systems\ registered\ through\ this\ service\ will\ be\ available\ on\ the\ hub,\ but\ with\ no\ persistence\ guarantee\ across\ restarts.=ID c\u1ee7a m\u00f4-\u0111un c\u01a1 s\u1edf d\u1eef li\u1ec7u \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng \u0111\u1ec3 l\u01b0u tr\u1eef d\u1eef li\u1ec7u m\u00e0 d\u1ecbch v\u1ee5 n\u00e0y nh\u1eadn \u0111\u01b0\u1ee3c. N\u1ebfu kh\u00f4ng c\u00f3 g\u00ec \u0111\u01b0\u1ee3c cung c\u1ea5p, c\u00e1c h\u1ec7 th\u1ed1ng m\u1edbi \u0111\u01b0\u1ee3c \u0111\u0103ng k\u00fd th\u00f4ng qua d\u1ecbch v\u1ee5 n\u00e0y s\u1ebd c\u00f3 s\u1eb5n tr\u00ean trung t\u00e2m nh\u01b0ng kh\u00f4ng c\u00f3 s\u1ef1 \u0111\u1ea3m b\u1ea3o v\u1ec1 t\u00ednh b\u1ec1n v\u1eefng trong su\u1ed1t qu\u00e1 tr\u00ecnh kh\u1edfi \u0111\u1ed9ng l\u1ea1i. +ID\ of\ database\ module\ used\ for\ persisting\ data\ received\ by\ this\ service.\ If\ none\ is\ provided,\ new\ systems\ registered\ through\ this\ service\ will\ be\ available\ on\ the\ hub,\ but\ with\ no\ persistence\ guarantee\ across\ restarts.\ Only\ the\ latest\ observation\ from\ each\ datastream\ will\ be\ available\ and\ older\ observations\ will\ be\ discarded=ID c\u1ee7a m\u00f4-\u0111un c\u01a1 s\u1edf d\u1eef li\u1ec7u \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng \u0111\u1ec3 l\u01b0u tr\u1eef d\u1eef li\u1ec7u m\u00e0 d\u1ecbch v\u1ee5 n\u00e0y nh\u1eadn \u0111\u01b0\u1ee3c. N\u1ebfu kh\u00f4ng c\u00f3 g\u00ec \u0111\u01b0\u1ee3c cung c\u1ea5p, c\u00e1c h\u1ec7 th\u1ed1ng m\u1edbi \u0111\u01b0\u1ee3c \u0111\u0103ng k\u00fd th\u00f4ng qua d\u1ecbch v\u1ee5 n\u00e0y s\u1ebd c\u00f3 s\u1eb5n tr\u00ean trung t\u00e2m nh\u01b0ng kh\u00f4ng c\u00f3 s\u1ef1 \u0111\u1ea3m b\u1ea3o v\u1ec1 t\u00ednh b\u1ec1n v\u1eefng trong su\u1ed1t qu\u00e1 tr\u00ecnh kh\u1edfi \u0111\u1ed9ng l\u1ea1i. Ch\u1ec9 c\u00f3 quan s\u00e1t m\u1edbi nh\u1ea5t t\u1eeb \u200b\u200bm\u1ed7i lu\u1ed3ng d\u1eef li\u1ec7u m\u1edbi c\u00f3 s\u1eb5n v\u00e0 c\u00e1c quan s\u00e1t c\u0169 h\u01a1n s\u1ebd b\u1ecb lo\u1ea1i b\u1ecf +Individual\ configuration\ of\ sensors\ in\ the\ array\ (will\ override\ common\ configuration)=C\u1ea5u h\u00ecnh ri\u00eang l\u1ebb c\u1ee7a c\u00e1c c\u1ea3m bi\u1ebfn trong m\u1ea3ng (s\u1ebd ghi \u0111\u00e8 c\u1ea5u h\u00ecnh chung) +List\ of\ observed\ properties\ URI\ to\ make\ available\ as\ outputs=Danh s\u00e1ch c\u00e1c thu\u1ed9c t\u00ednh \u0111\u01b0\u1ee3c quan s\u00e1t URI s\u1ebd c\u00f3 s\u1eb5n d\u01b0\u1edbi d\u1ea1ng \u0111\u1ea7u ra +Mapping\ of\ custom\ formats\ mime-types\ to\ custom\ serializer\ classes=\u00c1nh x\u1ea1 c\u00e1c lo\u1ea1i mime \u0111\u1ecbnh d\u1ea1ng t\u00f9y ch\u1ec9nh sang c\u00e1c l\u1edbp tr\u00ecnh tu\u1ea7n t\u1ef1 h\u00f3a t\u00f9y ch\u1ec9nh +Mappings\ used\ by\ CURIE\ to\ URI\ resolver=\u00c1nh x\u1ea1 \u0111\u01b0\u1ee3c CURIE s\u1eed d\u1ee5ng t\u1edbi tr\u00ecnh ph\u00e2n gi\u1ea3i URI +Max\ Limit=Gi\u1edbi h\u1ea1n t\u1ed1i \u0111a +Max\ Observations\ Returned=S\u1ed1 quan s\u00e1t t\u1ed1i \u0111a \u0111\u01b0\u1ee3c tr\u1ea3 v\u1ec1 +Max\ Records\ Returned=B\u1ea3n ghi t\u1ed1i \u0111a \u0111\u01b0\u1ee3c tr\u1ea3 v\u1ec1 +Max\ delay\ between\ auto-commit\ execution,\ in\ seconds.\ 0\ to\ disable\ time-based\ auto-commit=\u0110\u1ed9 tr\u1ec5 t\u1ed1i \u0111a gi\u1eefa qu\u00e1 tr\u00ecnh th\u1ef1c hi\u1ec7n cam k\u1ebft t\u1ef1 \u0111\u1ed9ng, t\u00ednh b\u1eb1ng gi\u00e2y. 0 \u0111\u1ec3 t\u1eaft t\u1ef1 \u0111\u1ed9ng cam k\u1ebft d\u1ef1a tr\u00ean th\u1eddi gian +Maximum\ age\ of\ data\ to\ be\ kept\ in\ storage\ (in\ seconds)=Tu\u1ed5i t\u1ed1i \u0111a c\u1ee7a d\u1eef li\u1ec7u \u0111\u01b0\u1ee3c l\u01b0u tr\u1eef trong b\u1ed9 l\u01b0u tr\u1eef (t\u00ednh b\u1eb1ng gi\u00e2y) +Maximum\ number\ of\ FoI\ IDs\ listed\ in\ capabilities=S\u1ed1 l\u01b0\u1ee3ng ID foI t\u1ed1i \u0111a \u0111\u01b0\u1ee3c li\u1ec7t k\u00ea trong kh\u1ea3 n\u0103ng +Maximum\ number\ of\ observations\ returned\ \ by\ a\ historical\ GetObservation\ request\ (for\ each\ selected\ offering)=S\u1ed1 l\u01b0\u1ee3ng quan s\u00e1t t\u1ed1i \u0111a \u0111\u01b0\u1ee3c y\u00eau c\u1ea7u GetObservation l\u1ecbch s\u1eed tr\u1ea3 v\u1ec1 (\u0111\u1ed1i v\u1edbi m\u1ed7i \u01b0u \u0111\u00e3i \u0111\u00e3 ch\u1ecdn) +Maximum\ number\ of\ records\ in\ upload\ queue\ (used\ to\ compensate\ for\ variable\ bandwidth)=S\u1ed1 l\u01b0\u1ee3ng b\u1ea3n ghi t\u1ed1i \u0111a trong h\u00e0ng \u0111\u1ee3i t\u1ea3i l\u00ean (\u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng \u0111\u1ec3 b\u00f9 cho b\u0103ng th\u00f4ng thay \u0111\u1ed5i) +Maximum\ number\ of\ resources\ returned\ in\ a\ single\ page=S\u1ed1 l\u01b0\u1ee3ng t\u00e0i nguy\u00ean t\u1ed1i \u0111a \u0111\u01b0\u1ee3c tr\u1ea3 v\u1ec1 trong m\u1ed9t trang +Maximum\ number\ of\ result\ records\ returned\ by\ a\ historical\ GetResult\ request=S\u1ed1 l\u01b0\u1ee3ng b\u1ea3n ghi k\u1ebft qu\u1ea3 t\u1ed1i \u0111a \u0111\u01b0\u1ee3c tr\u1ea3 v\u1ec1 b\u1edfi y\u00eau c\u1ea7u GetResult l\u1ecbch s\u1eed +Maximum\ number\ of\ stream\ errors\ before\ we\ try\ to\ reconnect\ to\ remote\ server=S\u1ed1 l\u1ed7i ph\u00e1t tr\u1ef1c tuy\u1ebfn t\u1ed1i \u0111a tr\u01b0\u1edbc khi ch\u00fang t\u00f4i c\u1ed1 g\u1eafng k\u1ebft n\u1ed1i l\u1ea1i v\u1edbi m\u00e1y ch\u1ee7 t\u1eeb xa +Memory\ cache\ size\ for\ page\ chunks,\ in\ KB=K\u00edch th\u01b0\u1edbc b\u1ed9 nh\u1edb \u0111\u1ec7m cho c\u00e1c \u0111o\u1ea1n trang, t\u00ednh b\u1eb1ng KB +Metadata\ of\ system\ group\ that\ will\ be\ created\ to\ contain\ all\ procedures/sensors\ registered\ through\ this\ service.\ Only\ sensors\ in\ this\ group\ will\ be\ modifiable\ by\ this\ service=Si\u00eau d\u1eef li\u1ec7u c\u1ee7a nh\u00f3m h\u1ec7 th\u1ed1ng s\u1ebd \u0111\u01b0\u1ee3c t\u1ea1o \u0111\u1ec3 ch\u1ee9a t\u1ea5t c\u1ea3 c\u00e1c quy tr\u00ecnh/c\u1ea3m bi\u1ebfn \u0111\u01b0\u1ee3c \u0111\u0103ng k\u00fd th\u00f4ng qua d\u1ecbch v\u1ee5 n\u00e0y. D\u1ecbch v\u1ee5 n\u00e0y ch\u1ec9 c\u00f3 th\u1ec3 s\u1eeda \u0111\u1ed5i c\u00e1c c\u1ea3m bi\u1ebfn trong nh\u00f3m n\u00e0y +Metadata\ of\ system\ group\ that\ will\ be\ created\ to\ contain\ all\ systems\ registered\ through\ this\ service.\ Only\ systems\ in\ this\ group\ will\ be\ modifiable\ by\ this\ service=Si\u00eau d\u1eef li\u1ec7u c\u1ee7a nh\u00f3m h\u1ec7 th\u1ed1ng s\u1ebd \u0111\u01b0\u1ee3c t\u1ea1o \u0111\u1ec3 ch\u1ee9a t\u1ea5t c\u1ea3 c\u00e1c h\u1ec7 th\u1ed1ng \u0111\u01b0\u1ee3c \u0111\u0103ng k\u00fd th\u00f4ng qua d\u1ecbch v\u1ee5 n\u00e0y. Ch\u1ec9 nh\u1eefng h\u1ec7 th\u1ed1ng trong nh\u00f3m n\u00e0y m\u1edbi c\u00f3 th\u1ec3 \u0111\u01b0\u1ee3c s\u1eeda \u0111\u1ed5i b\u1edfi d\u1ecbch v\u1ee5 n\u00e0y +Method\ used\ to\ generate\ new\ resource\ IDs=Ph\u01b0\u01a1ng ph\u00e1p \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng \u0111\u1ec3 t\u1ea1o ID t\u00e0i nguy\u00ean m\u1edbi +Minimum\ fillrate\ above\ which\ auto\ compact\ operations\ may\ be\ triggered=T\u1ef7 l\u1ec7 l\u1ea5p \u0111\u1ea7y t\u1ed1i thi\u1ec3u tr\u00ean m\u1ee9c m\u00e0 ho\u1ea1t \u0111\u1ed9ng thu g\u1ecdn t\u1ef1 \u0111\u1ed9ng c\u00f3 th\u1ec3 \u0111\u01b0\u1ee3c k\u00edch ho\u1ea1t +Minimum\ period\ between\ database\ commits\ (in\ ms)=Kho\u1ea3ng th\u1eddi gian t\u1ed1i thi\u1ec3u gi\u1eefa c\u00e1c l\u1ea7n x\u00e1c nh\u1eadn c\u01a1 s\u1edf d\u1eef li\u1ec7u (t\u00ednh b\u1eb1ng mili gi\u00e2y) +Names\ of\ datastreams\ whose\ data\ will\ be\ hidden\ from\ the\ SOS.\ If\ this\ is\ null,\ all\ streams\ produced\ by\ the\ procedure\ are\ exposed=T\u00ean c\u1ee7a c\u00e1c lu\u1ed3ng d\u1eef li\u1ec7u c\u00f3 d\u1eef li\u1ec7u s\u1ebd b\u1ecb \u1ea9n kh\u1ecfi SOS. N\u1ebfu gi\u00e1 tr\u1ecb n\u00e0y l\u00e0 null, t\u1ea5t c\u1ea3 c\u00e1c lu\u1ed3ng do th\u1ee7 t\u1ee5c t\u1ea1o ra s\u1ebd \u0111\u01b0\u1ee3c hi\u1ec3n th\u1ecb +Observed\ Properties=Thu\u1ed9c t\u00ednh \u0111\u01b0\u1ee3c quan s\u00e1t +Offering\ URI\ as\ exposed\ in\ capabilities.\ (if\ null,\ the\ procedure\ UID\ is\ used)=Cung c\u1ea5p URI nh\u01b0 \u0111\u01b0\u1ee3c th\u1ec3 hi\u1ec7n trong c\u00e1c kh\u1ea3 n\u0103ng. (n\u1ebfu null, UID th\u1ee7 t\u1ee5c \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng) +Offering\ description\ (if\ null,\ it\ will\ be\ auto-generated)=M\u00f4 t\u1ea3 cung c\u1ea5p (n\u1ebfu r\u1ed7ng, n\u00f3 s\u1ebd \u0111\u01b0\u1ee3c t\u1ea1o t\u1ef1 \u0111\u1ed9ng) +Offering\ name\ (if\ null,\ the\ procedure\ name\ is\ used)=T\u00ean cung c\u1ea5p (n\u1ebfu null, t\u00ean th\u1ee7 t\u1ee5c \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng) +Orientation\ as\ Euler\ angles\ in\ NED\ coordinate\ reference\ frame.\nOrder\ of\ rotations\ is\ z-y\u2019-x"\ (in\ rotating\ frame)\ or\ x-y-z\ (in\ fixed\ frame)=\u0110\u1ecbnh h\u01b0\u1edbng theo g\u00f3c Euler trong h\u1ec7 quy chi\u1ebfu t\u1ecda \u0111\u1ed9 NED.\nTh\u1ee9 t\u1ef1 quay l\u00e0 z-y''-x" (trong khung quay) ho\u1eb7c x-y-z (trong khung c\u1ed1 \u0111\u1ecbnh) +Password\ for\ the\ key\ store\ (and\ for\ the\ keypair\ within\ the\ keystore).\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ "javax.net.ssl.keyStorePassword"\ system\ property.\ This\ value\ can\ use\ variable\ expansion\ expressions\ of\ the\ form\ "$${name}"\ (for\ environment\ variables\ and\ system\ properties)\ or\ "$${file;/path/to/file}"\ (for\ secret\ file\ contents).=M\u1eadt kh\u1ea9u cho kho kh\u00f3a (v\u00e0 cho c\u1eb7p kh\u00f3a trong kho kh\u00f3a). N\u1ebfu gi\u00e1 tr\u1ecb n\u00e0y tr\u1ed1ng, s\u1ebd m\u1eb7c \u0111\u1ecbnh s\u1eed d\u1ee5ng gi\u00e1 tr\u1ecb c\u1ee7a thu\u1ed9c t\u00ednh h\u1ec7 th\u1ed1ng "javax.net.ssl.keyStorePassword". Gi\u00e1 tr\u1ecb n\u00e0y c\u00f3 th\u1ec3 s\u1eed d\u1ee5ng c\u00e1c bi\u1ec3u th\u1ee9c m\u1edf r\u1ed9ng bi\u1ebfn c\u00f3 d\u1ea1ng "$${name}" (\u0111\u1ed1i v\u1edbi bi\u1ebfn m\u00f4i tr\u01b0\u1eddng v\u00e0 thu\u1ed9c t\u00ednh h\u1ec7 th\u1ed1ng) ho\u1eb7c "$${file;/path/to/file}" (\u0111\u1ed1i v\u1edbi n\u1ed9i dung t\u1ec7p b\u00ed m\u1eadt). +Password\ for\ the\ trust\ store.\ Ignored\ if\ client\ certificate\ authentication\ is\ not\ used.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ "javax.net.ssl.trustStorePassword"\ system\ property.\ This\ value\ can\ use\ variable\ expansion\ expressions\ of\ the\ form\ "$${name}"\ (for\ environment\ variables\ and\ system\ properties)\ or\ "$${file;/path/to/file}"\ (for\ secret\ file\ contents).=M\u1eadt kh\u1ea9u cho c\u1eeda h\u00e0ng \u1ee7y th\u00e1c. B\u1ecf qua n\u1ebfu x\u00e1c th\u1ef1c ch\u1ee9ng ch\u1ec9 \u1ee9ng d\u1ee5ng kh\u00e1ch kh\u00f4ng \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng. N\u1ebfu gi\u00e1 tr\u1ecb n\u00e0y tr\u1ed1ng, s\u1ebd m\u1eb7c \u0111\u1ecbnh s\u1eed d\u1ee5ng gi\u00e1 tr\u1ecb c\u1ee7a thu\u1ed9c t\u00ednh h\u1ec7 th\u1ed1ng "javax.net.ssl.trustStorePassword". Gi\u00e1 tr\u1ecb n\u00e0y c\u00f3 th\u1ec3 s\u1eed d\u1ee5ng c\u00e1c bi\u1ec3u th\u1ee9c m\u1edf r\u1ed9ng bi\u1ebfn c\u00f3 d\u1ea1ng "$${name}" (\u0111\u1ed1i v\u1edbi bi\u1ebfn m\u00f4i tr\u01b0\u1eddng v\u00e0 thu\u1ed9c t\u00ednh h\u1ec7 th\u1ed1ng) ho\u1eb7c "$${file;/path/to/file}" (\u0111\u1ed1i v\u1edbi n\u1ed9i dung t\u1ec7p b\u00ed m\u1eadt). +Path\ of\ service\ endpoint\ relative\ to\ the\ context\ URL\ (e.g.\ http\://server.net/sensorhub)=\u0110\u01b0\u1eddng d\u1eabn c\u1ee7a \u0111i\u1ec3m cu\u1ed1i d\u1ecbch v\u1ee5 li\u00ean quan \u0111\u1ebfn URL ng\u1eef c\u1ea3nh (v\u00ed d\u1ee5: http://server.net/sensorhub) +Path\ to\ a\ key\ store\ containing\ the\ certificate\ and\ keypair\ that\ this\ server\ will\ present\ to\ clients\ when\ accessed\ over\ HTTPS.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ "javax.net.ssl.keyStore"\ system\ property.\ This\ value\ can\ use\ variable\ expansion\ expressions\ of\ the\ form\ "$${name}"\ (for\ environment\ variables\ and\ system\ properties)\ or\ "$${file;/path/to/file}"\ (for\ secret\ file\ contents).=\u0110\u01b0\u1eddng d\u1eabn \u0111\u1ebfn kho l\u01b0u tr\u1eef kh\u00f3a ch\u1ee9a ch\u1ee9ng ch\u1ec9 v\u00e0 c\u1eb7p kh\u00f3a m\u00e0 m\u00e1y ch\u1ee7 n\u00e0y s\u1ebd hi\u1ec3n th\u1ecb cho kh\u00e1ch h\u00e0ng khi \u0111\u01b0\u1ee3c truy c\u1eadp qua HTTPS. N\u1ebfu gi\u00e1 tr\u1ecb n\u00e0y tr\u1ed1ng, s\u1ebd m\u1eb7c \u0111\u1ecbnh s\u1eed d\u1ee5ng gi\u00e1 tr\u1ecb c\u1ee7a thu\u1ed9c t\u00ednh h\u1ec7 th\u1ed1ng "javax.net.ssl.keyStore". Gi\u00e1 tr\u1ecb n\u00e0y c\u00f3 th\u1ec3 s\u1eed d\u1ee5ng c\u00e1c bi\u1ec3u th\u1ee9c m\u1edf r\u1ed9ng bi\u1ebfn c\u00f3 d\u1ea1ng "$${name}" (\u0111\u1ed1i v\u1edbi bi\u1ebfn m\u00f4i tr\u01b0\u1eddng v\u00e0 thu\u1ed9c t\u00ednh h\u1ec7 th\u1ed1ng) ho\u1eb7c "$${file;/path/to/file}" (\u0111\u1ed1i v\u1edbi n\u1ed9i dung t\u1ec7p b\u00ed m\u1eadt). +Path\ to\ database\ file=\u0110\u01b0\u1eddng d\u1eabn \u0111\u1ebfn t\u1eadp tin c\u01a1 s\u1edf d\u1eef li\u1ec7u +Path\ to\ external\ config\ file\ (in\ Jetty\ IOC\ XML\ format)=\u0110\u01b0\u1eddng d\u1eabn \u0111\u1ebfn t\u1ec7p c\u1ea5u h\u00ecnh b\u00ean ngo\u00e0i (\u1edf \u0111\u1ecbnh d\u1ea1ng Jetty IOC XML) +Path\ to\ the\ TLS\ trust\ store\ that\ is\ used\ when\ client\ authentication\ is\ required.\ Ignored\ if\ client\ certificate\ authentication\ is\ not\ used.\ Certificates\ in\ this\ file\ designate\ the\ signing\ authorities\ for\ client\ certificates\ that\ will\ be\ trusted.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ "javax.net.ssl.trustStore"\ system\ property.\ This\ value\ can\ use\ variable\ expansion\ expressions\ of\ the\ form\ "$${name}"\ (for\ environment\ variables\ and\ system\ properties)\ or\ "$${file;/path/to/file}"\ (for\ secret\ file\ contents).=\u0110\u01b0\u1eddng d\u1eabn \u0111\u1ebfn kho l\u01b0u tr\u1eef tin c\u1eady TLS \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng khi y\u00eau c\u1ea7u x\u00e1c th\u1ef1c \u1ee9ng d\u1ee5ng kh\u00e1ch. B\u1ecf qua n\u1ebfu x\u00e1c th\u1ef1c ch\u1ee9ng ch\u1ec9 \u1ee9ng d\u1ee5ng kh\u00e1ch kh\u00f4ng \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng. Ch\u1ee9ng ch\u1ec9 trong t\u1ec7p n\u00e0y ch\u1ec9 \u0111\u1ecbnh c\u01a1 quan k\u00fd c\u00e1c ch\u1ee9ng ch\u1ec9 \u1ee9ng d\u1ee5ng kh\u00e1ch s\u1ebd \u0111\u01b0\u1ee3c tin c\u1eady. N\u1ebfu gi\u00e1 tr\u1ecb n\u00e0y tr\u1ed1ng, s\u1ebd m\u1eb7c \u0111\u1ecbnh s\u1eed d\u1ee5ng gi\u00e1 tr\u1ecb c\u1ee7a thu\u1ed9c t\u00ednh h\u1ec7 th\u1ed1ng "javax.net.ssl.trustStore". Gi\u00e1 tr\u1ecb n\u00e0y c\u00f3 th\u1ec3 s\u1eed d\u1ee5ng c\u00e1c bi\u1ec3u th\u1ee9c m\u1edf r\u1ed9ng bi\u1ebfn c\u00f3 d\u1ea1ng "$${name}" (\u0111\u1ed1i v\u1edbi bi\u1ebfn m\u00f4i tr\u01b0\u1eddng v\u00e0 thu\u1ed9c t\u00ednh h\u1ec7 th\u1ed1ng) ho\u1eb7c "$${file;/path/to/file}" (\u0111\u1ed1i v\u1edbi n\u1ed9i dung t\u1ec7p b\u00ed m\u1eadt). +Port\ number\ to\ connect\ to\ on\ remote\ host\ (0\ to\ automatically\ select\ a\ port)=S\u1ed1 c\u1ed5ng \u0111\u1ec3 k\u1ebft n\u1ed1i tr\u00ean m\u00e1y ch\u1ee7 t\u1eeb xa (0 \u0111\u1ec3 t\u1ef1 \u0111\u1ed9ng ch\u1ecdn c\u1ed5ng) +SOS\ Endpoint=\u0110i\u1ec3m cu\u1ed1i SOS +SOS\ endpoint\ to\ fetch\ data\ from=\u0110i\u1ec3m cu\u1ed1i SOS \u0111\u1ec3 l\u1ea5y d\u1eef li\u1ec7u t\u1eeb +SOS\ endpoint\ where\ the\ requests\ are\ sent=\u0110i\u1ec3m cu\u1ed1i SOS n\u01a1i y\u00eau c\u1ea7u \u0111\u01b0\u1ee3c g\u1eedi +SPS\ Endpoint=\u0110i\u1ec3m cu\u1ed1i SPS +SPS\ endpoint\ to\ send\ commands\ to=\u0110i\u1ec3m cu\u1ed1i SPS \u0111\u1ec3 g\u1eedi l\u1ec7nh t\u1edbi +Security\ related\ options=T\u00f9y ch\u1ecdn li\u00ean quan \u0111\u1ebfn b\u1ea3o m\u1eadt +Sensor\ UID=UID c\u1ea3m bi\u1ebfn +Set\ if\ WebSocket\ protocol\ should\ be\ used\ to\ get\ streaming\ data\ from\ SOS=\u0110\u1eb7t xem c\u00f3 n\u00ean s\u1eed d\u1ee5ng giao th\u1ee9c WebSocket \u0111\u1ec3 nh\u1eadn d\u1eef li\u1ec7u ph\u00e1t tr\u1ef1c tuy\u1ebfn t\u1eeb SOS hay kh\u00f4ng +Set\ if\ offering\ is\ enabled,\ unset\ if\ disabled=\u0110\u1eb7t n\u1ebfu \u01b0u \u0111\u00e3i \u0111\u01b0\u1ee3c b\u1eadt, b\u1ecf \u0111\u1eb7t n\u1ebfu b\u1ecb t\u1eaft +Set\ if\ websockets\ protocol\ should\ be\ used\ to\ send\ commands\ to\ SPS=\u0110\u1eb7t xem c\u00f3 n\u00ean s\u1eed d\u1ee5ng giao th\u1ee9c websockets \u0111\u1ec3 g\u1eedi l\u1ec7nh t\u1edbi SPS hay kh\u00f4ng +Set\ to\ compact\ the\ database\ file\ when\ the\ database\ module\ is\ stopped\ or\ restarted=\u0110\u1eb7t \u0111\u1ec3 n\u00e9n t\u1ec7p c\u01a1 s\u1edf d\u1eef li\u1ec7u khi m\u00f4-\u0111un c\u01a1 s\u1edf d\u1eef li\u1ec7u b\u1ecb d\u1eebng ho\u1eb7c kh\u1edfi \u0111\u1ed9ng l\u1ea1i +Set\ to\ compress\ underlying\ file\ storage=\u0110\u1eb7t \u0111\u1ec3 n\u00e9n l\u01b0u tr\u1eef t\u1ec7p c\u01a1 b\u1ea3n +Set\ to\ display\ MVStore\ debug\ info\ when\ database\ is\ closed\ (only\ if\ DEBUG\ log\ is\ also\ enabled)=\u0110\u1eb7t \u0111\u1ec3 hi\u1ec3n th\u1ecb th\u00f4ng tin g\u1ee1 l\u1ed7i MVStore khi c\u01a1 s\u1edf d\u1eef li\u1ec7u b\u1ecb \u0111\u00f3ng (ch\u1ec9 khi nh\u1eadt k\u00fd DEBUG c\u0169ng \u0111\u01b0\u1ee3c b\u1eadt) +Set\ to\ enable\ spatial\ indexing\ of\ individual\ observations\ sampling\ locations\ (when\ provided)=\u0110\u1eb7t \u0111\u1ec3 b\u1eadt l\u1eadp ch\u1ec9 m\u1ee5c kh\u00f4ng gian c\u1ee7a c\u00e1c v\u1ecb tr\u00ed l\u1ea5y m\u1eabu quan s\u00e1t ri\u00eang l\u1ebb (khi \u0111\u01b0\u1ee3c cung c\u1ea5p) +Set\ to\ open\ the\ database\ as\ read-only=\u0110\u1eb7t \u0111\u1ec3 m\u1edf c\u01a1 s\u1edf d\u1eef li\u1ec7u \u1edf d\u1ea1ng ch\u1ec9 \u0111\u1ecdc +Set\ to\ true\ to\ enable\ transactional\ operation\ support=\u0110\u1eb7t th\u00e0nh true \u0111\u1ec3 b\u1eadt h\u1ed7 tr\u1ee3 v\u1eadn h\u00e0nh giao d\u1ecbch +Size\ of\ the\ auto-commit\ write\ buffer,\ in\ KB=K\u00edch th\u01b0\u1edbc c\u1ee7a b\u1ed9 \u0111\u1ec7m ghi t\u1ef1 \u0111\u1ed9ng cam k\u1ebft, t\u00ednh b\u1eb1ng KB +TCP\ port\ where\ server\ will\ listen\ for\ secure\ HTTP\ (HTTPS)\ connections\ (use\ 0\ to\ disable\ HTTPS).=C\u1ed5ng TCP n\u01a1i m\u00e1y ch\u1ee7 s\u1ebd l\u1eafng nghe c\u00e1c k\u1ebft n\u1ed1i HTTP (HTTPS) an to\u00e0n (s\u1eed d\u1ee5ng 0 \u0111\u1ec3 t\u1eaft HTTPS). +TCP\ port\ where\ server\ will\ listen\ for\ unsecure\ HTTP\ connections\ (use\ 0\ to\ disable\ HTTP).=C\u1ed5ng TCP n\u01a1i m\u00e1y ch\u1ee7 s\u1ebd l\u1eafng nghe c\u00e1c k\u1ebft n\u1ed1i HTTP kh\u00f4ng an to\u00e0n (s\u1eed d\u1ee5ng 0 \u0111\u1ec3 t\u1eaft HTTP). +Time-out\ after\ which\ real-time\ requests\ are\ disabled\ if\ no\ more\ measurements\ are\ received\ (in\ seconds).\ Real-time\ is\ reactivated\ as\ soon\ as\ new\ records\ start\ being\ received\ again=H\u1ebft th\u1eddi gian ch\u1edd, sau \u0111\u00f3 c\u00e1c y\u00eau c\u1ea7u th\u1eddi gian th\u1ef1c s\u1ebd b\u1ecb t\u1eaft n\u1ebfu kh\u00f4ng nh\u1eadn \u0111\u01b0\u1ee3c ph\u00e9p \u0111o n\u00e0o n\u1eefa (t\u00ednh b\u1eb1ng gi\u00e2y). Th\u1eddi gian th\u1ef1c \u0111\u01b0\u1ee3c k\u00edch ho\u1ea1t l\u1ea1i ngay khi h\u1ed3 s\u01a1 m\u1edbi b\u1eaft \u0111\u1ea7u \u0111\u01b0\u1ee3c nh\u1eadn l\u1ea1i +Time-out\ period\ after\ which\ a\ template\ ID\ reserved\ using\ InsertResultTemplate\ will\ expire\ if\ not\ used\ in\ InsertResult\ requests\ (in\ seconds)=Kho\u1ea3ng th\u1eddi gian ch\u1edd m\u00e0 sau \u0111\u00f3 ID m\u1eabu \u0111\u01b0\u1ee3c \u0111\u1eb7t tr\u01b0\u1edbc b\u1eb1ng InsertResultTemplate s\u1ebd h\u1ebft h\u1ea1n n\u1ebfu kh\u00f4ng \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng trong c\u00e1c y\u00eau c\u1ea7u InsertResult (t\u00ednh b\u1eb1ng gi\u00e2y) +Timeout\ after\ which\ data\ is\ released\ to\ the\ caller\ if\ at\ least\ one\ byte\ was\ received\ (in\ ms)=H\u1ebft th\u1eddi gian ch\u1edd sau \u0111\u00f3 d\u1eef li\u1ec7u s\u1ebd \u0111\u01b0\u1ee3c gi\u1ea3i ph\u00f3ng cho ng\u01b0\u1eddi g\u1ecdi n\u1ebfu nh\u1eadn \u0111\u01b0\u1ee3c \u00edt nh\u1ea5t m\u1ed9t byte (t\u00ednh b\u1eb1ng ms) +URI\ Prefix\ Map=B\u1ea3n \u0111\u1ed3 ti\u1ec1n t\u1ed1 URI +Unique\ ID\ (full\ URN\ or\ only\ suffix)\ to\ use\ for\ the\ sensor\ system\ or\ 'auto'\ to\ use\ the\ UUID\ randomly\ generated\ the\ first\ time\ the\ module\ is\ initialized=ID duy nh\u1ea5t (URN \u0111\u1ea7y \u0111\u1ee7 ho\u1eb7c ch\u1ec9 h\u1eadu t\u1ed1) \u0111\u1ec3 s\u1eed d\u1ee5ng cho h\u1ec7 th\u1ed1ng c\u1ea3m bi\u1ebfn ho\u1eb7c ''t\u1ef1 \u0111\u1ed9ng'' \u0111\u1ec3 s\u1eed d\u1ee5ng UUID \u0111\u01b0\u1ee3c t\u1ea1o ng\u1eabu nhi\u00ean trong l\u1ea7n kh\u1edfi t\u1ea1o m\u00f4-\u0111un \u0111\u1ea7u ti\u00ean +Unique\ ID\ of\ a\ system\ that\ this\ configuration\ applies\ to.\nCan\ include\ a\ trailing\ wildcard\ '*'\ to\ match\ several\ systems\ at\ once.=ID duy nh\u1ea5t c\u1ee7a h\u1ec7 th\u1ed1ng \u00e1p d\u1ee5ng c\u1ea5u h\u00ecnh n\u00e0y.\nC\u00f3 th\u1ec3 bao g\u1ed3m k\u00fd t\u1ef1 \u0111\u1ea1i di\u1ec7n \u1edf cu\u1ed1i ''*'' \u0111\u1ec3 kh\u1edbp v\u1edbi nhi\u1ec1u h\u1ec7 th\u1ed1ng c\u00f9ng m\u1ed9t l\u00fac. +Unique\ ID\ of\ sensor\ to\ connect\ to\ on\ SOS\ and\ SPS\ servers=ID c\u1ea3m bi\u1ebfn duy nh\u1ea5t \u0111\u1ec3 k\u1ebft n\u1ed1i tr\u00ean m\u00e1y ch\u1ee7 SOS v\u00e0 SPS +Unique\ ID\ of\ system\ that\ this\ configuration\ applies\ to.\nCan\ include\ a\ trailing\ wildcard\ '*'\ to\ match\ several\ systems\ at\ once.=ID duy nh\u1ea5t c\u1ee7a h\u1ec7 th\u1ed1ng m\u00e0 c\u1ea5u h\u00ecnh n\u00e0y \u00e1p d\u1ee5ng.\nC\u00f3 th\u1ec3 bao g\u1ed3m k\u00fd t\u1ef1 \u0111\u1ea1i di\u1ec7n \u1edf cu\u1ed1i ''*'' \u0111\u1ec3 kh\u1edbp v\u1edbi nhi\u1ec1u h\u1ec7 th\u1ed1ng c\u00f9ng m\u1ed9t l\u00fac. +Use\ WebSockets\ for\ SOS=S\u1eed d\u1ee5ng WebSockets cho SOS +Use\ WebSockets\ for\ SPS=S\u1eed d\u1ee5ng WebSockets cho SPS + +Node\ ID=ID n\u00fat +Stats\ Frequency\ (min)=T\u1ea7n su\u1ea5t th\u1ed1ng k\u00ea (ph\u00fat) +Database\ URL=URL c\u01a1 s\u1edf d\u1eef li\u1ec7u +Database\ Name=T\u00ean c\u01a1 s\u1edf d\u1eef li\u1ec7u +ID\ Generator=Tr\u00ecnh t\u1ea1o ID +Database\ Number=S\u1ed1 c\u01a1 s\u1edf d\u1eef li\u1ec7u +Remote\ Host=M\u00e1y ch\u1ee7 t\u1eeb xa +Remote\ Port=C\u1ed5ng t\u1eeb xa +Lane\ Width\ (m)=Chi\u1ec1u r\u1ed9ng l\u00e0n \u0111\u01b0\u1eddng (m) +Enable\ EML\ Analysis=K\u00edch ho\u1ea1t ph\u00e2n t\u00edch EML +Is\ Collimated=\u0111\u01b0\u1ee3c chu\u1ea9n tr\u1ef1c +Stream\ Path=\u0110\u01b0\u1eddng d\u1eabn lu\u1ed3ng +Lane\ Options\ Config=C\u1ea5u h\u00ecnh t\u00f9y ch\u1ecdn l\u00e0n \u0111\u01b0\u1eddng diff --git a/sensorhub-webui-core/src/main/resources/org/sensorhub/ui/i18n/messages_yue.properties b/sensorhub-webui-core/src/main/resources/org/sensorhub/ui/i18n/messages_yue.properties new file mode 100644 index 0000000000..1f6aaa54bd --- /dev/null +++ b/sensorhub-webui-core/src/main/resources/org/sensorhub/ui/i18n/messages_yue.properties @@ -0,0 +1,543 @@ +app.title=\u5f00\u653e\u4f20\u611f\u5668\u4e2d\u5fc3 +tab.sensors=\u50b3\u611f\u5668 +tab.databases=\u6578\u64da\u5eab +tab.processing=\u8655\u7406 +tab.services=\u670d\u52d9 +tab.clients=\u5ba2\u6236\u7aef +tab.network=\u7db2\u7d61 +tab.security=\u5b89\u5168 +action.shutdown=\u95dc\u6a5f +action.logout=\u767b\u51fa +action.save=\u5132\u5b58 +action.addModule=\u65b0\u589e\u6a21\u7d44 +action.addSubmodule=\u65b0\u589e\u5b50\u6a21\u7d44 +action.removeModule=\u79fb\u9664\u6a21\u7d44 +action.removeSubmodule=\u79fb\u9664\u5b50\u6a21\u7d44 +action.start=\u555f\u52d5 +action.stop=\u505c\u6b62 +action.restart=\u91cd\u65b0\u555f\u52d5 +action.forceInit=\u5f37\u5236\u521d\u59cb\u5316 +action.selectAll=\u9078\u64c7\u6240\u6709\u6a21\u7d44 +action.deselectAll=\u53d6\u6d88\u5168\u9078 +dialog.shutdown.title=\u5df2\u555f\u52d5\u95dc\u6a5f... +dialog.shutdown.message=\u4ecb\u9762\u5c07\u505c\u6b62\u56de\u61c9 +dialog.shutdown.confirm=\u78ba\u5b9a\u8981\u95dc\u9589\u50b3\u611f\u5668\u4e2d\u5fc3\u55ce\uff1f +dialog.logout.confirm=\u78ba\u5b9a\u8981\u767b\u51fa\u55ce\uff1f +dialog.save.confirm=\u78ba\u5b9a\u8981\u5132\u5b58\u914d\u7f6e\uff08\u4e26\u8986\u84cb\u4e4b\u524d\u7684\u914d\u7f6e\uff09\u55ce\uff1f +msg.configSaved=SensorHub \u914d\u7f6e\u5df2\u5132\u5b58 +msg.configSaveError=\u7121\u6cd5\u5132\u5b58\u914d\u7f6e +dialog.remove.confirm=\u78ba\u5b9a\u8981\u79fb\u9664 {0} \u55ce\uff1f
\u6240\u6709\u8a2d\u5b9a\u5c07\u6703\u907a\u5931\u3002 +msg.removeError=\u7121\u6cd5\u79fb\u9664 {0} +msg.startError=\u7121\u6cd5\u555f\u52d5 {0} +msg.stopError=\u7121\u6cd5\u505c\u6b62 {0} +msg.restartError=\u7121\u6cd5\u91cd\u65b0\u555f\u52d5 {0} +msg.reinitError=\u7121\u6cd5\u91cd\u65b0\u521d\u59cb\u5316 {0} +msg.loadError=\u7121\u6cd5\u52a0\u8f09\u6a21\u7d44 +msg.addSubmoduleError=\u7121\u6cd5\u65b0\u589e\u5b50\u6a21\u7d44 +about.title=\u95dc\u65bc OpenSensorHub +about.desc=\u7528\u65bc\u69cb\u5efa\u667a\u80fd\u50b3\u611f\u5668\u7db2\u7d61\u548c\u7269\u806f\u7db2 (IoT) \u7684\u8edf\u4ef6\u5e73\u53f0 +about.license=\u6839\u64da Mozilla Public License v2.0 \u6388\u6b0a +about.version=\u7248\u672c\uff1a +about.build=\u69cb\u5efa\u7de8\u865f\uff1a +about.deployment=\u90e8\u7f72\u540d\u7a31\uff1a +tooltip.shutdown=\u95dc\u9589 SensorHub +tooltip.logout=\u5f9e OSH \u7bc0\u9ede\u767b\u51fa +tooltip.save=\u5132\u5b58 SensorHub \u914d\u7f6e +dialog.start.confirm=\u78ba\u5b9a\u8981\u555f\u52d5 {0} \u55ce\uff1f +dialog.stop.confirm=\u78ba\u5b9a\u8981\u505c\u6b62 {0} \u55ce\uff1f +dialog.restart.confirm=\u78ba\u5b9a\u8981\u91cd\u65b0\u555f\u52d5 {0} \u55ce\uff1f +dialog.reinit.confirm=\u78ba\u5b9a\u8981\u5f37\u5236\u91cd\u65b0\u521d\u59cb\u5316 {0} \u55ce\uff1f +backgroundUpdate=\u80cc\u666f\u66f4\u65b0 +sigmaThreshold=\u897f\u683c\u746a\u95be\u503c +nuclideIdentification=\u6838\u7d20\u8b58\u5225 +tamperAlarm=\u9632\u7be1\u6539\u5831\u8b66 +occupancySensor=\u4f54\u7528\u50b3\u611f\u5668 +stateOfHealth=\u5065\u5eb7\u72c0\u6cc1 +soh=\u809d\u786c\u5316 +1ScanThisQrCodeWithYourAuthenticatorApp=1. \u4f7f\u7528\u60a8\u7684\u8eab\u4efd\u9a57\u8b49\u5668\u61c9\u7528\u7a0b\u5f0f\u6383\u63cf\u6b64\u4e8c\u7dad\u78bc\uff1a +2EnterThe6digitCodeGeneratedByTheApp=2. \u8f38\u5165\u61c9\u7528\u7522\u751f\u76846\u4f4d\u5143\u4ee3\u78bc\uff1a +orEnterThisSecretKeyManually=\u6216\u624b\u52d5\u8f38\u5165\u6b64\u5bc6\u9470\uff1a +loadingBundlesInformation=\u6b63\u5728\u8f09\u5165\u6346\u7d81\u5305\u8cc7\u8a0a... +loadingPackageInformation=\u6b63\u5728\u8f09\u5165\u5957\u4ef6\u8cc7\u8a0a... +arrayComponentNotSupported=\u4e0d\u652f\u63f4\u6578\u7d44\u7d44\u4ef6 +twofactorAuthentication=\u96d9\u91cd\u8eab\u4efd\u9a57\u8b49 +installMorePackages=\u5b89\u88dd\u66f4\u591a\u8edf\u9ad4\u5305... +errorGeneratingQrCode=\u7522\u751f\u4e8c\u7dad\u78bc\u6642\u51fa\u932f +installMoreModules=\u5b89\u88dd\u66f4\u591a\u6a21\u7d44... +detailedInstructions=\u8a73\u7d30\u8aaa\u660e +availableNetworks=\u53ef\u7528\u7db2\u8def +processParameters=\u88fd\u7a0b\u53c3\u6578 +verifyAndEnable=\u9a57\u8b49\u4e26\u555f\u7528 +dataSourceInfo=\u8cc7\u6599\u4f86\u6e90\u8cc7\u8a0a +detectedDevices=\u5075\u6e2c\u5230\u7684\u8a2d\u5099 +installSelected=\u5b89\u88dd\u9078\u5b9a\u7684 +databaseContent=\u8cc7\u6599\u5eab\u5167\u5bb9 +itemsPerPage=\u6bcf\u9801\u9805\u76ee\uff1a +commandInputs=\u547d\u4ee4\u8f38\u5165 +processInputs=\u904e\u7a0b\u8f38\u5165 +providerClass=\u63d0\u4f9b\u8005\u985e\u5225 +processName=\u6d41\u7a0b\u540d\u7a31\uff1a +configuration=\u914d\u7f6e +applyChanges=\u61c9\u7528\u7a0b\u5f0f\u8b8a\u66f4 +sendCommand=\u767c\u9001\u547d\u4ee4 +useAddress=\u4f7f\u7528\u5730\u5740 +selectNone=\u9078\u64c7\u7121 +timeRange=\u6642\u9593\u7bc4\u570d\uff1a +permissions=\u6b0a\u9650 +startScan=\u958b\u59cb\u6383\u63cf +noReadme=\u6c92\u6709\u81ea\u8ff0\u6587\u4ef6 +stopScan=\u505c\u6b62\u6383\u63cf +reset2fa=\u91cd\u7f6e2FA +previous=\u4ee5\u524d\u7684 +useName=\u4f7f\u7528\u540d\u7a31 +outputs=\u8f38\u51fa +refresh=\u91cd\u65b0\u6574\u7406 +modify=\u8abf\u6574 +cancel=\u53d6\u6d88 +logout=\u9000\u51fa +remove=\u6d88\u9664 +verify=\u6838\u5be6 +first=\u7b2c\u4e00\u7684 +login=\u767b\u5165 +last=\u6700\u5f8c\u7684 +view=\u770b\u6cd5 +next=\u4e0b\u4e00\u500b +stop=\u505c\u6b62 +add=\u6dfb\u52a0 +ui.empty=< +ok=\u597d\u7684 +1ScanThisQrCodeWithYourAuthenticatorApp1=1. \u4f7f\u7528\u60a8\u7684\u8eab\u4efd\u9a57\u8b49\u5668\u61c9\u7528\u7a0b\u5f0f\u6383\u63cf\u6b64\u4e8c\u7dad\u78bc\uff1a +2EnterThe6digitCodeGeneratedByTheApp1=2. \u8f38\u5165\u61c9\u7528\u7522\u751f\u76846\u4f4d\u5143\u4ee3\u78bc\uff1a +orEnterThisSecretKeyManually1=\u6216\u624b\u52d5\u8f38\u5165\u6b64\u5bc6\u9470\uff1a +loadingPackageInformation1=\u6b63\u5728\u8f09\u5165\u5957\u4ef6\u8cc7\u8a0a... +loadingBundlesInformation1=\u6b63\u5728\u8f09\u5165\u6346\u7d81\u5305\u8cc7\u8a0a... +arrayComponentNotSupported1=\u4e0d\u652f\u63f4\u6578\u7d44\u7d44\u4ef6 +twofactorAuthentication1=\u96d9\u91cd\u8eab\u4efd\u9a57\u8b49 +errorGeneratingQrCode1=\u7522\u751f\u4e8c\u7dad\u78bc\u6642\u51fa\u932f +installMorePackages1=\u5b89\u88dd\u66f4\u591a\u8edf\u9ad4\u5305... +installMoreModules1=\u5b89\u88dd\u66f4\u591a\u6a21\u7d44... +detailedInstructions1=\u8a73\u7d30\u8aaa\u660e +processParameters1=\u88fd\u7a0b\u53c3\u6578 +availableNetworks1=\u53ef\u7528\u7db2\u8def +verifyAndEnable1=\u9a57\u8b49\u4e26\u555f\u7528 +databaseContent1=\u8cc7\u6599\u5eab\u5167\u5bb9 +installSelected1=\u5b89\u88dd\u9078\u5b9a\u7684 +dataSourceInfo1=\u8cc7\u6599\u4f86\u6e90\u8cc7\u8a0a +detectedDevices1=\u5075\u6e2c\u5230\u7684\u8a2d\u5099 +itemsPerPage1=\u6bcf\u9801\u9805\u76ee\uff1a +processInputs1=\u904e\u7a0b\u8f38\u5165 +commandInputs1=\u547d\u4ee4\u8f38\u5165 +providerClass1=\u63d0\u4f9b\u8005\u985e\u5225 +configuration1=\u914d\u7f6e +processName1=\u6d41\u7a0b\u540d\u7a31\uff1a +applyChanges1=\u61c9\u7528\u7a0b\u5f0f\u8b8a\u66f4 +sendCommand1=\u767c\u9001\u547d\u4ee4 +timeRange1=\u6642\u9593\u7bc4\u570d\uff1a +useAddress1=\u4f7f\u7528\u5730\u5740 +permissions1=\u6b0a\u9650 +selectNone1=\u9078\u64c7\u7121 +startScan1=\u958b\u59cb\u6383\u63cf +noReadme1=\u6c92\u6709\u81ea\u8ff0\u6587\u4ef6 +reset2fa1=\u91cd\u7f6e2FA +stopScan1=\u505c\u6b62\u6383\u63cf +useName1=\u4f7f\u7528\u540d\u7a31 +previous1=\u4ee5\u524d\u7684 +refresh1=\u91cd\u65b0\u6574\u7406 +outputs1=\u8f38\u51fa +cancel1=\u53d6\u6d88 +logout1=\u9000\u51fa +modify1=\u8abf\u6574 +remove1=\u6d88\u9664 +verify1=\u6838\u5be6 +first1=\u7b2c\u4e00\u7684 +login1=\u767b\u5165 +view1=\u770b\u6cd5 +stop1=\u505c\u6b62 +next1=\u4e0b\u4e00\u500b +last1=\u6700\u5f8c\u7684 +add1=\u6dfb\u52a0 +last2=>> +first2=<< +ok1=\u597d\u7684 +next2=> +previous2=< + +pleaseEnterAUserIDFirst1=\u8acb\u5148\u8f38\u5165\u7528\u6236 ID +reset2FA1=\u91cd\u8a2d 2FA +enable2FA1=\u555f\u7528 2FA +twoFAEnabledSuccessfully1=2FA \u5df2\u7d93\u6210\u529f\u555f\u7528 +invalidCode1=\u7121\u6548\u5605\u4ee3\u78bc +allowedAndDeniedPermissionsForUsersWithThisRole1=\u5141\u8a31\u540c\u57cb\u62d2\u7d55\u64c1\u6709\u5462\u500b\u89d2\u8272\u5605\u4f7f\u7528\u8005\u5605\u6b0a\u9650 +manualEntry1=\u624b\u52d5\u8f38\u5165 +toggleAutoRefreshDataOncePerSecond1=\u6bcf\u79d2\u5207\u63db\u4e00\u6b21\u81ea\u52d5\u5237\u65b0\u8cc7\u6599 +lookupSystem1=\u67e5\u8a62\u7cfb\u7d71 +lookupModule1=\u67e5\u627e\u6a21\u7d44 +lookupAddress1=\u67e5\u627e\u5730\u5740 +showPassword1=\u986f\u793a\u5bc6\u78bc +showHistogram1=\u986f\u793a\u76f4\u65b9\u5716 +hideHistogram1=\u96b1\u85cf\u76f4\u65b9\u5716 +reloadDataFromDatabase1=\u55ba\u8cc7\u6599\u5eab\u91cd\u65b0\u8f09\u5165\u8cc7\u6599 +fois1=FOI +username1=\u7528\u6236\u540d +password1=\u5bc6\u78bc +loginFailed1=\u767b\u5165\u5931\u6557 +invalidUsernameOrPassword1=\u7121\u6548\u5605\u7528\u6236\u540d\u6216\u8005\u5bc6\u78bc +verificationCode1=\u9a57\u8b49\u78bc +verificationFailed1=\u9a57\u8b49\u5931\u6557 +datasource1=\u6578\u64da\u4f86\u6e90 +process1=\u8655\u7406 +logoutFromOshNode1=\u55ba OSH \u7bc0\u9ede\u767b\u51fa +setParameter1=\u8a2d\u5b9a\u53c3\u6578 +setupTwoFactorAuthentication1=\u8a2d\u5b9a\u5169\u56e0\u7d20\u8a8d\u8b49 + +action.new_item=\u65b0{0} +Lane\ System=\u8eca\u9053\u7cfb\u7d71 +Module\ Class=\u6a21\u7d44\u985e +Module\ Name=\u6a21\u7d44\u540d\u7a31 +Module\ ID=\u6a21\u7d44\u7de8\u865f +Description=\u63cf\u8ff0 +SensorML\ URL=\u611f\u6e2c\u5668ML URL +UniqueID=\u552f\u4e00ID +Last\ Updated=\u6700\u5f8c\u66f4\u65b0 +Auto\ Start=\u81ea\u52d5\u555f\u52d5 +Delete\ Data\ on\ Lane\ Removal=\u522a\u9664\u8eca\u9053\u79fb\u9664\u6578\u64da +Latitude=\u7def\u5ea6 +Longitude=\u7d93\u5ea6 +Altitude=\u9ad8\u5ea6 +Initial\ RPM\ Config=\u521d\u59cb\u8f49\u901f\u914d\u7f6e +Initial\ Camera\ Config=\u521d\u59cb\u76f8\u6a5f\u914d\u7f6e +Lane\ Options\ Config=\u8eca\u9053\u9078\u9805\u914d\u7f6e +tab.general=\u4e00\u822c\u7684 +tab.readme=\u81ea\u8ff0\u6587\u4ef6 +Fixed\ Location=\u56fa\u5b9a\u5730\u9ede +Fixed\ Orientation=\u56fa\u5b9a\u65b9\u5411 +# Auto-extracted DisplayInfo labels and descriptions +URL\ of\ SensorML\ file\ providing\ the\ base\ description\ of\ the\ sensor=\u63d0\u4f9b\u4f20\u611f\u5668\u57fa\u672c\u63cf\u8ff0\u7684 SensorML \u6587\u4ef6\u7684 URL +Time\ at\ which\ the\ SensorML\ description\ was\ last\ updated=SensorML \u63cf\u8ff0\u4e0a\u6b21\u66f4\u65b0\u7684\u65f6\u95f4 +Geodetic\ latitude,\ in\ degrees=\u5927\u5730\u7eac\u5ea6\uff0c\u4ee5\u5ea6\u4e3a\u5355\u4f4d +Longitude,\ in\ degrees=\u7ecf\u5ea6\uff0c\u4ee5\u5ea6\u4e3a\u5355\u4f4d +Height\ above\ ellipsoid,\ in\ meters=\u692d\u7403\u4e0a\u65b9\u7684\u9ad8\u5ea6\uff0c\u4ee5\u7c73\u4e3a\u5355\u4f4d +X\ coordinate,\ in\ meters=X \u5750\u6807\uff0c\u5355\u4f4d\uff1a\u7c73 +Y\ coordinate,\ in\ meters=Y \u5750\u6807\uff0c\u4ee5\u7c73\u4e3a\u5355\u4f4d +Z\ coordinate,\ in\ meters=Z \u5750\u6807\uff0c\u4ee5\u7c73\u4e3a\u5355\u4f4d +Pitch\ angle\ about\ Y\ axis,\ in\ degrees=\u7ed5 Y \u8f74\u7684\u4fef\u4ef0\u89d2\uff0c\u4ee5\u5ea6\u4e3a\u5355\u4f4d +Roll\ angle\ about\ X\ axis,\ in\ degrees=\u7ed5 X \u8f74\u7684\u6eda\u52a8\u89d2\uff0c\u4ee5\u5ea6\u4e3a\u5355\u4f4d +Location\ in\ EPSG\:4979\ coordinate\ reference\ frame=EPSG \u4e2d\u7684\u4f4d\u7f6e\uff1a4979 \u5750\u6807\u53c2\u8003\u7cfb +Database\ Number=\u6570\u636e\u5e93\u7f16\u53f7 +Numerical\ identifier\ of\ the\ database.\ Each\ database\ that\ should\ be\ exposed\ via\ the\ federated\ database\ API\ must\ have\ a\ unique\ number\ on\ the\ sensor\ hub.\ If\ visibility\ through\ the\ federated\ database\ is\ not\ desired,\ it\ can\ be\ omitted.=\u6570\u636e\u5e93\u7684\u6570\u5b57\u6807\u8bc6\u7b26\u3002\u5e94\u901a\u8fc7\u8054\u5408\u6570\u636e\u5e93 API \u516c\u5f00\u7684\u6bcf\u4e2a\u6570\u636e\u5e93\u5fc5\u987b\u5728\u4f20\u611f\u5668\u96c6\u7ebf\u5668\u4e0a\u5177\u6709\u552f\u4e00\u7684\u7f16\u53f7\u3002\u5982\u679c\u4e0d\u9700\u8981\u901a\u8fc7\u8054\u5408\u6570\u636e\u5e93\u53ef\u89c1\uff0c\u5219\u53ef\u4ee5\u7701\u7565\u3002 +Enables\ fine-grained\ permission-based\ access\ control\ for\ this\ module=\u5bf9\u6b64\u6a21\u5757\u542f\u7528\u57fa\u4e8e\u6743\u9650\u7684\u7ec6\u7c92\u5ea6\u8bbf\u95ee\u63a7\u5236 +Require\ Authentication=\u9700\u8981\u8eab\u4efd\u9a8c\u8bc1 +Set\ to\ require\ remote\ users\ to\ be\ authentified\ before\ they\ can\ use\ this\ service=\u8bbe\u7f6e\u4e3a\u8981\u6c42\u8fdc\u7a0b\u7528\u6237\u5728\u4f7f\u7528\u6b64\u670d\u52a1\u4e4b\u524d\u8fdb\u884c\u8eab\u4efd\u9a8c\u8bc1 +Endpoint=\u7aef\u70b9 +Unique\ local\ ID\ of\ the\ module=\u6a21\u5757\u672c\u5730\u552f\u4e00ID +User\ description\ for\ the\ module=\u6a21\u5757\u7684\u7528\u6237\u63cf\u8ff0 +Set\ to\ automatically\ start\ the\ module\ when\ it\ is\ loaded=\u8bbe\u7f6e\u6a21\u5757\u52a0\u8f7d\u65f6\u81ea\u52a8\u542f\u52a8 +Module\ implementation\ class=\u6a21\u5757\u5b9e\u73b0\u7c7b +User\ chosen\ name\ for\ the\ module=\u7528\u6237\u4e3a\u6a21\u5757\u9009\u62e9\u7684\u540d\u79f0 +Name\ of\ topic/queue\ to\ use=\u8981\u4f7f\u7528\u7684\u4e3b\u9898/\u961f\u5217\u7684\u540d\u79f0 +Enable/disable\ writing\ to\ queue=\u542f\u7528/\u7981\u7528\u5199\u5165\u961f\u5217 +Enable/disable\ reading\ from\ queue=\u542f\u7528/\u7981\u7528\u4ece\u961f\u5217\u8bfb\u53d6 +Protocol\ Options=\u534f\u8bae\u9009\u9879 +Common\ Configuration=\u901a\u7528\u914d\u7f6e +Common\ configuration\ for\ sensors\ in\ the\ array=\u9635\u5217\u4e2d\u4f20\u611f\u5668\u7684\u901a\u7528\u914d\u7f6e +Sensors\ Configuration=\u4f20\u611f\u5668\u914d\u7f6e +Subsystem\ Config=\u5b50\u7cfb\u7edf\u914d\u7f6e +Configuration\ of\ the\ subsystem=\u5b50\u7cfb\u7edf\u7684\u914d\u7f6e +Relative\ Location=\u76f8\u5bf9\u4f4d\u7f6e +Location\ of\ this\ subsystem\ relative\ to\ the\ main\ system\ or\ platform\ reference\ frame=\u8be5\u5b50\u7cfb\u7edf\u76f8\u5bf9\u4e8e\u4e3b\u7cfb\u7edf\u6216\u5e73\u53f0\u53c2\u8003\u7cfb\u7684\u4f4d\u7f6e +Relative\ Orientation=\u76f8\u5bf9\u65b9\u5411 +Orientation\ of\ this\ subsystem\ relative\ to\ the\ main\ system\ or\ platform\ reference\ frame=\u8be5\u5b50\u7cfb\u7edf\u76f8\u5bf9\u4e8e\u4e3b\u7cfb\u7edf\u6216\u5e73\u53f0\u53c2\u8003\u7cfb\u7684\u65b9\u5411 +Fixed\ system\ orientation\ in\ the\ local\ NED\ reference\ frame=\u4fee\u590d\u4e86\u672c\u5730 NED \u53c2\u8003\u7cfb\u4e2d\u7684\u7cfb\u7edf\u65b9\u5411 +Subsystems=\u5b50\u7cfb\u7edf +Configuration\ of\ components\ of\ this\ sensor\ system=\u8be5\u4f20\u611f\u5668\u7cfb\u7edf\u7684\u7ec4\u4ef6\u914d\u7f6e +Database\ Config=\u6570\u636e\u5e93\u914d\u7f6e +Configuration\ of\ underlying\ database=\u5e95\u5c42\u6570\u636e\u5e93\u914d\u7f6e +System\ UIDs=\u7cfb\u7edf UID +Unique\ IDs\ of\ system\ drivers\ handled\ by\ this\ database=\u8be5\u6570\u636e\u5e93\u5904\u7406\u7684\u7cfb\u7edf\u9a71\u52a8\u7a0b\u5e8f\u7684\u552f\u4e00 ID +Automatic\ Purge\ Policy=\u81ea\u52a8\u6e05\u9664\u7b56\u7565 +Policy\ for\ automatically\ purging\ historical\ data=\u81ea\u52a8\u6e05\u9664\u5386\u53f2\u6570\u636e\u7684\u7b56\u7565 +Uncheck\ to\ disable\ auto-purge\ temporarily=\u53d6\u6d88\u9009\u4e2d\u4ee5\u6682\u65f6\u7981\u7528\u81ea\u52a8\u6e05\u9664 +Purge\ Execution\ Period=\u6e05\u9664\u6267\u884c\u671f +Unique\ IDs\ of\ system\ drivers\ to\ purge=\u8981\u6e05\u9664\u7684\u7cfb\u7edf\u9a71\u52a8\u7a0b\u5e8f\u7684\u552f\u4e00 ID +Max\ Record\ Age=\u6700\u5927\u8bb0\u5f55\u5e74\u9f84 +SensorML\ File=SensorML \u6587\u4ef6 +Path\ of\ SensorML\ description\ of\ the\ process=SensorML\u6d41\u7a0b\u63cf\u8ff0\u7684\u8def\u5f84 +List\ of\ users\ allowed\ access\ to\ this\ system=\u5141\u8bb8\u8bbf\u95ee\u8be5\u7cfb\u7edf\u7684\u7528\u6237\u5217\u8868 +List\ of\ security\ roles=\u5b89\u5168\u89d2\u8272\u5217\u8868 +User\ ID=\u7528\u6237\u8eab\u4efd +Role\ ID=\u89d2\u8272ID +Source\ Database\ ID=\u6e90\u6570\u636e\u5e93ID +ID\ of\ database\ module\ to\ read\ data\ from\ (Federated\ database\ will\ be\ used\ if\ not\ set=\u4ece\u4e2d\u8bfb\u53d6\u6570\u636e\u7684\u6570\u636e\u5e93\u6a21\u5757ID\uff08\u5982\u679c\u4e0d\u8bbe\u7f6e\u5c06\u4f7f\u7528\u8054\u5408\u6570\u636e\u5e93 +HTTP\ Port=HTTP \u7aef\u53e3 +HTTPS\ Port=HTTPS \u7aef\u53e3 +Root\ URL\ where\ static\ web\ content\ will\ be\ served.=\u5c06\u5728\u5176\u4e2d\u63d0\u4f9b\u9759\u6001 Web \u5185\u5bb9\u7684\u6839 URL\u3002 +Directory\ where\ static\ web\ content\ is\ located.=\u9759\u6001\u7f51\u9875\u5185\u5bb9\u6240\u5728\u7684\u76ee\u5f55\u3002 +Root\ URL\ where\ the\ server\ will\ accept\ requests.\ This\ will\ be\ the\ prefix\ to\ all\ servlet\ URLs.=\u670d\u52a1\u5668\u5c06\u63a5\u53d7\u8bf7\u6c42\u7684\u6839 URL\u3002\u8fd9\u5c06\u662f\u6240\u6709 servlet URL \u7684\u524d\u7f00\u3002 +Proxy\ Base\ URL=\u4ee3\u7406\u57fa\u672c URL +Public\ URL\ as\ viewed\ from\ the\ outside\ when\ requests\ transit\ through\ a\ proxy\ server.=\u5f53\u8bf7\u6c42\u901a\u8fc7\u4ee3\u7406\u670d\u52a1\u5668\u4f20\u8f93\u65f6\u4ece\u5916\u90e8\u67e5\u770b\u7684\u516c\u5171 URL\u3002 +Authentication\ Method=\u8ba4\u8bc1\u65b9\u5f0f +Method\ used\ to\ authenticate\ users\ on\ this\ server=\u7528\u4e8e\u9a8c\u8bc1\u6b64\u670d\u52a1\u5668\u4e0a\u7684\u7528\u6237\u7684\u65b9\u6cd5 +Path\ to\ a\ key\ store\ containing\ the\ certificate\ and\ keypair\ that\ this\ server\ will\ present\ to\ clients\ when\ accessed\ over\ HTTPS.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ \"javax.net.ssl.keyStore\"\ system\ property.\=Path to a key store containing the certificate and keypair that this server will present to clients when accessed over HTTPS. If this value is blank, will default to using the value of the \"javax.net.ssl.keyStore\" system property. +Alias\ for\ the\ public/private\ keypair\ within\ the\ key\ store\ that\ will\ be\ used\ to\ identify\ this\ server.=\u5bc6\u94a5\u5b58\u50a8\u4e2d\u7528\u4e8e\u8bc6\u522b\u8be5\u670d\u52a1\u5668\u7684\u516c\u94a5/\u79c1\u94a5\u5bf9\u7684\u522b\u540d\u3002 +Path\ to\ the\ TLS\ trust\ store\ that\ is\ used\ when\ client\ authentication\ is\ required.\ Ignored\ if\ client\ certificate\ authentication\ is\ not\ used.\ Certificates\ in\ this\ file\ designate\ the\ signing\ authorities\ for\ client\ certificates\ that\ will\ be\ trusted.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ \"javax.net.ssl.trustStore\"\ system\ property.\=Path to the TLS trust store that is used when client authentication is required. Ignored if client certificate authentication is not used. Certificates in this file designate the signing authorities for client certificates that will be trusted. If this value is blank, will default to using the value of the \"javax.net.ssl.trustStore\" system property. +Password\ for\ the\ trust\ store.\ Ignored\ if\ client\ certificate\ authentication\ is\ not\ used.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ \"javax.net.ssl.trustStorePassword\"\ system\ property.\=Password for the trust store. Ignored if client certificate authentication is not used. If this value is blank, will default to using the value of the \"javax.net.ssl.trustStorePassword\" system property. +Enable\ CORS=\u542f\u7528\u8de8\u57df\u8d44\u6e90\u5171\u4eab +Enable\ generation\ of\ CORS\ headers\ to\ allow\ cross-domain\ requests\ from\ browsers=\u542f\u7528 CORS \u6807\u5934\u7684\u751f\u6210\u4ee5\u5141\u8bb8\u6765\u81ea\u6d4f\u89c8\u5668\u7684\u8de8\u57df\u8bf7\u6c42 +Capabilities\ Info=\u80fd\u529b\u4fe1\u606f +Information\ included\ in\ the\ service\ capabilities\ document=\u670d\u52a1\u80fd\u529b\u6587\u6863\u4e2d\u5305\u542b\u7684\u4fe1\u606f +Enable\ HTTP\ GET=\u542f\u7528 HTTP GET +Enables/disables\ HTTP\ GET\ bindings\ on\ operations\ that\ support\ it=\u5728\u652f\u6301\u5b83\u7684\u64cd\u4f5c\u4e0a\u542f\u7528/\u7981\u7528 HTTP GET \u7ed1\u5b9a +Enable\ HTTP\ POST=\u542f\u7528 HTTP POST +Enables/disables\ HTTP\ POST\ bindings\ on\ operations\ that\ support\ it=\u5728\u652f\u6301\u5b83\u7684\u64cd\u4f5c\u4e0a\u542f\u7528/\u7981\u7528 HTTP POST \u7ed1\u5b9a +Enable\ HTTP\ SOAP=\u542f\u7528 HTTP SOAP +Enables/disables\ HTTP\ SOAP\ bindings\ on\ operations\ that\ support\ it=\u5728\u652f\u6301\u5b83\u7684\u64cd\u4f5c\u4e0a\u542f\u7528/\u7981\u7528 HTTP SOAP \u7ed1\u5b9a +Connection\ Timeout=\u8fde\u63a5\u8d85\u65f6 +Reconnect\ Period=\u91cd\u8fde\u671f +Max\ Reconnect\ Attempts=\u6700\u5927\u91cd\u65b0\u8fde\u63a5\u5c1d\u8bd5\u6b21\u6570 +Maximum\ number\ of\ times\ the\ client\ will\ attempt\ to\ reconnect\ when\ the\ connection\ is\ not\ available\ or\ lost.\ A\ negative\ value\ means\ that\ there\ is\ no\ limit\ to\ the\ number\ of\ reconnection\ attempts.\ Zero\ means\ not\ to\ attempt\ reconnection.=\u8fde\u63a5\u4e0d\u53ef\u7528\u6216\u4e22\u5931\u65f6\u5ba2\u6237\u7aef\u5c1d\u8bd5\u91cd\u65b0\u8fde\u63a5\u7684\u6700\u5927\u6b21\u6570\u3002\u8d1f\u503c\u610f\u5473\u7740\u91cd\u65b0\u8fde\u63a5\u5c1d\u8bd5\u7684\u6b21\u6570\u6ca1\u6709\u9650\u5236\u3002\u96f6\u610f\u5473\u7740\u4e0d\u5c1d\u8bd5\u91cd\u65b0\u8fde\u63a5\u3002 +IP\ or\ DNS\ name\ of\ remote\ host=\u8fdc\u7a0b\u4e3b\u673a\u7684 IP \u6216 DNS \u540d\u79f0 +IP\ of\ local\ network\ interface\ to\ bind\ to\ or\ 'AUTO'\ to\ select\ it\ automatically=\u8981\u7ed1\u5b9a\u7684\u672c\u5730\u7f51\u7edc\u63a5\u53e3\u7684 IP \u6216\u201cAUTO\u201d\u81ea\u52a8\u9009\u62e9\u5b83 +Connection\ Options=\u8fde\u63a5\u9009\u9879 +Serial\ port\ device\ name.\ Usually\ something\ like\ /dev/ttyXXX\ on\ Linux=\u4e32\u53e3\u8bbe\u5907\u540d\u79f0\u3002\u901a\u5e38\u7c7b\u4f3c\u4e8e Linux \u4e0a\u7684 /dev/ttyXXX +Minimum\ number\ of\ bytes\ to\ receive\ before\ they\ are\ sent\ to\ the\ caller=\u5728\u53d1\u9001\u7ed9\u8c03\u7528\u8005\u4e4b\u524d\u63a5\u6536\u7684\u6700\u5c0f\u5b57\u8282\u6570 +Local\ port\ number\ to\ use\ on\ the\ local\ host=\u5728\u672c\u5730\u4e3b\u673a\u4e0a\u4f7f\u7528\u7684\u672c\u5730\u7aef\u53e3\u53f7 +Physical\ address\ of\ Bluetooth\ device\ to\ connect\ to=\u8981\u8fde\u63a5\u7684\u84dd\u7259\u8bbe\u5907\u7684\u7269\u7406\u5730\u5740 +Port\ number\ to\ connect\ to\ on\ remote\ host=\u8fde\u63a5\u5230\u8fdc\u7a0b\u4e3b\u673a\u7684\u7aef\u53e3\u53f7 +User\ Name=\u7528\u6237\u540d +Remote\ user\ name=\u8fdc\u7a0b\u7528\u6237\u540d +Password=\u5bc6\u7801 +Remote\ password=\u8fdc\u7a0b\u5bc6\u7801 +Secure\ communications\ with\ SSL/TLS=\u4f7f\u7528 SSL/TLS \u8fdb\u884c\u5b89\u5168\u901a\u4fe1 +Enable\ to\ check\ if\ remote\ host\ is\ reachable\ before\ attempting\ further\ operations=\u542f\u7528\u4ee5\u5728\u5c1d\u8bd5\u8fdb\u4e00\u6b65\u64cd\u4f5c\u4e4b\u524d\u68c0\u67e5\u8fdc\u7a0b\u4e3b\u673a\u662f\u5426\u53ef\u8bbf\u95ee +Path\ or\ resource\ or\ service\ relative\ to\ server\ root=\u76f8\u5bf9\u4e8e\u670d\u52a1\u5668\u6839\u7684\u8def\u5f84\u6216\u8d44\u6e90\u6216\u670d\u52a1 +Unique\ ID\ of\ system\ group=\u7cfb\u7edf\u7ec4\u552f\u4e00ID +Name\ of\ system\ group=\u7cfb\u7edf\u7ec4\u540d\u79f0 +Description\ of\ system\ group=\u7cfb\u7edf\u7ec4\u8bf4\u660e +List\ of\ bundle\ repository\ URLs=\u6346\u7ed1\u5305\u5b58\u50a8\u5e93 URL \u5217\u8868 +A\ human\ readable\ friendly\ identifier\ for\ the\ deployment=\u7528\u4e8e\u90e8\u7f72\u7684\u4eba\u7c7b\u53ef\u8bfb\u7684\u53cb\u597d\u6807\u8bc6\u7b26 +Enable\ Landing\ Page=\u542f\u7528\u767b\u9646\u9875\u9762 +Enable\ Landing\ Servlet\ to\ redirect\ users\ to\ landing\ page=\u542f\u7528 Landing Servlet \u5c06\u7528\u6237\u91cd\u5b9a\u5411\u5230\u767b\u9646\u9875\u9762 +Config\ Class=\u914d\u7f6e\u7c7b +Type\ of\ module\ config\ class\ for\ which\ a\ custom\ panel\ must\ be\ generated=\u5fc5\u987b\u4e3a\u5176\u751f\u6210\u81ea\u5b9a\u4e49\u9762\u677f\u7684\u6a21\u5757\u914d\u7f6e\u7c7b\u7684\u7c7b\u578b +UI\ Class=\u7528\u6237\u754c\u9762\u7c7b +Fully\ qualified\ name\ of\ class\ implementing\ IModuleAdminPanel=\u5b9e\u73b0 IModuleAdminPanel \u7684\u7c7b\u7684\u5b8c\u5168\u9650\u5b9a\u540d\u79f0 + +# Auto-extracted property IDs +sensorML=\u4f20\u611f\u5668Ml +lastUpdated=\u6700\u540e\u66f4\u65b0 +lat=\u7eac\u5ea6 +lon=\u6717 +alt=\u66ff\u4ee3 +x=X +y=Y +z=Z +heading=\u6807\u9898 +pitch=\u6ca5\u9752 +roll=\u5377 +location=\u5730\u70b9 +orientation=\u65b9\u5411 +databaseNum=\u6570\u636e\u5e93\u6570\u91cf +enableAccessControl=\u542f\u7528\u8bbf\u95ee\u63a7\u5236 +requireAuth=\u9700\u8981\u8eab\u4efd\u9a8c\u8bc1 +mimeType=\u9ed8\u5267\u7c7b\u578b +className=\u73ed\u7ea7\u540d\u79f0 +endPoint=\u7ec8\u70b9 +id=ID +description=\u63cf\u8ff0 +autoStart=\u81ea\u52a8\u542f\u52a8 +topicName=\u4e3b\u9898\u540d\u79f0 +enablePublish=\u542f\u7528\u53d1\u5e03 +enableSubscribe=\u542f\u7528\u8ba2\u9605 +protocol=\u534f\u8bae +moduleConfigPath=\u6a21\u5757\u914d\u7f6e\u8def\u5f84 +moduleDataPath=\u6a21\u5757\u6570\u636e\u8def\u5f84 +commonConfig=\u901a\u7528\u914d\u7f6e +sensors=Sensors +config=\u914d\u7f6e +uniqueID=\u552f\u4e00ID +subsystems=\u5b50\u7cfb\u7edf +dbConfig=\u6570\u636e\u5e93\u914d\u7f6e +systemUIDs=\u7cfb\u7edf\u7528\u6237ID +autoPurgeConfig=\u81ea\u52a8\u6e05\u9664\u914d\u7f6e +minCommitPeriod=\u6700\u77ed\u63d0\u4ea4\u671f +enabled=\u542f\u7528 +purgePeriod=\u51c0\u5316\u671f +maxRecordAge=\u6700\u5927\u8bb0\u5f55\u5e74\u9f84 +users=\u7528\u6237 +roles=\u89d2\u8272 +allow=\u5141\u8bb8 +deny=\u5426\u5b9a +userID=\u7528\u6237\u8eab\u4efd +name=\u59d3\u540d +password=\u5bc6\u7801 +certificate=\u8bc1\u4e66 +twoFactorSecret=\u4e8c\u56e0\u7d20\u79d8\u5bc6 +isTwoFactorEnabled=\u662f\u5426\u542f\u7528\u4e86\u53cc\u56e0\u7d20 +roleID=\u89d2\u8272 ID +sourceDatabaseId=\u6e90\u6570\u636e\u5e93 ID +includeFilter=\u5305\u62ec\u8fc7\u6ee4\u5668 +excludeFilter=\u6392\u9664\u8fc7\u6ee4\u5668 +httpPort=HTTP\u7aef\u53e3 +httpsPort=HTTPS\u7aef\u53e3 +staticDocsRootUrl=\u9759\u6001\u6587\u6863\u6839 URL +staticDocsRootDir=\u9759\u6001\u6587\u6863\u6839\u76ee\u5f55 +servletsRootUrl=Servlet \u6839 URL +proxyBaseUrl=\u4ee3\u7406\u57fa\u5740 +authMethod=\u8ba4\u8bc1\u65b9\u5f0f +keyStorePath=\u5bc6\u94a5\u5b58\u50a8\u8def\u5f84 +keyStorePassword=\u5bc6\u94a5\u5e93\u5bc6\u7801 +keyAlias=\u5173\u952e\u522b\u540d +trustStorePath=\u4fe1\u4efb\u5b58\u50a8\u8def\u5f84 +trustStorePassword=\u4fe1\u4efb\u5b58\u50a8\u5bc6\u7801 +xmlConfigFile=XML \u914d\u7f6e\u6587\u4ef6 +enableCORS=\u542f\u7528 Cors +title=Title +keywords=\u5173\u952e\u8bcd +fees=\u8d39\u7528 +accessConstraints=\u8bbf\u95ee\u9650\u5236 +serviceProvider=\u670d\u52a1\u63d0\u4f9b\u5546 +ogcCapabilitiesInfo=OGC \u80fd\u529b\u4fe1\u606f +enableHttpGET=\u542f\u7528 Http \u83b7\u53d6 +enableHttpPOST=\u542f\u7528 Http Post +enableSOAP=\u542f\u7528\u80a5\u7682 +connectTimeout=\u8fde\u63a5\u8d85\u65f6 +reconnectPeriod=\u91cd\u8fde\u671f +reconnectAttempts=\u91cd\u65b0\u8fde\u63a5\u5c1d\u8bd5 +deviceID=\u8bbe\u5907 ID +deviceClass=\u8bbe\u5907\u7c7b\u522b +remoteHost=\u8fdc\u7a0b\u4e3b\u673a +localAddress=\u672c\u5730\u5730\u5740 +connection=\u8054\u7cfb +portName=\u7aef\u53e3\u540d\u79f0 +baudRate=\u6ce2\u7279\u7387 +dataBits=\u6570\u636e\u4f4d +stopBits=\u505c\u6b62\u4f4d +parity=\u5e73\u4ef7 +receiveTimeout=\u63a5\u6536\u8d85\u65f6 +receiveThreshold=\u63a5\u6536\u9608\u503c +remotePort=\u8fdc\u7a0b\u7aef\u53e3 +localPort=\u672c\u5730\u7aef\u53e3 +deviceAddress=\u8bbe\u5907\u5730\u5740 +deviceName=\u8bbe\u5907\u540d\u79f0 +serviceUuid=\u670d\u52a1Uuid +user=\u7528\u6237 +enableTLS=\u542f\u7528 TLS +checkReachability=\u68c0\u67e5\u53ef\u8fbe\u6027 +resourcePath=\u8d44\u6e90\u8def\u5f84 +uid=\u7528\u6237\u6807\u8bc6 +securityRole=\u5b89\u5168\u89d2\u8272 +passwordField=\u5bc6\u7801\u5b57\u6bb5 +widgetSet=\u5c0f\u5de5\u5177\u96c6 +bundleRepoUrls=\u6346\u7ed1\u5b58\u50a8\u5e93 URL +customPanels=\u5b9a\u5236\u9762\u677f +customForms=\u5b9a\u5236\u8868\u683c +deploymentName=\u90e8\u7f72\u540d\u79f0 +enableLandingPage=\u542f\u7528\u767b\u9646\u9875\u9762 +configClass=\u914d\u7f6e\u7c7b +uiClass=\u7528\u6237\u754c\u9762\u7c7b +moduleClass=\u6a21\u5757\u7c7b + +# Auto-extracted hardcoded UI strings +testLinks1=\u6d4b\u8bd5\u94fe\u63a5 +uniqueID1=\u552f\u4e00ID +foiIDs1=\u4fe1\u606f\u81ea\u7531 ID +version1=\u7248\u672c + +Connected\ Systems\ Endpoint=\u9023\u63a5\u7cfb\u7d71\u7aef\u9ede +Connected\ Systems\ endpoint\ where\ the\ requests\ are\ sent=\u767c\u9001\u8acb\u6c42\u7684\u9023\u7dda\u7cfb\u7d71\u7aef\u9ede +Connection\ Settings=\u9023\u63a5\u8a2d\u5b9a +Custom\ connector\ configurations=\u81ea\u8a02\u9023\u63a5\u5668\u914d\u7f6e +Custom\ provider\ configurations=\u81ea\u8a02\u63d0\u4f9b\u8005\u914d\u7f6e +Database\ ID=\u8cc7\u6599\u5eabID +Default\ live\ time-out\ for\ all\ offerings,\ unless\ overriden\ by\ custom\ provider\ settings=\u6240\u6709\u7522\u54c1\u7684\u9810\u8a2d\u5373\u6642\u8d85\u6642\uff0c\u9664\u975e\u88ab\u81ea\u8a02\u63d0\u4f9b\u8005\u8a2d\u5b9a\u8986\u84cb +Default\ live\ time-out\ for\ new\ offerings\ created\ via\ SOS-T=\u900f\u904e SOS-T \u5275\u5efa\u7684\u65b0\u7522\u54c1\u7684\u9810\u8a2d\u5373\u6642\u8d85\u6642 +Enable\ to\ use\ a\ persistent\ HTTP\ connection\ for\ InsertResult=\u5141\u8a31\u5c0d InsertResult \u4f7f\u7528\u6301\u4e45 HTTP \u9023\u63a5 +Execution\ period\ of\ the\ purge\ policy\ (in\ seconds)=\u6e05\u9664\u7b56\u7565\u7684\u57f7\u884c\u9031\u671f\uff08\u79d2\uff09 +Filtered\ view\ to\ select\ systems\ exposed\ as\ read-only\ through\ this\ service=\u7be9\u9078\u8996\u5716\u4ee5\u9078\u64c7\u900f\u904e\u6b64\u670d\u52d9\u516c\u958b\u70ba\u552f\u8b80\u7684\u7cfb\u7d71 +Filtered\ view\ to\ select\ systems/datastreams\ to\ register\ with\ Connected\ Systems=\u7be9\u9078\u8996\u5716\uff0c\u7528\u65bc\u9078\u64c7\u8981\u8a3b\u518a\u5230\u9023\u63a5\u7cfb\u7d71\u7684\u7cfb\u7d71/\u8cc7\u6599\u6d41 +Filtered\ view\ to\ select\ systems/datastreams\ to\ register\ with\ remote\ SOS=\u7be9\u9078\u8996\u5716\u4ee5\u9078\u64c7\u7cfb\u7d71/\u8cc7\u6599\u6d41\u4ee5\u8a3b\u518a\u9060\u7aef SOS +Fixed\ system\ location\ in\ EPSG\ 4979\ (WGS84)\ coordinate\ system=EPSG 4979 (WGS84) \u5ea7\u6a19\u7cfb\u4e2d\u7684\u56fa\u5b9a\u4fc2\u7d71\u4f4d\u7f6e +For\ each\ connection\ or\ reconnection\ attempt,\ the\ client\ will\ wait\ for\ the\ remote\ side\ to\ respond\ until\ this\ timeout\ expires\ (in\ ms)=\u5c0d\u65bc\u6bcf\u6b21\u9023\u7dda\u6216\u91cd\u65b0\u9023\u7dda\u5617\u8a66\uff0c\u7528\u6236\u7aef\u5c07\u7b49\u5f85\u9060\u7aef\u56de\u61c9\uff0c\u76f4\u5230\u903e\u6642\uff08\u4ee5\u6beb\u79d2\u70ba\u55ae\u4f4d\uff09 +Heading\ (or\ yaw)\ angle\ about\ Z\ axis\ in\ degrees=\u7e5e Z \u8ef8\u7684\u822a\u5411\uff08\u6216\u504f\u822a\uff09\u89d2\uff08\u4ee5\u5ea6\u70ba\u55ae\u4f4d\uff09 +How\ long\ the\ client\ will\ wait\ after\ connection\ is\ lost\ before\ it\ will\ attempt\ to\ reconnect\ (in\ ms)=\u9023\u7dda\u907a\u5931\u5f8c\u5ba2\u6236\u7aef\u5617\u8a66\u91cd\u65b0\u9023\u7dda\u4e4b\u524d\u5c07\u7b49\u5f85\u591a\u9577\u6642\u9593\uff08\u4ee5\u6beb\u79d2\u70ba\u55ae\u4f4d\uff09 +ID\ Generator=ID\u7522\u751f\u5668 +ID\ of\ database\ module\ used\ for\ persisting\ data\ received\ by\ this\ service.\ If\ none\ is\ provided,\ new\ systems\ registered\ through\ this\ service\ will\ be\ available\ on\ the\ hub,\ but\ with\ no\ persistence\ guarantee\ across\ restarts.=\u7528\u65bc\u4fdd\u5b58\u8a72\u670d\u52d9\u63a5\u6536\u5230\u7684\u8cc7\u6599\u7684\u8cc7\u6599\u5eab\u6a21\u7d44\u7684 ID\u3002\u5982\u679c\u672a\u63d0\u4f9b\u4efb\u4f55\u5167\u5bb9\uff0c\u5247\u900f\u904e\u6b64\u670d\u52d9\u8a3b\u518a\u7684\u65b0\u7cfb\u7d71\u5c07\u5728\u96c6\u7dda\u5668\u4e0a\u53ef\u7528\uff0c\u4f46\u5728\u91cd\u65b0\u555f\u52d5\u5f8c\u6c92\u6709\u6301\u4e45\u6027\u4fdd\u8b49\u3002 +ID\ of\ database\ module\ used\ for\ persisting\ data\ received\ by\ this\ service.\ If\ none\ is\ provided,\ new\ systems\ registered\ through\ this\ service\ will\ be\ available\ on\ the\ hub,\ but\ with\ no\ persistence\ guarantee\ across\ restarts.\ Only\ the\ latest\ observation\ from\ each\ datastream\ will\ be\ available\ and\ older\ observations\ will\ be\ discarded=\u7528\u65bc\u4fdd\u5b58\u8a72\u670d\u52d9\u63a5\u6536\u5230\u7684\u8cc7\u6599\u7684\u8cc7\u6599\u5eab\u6a21\u7d44\u7684 ID\u3002\u5982\u679c\u672a\u63d0\u4f9b\u4efb\u4f55\u5167\u5bb9\uff0c\u5247\u900f\u904e\u6b64\u670d\u52d9\u8a3b\u518a\u7684\u65b0\u7cfb\u7d71\u5c07\u5728\u96c6\u7dda\u5668\u4e0a\u53ef\u7528\uff0c\u4f46\u5728\u91cd\u65b0\u555f\u52d5\u5f8c\u6c92\u6709\u6301\u4e45\u6027\u4fdd\u8b49\u3002\u50c5\u6bcf\u500b\u8cc7\u6599\u6d41\u4e2d\u7684\u6700\u65b0\u89c0\u5bdf\u7d50\u679c\u53ef\u7528\uff0c\u8f03\u820a\u7684\u89c0\u5bdf\u7d50\u679c\u5c07\u88ab\u4e1f\u68c4 +Individual\ configuration\ of\ sensors\ in\ the\ array\ (will\ override\ common\ configuration)=\u9663\u5217\u4e2d\u611f\u6e2c\u5668\u7684\u55ae\u7368\u914d\u7f6e\uff08\u5c07\u8986\u84cb\u901a\u7528\u914d\u7f6e\uff09 +List\ of\ observed\ properties\ URI\ to\ make\ available\ as\ outputs=\u53ef\u7528\u4f5c\u8f38\u51fa\u7684\u89c0\u5bdf\u5230\u7684\u5c6c\u6027 URI \u5217\u8868 +Mapping\ of\ custom\ formats\ mime-types\ to\ custom\ serializer\ classes=\u5c07\u81ea\u8a02\u683c\u5f0f mime \u985e\u578b\u5c0d\u61c9\u5230\u81ea\u8a02\u5e8f\u5217\u5316\u5668\u985e +Mappings\ used\ by\ CURIE\ to\ URI\ resolver=CURIE \u5230 URI \u89e3\u6790\u5668\u4f7f\u7528\u7684\u6620\u5c04 +Max\ Limit=\u6700\u5927\u9650\u5236 +Max\ Observations\ Returned=\u50b3\u56de\u7684\u6700\u5927\u89c0\u6e2c\u503c +Max\ Records\ Returned=\u50b3\u56de\u7684\u6700\u5927\u8a18\u9304\u6578 +Max\ delay\ between\ auto-commit\ execution,\ in\ seconds.\ 0\ to\ disable\ time-based\ auto-commit=\u81ea\u52d5\u63d0\u4ea4\u57f7\u884c\u4e4b\u9593\u7684\u6700\u5927\u5ef6\u9072\uff08\u4ee5\u79d2\u70ba\u55ae\u4f4d\uff09\u3002 0 \u7981\u7528\u57fa\u65bc\u6642\u9593\u7684\u81ea\u52d5\u63d0\u4ea4 +Maximum\ age\ of\ data\ to\ be\ kept\ in\ storage\ (in\ seconds)=\u8cc7\u6599\u4fdd\u5b58\u7684\u6700\u9577\u671f\u9650\uff08\u4ee5\u79d2\u70ba\u55ae\u4f4d\uff09 +Maximum\ number\ of\ FoI\ IDs\ listed\ in\ capabilities=\u529f\u80fd\u4e2d\u5217\u51fa\u7684 FoI ID \u7684\u6700\u5927\u6578\u91cf +Maximum\ number\ of\ observations\ returned\ \ by\ a\ historical\ GetObservation\ request\ (for\ each\ selected\ offering)=\u6b77\u53f2 GetObservation \u8acb\u6c42\u50b3\u56de\u7684\u6700\u5927\u89c0\u5bdf\u6578\uff08\u5c0d\u65bc\u6bcf\u500b\u9078\u5b9a\u7684\u7522\u54c1\uff09 +Maximum\ number\ of\ records\ in\ upload\ queue\ (used\ to\ compensate\ for\ variable\ bandwidth)=\u4e0a\u50b3\u4f47\u5217\u4e2d\u7684\u6700\u5927\u8a18\u9304\u6578\uff08\u7528\u65bc\u88dc\u511f\u53ef\u8b8a\u983b\u5bec\uff09 +Maximum\ number\ of\ resources\ returned\ in\ a\ single\ page=\u55ae\u9801\u6700\u5927\u56de\u50b3\u8cc7\u6e90\u6578 +Maximum\ number\ of\ result\ records\ returned\ by\ a\ historical\ GetResult\ request=\u6b77\u53f2GetResult\u8acb\u6c42\u50b3\u56de\u7684\u6700\u5927\u7d50\u679c\u8a18\u9304\u6578 +Maximum\ number\ of\ stream\ errors\ before\ we\ try\ to\ reconnect\ to\ remote\ server=\u5617\u8a66\u91cd\u65b0\u9023\u7dda\u5230\u9060\u7aef\u4f3a\u670d\u5668\u4e4b\u524d\u7684\u6700\u5927\u6d41\u932f\u8aa4\u6578 +Memory\ cache\ size\ for\ page\ chunks,\ in\ KB=\u9801\u584a\u7684\u8a18\u61b6\u9ad4\u5feb\u53d6\u5927\u5c0f\uff08\u4ee5 KB \u70ba\u55ae\u4f4d\uff09 +Metadata\ of\ system\ group\ that\ will\ be\ created\ to\ contain\ all\ procedures/sensors\ registered\ through\ this\ service.\ Only\ sensors\ in\ this\ group\ will\ be\ modifiable\ by\ this\ service=\u5c07\u5efa\u7acb\u7684\u7cfb\u7d71\u7d44\u5143\u8cc7\u6599\u5305\u542b\u900f\u904e\u6b64\u670d\u52d9\u8a3b\u518a\u7684\u6240\u6709\u7a0b\u5f0f/\u611f\u6e2c\u5668\u3002\u6b64\u670d\u52d9\u53ea\u80fd\u4fee\u6539\u8a72\u7d44\u4e2d\u7684\u611f\u6e2c\u5668 +Metadata\ of\ system\ group\ that\ will\ be\ created\ to\ contain\ all\ systems\ registered\ through\ this\ service.\ Only\ systems\ in\ this\ group\ will\ be\ modifiable\ by\ this\ service=\u5c07\u5efa\u7acb\u7684\u7cfb\u7d71\u7d44\u5143\u6578\u64da\uff0c\u7528\u65bc\u5305\u542b\u900f\u904e\u6b64\u670d\u52d9\u8a3b\u518a\u7684\u6240\u6709\u7cfb\u7d71\u3002\u6b64\u670d\u52d9\u53ea\u80fd\u4fee\u6539\u8a72\u7fa4\u7d44\u4e2d\u7684\u7cfb\u7d71 +Method\ used\ to\ generate\ new\ resource\ IDs=\u7528\u65bc\u7522\u751f\u65b0\u8cc7\u6e90 ID \u7684\u65b9\u6cd5 +Minimum\ fillrate\ above\ which\ auto\ compact\ operations\ may\ be\ triggered=\u6700\u5c0f\u586b\u5145\u7387\uff0c\u9ad8\u65bc\u6b64\u503c\u53ef\u80fd\u6703\u89f8\u767c\u81ea\u52d5\u58d3\u7e2e\u64cd\u4f5c +Minimum\ period\ between\ database\ commits\ (in\ ms)=\u8cc7\u6599\u5eab\u63d0\u4ea4\u4e4b\u9593\u7684\u6700\u77ed\u9031\u671f\uff08\u4ee5\u6beb\u79d2\u70ba\u55ae\u4f4d\uff09 +Names\ of\ datastreams\ whose\ data\ will\ be\ hidden\ from\ the\ SOS.\ If\ this\ is\ null,\ all\ streams\ produced\ by\ the\ procedure\ are\ exposed=\u5176\u8cc7\u6599\u5c07\u5c0d SOS \u96b1\u85cf\u7684\u8cc7\u6599\u6d41\u7684\u540d\u7a31\u3002\u5982\u679c\u70ba\u7a7a\uff0c\u5247\u516c\u958b\u8a72\u904e\u7a0b\u7522\u751f\u7684\u6240\u6709\u6d41 +Observed\ Properties=\u89c0\u5bdf\u5230\u7684\u7279\u6027 +Offering\ URI\ as\ exposed\ in\ capabilities.\ (if\ null,\ the\ procedure\ UID\ is\ used)=\u63d0\u4f9b\u5728\u529f\u80fd\u4e2d\u516c\u958b\u7684 URI\u3002 \uff08\u5982\u679c\u70ba null\uff0c\u5247\u4f7f\u7528\u904e\u7a0b UID\uff09 +Offering\ description\ (if\ null,\ it\ will\ be\ auto-generated)=\u7522\u54c1\u63cf\u8ff0\uff08\u5982\u679c\u70ba\u7a7a\uff0c\u5c07\u81ea\u52d5\u7522\u751f\uff09 +Offering\ name\ (if\ null,\ the\ procedure\ name\ is\ used)=\u7522\u54c1\u540d\u7a31\uff08\u5982\u679c\u70ba\u7a7a\uff0c\u5247\u4f7f\u7528\u904e\u7a0b\u540d\u7a31\uff09 +Orientation\ as\ Euler\ angles\ in\ NED\ coordinate\ reference\ frame.\nOrder\ of\ rotations\ is\ z-y\u2019-x"\ (in\ rotating\ frame)\ or\ x-y-z\ (in\ fixed\ frame)=NED \u5ea7\u6a19\u53c3\u8003\u7cfb\u4e2d\u7684\u6b50\u62c9\u89d2\u65b9\u5411\u3002\n\u65cb\u8f49\u9806\u5e8f\u70ba z-y\u2019-x"\uff08\u5728\u65cb\u8f49\u5ea7\u6a19\u7cfb\u4e2d\uff09\u6216 x-y-z\uff08\u5728\u56fa\u5b9a\u5ea7\u6a19\u7cfb\u4e2d\uff09 +Password\ for\ the\ key\ store\ (and\ for\ the\ keypair\ within\ the\ keystore).\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ "javax.net.ssl.keyStorePassword"\ system\ property.\ This\ value\ can\ use\ variable\ expansion\ expressions\ of\ the\ form\ "$${name}"\ (for\ environment\ variables\ and\ system\ properties)\ or\ "$${file;/path/to/file}"\ (for\ secret\ file\ contents).=\u5bc6\u9470\u5eab\uff08\u4ee5\u53ca\u5bc6\u9470\u5eab\u4e2d\u7684\u5bc6\u9470\u5c0d\uff09\u7684\u5bc6\u78bc\u3002\u5982\u679c\u503c\u70ba\u7a7a\uff0c\u5247\u9810\u8a2d\u4f7f\u7528\u300cjavax.net.ssl.keyStorePassword\u300d\u7cfb\u7d71\u5c6c\u6027\u7684\u503c\u3002\u8a72\u503c\u53ef\u4ee5\u4f7f\u7528\u201c$${name}\u201d\uff08\u5c0d\u65bc\u74b0\u5883\u8b8a\u6578\u548c\u7cfb\u7d71\u5c6c\u6027\uff09\u6216\u201c$${file;/path/to/file}\u201d\uff08\u5c0d\u65bc\u6a5f\u5bc6\u6587\u4ef6\u5167\u5bb9\uff09\u5f62\u5f0f\u7684\u8b8a\u6578\u64f4\u5c55\u8868\u9054\u5f0f\u3002 +Password\ for\ the\ trust\ store.\ Ignored\ if\ client\ certificate\ authentication\ is\ not\ used.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ "javax.net.ssl.trustStorePassword"\ system\ property.\ This\ value\ can\ use\ variable\ expansion\ expressions\ of\ the\ form\ "$${name}"\ (for\ environment\ variables\ and\ system\ properties)\ or\ "$${file;/path/to/file}"\ (for\ secret\ file\ contents).=\u4fe1\u4efb\u5132\u5b58\u7684\u5bc6\u78bc\u3002\u5982\u679c\u4e0d\u4f7f\u7528\u7528\u6236\u7aef\u6191\u8b49\u9a57\u8b49\uff0c\u5247\u5ffd\u7565\u3002\u5982\u679c\u503c\u70ba\u7a7a\uff0c\u5247\u9810\u8a2d\u4f7f\u7528\u300cjavax.net.ssl.trustStorePassword\u300d\u7cfb\u7d71\u5c6c\u6027\u7684\u503c\u3002\u8a72\u503c\u53ef\u4ee5\u4f7f\u7528\u201c$${name}\u201d\uff08\u5c0d\u65bc\u74b0\u5883\u8b8a\u6578\u548c\u7cfb\u7d71\u5c6c\u6027\uff09\u6216\u201c$${file;/path/to/file}\u201d\uff08\u5c0d\u65bc\u6a5f\u5bc6\u6587\u4ef6\u5167\u5bb9\uff09\u5f62\u5f0f\u7684\u8b8a\u6578\u64f4\u5c55\u8868\u9054\u5f0f\u3002 +Path\ of\ service\ endpoint\ relative\ to\ the\ context\ URL\ (e.g.\ http\://server.net/sensorhub)=\u670d\u52d9\u7aef\u9ede\u76f8\u5c0d\u65bc\u4e0a\u4e0b\u6587 URL \u7684\u8def\u5f91\uff08\u4f8b\u5982 http://server.net/sensorhub\uff09 +Path\ to\ a\ key\ store\ containing\ the\ certificate\ and\ keypair\ that\ this\ server\ will\ present\ to\ clients\ when\ accessed\ over\ HTTPS.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ "javax.net.ssl.keyStore"\ system\ property.\ This\ value\ can\ use\ variable\ expansion\ expressions\ of\ the\ form\ "$${name}"\ (for\ environment\ variables\ and\ system\ properties)\ or\ "$${file;/path/to/file}"\ (for\ secret\ file\ contents).=\u5305\u542b\u8a72\u4f3a\u670d\u5668\u5728\u900f\u904e HTTPS \u5b58\u53d6\u6642\u5411\u7528\u6236\u7aef\u63d0\u4f9b\u7684\u6191\u8b49\u548c\u91d1\u9470\u5c0d\u7684\u91d1\u9470\u5132\u5b58\u7684\u8def\u5f91\u3002\u5982\u679c\u503c\u70ba\u7a7a\uff0c\u5247\u9810\u8a2d\u4f7f\u7528\u300cjavax.net.ssl.keyStore\u300d\u7cfb\u7d71\u5c6c\u6027\u7684\u503c\u3002\u8a72\u503c\u53ef\u4ee5\u4f7f\u7528\u201c$${name}\u201d\uff08\u5c0d\u65bc\u74b0\u5883\u8b8a\u6578\u548c\u7cfb\u7d71\u5c6c\u6027\uff09\u6216\u201c$${file;/path/to/file}\u201d\uff08\u5c0d\u65bc\u6a5f\u5bc6\u6587\u4ef6\u5167\u5bb9\uff09\u5f62\u5f0f\u7684\u8b8a\u6578\u64f4\u5c55\u8868\u9054\u5f0f\u3002 +Path\ to\ database\ file=\u8cc7\u6599\u5eab\u6a94\u6848\u7684\u8def\u5f91 +Path\ to\ external\ config\ file\ (in\ Jetty\ IOC\ XML\ format)=\u5916\u90e8\u8a2d\u5b9a\u6a94\u7684\u8def\u5f91\uff08Jetty IOC XML \u683c\u5f0f\uff09 +Path\ to\ the\ TLS\ trust\ store\ that\ is\ used\ when\ client\ authentication\ is\ required.\ Ignored\ if\ client\ certificate\ authentication\ is\ not\ used.\ Certificates\ in\ this\ file\ designate\ the\ signing\ authorities\ for\ client\ certificates\ that\ will\ be\ trusted.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ "javax.net.ssl.trustStore"\ system\ property.\ This\ value\ can\ use\ variable\ expansion\ expressions\ of\ the\ form\ "$${name}"\ (for\ environment\ variables\ and\ system\ properties)\ or\ "$${file;/path/to/file}"\ (for\ secret\ file\ contents).=\u9700\u8981\u5ba2\u6236\u7aef\u8eab\u4efd\u9a57\u8b49\u6642\u4f7f\u7528\u7684 TLS \u4fe1\u4efb\u5132\u5b58\u7684\u8def\u5f91\u3002\u5982\u679c\u4e0d\u4f7f\u7528\u7528\u6236\u7aef\u6191\u8b49\u9a57\u8b49\uff0c\u5247\u5ffd\u7565\u3002\u6b64\u6587\u4ef6\u4e2d\u7684\u6191\u8b49\u6307\u5b9a\u53d7\u4fe1\u4efb\u7684\u7528\u6236\u7aef\u6191\u8b49\u7684\u7c3d\u7ae0\u6a5f\u69cb\u3002\u5982\u679c\u503c\u70ba\u7a7a\uff0c\u5247\u9810\u8a2d\u4f7f\u7528\u300cjavax.net.ssl.trustStore\u300d\u7cfb\u7d71\u5c6c\u6027\u7684\u503c\u3002\u8a72\u503c\u53ef\u4ee5\u4f7f\u7528\u201c$${name}\u201d\uff08\u5c0d\u65bc\u74b0\u5883\u8b8a\u6578\u548c\u7cfb\u7d71\u5c6c\u6027\uff09\u6216\u201c$${file;/path/to/file}\u201d\uff08\u5c0d\u65bc\u6a5f\u5bc6\u6587\u4ef6\u5167\u5bb9\uff09\u5f62\u5f0f\u7684\u8b8a\u6578\u64f4\u5c55\u8868\u9054\u5f0f\u3002 +Port\ number\ to\ connect\ to\ on\ remote\ host\ (0\ to\ automatically\ select\ a\ port)=\u9023\u63a5\u5230\u9060\u7aef\u4e3b\u6a5f\u7684\u9023\u63a5\u57e0\u865f\u78bc\uff080 \u81ea\u52d5\u9078\u64c7\u9023\u63a5\u57e0\uff09 +SOS\ Endpoint=\u6c42\u6551\u7aef\u9ede +SOS\ endpoint\ to\ fetch\ data\ from=\u7528\u65bc\u5f9e\u4e2d\u53d6\u5f97\u8cc7\u6599\u7684 SOS \u7aef\u9ede +SOS\ endpoint\ where\ the\ requests\ are\ sent=\u767c\u9001\u8acb\u6c42\u7684 SOS \u7aef\u9ede +SPS\ Endpoint=SPS\u7aef\u9ede +SPS\ endpoint\ to\ send\ commands\ to=\u5c07\u6307\u4ee4\u50b3\u9001\u5230\u7684 SPS \u7aef\u9ede +Security\ related\ options=\u5b89\u5168\u76f8\u95dc\u9078\u9805 +Sensor\ UID=\u611f\u6e2c\u5668UID +Set\ if\ WebSocket\ protocol\ should\ be\ used\ to\ get\ streaming\ data\ from\ SOS=\u8a2d\u5b9a\u662f\u5426\u61c9\u4f7f\u7528 WebSocket \u5354\u5b9a\u5f9e SOS \u53d6\u5f97\u6d41\u6578\u64da +Set\ if\ offering\ is\ enabled,\ unset\ if\ disabled=\u5982\u679c\u7522\u54c1\u5df2\u555f\u7528\u5247\u8a2d\u7f6e\uff0c\u5982\u679c\u505c\u7528\u5247\u53d6\u6d88\u8a2d\u7f6e +Set\ if\ websockets\ protocol\ should\ be\ used\ to\ send\ commands\ to\ SPS=\u8a2d\u5b9a\u662f\u5426\u61c9\u4f7f\u7528 websockets \u5354\u5b9a\u5411 SPS \u767c\u9001\u547d\u4ee4 +Set\ to\ compact\ the\ database\ file\ when\ the\ database\ module\ is\ stopped\ or\ restarted=\u8a2d\u5b9a\u5728\u8cc7\u6599\u5eab\u6a21\u7d44\u505c\u6b62\u6216\u91cd\u65b0\u555f\u52d5\u6642\u58d3\u7e2e\u8cc7\u6599\u5eab\u6587\u4ef6 +Set\ to\ compress\ underlying\ file\ storage=\u8a2d\u5b9a\u58d3\u7e2e\u5e95\u5c64\u6a94\u6848\u5b58\u5132 +Set\ to\ display\ MVStore\ debug\ info\ when\ database\ is\ closed\ (only\ if\ DEBUG\ log\ is\ also\ enabled)=\u8a2d\u5b9a\u70ba\u5728\u8cc7\u6599\u5eab\u95dc\u9589\u6642\u986f\u793a MVStore \u5075\u932f\u8cc7\u8a0a\uff08\u50c5\u7576 DEBUG \u65e5\u8a8c\u4e5f\u555f\u7528\u6642\uff09 +Set\ to\ enable\ spatial\ indexing\ of\ individual\ observations\ sampling\ locations\ (when\ provided)=\u8a2d\u5b9a\u70ba\u555f\u7528\u55ae\u4e00\u89c0\u6e2c\u63a1\u6a23\u4f4d\u7f6e\u7684\u7a7a\u9593\u7d22\u5f15\uff08\u5982\u679c\u63d0\u4f9b\uff09 +Set\ to\ open\ the\ database\ as\ read-only=\u8a2d\u5b9a\u4ee5\u552f\u8b80\u65b9\u5f0f\u958b\u555f\u8cc7\u6599\u5eab +Set\ to\ true\ to\ enable\ transactional\ operation\ support=\u8a2d\u5b9a\u70ba true \u4ee5\u555f\u7528\u4e8b\u52d9\u64cd\u4f5c\u652f\u6301 +Size\ of\ the\ auto-commit\ write\ buffer,\ in\ KB=\u81ea\u52d5\u63d0\u4ea4\u5beb\u5165\u7de9\u885d\u5340\u7684\u5927\u5c0f\uff0c\u4ee5 KB \u70ba\u55ae\u4f4d +TCP\ port\ where\ server\ will\ listen\ for\ secure\ HTTP\ (HTTPS)\ connections\ (use\ 0\ to\ disable\ HTTPS).=\u4f3a\u670d\u5668\u5c07\u5075\u807d\u5b89\u5168 HTTP (HTTPS) \u9023\u7dda\u7684 TCP \u9023\u63a5\u57e0\uff08\u4f7f\u7528 0 \u505c\u7528 HTTPS\uff09\u3002 +TCP\ port\ where\ server\ will\ listen\ for\ unsecure\ HTTP\ connections\ (use\ 0\ to\ disable\ HTTP).=\u4f3a\u670d\u5668\u5c07\u5075\u807d\u4e0d\u5b89\u5168 HTTP \u9023\u7dda\u7684 TCP \u9023\u63a5\u57e0\uff08\u4f7f\u7528 0 \u505c\u7528 HTTP\uff09\u3002 +Time-out\ after\ which\ real-time\ requests\ are\ disabled\ if\ no\ more\ measurements\ are\ received\ (in\ seconds).\ Real-time\ is\ reactivated\ as\ soon\ as\ new\ records\ start\ being\ received\ again=\u5982\u679c\u6c92\u6709\u6536\u5230\u66f4\u591a\u6e2c\u91cf\u503c\uff0c\u5247\u903e\u6642\u5f8c\u6703\u505c\u7528\u5373\u6642\u8acb\u6c42\uff08\u4ee5\u79d2\u70ba\u55ae\u4f4d\uff09\u3002\u4e00\u65e6\u518d\u6b21\u958b\u59cb\u63a5\u6536\u65b0\u8a18\u9304\uff0c\u5be6\u6642\u5c31\u6703\u91cd\u65b0\u6fc0\u6d3b +Time-out\ period\ after\ which\ a\ template\ ID\ reserved\ using\ InsertResultTemplate\ will\ expire\ if\ not\ used\ in\ InsertResult\ requests\ (in\ seconds)=\u5982\u679c\u672a\u5728 InsertResult \u8acb\u6c42\u4e2d\u4f7f\u7528\uff0c\u4f7f\u7528 InsertResultTemplate \u4fdd\u7559\u7684\u6a21\u677f ID \u5c07\u904e\u671f\u7684\u903e\u6642\u6642\u9593\uff08\u4ee5\u79d2\u70ba\u55ae\u4f4d\uff09 +Timeout\ after\ which\ data\ is\ released\ to\ the\ caller\ if\ at\ least\ one\ byte\ was\ received\ (in\ ms)=\u5982\u679c\u81f3\u5c11\u6536\u5230\u4e00\u500b\u4f4d\u5143\u7d44\uff0c\u5247\u5728\u8a72\u903e\u6642\u5f8c\u5c07\u8cc7\u6599\u91cb\u653e\u7d66\u547c\u53eb\u8005\uff08\u4ee5\u6beb\u79d2\u70ba\u55ae\u4f4d\uff09 +URI\ Prefix\ Map=URI \u524d\u7db4\u6620\u5c04 +Unique\ ID\ (full\ URN\ or\ only\ suffix)\ to\ use\ for\ the\ sensor\ system\ or\ 'auto'\ to\ use\ the\ UUID\ randomly\ generated\ the\ first\ time\ the\ module\ is\ initialized=\u7528\u65bc\u611f\u6e2c\u5668\u7cfb\u7d71\u7684\u552f\u4e00 ID\uff08\u5b8c\u6574 URN \u6216\u50c5\u5f8c\u7db4\uff09\u6216\u300c\u81ea\u52d5\u300d\u4ee5\u4f7f\u7528\u6a21\u7d44\u9996\u6b21\u521d\u59cb\u5316\u6642\u96a8\u6a5f\u7522\u751f\u7684 UUID +Unique\ ID\ of\ a\ system\ that\ this\ configuration\ applies\ to.\nCan\ include\ a\ trailing\ wildcard\ '*'\ to\ match\ several\ systems\ at\ once.=\u6b64\u914d\u7f6e\u9069\u7528\u7684\u7cfb\u7d71\u7684\u552f\u4e00 ID\u3002\n\u53ef\u4ee5\u5305\u542b\u5c3e\u96a8\u901a\u914d\u7b26\u201c*\u201d\u4ee5\u540c\u6642\u5339\u914d\u591a\u500b\u7cfb\u7d71\u3002 +Unique\ ID\ of\ sensor\ to\ connect\ to\ on\ SOS\ and\ SPS\ servers=\u8981\u9023\u63a5\u5230 SOS \u548c SPS \u4f3a\u670d\u5668\u7684\u611f\u6e2c\u5668\u7684\u552f\u4e00 ID +Unique\ ID\ of\ system\ that\ this\ configuration\ applies\ to.\nCan\ include\ a\ trailing\ wildcard\ '*'\ to\ match\ several\ systems\ at\ once.=\u6b64\u914d\u7f6e\u9069\u7528\u7684\u7cfb\u7d71\u7684\u552f\u4e00 ID\u3002\n\u53ef\u4ee5\u5305\u542b\u5c3e\u96a8\u901a\u914d\u7b26\u201c*\u201d\u4ee5\u540c\u6642\u5339\u914d\u591a\u500b\u7cfb\u7d71\u3002 +Use\ WebSockets\ for\ SOS=\u4f7f\u7528 WebSocket \u9032\u884c SOS +Use\ WebSockets\ for\ SPS=\u4f7f\u7528 WebSocket \u9032\u884c SPS + +Node\ ID=\u7bc0\u9ede\u865f +Stats\ Frequency\ (min)=\u7d71\u8a08\u983b\u7387\uff08\u5206\u9418\uff09 +Database\ URL=\u8cc7\u6599\u5eab\u7db2\u5740 +Database\ Name=\u8cc7\u6599\u5eab\u540d\u7a31 +ID\ Generator=ID\u7522\u751f\u5668 +Database\ Number=\u8cc7\u6599\u5eab\u7de8\u865f +Remote\ Host=\u9060\u7aef\u4e3b\u6a5f +Remote\ Port=\u9060\u7aef\u57e0 +Lane\ Width\ (m)=\u8eca\u9053\u5bec\u5ea6\uff08\u516c\u5c3a\uff09 +Enable\ EML\ Analysis=\u555f\u7528 EML \u5206\u6790 +Is\ Collimated=\u5df2\u6e96\u76f4 +Stream\ Path=\u6d41\u8def\u5f91 +Lane\ Options\ Config=\u8eca\u9053\u9078\u9805\u914d\u7f6e diff --git a/sensorhub-webui-core/src/main/resources/org/sensorhub/ui/i18n/messages_zh_CN.properties b/sensorhub-webui-core/src/main/resources/org/sensorhub/ui/i18n/messages_zh_CN.properties new file mode 100644 index 0000000000..79d1f76d35 --- /dev/null +++ b/sensorhub-webui-core/src/main/resources/org/sensorhub/ui/i18n/messages_zh_CN.properties @@ -0,0 +1,543 @@ +app.title=\u5f00\u653e\u4f20\u611f\u5668\u4e2d\u5fc3 +tab.sensors=\u4f20\u611f\u5668 +tab.databases=\u6570\u636e\u5e93 +tab.processing=\u5904\u7406 +tab.services=\u670d\u52a1 +tab.clients=\u5ba2\u6237\u7aef +tab.network=\u7f51\u7edc +tab.security=\u5b89\u5168 +action.shutdown=\u5173\u673a +action.logout=\u6ce8\u9500 +action.save=\u4fdd\u5b58 +action.addModule=\u6dfb\u52a0\u65b0\u6a21\u5757 +action.addSubmodule=\u6dfb\u52a0\u5b50\u6a21\u5757 +action.removeModule=\u79fb\u9664\u6a21\u5757 +action.removeSubmodule=\u79fb\u9664\u5b50\u6a21\u5757 +action.start=\u542f\u52a8 +action.stop=\u505c\u6b62 +action.restart=\u91cd\u542f +action.forceInit=\u5f3a\u5236\u521d\u59cb\u5316 +action.selectAll=\u5168\u9009 +action.deselectAll=\u53d6\u6d88\u5168\u9009 +dialog.shutdown.title=\u5173\u673a\u5df2\u542f\u52a8... +dialog.shutdown.message=\u7528\u6237\u754c\u9762\u5c06\u505c\u6b62\u54cd\u5e94 +dialog.shutdown.confirm=\u60a8\u786e\u5b9a\u8981\u5173\u95ed\u4f20\u611f\u5668\u4e2d\u5fc3\u5417\uff1f +dialog.logout.confirm=\u60a8\u786e\u5b9a\u8981\u6ce8\u9500\u5417\uff1f +dialog.save.confirm=\u60a8\u786e\u5b9a\u8981\u4fdd\u5b58\u914d\u7f6e\uff08\u5e76\u8986\u76d6\u4e4b\u524d\u7684\u914d\u7f6e\uff09\u5417\uff1f +msg.configSaved=SensorHub \u914d\u7f6e\u5df2\u4fdd\u5b58 +msg.configSaveError=\u65e0\u6cd5\u4fdd\u5b58\u914d\u7f6e +dialog.remove.confirm=\u60a8\u786e\u5b9a\u8981\u79fb\u9664 {0} \u5417\uff1f
\u6240\u6709\u8bbe\u7f6e\u5c06\u4e22\u5931\u3002 +msg.removeError=\u65e0\u6cd5\u79fb\u9664 {0} +msg.startError=\u65e0\u6cd5\u542f\u52a8 {0} +msg.stopError=\u65e0\u6cd5\u505c\u6b62 {0} +msg.restartError=\u65e0\u6cd5\u91cd\u542f {0} +msg.reinitError=\u65e0\u6cd5\u91cd\u65b0\u521d\u59cb\u5316 {0} +msg.loadError=\u65e0\u6cd5\u52a0\u8f7d\u6a21\u5757 +msg.addSubmoduleError=\u65e0\u6cd5\u6dfb\u52a0\u5b50\u6a21\u5757 +about.title=\u5173\u4e8e OpenSensorHub +about.desc=\u7528\u4e8e\u6784\u5efa\u667a\u80fd\u4f20\u611f\u5668\u7f51\u7edc\u548c\u7269\u8054\u7f51\u7684\u8f6f\u4ef6\u5e73\u53f0 +about.license=\u6839\u636e Mozilla Public License v2.0 \u6388\u6743 +about.version=\u7248\u672c\uff1a +about.build=\u6784\u5efa\u53f7\uff1a +about.deployment=\u90e8\u7f72\u540d\u79f0\uff1a +tooltip.shutdown=\u5173\u95ed SensorHub +tooltip.logout=\u4ece OSH \u8282\u70b9\u6ce8\u9500 +tooltip.save=\u4fdd\u5b58 SensorHub \u914d\u7f6e +dialog.start.confirm=\u60a8\u786e\u5b9a\u8981\u542f\u52a8 {0} \u5417\uff1f +dialog.stop.confirm=\u60a8\u786e\u5b9a\u8981\u505c\u6b62 {0} \u5417\uff1f +dialog.restart.confirm=\u60a8\u786e\u5b9a\u8981\u91cd\u542f {0} \u5417\uff1f +dialog.reinit.confirm=\u60a8\u786e\u5b9a\u8981\u5f3a\u5236\u91cd\u65b0\u521d\u59cb\u5316 {0} \u5417\uff1f +backgroundUpdate=\u540e\u53f0\u66f4\u65b0 +sigmaThreshold=\u897f\u683c\u739b\u9608\u503c +nuclideIdentification=\u6838\u7d20\u8bc6\u522b +tamperAlarm=\u9632\u7be1\u6539\u62a5\u8b66 +occupancySensor=\u5360\u7528\u4f20\u611f\u5668 +stateOfHealth=\u5065\u5eb7\u72b6\u51b5 +soh=\u809d\u786c\u5316 +1ScanThisQrCodeWithYourAuthenticatorApp=1. \u4f7f\u7528\u60a8\u7684\u8eab\u4efd\u9a8c\u8bc1\u5668\u5e94\u7528\u7a0b\u5e8f\u626b\u63cf\u6b64\u4e8c\u7ef4\u7801\uff1a +2EnterThe6digitCodeGeneratedByTheApp=2. \u8f93\u5165\u5e94\u7528\u751f\u6210\u76846\u4f4d\u4ee3\u7801\uff1a +orEnterThisSecretKeyManually=\u6216\u8005\u624b\u52a8\u8f93\u5165\u6b64\u5bc6\u94a5\uff1a +loadingBundlesInformation=\u6b63\u5728\u52a0\u8f7d\u6346\u7ed1\u5305\u4fe1\u606f... +loadingPackageInformation=\u6b63\u5728\u52a0\u8f7d\u5305\u4fe1\u606f... +arrayComponentNotSupported=\u4e0d\u652f\u6301\u6570\u7ec4\u7ec4\u4ef6 +twofactorAuthentication=\u53cc\u56e0\u7d20\u8eab\u4efd\u9a8c\u8bc1 +installMorePackages=\u5b89\u88c5\u66f4\u591a\u8f6f\u4ef6\u5305... +errorGeneratingQrCode=\u751f\u6210\u4e8c\u7ef4\u7801\u65f6\u51fa\u9519 +installMoreModules=\u5b89\u88c5\u66f4\u591a\u6a21\u5757... +detailedInstructions=\u8be6\u7ec6\u8bf4\u660e +availableNetworks=\u53ef\u7528\u7f51\u7edc +processParameters=\u5de5\u827a\u53c2\u6570 +verifyAndEnable=\u9a8c\u8bc1\u5e76\u542f\u7528 +dataSourceInfo=\u6570\u636e\u6e90\u4fe1\u606f +detectedDevices=\u68c0\u6d4b\u5230\u7684\u8bbe\u5907 +installSelected=\u5b89\u88c5\u9009\u5b9a\u7684 +databaseContent=\u6570\u636e\u5e93\u5185\u5bb9 +itemsPerPage=\u6bcf\u9875\u9879\u76ee\uff1a +commandInputs=\u547d\u4ee4\u8f93\u5165 +processInputs=\u8fc7\u7a0b\u8f93\u5165 +providerClass=\u63d0\u4f9b\u8005\u7c7b\u522b +processName=\u6d41\u7a0b\u540d\u79f0\uff1a +configuration=\u914d\u7f6e +applyChanges=\u5e94\u7528\u66f4\u6539 +sendCommand=\u53d1\u9001\u547d\u4ee4 +useAddress=\u4f7f\u7528\u5730\u5740 +selectNone=\u9009\u62e9\u65e0 +timeRange=\u65f6\u95f4\u8303\u56f4\uff1a +permissions=\u6743\u9650 +startScan=\u5f00\u59cb\u626b\u63cf +noReadme=\u6ca1\u6709\u81ea\u8ff0\u6587\u4ef6 +stopScan=\u505c\u6b62\u626b\u63cf +reset2fa=\u91cd\u7f6e2FA +previous=\u4ee5\u524d\u7684 +useName=\u4f7f\u7528\u540d\u79f0 +outputs=\u8f93\u51fa +refresh=\u5237\u65b0 +modify=\u8c03\u6574 +cancel=\u53d6\u6d88 +logout=\u9000\u51fa +remove=\u6d88\u9664 +verify=\u6838\u5b9e +first=\u7b2c\u4e00\u7684 +login=\u767b\u5f55 +last=\u6700\u540e\u7684 +view=\u770b\u6cd5 +next=\u4e0b\u4e00\u4e2a +stop=\u505c\u6b62 +add=\u6dfb\u52a0 +ui.empty=< +ok=\u597d\u7684 +1ScanThisQrCodeWithYourAuthenticatorApp1=1. \u4f7f\u7528\u60a8\u7684\u8eab\u4efd\u9a8c\u8bc1\u5668\u5e94\u7528\u7a0b\u5e8f\u626b\u63cf\u6b64\u4e8c\u7ef4\u7801\uff1a +2EnterThe6digitCodeGeneratedByTheApp1=2. \u8f93\u5165\u5e94\u7528\u751f\u6210\u76846\u4f4d\u4ee3\u7801\uff1a +orEnterThisSecretKeyManually1=\u6216\u8005\u624b\u52a8\u8f93\u5165\u6b64\u5bc6\u94a5\uff1a +loadingPackageInformation1=\u6b63\u5728\u52a0\u8f7d\u5305\u4fe1\u606f... +loadingBundlesInformation1=\u6b63\u5728\u52a0\u8f7d\u6346\u7ed1\u5305\u4fe1\u606f... +arrayComponentNotSupported1=\u4e0d\u652f\u6301\u6570\u7ec4\u7ec4\u4ef6 +twofactorAuthentication1=\u53cc\u56e0\u7d20\u8eab\u4efd\u9a8c\u8bc1 +errorGeneratingQrCode1=\u751f\u6210\u4e8c\u7ef4\u7801\u65f6\u51fa\u9519 +installMorePackages1=\u5b89\u88c5\u66f4\u591a\u8f6f\u4ef6\u5305... +installMoreModules1=\u5b89\u88c5\u66f4\u591a\u6a21\u5757... +detailedInstructions1=\u8be6\u7ec6\u8bf4\u660e +processParameters1=\u5de5\u827a\u53c2\u6570 +availableNetworks1=\u53ef\u7528\u7f51\u7edc +verifyAndEnable1=\u9a8c\u8bc1\u5e76\u542f\u7528 +databaseContent1=\u6570\u636e\u5e93\u5185\u5bb9 +installSelected1=\u5b89\u88c5\u9009\u5b9a\u7684 +dataSourceInfo1=\u6570\u636e\u6e90\u4fe1\u606f +detectedDevices1=\u68c0\u6d4b\u5230\u7684\u8bbe\u5907 +itemsPerPage1=\u6bcf\u9875\u9879\u76ee\uff1a +processInputs1=\u8fc7\u7a0b\u8f93\u5165 +commandInputs1=\u547d\u4ee4\u8f93\u5165 +providerClass1=\u63d0\u4f9b\u8005\u7c7b\u522b +configuration1=\u914d\u7f6e +processName1=\u6d41\u7a0b\u540d\u79f0\uff1a +applyChanges1=\u5e94\u7528\u66f4\u6539 +sendCommand1=\u53d1\u9001\u547d\u4ee4 +timeRange1=\u65f6\u95f4\u8303\u56f4\uff1a +useAddress1=\u4f7f\u7528\u5730\u5740 +permissions1=\u6743\u9650 +selectNone1=\u9009\u62e9\u65e0 +startScan1=\u5f00\u59cb\u626b\u63cf +noReadme1=\u6ca1\u6709\u81ea\u8ff0\u6587\u4ef6 +reset2fa1=\u91cd\u7f6e2FA +stopScan1=\u505c\u6b62\u626b\u63cf +useName1=\u4f7f\u7528\u540d\u79f0 +previous1=\u4ee5\u524d\u7684 +refresh1=\u5237\u65b0 +outputs1=\u8f93\u51fa +cancel1=\u53d6\u6d88 +logout1=\u9000\u51fa +modify1=\u8c03\u6574 +remove1=\u6d88\u9664 +verify1=\u6838\u5b9e +first1=\u7b2c\u4e00\u7684 +login1=\u767b\u5f55 +view1=\u770b\u6cd5 +stop1=\u505c\u6b62 +next1=\u4e0b\u4e00\u4e2a +last1=\u6700\u540e\u7684 +add1=\u6dfb\u52a0 +last2=>> +first2=<< +ok1=\u597d\u7684 +next2=> +previous2=< + +pleaseEnterAUserIDFirst1=\u8bf7\u5148\u8f93\u5165\u7528\u6237ID +reset2FA1=\u91cd\u7f6e2FA +enable2FA1=\u542f\u7528 2FA +twoFAEnabledSuccessfully1=2FA \u5df2\u6210\u529f\u542f\u7528 +invalidCode1=\u65e0\u6548\u4ee3\u7801 +allowedAndDeniedPermissionsForUsersWithThisRole1=\u5177\u6709\u6b64\u89d2\u8272\u7684\u7528\u6237\u5141\u8bb8\u548c\u62d2\u7edd\u7684\u6743\u9650 +manualEntry1=\u624b\u52a8\u8f93\u5165 +toggleAutoRefreshDataOncePerSecond1=\u6bcf\u79d2\u81ea\u52a8\u5237\u65b0\u4e00\u6b21\u6570\u636e +lookupSystem1=\u67e5\u8be2\u7cfb\u7edf +lookupModule1=\u67e5\u627e\u6a21\u5757 +lookupAddress1=\u67e5\u627e\u5730\u5740 +showPassword1=\u663e\u793a\u5bc6\u7801 +showHistogram1=\u663e\u793a\u76f4\u65b9\u56fe +hideHistogram1=\u9690\u85cf\u76f4\u65b9\u56fe +reloadDataFromDatabase1=\u4ece\u6570\u636e\u5e93\u91cd\u65b0\u52a0\u8f7d\u6570\u636e +fois1=\u4fe1\u606f\u81ea\u7531\u6cd5 +username1=\u7528\u6237\u540d +password1=\u5bc6\u7801 +loginFailed1=\u767b\u5f55\u5931\u8d25 +invalidUsernameOrPassword1=\u7528\u6237\u540d\u6216\u5bc6\u7801\u65e0\u6548 +verificationCode1=\u9a8c\u8bc1\u7801 +verificationFailed1=\u9a8c\u8bc1\u5931\u8d25 +datasource1=\u6570\u636e\u6e90 +process1=\u8fc7\u7a0b +logoutFromOshNode1=\u4ece OSH \u8282\u70b9\u6ce8\u9500 +setParameter1=\u8bbe\u7f6e\u53c2\u6570 +setupTwoFactorAuthentication1=\u8bbe\u7f6e\u53cc\u56e0\u7d20\u8eab\u4efd\u9a8c\u8bc1 + +action.new_item=\u65b0{0} +Lane\ System=\u8f66\u9053\u7cfb\u7edf +Module\ Class=\u6a21\u5757\u7c7b +Module\ Name=\u6a21\u5757\u540d\u79f0 +Module\ ID=\u6a21\u5757\u7f16\u53f7 +Description=\u63cf\u8ff0 +SensorML\ URL=\u4f20\u611f\u5668ML URL +UniqueID=\u552f\u4e00ID +Last\ Updated=\u6700\u540e\u66f4\u65b0 +Auto\ Start=\u81ea\u52a8\u542f\u52a8 +Delete\ Data\ on\ Lane\ Removal=\u5220\u9664\u8f66\u9053\u79fb\u9664\u6570\u636e +Latitude=\u7eac\u5ea6 +Longitude=\u7ecf\u5ea6 +Altitude=\u9ad8\u5ea6 +Initial\ RPM\ Config=\u521d\u59cb\u8f6c\u901f\u914d\u7f6e +Initial\ Camera\ Config=\u521d\u59cb\u76f8\u673a\u914d\u7f6e +Lane\ Options\ Config=\u8f66\u9053\u9009\u9879\u914d\u7f6e +tab.general=\u4e00\u822c\u7684 +tab.readme=\u81ea\u8ff0\u6587\u4ef6 +Fixed\ Location=\u56fa\u5b9a\u5730\u70b9 +Fixed\ Orientation=\u56fa\u5b9a\u65b9\u5411 +# Auto-extracted DisplayInfo labels and descriptions +URL\ of\ SensorML\ file\ providing\ the\ base\ description\ of\ the\ sensor=\u63d0\u4f9b\u4f20\u611f\u5668\u57fa\u672c\u63cf\u8ff0\u7684 SensorML \u6587\u4ef6\u7684 URL +Time\ at\ which\ the\ SensorML\ description\ was\ last\ updated=SensorML \u63cf\u8ff0\u4e0a\u6b21\u66f4\u65b0\u7684\u65f6\u95f4 +Geodetic\ latitude,\ in\ degrees=\u5927\u5730\u7eac\u5ea6\uff0c\u4ee5\u5ea6\u4e3a\u5355\u4f4d +Longitude,\ in\ degrees=\u7ecf\u5ea6\uff0c\u4ee5\u5ea6\u4e3a\u5355\u4f4d +Height\ above\ ellipsoid,\ in\ meters=\u692d\u7403\u4e0a\u65b9\u7684\u9ad8\u5ea6\uff0c\u4ee5\u7c73\u4e3a\u5355\u4f4d +X\ coordinate,\ in\ meters=X \u5750\u6807\uff0c\u5355\u4f4d\uff1a\u7c73 +Y\ coordinate,\ in\ meters=Y \u5750\u6807\uff0c\u4ee5\u7c73\u4e3a\u5355\u4f4d +Z\ coordinate,\ in\ meters=Z \u5750\u6807\uff0c\u4ee5\u7c73\u4e3a\u5355\u4f4d +Pitch\ angle\ about\ Y\ axis,\ in\ degrees=\u7ed5 Y \u8f74\u7684\u4fef\u4ef0\u89d2\uff0c\u4ee5\u5ea6\u4e3a\u5355\u4f4d +Roll\ angle\ about\ X\ axis,\ in\ degrees=\u7ed5 X \u8f74\u7684\u6eda\u52a8\u89d2\uff0c\u4ee5\u5ea6\u4e3a\u5355\u4f4d +Location\ in\ EPSG\:4979\ coordinate\ reference\ frame=EPSG \u4e2d\u7684\u4f4d\u7f6e\uff1a4979 \u5750\u6807\u53c2\u8003\u7cfb +Database\ Number=\u6570\u636e\u5e93\u7f16\u53f7 +Numerical\ identifier\ of\ the\ database.\ Each\ database\ that\ should\ be\ exposed\ via\ the\ federated\ database\ API\ must\ have\ a\ unique\ number\ on\ the\ sensor\ hub.\ If\ visibility\ through\ the\ federated\ database\ is\ not\ desired,\ it\ can\ be\ omitted.=\u6570\u636e\u5e93\u7684\u6570\u5b57\u6807\u8bc6\u7b26\u3002\u5e94\u901a\u8fc7\u8054\u5408\u6570\u636e\u5e93 API \u516c\u5f00\u7684\u6bcf\u4e2a\u6570\u636e\u5e93\u5fc5\u987b\u5728\u4f20\u611f\u5668\u96c6\u7ebf\u5668\u4e0a\u5177\u6709\u552f\u4e00\u7684\u7f16\u53f7\u3002\u5982\u679c\u4e0d\u9700\u8981\u901a\u8fc7\u8054\u5408\u6570\u636e\u5e93\u53ef\u89c1\uff0c\u5219\u53ef\u4ee5\u7701\u7565\u3002 +Enables\ fine-grained\ permission-based\ access\ control\ for\ this\ module=\u5bf9\u6b64\u6a21\u5757\u542f\u7528\u57fa\u4e8e\u6743\u9650\u7684\u7ec6\u7c92\u5ea6\u8bbf\u95ee\u63a7\u5236 +Require\ Authentication=\u9700\u8981\u8eab\u4efd\u9a8c\u8bc1 +Set\ to\ require\ remote\ users\ to\ be\ authentified\ before\ they\ can\ use\ this\ service=\u8bbe\u7f6e\u4e3a\u8981\u6c42\u8fdc\u7a0b\u7528\u6237\u5728\u4f7f\u7528\u6b64\u670d\u52a1\u4e4b\u524d\u8fdb\u884c\u8eab\u4efd\u9a8c\u8bc1 +Endpoint=\u7aef\u70b9 +Unique\ local\ ID\ of\ the\ module=\u6a21\u5757\u672c\u5730\u552f\u4e00ID +User\ description\ for\ the\ module=\u6a21\u5757\u7684\u7528\u6237\u63cf\u8ff0 +Set\ to\ automatically\ start\ the\ module\ when\ it\ is\ loaded=\u8bbe\u7f6e\u6a21\u5757\u52a0\u8f7d\u65f6\u81ea\u52a8\u542f\u52a8 +Module\ implementation\ class=\u6a21\u5757\u5b9e\u73b0\u7c7b +User\ chosen\ name\ for\ the\ module=\u7528\u6237\u4e3a\u6a21\u5757\u9009\u62e9\u7684\u540d\u79f0 +Name\ of\ topic/queue\ to\ use=\u8981\u4f7f\u7528\u7684\u4e3b\u9898/\u961f\u5217\u7684\u540d\u79f0 +Enable/disable\ writing\ to\ queue=\u542f\u7528/\u7981\u7528\u5199\u5165\u961f\u5217 +Enable/disable\ reading\ from\ queue=\u542f\u7528/\u7981\u7528\u4ece\u961f\u5217\u8bfb\u53d6 +Protocol\ Options=\u534f\u8bae\u9009\u9879 +Common\ Configuration=\u901a\u7528\u914d\u7f6e +Common\ configuration\ for\ sensors\ in\ the\ array=\u9635\u5217\u4e2d\u4f20\u611f\u5668\u7684\u901a\u7528\u914d\u7f6e +Sensors\ Configuration=\u4f20\u611f\u5668\u914d\u7f6e +Subsystem\ Config=\u5b50\u7cfb\u7edf\u914d\u7f6e +Configuration\ of\ the\ subsystem=\u5b50\u7cfb\u7edf\u7684\u914d\u7f6e +Relative\ Location=\u76f8\u5bf9\u4f4d\u7f6e +Location\ of\ this\ subsystem\ relative\ to\ the\ main\ system\ or\ platform\ reference\ frame=\u8be5\u5b50\u7cfb\u7edf\u76f8\u5bf9\u4e8e\u4e3b\u7cfb\u7edf\u6216\u5e73\u53f0\u53c2\u8003\u7cfb\u7684\u4f4d\u7f6e +Relative\ Orientation=\u76f8\u5bf9\u65b9\u5411 +Orientation\ of\ this\ subsystem\ relative\ to\ the\ main\ system\ or\ platform\ reference\ frame=\u8be5\u5b50\u7cfb\u7edf\u76f8\u5bf9\u4e8e\u4e3b\u7cfb\u7edf\u6216\u5e73\u53f0\u53c2\u8003\u7cfb\u7684\u65b9\u5411 +Fixed\ system\ orientation\ in\ the\ local\ NED\ reference\ frame=\u4fee\u590d\u4e86\u672c\u5730 NED \u53c2\u8003\u7cfb\u4e2d\u7684\u7cfb\u7edf\u65b9\u5411 +Subsystems=\u5b50\u7cfb\u7edf +Configuration\ of\ components\ of\ this\ sensor\ system=\u8be5\u4f20\u611f\u5668\u7cfb\u7edf\u7684\u7ec4\u4ef6\u914d\u7f6e +Database\ Config=\u6570\u636e\u5e93\u914d\u7f6e +Configuration\ of\ underlying\ database=\u5e95\u5c42\u6570\u636e\u5e93\u914d\u7f6e +System\ UIDs=\u7cfb\u7edf UID +Unique\ IDs\ of\ system\ drivers\ handled\ by\ this\ database=\u8be5\u6570\u636e\u5e93\u5904\u7406\u7684\u7cfb\u7edf\u9a71\u52a8\u7a0b\u5e8f\u7684\u552f\u4e00 ID +Automatic\ Purge\ Policy=\u81ea\u52a8\u6e05\u9664\u7b56\u7565 +Policy\ for\ automatically\ purging\ historical\ data=\u81ea\u52a8\u6e05\u9664\u5386\u53f2\u6570\u636e\u7684\u7b56\u7565 +Uncheck\ to\ disable\ auto-purge\ temporarily=\u53d6\u6d88\u9009\u4e2d\u4ee5\u6682\u65f6\u7981\u7528\u81ea\u52a8\u6e05\u9664 +Purge\ Execution\ Period=\u6e05\u9664\u6267\u884c\u671f +Unique\ IDs\ of\ system\ drivers\ to\ purge=\u8981\u6e05\u9664\u7684\u7cfb\u7edf\u9a71\u52a8\u7a0b\u5e8f\u7684\u552f\u4e00 ID +Max\ Record\ Age=\u6700\u5927\u8bb0\u5f55\u5e74\u9f84 +SensorML\ File=SensorML \u6587\u4ef6 +Path\ of\ SensorML\ description\ of\ the\ process=SensorML\u6d41\u7a0b\u63cf\u8ff0\u7684\u8def\u5f84 +List\ of\ users\ allowed\ access\ to\ this\ system=\u5141\u8bb8\u8bbf\u95ee\u8be5\u7cfb\u7edf\u7684\u7528\u6237\u5217\u8868 +List\ of\ security\ roles=\u5b89\u5168\u89d2\u8272\u5217\u8868 +User\ ID=\u7528\u6237\u8eab\u4efd +Role\ ID=\u89d2\u8272ID +Source\ Database\ ID=\u6e90\u6570\u636e\u5e93ID +ID\ of\ database\ module\ to\ read\ data\ from\ (Federated\ database\ will\ be\ used\ if\ not\ set=\u4ece\u4e2d\u8bfb\u53d6\u6570\u636e\u7684\u6570\u636e\u5e93\u6a21\u5757ID\uff08\u5982\u679c\u4e0d\u8bbe\u7f6e\u5c06\u4f7f\u7528\u8054\u5408\u6570\u636e\u5e93 +HTTP\ Port=HTTP \u7aef\u53e3 +HTTPS\ Port=HTTPS \u7aef\u53e3 +Root\ URL\ where\ static\ web\ content\ will\ be\ served.=\u5c06\u5728\u5176\u4e2d\u63d0\u4f9b\u9759\u6001 Web \u5185\u5bb9\u7684\u6839 URL\u3002 +Directory\ where\ static\ web\ content\ is\ located.=\u9759\u6001\u7f51\u9875\u5185\u5bb9\u6240\u5728\u7684\u76ee\u5f55\u3002 +Root\ URL\ where\ the\ server\ will\ accept\ requests.\ This\ will\ be\ the\ prefix\ to\ all\ servlet\ URLs.=\u670d\u52a1\u5668\u5c06\u63a5\u53d7\u8bf7\u6c42\u7684\u6839 URL\u3002\u8fd9\u5c06\u662f\u6240\u6709 servlet URL \u7684\u524d\u7f00\u3002 +Proxy\ Base\ URL=\u4ee3\u7406\u57fa\u672c URL +Public\ URL\ as\ viewed\ from\ the\ outside\ when\ requests\ transit\ through\ a\ proxy\ server.=\u5f53\u8bf7\u6c42\u901a\u8fc7\u4ee3\u7406\u670d\u52a1\u5668\u4f20\u8f93\u65f6\u4ece\u5916\u90e8\u67e5\u770b\u7684\u516c\u5171 URL\u3002 +Authentication\ Method=\u8ba4\u8bc1\u65b9\u5f0f +Method\ used\ to\ authenticate\ users\ on\ this\ server=\u7528\u4e8e\u9a8c\u8bc1\u6b64\u670d\u52a1\u5668\u4e0a\u7684\u7528\u6237\u7684\u65b9\u6cd5 +Path\ to\ a\ key\ store\ containing\ the\ certificate\ and\ keypair\ that\ this\ server\ will\ present\ to\ clients\ when\ accessed\ over\ HTTPS.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ \"javax.net.ssl.keyStore\"\ system\ property.\=Path to a key store containing the certificate and keypair that this server will present to clients when accessed over HTTPS. If this value is blank, will default to using the value of the \"javax.net.ssl.keyStore\" system property. +Alias\ for\ the\ public/private\ keypair\ within\ the\ key\ store\ that\ will\ be\ used\ to\ identify\ this\ server.=\u5bc6\u94a5\u5b58\u50a8\u4e2d\u7528\u4e8e\u8bc6\u522b\u8be5\u670d\u52a1\u5668\u7684\u516c\u94a5/\u79c1\u94a5\u5bf9\u7684\u522b\u540d\u3002 +Path\ to\ the\ TLS\ trust\ store\ that\ is\ used\ when\ client\ authentication\ is\ required.\ Ignored\ if\ client\ certificate\ authentication\ is\ not\ used.\ Certificates\ in\ this\ file\ designate\ the\ signing\ authorities\ for\ client\ certificates\ that\ will\ be\ trusted.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ \"javax.net.ssl.trustStore\"\ system\ property.\=Path to the TLS trust store that is used when client authentication is required. Ignored if client certificate authentication is not used. Certificates in this file designate the signing authorities for client certificates that will be trusted. If this value is blank, will default to using the value of the \"javax.net.ssl.trustStore\" system property. +Password\ for\ the\ trust\ store.\ Ignored\ if\ client\ certificate\ authentication\ is\ not\ used.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ \"javax.net.ssl.trustStorePassword\"\ system\ property.\=Password for the trust store. Ignored if client certificate authentication is not used. If this value is blank, will default to using the value of the \"javax.net.ssl.trustStorePassword\" system property. +Enable\ CORS=\u542f\u7528\u8de8\u57df\u8d44\u6e90\u5171\u4eab +Enable\ generation\ of\ CORS\ headers\ to\ allow\ cross-domain\ requests\ from\ browsers=\u542f\u7528 CORS \u6807\u5934\u7684\u751f\u6210\u4ee5\u5141\u8bb8\u6765\u81ea\u6d4f\u89c8\u5668\u7684\u8de8\u57df\u8bf7\u6c42 +Capabilities\ Info=\u80fd\u529b\u4fe1\u606f +Information\ included\ in\ the\ service\ capabilities\ document=\u670d\u52a1\u80fd\u529b\u6587\u6863\u4e2d\u5305\u542b\u7684\u4fe1\u606f +Enable\ HTTP\ GET=\u542f\u7528 HTTP GET +Enables/disables\ HTTP\ GET\ bindings\ on\ operations\ that\ support\ it=\u5728\u652f\u6301\u5b83\u7684\u64cd\u4f5c\u4e0a\u542f\u7528/\u7981\u7528 HTTP GET \u7ed1\u5b9a +Enable\ HTTP\ POST=\u542f\u7528 HTTP POST +Enables/disables\ HTTP\ POST\ bindings\ on\ operations\ that\ support\ it=\u5728\u652f\u6301\u5b83\u7684\u64cd\u4f5c\u4e0a\u542f\u7528/\u7981\u7528 HTTP POST \u7ed1\u5b9a +Enable\ HTTP\ SOAP=\u542f\u7528 HTTP SOAP +Enables/disables\ HTTP\ SOAP\ bindings\ on\ operations\ that\ support\ it=\u5728\u652f\u6301\u5b83\u7684\u64cd\u4f5c\u4e0a\u542f\u7528/\u7981\u7528 HTTP SOAP \u7ed1\u5b9a +Connection\ Timeout=\u8fde\u63a5\u8d85\u65f6 +Reconnect\ Period=\u91cd\u8fde\u671f +Max\ Reconnect\ Attempts=\u6700\u5927\u91cd\u65b0\u8fde\u63a5\u5c1d\u8bd5\u6b21\u6570 +Maximum\ number\ of\ times\ the\ client\ will\ attempt\ to\ reconnect\ when\ the\ connection\ is\ not\ available\ or\ lost.\ A\ negative\ value\ means\ that\ there\ is\ no\ limit\ to\ the\ number\ of\ reconnection\ attempts.\ Zero\ means\ not\ to\ attempt\ reconnection.=\u8fde\u63a5\u4e0d\u53ef\u7528\u6216\u4e22\u5931\u65f6\u5ba2\u6237\u7aef\u5c1d\u8bd5\u91cd\u65b0\u8fde\u63a5\u7684\u6700\u5927\u6b21\u6570\u3002\u8d1f\u503c\u610f\u5473\u7740\u91cd\u65b0\u8fde\u63a5\u5c1d\u8bd5\u7684\u6b21\u6570\u6ca1\u6709\u9650\u5236\u3002\u96f6\u610f\u5473\u7740\u4e0d\u5c1d\u8bd5\u91cd\u65b0\u8fde\u63a5\u3002 +IP\ or\ DNS\ name\ of\ remote\ host=\u8fdc\u7a0b\u4e3b\u673a\u7684 IP \u6216 DNS \u540d\u79f0 +IP\ of\ local\ network\ interface\ to\ bind\ to\ or\ 'AUTO'\ to\ select\ it\ automatically=\u8981\u7ed1\u5b9a\u7684\u672c\u5730\u7f51\u7edc\u63a5\u53e3\u7684 IP \u6216\u201cAUTO\u201d\u81ea\u52a8\u9009\u62e9\u5b83 +Connection\ Options=\u8fde\u63a5\u9009\u9879 +Serial\ port\ device\ name.\ Usually\ something\ like\ /dev/ttyXXX\ on\ Linux=\u4e32\u53e3\u8bbe\u5907\u540d\u79f0\u3002\u901a\u5e38\u7c7b\u4f3c\u4e8e Linux \u4e0a\u7684 /dev/ttyXXX +Minimum\ number\ of\ bytes\ to\ receive\ before\ they\ are\ sent\ to\ the\ caller=\u5728\u53d1\u9001\u7ed9\u8c03\u7528\u8005\u4e4b\u524d\u63a5\u6536\u7684\u6700\u5c0f\u5b57\u8282\u6570 +Local\ port\ number\ to\ use\ on\ the\ local\ host=\u5728\u672c\u5730\u4e3b\u673a\u4e0a\u4f7f\u7528\u7684\u672c\u5730\u7aef\u53e3\u53f7 +Physical\ address\ of\ Bluetooth\ device\ to\ connect\ to=\u8981\u8fde\u63a5\u7684\u84dd\u7259\u8bbe\u5907\u7684\u7269\u7406\u5730\u5740 +Port\ number\ to\ connect\ to\ on\ remote\ host=\u8fde\u63a5\u5230\u8fdc\u7a0b\u4e3b\u673a\u7684\u7aef\u53e3\u53f7 +User\ Name=\u7528\u6237\u540d +Remote\ user\ name=\u8fdc\u7a0b\u7528\u6237\u540d +Password=\u5bc6\u7801 +Remote\ password=\u8fdc\u7a0b\u5bc6\u7801 +Secure\ communications\ with\ SSL/TLS=\u4f7f\u7528 SSL/TLS \u8fdb\u884c\u5b89\u5168\u901a\u4fe1 +Enable\ to\ check\ if\ remote\ host\ is\ reachable\ before\ attempting\ further\ operations=\u542f\u7528\u4ee5\u5728\u5c1d\u8bd5\u8fdb\u4e00\u6b65\u64cd\u4f5c\u4e4b\u524d\u68c0\u67e5\u8fdc\u7a0b\u4e3b\u673a\u662f\u5426\u53ef\u8bbf\u95ee +Path\ or\ resource\ or\ service\ relative\ to\ server\ root=\u76f8\u5bf9\u4e8e\u670d\u52a1\u5668\u6839\u7684\u8def\u5f84\u6216\u8d44\u6e90\u6216\u670d\u52a1 +Unique\ ID\ of\ system\ group=\u7cfb\u7edf\u7ec4\u552f\u4e00ID +Name\ of\ system\ group=\u7cfb\u7edf\u7ec4\u540d\u79f0 +Description\ of\ system\ group=\u7cfb\u7edf\u7ec4\u8bf4\u660e +List\ of\ bundle\ repository\ URLs=\u6346\u7ed1\u5305\u5b58\u50a8\u5e93 URL \u5217\u8868 +A\ human\ readable\ friendly\ identifier\ for\ the\ deployment=\u7528\u4e8e\u90e8\u7f72\u7684\u4eba\u7c7b\u53ef\u8bfb\u7684\u53cb\u597d\u6807\u8bc6\u7b26 +Enable\ Landing\ Page=\u542f\u7528\u767b\u9646\u9875\u9762 +Enable\ Landing\ Servlet\ to\ redirect\ users\ to\ landing\ page=\u542f\u7528 Landing Servlet \u5c06\u7528\u6237\u91cd\u5b9a\u5411\u5230\u767b\u9646\u9875\u9762 +Config\ Class=\u914d\u7f6e\u7c7b +Type\ of\ module\ config\ class\ for\ which\ a\ custom\ panel\ must\ be\ generated=\u5fc5\u987b\u4e3a\u5176\u751f\u6210\u81ea\u5b9a\u4e49\u9762\u677f\u7684\u6a21\u5757\u914d\u7f6e\u7c7b\u7684\u7c7b\u578b +UI\ Class=\u7528\u6237\u754c\u9762\u7c7b +Fully\ qualified\ name\ of\ class\ implementing\ IModuleAdminPanel=\u5b9e\u73b0 IModuleAdminPanel \u7684\u7c7b\u7684\u5b8c\u5168\u9650\u5b9a\u540d\u79f0 + +# Auto-extracted property IDs +sensorML=\u4f20\u611f\u5668Ml +lastUpdated=\u6700\u540e\u66f4\u65b0 +lat=\u7eac\u5ea6 +lon=\u6717 +alt=\u66ff\u4ee3 +x=X +y=Y +z=Z +heading=\u6807\u9898 +pitch=\u6ca5\u9752 +roll=\u5377 +location=\u5730\u70b9 +orientation=\u65b9\u5411 +databaseNum=\u6570\u636e\u5e93\u6570\u91cf +enableAccessControl=\u542f\u7528\u8bbf\u95ee\u63a7\u5236 +requireAuth=\u9700\u8981\u8eab\u4efd\u9a8c\u8bc1 +mimeType=\u9ed8\u5267\u7c7b\u578b +className=\u73ed\u7ea7\u540d\u79f0 +endPoint=\u7ec8\u70b9 +id=ID +description=\u63cf\u8ff0 +autoStart=\u81ea\u52a8\u542f\u52a8 +topicName=\u4e3b\u9898\u540d\u79f0 +enablePublish=\u542f\u7528\u53d1\u5e03 +enableSubscribe=\u542f\u7528\u8ba2\u9605 +protocol=\u534f\u8bae +moduleConfigPath=\u6a21\u5757\u914d\u7f6e\u8def\u5f84 +moduleDataPath=\u6a21\u5757\u6570\u636e\u8def\u5f84 +commonConfig=\u901a\u7528\u914d\u7f6e +sensors=Sensors +config=\u914d\u7f6e +uniqueID=\u552f\u4e00ID +subsystems=\u5b50\u7cfb\u7edf +dbConfig=\u6570\u636e\u5e93\u914d\u7f6e +systemUIDs=\u7cfb\u7edf\u7528\u6237ID +autoPurgeConfig=\u81ea\u52a8\u6e05\u9664\u914d\u7f6e +minCommitPeriod=\u6700\u77ed\u63d0\u4ea4\u671f +enabled=\u542f\u7528 +purgePeriod=\u51c0\u5316\u671f +maxRecordAge=\u6700\u5927\u8bb0\u5f55\u5e74\u9f84 +users=\u7528\u6237 +roles=\u89d2\u8272 +allow=\u5141\u8bb8 +deny=\u5426\u5b9a +userID=\u7528\u6237\u8eab\u4efd +name=\u59d3\u540d +password=\u5bc6\u7801 +certificate=\u8bc1\u4e66 +twoFactorSecret=\u4e8c\u56e0\u7d20\u79d8\u5bc6 +isTwoFactorEnabled=\u662f\u5426\u542f\u7528\u4e86\u53cc\u56e0\u7d20 +roleID=\u89d2\u8272 ID +sourceDatabaseId=\u6e90\u6570\u636e\u5e93 ID +includeFilter=\u5305\u62ec\u8fc7\u6ee4\u5668 +excludeFilter=\u6392\u9664\u8fc7\u6ee4\u5668 +httpPort=HTTP\u7aef\u53e3 +httpsPort=HTTPS\u7aef\u53e3 +staticDocsRootUrl=\u9759\u6001\u6587\u6863\u6839 URL +staticDocsRootDir=\u9759\u6001\u6587\u6863\u6839\u76ee\u5f55 +servletsRootUrl=Servlet \u6839 URL +proxyBaseUrl=\u4ee3\u7406\u57fa\u5740 +authMethod=\u8ba4\u8bc1\u65b9\u5f0f +keyStorePath=\u5bc6\u94a5\u5b58\u50a8\u8def\u5f84 +keyStorePassword=\u5bc6\u94a5\u5e93\u5bc6\u7801 +keyAlias=\u5173\u952e\u522b\u540d +trustStorePath=\u4fe1\u4efb\u5b58\u50a8\u8def\u5f84 +trustStorePassword=\u4fe1\u4efb\u5b58\u50a8\u5bc6\u7801 +xmlConfigFile=XML \u914d\u7f6e\u6587\u4ef6 +enableCORS=\u542f\u7528 Cors +title=Title +keywords=\u5173\u952e\u8bcd +fees=\u8d39\u7528 +accessConstraints=\u8bbf\u95ee\u9650\u5236 +serviceProvider=\u670d\u52a1\u63d0\u4f9b\u5546 +ogcCapabilitiesInfo=OGC \u80fd\u529b\u4fe1\u606f +enableHttpGET=\u542f\u7528 Http \u83b7\u53d6 +enableHttpPOST=\u542f\u7528 Http Post +enableSOAP=\u542f\u7528\u80a5\u7682 +connectTimeout=\u8fde\u63a5\u8d85\u65f6 +reconnectPeriod=\u91cd\u8fde\u671f +reconnectAttempts=\u91cd\u65b0\u8fde\u63a5\u5c1d\u8bd5 +deviceID=\u8bbe\u5907 ID +deviceClass=\u8bbe\u5907\u7c7b\u522b +remoteHost=\u8fdc\u7a0b\u4e3b\u673a +localAddress=\u672c\u5730\u5730\u5740 +connection=\u8054\u7cfb +portName=\u7aef\u53e3\u540d\u79f0 +baudRate=\u6ce2\u7279\u7387 +dataBits=\u6570\u636e\u4f4d +stopBits=\u505c\u6b62\u4f4d +parity=\u5e73\u4ef7 +receiveTimeout=\u63a5\u6536\u8d85\u65f6 +receiveThreshold=\u63a5\u6536\u9608\u503c +remotePort=\u8fdc\u7a0b\u7aef\u53e3 +localPort=\u672c\u5730\u7aef\u53e3 +deviceAddress=\u8bbe\u5907\u5730\u5740 +deviceName=\u8bbe\u5907\u540d\u79f0 +serviceUuid=\u670d\u52a1Uuid +user=\u7528\u6237 +enableTLS=\u542f\u7528 TLS +checkReachability=\u68c0\u67e5\u53ef\u8fbe\u6027 +resourcePath=\u8d44\u6e90\u8def\u5f84 +uid=\u7528\u6237\u6807\u8bc6 +securityRole=\u5b89\u5168\u89d2\u8272 +passwordField=\u5bc6\u7801\u5b57\u6bb5 +widgetSet=\u5c0f\u5de5\u5177\u96c6 +bundleRepoUrls=\u6346\u7ed1\u5b58\u50a8\u5e93 URL +customPanels=\u5b9a\u5236\u9762\u677f +customForms=\u5b9a\u5236\u8868\u683c +deploymentName=\u90e8\u7f72\u540d\u79f0 +enableLandingPage=\u542f\u7528\u767b\u9646\u9875\u9762 +configClass=\u914d\u7f6e\u7c7b +uiClass=\u7528\u6237\u754c\u9762\u7c7b +moduleClass=\u6a21\u5757\u7c7b + +# Auto-extracted hardcoded UI strings +testLinks1=\u6d4b\u8bd5\u94fe\u63a5 +uniqueID1=\u552f\u4e00ID +foiIDs1=\u4fe1\u606f\u81ea\u7531 ID +version1=\u7248\u672c + +Connected\ Systems\ Endpoint=\u8fde\u63a5\u7cfb\u7edf\u7aef\u70b9 +Connected\ Systems\ endpoint\ where\ the\ requests\ are\ sent=\u53d1\u9001\u8bf7\u6c42\u7684\u8fde\u63a5\u7cfb\u7edf\u7aef\u70b9 +Connection\ Settings=\u8fde\u63a5\u8bbe\u7f6e +Custom\ connector\ configurations=\u5b9a\u5236\u8fde\u63a5\u5668\u914d\u7f6e +Custom\ provider\ configurations=\u81ea\u5b9a\u4e49\u63d0\u4f9b\u5546\u914d\u7f6e +Database\ ID=\u6570\u636e\u5e93ID +Default\ live\ time-out\ for\ all\ offerings,\ unless\ overriden\ by\ custom\ provider\ settings=\u6240\u6709\u4ea7\u54c1\u7684\u9ed8\u8ba4\u5b9e\u65f6\u8d85\u65f6\uff0c\u9664\u975e\u88ab\u81ea\u5b9a\u4e49\u63d0\u4f9b\u5546\u8bbe\u7f6e\u8986\u76d6 +Default\ live\ time-out\ for\ new\ offerings\ created\ via\ SOS-T=\u901a\u8fc7 SOS-T \u521b\u5efa\u7684\u65b0\u4ea7\u54c1\u7684\u9ed8\u8ba4\u5b9e\u65f6\u8d85\u65f6 +Enable\ to\ use\ a\ persistent\ HTTP\ connection\ for\ InsertResult=\u5141\u8bb8\u5bf9 InsertResult \u4f7f\u7528\u6301\u4e45 HTTP \u8fde\u63a5 +Execution\ period\ of\ the\ purge\ policy\ (in\ seconds)=\u6e05\u9664\u7b56\u7565\u7684\u6267\u884c\u5468\u671f\uff08\u79d2\uff09 +Filtered\ view\ to\ select\ systems\ exposed\ as\ read-only\ through\ this\ service=\u7b5b\u9009\u89c6\u56fe\u4ee5\u9009\u62e9\u901a\u8fc7\u6b64\u670d\u52a1\u516c\u5f00\u4e3a\u53ea\u8bfb\u7684\u7cfb\u7edf +Filtered\ view\ to\ select\ systems/datastreams\ to\ register\ with\ Connected\ Systems=\u7b5b\u9009\u89c6\u56fe\uff0c\u7528\u4e8e\u9009\u62e9\u8981\u6ce8\u518c\u5230\u8fde\u63a5\u7cfb\u7edf\u7684\u7cfb\u7edf/\u6570\u636e\u6d41 +Filtered\ view\ to\ select\ systems/datastreams\ to\ register\ with\ remote\ SOS=\u7b5b\u9009\u89c6\u56fe\u4ee5\u9009\u62e9\u7cfb\u7edf/\u6570\u636e\u6d41\u4ee5\u6ce8\u518c\u8fdc\u7a0b SOS +Fixed\ system\ location\ in\ EPSG\ 4979\ (WGS84)\ coordinate\ system=EPSG 4979 (WGS84) \u5750\u6807\u7cfb\u4e2d\u7684\u56fa\u5b9a\u7cfb\u7edf\u4f4d\u7f6e +For\ each\ connection\ or\ reconnection\ attempt,\ the\ client\ will\ wait\ for\ the\ remote\ side\ to\ respond\ until\ this\ timeout\ expires\ (in\ ms)=\u5bf9\u4e8e\u6bcf\u6b21\u8fde\u63a5\u6216\u91cd\u65b0\u8fde\u63a5\u5c1d\u8bd5\uff0c\u5ba2\u6237\u7aef\u5c06\u7b49\u5f85\u8fdc\u7a0b\u7aef\u54cd\u5e94\uff0c\u76f4\u5230\u8d85\u65f6\uff08\u4ee5\u6beb\u79d2\u4e3a\u5355\u4f4d\uff09 +Heading\ (or\ yaw)\ angle\ about\ Z\ axis\ in\ degrees=\u7ed5 Z \u8f74\u7684\u822a\u5411\uff08\u6216\u504f\u822a\uff09\u89d2\uff08\u4ee5\u5ea6\u4e3a\u5355\u4f4d\uff09 +How\ long\ the\ client\ will\ wait\ after\ connection\ is\ lost\ before\ it\ will\ attempt\ to\ reconnect\ (in\ ms)=\u8fde\u63a5\u4e22\u5931\u540e\u5ba2\u6237\u7aef\u5c1d\u8bd5\u91cd\u65b0\u8fde\u63a5\u4e4b\u524d\u5c06\u7b49\u5f85\u591a\u957f\u65f6\u95f4\uff08\u4ee5\u6beb\u79d2\u4e3a\u5355\u4f4d\uff09 +ID\ Generator=ID\u751f\u6210\u5668 +ID\ of\ database\ module\ used\ for\ persisting\ data\ received\ by\ this\ service.\ If\ none\ is\ provided,\ new\ systems\ registered\ through\ this\ service\ will\ be\ available\ on\ the\ hub,\ but\ with\ no\ persistence\ guarantee\ across\ restarts.=\u7528\u4e8e\u4fdd\u5b58\u8be5\u670d\u52a1\u63a5\u6536\u5230\u7684\u6570\u636e\u7684\u6570\u636e\u5e93\u6a21\u5757\u7684 ID\u3002\u5982\u679c\u672a\u63d0\u4f9b\u4efb\u4f55\u5185\u5bb9\uff0c\u5219\u901a\u8fc7\u6b64\u670d\u52a1\u6ce8\u518c\u7684\u65b0\u7cfb\u7edf\u5c06\u5728\u96c6\u7ebf\u5668\u4e0a\u53ef\u7528\uff0c\u4f46\u5728\u91cd\u65b0\u542f\u52a8\u540e\u6ca1\u6709\u6301\u4e45\u6027\u4fdd\u8bc1\u3002 +ID\ of\ database\ module\ used\ for\ persisting\ data\ received\ by\ this\ service.\ If\ none\ is\ provided,\ new\ systems\ registered\ through\ this\ service\ will\ be\ available\ on\ the\ hub,\ but\ with\ no\ persistence\ guarantee\ across\ restarts.\ Only\ the\ latest\ observation\ from\ each\ datastream\ will\ be\ available\ and\ older\ observations\ will\ be\ discarded=\u7528\u4e8e\u4fdd\u5b58\u8be5\u670d\u52a1\u63a5\u6536\u5230\u7684\u6570\u636e\u7684\u6570\u636e\u5e93\u6a21\u5757\u7684 ID\u3002\u5982\u679c\u672a\u63d0\u4f9b\u4efb\u4f55\u5185\u5bb9\uff0c\u5219\u901a\u8fc7\u6b64\u670d\u52a1\u6ce8\u518c\u7684\u65b0\u7cfb\u7edf\u5c06\u5728\u96c6\u7ebf\u5668\u4e0a\u53ef\u7528\uff0c\u4f46\u5728\u91cd\u65b0\u542f\u52a8\u540e\u6ca1\u6709\u6301\u4e45\u6027\u4fdd\u8bc1\u3002\u4ec5\u6bcf\u4e2a\u6570\u636e\u6d41\u4e2d\u7684\u6700\u65b0\u89c2\u5bdf\u7ed3\u679c\u53ef\u7528\uff0c\u8f83\u65e7\u7684\u89c2\u5bdf\u7ed3\u679c\u5c06\u88ab\u4e22\u5f03 +Individual\ configuration\ of\ sensors\ in\ the\ array\ (will\ override\ common\ configuration)=\u9635\u5217\u4e2d\u4f20\u611f\u5668\u7684\u5355\u72ec\u914d\u7f6e\uff08\u5c06\u8986\u76d6\u901a\u7528\u914d\u7f6e\uff09 +List\ of\ observed\ properties\ URI\ to\ make\ available\ as\ outputs=\u53ef\u7528\u4f5c\u8f93\u51fa\u7684\u89c2\u5bdf\u5230\u7684\u5c5e\u6027 URI \u5217\u8868 +Mapping\ of\ custom\ formats\ mime-types\ to\ custom\ serializer\ classes=\u5c06\u81ea\u5b9a\u4e49\u683c\u5f0f mime \u7c7b\u578b\u6620\u5c04\u5230\u81ea\u5b9a\u4e49\u5e8f\u5217\u5316\u5668\u7c7b +Mappings\ used\ by\ CURIE\ to\ URI\ resolver=CURIE \u5230 URI \u89e3\u6790\u5668\u4f7f\u7528\u7684\u6620\u5c04 +Max\ Limit=\u6700\u5927\u9650\u5236 +Max\ Observations\ Returned=\u8fd4\u56de\u7684\u6700\u5927\u89c2\u6d4b\u503c +Max\ Records\ Returned=\u8fd4\u56de\u7684\u6700\u5927\u8bb0\u5f55\u6570 +Max\ delay\ between\ auto-commit\ execution,\ in\ seconds.\ 0\ to\ disable\ time-based\ auto-commit=\u81ea\u52a8\u63d0\u4ea4\u6267\u884c\u4e4b\u95f4\u7684\u6700\u5927\u5ef6\u8fdf\uff08\u4ee5\u79d2\u4e3a\u5355\u4f4d\uff09\u3002 0 \u7981\u7528\u57fa\u4e8e\u65f6\u95f4\u7684\u81ea\u52a8\u63d0\u4ea4 +Maximum\ age\ of\ data\ to\ be\ kept\ in\ storage\ (in\ seconds)=\u6570\u636e\u4fdd\u5b58\u7684\u6700\u957f\u671f\u9650\uff08\u4ee5\u79d2\u4e3a\u5355\u4f4d\uff09 +Maximum\ number\ of\ FoI\ IDs\ listed\ in\ capabilities=\u529f\u80fd\u4e2d\u5217\u51fa\u7684 FoI ID \u7684\u6700\u5927\u6570\u91cf +Maximum\ number\ of\ observations\ returned\ \ by\ a\ historical\ GetObservation\ request\ (for\ each\ selected\ offering)=\u5386\u53f2 GetObservation \u8bf7\u6c42\u8fd4\u56de\u7684\u6700\u5927\u89c2\u5bdf\u6570\uff08\u5bf9\u4e8e\u6bcf\u4e2a\u9009\u5b9a\u7684\u4ea7\u54c1\uff09 +Maximum\ number\ of\ records\ in\ upload\ queue\ (used\ to\ compensate\ for\ variable\ bandwidth)=\u4e0a\u4f20\u961f\u5217\u4e2d\u7684\u6700\u5927\u8bb0\u5f55\u6570\uff08\u7528\u4e8e\u8865\u507f\u53ef\u53d8\u5e26\u5bbd\uff09 +Maximum\ number\ of\ resources\ returned\ in\ a\ single\ page=\u5355\u9875\u6700\u5927\u8fd4\u56de\u8d44\u6e90\u6570 +Maximum\ number\ of\ result\ records\ returned\ by\ a\ historical\ GetResult\ request=\u5386\u53f2GetResult\u8bf7\u6c42\u8fd4\u56de\u7684\u6700\u5927\u7ed3\u679c\u8bb0\u5f55\u6570 +Maximum\ number\ of\ stream\ errors\ before\ we\ try\ to\ reconnect\ to\ remote\ server=\u5c1d\u8bd5\u91cd\u65b0\u8fde\u63a5\u5230\u8fdc\u7a0b\u670d\u52a1\u5668\u4e4b\u524d\u7684\u6700\u5927\u6d41\u9519\u8bef\u6570 +Memory\ cache\ size\ for\ page\ chunks,\ in\ KB=\u9875\u5757\u7684\u5185\u5b58\u7f13\u5b58\u5927\u5c0f\uff08\u4ee5 KB \u4e3a\u5355\u4f4d\uff09 +Metadata\ of\ system\ group\ that\ will\ be\ created\ to\ contain\ all\ procedures/sensors\ registered\ through\ this\ service.\ Only\ sensors\ in\ this\ group\ will\ be\ modifiable\ by\ this\ service=\u5c06\u521b\u5efa\u7684\u7cfb\u7edf\u7ec4\u5143\u6570\u636e\u5305\u542b\u901a\u8fc7\u6b64\u670d\u52a1\u6ce8\u518c\u7684\u6240\u6709\u7a0b\u5e8f/\u4f20\u611f\u5668\u3002\u6b64\u670d\u52a1\u53ea\u80fd\u4fee\u6539\u8be5\u7ec4\u4e2d\u7684\u4f20\u611f\u5668 +Metadata\ of\ system\ group\ that\ will\ be\ created\ to\ contain\ all\ systems\ registered\ through\ this\ service.\ Only\ systems\ in\ this\ group\ will\ be\ modifiable\ by\ this\ service=\u5c06\u521b\u5efa\u7684\u7cfb\u7edf\u7ec4\u5143\u6570\u636e\uff0c\u7528\u4e8e\u5305\u542b\u901a\u8fc7\u6b64\u670d\u52a1\u6ce8\u518c\u7684\u6240\u6709\u7cfb\u7edf\u3002\u6b64\u670d\u52a1\u53ea\u80fd\u4fee\u6539\u8be5\u7ec4\u4e2d\u7684\u7cfb\u7edf +Method\ used\ to\ generate\ new\ resource\ IDs=\u7528\u4e8e\u751f\u6210\u65b0\u8d44\u6e90 ID \u7684\u65b9\u6cd5 +Minimum\ fillrate\ above\ which\ auto\ compact\ operations\ may\ be\ triggered=\u6700\u5c0f\u586b\u5145\u7387\uff0c\u9ad8\u4e8e\u6b64\u503c\u53ef\u80fd\u4f1a\u89e6\u53d1\u81ea\u52a8\u538b\u7f29\u64cd\u4f5c +Minimum\ period\ between\ database\ commits\ (in\ ms)=\u6570\u636e\u5e93\u63d0\u4ea4\u4e4b\u95f4\u7684\u6700\u77ed\u5468\u671f\uff08\u4ee5\u6beb\u79d2\u4e3a\u5355\u4f4d\uff09 +Names\ of\ datastreams\ whose\ data\ will\ be\ hidden\ from\ the\ SOS.\ If\ this\ is\ null,\ all\ streams\ produced\ by\ the\ procedure\ are\ exposed=\u5176\u6570\u636e\u5c06\u5bf9 SOS \u9690\u85cf\u7684\u6570\u636e\u6d41\u7684\u540d\u79f0\u3002\u5982\u679c\u4e3a\u7a7a\uff0c\u5219\u516c\u5f00\u8be5\u8fc7\u7a0b\u751f\u6210\u7684\u6240\u6709\u6d41 +Observed\ Properties=\u89c2\u5bdf\u5230\u7684\u7279\u6027 +Offering\ URI\ as\ exposed\ in\ capabilities.\ (if\ null,\ the\ procedure\ UID\ is\ used)=\u63d0\u4f9b\u5728\u529f\u80fd\u4e2d\u516c\u5f00\u7684 URI\u3002 \uff08\u5982\u679c\u4e3a null\uff0c\u5219\u4f7f\u7528\u8fc7\u7a0b UID\uff09 +Offering\ description\ (if\ null,\ it\ will\ be\ auto-generated)=\u4ea7\u54c1\u63cf\u8ff0\uff08\u5982\u679c\u4e3a\u7a7a\uff0c\u5c06\u81ea\u52a8\u751f\u6210\uff09 +Offering\ name\ (if\ null,\ the\ procedure\ name\ is\ used)=\u4ea7\u54c1\u540d\u79f0\uff08\u5982\u679c\u4e3a\u7a7a\uff0c\u5219\u4f7f\u7528\u8fc7\u7a0b\u540d\u79f0\uff09 +Orientation\ as\ Euler\ angles\ in\ NED\ coordinate\ reference\ frame.\nOrder\ of\ rotations\ is\ z-y\u2019-x"\ (in\ rotating\ frame)\ or\ x-y-z\ (in\ fixed\ frame)=NED \u5750\u6807\u53c2\u8003\u7cfb\u4e2d\u7684\u6b27\u62c9\u89d2\u65b9\u5411\u3002\n\u65cb\u8f6c\u987a\u5e8f\u4e3a z-y\u2019-x"\uff08\u5728\u65cb\u8f6c\u5750\u6807\u7cfb\u4e2d\uff09\u6216 x-y-z\uff08\u5728\u56fa\u5b9a\u5750\u6807\u7cfb\u4e2d\uff09 +Password\ for\ the\ key\ store\ (and\ for\ the\ keypair\ within\ the\ keystore).\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ "javax.net.ssl.keyStorePassword"\ system\ property.\ This\ value\ can\ use\ variable\ expansion\ expressions\ of\ the\ form\ "$${name}"\ (for\ environment\ variables\ and\ system\ properties)\ or\ "$${file;/path/to/file}"\ (for\ secret\ file\ contents).=\u5bc6\u94a5\u5e93\uff08\u4ee5\u53ca\u5bc6\u94a5\u5e93\u4e2d\u7684\u5bc6\u94a5\u5bf9\uff09\u7684\u5bc6\u7801\u3002\u5982\u679c\u8be5\u503c\u4e3a\u7a7a\uff0c\u5219\u9ed8\u8ba4\u4f7f\u7528\u201cjavax.net.ssl.keyStorePassword\u201d\u7cfb\u7edf\u5c5e\u6027\u7684\u503c\u3002\u8be5\u503c\u53ef\u4ee5\u4f7f\u7528\u201c$${name}\u201d\uff08\u5bf9\u4e8e\u73af\u5883\u53d8\u91cf\u548c\u7cfb\u7edf\u5c5e\u6027\uff09\u6216\u201c$${file;/path/to/file}\u201d\uff08\u5bf9\u4e8e\u673a\u5bc6\u6587\u4ef6\u5185\u5bb9\uff09\u5f62\u5f0f\u7684\u53d8\u91cf\u6269\u5c55\u8868\u8fbe\u5f0f\u3002 +Password\ for\ the\ trust\ store.\ Ignored\ if\ client\ certificate\ authentication\ is\ not\ used.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ "javax.net.ssl.trustStorePassword"\ system\ property.\ This\ value\ can\ use\ variable\ expansion\ expressions\ of\ the\ form\ "$${name}"\ (for\ environment\ variables\ and\ system\ properties)\ or\ "$${file;/path/to/file}"\ (for\ secret\ file\ contents).=\u4fe1\u4efb\u5b58\u50a8\u7684\u5bc6\u7801\u3002\u5982\u679c\u4e0d\u4f7f\u7528\u5ba2\u6237\u7aef\u8bc1\u4e66\u8eab\u4efd\u9a8c\u8bc1\uff0c\u5219\u5ffd\u7565\u3002\u5982\u679c\u8be5\u503c\u4e3a\u7a7a\uff0c\u5219\u9ed8\u8ba4\u4f7f\u7528\u201cjavax.net.ssl.trustStorePassword\u201d\u7cfb\u7edf\u5c5e\u6027\u7684\u503c\u3002\u8be5\u503c\u53ef\u4ee5\u4f7f\u7528\u201c$${name}\u201d\uff08\u5bf9\u4e8e\u73af\u5883\u53d8\u91cf\u548c\u7cfb\u7edf\u5c5e\u6027\uff09\u6216\u201c$${file;/path/to/file}\u201d\uff08\u5bf9\u4e8e\u673a\u5bc6\u6587\u4ef6\u5185\u5bb9\uff09\u5f62\u5f0f\u7684\u53d8\u91cf\u6269\u5c55\u8868\u8fbe\u5f0f\u3002 +Path\ of\ service\ endpoint\ relative\ to\ the\ context\ URL\ (e.g.\ http\://server.net/sensorhub)=\u670d\u52a1\u7aef\u70b9\u76f8\u5bf9\u4e8e\u4e0a\u4e0b\u6587 URL \u7684\u8def\u5f84\uff08\u4f8b\u5982 http://server.net/sensorhub\uff09 +Path\ to\ a\ key\ store\ containing\ the\ certificate\ and\ keypair\ that\ this\ server\ will\ present\ to\ clients\ when\ accessed\ over\ HTTPS.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ "javax.net.ssl.keyStore"\ system\ property.\ This\ value\ can\ use\ variable\ expansion\ expressions\ of\ the\ form\ "$${name}"\ (for\ environment\ variables\ and\ system\ properties)\ or\ "$${file;/path/to/file}"\ (for\ secret\ file\ contents).=\u5305\u542b\u8be5\u670d\u52a1\u5668\u5728\u901a\u8fc7 HTTPS \u8bbf\u95ee\u65f6\u5411\u5ba2\u6237\u7aef\u63d0\u4f9b\u7684\u8bc1\u4e66\u548c\u5bc6\u94a5\u5bf9\u7684\u5bc6\u94a5\u5b58\u50a8\u7684\u8def\u5f84\u3002\u5982\u679c\u8be5\u503c\u4e3a\u7a7a\uff0c\u5219\u9ed8\u8ba4\u4f7f\u7528\u201cjavax.net.ssl.keyStore\u201d\u7cfb\u7edf\u5c5e\u6027\u7684\u503c\u3002\u8be5\u503c\u53ef\u4ee5\u4f7f\u7528\u201c$${name}\u201d\uff08\u5bf9\u4e8e\u73af\u5883\u53d8\u91cf\u548c\u7cfb\u7edf\u5c5e\u6027\uff09\u6216\u201c$${file;/path/to/file}\u201d\uff08\u5bf9\u4e8e\u673a\u5bc6\u6587\u4ef6\u5185\u5bb9\uff09\u5f62\u5f0f\u7684\u53d8\u91cf\u6269\u5c55\u8868\u8fbe\u5f0f\u3002 +Path\ to\ database\ file=\u6570\u636e\u5e93\u6587\u4ef6\u7684\u8def\u5f84 +Path\ to\ external\ config\ file\ (in\ Jetty\ IOC\ XML\ format)=\u5916\u90e8\u914d\u7f6e\u6587\u4ef6\u7684\u8def\u5f84\uff08Jetty IOC XML \u683c\u5f0f\uff09 +Path\ to\ the\ TLS\ trust\ store\ that\ is\ used\ when\ client\ authentication\ is\ required.\ Ignored\ if\ client\ certificate\ authentication\ is\ not\ used.\ Certificates\ in\ this\ file\ designate\ the\ signing\ authorities\ for\ client\ certificates\ that\ will\ be\ trusted.\ If\ this\ value\ is\ blank,\ will\ default\ to\ using\ the\ value\ of\ the\ "javax.net.ssl.trustStore"\ system\ property.\ This\ value\ can\ use\ variable\ expansion\ expressions\ of\ the\ form\ "$${name}"\ (for\ environment\ variables\ and\ system\ properties)\ or\ "$${file;/path/to/file}"\ (for\ secret\ file\ contents).=\u9700\u8981\u5ba2\u6237\u7aef\u8eab\u4efd\u9a8c\u8bc1\u65f6\u4f7f\u7528\u7684 TLS \u4fe1\u4efb\u5b58\u50a8\u7684\u8def\u5f84\u3002\u5982\u679c\u4e0d\u4f7f\u7528\u5ba2\u6237\u7aef\u8bc1\u4e66\u8eab\u4efd\u9a8c\u8bc1\uff0c\u5219\u5ffd\u7565\u3002\u6b64\u6587\u4ef6\u4e2d\u7684\u8bc1\u4e66\u6307\u5b9a\u53d7\u4fe1\u4efb\u7684\u5ba2\u6237\u7aef\u8bc1\u4e66\u7684\u7b7e\u540d\u673a\u6784\u3002\u5982\u679c\u8be5\u503c\u4e3a\u7a7a\uff0c\u5219\u9ed8\u8ba4\u4f7f\u7528\u201cjavax.net.ssl.trustStore\u201d\u7cfb\u7edf\u5c5e\u6027\u7684\u503c\u3002\u8be5\u503c\u53ef\u4ee5\u4f7f\u7528\u201c$${name}\u201d\uff08\u5bf9\u4e8e\u73af\u5883\u53d8\u91cf\u548c\u7cfb\u7edf\u5c5e\u6027\uff09\u6216\u201c$${file;/path/to/file}\u201d\uff08\u5bf9\u4e8e\u673a\u5bc6\u6587\u4ef6\u5185\u5bb9\uff09\u5f62\u5f0f\u7684\u53d8\u91cf\u6269\u5c55\u8868\u8fbe\u5f0f\u3002 +Port\ number\ to\ connect\ to\ on\ remote\ host\ (0\ to\ automatically\ select\ a\ port)=\u8fde\u63a5\u5230\u8fdc\u7a0b\u4e3b\u673a\u7684\u7aef\u53e3\u53f7\uff080 \u81ea\u52a8\u9009\u62e9\u7aef\u53e3\uff09 +SOS\ Endpoint=\u6c42\u6551\u7aef\u70b9 +SOS\ endpoint\ to\ fetch\ data\ from=\u7528\u4e8e\u4ece\u4e2d\u83b7\u53d6\u6570\u636e\u7684 SOS \u7aef\u70b9 +SOS\ endpoint\ where\ the\ requests\ are\ sent=\u53d1\u9001\u8bf7\u6c42\u7684 SOS \u7aef\u70b9 +SPS\ Endpoint=SPS\u7aef\u70b9 +SPS\ endpoint\ to\ send\ commands\ to=\u5c06\u547d\u4ee4\u53d1\u9001\u5230\u7684 SPS \u7aef\u70b9 +Security\ related\ options=\u5b89\u5168\u76f8\u5173\u9009\u9879 +Sensor\ UID=\u4f20\u611f\u5668UID +Set\ if\ WebSocket\ protocol\ should\ be\ used\ to\ get\ streaming\ data\ from\ SOS=\u8bbe\u7f6e\u662f\u5426\u5e94\u4f7f\u7528 WebSocket \u534f\u8bae\u4ece SOS \u83b7\u53d6\u6d41\u6570\u636e +Set\ if\ offering\ is\ enabled,\ unset\ if\ disabled=\u5982\u679c\u4ea7\u54c1\u5df2\u542f\u7528\u5219\u8bbe\u7f6e\uff0c\u5982\u679c\u7981\u7528\u5219\u53d6\u6d88\u8bbe\u7f6e +Set\ if\ websockets\ protocol\ should\ be\ used\ to\ send\ commands\ to\ SPS=\u8bbe\u7f6e\u662f\u5426\u5e94\u4f7f\u7528 websockets \u534f\u8bae\u5411 SPS \u53d1\u9001\u547d\u4ee4 +Set\ to\ compact\ the\ database\ file\ when\ the\ database\ module\ is\ stopped\ or\ restarted=\u8bbe\u7f6e\u5728\u6570\u636e\u5e93\u6a21\u5757\u505c\u6b62\u6216\u91cd\u65b0\u542f\u52a8\u65f6\u538b\u7f29\u6570\u636e\u5e93\u6587\u4ef6 +Set\ to\ compress\ underlying\ file\ storage=\u8bbe\u7f6e\u538b\u7f29\u5e95\u5c42\u6587\u4ef6\u5b58\u50a8 +Set\ to\ display\ MVStore\ debug\ info\ when\ database\ is\ closed\ (only\ if\ DEBUG\ log\ is\ also\ enabled)=\u8bbe\u7f6e\u4e3a\u5728\u6570\u636e\u5e93\u5173\u95ed\u65f6\u663e\u793a MVStore \u8c03\u8bd5\u4fe1\u606f\uff08\u4ec5\u5f53 DEBUG \u65e5\u5fd7\u4e5f\u542f\u7528\u65f6\uff09 +Set\ to\ enable\ spatial\ indexing\ of\ individual\ observations\ sampling\ locations\ (when\ provided)=\u8bbe\u7f6e\u4e3a\u542f\u7528\u5355\u4e2a\u89c2\u6d4b\u91c7\u6837\u4f4d\u7f6e\u7684\u7a7a\u95f4\u7d22\u5f15\uff08\u5982\u679c\u63d0\u4f9b\uff09 +Set\ to\ open\ the\ database\ as\ read-only=\u8bbe\u7f6e\u4ee5\u53ea\u8bfb\u65b9\u5f0f\u6253\u5f00\u6570\u636e\u5e93 +Set\ to\ true\ to\ enable\ transactional\ operation\ support=\u8bbe\u7f6e\u4e3a true \u4ee5\u542f\u7528\u4e8b\u52a1\u64cd\u4f5c\u652f\u6301 +Size\ of\ the\ auto-commit\ write\ buffer,\ in\ KB=\u81ea\u52a8\u63d0\u4ea4\u5199\u5165\u7f13\u51b2\u533a\u7684\u5927\u5c0f\uff0c\u4ee5 KB \u4e3a\u5355\u4f4d +TCP\ port\ where\ server\ will\ listen\ for\ secure\ HTTP\ (HTTPS)\ connections\ (use\ 0\ to\ disable\ HTTPS).=\u670d\u52a1\u5668\u5c06\u4fa6\u542c\u5b89\u5168 HTTP (HTTPS) \u8fde\u63a5\u7684 TCP \u7aef\u53e3\uff08\u4f7f\u7528 0 \u7981\u7528 HTTPS\uff09\u3002 +TCP\ port\ where\ server\ will\ listen\ for\ unsecure\ HTTP\ connections\ (use\ 0\ to\ disable\ HTTP).=\u670d\u52a1\u5668\u5c06\u4fa6\u542c\u4e0d\u5b89\u5168 HTTP \u8fde\u63a5\u7684 TCP \u7aef\u53e3\uff08\u4f7f\u7528 0 \u7981\u7528 HTTP\uff09\u3002 +Time-out\ after\ which\ real-time\ requests\ are\ disabled\ if\ no\ more\ measurements\ are\ received\ (in\ seconds).\ Real-time\ is\ reactivated\ as\ soon\ as\ new\ records\ start\ being\ received\ again=\u5982\u679c\u6ca1\u6709\u6536\u5230\u66f4\u591a\u6d4b\u91cf\u503c\uff0c\u5219\u8d85\u65f6\u540e\u7981\u7528\u5b9e\u65f6\u8bf7\u6c42\uff08\u4ee5\u79d2\u4e3a\u5355\u4f4d\uff09\u3002\u4e00\u65e6\u518d\u6b21\u5f00\u59cb\u63a5\u6536\u65b0\u8bb0\u5f55\uff0c\u5b9e\u65f6\u5c31\u4f1a\u91cd\u65b0\u6fc0\u6d3b +Time-out\ period\ after\ which\ a\ template\ ID\ reserved\ using\ InsertResultTemplate\ will\ expire\ if\ not\ used\ in\ InsertResult\ requests\ (in\ seconds)=\u5982\u679c\u672a\u5728 InsertResult \u8bf7\u6c42\u4e2d\u4f7f\u7528\uff0c\u4f7f\u7528 InsertResultTemplate \u4fdd\u7559\u7684\u6a21\u677f ID \u5c06\u8fc7\u671f\u7684\u8d85\u65f6\u65f6\u95f4\uff08\u4ee5\u79d2\u4e3a\u5355\u4f4d\uff09 +Timeout\ after\ which\ data\ is\ released\ to\ the\ caller\ if\ at\ least\ one\ byte\ was\ received\ (in\ ms)=\u5982\u679c\u81f3\u5c11\u6536\u5230\u4e00\u4e2a\u5b57\u8282\uff0c\u5219\u5728\u8be5\u8d85\u65f6\u540e\u5c06\u6570\u636e\u91ca\u653e\u7ed9\u8c03\u7528\u8005\uff08\u4ee5\u6beb\u79d2\u4e3a\u5355\u4f4d\uff09 +URI\ Prefix\ Map=URI \u524d\u7f00\u6620\u5c04 +Unique\ ID\ (full\ URN\ or\ only\ suffix)\ to\ use\ for\ the\ sensor\ system\ or\ 'auto'\ to\ use\ the\ UUID\ randomly\ generated\ the\ first\ time\ the\ module\ is\ initialized=\u7528\u4e8e\u4f20\u611f\u5668\u7cfb\u7edf\u7684\u552f\u4e00 ID\uff08\u5b8c\u6574 URN \u6216\u4ec5\u540e\u7f00\uff09\u6216\u201c\u81ea\u52a8\u201d\u4ee5\u4f7f\u7528\u6a21\u5757\u9996\u6b21\u521d\u59cb\u5316\u65f6\u968f\u673a\u751f\u6210\u7684 UUID +Unique\ ID\ of\ a\ system\ that\ this\ configuration\ applies\ to.\nCan\ include\ a\ trailing\ wildcard\ '*'\ to\ match\ several\ systems\ at\ once.=\u6b64\u914d\u7f6e\u9002\u7528\u7684\u7cfb\u7edf\u7684\u552f\u4e00 ID\u3002\n\u53ef\u4ee5\u5305\u542b\u5c3e\u968f\u901a\u914d\u7b26\u201c*\u201d\u4ee5\u540c\u65f6\u5339\u914d\u591a\u4e2a\u7cfb\u7edf\u3002 +Unique\ ID\ of\ sensor\ to\ connect\ to\ on\ SOS\ and\ SPS\ servers=\u8981\u8fde\u63a5\u5230 SOS \u548c SPS \u670d\u52a1\u5668\u7684\u4f20\u611f\u5668\u7684\u552f\u4e00 ID +Unique\ ID\ of\ system\ that\ this\ configuration\ applies\ to.\nCan\ include\ a\ trailing\ wildcard\ '*'\ to\ match\ several\ systems\ at\ once.=\u6b64\u914d\u7f6e\u9002\u7528\u7684\u7cfb\u7edf\u7684\u552f\u4e00 ID\u3002\n\u53ef\u4ee5\u5305\u542b\u5c3e\u968f\u901a\u914d\u7b26\u201c*\u201d\u4ee5\u540c\u65f6\u5339\u914d\u591a\u4e2a\u7cfb\u7edf\u3002 +Use\ WebSockets\ for\ SOS=\u4f7f\u7528 WebSocket \u8fdb\u884c SOS +Use\ WebSockets\ for\ SPS=\u4f7f\u7528 WebSocket \u8fdb\u884c SPS + +Node\ ID=\u8282\u70b9\u53f7 +Stats\ Frequency\ (min)=\u7edf\u8ba1\u9891\u7387\uff08\u5206\u949f\uff09 +Database\ URL=\u6570\u636e\u5e93\u7f51\u5740 +Database\ Name=\u6570\u636e\u5e93\u540d\u79f0 +ID\ Generator=ID\u751f\u6210\u5668 +Database\ Number=\u6570\u636e\u5e93\u7f16\u53f7 +Remote\ Host=\u8fdc\u7a0b\u4e3b\u673a +Remote\ Port=\u8fdc\u7a0b\u7aef\u53e3 +Lane\ Width\ (m)=\u8f66\u9053\u5bbd\u5ea6\uff08\u7c73\uff09 +Enable\ EML\ Analysis=\u542f\u7528 EML \u5206\u6790 +Is\ Collimated=\u5df2\u51c6\u76f4 +Stream\ Path=\u6d41\u8def\u5f84 +Lane\ Options\ Config=\u8f66\u9053\u9009\u9879\u914d\u7f6e diff --git a/sensorhub-webui-core/widgetset/src/main/resources/VAADIN/themes/sensorhub/sensorhub.scss b/sensorhub-webui-core/widgetset/src/main/resources/VAADIN/themes/sensorhub/sensorhub.scss index c7305ddb4d..361cbceb55 100644 --- a/sensorhub-webui-core/widgetset/src/main/resources/VAADIN/themes/sensorhub/sensorhub.scss +++ b/sensorhub-webui-core/widgetset/src/main/resources/VAADIN/themes/sensorhub/sensorhub.scss @@ -36,7 +36,22 @@ $v-layout-margin-right: 25px; } .toolbar { - margin-bottom: 3px; + margin-bottom: 0px; + } + + .toolbar-row { + display: flex; + justify-content: space-between; + gap: 4px; + margin-bottom: 4px; + } + + .toolbar-flex-item { + flex: 1 1 48%; + box-sizing: border-box; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; } .apply-button { @@ -46,6 +61,10 @@ $v-layout-margin-right: 25px; z-index: 10000; } + .toolbar-btn { + text-align: left; + } + .v-slot { clear: none; }