diff --git a/AgroBase/.vs/AgroBase/FileContentIndex/0eb42d42-7412-4de7-ad3d-a0ab46cfeda6.vsidx b/AgroBase/.vs/AgroBase/FileContentIndex/0eb42d42-7412-4de7-ad3d-a0ab46cfeda6.vsidx
new file mode 100644
index 000000000..66ff4019d
Binary files /dev/null and b/AgroBase/.vs/AgroBase/FileContentIndex/0eb42d42-7412-4de7-ad3d-a0ab46cfeda6.vsidx differ
diff --git a/AgroBase/.vs/AgroBase/FileContentIndex/36689b31-94a9-49b1-838c-5e8078a9ddbd.vsidx b/AgroBase/.vs/AgroBase/FileContentIndex/36689b31-94a9-49b1-838c-5e8078a9ddbd.vsidx
new file mode 100644
index 000000000..2fc480a91
Binary files /dev/null and b/AgroBase/.vs/AgroBase/FileContentIndex/36689b31-94a9-49b1-838c-5e8078a9ddbd.vsidx differ
diff --git a/AgroBase/.vs/AgroBase/FileContentIndex/547f20f5-cb86-47c8-97ea-07234aeb4a38.vsidx b/AgroBase/.vs/AgroBase/FileContentIndex/547f20f5-cb86-47c8-97ea-07234aeb4a38.vsidx
deleted file mode 100644
index f4a1f51ca..000000000
Binary files a/AgroBase/.vs/AgroBase/FileContentIndex/547f20f5-cb86-47c8-97ea-07234aeb4a38.vsidx and /dev/null differ
diff --git a/AgroBase/.vs/AgroBase/FileContentIndex/593bf2d3-d600-4ddf-b6ff-45c869dde8ba.vsidx b/AgroBase/.vs/AgroBase/FileContentIndex/593bf2d3-d600-4ddf-b6ff-45c869dde8ba.vsidx
deleted file mode 100644
index b082c7ec1..000000000
Binary files a/AgroBase/.vs/AgroBase/FileContentIndex/593bf2d3-d600-4ddf-b6ff-45c869dde8ba.vsidx and /dev/null differ
diff --git a/AgroBase/.vs/AgroBase/FileContentIndex/78019d0f-d3f5-476c-b0f8-7fb674ee916f.vsidx b/AgroBase/.vs/AgroBase/FileContentIndex/78019d0f-d3f5-476c-b0f8-7fb674ee916f.vsidx
new file mode 100644
index 000000000..39b20e4ae
Binary files /dev/null and b/AgroBase/.vs/AgroBase/FileContentIndex/78019d0f-d3f5-476c-b0f8-7fb674ee916f.vsidx differ
diff --git a/AgroBase/.vs/AgroBase/FileContentIndex/803a4ed8-9695-4ed7-9764-8b698ef42744.vsidx b/AgroBase/.vs/AgroBase/FileContentIndex/803a4ed8-9695-4ed7-9764-8b698ef42744.vsidx
new file mode 100644
index 000000000..c8e11e3db
Binary files /dev/null and b/AgroBase/.vs/AgroBase/FileContentIndex/803a4ed8-9695-4ed7-9764-8b698ef42744.vsidx differ
diff --git a/AgroBase/.vs/AgroBase/FileContentIndex/94322d3c-ae5a-4683-84ea-9d8ca24d5d14.vsidx b/AgroBase/.vs/AgroBase/FileContentIndex/94322d3c-ae5a-4683-84ea-9d8ca24d5d14.vsidx
deleted file mode 100644
index b1e4120a7..000000000
Binary files a/AgroBase/.vs/AgroBase/FileContentIndex/94322d3c-ae5a-4683-84ea-9d8ca24d5d14.vsidx and /dev/null differ
diff --git a/AgroBase/.vs/AgroBase/FileContentIndex/a45d7714-b30d-4fd7-9df5-442afd603b72.vsidx b/AgroBase/.vs/AgroBase/FileContentIndex/a45d7714-b30d-4fd7-9df5-442afd603b72.vsidx
deleted file mode 100644
index abed8d842..000000000
Binary files a/AgroBase/.vs/AgroBase/FileContentIndex/a45d7714-b30d-4fd7-9df5-442afd603b72.vsidx and /dev/null differ
diff --git a/AgroBase/.vs/AgroBase/FileContentIndex/a4d88e6d-a94f-44ef-bd90-7e640b2f4ee8.vsidx b/AgroBase/.vs/AgroBase/FileContentIndex/a4d88e6d-a94f-44ef-bd90-7e640b2f4ee8.vsidx
deleted file mode 100644
index 1c1989f1c..000000000
Binary files a/AgroBase/.vs/AgroBase/FileContentIndex/a4d88e6d-a94f-44ef-bd90-7e640b2f4ee8.vsidx and /dev/null differ
diff --git a/AgroBase/.vs/AgroBase/FileContentIndex/d9cf545e-f250-4af1-80cb-dc3026300b01.vsidx b/AgroBase/.vs/AgroBase/FileContentIndex/d9cf545e-f250-4af1-80cb-dc3026300b01.vsidx
new file mode 100644
index 000000000..1936f58de
Binary files /dev/null and b/AgroBase/.vs/AgroBase/FileContentIndex/d9cf545e-f250-4af1-80cb-dc3026300b01.vsidx differ
diff --git a/AgroBase/.vs/AgroBase/v17/.suo b/AgroBase/.vs/AgroBase/v17/.suo
index 04020a800..32d57bbc2 100644
Binary files a/AgroBase/.vs/AgroBase/v17/.suo and b/AgroBase/.vs/AgroBase/v17/.suo differ
diff --git a/AgroBase/.vs/AgroBase/v17/DocumentLayout.json b/AgroBase/.vs/AgroBase/v17/DocumentLayout.json
index 8d4cfef84..c61065eee 100644
--- a/AgroBase/.vs/AgroBase/v17/DocumentLayout.json
+++ b/AgroBase/.vs/AgroBase/v17/DocumentLayout.json
@@ -3,24 +3,24 @@
"WorkspaceRootPath": "C:\\ZendionINC\\agrobot_base\\AgroBase\\",
"Documents": [
{
- "AbsoluteMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|c:\\zendioninc\\agrobot_base\\agrobase\\agrobase\\forms\\operacoes\\frmoperacaomanual.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form",
- "RelativeMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|solutionrelative:agrobase\\forms\\operacoes\\frmoperacaomanual.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form"
+ "AbsoluteMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|c:\\zendioninc\\agrobot_base\\agrobase\\agrobase\\models\\mapasmodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+ "RelativeMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|solutionrelative:agrobase\\models\\mapasmodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
- "AbsoluteMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|c:\\zendioninc\\agrobot_base\\agrobase\\agrobase\\forms\\operacoes\\frmoperacaomanual.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
- "RelativeMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|solutionrelative:agrobase\\forms\\operacoes\\frmoperacaomanual.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+ "AbsoluteMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|C:\\ZendionINC\\agrobot_base\\AgroBase\\agrobase\\models\\operacoes\\operacaomapagpsmodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+ "RelativeMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|solutionrelative:agrobase\\models\\operacoes\\operacaomapagpsmodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
- "AbsoluteMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|c:\\zendioninc\\agrobot_base\\agrobase\\agrobase\\forms\\operacoes\\frmoperacaomapagps.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
- "RelativeMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|solutionrelative:agrobase\\forms\\operacoes\\frmoperacaomapagps.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+ "AbsoluteMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|C:\\ZendionINC\\agrobot_base\\AgroBase\\agrobase\\models\\sonarmodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+ "RelativeMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|solutionrelative:agrobase\\models\\sonarmodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
- "AbsoluteMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|C:\\ZendionINC\\agrobot_base\\AgroBase\\agrobase\\forms\\operacoes\\frmoperacaomapagps.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form",
- "RelativeMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|solutionrelative:agrobase\\forms\\operacoes\\frmoperacaomapagps.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form"
+ "AbsoluteMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|C:\\ZendionINC\\agrobot_base\\AgroBase\\agrobase\\models\\modules\\sensoriamentomodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+ "RelativeMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|solutionrelative:agrobase\\models\\modules\\sensoriamentomodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
- "AbsoluteMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|C:\\ZendionINC\\agrobot_base\\AgroBase\\agrobase\\models\\operacoes\\operacaomodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
- "RelativeMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|solutionrelative:agrobase\\models\\operacoes\\operacaomodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+ "AbsoluteMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|C:\\ZendionINC\\agrobot_base\\AgroBase\\agrobase\\services\\gpsservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+ "RelativeMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|solutionrelative:agrobase\\services\\gpsservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
}
],
"DocumentGroupContainers": [
@@ -30,70 +30,68 @@
"DocumentGroups": [
{
"DockedWidth": 200,
- "SelectedChildIndex": 2,
+ "SelectedChildIndex": 3,
"Children": [
- {
- "$type": "Document",
- "DocumentIndex": 2,
- "Title": "frmOperacaoMapaGPS.cs",
- "DocumentMoniker": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Forms\\Operacoes\\frmOperacaoMapaGPS.cs",
- "RelativeDocumentMoniker": "AgroBase\\Forms\\Operacoes\\frmOperacaoMapaGPS.cs",
- "ToolTip": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Forms\\Operacoes\\frmOperacaoMapaGPS.cs",
- "RelativeToolTip": "AgroBase\\Forms\\Operacoes\\frmOperacaoMapaGPS.cs",
- "ViewState": "AQIAAE8BAAAAAAAAAAAuwGUBAAAMAAAA",
- "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
- "WhenOpened": "2024-04-02T18:31:03.966Z",
- "EditorCaption": ""
- },
{
"$type": "Document",
"DocumentIndex": 1,
- "Title": "frmOperacaoManual.cs",
- "DocumentMoniker": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Forms\\Operacoes\\frmOperacaoManual.cs",
- "RelativeDocumentMoniker": "AgroBase\\Forms\\Operacoes\\frmOperacaoManual.cs",
- "ToolTip": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Forms\\Operacoes\\frmOperacaoManual.cs",
- "RelativeToolTip": "AgroBase\\Forms\\Operacoes\\frmOperacaoManual.cs",
- "ViewState": "AQIAAAsAAAAAAAAAAAAIwEwAAAAkAAAA",
+ "Title": "OperacaoMapaGPSModel.cs",
+ "DocumentMoniker": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Models\\Operacoes\\OperacaoMapaGPSModel.cs",
+ "RelativeDocumentMoniker": "AgroBase\\Models\\Operacoes\\OperacaoMapaGPSModel.cs",
+ "ToolTip": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Models\\Operacoes\\OperacaoMapaGPSModel.cs",
+ "RelativeToolTip": "AgroBase\\Models\\Operacoes\\OperacaoMapaGPSModel.cs",
+ "ViewState": "AQIAAGACAAAAAAAAAAAnwHUCAAAmAAAA",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
- "WhenOpened": "2024-04-02T10:59:16.426Z",
- "EditorCaption": ""
- },
- {
- "$type": "Document",
- "DocumentIndex": 0,
- "Title": "frmOperacaoManual.cs [Design]",
- "DocumentMoniker": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Forms\\Operacoes\\frmOperacaoManual.cs",
- "RelativeDocumentMoniker": "AgroBase\\Forms\\Operacoes\\frmOperacaoManual.cs",
- "ToolTip": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Forms\\Operacoes\\frmOperacaoManual.cs [Design]",
- "RelativeToolTip": "AgroBase\\Forms\\Operacoes\\frmOperacaoManual.cs [Design]",
- "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
- "WhenOpened": "2024-04-02T00:33:46.091Z",
- "EditorCaption": " [Design]"
+ "WhenOpened": "2024-04-12T13:21:22.58Z"
},
{
"$type": "Document",
"DocumentIndex": 3,
- "Title": "frmOperacaoMapaGPS.cs [Design]",
- "DocumentMoniker": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Forms\\Operacoes\\frmOperacaoMapaGPS.cs",
- "RelativeDocumentMoniker": "AgroBase\\Forms\\Operacoes\\frmOperacaoMapaGPS.cs",
- "ToolTip": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Forms\\Operacoes\\frmOperacaoMapaGPS.cs [Design]",
- "RelativeToolTip": "AgroBase\\Forms\\Operacoes\\frmOperacaoMapaGPS.cs [Design]",
+ "Title": "SensoriamentoModel.cs",
+ "DocumentMoniker": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Models\\Modules\\SensoriamentoModel.cs",
+ "RelativeDocumentMoniker": "AgroBase\\Models\\Modules\\SensoriamentoModel.cs",
+ "ToolTip": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Models\\Modules\\SensoriamentoModel.cs",
+ "RelativeToolTip": "AgroBase\\Models\\Modules\\SensoriamentoModel.cs",
+ "ViewState": "AQIAAPcBAAAAAAAAAAArwCICAAArAAAA",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
- "WhenOpened": "2024-04-02T00:34:02.185Z",
- "EditorCaption": " [Design]"
+ "WhenOpened": "2024-04-12T11:06:00.27Z"
+ },
+ {
+ "$type": "Document",
+ "DocumentIndex": 2,
+ "Title": "SonarModel.cs",
+ "DocumentMoniker": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Models\\SonarModel.cs",
+ "RelativeDocumentMoniker": "AgroBase\\Models\\SonarModel.cs",
+ "ToolTip": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Models\\SonarModel.cs",
+ "RelativeToolTip": "AgroBase\\Models\\SonarModel.cs",
+ "ViewState": "AQIAADkAAAAAAAAAAAAvwFMAAAAMAAAA",
+ "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+ "WhenOpened": "2024-04-11T23:46:37.051Z"
+ },
+ {
+ "$type": "Document",
+ "DocumentIndex": 0,
+ "Title": "MapasModel.cs",
+ "DocumentMoniker": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Models\\MapasModel.cs",
+ "RelativeDocumentMoniker": "AgroBase\\Models\\MapasModel.cs",
+ "ToolTip": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Models\\MapasModel.cs",
+ "RelativeToolTip": "AgroBase\\Models\\MapasModel.cs",
+ "ViewState": "AQIAAJAAAAAAAAAAAAAEwKwAAAAsAAAA",
+ "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+ "WhenOpened": "2024-04-11T21:39:31.046Z",
+ "EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 4,
- "Title": "OperacaoModel.cs",
- "DocumentMoniker": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Models\\Operacoes\\OperacaoModel.cs",
- "RelativeDocumentMoniker": "AgroBase\\Models\\Operacoes\\OperacaoModel.cs",
- "ToolTip": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Models\\Operacoes\\OperacaoModel.cs",
- "RelativeToolTip": "AgroBase\\Models\\Operacoes\\OperacaoModel.cs",
- "ViewState": "AQIAAGECAAAAAAAAAAAzwAoDAAAAAAAA",
+ "Title": "GPSService.cs",
+ "DocumentMoniker": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Services\\GPSService.cs",
+ "RelativeDocumentMoniker": "AgroBase\\Services\\GPSService.cs",
+ "ToolTip": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Services\\GPSService.cs",
+ "RelativeToolTip": "AgroBase\\Services\\GPSService.cs",
+ "ViewState": "AQIAAKwAAAAAAAAAAAD4v+IAAAAIAAAA",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
- "WhenOpened": "2024-04-01T16:36:28.825Z",
- "EditorCaption": ""
+ "WhenOpened": "2024-04-11T21:39:24.948Z"
}
]
}
diff --git a/AgroBase/AgroBase/.vs/AgroBase.csproj.dtbcache.json b/AgroBase/AgroBase/.vs/AgroBase.csproj.dtbcache.json
index 496abafa5..aee4c534f 100644
--- a/AgroBase/AgroBase/.vs/AgroBase.csproj.dtbcache.json
+++ b/AgroBase/AgroBase/.vs/AgroBase.csproj.dtbcache.json
@@ -1 +1 @@
-{"RootPath":"C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase","ProjectFileName":"AgroBase.csproj","Configuration":"Debug|AnyCPU","FrameworkPath":"","Sources":[{"SourceFile":"Forms\\Atuador\\frmAtuCalibragem.cs"},{"SourceFile":"Forms\\Atuador\\frmAtuCalibragem.Designer.cs"},{"SourceFile":"Forms\\Atuador\\frmAtuConfig.cs"},{"SourceFile":"Forms\\Atuador\\frmAtuConfig.Designer.cs"},{"SourceFile":"Forms\\Direcional\\frmDirConfig.cs"},{"SourceFile":"Forms\\Direcional\\frmDirConfig.Designer.cs"},{"SourceFile":"Forms\\Direcional\\frmDirPlot.cs"},{"SourceFile":"Forms\\Direcional\\frmDirPlot.Designer.cs"},{"SourceFile":"Forms\\frmAcompanhamento.cs"},{"SourceFile":"Forms\\frmAcompanhamento.Designer.cs"},{"SourceFile":"Forms\\Atuador\\frmAtuCamera.cs"},{"SourceFile":"Forms\\Atuador\\frmAtuCamera.Designer.cs"},{"SourceFile":"Forms\\frmGPS.cs"},{"SourceFile":"Forms\\frmGPS.Designer.cs"},{"SourceFile":"Forms\\frmMapa.cs"},{"SourceFile":"Forms\\frmMapa.Designer.cs"},{"SourceFile":"Forms\\frmPinout.cs"},{"SourceFile":"Forms\\frmPinout.Designer.cs"},{"SourceFile":"Forms\\IHM\\frmIHM.cs"},{"SourceFile":"Forms\\IHM\\frmIHM.Designer.cs"},{"SourceFile":"Forms\\Movimentacao\\frmMovCamera.cs"},{"SourceFile":"Forms\\Movimentacao\\frmMovCamera.Designer.cs"},{"SourceFile":"Forms\\Movimentacao\\frmMovDiagnosticos.cs"},{"SourceFile":"Forms\\Movimentacao\\frmMovDiagnosticos.Designer.cs"},{"SourceFile":"Forms\\frmInstancial.cs"},{"SourceFile":"Forms\\frmInstancial.Designer.cs"},{"SourceFile":"Forms\\frmJoystick.cs"},{"SourceFile":"Forms\\frmJoystick.Designer.cs"},{"SourceFile":"Forms\\Movimentacao\\frmMovConfig.cs"},{"SourceFile":"Forms\\Movimentacao\\frmMovConfig.Designer.cs"},{"SourceFile":"Forms\\Movimentacao\\frmMovPlot.cs"},{"SourceFile":"Forms\\Movimentacao\\frmMovPlot.Designer.cs"},{"SourceFile":"Forms\\Operacoes\\frmInicioOperacao.cs"},{"SourceFile":"Forms\\Operacoes\\frmInicioOperacao.Designer.cs"},{"SourceFile":"Forms\\Operacoes\\frmOperacaoMapaGPS.cs"},{"SourceFile":"Forms\\Operacoes\\frmOperacaoSeguidorLinha.Designer.cs"},{"SourceFile":"Forms\\Operacoes\\frmParametrizacaoOperacao.cs"},{"SourceFile":"Forms\\Operacoes\\frmParametrizacaoOperacao.Designer.cs"},{"SourceFile":"Forms\\Sensoriamento\\frmSenCamera.cs"},{"SourceFile":"Forms\\Sensoriamento\\frmSenCamera.Designer.cs"},{"SourceFile":"Forms\\Sensoriamento\\frmSenConfig.cs"},{"SourceFile":"Forms\\Sensoriamento\\frmSenConfig.Designer.cs"},{"SourceFile":"Models\\AlarmeModel.cs"},{"SourceFile":"Models\\CameraCaminhoModel.cs"},{"SourceFile":"Models\\CameraModel.cs"},{"SourceFile":"Models\\CameraSoloModel.cs"},{"SourceFile":"Models\\GPSModel.cs"},{"SourceFile":"Models\\MapasModel.cs"},{"SourceFile":"Models\\Modules\\AtuadorModel.cs"},{"SourceFile":"Models\\Modules\\DirecionalModel.cs"},{"SourceFile":"Models\\Modules\\DispositivoBaseModel.cs"},{"SourceFile":"Models\\Enuns.cs"},{"SourceFile":"Models\\GeneralJoystick.cs"},{"SourceFile":"Models\\Modules\\MovimentacaoModel.cs"},{"SourceFile":"Models\\Modules\\PinoutModel.cs"},{"SourceFile":"Models\\Modules\\SensoriamentoModel.cs"},{"SourceFile":"Models\\MotorComum.cs"},{"SourceFile":"Models\\Operacoes\\OperacaoModel.cs"},{"SourceFile":"Models\\PIDModel.cs"},{"SourceFile":"Models\\PZEMModel.cs"},{"SourceFile":"Models\\Variaveis.cs"},{"SourceFile":"Services\\APIService.cs"},{"SourceFile":"Services\\CameraService.cs"},{"SourceFile":"Services\\DispositivosService.cs"},{"SourceFile":"Forms\\frmPrincipal.cs"},{"SourceFile":"Forms\\frmPrincipal.Designer.cs"},{"SourceFile":"Program.cs"},{"SourceFile":"Properties\\AssemblyInfo.cs"},{"SourceFile":"Services\\DispositivosServiceFactory.cs"},{"SourceFile":"Services\\GPSService.cs"},{"SourceFile":"Services\\IDispositivosService.cs"},{"SourceFile":"Services\\MapasService.cs"},{"SourceFile":"Services\\MqttService.cs"},{"SourceFile":"Services\\PythonService.cs"},{"SourceFile":"Services\\PZEMService.cs"},{"SourceFile":"Services\\SerialService.cs"},{"SourceFile":"Services\\SocketService.cs"},{"SourceFile":"Properties\\Resources.Designer.cs"},{"SourceFile":"Properties\\Settings.Designer.cs"},{"SourceFile":"obj\\Debug\\.NETFramework,Version=v4.7.2.AssemblyAttributes.cs"}],"References":[{"Reference":"C:\\ZendionINC\\agrobot_base\\AgroBase\\packages\\AForge.2.2.5\\lib\\AForge.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\ZendionINC\\agrobot_base\\AgroBase\\packages\\AForge.Video.DirectShow.2.2.5\\lib\\AForge.Video.DirectShow.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\ZendionINC\\agrobot_base\\AgroBase\\packages\\AForge.Video.2.2.5\\lib\\AForge.Video.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\ZendionINC\\agrobot_base\\AgroBase\\packages\\CefSharp.Common.119.4.30\\lib\\net462\\CefSharp.Core.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\ZendionINC\\agrobot_base\\AgroBase\\packages\\CefSharp.Common.119.4.30\\lib\\net462\\CefSharp.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\ZendionINC\\agrobot_base\\AgroBase\\packages\\CefSharp.WinForms.119.4.30\\lib\\net462\\CefSharp.WinForms.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\ZendionINC\\agrobot_base\\AgroBase\\packages\\Emgu.CV.4.8.1.5350\\lib\\netstandard2.0\\Emgu.CV.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\ZendionINC\\agrobot_base\\AgroBase\\packages\\Microsoft.Bcl.AsyncInterfaces.7.0.0\\lib\\net462\\Microsoft.Bcl.AsyncInterfaces.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\Microsoft.CSharp.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Microsoft.DirectX.DirectInput.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Microsoft.DirectX.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\ZendionINC\\agrobot_base\\AgroBase\\packages\\MQTTnet.3.1.1\\lib\\net461\\MQTTnet.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\mscorlib.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\ZendionINC\\agrobot_base\\AgroBase\\packages\\Newtonsoft.Json.13.0.3\\lib\\net45\\Newtonsoft.Json.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\ZendionINC\\agrobot_base\\AgroBase\\packages\\OpenTK.1.1.2225.0\\lib\\net20\\OpenTK.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\ZendionINC\\agrobot_base\\AgroBase\\packages\\OpenTK.GLControl.1.1.2225.0\\lib\\net20\\OpenTK.GLControl.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\ZendionINC\\agrobot_base\\AgroBase\\packages\\SharpDX.DirectInput.4.2.0\\lib\\net45\\SharpDX.DirectInput.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\ZendionINC\\agrobot_base\\AgroBase\\packages\\SharpDX.4.2.0\\lib\\net45\\SharpDX.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\ZendionINC\\agrobot_base\\AgroBase\\packages\\System.Buffers.4.5.1\\lib\\net461\\System.Buffers.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\ZendionINC\\agrobot_base\\AgroBase\\packages\\System.CodeDom.8.0.0\\lib\\net462\\System.CodeDom.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.ComponentModel.Composition.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Core.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Data.DataSetExtensions.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Data.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Deployment.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Drawing.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\Facades\\System.Drawing.Primitives.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Management.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\ZendionINC\\agrobot_base\\AgroBase\\packages\\System.Memory.4.5.5\\lib\\net461\\System.Memory.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Net.Http.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Numerics.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\ZendionINC\\agrobot_base\\AgroBase\\packages\\System.Numerics.Vectors.4.5.0\\lib\\net46\\System.Numerics.Vectors.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\ZendionINC\\agrobot_base\\AgroBase\\packages\\System.Runtime.CompilerServices.Unsafe.6.0.0\\lib\\net461\\System.Runtime.CompilerServices.Unsafe.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\Facades\\System.Runtime.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\Facades\\System.Runtime.InteropServices.RuntimeInformation.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\ZendionINC\\agrobot_base\\AgroBase\\packages\\System.Text.Encodings.Web.7.0.0\\lib\\net462\\System.Text.Encodings.Web.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\ZendionINC\\agrobot_base\\AgroBase\\packages\\System.Text.Json.7.0.3\\lib\\net462\\System.Text.Json.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\ZendionINC\\agrobot_base\\AgroBase\\packages\\System.Threading.Tasks.Extensions.4.5.4\\lib\\net461\\System.Threading.Tasks.Extensions.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\ZendionINC\\agrobot_base\\AgroBase\\packages\\System.ValueTuple.4.5.0\\lib\\net47\\System.ValueTuple.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Windows.Forms.DataVisualization.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Windows.Forms.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Xml.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Xml.Linq.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Windows\\System32\\WinMetadata\\Windows.Gaming.winmd","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\ZendionINC\\agrobot_base\\AgroBase\\packages\\ZedGraph.5.1.5\\lib\\ZedGraph.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""}],"Analyzers":[],"Outputs":[{"OutputItemFullPath":"C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\bin\\Debug\\AgroBase.exe","OutputItemRelativePath":"AgroBase.exe"},{"OutputItemFullPath":"C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\bin\\Debug\\AgroBase.pdb","OutputItemRelativePath":"AgroBase.pdb"}],"CopyToOutputEntries":[]}
\ No newline at end of file
+{"RootPath":"C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase","ProjectFileName":"AgroBase.csproj","Configuration":"Debug|AnyCPU","FrameworkPath":"","Sources":[{"SourceFile":"Forms\\Atuador\\frmAtuCalibragem.cs"},{"SourceFile":"Forms\\Atuador\\frmAtuCalibragem.Designer.cs"},{"SourceFile":"Forms\\Atuador\\frmAtuConfig.cs"},{"SourceFile":"Forms\\Atuador\\frmAtuConfig.Designer.cs"},{"SourceFile":"Forms\\Direcional\\frmDirConfig.cs"},{"SourceFile":"Forms\\Direcional\\frmDirConfig.Designer.cs"},{"SourceFile":"Forms\\Direcional\\frmDirPlot.cs"},{"SourceFile":"Forms\\Direcional\\frmDirPlot.Designer.cs"},{"SourceFile":"Forms\\frmAcompanhamento.cs"},{"SourceFile":"Forms\\frmAcompanhamento.Designer.cs"},{"SourceFile":"Forms\\Atuador\\frmAtuCamera.cs"},{"SourceFile":"Forms\\Atuador\\frmAtuCamera.Designer.cs"},{"SourceFile":"Forms\\frmGPS.cs"},{"SourceFile":"Forms\\frmGPS.Designer.cs"},{"SourceFile":"Forms\\frmMapa.cs"},{"SourceFile":"Forms\\frmMapa.Designer.cs"},{"SourceFile":"Forms\\frmPinout.cs"},{"SourceFile":"Forms\\frmPinout.Designer.cs"},{"SourceFile":"Forms\\IHM\\frmIHM.cs"},{"SourceFile":"Forms\\IHM\\frmIHM.Designer.cs"},{"SourceFile":"Forms\\Movimentacao\\frmMovCamera.cs"},{"SourceFile":"Forms\\Movimentacao\\frmMovCamera.Designer.cs"},{"SourceFile":"Forms\\Movimentacao\\frmMovDiagnosticos.cs"},{"SourceFile":"Forms\\Movimentacao\\frmMovDiagnosticos.Designer.cs"},{"SourceFile":"Forms\\frmInstancial.cs"},{"SourceFile":"Forms\\frmInstancial.Designer.cs"},{"SourceFile":"Forms\\frmJoystick.cs"},{"SourceFile":"Forms\\frmJoystick.Designer.cs"},{"SourceFile":"Forms\\Movimentacao\\frmMovConfig.cs"},{"SourceFile":"Forms\\Movimentacao\\frmMovConfig.Designer.cs"},{"SourceFile":"Forms\\Movimentacao\\frmMovPlot.cs"},{"SourceFile":"Forms\\Movimentacao\\frmMovPlot.Designer.cs"},{"SourceFile":"Forms\\Operacoes\\frmInicioOperacao.cs"},{"SourceFile":"Forms\\Operacoes\\frmInicioOperacao.Designer.cs"},{"SourceFile":"Forms\\Operacoes\\frmOperacaoManual.cs"},{"SourceFile":"Forms\\Operacoes\\frmOperacaoManual.Designer.cs"},{"SourceFile":"Forms\\Operacoes\\frmOperacaoMapaGPS.cs"},{"SourceFile":"Forms\\Operacoes\\frmOperacaoSeguidorLinha.Designer.cs"},{"SourceFile":"Forms\\Operacoes\\frmParametrizacaoOperacao.cs"},{"SourceFile":"Forms\\Operacoes\\frmParametrizacaoOperacao.Designer.cs"},{"SourceFile":"Forms\\Sensoriamento\\frmSenCamera.cs"},{"SourceFile":"Forms\\Sensoriamento\\frmSenCamera.Designer.cs"},{"SourceFile":"Forms\\Sensoriamento\\frmSenConfig.cs"},{"SourceFile":"Forms\\Sensoriamento\\frmSenConfig.Designer.cs"},{"SourceFile":"Models\\AlarmeModel.cs"},{"SourceFile":"Models\\CameraCaminhoModel.cs"},{"SourceFile":"Models\\CameraModel.cs"},{"SourceFile":"Models\\CameraSoloModel.cs"},{"SourceFile":"Models\\GPSModel.cs"},{"SourceFile":"Models\\MapasModel.cs"},{"SourceFile":"Models\\Modules\\AtuadorModel.cs"},{"SourceFile":"Models\\Modules\\DirecionalModel.cs"},{"SourceFile":"Models\\Modules\\DispositivoBaseModel.cs"},{"SourceFile":"Models\\Enuns.cs"},{"SourceFile":"Models\\GeneralJoystick.cs"},{"SourceFile":"Models\\Modules\\MovimentacaoModel.cs"},{"SourceFile":"Models\\Modules\\PinoutModel.cs"},{"SourceFile":"Models\\Modules\\SensoriamentoModel.cs"},{"SourceFile":"Models\\MotorComum.cs"},{"SourceFile":"Models\\Operacoes\\OperacaoManualModel.cs"},{"SourceFile":"Models\\Operacoes\\OperacaoMapaGPSModel.cs"},{"SourceFile":"Models\\Operacoes\\OperacaoModel.cs"},{"SourceFile":"Models\\PIDModel.cs"},{"SourceFile":"Models\\PZEMModel.cs"},{"SourceFile":"Models\\Variaveis.cs"},{"SourceFile":"Services\\APIService.cs"},{"SourceFile":"Services\\CameraService.cs"},{"SourceFile":"Services\\DispositivosService.cs"},{"SourceFile":"Forms\\frmPrincipal.cs"},{"SourceFile":"Forms\\frmPrincipal.Designer.cs"},{"SourceFile":"Program.cs"},{"SourceFile":"Properties\\AssemblyInfo.cs"},{"SourceFile":"Services\\DispositivosServiceFactory.cs"},{"SourceFile":"Services\\GPSService.cs"},{"SourceFile":"Services\\IDispositivosService.cs"},{"SourceFile":"Services\\MapasService.cs"},{"SourceFile":"Services\\MqttService.cs"},{"SourceFile":"Services\\PythonService.cs"},{"SourceFile":"Services\\PZEMService.cs"},{"SourceFile":"Services\\SerialService.cs"},{"SourceFile":"Services\\SocketService.cs"},{"SourceFile":"Properties\\Resources.Designer.cs"},{"SourceFile":"Properties\\Settings.Designer.cs"},{"SourceFile":"obj\\Debug\\.NETFramework,Version=v4.7.2.AssemblyAttributes.cs"}],"References":[{"Reference":"C:\\ZendionINC\\agrobot_base\\AgroBase\\packages\\AForge.2.2.5\\lib\\AForge.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\ZendionINC\\agrobot_base\\AgroBase\\packages\\AForge.Video.DirectShow.2.2.5\\lib\\AForge.Video.DirectShow.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\ZendionINC\\agrobot_base\\AgroBase\\packages\\AForge.Video.2.2.5\\lib\\AForge.Video.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\ZendionINC\\agrobot_base\\AgroBase\\packages\\CefSharp.Common.119.4.30\\lib\\net462\\CefSharp.Core.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\ZendionINC\\agrobot_base\\AgroBase\\packages\\CefSharp.Common.119.4.30\\lib\\net462\\CefSharp.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\ZendionINC\\agrobot_base\\AgroBase\\packages\\CefSharp.WinForms.119.4.30\\lib\\net462\\CefSharp.WinForms.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\ZendionINC\\agrobot_base\\AgroBase\\packages\\Emgu.CV.4.8.1.5350\\lib\\netstandard2.0\\Emgu.CV.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\ZendionINC\\agrobot_base\\AgroBase\\packages\\Microsoft.Bcl.AsyncInterfaces.7.0.0\\lib\\net462\\Microsoft.Bcl.AsyncInterfaces.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\Microsoft.CSharp.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Microsoft.DirectX.DirectInput.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Microsoft.DirectX.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\ZendionINC\\agrobot_base\\AgroBase\\packages\\MQTTnet.3.1.1\\lib\\net461\\MQTTnet.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\mscorlib.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\ZendionINC\\agrobot_base\\AgroBase\\packages\\Newtonsoft.Json.13.0.3\\lib\\net45\\Newtonsoft.Json.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\ZendionINC\\agrobot_base\\AgroBase\\packages\\OpenTK.1.1.2225.0\\lib\\net20\\OpenTK.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\ZendionINC\\agrobot_base\\AgroBase\\packages\\OpenTK.GLControl.1.1.2225.0\\lib\\net20\\OpenTK.GLControl.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\ZendionINC\\agrobot_base\\AgroBase\\packages\\SharpDX.DirectInput.4.2.0\\lib\\net45\\SharpDX.DirectInput.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\ZendionINC\\agrobot_base\\AgroBase\\packages\\SharpDX.4.2.0\\lib\\net45\\SharpDX.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\ZendionINC\\agrobot_base\\AgroBase\\packages\\System.Buffers.4.5.1\\lib\\net461\\System.Buffers.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\ZendionINC\\agrobot_base\\AgroBase\\packages\\System.CodeDom.8.0.0\\lib\\net462\\System.CodeDom.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.ComponentModel.Composition.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Core.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Data.DataSetExtensions.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Data.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Deployment.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Drawing.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\Facades\\System.Drawing.Primitives.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Management.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\ZendionINC\\agrobot_base\\AgroBase\\packages\\System.Memory.4.5.5\\lib\\net461\\System.Memory.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Net.Http.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Numerics.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\ZendionINC\\agrobot_base\\AgroBase\\packages\\System.Numerics.Vectors.4.5.0\\lib\\net46\\System.Numerics.Vectors.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\ZendionINC\\agrobot_base\\AgroBase\\packages\\System.Runtime.CompilerServices.Unsafe.6.0.0\\lib\\net461\\System.Runtime.CompilerServices.Unsafe.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\Facades\\System.Runtime.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\Facades\\System.Runtime.InteropServices.RuntimeInformation.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\ZendionINC\\agrobot_base\\AgroBase\\packages\\System.Text.Encodings.Web.7.0.0\\lib\\net462\\System.Text.Encodings.Web.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\ZendionINC\\agrobot_base\\AgroBase\\packages\\System.Text.Json.7.0.3\\lib\\net462\\System.Text.Json.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\ZendionINC\\agrobot_base\\AgroBase\\packages\\System.Threading.Tasks.Extensions.4.5.4\\lib\\net461\\System.Threading.Tasks.Extensions.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\ZendionINC\\agrobot_base\\AgroBase\\packages\\System.ValueTuple.4.5.0\\lib\\net47\\System.ValueTuple.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Windows.Forms.DataVisualization.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Windows.Forms.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Xml.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Xml.Linq.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Windows\\System32\\WinMetadata\\Windows.Gaming.winmd","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\ZendionINC\\agrobot_base\\AgroBase\\packages\\ZedGraph.5.1.5\\lib\\ZedGraph.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""}],"Analyzers":[],"Outputs":[{"OutputItemFullPath":"C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\bin\\Debug\\AgroBase.exe","OutputItemRelativePath":"AgroBase.exe"},{"OutputItemFullPath":"C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\bin\\Debug\\AgroBase.pdb","OutputItemRelativePath":"AgroBase.pdb"}],"CopyToOutputEntries":[]}
\ No newline at end of file
diff --git a/AgroBase/AgroBase/AgroBase.csproj b/AgroBase/AgroBase/AgroBase.csproj
index ab5b64641..91ee2a7f7 100644
--- a/AgroBase/AgroBase/AgroBase.csproj
+++ b/AgroBase/AgroBase/AgroBase.csproj
@@ -222,6 +222,12 @@
frmPinout.cs
+
+ Form
+
+
+ frmSimulacaoMapaGPS.cs
+
Form
@@ -300,6 +306,12 @@
frmSenConfig.cs
+
+ Form
+
+
+ frmSonar.cs
+
@@ -315,9 +327,12 @@
+
+
+
@@ -340,6 +355,8 @@
+
+
@@ -444,6 +461,9 @@
frmPinout.cs
+
+ frmSimulacaoMapaGPS.cs
+
frmIHM.cs
@@ -486,6 +506,9 @@
frmSenConfig.cs
+
+ frmSonar.cs
+
ResXFileCodeGenerator
Resources.Designer.cs
diff --git a/AgroBase/AgroBase/Forms/IHM/frmIHM.Designer.cs b/AgroBase/AgroBase/Forms/IHM/frmIHM.Designer.cs
index 5075a8120..799f986c6 100644
--- a/AgroBase/AgroBase/Forms/IHM/frmIHM.Designer.cs
+++ b/AgroBase/AgroBase/Forms/IHM/frmIHM.Designer.cs
@@ -28,8 +28,6 @@
///
private void InitializeComponent()
{
- System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(frmIHM));
- this.picRobo = new System.Windows.Forms.PictureBox();
this.lblD_Mov = new System.Windows.Forms.Label();
this.lblD_Dir = new System.Windows.Forms.Label();
this.lblD_Atu = new System.Windows.Forms.Label();
@@ -42,23 +40,15 @@
this.lblOperacaoStatus = new System.Windows.Forms.Label();
this.lblMqtt = new System.Windows.Forms.Label();
this.lblD_PZM = new System.Windows.Forms.Label();
+ this.picRobo = new System.Windows.Forms.PictureBox();
((System.ComponentModel.ISupportInitialize)(this.picRobo)).BeginInit();
this.SuspendLayout();
//
- // picRobo
- //
- this.picRobo.Image = ((System.Drawing.Image)(resources.GetObject("picRobo.Image")));
- this.picRobo.Location = new System.Drawing.Point(111, 12);
- this.picRobo.Name = "picRobo";
- this.picRobo.Size = new System.Drawing.Size(370, 673);
- this.picRobo.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
- this.picRobo.TabIndex = 1;
- this.picRobo.TabStop = false;
- //
// lblD_Mov
//
this.lblD_Mov.AutoSize = true;
- this.lblD_Mov.Location = new System.Drawing.Point(457, 40);
+ this.lblD_Mov.BackColor = System.Drawing.Color.Transparent;
+ this.lblD_Mov.Location = new System.Drawing.Point(414, 33);
this.lblD_Mov.Name = "lblD_Mov";
this.lblD_Mov.Size = new System.Drawing.Size(169, 29);
this.lblD_Mov.TabIndex = 2;
@@ -67,7 +57,7 @@
// lblD_Dir
//
this.lblD_Dir.AutoSize = true;
- this.lblD_Dir.Location = new System.Drawing.Point(61, 422);
+ this.lblD_Dir.Location = new System.Drawing.Point(72, 121);
this.lblD_Dir.Name = "lblD_Dir";
this.lblD_Dir.Size = new System.Drawing.Size(122, 29);
this.lblD_Dir.TabIndex = 3;
@@ -76,7 +66,7 @@
// lblD_Atu
//
this.lblD_Atu.AutoSize = true;
- this.lblD_Atu.Location = new System.Drawing.Point(435, 645);
+ this.lblD_Atu.Location = new System.Drawing.Point(442, 633);
this.lblD_Atu.Name = "lblD_Atu";
this.lblD_Atu.Size = new System.Drawing.Size(96, 29);
this.lblD_Atu.TabIndex = 4;
@@ -85,7 +75,8 @@
// lblD_Sen
//
this.lblD_Sen.AutoSize = true;
- this.lblD_Sen.Location = new System.Drawing.Point(311, 519);
+ this.lblD_Sen.BackColor = System.Drawing.Color.Lavender;
+ this.lblD_Sen.Location = new System.Drawing.Point(430, 324);
this.lblD_Sen.Name = "lblD_Sen";
this.lblD_Sen.Size = new System.Drawing.Size(176, 29);
this.lblD_Sen.TabIndex = 5;
@@ -94,7 +85,7 @@
// lblD_Gps
//
this.lblD_Gps.AutoSize = true;
- this.lblD_Gps.Location = new System.Drawing.Point(129, 193);
+ this.lblD_Gps.Location = new System.Drawing.Point(430, 208);
this.lblD_Gps.Name = "lblD_Gps";
this.lblD_Gps.Size = new System.Drawing.Size(63, 29);
this.lblD_Gps.TabIndex = 6;
@@ -162,16 +153,28 @@
// lblD_PZM
//
this.lblD_PZM.AutoSize = true;
- this.lblD_PZM.Location = new System.Drawing.Point(356, 306);
+ this.lblD_PZM.BackColor = System.Drawing.Color.Lavender;
+ this.lblD_PZM.Location = new System.Drawing.Point(137, 309);
this.lblD_PZM.Name = "lblD_PZM";
this.lblD_PZM.Size = new System.Drawing.Size(79, 29);
this.lblD_PZM.TabIndex = 14;
this.lblD_PZM.Text = "PZEM";
//
+ // picRobo
+ //
+ this.picRobo.Image = global::AgroBase.Properties.Resources.robo_superior;
+ this.picRobo.Location = new System.Drawing.Point(66, 12);
+ this.picRobo.Name = "picRobo";
+ this.picRobo.Size = new System.Drawing.Size(534, 673);
+ this.picRobo.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
+ this.picRobo.TabIndex = 1;
+ this.picRobo.TabStop = false;
+ //
// frmIHM
//
this.AutoScaleDimensions = new System.Drawing.SizeF(14F, 29F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.BackColor = System.Drawing.Color.White;
this.ClientSize = new System.Drawing.Size(1020, 697);
this.Controls.Add(this.lblD_PZM);
this.Controls.Add(this.lblMqtt);
diff --git a/AgroBase/AgroBase/Forms/IHM/frmIHM.cs b/AgroBase/AgroBase/Forms/IHM/frmIHM.cs
index 5a3d0bfe2..09238fc32 100644
--- a/AgroBase/AgroBase/Forms/IHM/frmIHM.cs
+++ b/AgroBase/AgroBase/Forms/IHM/frmIHM.cs
@@ -91,7 +91,7 @@ namespace AgroBase.Forms.IHM
}
}
- lblDisp.ForeColor = DispositivoConectado ? Color.Green : Color.Red;
+ lblDisp.ForeColor = Modulo.Erro ? Color.Yellow : DispositivoConectado ? Color.Green : Color.Red;
}
});
@@ -129,23 +129,7 @@ namespace AgroBase.Forms.IHM
private void btnIniciar_Click(object sender, EventArgs e)
{
- if (Variaveis.OperacaoEmAndamento.ModulosConectados)
- {
- /*if (Variaveis.OperacaoEmAndamento.Modo == ModoOperacao.Manual)
- {
- Variaveis.OperacaoEmAndamento.frmOperacao = new frmAcompanhamento();
- }
- else if (Variaveis.OperacaoEmAndamento.Modo == ModoOperacao.MapaGPS)
- {
- Variaveis.OperacaoEmAndamento.frmOperacao = new frmOperacaoMapaGPS();
- }*/
- Variaveis.OperacaoEmAndamento.frmOperacao = (Form)Activator.CreateInstance(Variaveis.OperacaoEmAndamento.frmOperacao.GetType());
- Variaveis.OperacaoEmAndamento.frmOperacao.ShowDialog();
- }
- else
- {
- MessageBox.Show(Variaveis.OperacaoEmAndamento.ErroOperacaoLiberada, "Conexão de módulos pendentes", MessageBoxButtons.OK, MessageBoxIcon.Warning);
- }
+ Variaveis.OperacaoEmAndamento.AbrirForm();
AtualizarLabelOperacao();
}
diff --git a/AgroBase/AgroBase/Forms/IHM/frmIHM.resx b/AgroBase/AgroBase/Forms/IHM/frmIHM.resx
index 05bcefc84..1af7de150 100644
--- a/AgroBase/AgroBase/Forms/IHM/frmIHM.resx
+++ b/AgroBase/AgroBase/Forms/IHM/frmIHM.resx
@@ -117,1619 +117,4 @@
System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
-
- /9j/4AAQSkZJRgABAQEAAAAAAAD/4QAiRXhpZgAATU0AKgAAAAgAAQESAAMAAAABAAEAAAAAAAD/2wBD
- AAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYU
- GBIUFRT/2wBDAQMEBAUEBQkFBQkUDQsNFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU
- FBQUFBQUFBQUFBQUFBT/wAARCAQ8AkIDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQF
- BgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAk
- M2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWG
- h4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx
- 8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQA
- AQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5
- OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmq
- srO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD9
- H91KOaZRSuA+imU4HtTAcDTqZS5qQHA4NOqPPNKOaQD6KbnFGTQA6jNNyaKB2FJzSUUmfTr6UCEJ7UhO
- KCajZqAFLYphfNNLflUZbNMB+6mls0wtxUbSUgJMimM4zULS1E0vvVgTPJzio2fioGmHrzUbSjHNAE7S
- D1xUbSe9QNKBULTe9AFhpPxpjScVWM3vTGl96ALBk96YZarGXjtTGlpoCwZPmpvmVXMvIpvm1QFvzPej
- eKqebS+YaALYbjrSq1VFkp4koAthuaeGqmJOakWQUrAWg1OBqqJOaeJKkCyG5pd4qAPml3+9AFgNx1o3
- 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
- FFFABRRRQAUUUUAFFFFArBRRRQMKKKKAP//Z
-
-
\ No newline at end of file
diff --git a/AgroBase/AgroBase/Forms/Operacoes/frmOperacaoManual.Designer.cs b/AgroBase/AgroBase/Forms/Operacoes/frmOperacaoManual.Designer.cs
index ff11d5ee8..f0ffe93b4 100644
--- a/AgroBase/AgroBase/Forms/Operacoes/frmOperacaoManual.Designer.cs
+++ b/AgroBase/AgroBase/Forms/Operacoes/frmOperacaoManual.Designer.cs
@@ -28,9 +28,9 @@
///
private void InitializeComponent()
{
- System.Windows.Forms.DataVisualization.Charting.ChartArea chartArea6 = new System.Windows.Forms.DataVisualization.Charting.ChartArea();
- System.Windows.Forms.DataVisualization.Charting.Legend legend6 = new System.Windows.Forms.DataVisualization.Charting.Legend();
- System.Windows.Forms.DataVisualization.Charting.Series series6 = new System.Windows.Forms.DataVisualization.Charting.Series();
+ System.Windows.Forms.DataVisualization.Charting.ChartArea chartArea2 = new System.Windows.Forms.DataVisualization.Charting.ChartArea();
+ System.Windows.Forms.DataVisualization.Charting.Legend legend2 = new System.Windows.Forms.DataVisualization.Charting.Legend();
+ System.Windows.Forms.DataVisualization.Charting.Series series2 = new System.Windows.Forms.DataVisualization.Charting.Series();
this.pnlCamerasSolo = new System.Windows.Forms.Panel();
this.pnlCameraSoloE = new System.Windows.Forms.Panel();
this.picCameraSoloE = new System.Windows.Forms.PictureBox();
@@ -44,29 +44,46 @@
this.lblDir_ET = new System.Windows.Forms.Label();
this.tabControl1 = new System.Windows.Forms.TabControl();
this.tabMapa = new System.Windows.Forms.TabPage();
+ this.lblGPSprecisao = new System.Windows.Forms.Label();
+ this.lblGPSaltitude = new System.Windows.Forms.Label();
+ this.lblGPSvelocidade = new System.Windows.Forms.Label();
+ this.lblGPSsatelites = new System.Windows.Forms.Label();
this.pnlMapa = new System.Windows.Forms.Panel();
+ this.lblGPS = new System.Windows.Forms.Label();
+ this.pnlAnguloGPS = new System.Windows.Forms.Panel();
+ this.pnlAnguloMagnetometro = new System.Windows.Forms.Panel();
+ this.lblMagnetometro = new System.Windows.Forms.Label();
this.tabInformacoes = new System.Windows.Forms.TabPage();
this.gridDados = new System.Windows.Forms.DataGridView();
this.tabDeteccoes = new System.Windows.Forms.TabPage();
this.pnlDeteccoesRua = new System.Windows.Forms.Panel();
- this.pnlAnguloGPS = new System.Windows.Forms.Panel();
- this.lblGPS = new System.Windows.Forms.Label();
- this.lblMagnetometro = new System.Windows.Forms.Label();
- this.pnlAnguloMagnetometro = new System.Windows.Forms.Panel();
+ this.tabPulverizador = new System.Windows.Forms.TabPage();
+ this.lblPressaoSP = new System.Windows.Forms.Label();
+ this.nudPressaoSP = new System.Windows.Forms.NumericUpDown();
+ this.btnDesligarBomba = new System.Windows.Forms.Button();
+ this.btnLigarBomba = new System.Windows.Forms.Button();
this.pnlCameraRua = new System.Windows.Forms.Panel();
this.picCameraRua = new System.Windows.Forms.PictureBox();
this.pnlDir_EF = new System.Windows.Forms.Panel();
+ this.chbLivre_EF = new System.Windows.Forms.CheckBox();
+ this.chbCmd_EF = new System.Windows.Forms.CheckBox();
+ this.btnRef_EF = new System.Windows.Forms.Button();
this.pnlDir_ET = new System.Windows.Forms.Panel();
+ this.chbLivre_ET = new System.Windows.Forms.CheckBox();
+ this.chbCmd_ET = new System.Windows.Forms.CheckBox();
+ this.btnRef_ET = new System.Windows.Forms.Button();
this.pnlDir_DT = new System.Windows.Forms.Panel();
+ this.chbLivre_DT = new System.Windows.Forms.CheckBox();
+ this.chbCmd_DT = new System.Windows.Forms.CheckBox();
+ this.btnRef_DT = new System.Windows.Forms.Button();
this.pnlDir_DF = new System.Windows.Forms.Panel();
+ this.chbLivre_DF = new System.Windows.Forms.CheckBox();
+ this.chbCmd_DF = new System.Windows.Forms.CheckBox();
+ this.btnRef_DF = new System.Windows.Forms.Button();
this.btnIniciarOperacao = new System.Windows.Forms.Button();
- this.tabPulverizador = new System.Windows.Forms.TabPage();
- this.btnLigarBomba = new System.Windows.Forms.Button();
- this.btnDesligarBomba = new System.Windows.Forms.Button();
- this.nudPressaoSP = new System.Windows.Forms.NumericUpDown();
- this.lblPressaoSP = new System.Windows.Forms.Label();
this.lblDistanciaEsquerda = new System.Windows.Forms.Label();
this.lblDistanciaDireita = new System.Windows.Forms.Label();
+ this.picSonar = new System.Windows.Forms.PictureBox();
this.pnlCamerasSolo.SuspendLayout();
this.pnlCameraSoloE.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.picCameraSoloE)).BeginInit();
@@ -78,22 +95,24 @@
this.tabInformacoes.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.gridDados)).BeginInit();
this.tabDeteccoes.SuspendLayout();
+ this.pnlDeteccoesRua.SuspendLayout();
+ this.tabPulverizador.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.nudPressaoSP)).BeginInit();
this.pnlCameraRua.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.picCameraRua)).BeginInit();
this.pnlDir_EF.SuspendLayout();
this.pnlDir_ET.SuspendLayout();
this.pnlDir_DT.SuspendLayout();
this.pnlDir_DF.SuspendLayout();
- this.tabPulverizador.SuspendLayout();
- ((System.ComponentModel.ISupportInitialize)(this.nudPressaoSP)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.picSonar)).BeginInit();
this.SuspendLayout();
//
// pnlCamerasSolo
//
- this.pnlCamerasSolo.BackColor = System.Drawing.SystemColors.ButtonFace;
+ this.pnlCamerasSolo.BackColor = System.Drawing.Color.White;
this.pnlCamerasSolo.Controls.Add(this.pnlCameraSoloE);
this.pnlCamerasSolo.Controls.Add(this.pnlCameraSoloD);
- this.pnlCamerasSolo.Location = new System.Drawing.Point(12, 404);
+ this.pnlCamerasSolo.Location = new System.Drawing.Point(31, 404);
this.pnlCamerasSolo.Name = "pnlCamerasSolo";
this.pnlCamerasSolo.Size = new System.Drawing.Size(784, 227);
this.pnlCamerasSolo.TabIndex = 0;
@@ -108,6 +127,7 @@
//
// picCameraSoloE
//
+ this.picCameraSoloE.BackColor = System.Drawing.SystemColors.ButtonFace;
this.picCameraSoloE.Dock = System.Windows.Forms.DockStyle.Fill;
this.picCameraSoloE.Location = new System.Drawing.Point(0, 0);
this.picCameraSoloE.Name = "picCameraSoloE";
@@ -126,6 +146,7 @@
//
// picCameraSoloD
//
+ this.picCameraSoloD.BackColor = System.Drawing.SystemColors.ButtonFace;
this.picCameraSoloD.Dock = System.Windows.Forms.DockStyle.Fill;
this.picCameraSoloD.Location = new System.Drawing.Point(0, 0);
this.picCameraSoloD.Name = "picCameraSoloD";
@@ -138,7 +159,7 @@
//
this.pnlAtuadores.BackColor = System.Drawing.Color.White;
this.pnlAtuadores.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
- this.pnlAtuadores.Location = new System.Drawing.Point(12, 637);
+ this.pnlAtuadores.Location = new System.Drawing.Point(31, 637);
this.pnlAtuadores.Name = "pnlAtuadores";
this.pnlAtuadores.Size = new System.Drawing.Size(784, 155);
this.pnlAtuadores.TabIndex = 1;
@@ -146,17 +167,17 @@
//
// chartGraficos
//
- chartArea6.Name = "ChartArea1";
- this.chartGraficos.ChartAreas.Add(chartArea6);
- legend6.Name = "Legend1";
- this.chartGraficos.Legends.Add(legend6);
- this.chartGraficos.Location = new System.Drawing.Point(802, 404);
+ chartArea2.Name = "ChartArea1";
+ this.chartGraficos.ChartAreas.Add(chartArea2);
+ legend2.Name = "Legend1";
+ this.chartGraficos.Legends.Add(legend2);
+ this.chartGraficos.Location = new System.Drawing.Point(854, 9);
this.chartGraficos.Name = "chartGraficos";
- series6.ChartArea = "ChartArea1";
- series6.Legend = "Legend1";
- series6.Name = "Series1";
- this.chartGraficos.Series.Add(series6);
- this.chartGraficos.Size = new System.Drawing.Size(837, 388);
+ series2.ChartArea = "ChartArea1";
+ series2.Legend = "Legend1";
+ series2.Name = "Series1";
+ this.chartGraficos.Series.Add(series2);
+ this.chartGraficos.Size = new System.Drawing.Size(785, 392);
this.chartGraficos.TabIndex = 2;
this.chartGraficos.Text = "chart1";
//
@@ -172,7 +193,7 @@
// lblDir_DF
//
this.lblDir_DF.AutoSize = true;
- this.lblDir_DF.Location = new System.Drawing.Point(3, 1);
+ this.lblDir_DF.Location = new System.Drawing.Point(1, 1);
this.lblDir_DF.Name = "lblDir_DF";
this.lblDir_DF.Size = new System.Drawing.Size(54, 16);
this.lblDir_DF.TabIndex = 10;
@@ -181,7 +202,7 @@
// lblDir_DT
//
this.lblDir_DT.AutoSize = true;
- this.lblDir_DT.Location = new System.Drawing.Point(3, 183);
+ this.lblDir_DT.Location = new System.Drawing.Point(1, 3);
this.lblDir_DT.Name = "lblDir_DT";
this.lblDir_DT.Size = new System.Drawing.Size(55, 16);
this.lblDir_DT.TabIndex = 11;
@@ -190,7 +211,7 @@
// lblDir_ET
//
this.lblDir_ET.AutoSize = true;
- this.lblDir_ET.Location = new System.Drawing.Point(1, 183);
+ this.lblDir_ET.Location = new System.Drawing.Point(1, 3);
this.lblDir_ET.Name = "lblDir_ET";
this.lblDir_ET.Size = new System.Drawing.Size(54, 16);
this.lblDir_ET.TabIndex = 12;
@@ -202,38 +223,123 @@
this.tabControl1.Controls.Add(this.tabInformacoes);
this.tabControl1.Controls.Add(this.tabDeteccoes);
this.tabControl1.Controls.Add(this.tabPulverizador);
- this.tabControl1.Location = new System.Drawing.Point(1011, 12);
+ this.tabControl1.Location = new System.Drawing.Point(854, 407);
this.tabControl1.Name = "tabControl1";
this.tabControl1.SelectedIndex = 0;
- this.tabControl1.Size = new System.Drawing.Size(628, 387);
+ this.tabControl1.Size = new System.Drawing.Size(628, 386);
this.tabControl1.TabIndex = 17;
//
// tabMapa
//
+ this.tabMapa.Controls.Add(this.lblGPSprecisao);
+ this.tabMapa.Controls.Add(this.lblGPSaltitude);
+ this.tabMapa.Controls.Add(this.lblGPSvelocidade);
+ this.tabMapa.Controls.Add(this.lblGPSsatelites);
this.tabMapa.Controls.Add(this.pnlMapa);
+ this.tabMapa.Controls.Add(this.lblGPS);
+ this.tabMapa.Controls.Add(this.pnlAnguloGPS);
+ this.tabMapa.Controls.Add(this.pnlAnguloMagnetometro);
+ this.tabMapa.Controls.Add(this.lblMagnetometro);
this.tabMapa.Location = new System.Drawing.Point(4, 25);
this.tabMapa.Name = "tabMapa";
this.tabMapa.Padding = new System.Windows.Forms.Padding(3);
- this.tabMapa.Size = new System.Drawing.Size(620, 358);
+ this.tabMapa.Size = new System.Drawing.Size(620, 357);
this.tabMapa.TabIndex = 0;
this.tabMapa.Text = "Mapa";
this.tabMapa.UseVisualStyleBackColor = true;
//
+ // lblGPSprecisao
+ //
+ this.lblGPSprecisao.AutoSize = true;
+ this.lblGPSprecisao.Location = new System.Drawing.Point(6, 143);
+ this.lblGPSprecisao.Name = "lblGPSprecisao";
+ this.lblGPSprecisao.Size = new System.Drawing.Size(105, 16);
+ this.lblGPSprecisao.TabIndex = 31;
+ this.lblGPSprecisao.Text = "Precisão: 0,00 m";
+ //
+ // lblGPSaltitude
+ //
+ this.lblGPSaltitude.AutoSize = true;
+ this.lblGPSaltitude.Location = new System.Drawing.Point(6, 175);
+ this.lblGPSaltitude.Name = "lblGPSaltitude";
+ this.lblGPSaltitude.Size = new System.Drawing.Size(88, 16);
+ this.lblGPSaltitude.TabIndex = 30;
+ this.lblGPSaltitude.Text = "Altitude: 0,0 m";
+ //
+ // lblGPSvelocidade
+ //
+ this.lblGPSvelocidade.AutoSize = true;
+ this.lblGPSvelocidade.Location = new System.Drawing.Point(6, 159);
+ this.lblGPSvelocidade.Name = "lblGPSvelocidade";
+ this.lblGPSvelocidade.Size = new System.Drawing.Size(92, 16);
+ this.lblGPSvelocidade.TabIndex = 29;
+ this.lblGPSvelocidade.Text = "Vel.: 0,00 km/h";
+ //
+ // lblGPSsatelites
+ //
+ this.lblGPSsatelites.AutoSize = true;
+ this.lblGPSsatelites.Location = new System.Drawing.Point(6, 127);
+ this.lblGPSsatelites.Name = "lblGPSsatelites";
+ this.lblGPSsatelites.Size = new System.Drawing.Size(67, 16);
+ this.lblGPSsatelites.TabIndex = 28;
+ this.lblGPSsatelites.Text = "0 satélites";
+ //
// pnlMapa
//
- this.pnlMapa.Dock = System.Windows.Forms.DockStyle.Fill;
- this.pnlMapa.Location = new System.Drawing.Point(3, 3);
+ this.pnlMapa.Location = new System.Drawing.Point(119, 3);
this.pnlMapa.Name = "pnlMapa";
- this.pnlMapa.Size = new System.Drawing.Size(614, 352);
+ this.pnlMapa.Size = new System.Drawing.Size(498, 352);
this.pnlMapa.TabIndex = 0;
//
+ // lblGPS
+ //
+ this.lblGPS.AutoSize = true;
+ this.lblGPS.Location = new System.Drawing.Point(6, 3);
+ this.lblGPS.Name = "lblGPS";
+ this.lblGPS.Size = new System.Drawing.Size(35, 16);
+ this.lblGPS.TabIndex = 19;
+ this.lblGPS.Text = "GPS";
+ //
+ // pnlAnguloGPS
+ //
+ this.pnlAnguloGPS.BackColor = System.Drawing.Color.White;
+ this.pnlAnguloGPS.BackgroundImage = global::AgroBase.Properties.Resources.rosa_dos_ventos;
+ this.pnlAnguloGPS.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom;
+ this.pnlAnguloGPS.Location = new System.Drawing.Point(9, 22);
+ this.pnlAnguloGPS.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.pnlAnguloGPS.Name = "pnlAnguloGPS";
+ this.pnlAnguloGPS.Size = new System.Drawing.Size(104, 103);
+ this.pnlAnguloGPS.TabIndex = 18;
+ this.pnlAnguloGPS.Paint += new System.Windows.Forms.PaintEventHandler(this.pnlAnguloGPS_Paint);
+ //
+ // pnlAnguloMagnetometro
+ //
+ this.pnlAnguloMagnetometro.BackColor = System.Drawing.Color.White;
+ this.pnlAnguloMagnetometro.BackgroundImage = global::AgroBase.Properties.Resources.rosa_dos_ventos;
+ this.pnlAnguloMagnetometro.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom;
+ this.pnlAnguloMagnetometro.Location = new System.Drawing.Point(9, 250);
+ this.pnlAnguloMagnetometro.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.pnlAnguloMagnetometro.Name = "pnlAnguloMagnetometro";
+ this.pnlAnguloMagnetometro.Size = new System.Drawing.Size(104, 103);
+ this.pnlAnguloMagnetometro.TabIndex = 20;
+ this.pnlAnguloMagnetometro.Paint += new System.Windows.Forms.PaintEventHandler(this.pnlAnguloMagnetometro_Paint);
+ //
+ // lblMagnetometro
+ //
+ this.lblMagnetometro.AutoSize = true;
+ this.lblMagnetometro.Location = new System.Drawing.Point(6, 231);
+ this.lblMagnetometro.Name = "lblMagnetometro";
+ this.lblMagnetometro.Size = new System.Drawing.Size(94, 16);
+ this.lblMagnetometro.TabIndex = 21;
+ this.lblMagnetometro.Text = "Magnetômetro";
+ //
// tabInformacoes
//
this.tabInformacoes.Controls.Add(this.gridDados);
this.tabInformacoes.Location = new System.Drawing.Point(4, 25);
this.tabInformacoes.Name = "tabInformacoes";
this.tabInformacoes.Padding = new System.Windows.Forms.Padding(3);
- this.tabInformacoes.Size = new System.Drawing.Size(620, 358);
+ this.tabInformacoes.Size = new System.Drawing.Size(620, 357);
this.tabInformacoes.TabIndex = 1;
this.tabInformacoes.Text = "Informações";
this.tabInformacoes.UseVisualStyleBackColor = true;
@@ -246,7 +352,7 @@
this.gridDados.Name = "gridDados";
this.gridDados.RowHeadersWidth = 51;
this.gridDados.RowTemplate.Height = 24;
- this.gridDados.Size = new System.Drawing.Size(614, 352);
+ this.gridDados.Size = new System.Drawing.Size(614, 351);
this.gridDados.TabIndex = 0;
//
// tabDeteccoes
@@ -255,122 +361,20 @@
this.tabDeteccoes.Location = new System.Drawing.Point(4, 25);
this.tabDeteccoes.Name = "tabDeteccoes";
this.tabDeteccoes.Padding = new System.Windows.Forms.Padding(3);
- this.tabDeteccoes.Size = new System.Drawing.Size(620, 358);
+ this.tabDeteccoes.Size = new System.Drawing.Size(620, 357);
this.tabDeteccoes.TabIndex = 2;
this.tabDeteccoes.Text = "Detecção rua";
this.tabDeteccoes.UseVisualStyleBackColor = true;
//
// pnlDeteccoesRua
//
+ this.pnlDeteccoesRua.Controls.Add(this.picSonar);
this.pnlDeteccoesRua.Dock = System.Windows.Forms.DockStyle.Fill;
this.pnlDeteccoesRua.Location = new System.Drawing.Point(3, 3);
this.pnlDeteccoesRua.Name = "pnlDeteccoesRua";
- this.pnlDeteccoesRua.Size = new System.Drawing.Size(614, 352);
+ this.pnlDeteccoesRua.Size = new System.Drawing.Size(614, 351);
this.pnlDeteccoesRua.TabIndex = 0;
//
- // pnlAnguloGPS
- //
- this.pnlAnguloGPS.BackColor = System.Drawing.Color.White;
- this.pnlAnguloGPS.BackgroundImage = global::AgroBase.Properties.Resources.rosa_dos_ventos;
- this.pnlAnguloGPS.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom;
- this.pnlAnguloGPS.Location = new System.Drawing.Point(879, 37);
- this.pnlAnguloGPS.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
- this.pnlAnguloGPS.Name = "pnlAnguloGPS";
- this.pnlAnguloGPS.Size = new System.Drawing.Size(104, 103);
- this.pnlAnguloGPS.TabIndex = 18;
- this.pnlAnguloGPS.Paint += new System.Windows.Forms.PaintEventHandler(this.pnlAnguloGPS_Paint);
- //
- // lblGPS
- //
- this.lblGPS.AutoSize = true;
- this.lblGPS.Location = new System.Drawing.Point(876, 18);
- this.lblGPS.Name = "lblGPS";
- this.lblGPS.Size = new System.Drawing.Size(35, 16);
- this.lblGPS.TabIndex = 19;
- this.lblGPS.Text = "GPS";
- //
- // lblMagnetometro
- //
- this.lblMagnetometro.AutoSize = true;
- this.lblMagnetometro.Location = new System.Drawing.Point(876, 165);
- this.lblMagnetometro.Name = "lblMagnetometro";
- this.lblMagnetometro.Size = new System.Drawing.Size(94, 16);
- this.lblMagnetometro.TabIndex = 21;
- this.lblMagnetometro.Text = "Magnetômetro";
- //
- // pnlAnguloMagnetometro
- //
- this.pnlAnguloMagnetometro.BackColor = System.Drawing.Color.White;
- this.pnlAnguloMagnetometro.BackgroundImage = global::AgroBase.Properties.Resources.rosa_dos_ventos;
- this.pnlAnguloMagnetometro.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom;
- this.pnlAnguloMagnetometro.Location = new System.Drawing.Point(879, 184);
- this.pnlAnguloMagnetometro.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
- this.pnlAnguloMagnetometro.Name = "pnlAnguloMagnetometro";
- this.pnlAnguloMagnetometro.Size = new System.Drawing.Size(104, 103);
- this.pnlAnguloMagnetometro.TabIndex = 20;
- this.pnlAnguloMagnetometro.Paint += new System.Windows.Forms.PaintEventHandler(this.pnlAnguloMagnetometro_Paint);
- //
- // pnlCameraRua
- //
- this.pnlCameraRua.Controls.Add(this.picCameraRua);
- this.pnlCameraRua.Location = new System.Drawing.Point(186, 28);
- this.pnlCameraRua.Name = "pnlCameraRua";
- this.pnlCameraRua.Size = new System.Drawing.Size(476, 369);
- this.pnlCameraRua.TabIndex = 22;
- //
- // picCameraRua
- //
- this.picCameraRua.Dock = System.Windows.Forms.DockStyle.Fill;
- this.picCameraRua.Location = new System.Drawing.Point(0, 0);
- this.picCameraRua.Name = "picCameraRua";
- this.picCameraRua.Size = new System.Drawing.Size(476, 369);
- this.picCameraRua.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
- this.picCameraRua.TabIndex = 0;
- this.picCameraRua.TabStop = false;
- //
- // pnlDir_EF
- //
- this.pnlDir_EF.Controls.Add(this.lblDir_EF);
- this.pnlDir_EF.Location = new System.Drawing.Point(0, 0);
- this.pnlDir_EF.Name = "pnlDir_EF";
- this.pnlDir_EF.Size = new System.Drawing.Size(200, 200);
- this.pnlDir_EF.TabIndex = 23;
- //
- // pnlDir_ET
- //
- this.pnlDir_ET.Controls.Add(this.lblDir_ET);
- this.pnlDir_ET.Location = new System.Drawing.Point(0, 200);
- this.pnlDir_ET.Name = "pnlDir_ET";
- this.pnlDir_ET.Size = new System.Drawing.Size(200, 200);
- this.pnlDir_ET.TabIndex = 24;
- //
- // pnlDir_DT
- //
- this.pnlDir_DT.Controls.Add(this.lblDir_DT);
- this.pnlDir_DT.Location = new System.Drawing.Point(648, 200);
- this.pnlDir_DT.Name = "pnlDir_DT";
- this.pnlDir_DT.Size = new System.Drawing.Size(200, 200);
- this.pnlDir_DT.TabIndex = 24;
- //
- // pnlDir_DF
- //
- this.pnlDir_DF.Controls.Add(this.lblDir_DF);
- this.pnlDir_DF.Location = new System.Drawing.Point(648, 0);
- this.pnlDir_DF.Name = "pnlDir_DF";
- this.pnlDir_DF.Size = new System.Drawing.Size(200, 200);
- this.pnlDir_DF.TabIndex = 24;
- //
- // btnIniciarOperacao
- //
- this.btnIniciarOperacao.Font = new System.Drawing.Font("Microsoft Sans Serif", 7.8F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
- this.btnIniciarOperacao.Location = new System.Drawing.Point(854, 330);
- this.btnIniciarOperacao.Name = "btnIniciarOperacao";
- this.btnIniciarOperacao.Size = new System.Drawing.Size(151, 65);
- this.btnIniciarOperacao.TabIndex = 25;
- this.btnIniciarOperacao.Text = "Iniciar Operação";
- this.btnIniciarOperacao.UseVisualStyleBackColor = true;
- this.btnIniciarOperacao.Click += new System.EventHandler(this.btnIniciarOperacao_Click);
- //
// tabPulverizador
//
this.tabPulverizador.Controls.Add(this.lblPressaoSP);
@@ -380,32 +384,20 @@
this.tabPulverizador.Location = new System.Drawing.Point(4, 25);
this.tabPulverizador.Name = "tabPulverizador";
this.tabPulverizador.Padding = new System.Windows.Forms.Padding(3);
- this.tabPulverizador.Size = new System.Drawing.Size(620, 358);
+ this.tabPulverizador.Size = new System.Drawing.Size(620, 357);
this.tabPulverizador.TabIndex = 3;
this.tabPulverizador.Text = "Pulverizador";
this.tabPulverizador.UseVisualStyleBackColor = true;
//
- // btnLigarBomba
+ // lblPressaoSP
//
- this.btnLigarBomba.Font = new System.Drawing.Font("Microsoft Sans Serif", 7.8F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
- this.btnLigarBomba.Location = new System.Drawing.Point(158, 21);
- this.btnLigarBomba.Name = "btnLigarBomba";
- this.btnLigarBomba.Size = new System.Drawing.Size(139, 34);
- this.btnLigarBomba.TabIndex = 26;
- this.btnLigarBomba.Text = "Ligar Bomba";
- this.btnLigarBomba.UseVisualStyleBackColor = true;
- this.btnLigarBomba.Click += new System.EventHandler(this.btnLigarBomba_Click);
- //
- // btnDesligarBomba
- //
- this.btnDesligarBomba.Font = new System.Drawing.Font("Microsoft Sans Serif", 7.8F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
- this.btnDesligarBomba.Location = new System.Drawing.Point(325, 21);
- this.btnDesligarBomba.Name = "btnDesligarBomba";
- this.btnDesligarBomba.Size = new System.Drawing.Size(139, 34);
- this.btnDesligarBomba.TabIndex = 27;
- this.btnDesligarBomba.Text = "Desligar Bomba";
- this.btnDesligarBomba.UseVisualStyleBackColor = true;
- this.btnDesligarBomba.Click += new System.EventHandler(this.btnDesligarBomba_Click);
+ this.lblPressaoSP.AutoSize = true;
+ this.lblPressaoSP.Font = new System.Drawing.Font("Microsoft Sans Serif", 7.8F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.lblPressaoSP.Location = new System.Drawing.Point(24, 14);
+ this.lblPressaoSP.Name = "lblPressaoSP";
+ this.lblPressaoSP.Size = new System.Drawing.Size(89, 16);
+ this.lblPressaoSP.TabIndex = 29;
+ this.lblPressaoSP.Text = "Pressão SP";
//
// nudPressaoSP
//
@@ -422,15 +414,221 @@
this.nudPressaoSP.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
this.nudPressaoSP.ValueChanged += new System.EventHandler(this.nudPressaoSP_ValueChanged);
//
- // lblPressaoSP
+ // btnDesligarBomba
//
- this.lblPressaoSP.AutoSize = true;
- this.lblPressaoSP.Font = new System.Drawing.Font("Microsoft Sans Serif", 7.8F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
- this.lblPressaoSP.Location = new System.Drawing.Point(24, 14);
- this.lblPressaoSP.Name = "lblPressaoSP";
- this.lblPressaoSP.Size = new System.Drawing.Size(89, 16);
- this.lblPressaoSP.TabIndex = 29;
- this.lblPressaoSP.Text = "Pressão SP";
+ this.btnDesligarBomba.Font = new System.Drawing.Font("Microsoft Sans Serif", 7.8F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.btnDesligarBomba.Location = new System.Drawing.Point(325, 21);
+ this.btnDesligarBomba.Name = "btnDesligarBomba";
+ this.btnDesligarBomba.Size = new System.Drawing.Size(139, 34);
+ this.btnDesligarBomba.TabIndex = 27;
+ this.btnDesligarBomba.Text = "Desligar Bomba";
+ this.btnDesligarBomba.UseVisualStyleBackColor = true;
+ this.btnDesligarBomba.Click += new System.EventHandler(this.btnDesligarBomba_Click);
+ //
+ // btnLigarBomba
+ //
+ this.btnLigarBomba.Font = new System.Drawing.Font("Microsoft Sans Serif", 7.8F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.btnLigarBomba.Location = new System.Drawing.Point(158, 21);
+ this.btnLigarBomba.Name = "btnLigarBomba";
+ this.btnLigarBomba.Size = new System.Drawing.Size(139, 34);
+ this.btnLigarBomba.TabIndex = 26;
+ this.btnLigarBomba.Text = "Ligar Bomba";
+ this.btnLigarBomba.UseVisualStyleBackColor = true;
+ this.btnLigarBomba.Click += new System.EventHandler(this.btnLigarBomba_Click);
+ //
+ // pnlCameraRua
+ //
+ this.pnlCameraRua.Controls.Add(this.picCameraRua);
+ this.pnlCameraRua.Location = new System.Drawing.Point(186, 28);
+ this.pnlCameraRua.Name = "pnlCameraRua";
+ this.pnlCameraRua.Size = new System.Drawing.Size(476, 352);
+ this.pnlCameraRua.TabIndex = 22;
+ //
+ // picCameraRua
+ //
+ this.picCameraRua.BackColor = System.Drawing.SystemColors.ButtonFace;
+ this.picCameraRua.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.picCameraRua.Location = new System.Drawing.Point(0, 0);
+ this.picCameraRua.Name = "picCameraRua";
+ this.picCameraRua.Size = new System.Drawing.Size(476, 352);
+ this.picCameraRua.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
+ this.picCameraRua.TabIndex = 0;
+ this.picCameraRua.TabStop = false;
+ //
+ // pnlDir_EF
+ //
+ this.pnlDir_EF.Controls.Add(this.chbLivre_EF);
+ this.pnlDir_EF.Controls.Add(this.chbCmd_EF);
+ this.pnlDir_EF.Controls.Add(this.btnRef_EF);
+ this.pnlDir_EF.Controls.Add(this.lblDir_EF);
+ this.pnlDir_EF.Location = new System.Drawing.Point(0, 0);
+ this.pnlDir_EF.Name = "pnlDir_EF";
+ this.pnlDir_EF.Size = new System.Drawing.Size(200, 200);
+ this.pnlDir_EF.TabIndex = 23;
+ //
+ // chbLivre_EF
+ //
+ this.chbLivre_EF.AutoSize = true;
+ this.chbLivre_EF.CheckAlign = System.Drawing.ContentAlignment.MiddleRight;
+ this.chbLivre_EF.Location = new System.Drawing.Point(135, 177);
+ this.chbLivre_EF.Name = "chbLivre_EF";
+ this.chbLivre_EF.Size = new System.Drawing.Size(58, 20);
+ this.chbLivre_EF.TabIndex = 17;
+ this.chbLivre_EF.Text = "Livre";
+ this.chbLivre_EF.UseVisualStyleBackColor = true;
+ //
+ // chbCmd_EF
+ //
+ this.chbCmd_EF.AutoSize = true;
+ this.chbCmd_EF.Location = new System.Drawing.Point(4, 177);
+ this.chbCmd_EF.Name = "chbCmd_EF";
+ this.chbCmd_EF.Size = new System.Drawing.Size(83, 20);
+ this.chbCmd_EF.TabIndex = 15;
+ this.chbCmd_EF.Text = "Controlar";
+ this.chbCmd_EF.UseVisualStyleBackColor = true;
+ //
+ // btnRef_EF
+ //
+ this.btnRef_EF.Location = new System.Drawing.Point(148, 3);
+ this.btnRef_EF.Name = "btnRef_EF";
+ this.btnRef_EF.Size = new System.Drawing.Size(49, 23);
+ this.btnRef_EF.TabIndex = 13;
+ this.btnRef_EF.Text = "REF";
+ this.btnRef_EF.UseVisualStyleBackColor = true;
+ //
+ // pnlDir_ET
+ //
+ this.pnlDir_ET.Controls.Add(this.chbLivre_ET);
+ this.pnlDir_ET.Controls.Add(this.chbCmd_ET);
+ this.pnlDir_ET.Controls.Add(this.btnRef_ET);
+ this.pnlDir_ET.Controls.Add(this.lblDir_ET);
+ this.pnlDir_ET.Location = new System.Drawing.Point(0, 200);
+ this.pnlDir_ET.Name = "pnlDir_ET";
+ this.pnlDir_ET.Size = new System.Drawing.Size(200, 200);
+ this.pnlDir_ET.TabIndex = 24;
+ //
+ // chbLivre_ET
+ //
+ this.chbLivre_ET.AutoSize = true;
+ this.chbLivre_ET.CheckAlign = System.Drawing.ContentAlignment.MiddleRight;
+ this.chbLivre_ET.Location = new System.Drawing.Point(135, 177);
+ this.chbLivre_ET.Name = "chbLivre_ET";
+ this.chbLivre_ET.Size = new System.Drawing.Size(58, 20);
+ this.chbLivre_ET.TabIndex = 16;
+ this.chbLivre_ET.Text = "Livre";
+ this.chbLivre_ET.UseVisualStyleBackColor = true;
+ //
+ // chbCmd_ET
+ //
+ this.chbCmd_ET.AutoSize = true;
+ this.chbCmd_ET.Location = new System.Drawing.Point(4, 177);
+ this.chbCmd_ET.Name = "chbCmd_ET";
+ this.chbCmd_ET.Size = new System.Drawing.Size(83, 20);
+ this.chbCmd_ET.TabIndex = 15;
+ this.chbCmd_ET.Text = "Controlar";
+ this.chbCmd_ET.UseVisualStyleBackColor = true;
+ //
+ // btnRef_ET
+ //
+ this.btnRef_ET.Location = new System.Drawing.Point(148, 3);
+ this.btnRef_ET.Name = "btnRef_ET";
+ this.btnRef_ET.Size = new System.Drawing.Size(49, 23);
+ this.btnRef_ET.TabIndex = 13;
+ this.btnRef_ET.Text = "REF";
+ this.btnRef_ET.UseVisualStyleBackColor = true;
+ //
+ // pnlDir_DT
+ //
+ this.pnlDir_DT.Controls.Add(this.chbLivre_DT);
+ this.pnlDir_DT.Controls.Add(this.chbCmd_DT);
+ this.pnlDir_DT.Controls.Add(this.btnRef_DT);
+ this.pnlDir_DT.Controls.Add(this.lblDir_DT);
+ this.pnlDir_DT.Location = new System.Drawing.Point(648, 200);
+ this.pnlDir_DT.Name = "pnlDir_DT";
+ this.pnlDir_DT.Size = new System.Drawing.Size(200, 200);
+ this.pnlDir_DT.TabIndex = 24;
+ //
+ // chbLivre_DT
+ //
+ this.chbLivre_DT.AutoSize = true;
+ this.chbLivre_DT.CheckAlign = System.Drawing.ContentAlignment.MiddleRight;
+ this.chbLivre_DT.Location = new System.Drawing.Point(135, 177);
+ this.chbLivre_DT.Name = "chbLivre_DT";
+ this.chbLivre_DT.Size = new System.Drawing.Size(58, 20);
+ this.chbLivre_DT.TabIndex = 19;
+ this.chbLivre_DT.Text = "Livre";
+ this.chbLivre_DT.UseVisualStyleBackColor = true;
+ //
+ // chbCmd_DT
+ //
+ this.chbCmd_DT.AutoSize = true;
+ this.chbCmd_DT.Location = new System.Drawing.Point(4, 177);
+ this.chbCmd_DT.Name = "chbCmd_DT";
+ this.chbCmd_DT.Size = new System.Drawing.Size(83, 20);
+ this.chbCmd_DT.TabIndex = 13;
+ this.chbCmd_DT.Text = "Controlar";
+ this.chbCmd_DT.UseVisualStyleBackColor = true;
+ //
+ // btnRef_DT
+ //
+ this.btnRef_DT.Location = new System.Drawing.Point(148, 3);
+ this.btnRef_DT.Name = "btnRef_DT";
+ this.btnRef_DT.Size = new System.Drawing.Size(49, 23);
+ this.btnRef_DT.TabIndex = 12;
+ this.btnRef_DT.Text = "REF";
+ this.btnRef_DT.UseVisualStyleBackColor = true;
+ //
+ // pnlDir_DF
+ //
+ this.pnlDir_DF.Controls.Add(this.chbLivre_DF);
+ this.pnlDir_DF.Controls.Add(this.chbCmd_DF);
+ this.pnlDir_DF.Controls.Add(this.btnRef_DF);
+ this.pnlDir_DF.Controls.Add(this.lblDir_DF);
+ this.pnlDir_DF.Location = new System.Drawing.Point(648, 0);
+ this.pnlDir_DF.Name = "pnlDir_DF";
+ this.pnlDir_DF.Size = new System.Drawing.Size(200, 200);
+ this.pnlDir_DF.TabIndex = 24;
+ //
+ // chbLivre_DF
+ //
+ this.chbLivre_DF.AutoSize = true;
+ this.chbLivre_DF.CheckAlign = System.Drawing.ContentAlignment.MiddleRight;
+ this.chbLivre_DF.Location = new System.Drawing.Point(135, 177);
+ this.chbLivre_DF.Name = "chbLivre_DF";
+ this.chbLivre_DF.Size = new System.Drawing.Size(58, 20);
+ this.chbLivre_DF.TabIndex = 18;
+ this.chbLivre_DF.Text = "Livre";
+ this.chbLivre_DF.UseVisualStyleBackColor = true;
+ //
+ // chbCmd_DF
+ //
+ this.chbCmd_DF.AutoSize = true;
+ this.chbCmd_DF.Location = new System.Drawing.Point(4, 177);
+ this.chbCmd_DF.Name = "chbCmd_DF";
+ this.chbCmd_DF.Size = new System.Drawing.Size(83, 20);
+ this.chbCmd_DF.TabIndex = 14;
+ this.chbCmd_DF.Text = "Controlar";
+ this.chbCmd_DF.UseVisualStyleBackColor = true;
+ //
+ // btnRef_DF
+ //
+ this.btnRef_DF.Location = new System.Drawing.Point(148, 3);
+ this.btnRef_DF.Name = "btnRef_DF";
+ this.btnRef_DF.Size = new System.Drawing.Size(49, 23);
+ this.btnRef_DF.TabIndex = 13;
+ this.btnRef_DF.Text = "REF";
+ this.btnRef_DF.UseVisualStyleBackColor = true;
+ //
+ // btnIniciarOperacao
+ //
+ this.btnIniciarOperacao.Font = new System.Drawing.Font("Microsoft Sans Serif", 7.8F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.btnIniciarOperacao.Location = new System.Drawing.Point(1488, 724);
+ this.btnIniciarOperacao.Name = "btnIniciarOperacao";
+ this.btnIniciarOperacao.Size = new System.Drawing.Size(151, 65);
+ this.btnIniciarOperacao.TabIndex = 25;
+ this.btnIniciarOperacao.Text = "Iniciar Operação";
+ this.btnIniciarOperacao.UseVisualStyleBackColor = true;
+ this.btnIniciarOperacao.Click += new System.EventHandler(this.btnIniciarOperacao_Click);
//
// lblDistanciaEsquerda
//
@@ -452,25 +650,29 @@
this.lblDistanciaDireita.TabIndex = 27;
this.lblDistanciaDireita.Text = "Distancia Dir: 00.00 cm";
//
+ // picSonar
+ //
+ this.picSonar.Location = new System.Drawing.Point(17, 16);
+ this.picSonar.Name = "picSonar";
+ this.picSonar.Size = new System.Drawing.Size(579, 320);
+ this.picSonar.TabIndex = 0;
+ this.picSonar.TabStop = false;
+ //
// frmOperacaoManual
//
this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.BackColor = System.Drawing.Color.White;
this.ClientSize = new System.Drawing.Size(1651, 804);
- this.Controls.Add(this.lblDistanciaEsquerda);
- this.Controls.Add(this.lblDistanciaDireita);
this.Controls.Add(this.btnIniciarOperacao);
+ this.Controls.Add(this.lblDistanciaEsquerda);
+ this.Controls.Add(this.tabControl1);
+ this.Controls.Add(this.lblDistanciaDireita);
this.Controls.Add(this.pnlDir_DF);
this.Controls.Add(this.pnlDir_DT);
this.Controls.Add(this.pnlDir_ET);
this.Controls.Add(this.pnlDir_EF);
this.Controls.Add(this.pnlCameraRua);
- this.Controls.Add(this.lblMagnetometro);
- this.Controls.Add(this.pnlAnguloMagnetometro);
- this.Controls.Add(this.lblGPS);
- this.Controls.Add(this.pnlAnguloGPS);
- this.Controls.Add(this.tabControl1);
this.Controls.Add(this.chartGraficos);
this.Controls.Add(this.pnlAtuadores);
this.Controls.Add(this.pnlCamerasSolo);
@@ -487,9 +689,14 @@
((System.ComponentModel.ISupportInitialize)(this.chartGraficos)).EndInit();
this.tabControl1.ResumeLayout(false);
this.tabMapa.ResumeLayout(false);
+ this.tabMapa.PerformLayout();
this.tabInformacoes.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.gridDados)).EndInit();
this.tabDeteccoes.ResumeLayout(false);
+ this.pnlDeteccoesRua.ResumeLayout(false);
+ this.tabPulverizador.ResumeLayout(false);
+ this.tabPulverizador.PerformLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.nudPressaoSP)).EndInit();
this.pnlCameraRua.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.picCameraRua)).EndInit();
this.pnlDir_EF.ResumeLayout(false);
@@ -500,9 +707,7 @@
this.pnlDir_DT.PerformLayout();
this.pnlDir_DF.ResumeLayout(false);
this.pnlDir_DF.PerformLayout();
- this.tabPulverizador.ResumeLayout(false);
- this.tabPulverizador.PerformLayout();
- ((System.ComponentModel.ISupportInitialize)(this.nudPressaoSP)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.picSonar)).EndInit();
this.ResumeLayout(false);
this.PerformLayout();
@@ -546,5 +751,22 @@
private System.Windows.Forms.Button btnLigarBomba;
private System.Windows.Forms.Label lblDistanciaEsquerda;
private System.Windows.Forms.Label lblDistanciaDireita;
+ private System.Windows.Forms.Label lblGPSsatelites;
+ private System.Windows.Forms.Label lblGPSaltitude;
+ private System.Windows.Forms.Label lblGPSvelocidade;
+ private System.Windows.Forms.Label lblGPSprecisao;
+ private System.Windows.Forms.Button btnRef_EF;
+ private System.Windows.Forms.Button btnRef_ET;
+ private System.Windows.Forms.Button btnRef_DT;
+ private System.Windows.Forms.Button btnRef_DF;
+ private System.Windows.Forms.CheckBox chbCmd_EF;
+ private System.Windows.Forms.CheckBox chbCmd_ET;
+ private System.Windows.Forms.CheckBox chbCmd_DT;
+ private System.Windows.Forms.CheckBox chbCmd_DF;
+ private System.Windows.Forms.CheckBox chbLivre_EF;
+ private System.Windows.Forms.CheckBox chbLivre_ET;
+ private System.Windows.Forms.CheckBox chbLivre_DT;
+ private System.Windows.Forms.CheckBox chbLivre_DF;
+ private System.Windows.Forms.PictureBox picSonar;
}
}
\ No newline at end of file
diff --git a/AgroBase/AgroBase/Forms/Operacoes/frmOperacaoManual.cs b/AgroBase/AgroBase/Forms/Operacoes/frmOperacaoManual.cs
index 624888938..e8c9fd24a 100644
--- a/AgroBase/AgroBase/Forms/Operacoes/frmOperacaoManual.cs
+++ b/AgroBase/AgroBase/Forms/Operacoes/frmOperacaoManual.cs
@@ -43,12 +43,7 @@ namespace AgroBase.Forms.Operacoes
private void frmOperacaoManual_Load(object sender, EventArgs e)
{
- pnlDir_DF.Paint += pnlDir_Paint;
- pnlDir_DT.Paint += pnlDir_Paint;
- pnlDir_EF.Paint += pnlDir_Paint;
- pnlDir_ET.Paint += pnlDir_Paint;
-
-
+ InicializarComandosDirecional();
IniciarCameras();
PopularInformacoesGerais();
InicializarMapa();
@@ -63,10 +58,39 @@ namespace AgroBase.Forms.Operacoes
{
tmrLeitura.Stop();
tmrLeitura.Dispose();
- Mapa.PararProcessamento();
- videoSourceRua.Stop();
- videoSourceSoloD.Stop();
- videoSourceSoloE.Stop();
+ Variaveis.OperacaoEmAndamento.Mapa.PararProcessamento();
+ if (videoSourceRua != null)
+ {
+ videoSourceRua.Stop();
+ }
+ if (videoSourceSoloD != null)
+ {
+ videoSourceSoloD.Stop();
+ }
+ if (videoSourceSoloE != null)
+ {
+ videoSourceSoloE.Stop();
+ }
+ }
+
+ private void btnIniciarOperacao_Click(object sender, EventArgs e)
+ {
+ if (btnIniciarOperacao.Text == "Finalizar Operação")
+ {
+ Variaveis.OperacaoEmAndamento.FinalizarOperacao();
+ }
+ else
+ {
+ if (Variaveis.OperacaoEmAndamento.OperacaoLiberada)
+ {
+ Variaveis.OperacaoEmAndamento.IniciarOperacao(null, false);
+ }
+ else
+ {
+ MessageBox.Show("Finalize a parametrização corretamente para iniciar a operação!", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Error);
+ }
+ }
+ btnIniciarOperacao.Text = !Variaveis.OperacaoEmAndamento.Iniciado ? "Iniciar Operação" : "Finalizar Operação";
}
private void tmrLeitura_Tick(object sender, EventArgs e)
@@ -76,7 +100,7 @@ namespace AgroBase.Forms.Operacoes
public void AtualizarDados()
{
- var statusAtual = Variaveis.OperacaoEmAndamento.ReferencialRuaGPS.StatusAtual;
+ var statusAtual = Variaveis.OperacaoEmAndamento.StatusAtual;
if (statusAtual == StatusOperacao.Parametrizando)
{
@@ -86,11 +110,11 @@ namespace AgroBase.Forms.Operacoes
{
this.Text = "Operação Manual - Iniciando em " + (Variaveis.OperacaoEmAndamento.TempoAguardando.AddSeconds(Variaveis.OperacaoEmAndamento.TempoIniciarOperacao) - DateTime.Now).TotalSeconds.ToString("0") + " segundo" + ((Variaveis.OperacaoEmAndamento.TempoAguardando.AddSeconds(Variaveis.OperacaoEmAndamento.TempoIniciarOperacao) - DateTime.Now).TotalSeconds < 1 ? "" : "s") + "...";
}
- else if (statusAtual == StatusOperacao.Concluida)
+ else if (statusAtual == StatusOperacao.Concluido)
{
this.Text = "Operação Manual - Concluída";
}
- else if (Variaveis.OperacaoEmAndamento.Iniciado)
+ else if (statusAtual == StatusOperacao.EmAndamento)
{
this.Text = "Operação Manual - Em andamento";
}
@@ -109,11 +133,51 @@ namespace AgroBase.Forms.Operacoes
lblDistanciaEsquerda.Text = "Distancia Esq: " + Variaveis.OperacaoEmAndamento.Sensoriamento.DistanciaEsquerda.ToString("0.00") + " cm";
lblDistanciaDireita.Text = "Distancia Dir: " + Variaveis.OperacaoEmAndamento.Sensoriamento.DistanciaDireita.ToString("0.00") + " cm";
+ lblGPSsatelites.Text = GPSService.UltimaLeitura.NumeroSatelites.ToString() + " satélites";
+ lblGPSprecisao.Text = "Precisão: " + GPSService.UltimaLeitura.PrecisaoHorizontal.ToString("0.00") + " m";
+ lblGPSvelocidade.Text = "Vel.: " + GPSService.UltimaLeitura.Velocidade.ToString("0.00") + " km/h";
+ lblGPSaltitude.Text = "Altitude: " + GPSService.UltimaLeitura.Altitude.ToString("0.0") + " m";
}
+
+
+
+
#region Direcionais
+ private void InicializarComandosDirecional()
+ {
+ pnlDir_DF.Paint += pnlDir_Paint;
+ pnlDir_DT.Paint += pnlDir_Paint;
+ pnlDir_EF.Paint += pnlDir_Paint;
+ pnlDir_ET.Paint += pnlDir_Paint;
+ btnRef_DF.Click += btnRef_Click;
+ btnRef_DT.Click += btnRef_Click;
+ btnRef_EF.Click += btnRef_Click;
+ btnRef_ET.Click += btnRef_Click;
+ chbCmd_DF.CheckedChanged += chbCmd_CheckedChanged;
+ chbCmd_DT.CheckedChanged += chbCmd_CheckedChanged;
+ chbCmd_EF.CheckedChanged += chbCmd_CheckedChanged;
+ chbCmd_ET.CheckedChanged += chbCmd_CheckedChanged;
+ chbLivre_DF.CheckedChanged += chbLivre_CheckedChanged;
+ chbLivre_DT.CheckedChanged += chbLivre_CheckedChanged;
+ chbLivre_EF.CheckedChanged += chbLivre_CheckedChanged;
+ chbLivre_ET.CheckedChanged += chbLivre_CheckedChanged;
+ DefinirStatusInicialChb(chbCmd_DF, chbLivre_DF);
+ DefinirStatusInicialChb(chbCmd_DT, chbLivre_DT);
+ DefinirStatusInicialChb(chbCmd_EF, chbLivre_EF);
+ DefinirStatusInicialChb(chbCmd_ET, chbLivre_ET);
+ }
+
+ private void DefinirStatusInicialChb(CheckBox chbCmd, CheckBox chbLivre)
+ {
+ string ID = chbCmd.Name.Split('_')[1];
+ var Motor = Variaveis.OperacaoEmAndamento.DispDir.Dados.Motores.FirstOrDefault(x => x.ID == ID);
+ chbCmd.Checked = Motor.Controlar;
+ chbLivre.Checked = Motor.Livre;
+ }
+
private void pnlDir_Paint(object sender, PaintEventArgs e)
{
DesenharGraficos(sender, e);
@@ -221,6 +285,7 @@ namespace AgroBase.Forms.Operacoes
// Desenhe os pontos nos angulos fixos
int radiusCircle = 5;
+ var fontText = new Font(FontFamily.GenericSerif, 7);
for (int i = 0; i < 4; i++)
{
double angle = ((i * 90) * Math.PI) / 180;
@@ -239,7 +304,7 @@ namespace AgroBase.Forms.Operacoes
}
string angleText = ((i * 90).ToString() + "°");
- SizeF textSize = g.MeasureString(angleText, Font);
+ SizeF textSize = g.MeasureString(angleText, fontText);
float textX = xA;
float textY = yA;
@@ -267,11 +332,36 @@ namespace AgroBase.Forms.Operacoes
textY -= textSize.Height / 2;
}
- g.DrawString(angleText, Font, Brushes.Black, textX, textY);
+ g.DrawString(angleText, fontText, Brushes.Black, textX, textY);
}
}
+ private void btnRef_Click(object sender, EventArgs e)
+ {
+ string ID = ((Button)sender).Name.Replace("btnRef_", "");
+ var Dispositivo = Variaveis.OperacaoEmAndamento.DispDir;
+ var Motor = Dispositivo.Dados.Motores.FirstOrDefault(x => x.ID == ID);
+ string Comando = Motor.ProtocoloComando(Direcao.Parado, true);
+ Dispositivo.EnviarDadosSerial(Comando);
+ }
+
+ private void chbCmd_CheckedChanged(object sender, EventArgs e)
+ {
+ string ID = ((CheckBox)sender).Name.Replace("chbCmd_", "");
+ var Dispositivo = Variaveis.OperacaoEmAndamento.DispDir;
+ var Motor = Dispositivo.Dados.Motores.FirstOrDefault(x => x.ID == ID);
+ Motor.Controlar = ((CheckBox)sender).Checked;
+ }
+
+ private void chbLivre_CheckedChanged(object sender, EventArgs e)
+ {
+ string ID = ((CheckBox)sender).Name.Replace("chbLivre_", "");
+ var Dispositivo = Variaveis.OperacaoEmAndamento.DispDir;
+ var Motor = Dispositivo.Dados.Motores.FirstOrDefault(x => x.ID == ID);
+ Motor.Livre = ((CheckBox)sender).Checked;
+ }
+
#endregion
#region Cameras
@@ -336,7 +426,7 @@ namespace AgroBase.Forms.Operacoes
{
try
{
- double angulo = Variaveis.OperacaoEmAndamento.ReferencialRuaGPS.AnguloCarroGPS;
+ double angulo = GPSService.UltimaLeitura.Orientacao;
DesenharInclinacao((Panel)sender, e, (float)angulo, -90);
}
catch { }
@@ -492,8 +582,6 @@ namespace AgroBase.Forms.Operacoes
gridDados.Rows.Add("Corrente da Bateria", "", "A");
gridDados.Rows.Add("Nível do Reservatório", "", "%");
gridDados.Rows.Add("Volume do Reservatório", "", "L");
- gridDados.Rows.Add("Herbicida Aplicado", "", "L");
- gridDados.Rows.Add("Ervas Detectadas", "", "");
gridDados.Rows.Add("Pressão da Linha", "", "psi");
gridDados.Rows.Add("Potência na Bomba", "", "%");
@@ -511,25 +599,21 @@ namespace AgroBase.Forms.Operacoes
gridDados.Rows[6].Cells[1].Value = (PZEMService.Iniciado && PZEMService.UltimaLeitura != null ? PZEMService.UltimaLeitura.Corrente.ToString("0.00") : "");
gridDados.Rows[7].Cells[1].Value = Variaveis.OperacaoEmAndamento.DispAtu.Dados.PercentualReservatorio.ToString("00.00");
gridDados.Rows[8].Cells[1].Value = Variaveis.OperacaoEmAndamento.DispAtu.Dados.VolumeReservatorio.ToString("0.000");
- gridDados.Rows[9].Cells[1].Value = Variaveis.OperacaoEmAndamento.Sensoriamento.HerbicidaConsumido.ToString("0.000");
- gridDados.Rows[10].Cells[1].Value = Variaveis.OperacaoEmAndamento.Sensoriamento.ErvasIdentificadas.ToString("000");
- gridDados.Rows[11].Cells[1].Value = Variaveis.OperacaoEmAndamento.DispAtu.Dados.PressaoLinha.ToString("0.00");
- gridDados.Rows[12].Cells[1].Value = Variaveis.OperacaoEmAndamento.DispAtu.Dados.BombaPressurizadora.Potencia.ToString("0.00");
+ gridDados.Rows[9].Cells[1].Value = Variaveis.OperacaoEmAndamento.DispAtu.Dados.PressaoLinha.ToString("0.00");
+ gridDados.Rows[10].Cells[1].Value = Variaveis.OperacaoEmAndamento.DispAtu.Dados.BombaPressurizadora.Potencia.ToString("0.00");
}
#endregion
#region Mapa GPS
- private MapasModel Mapa;
-
private void InicializarMapa()
{
- Mapa = new MapasModel()
+ Variaveis.OperacaoEmAndamento.Mapa = new MapasModel()
{
pnlMapa = pnlMapa,
};
- Mapa.CarregarMapaGPS();
+ Variaveis.OperacaoEmAndamento.Mapa.CarregarMapaGPS();
}
#endregion
@@ -656,7 +740,7 @@ namespace AgroBase.Forms.Operacoes
// Define a string que representa a atuacao do bico
- string bicoAtuacao = Variaveis.OperacaoEmAndamento.Sensoriamento.AtuacoesPorBico[i].ToString("000");
+ string bicoAtuacao = "000"; // Variaveis.OperacaoEmAndamento.Sensoriamento.AtuacoesPorBico[i].ToString("000");
// Define a fonte para o texto
Font fontA = new Font("Arial", 8, FontStyle.Bold);
// Mede o tamanho do texto
@@ -691,26 +775,7 @@ namespace AgroBase.Forms.Operacoes
#endregion
- private void btnIniciarOperacao_Click(object sender, EventArgs e)
- {
- if (btnIniciarOperacao.Text == "Finalizar Operação")
- {
- Variaveis.OperacaoEmAndamento.FinalizarOperacao();
- }
- else
- {
- if (Variaveis.OperacaoEmAndamento.OperacaoLiberada)
- {
- Variaveis.OperacaoEmAndamento.IniciarOperacao(null, false);
- }
- else
- {
- MessageBox.Show("Finalize a parametrização corretamente para iniciar a operação!", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Error);
- }
- }
- btnIniciarOperacao.Text = !Variaveis.OperacaoEmAndamento.Iniciado ? "Iniciar Operação" : "Finalizar Operação";
- }
-
+
}
}
diff --git a/AgroBase/AgroBase/Forms/Operacoes/frmOperacaoMapaGPS.cs b/AgroBase/AgroBase/Forms/Operacoes/frmOperacaoMapaGPS.cs
index 8bdbe3c21..3cc897464 100644
--- a/AgroBase/AgroBase/Forms/Operacoes/frmOperacaoMapaGPS.cs
+++ b/AgroBase/AgroBase/Forms/Operacoes/frmOperacaoMapaGPS.cs
@@ -27,7 +27,6 @@ namespace AgroBase.Forms.Operacoes
public partial class frmOperacaoMapaGPS : Form
{
private Timer tmrLeituras = new Timer() { Interval = 200 };
- CalibragemVazao _CalibragemVazao = new CalibragemVazao();
#region Eventos do formulário
@@ -57,8 +56,6 @@ namespace AgroBase.Forms.Operacoes
AtualizarDispositivos();
AtualizaListaCameras();
nudPressaoSP.Value = Convert.ToInt32(Variaveis.OperacaoEmAndamento.DispAtu.Dados.BombaPressurizadora.PressaoSP);
- txtVolumeLido.Text = Variaveis.OperacaoEmAndamento.DispAtu.Dados._FluxoMlRef.ToString("0.0");
- lblVazao.Text = "Vazão " + (Variaveis.OperacaoEmAndamento.DispAtu.Dados._FluxoMlRef / _CalibragemVazao.TempoCalibragem * 1000).ToString("0") + " mL/s";
}
private void frmOperacaoMapaGPS_FormClosing(object sender, FormClosingEventArgs e)
@@ -101,7 +98,7 @@ namespace AgroBase.Forms.Operacoes
}
});
- Variaveis.OperacaoEmAndamento.Sensoriamento.ErvasNoRadar = Variaveis.OperacaoEmAndamento.CamerasSolo.Sum(x => x.ErvasNoRadar);
+ Variaveis.OperacaoEmAndamento.OpMapaGPS.Sensoriamento.ErvasNoRadar = Variaveis.OperacaoEmAndamento.CamerasSolo.Sum(x => x.ErvasNoRadar);
try
{
@@ -111,10 +108,20 @@ namespace AgroBase.Forms.Operacoes
{
}
+
+ var StatusCarro = Variaveis.OperacaoEmAndamento.OpMapaGPS.ReferencialRuaGPS.StatusAtual;
+ if (StatusCarro == StatusCarroMapa.Direcionando)
+ {
+ Variaveis.OperacaoEmAndamento.Mapa.GerarCaminhoEntreDoisPontos(Variaveis.OperacaoEmAndamento.Mapa.Trajetoria[Variaveis.OperacaoEmAndamento.Mapa.IdxRuaAtual].First());
+ }
+ else if (StatusCarro == StatusCarroMapa.Manobrando)
+ {
+ //Variaveis.OperacaoEmAndamento.Mapa.GerarCaminhoEntreDoisPontos(Variaveis.OperacaoEmAndamento.Mapa.Trajetoria[Variaveis.OperacaoEmAndamento.Mapa.IdxRuaAtual].First());
+ }
}
else
{
- Variaveis.OperacaoEmAndamento.AtualizarRuasSelecionadas();
+ Variaveis.OperacaoEmAndamento.OpMapaGPS.AtualizarRuasSelecionadas();
}
AtualizarGrafico();
AtualizarInformacoesGerais();
@@ -122,7 +129,8 @@ namespace AgroBase.Forms.Operacoes
pnlInclinacao.Invalidate();
pnlAtuadores.Invalidate();
- PZEMService.EnviarComando(PZEMService.PortaPZEM, PZEMService.ComandoAquisicaoDados());
+ btnCarregarMapa.Enabled = !Variaveis.OperacaoEmAndamento.Iniciado;
+ nudPressaoSP.Enabled = !Variaveis.OperacaoEmAndamento.Iniciado;
if (!Variaveis.OperacaoEmAndamento.Iniciado && btnIniciarOperacao.Text == "Finalizar Operação")
{
@@ -197,7 +205,7 @@ namespace AgroBase.Forms.Operacoes
int iBico = i + (CameraSolo.Posicao * BicosPorCamera);
if (Atuador.Dados.BicosPulverizadores[iBico].Atuado && BicosAnteriores[i] != Atuador.Dados.BicosPulverizadores[iBico].Atuado)
{
- Variaveis.OperacaoEmAndamento.Sensoriamento.AtuacoesPorBico[iBico]++;
+ Variaveis.OperacaoEmAndamento.OpMapaGPS.Sensoriamento.AtuacoesPorBico[iBico]++;
}
}
@@ -255,7 +263,7 @@ namespace AgroBase.Forms.Operacoes
cameraCaminho.AnguloEsquerdo = 0;
}
- Variaveis.OperacaoEmAndamento.Sensoriamento.AnguloRuaCamera = cameraCaminho.Angulo;
+ Variaveis.OperacaoEmAndamento.OpMapaGPS.Sensoriamento.AnguloRuaCamera = cameraCaminho.Angulo;
pnlAnguloCamera.Invalidate();
@@ -271,9 +279,9 @@ namespace AgroBase.Forms.Operacoes
private void AtualizaInformacoesControleOperacao()
{
- Variaveis.OperacaoEmAndamento.AtualizarControleAtuadores();
- Variaveis.OperacaoEmAndamento.CalculaDadosMovimentacaoAutonoma();
- Variaveis.OperacaoEmAndamento.AtualizarDadosControle();
+ Variaveis.OperacaoEmAndamento.OpMapaGPS.AtualizarControleAtuadores();
+ Variaveis.OperacaoEmAndamento.OpMapaGPS.CalculaDadosMovimentacaoAutonoma();
+ Variaveis.OperacaoEmAndamento.OpMapaGPS.AtualizarDadosControle();
}
private void AtualizarGrafico()
@@ -336,7 +344,7 @@ namespace AgroBase.Forms.Operacoes
private void AtualizarInformacoesGerais()
{
- var statusAtual = Variaveis.OperacaoEmAndamento.ReferencialRuaGPS.StatusAtual;
+ var statusAtual = Variaveis.OperacaoEmAndamento.StatusAtual;
if (statusAtual == StatusOperacao.Parametrizando)
{
@@ -344,40 +352,40 @@ namespace AgroBase.Forms.Operacoes
}
else if (statusAtual == StatusOperacao.Aguardando)
{
- this.Text = "Operação Mapa GPS - Iniciando em " + (Variaveis.OperacaoEmAndamento.TempoAguardando.AddSeconds(Variaveis.OperacaoEmAndamento.TempoIniciarOperacao) - DateTime.Now).TotalSeconds.ToString("0") + " segundo" + ((Variaveis.OperacaoEmAndamento.TempoAguardando.AddSeconds(Variaveis.OperacaoEmAndamento.TempoIniciarOperacao) - DateTime.Now).TotalSeconds >= 1 ? "" : "s") + "...";
+ this.Text = "Operação Mapa GPS - Iniciando em " + (Variaveis.OperacaoEmAndamento.TempoAguardando.AddSeconds(Variaveis.OperacaoEmAndamento.TempoIniciarOperacao) - DateTime.Now).TotalSeconds.ToString("0") + " segundo" + ((Variaveis.OperacaoEmAndamento.TempoAguardando.AddSeconds(Variaveis.OperacaoEmAndamento.TempoIniciarOperacao) - DateTime.Now).TotalSeconds < 1 ? "" : "s") + "...";
}
- else if (statusAtual == StatusOperacao.Concluida)
+ else if (statusAtual == StatusOperacao.Concluido)
{
this.Text = "Operação Mapa GPS - Concluída";
}
- else if (Variaveis.OperacaoEmAndamento.Iniciado)
+ else if (statusAtual == StatusOperacao.EmAndamento)
{
this.Text = "Operação Mapa GPS - Em andamento";
}
- lblDistanciaEsquerda.Text = "Distancia da Esquerda: " + Variaveis.OperacaoEmAndamento.Sensoriamento.DistanciaEsquerda.ToString("0.00") + " cm";
- lblDistanciaDireita.Text = "Distancia da Direita: " + Variaveis.OperacaoEmAndamento.Sensoriamento.DistanciaDireita.ToString("0.00") + " cm";
+ //lblDistanciaEsquerda.Text = "Distancia da Esquerda: " + Variaveis.OperacaoEmAndamento.Sensoriamento.DistanciaEsquerda.ToString("0.00") + " cm";
+ //lblDistanciaDireita.Text = "Distancia da Direita: " + Variaveis.OperacaoEmAndamento.Sensoriamento.DistanciaDireita.ToString("0.00") + " cm";
lblDistanciaPercorrida.Text = "Distancia Percorrida: " + Variaveis.OperacaoEmAndamento.Sensoriamento.DistanciaPercorrida.Sum().ToString("0.00") + " m";
lblTempoOperacao.Text = "Tempo de Operação: " + Variaveis.OperacaoEmAndamento.Tempo.Hours.ToString("00") + ":" + Variaveis.OperacaoEmAndamento.Tempo.Minutes.ToString("00") + ":" + Variaveis.OperacaoEmAndamento.Tempo.Seconds.ToString("00");
lblVelocidadeMedia.Text = "Velocidade Média: " + Variaveis.OperacaoEmAndamento.Sensoriamento.VelocidadeMedia.ToString("0.00") + " km/h";
- lblErvasIdentificadas.Text = "Ervas Identificadas: " + Variaveis.OperacaoEmAndamento.Sensoriamento.ErvasIdentificadas.ToString("000");
- lblHerbicidaAplicado.Text = "Herbicida Aplicado: " + Variaveis.OperacaoEmAndamento.Sensoriamento.HerbicidaConsumido.ToString("0.000") + " L";
- lblHerbicidaPorErva.Text = "Herbicida por Erva: " + Variaveis.OperacaoEmAndamento.Sensoriamento.HerbicidaPorErva.ToString("0.000") + " mL";
+ lblErvasIdentificadas.Text = "Ervas Identificadas: " + Variaveis.OperacaoEmAndamento.OpMapaGPS.Sensoriamento.ErvasIdentificadas.ToString("000");
+ lblHerbicidaAplicado.Text = "Herbicida Aplicado: " + Variaveis.OperacaoEmAndamento.OpMapaGPS.Sensoriamento.HerbicidaConsumido.ToString("0.000") + " L";
+ lblHerbicidaPorErva.Text = "Herbicida por Erva: " + Variaveis.OperacaoEmAndamento.OpMapaGPS.Sensoriamento.HerbicidaPorErva.ToString("0.000") + " mL";
lblBateriaConsumida.Text = "Bateria Consumida: " + Variaveis.OperacaoEmAndamento.Sensoriamento.BateriaConsumida.ToString("0.00") + "%";
lblPressao.Text = "P: " + Variaveis.OperacaoEmAndamento.DispAtu.Dados.PressaoLinha.ToString("0.00") + " psi";
- pgbReservatorio.Value = Convert.ToInt32(Variaveis.OperacaoEmAndamento.DispAtu.Dados.PercentualReservatorio);
+ pgbReservatorio.Value = Variaveis.OperacaoEmAndamento.DispAtu.Dados.PercentualReservatorio <= 100 ? Convert.ToInt32(Variaveis.OperacaoEmAndamento.DispAtu.Dados.PercentualReservatorio) : 100;
lblPorcentagemReservatorio.Text = Variaveis.OperacaoEmAndamento.DispAtu.Dados.VolumeReservatorio.ToString("0.000") + " L " + Variaveis.OperacaoEmAndamento.DispAtu.Dados.PercentualReservatorio.ToString("00.00") + "%";
pgbBateria.Value = Variaveis.OperacaoEmAndamento.Sensoriamento.PorcentagemBateria <= 100 ? Convert.ToInt32(Variaveis.OperacaoEmAndamento.Sensoriamento.PorcentagemBateria) : 100;
lblPorcentagemBateria.Text = (PZEMService.Iniciado && PZEMService.UltimaLeitura != null ? PZEMService.UltimaLeitura.Tensao.ToString("0.00") + "v " + PZEMService.UltimaLeitura.Corrente.ToString("0.00") + "A " : "") + Variaveis.OperacaoEmAndamento.Sensoriamento.PorcentagemBateria.ToString("00.00") + "%";
- pgbProgresso.Value = Variaveis.OperacaoEmAndamento.Sensoriamento.ProgressoTrajeto <= 100 ? Convert.ToInt32(Variaveis.OperacaoEmAndamento.Sensoriamento.ProgressoTrajeto) : 100;
- lblPorcentagemProgresso.Text = Variaveis.OperacaoEmAndamento.Sensoriamento.ProgressoTrajeto.ToString("00.00") + "%";
- pgbProgressoRua.Value = Variaveis.OperacaoEmAndamento.Sensoriamento.ProgressoRua <= 100 ? Convert.ToInt32(Variaveis.OperacaoEmAndamento.Sensoriamento.ProgressoRua) : 100;
- lblPorcentagemProgressoRua.Text = Variaveis.OperacaoEmAndamento.Sensoriamento.ProgressoRua.ToString("00.00") + "%";
+ pgbProgresso.Value = Variaveis.OperacaoEmAndamento.OpMapaGPS.Sensoriamento.ProgressoTrajeto <= 100 ? Convert.ToInt32(Variaveis.OperacaoEmAndamento.OpMapaGPS.Sensoriamento.ProgressoTrajeto) : 100;
+ lblPorcentagemProgresso.Text = Variaveis.OperacaoEmAndamento.OpMapaGPS.Sensoriamento.ProgressoTrajeto.ToString("00.00") + "%";
+ pgbProgressoRua.Value = Variaveis.OperacaoEmAndamento.OpMapaGPS.Sensoriamento.ProgressoRua <= 100 ? Convert.ToInt32(Variaveis.OperacaoEmAndamento.OpMapaGPS.Sensoriamento.ProgressoRua) : 100;
+ lblPorcentagemProgressoRua.Text = Variaveis.OperacaoEmAndamento.OpMapaGPS.Sensoriamento.ProgressoRua.ToString("00.00") + "%";
lblDistancia.Text = "Distância Operação: " + (Variaveis.OperacaoEmAndamento.Mapa == null ? 0 : Variaveis.OperacaoEmAndamento.Mapa.DistanciaTotal).ToString("00.00") + " m";
@@ -630,7 +638,7 @@ namespace AgroBase.Forms.Operacoes
}
else
{
- if (Variaveis.OperacaoEmAndamento.OperacaoLiberada)
+ if (Variaveis.OperacaoEmAndamento.OperacaoLiberada && Variaveis.OperacaoEmAndamento.Mapa.DistanciaTotal > 0 && Variaveis.OperacaoEmAndamento.Mapa.RuasPercorrer.Any())
{
Variaveis.OperacaoEmAndamento.DispAtu.Dados.BombaPressurizadora.PressaoSP = Convert.ToDouble(nudPressaoSP.Value);
Variaveis.OperacaoEmAndamento.IniciarOperacao(null, false);
@@ -694,7 +702,7 @@ namespace AgroBase.Forms.Operacoes
// Define a string que representa a atuacao do bico
- string bicoAtuacao = Variaveis.OperacaoEmAndamento.Sensoriamento.AtuacoesPorBico[i].ToString("000");
+ string bicoAtuacao = Variaveis.OperacaoEmAndamento.OpMapaGPS.Sensoriamento.AtuacoesPorBico[i].ToString("000");
// Define a fonte para o texto
Font fontA = new Font("Arial", 8, FontStyle.Bold);
// Mede o tamanho do texto
@@ -807,7 +815,7 @@ namespace AgroBase.Forms.Operacoes
try
{
//DesenharInclinacao((Panel)sender, e, (float)cameraCaminho.Angulo);
- DesenharInclinacao((Panel)sender, e, (float)(Variaveis.OperacaoEmAndamento.Controle.Angulo), 90);
+ DesenharInclinacao((Panel)sender, e, (float)(Variaveis.OperacaoEmAndamento.OpMapaGPS.Controle.Angulo), 90);
}
catch { }
}
@@ -817,7 +825,7 @@ namespace AgroBase.Forms.Operacoes
try
{
//DesenharInclinacao((Panel)sender, e, (float)cameraCaminho.Angulo);
- DesenharInclinacao((Panel)sender, e, (float)(Variaveis.OperacaoEmAndamento.Sensoriamento.AnguloRuaCamera), 90);
+ DesenharInclinacao((Panel)sender, e, (float)(Variaveis.OperacaoEmAndamento.OpMapaGPS.Sensoriamento.AnguloRuaCamera), 90);
}
catch { }
}
@@ -826,7 +834,7 @@ namespace AgroBase.Forms.Operacoes
{
try
{
- double angulo = Variaveis.OperacaoEmAndamento.ReferencialRuaGPS.AnguloCarro;
+ double angulo = Variaveis.OperacaoEmAndamento.OpMapaGPS.ReferencialRuaGPS.AnguloCarro;
DesenharInclinacao((Panel)sender, e, (float)angulo, -90);
}
catch { }
@@ -912,16 +920,16 @@ namespace AgroBase.Forms.Operacoes
{
((Timer)sender).Stop();
}
- lblStatus.Text = "Status: " + Enum.GetName(typeof(StatusOperacao), Variaveis.OperacaoEmAndamento.ReferencialRuaGPS.StatusAtual);
- lblDirecao.Text = "Direção: " + Enum.GetName(typeof(DirecaoCarroRua), Variaveis.OperacaoEmAndamento.ReferencialRuaGPS.Direcao);
+ lblStatus.Text = "Status: " + Enum.GetName(typeof(StatusCarroMapa), Variaveis.OperacaoEmAndamento.OpMapaGPS.ReferencialRuaGPS.StatusAtual);
+ lblDirecao.Text = "Direção: " + Enum.GetName(typeof(DirecaoCarroRua), Variaveis.OperacaoEmAndamento.OpMapaGPS.ReferencialRuaGPS.Direcao);
//var Ponto = Variaveis.OperacaoEmAndamento.Mapa.Trajetoria[Variaveis.OperacaoEmAndamento.Mapa.IdxRuaAtual][Variaveis.OperacaoEmAndamento.ReferencialRuaGPS.IdxPontoAproximadoRua];
}
private void btnManobraConcluida_Click(object sender, EventArgs e)
{
- if (Variaveis.OperacaoEmAndamento.ReferencialRuaGPS.StatusAtual == StatusOperacao.Manobrando)
+ if (Variaveis.OperacaoEmAndamento.OpMapaGPS.ReferencialRuaGPS.StatusAtual == StatusCarroMapa.Manobrando)
{
- Variaveis.OperacaoEmAndamento.ReferencialRuaGPS.ManobraConcluida = true;
+ Variaveis.OperacaoEmAndamento.OpMapaGPS.ReferencialRuaGPS.ManobraConcluida = true;
}
}
@@ -931,128 +939,6 @@ namespace AgroBase.Forms.Operacoes
#endregion
- #region Calibragem do pulverizador
-
- private void AtuarBico(AtuadorBicoModel Bico, bool Estado)
- {
- if (Bico != null)
- {
- Bico.Atuado = Variaveis.OperacaoEmAndamento.DispAtu.Dados.AtuacaoNivelAlto ? Estado : !Estado;
- string Protocolo = Bico.ProtocoloComando();
- Variaveis.OperacaoEmAndamento.DispAtu.EnviarDadosSerial(Protocolo);
- }
- }
-
- private void AtuarBomba(bool Estado)
- {
- Variaveis.OperacaoEmAndamento.DispAtu.Dados.BombaPressurizadora.BombaAtuada = Estado;
- string Protocolo = Variaveis.OperacaoEmAndamento.DispAtu.Dados.BombaPressurizadora.ProtocoloComando();
- Variaveis.OperacaoEmAndamento.DispAtu.EnviarDadosSerial(Protocolo);
- }
-
- private void btnCalibrarVazao_Click(object sender, EventArgs e)
- {
- if (btnCalibrarVazao.Text == "Calcular")
- {
- if (txtVolumeLido.Text == "" || double.TryParse(txtVolumeLido.Text, out double Volume) == false)
- {
- MessageBox.Show("Informe o volume obtido durante a calibragem!");
- return;
- }
- _CalibragemVazao.VolumeComputado = Volume;
- btnCalibrarVazao.Text = "Calibrar vazão";
-
- string Resultados =
- "Valores iniciais" + Environment.NewLine +
- "Massa = " + _CalibragemVazao.MassaInicial.ToString("0.0000") + " Kg" + Environment.NewLine +
- "Pressão = " + _CalibragemVazao.PressoesAferidas.First().ToString("0.0000") + " psi" + Environment.NewLine +
- Environment.NewLine +
- "Medições" + Environment.NewLine +
- "V = " + _CalibragemVazao.VolumeComputado.ToString("0.0000") + "mL" + Environment.NewLine +
- "P = " + _CalibragemVazao.PressaoMedia.ToString("0.0000") + " psi" + Environment.NewLine +
- "NP = " + _CalibragemVazao.QtdPulsos + Environment.NewLine +
- "T = " + _CalibragemVazao.Periodo + " s" + Environment.NewLine +
- "M = " + _CalibragemVazao.MassaFinal.ToString("0.0000") + " Kg" + Environment.NewLine +
- Environment.NewLine +
- "Cálculos" + Environment.NewLine +
- "Massa Perdida = " + _CalibragemVazao.MassaPerdida.ToString("0.0000") + " g" + Environment.NewLine +
- "d = " + _CalibragemVazao.d.ToString("0.0000") + Environment.NewLine +
- "Q = " + _CalibragemVazao.Q.ToString("0.0000") + " mL/s" + Environment.NewLine +
- "x = " + _CalibragemVazao.x.ToString("0.0000") + Environment.NewLine +
- "Q2 = " + _CalibragemVazao.Q2.ToString("0.0000") + " mL" + Environment.NewLine +
- ""
- ;
-
- Console.WriteLine(Resultados);
- MessageBox.Show(Resultados, "Resultado da calibragem");
- if (MessageBox.Show("Deseja aceitar os parâmetros de calibragem?", "Atualizar dados", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
- {
- Variaveis.OperacaoEmAndamento.DispAtu.Dados._FluxoMlRef = _CalibragemVazao.VolumeComputado;
- Variaveis.OperacaoEmAndamento.DispAtu.Dados._FluxoPulsoRef = _CalibragemVazao.QtdPulsos;
- Variaveis.OperacaoEmAndamento.DispAtu.Dados.DensidadeHerbicida = _CalibragemVazao.d;
- }
- }
- else
- {
- btnCalibrarVazao.Enabled = false;
- AtuarBomba(true);
- var tmrInicioCalibragemVazao = new Timer { Interval = 1000 };
- tmrInicioCalibragemVazao.Tick += tmrInicioCalibragemVazao_Tick;
- tmrInicioCalibragemVazao.Start();
- }
- txtVolumeLido.Enabled = false;
- }
-
- private void tmrInicioCalibragemVazao_Tick(object sender, EventArgs e)
- {
- ((Timer)sender).Stop();
-
- var tmrCalibragemVazao = new Timer() { Interval = 500 };
-
- _CalibragemVazao = new CalibragemVazao()
- {
- Calibrando = true,
- IniciadoEm = DateTime.Now,
- MassaInicial = Variaveis.OperacaoEmAndamento.DispAtu.Dados.MassaReservatorio,
- PressoesAferidas = new List()
- {
- Variaveis.OperacaoEmAndamento.DispAtu.Dados.PressaoLinha,
- }
- };
- tmrCalibragemVazao.Tick += tmrCalibragemVazao_Tick;
- tmrCalibragemVazao.Start();
-
- AtuarBico(Variaveis.OperacaoEmAndamento.DispAtu.Dados.BicosPulverizadores.FirstOrDefault(x => x.Inicializado), true);
- }
-
- private void tmrCalibragemVazao_Tick(object sender, EventArgs e)
- {
- _CalibragemVazao.QtdPulsos = Variaveis.OperacaoEmAndamento.DispAtu.Dados._LeituraPulsos;
- _CalibragemVazao.Periodo = Variaveis.OperacaoEmAndamento.DispAtu.Dados._LeituraPeriodo;
- _CalibragemVazao.PressoesAferidas.Add(Variaveis.OperacaoEmAndamento.DispAtu.Dados.PressaoLinha);
- _CalibragemVazao.MassaFinal = Variaveis.OperacaoEmAndamento.DispAtu.Dados.MassaReservatorio;
-
- if (Variaveis.OperacaoEmAndamento.DispAtu.Dados._LeituraPeriodo >= _CalibragemVazao.TempoCalibragem || DateTime.Now >= _CalibragemVazao.IniciadoEm.AddMilliseconds(_CalibragemVazao.TempoCalibragem))
- {
- ((Timer)sender).Stop();
-
- AtuarBico(Variaveis.OperacaoEmAndamento.DispAtu.Dados.BicosPulverizadores.FirstOrDefault(x => x.Inicializado), false);
- AtuarBomba(false);
-
- _CalibragemVazao.Periodo = _CalibragemVazao.Periodo / 1000.0;
- if (_CalibragemVazao.Periodo == 0)
- {
- _CalibragemVazao.Periodo = _CalibragemVazao.TempoCalibragem / 1000;
- }
-
- btnCalibrarVazao.Text = "Calcular";
- btnCalibrarVazao.Enabled = true;
- txtVolumeLido.Enabled = true;
- }
-
- }
-
- #endregion
}
}
diff --git a/AgroBase/AgroBase/Forms/Operacoes/frmOperacaoSeguidorLinha.Designer.cs b/AgroBase/AgroBase/Forms/Operacoes/frmOperacaoSeguidorLinha.Designer.cs
index a96008f8a..d28a3c637 100644
--- a/AgroBase/AgroBase/Forms/Operacoes/frmOperacaoSeguidorLinha.Designer.cs
+++ b/AgroBase/AgroBase/Forms/Operacoes/frmOperacaoSeguidorLinha.Designer.cs
@@ -29,9 +29,9 @@ namespace AgroBase.Forms.Operacoes
///
private void InitializeComponent()
{
- System.Windows.Forms.DataVisualization.Charting.ChartArea chartArea6 = new System.Windows.Forms.DataVisualization.Charting.ChartArea();
- System.Windows.Forms.DataVisualization.Charting.Legend legend6 = new System.Windows.Forms.DataVisualization.Charting.Legend();
- System.Windows.Forms.DataVisualization.Charting.Series series6 = new System.Windows.Forms.DataVisualization.Charting.Series();
+ System.Windows.Forms.DataVisualization.Charting.ChartArea chartArea1 = new System.Windows.Forms.DataVisualization.Charting.ChartArea();
+ System.Windows.Forms.DataVisualization.Charting.Legend legend1 = new System.Windows.Forms.DataVisualization.Charting.Legend();
+ System.Windows.Forms.DataVisualization.Charting.Series series1 = new System.Windows.Forms.DataVisualization.Charting.Series();
this.pnlCameraSolo = new System.Windows.Forms.Panel();
this.pnlCameraSoloD = new System.Windows.Forms.Panel();
this.pnlCameraSoloE = new System.Windows.Forms.Panel();
@@ -59,6 +59,9 @@ namespace AgroBase.Forms.Operacoes
this.lblPorcentagemReservatorio = new System.Windows.Forms.Label();
this.pgbReservatorio = new System.Windows.Forms.ProgressBar();
this.gpbOpcoes = new System.Windows.Forms.GroupBox();
+ this.lblPSI = new System.Windows.Forms.Label();
+ this.lblPressaoSP = new System.Windows.Forms.Label();
+ this.nudPressaoSP = new System.Windows.Forms.NumericUpDown();
this.btnCarregarMapa = new System.Windows.Forms.Button();
this.btnIniciarOperacao = new System.Windows.Forms.Button();
this.gpbInformacoesGerais = new System.Windows.Forms.GroupBox();
@@ -69,8 +72,6 @@ namespace AgroBase.Forms.Operacoes
this.lblVelocidadeMedia = new System.Windows.Forms.Label();
this.lblTempoOperacao = new System.Windows.Forms.Label();
this.lblDistanciaPercorrida = new System.Windows.Forms.Label();
- this.lblDistanciaEsquerda = new System.Windows.Forms.Label();
- this.lblDistanciaDireita = new System.Windows.Forms.Label();
this.pnlInferior = new System.Windows.Forms.Panel();
this.lblDistancia = new System.Windows.Forms.Label();
this.lblMapaCarregado = new System.Windows.Forms.Label();
@@ -85,23 +86,23 @@ namespace AgroBase.Forms.Operacoes
this.pnlInclinacao = new System.Windows.Forms.Panel();
this.pnlAnguloCamera = new System.Windows.Forms.Panel();
this.lblPerformance = new System.Windows.Forms.Label();
- this.btnCalibrarVazao = new System.Windows.Forms.Button();
- this.nudPressaoSP = new System.Windows.Forms.NumericUpDown();
- this.lblPressaoSP = new System.Windows.Forms.Label();
- this.lblPSI = new System.Windows.Forms.Label();
- this.txtVolumeLido = new System.Windows.Forms.TextBox();
- this.lblML = new System.Windows.Forms.Label();
- this.lblVolumeLido = new System.Windows.Forms.Label();
- this.lblVazao = new System.Windows.Forms.Label();
+ this.tabControl1 = new System.Windows.Forms.TabControl();
+ this.tabGrafico = new System.Windows.Forms.TabPage();
+ this.tabSonar = new System.Windows.Forms.TabPage();
+ this.picSonar = new System.Windows.Forms.PictureBox();
this.pnlCameraSolo.SuspendLayout();
this.pnlAtuadores.SuspendLayout();
this.pnlGraficos.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.chartGraficos)).BeginInit();
this.pnlNiveis.SuspendLayout();
this.gpbOpcoes.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.nudPressaoSP)).BeginInit();
this.gpbInformacoesGerais.SuspendLayout();
this.pnlInferior.SuspendLayout();
- ((System.ComponentModel.ISupportInitialize)(this.nudPressaoSP)).BeginInit();
+ this.tabControl1.SuspendLayout();
+ this.tabGrafico.SuspendLayout();
+ this.tabSonar.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.picSonar)).BeginInit();
this.SuspendLayout();
//
// pnlCameraSolo
@@ -176,7 +177,7 @@ namespace AgroBase.Forms.Operacoes
//
// pnlGraficos
//
- this.pnlGraficos.Controls.Add(this.chartGraficos);
+ this.pnlGraficos.Controls.Add(this.tabControl1);
this.pnlGraficos.Location = new System.Drawing.Point(808, 378);
this.pnlGraficos.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.pnlGraficos.Name = "pnlGraficos";
@@ -185,19 +186,19 @@ namespace AgroBase.Forms.Operacoes
//
// chartGraficos
//
- chartArea6.Name = "ChartArea1";
- this.chartGraficos.ChartAreas.Add(chartArea6);
+ chartArea1.Name = "ChartArea1";
+ this.chartGraficos.ChartAreas.Add(chartArea1);
this.chartGraficos.Dock = System.Windows.Forms.DockStyle.Fill;
- legend6.Name = "Legend1";
- this.chartGraficos.Legends.Add(legend6);
- this.chartGraficos.Location = new System.Drawing.Point(0, 0);
+ legend1.Name = "Legend1";
+ this.chartGraficos.Legends.Add(legend1);
+ this.chartGraficos.Location = new System.Drawing.Point(3, 3);
this.chartGraficos.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.chartGraficos.Name = "chartGraficos";
- series6.ChartArea = "ChartArea1";
- series6.Legend = "Legend1";
- series6.Name = "Series1";
- this.chartGraficos.Series.Add(series6);
- this.chartGraficos.Size = new System.Drawing.Size(540, 313);
+ series1.ChartArea = "ChartArea1";
+ series1.Legend = "Legend1";
+ series1.Name = "Series1";
+ this.chartGraficos.Series.Add(series1);
+ this.chartGraficos.Size = new System.Drawing.Size(526, 278);
this.chartGraficos.TabIndex = 0;
this.chartGraficos.Text = "chart1";
//
@@ -376,14 +377,9 @@ namespace AgroBase.Forms.Operacoes
//
// gpbOpcoes
//
- this.gpbOpcoes.Controls.Add(this.lblVazao);
- this.gpbOpcoes.Controls.Add(this.lblVolumeLido);
- this.gpbOpcoes.Controls.Add(this.lblML);
- this.gpbOpcoes.Controls.Add(this.txtVolumeLido);
this.gpbOpcoes.Controls.Add(this.lblPSI);
this.gpbOpcoes.Controls.Add(this.lblPressaoSP);
this.gpbOpcoes.Controls.Add(this.nudPressaoSP);
- this.gpbOpcoes.Controls.Add(this.btnCalibrarVazao);
this.gpbOpcoes.Controls.Add(this.btnCarregarMapa);
this.gpbOpcoes.Controls.Add(this.btnIniciarOperacao);
this.gpbOpcoes.Font = new System.Drawing.Font("Mongolian Baiti", 9F, System.Drawing.FontStyle.Bold);
@@ -396,23 +392,54 @@ namespace AgroBase.Forms.Operacoes
this.gpbOpcoes.TabStop = false;
this.gpbOpcoes.Text = "Opções";
//
+ // lblPSI
+ //
+ this.lblPSI.AutoSize = true;
+ this.lblPSI.Location = new System.Drawing.Point(218, 28);
+ this.lblPSI.Name = "lblPSI";
+ this.lblPSI.Size = new System.Drawing.Size(28, 16);
+ this.lblPSI.TabIndex = 10;
+ this.lblPSI.Text = "psi";
+ //
+ // lblPressaoSP
+ //
+ this.lblPressaoSP.AutoSize = true;
+ this.lblPressaoSP.Location = new System.Drawing.Point(6, 28);
+ this.lblPressaoSP.Name = "lblPressaoSP";
+ this.lblPressaoSP.Size = new System.Drawing.Size(124, 16);
+ this.lblPressaoSP.TabIndex = 9;
+ this.lblPressaoSP.Text = "Pressão da linha";
+ //
+ // nudPressaoSP
+ //
+ this.nudPressaoSP.Location = new System.Drawing.Point(138, 23);
+ this.nudPressaoSP.Maximum = new decimal(new int[] {
+ 200,
+ 0,
+ 0,
+ 0});
+ this.nudPressaoSP.Name = "nudPressaoSP";
+ this.nudPressaoSP.Size = new System.Drawing.Size(74, 25);
+ this.nudPressaoSP.TabIndex = 8;
+ this.nudPressaoSP.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
+ //
// btnCarregarMapa
//
- this.btnCarregarMapa.Location = new System.Drawing.Point(5, 114);
+ this.btnCarregarMapa.Location = new System.Drawing.Point(29, 71);
this.btnCarregarMapa.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.btnCarregarMapa.Name = "btnCarregarMapa";
- this.btnCarregarMapa.Size = new System.Drawing.Size(99, 26);
+ this.btnCarregarMapa.Size = new System.Drawing.Size(206, 26);
this.btnCarregarMapa.TabIndex = 5;
- this.btnCarregarMapa.Text = "Mapa";
+ this.btnCarregarMapa.Text = "Selecionar Mapa";
this.btnCarregarMapa.UseVisualStyleBackColor = true;
this.btnCarregarMapa.Click += new System.EventHandler(this.btnCarregarMapa_Click);
//
// btnIniciarOperacao
//
- this.btnIniciarOperacao.Location = new System.Drawing.Point(110, 114);
+ this.btnIniciarOperacao.Location = new System.Drawing.Point(29, 107);
this.btnIniciarOperacao.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.btnIniciarOperacao.Name = "btnIniciarOperacao";
- this.btnIniciarOperacao.Size = new System.Drawing.Size(149, 26);
+ this.btnIniciarOperacao.Size = new System.Drawing.Size(206, 26);
this.btnIniciarOperacao.TabIndex = 6;
this.btnIniciarOperacao.Text = "Iniciar Operação";
this.btnIniciarOperacao.UseVisualStyleBackColor = true;
@@ -500,26 +527,6 @@ namespace AgroBase.Forms.Operacoes
this.lblDistanciaPercorrida.TabIndex = 0;
this.lblDistanciaPercorrida.Text = "Distancia Percorrida: 0,00 m";
//
- // lblDistanciaEsquerda
- //
- this.lblDistanciaEsquerda.AutoSize = true;
- this.lblDistanciaEsquerda.Font = new System.Drawing.Font("Mongolian Baiti", 9.25F, System.Drawing.FontStyle.Bold);
- this.lblDistanciaEsquerda.Location = new System.Drawing.Point(811, 369);
- this.lblDistanciaEsquerda.Name = "lblDistanciaEsquerda";
- this.lblDistanciaEsquerda.Size = new System.Drawing.Size(246, 16);
- this.lblDistanciaEsquerda.TabIndex = 11;
- this.lblDistanciaEsquerda.Text = "Distancia da Esquerda: 00.00 cm";
- //
- // lblDistanciaDireita
- //
- this.lblDistanciaDireita.AutoSize = true;
- this.lblDistanciaDireita.Font = new System.Drawing.Font("Mongolian Baiti", 9F, System.Drawing.FontStyle.Bold);
- this.lblDistanciaDireita.Location = new System.Drawing.Point(1112, 370);
- this.lblDistanciaDireita.Name = "lblDistanciaDireita";
- this.lblDistanciaDireita.Size = new System.Drawing.Size(227, 16);
- this.lblDistanciaDireita.TabIndex = 12;
- this.lblDistanciaDireita.Text = "Distancia da Direita: 00.00 cm";
- //
// pnlInferior
//
this.pnlInferior.Controls.Add(this.lblDistancia);
@@ -674,83 +681,47 @@ namespace AgroBase.Forms.Operacoes
this.lblPerformance.TabIndex = 16;
this.lblPerformance.Text = "CPU: 0,0% GPU: 0,0% RAM: 0,0%";
//
- // btnCalibrarVazao
+ // tabControl1
//
- this.btnCalibrarVazao.Location = new System.Drawing.Point(138, 84);
- this.btnCalibrarVazao.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
- this.btnCalibrarVazao.Name = "btnCalibrarVazao";
- this.btnCalibrarVazao.Size = new System.Drawing.Size(120, 26);
- this.btnCalibrarVazao.TabIndex = 7;
- this.btnCalibrarVazao.Text = "Calibrar vazão";
- this.btnCalibrarVazao.UseVisualStyleBackColor = true;
- this.btnCalibrarVazao.Click += new System.EventHandler(this.btnCalibrarVazao_Click);
+ this.tabControl1.Controls.Add(this.tabGrafico);
+ this.tabControl1.Controls.Add(this.tabSonar);
+ this.tabControl1.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.tabControl1.Location = new System.Drawing.Point(0, 0);
+ this.tabControl1.Name = "tabControl1";
+ this.tabControl1.SelectedIndex = 0;
+ this.tabControl1.Size = new System.Drawing.Size(540, 313);
+ this.tabControl1.TabIndex = 0;
//
- // nudPressaoSP
+ // tabGrafico
//
- this.nudPressaoSP.Location = new System.Drawing.Point(138, 23);
- this.nudPressaoSP.Maximum = new decimal(new int[] {
- 200,
- 0,
- 0,
- 0});
- this.nudPressaoSP.Name = "nudPressaoSP";
- this.nudPressaoSP.Size = new System.Drawing.Size(74, 25);
- this.nudPressaoSP.TabIndex = 8;
- this.nudPressaoSP.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
+ this.tabGrafico.Controls.Add(this.chartGraficos);
+ this.tabGrafico.Location = new System.Drawing.Point(4, 25);
+ this.tabGrafico.Name = "tabGrafico";
+ this.tabGrafico.Padding = new System.Windows.Forms.Padding(3);
+ this.tabGrafico.Size = new System.Drawing.Size(532, 284);
+ this.tabGrafico.TabIndex = 0;
+ this.tabGrafico.Text = "Desempenho";
+ this.tabGrafico.UseVisualStyleBackColor = true;
//
- // lblPressaoSP
+ // tabSonar
//
- this.lblPressaoSP.AutoSize = true;
- this.lblPressaoSP.Location = new System.Drawing.Point(6, 28);
- this.lblPressaoSP.Name = "lblPressaoSP";
- this.lblPressaoSP.Size = new System.Drawing.Size(124, 16);
- this.lblPressaoSP.TabIndex = 9;
- this.lblPressaoSP.Text = "Pressão da linha";
+ this.tabSonar.Controls.Add(this.picSonar);
+ this.tabSonar.Location = new System.Drawing.Point(4, 25);
+ this.tabSonar.Name = "tabSonar";
+ this.tabSonar.Padding = new System.Windows.Forms.Padding(3);
+ this.tabSonar.Size = new System.Drawing.Size(532, 284);
+ this.tabSonar.TabIndex = 1;
+ this.tabSonar.Text = "Sonar";
+ this.tabSonar.UseVisualStyleBackColor = true;
//
- // lblPSI
+ // picSonar
//
- this.lblPSI.AutoSize = true;
- this.lblPSI.Location = new System.Drawing.Point(218, 28);
- this.lblPSI.Name = "lblPSI";
- this.lblPSI.Size = new System.Drawing.Size(28, 16);
- this.lblPSI.TabIndex = 10;
- this.lblPSI.Text = "psi";
- //
- // txtVolumeLido
- //
- this.txtVolumeLido.Enabled = false;
- this.txtVolumeLido.Location = new System.Drawing.Point(138, 54);
- this.txtVolumeLido.Name = "txtVolumeLido";
- this.txtVolumeLido.Size = new System.Drawing.Size(74, 25);
- this.txtVolumeLido.TabIndex = 11;
- this.txtVolumeLido.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
- //
- // lblML
- //
- this.lblML.AutoSize = true;
- this.lblML.Location = new System.Drawing.Point(218, 59);
- this.lblML.Name = "lblML";
- this.lblML.Size = new System.Drawing.Size(30, 16);
- this.lblML.TabIndex = 12;
- this.lblML.Text = "mL";
- //
- // lblVolumeLido
- //
- this.lblVolumeLido.AutoSize = true;
- this.lblVolumeLido.Location = new System.Drawing.Point(6, 59);
- this.lblVolumeLido.Name = "lblVolumeLido";
- this.lblVolumeLido.Size = new System.Drawing.Size(96, 16);
- this.lblVolumeLido.TabIndex = 13;
- this.lblVolumeLido.Text = "Volume lido";
- //
- // lblVazao
- //
- this.lblVazao.AutoSize = true;
- this.lblVazao.Location = new System.Drawing.Point(6, 91);
- this.lblVazao.Name = "lblVazao";
- this.lblVazao.Size = new System.Drawing.Size(120, 16);
- this.lblVazao.TabIndex = 14;
- this.lblVazao.Text = "Vazão: 10 mL/s";
+ this.picSonar.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.picSonar.Location = new System.Drawing.Point(3, 3);
+ this.picSonar.Name = "picSonar";
+ this.picSonar.Size = new System.Drawing.Size(526, 278);
+ this.picSonar.TabIndex = 1;
+ this.picSonar.TabStop = false;
//
// frmOperacaoMapaGPS
//
@@ -761,10 +732,8 @@ namespace AgroBase.Forms.Operacoes
this.Controls.Add(this.lblPerformance);
this.Controls.Add(this.pnlAnguloCamera);
this.Controls.Add(this.pnlOrientacao);
- this.Controls.Add(this.lblDistanciaEsquerda);
this.Controls.Add(this.pnlMapa);
this.Controls.Add(this.pnlInferior);
- this.Controls.Add(this.lblDistanciaDireita);
this.Controls.Add(this.pnlInclinacao);
this.Controls.Add(this.gpbInformacoesGerais);
this.Controls.Add(this.gpbOpcoes);
@@ -789,11 +758,15 @@ namespace AgroBase.Forms.Operacoes
this.pnlNiveis.PerformLayout();
this.gpbOpcoes.ResumeLayout(false);
this.gpbOpcoes.PerformLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.nudPressaoSP)).EndInit();
this.gpbInformacoesGerais.ResumeLayout(false);
this.gpbInformacoesGerais.PerformLayout();
this.pnlInferior.ResumeLayout(false);
this.pnlInferior.PerformLayout();
- ((System.ComponentModel.ISupportInitialize)(this.nudPressaoSP)).EndInit();
+ this.tabControl1.ResumeLayout(false);
+ this.tabGrafico.ResumeLayout(false);
+ this.tabSonar.ResumeLayout(false);
+ ((System.ComponentModel.ISupportInitialize)(this.picSonar)).EndInit();
this.ResumeLayout(false);
this.PerformLayout();
@@ -826,8 +799,6 @@ namespace AgroBase.Forms.Operacoes
private System.Windows.Forms.Label lblTempoOperacao;
private System.Windows.Forms.Label lblDistanciaPercorrida;
private System.Windows.Forms.Panel pnlInclinacao;
- private System.Windows.Forms.Label lblDistanciaEsquerda;
- private System.Windows.Forms.Label lblDistanciaDireita;
private System.Windows.Forms.Panel pnlInferior;
private System.Windows.Forms.Label lblUltimaLeituraRua;
private System.Windows.Forms.Label lblUltimaLeituraSolo;
@@ -854,13 +825,12 @@ namespace AgroBase.Forms.Operacoes
private System.Windows.Forms.Label lblProgressoRua;
private System.Windows.Forms.Panel pnlAnguloCamera;
private System.Windows.Forms.Label lblPerformance;
- private System.Windows.Forms.Label lblML;
- private System.Windows.Forms.TextBox txtVolumeLido;
private System.Windows.Forms.Label lblPSI;
private System.Windows.Forms.Label lblPressaoSP;
private System.Windows.Forms.NumericUpDown nudPressaoSP;
- private System.Windows.Forms.Button btnCalibrarVazao;
- private System.Windows.Forms.Label lblVolumeLido;
- private System.Windows.Forms.Label lblVazao;
+ private System.Windows.Forms.TabControl tabControl1;
+ private System.Windows.Forms.TabPage tabGrafico;
+ private System.Windows.Forms.TabPage tabSonar;
+ private System.Windows.Forms.PictureBox picSonar;
}
}
\ No newline at end of file
diff --git a/AgroBase/AgroBase/Forms/Operacoes/frmParametrizacaoOperacao.cs b/AgroBase/AgroBase/Forms/Operacoes/frmParametrizacaoOperacao.cs
index 4795402d0..658d9056e 100644
--- a/AgroBase/AgroBase/Forms/Operacoes/frmParametrizacaoOperacao.cs
+++ b/AgroBase/AgroBase/Forms/Operacoes/frmParametrizacaoOperacao.cs
@@ -53,13 +53,13 @@ namespace AgroBase.Forms.Operacoes
}
});
- nudVelocidadeComErvas.Value = Convert.ToInt32(Variaveis.OperacaoEmAndamento.Controle.RPM_Min);
- nudVelocidadeSemErvas.Value = Convert.ToInt32(Variaveis.OperacaoEmAndamento.Controle.RPM_Max);
- lblKmhCErvas.Text = MovimentacaoModel.CalculaVelocidadeRPM(Variaveis.OperacaoEmAndamento.Controle.RPM_Min).ToString("0.00") + " Km/h";
- lblKmhSErvas.Text = MovimentacaoModel.CalculaVelocidadeRPM(Variaveis.OperacaoEmAndamento.Controle.RPM_Max).ToString("0.00") + " Km/h";
- nudAnguloMaximo.Value = Convert.ToInt32(Variaveis.OperacaoEmAndamento.Controle.Angulo_Max);
- nudAnguloMinimo.Value = Convert.ToInt32(Variaveis.OperacaoEmAndamento.Controle.Angulo_Min);
- nudVelocidadeMP.Value = Convert.ToInt32(Variaveis.OperacaoEmAndamento.Controle.VelocidadeMP);
+ nudVelocidadeComErvas.Value = Convert.ToInt32(Variaveis.OperacaoEmAndamento.OpMapaGPS.Controle.RPM_Min);
+ nudVelocidadeSemErvas.Value = Convert.ToInt32(Variaveis.OperacaoEmAndamento.OpMapaGPS.Controle.RPM_Max);
+ lblKmhCErvas.Text = MovimentacaoModel.CalculaVelocidadeRPM(Variaveis.OperacaoEmAndamento.OpMapaGPS.Controle.RPM_Min).ToString("0.00") + " Km/h";
+ lblKmhSErvas.Text = MovimentacaoModel.CalculaVelocidadeRPM(Variaveis.OperacaoEmAndamento.OpMapaGPS.Controle.RPM_Max).ToString("0.00") + " Km/h";
+ nudAnguloMaximo.Value = Convert.ToInt32(Variaveis.OperacaoEmAndamento.OpMapaGPS.Controle.Angulo_Max);
+ nudAnguloMinimo.Value = Convert.ToInt32(Variaveis.OperacaoEmAndamento.OpMapaGPS.Controle.Angulo_Min);
+ nudVelocidadeMP.Value = Convert.ToInt32(Variaveis.OperacaoEmAndamento.OpMapaGPS.Controle.VelocidadeMP);
nudTemposalvarlog.Value = Variaveis.OperacaoEmAndamento.tmrLogs.Interval / 1000;
nudQtdBicos.Value = Variaveis.OperacaoEmAndamento.DispAtu.Dados.QuantidadeBicos;
nudQtdCameras.Value = Variaveis.OperacaoEmAndamento.QuantidadeCamerasSolo;
@@ -122,11 +122,11 @@ namespace AgroBase.Forms.Operacoes
void SalvarOperacao()
{
Variaveis.OperacaoEmAndamento.ModulosMandatorios = ModulosMandatorios.Where(x => x.Utilizar).ToList();
- Variaveis.OperacaoEmAndamento.Controle.RPM_Max = (int)(nudVelocidadeSemErvas.Value);
- Variaveis.OperacaoEmAndamento.Controle.RPM_Min = (int)(nudVelocidadeComErvas.Value);
- Variaveis.OperacaoEmAndamento.Controle.Angulo_Max = (int)(nudAnguloMaximo.Value);
- Variaveis.OperacaoEmAndamento.Controle.Angulo_Min = (int)(nudAnguloMinimo.Value);
- Variaveis.OperacaoEmAndamento.Controle.VelocidadeMP = (int)(nudVelocidadeMP.Value);
+ Variaveis.OperacaoEmAndamento.OpMapaGPS.Controle.RPM_Max = (int)(nudVelocidadeSemErvas.Value);
+ Variaveis.OperacaoEmAndamento.OpMapaGPS.Controle.RPM_Min = (int)(nudVelocidadeComErvas.Value);
+ Variaveis.OperacaoEmAndamento.OpMapaGPS.Controle.Angulo_Max = (int)(nudAnguloMaximo.Value);
+ Variaveis.OperacaoEmAndamento.OpMapaGPS.Controle.Angulo_Min = (int)(nudAnguloMinimo.Value);
+ Variaveis.OperacaoEmAndamento.OpMapaGPS.Controle.VelocidadeMP = (int)(nudVelocidadeMP.Value);
Variaveis.OperacaoEmAndamento.tmrLogs.Interval = (int)(nudTemposalvarlog.Value * 1000);
Variaveis.OperacaoEmAndamento.DispAtu.Dados.QuantidadeBicos = (int)nudQtdBicos.Value;
Variaveis.OperacaoEmAndamento.QuantidadeCamerasSolo = (int)nudQtdCameras.Value;
diff --git a/AgroBase/AgroBase/Forms/Sensoriamento/frmSenConfig.Designer.cs b/AgroBase/AgroBase/Forms/Sensoriamento/frmSenConfig.Designer.cs
index e53269433..9f89dc9c0 100644
--- a/AgroBase/AgroBase/Forms/Sensoriamento/frmSenConfig.Designer.cs
+++ b/AgroBase/AgroBase/Forms/Sensoriamento/frmSenConfig.Designer.cs
@@ -50,12 +50,13 @@
this.btnBateriaDefinir = new System.Windows.Forms.Button();
this.gpbBateria = new System.Windows.Forms.GroupBox();
this.gpbCameras = new System.Windows.Forms.GroupBox();
- this.lblCaminho = new System.Windows.Forms.Label();
- this.cmbCaminho = new System.Windows.Forms.ComboBox();
- this.lblSoloesq = new System.Windows.Forms.Label();
- this.cmbSoloEsq = new System.Windows.Forms.ComboBox();
this.lblSolodir = new System.Windows.Forms.Label();
this.cmbSoloDir = new System.Windows.Forms.ComboBox();
+ this.lblSoloesq = new System.Windows.Forms.Label();
+ this.cmbSoloEsq = new System.Windows.Forms.ComboBox();
+ this.lblCaminho = new System.Windows.Forms.Label();
+ this.cmbCaminho = new System.Windows.Forms.ComboBox();
+ this.btnBateriaCalibrar = new System.Windows.Forms.Button();
((System.ComponentModel.ISupportInitialize)(this.gridsTEN)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.gridsCOR)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.gridsTMP)).BeginInit();
@@ -269,6 +270,7 @@
//
// gpbBateria
//
+ this.gpbBateria.Controls.Add(this.btnBateriaCalibrar);
this.gpbBateria.Controls.Add(this.label2);
this.gpbBateria.Controls.Add(this.btnBateriaDefinir);
this.gpbBateria.Controls.Add(this.cmbBateriaParametro);
@@ -296,6 +298,44 @@
this.gpbCameras.TabStop = false;
this.gpbCameras.Text = "Câmeras";
//
+ // lblSolodir
+ //
+ this.lblSolodir.AutoSize = true;
+ this.lblSolodir.Location = new System.Drawing.Point(7, 105);
+ this.lblSolodir.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+ this.lblSolodir.Name = "lblSolodir";
+ this.lblSolodir.Size = new System.Drawing.Size(58, 16);
+ this.lblSolodir.TabIndex = 25;
+ this.lblSolodir.Text = "Solo Dir.";
+ //
+ // cmbSoloDir
+ //
+ this.cmbSoloDir.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+ this.cmbSoloDir.FormattingEnabled = true;
+ this.cmbSoloDir.Location = new System.Drawing.Point(74, 97);
+ this.cmbSoloDir.Name = "cmbSoloDir";
+ this.cmbSoloDir.Size = new System.Drawing.Size(181, 24);
+ this.cmbSoloDir.TabIndex = 24;
+ //
+ // lblSoloesq
+ //
+ this.lblSoloesq.AutoSize = true;
+ this.lblSoloesq.Location = new System.Drawing.Point(7, 75);
+ this.lblSoloesq.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+ this.lblSoloesq.Name = "lblSoloesq";
+ this.lblSoloesq.Size = new System.Drawing.Size(65, 16);
+ this.lblSoloesq.TabIndex = 23;
+ this.lblSoloesq.Text = "Solo Esq.";
+ //
+ // cmbSoloEsq
+ //
+ this.cmbSoloEsq.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+ this.cmbSoloEsq.FormattingEnabled = true;
+ this.cmbSoloEsq.Location = new System.Drawing.Point(74, 67);
+ this.cmbSoloEsq.Name = "cmbSoloEsq";
+ this.cmbSoloEsq.Size = new System.Drawing.Size(181, 24);
+ this.cmbSoloEsq.TabIndex = 22;
+ //
// lblCaminho
//
this.lblCaminho.AutoSize = true;
@@ -315,43 +355,15 @@
this.cmbCaminho.Size = new System.Drawing.Size(181, 24);
this.cmbCaminho.TabIndex = 20;
//
- // lblSoloesq
+ // btnBateriaCalibrar
//
- this.lblSoloesq.AutoSize = true;
- this.lblSoloesq.Location = new System.Drawing.Point(7, 75);
- this.lblSoloesq.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
- this.lblSoloesq.Name = "lblSoloesq";
- this.lblSoloesq.Size = new System.Drawing.Size(65, 16);
- this.lblSoloesq.TabIndex = 23;
- this.lblSoloesq.Text = "Solo Esq.";
- //
- // cmbSolodEsq
- //
- this.cmbSoloEsq.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
- this.cmbSoloEsq.FormattingEnabled = true;
- this.cmbSoloEsq.Location = new System.Drawing.Point(74, 67);
- this.cmbSoloEsq.Name = "cmbSolodEsq";
- this.cmbSoloEsq.Size = new System.Drawing.Size(181, 24);
- this.cmbSoloEsq.TabIndex = 22;
- //
- // lblSolodir
- //
- this.lblSolodir.AutoSize = true;
- this.lblSolodir.Location = new System.Drawing.Point(7, 105);
- this.lblSolodir.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
- this.lblSolodir.Name = "lblSolodir";
- this.lblSolodir.Size = new System.Drawing.Size(58, 16);
- this.lblSolodir.TabIndex = 25;
- this.lblSolodir.Text = "Solo Dir.";
- //
- // cmbSoloDir
- //
- this.cmbSoloDir.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
- this.cmbSoloDir.FormattingEnabled = true;
- this.cmbSoloDir.Location = new System.Drawing.Point(74, 97);
- this.cmbSoloDir.Name = "cmbSoloDir";
- this.cmbSoloDir.Size = new System.Drawing.Size(181, 24);
- this.cmbSoloDir.TabIndex = 24;
+ this.btnBateriaCalibrar.Location = new System.Drawing.Point(10, 122);
+ this.btnBateriaCalibrar.Name = "btnBateriaCalibrar";
+ this.btnBateriaCalibrar.Size = new System.Drawing.Size(180, 23);
+ this.btnBateriaCalibrar.TabIndex = 22;
+ this.btnBateriaCalibrar.Text = "Calibrar";
+ this.btnBateriaCalibrar.UseVisualStyleBackColor = true;
+ this.btnBateriaCalibrar.Click += new System.EventHandler(this.btnBateriaCalibrar_Click);
//
// frmSenConfig
//
@@ -427,5 +439,6 @@
private System.Windows.Forms.ComboBox cmbSoloEsq;
private System.Windows.Forms.Label lblCaminho;
private System.Windows.Forms.ComboBox cmbCaminho;
+ private System.Windows.Forms.Button btnBateriaCalibrar;
}
}
\ No newline at end of file
diff --git a/AgroBase/AgroBase/Forms/Sensoriamento/frmSenConfig.cs b/AgroBase/AgroBase/Forms/Sensoriamento/frmSenConfig.cs
index dcc8d29cf..11887deec 100644
--- a/AgroBase/AgroBase/Forms/Sensoriamento/frmSenConfig.cs
+++ b/AgroBase/AgroBase/Forms/Sensoriamento/frmSenConfig.cs
@@ -43,6 +43,43 @@ namespace AgroBase.Forms.Sensoriamento
case T_Code.Sen:
{
Sensores = ((SensoriamentoModel)Disp.Dados).Sensores.ToList();
+
+ Cameras = CameraService.AtualizaListaCameras();
+ cmbCaminho.Items.Clear();
+ cmbCaminho.Items.AddRange(Cameras.Values.ToArray());
+ string IDrua = ((SensoriamentoModel)Disp.Dados).CameraID_Caminho;
+ if (Cameras.Any(x => x.Value == IDrua))
+ {
+ cmbCaminho.SelectedIndex = cmbCaminho.Items.IndexOf(IDrua);
+ }
+ else
+ {
+ cmbCaminho.Text = IDrua;
+ }
+
+ cmbSoloEsq.Items.Clear();
+ cmbSoloEsq.Items.AddRange(Cameras.Values.ToArray());
+ string IDsoloE = ((SensoriamentoModel)Disp.Dados).CameraID_SoloE;
+ if (Cameras.Any(x => x.Value == IDsoloE))
+ {
+ cmbSoloEsq.SelectedIndex = cmbSoloEsq.Items.IndexOf(IDsoloE);
+ }
+ else
+ {
+ cmbSoloEsq.Text = IDsoloE;
+ }
+
+ cmbSoloDir.Items.Clear();
+ cmbSoloDir.Items.AddRange(Cameras.Values.ToArray());
+ string IDsoloD = ((SensoriamentoModel)Disp.Dados).CameraID_SoloD;
+ if (Cameras.Any(x => x.Value == IDsoloD))
+ {
+ cmbSoloDir.SelectedIndex = cmbSoloDir.Items.IndexOf(IDsoloD);
+ }
+ else
+ {
+ cmbSoloDir.Text = IDsoloD;
+ }
break;
}
case T_Code.Atu:
@@ -59,22 +96,6 @@ namespace AgroBase.Forms.Sensoriamento
cmbBateriaParametro.Items.Clear();
cmbBateriaParametro.Items.AddRange(PZEMService.Parametros.Keys.ToArray());
cmbBateriaParametro.SelectedIndex = 0;
-
- if (Disp != null && Disp.Dispositivo == T_Code.Sen)
- {
- Cameras = CameraService.AtualizaListaCameras();
- cmbCaminho.Items.Clear();
- cmbCaminho.Items.AddRange(Cameras.Values.ToArray());
- cmbCaminho.SelectedIndex = cmbCaminho.Items.IndexOf(((SensoriamentoModel)Disp.Dados).CameraID_Caminho);
-
- cmbSoloEsq.Items.Clear();
- cmbSoloEsq.Items.AddRange(Cameras.Values.ToArray());
- cmbSoloEsq.SelectedIndex = cmbCaminho.Items.IndexOf(((SensoriamentoModel)Disp.Dados).CameraID_SoloE);
-
- cmbSoloDir.Items.Clear();
- cmbSoloDir.Items.AddRange(Cameras.Values.ToArray());
- cmbSoloDir.SelectedIndex = cmbCaminho.Items.IndexOf(((SensoriamentoModel)Disp.Dados).CameraID_SoloD);
- }
}
@@ -192,5 +213,12 @@ namespace AgroBase.Forms.Sensoriamento
var Comando = PZEMService.ComandoSetParametro(PZEMService.Parametros[cmbBateriaParametro.Text], Convert.ToInt32(nudBateriaValor.Value));
PZEMService.EnviarComando(PZEMService.PortaPZEM, Comando);
}
+
+ private void btnBateriaCalibrar_Click(object sender, EventArgs e)
+ {
+ var Comando = PZEMService.ComandoCalibragem();
+ PZEMService.EnviarComando(PZEMService.PortaPZEM, Comando);
+ }
+
}
}
diff --git a/AgroBase/AgroBase/Forms/Sensoriamento/frmSonar.Designer.cs b/AgroBase/AgroBase/Forms/Sensoriamento/frmSonar.Designer.cs
new file mode 100644
index 000000000..2baae3bfc
--- /dev/null
+++ b/AgroBase/AgroBase/Forms/Sensoriamento/frmSonar.Designer.cs
@@ -0,0 +1,64 @@
+namespace AgroBase.Forms.Sensoriamento
+{
+ partial class frmSonar
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ this.pictureBox1 = new System.Windows.Forms.PictureBox();
+ ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
+ this.SuspendLayout();
+ //
+ // pictureBox1
+ //
+ this.pictureBox1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+ | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right)));
+ this.pictureBox1.Location = new System.Drawing.Point(12, 12);
+ this.pictureBox1.Name = "pictureBox1";
+ this.pictureBox1.Size = new System.Drawing.Size(959, 600);
+ this.pictureBox1.TabIndex = 0;
+ this.pictureBox1.TabStop = false;
+ //
+ // frmSonar
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(983, 624);
+ this.Controls.Add(this.pictureBox1);
+ this.Name = "frmSonar";
+ this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
+ this.Text = "Sonar";
+ ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
+ this.ResumeLayout(false);
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.PictureBox pictureBox1;
+ }
+}
\ No newline at end of file
diff --git a/AgroBase/AgroBase/Forms/Sensoriamento/frmSonar.cs b/AgroBase/AgroBase/Forms/Sensoriamento/frmSonar.cs
new file mode 100644
index 000000000..d626ecb8d
--- /dev/null
+++ b/AgroBase/AgroBase/Forms/Sensoriamento/frmSonar.cs
@@ -0,0 +1,35 @@
+using AgroBase.Models;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.IO.Ports;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+
+namespace AgroBase.Forms.Sensoriamento
+{
+ public partial class frmSonar : Form
+ {
+ SonarModel sonar;
+
+ public frmSonar()
+ {
+ InitializeComponent();
+ sonar = new SonarModel(pictureBox1);
+
+ // Habilita o double buffering
+ this.SetStyle(ControlStyles.DoubleBuffer |
+ ControlStyles.UserPaint |
+ ControlStyles.AllPaintingInWmPaint,
+ true);
+ this.UpdateStyles();
+ }
+
+
+
+ }
+}
diff --git a/AgroBase/AgroBase/Forms/Sensoriamento/frmSonar.resx b/AgroBase/AgroBase/Forms/Sensoriamento/frmSonar.resx
new file mode 100644
index 000000000..1af7de150
--- /dev/null
+++ b/AgroBase/AgroBase/Forms/Sensoriamento/frmSonar.resx
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/AgroBase/AgroBase/Forms/frmAcompanhamento.Designer.cs b/AgroBase/AgroBase/Forms/frmAcompanhamento.Designer.cs
index 831f669f4..75f957c48 100644
--- a/AgroBase/AgroBase/Forms/frmAcompanhamento.Designer.cs
+++ b/AgroBase/AgroBase/Forms/frmAcompanhamento.Designer.cs
@@ -29,22 +29,24 @@ namespace AgroBase.Forms
///
private void InitializeComponent()
{
- System.Windows.Forms.DataVisualization.Charting.ChartArea chartArea1 = new System.Windows.Forms.DataVisualization.Charting.ChartArea();
- System.Windows.Forms.DataVisualization.Charting.Legend legend1 = new System.Windows.Forms.DataVisualization.Charting.Legend();
- System.Windows.Forms.DataVisualization.Charting.Series series1 = new System.Windows.Forms.DataVisualization.Charting.Series();
- System.Windows.Forms.DataVisualization.Charting.ChartArea chartArea2 = new System.Windows.Forms.DataVisualization.Charting.ChartArea();
- System.Windows.Forms.DataVisualization.Charting.Legend legend2 = new System.Windows.Forms.DataVisualization.Charting.Legend();
- System.Windows.Forms.DataVisualization.Charting.Series series2 = new System.Windows.Forms.DataVisualization.Charting.Series();
- System.Windows.Forms.DataVisualization.Charting.ChartArea chartArea3 = new System.Windows.Forms.DataVisualization.Charting.ChartArea();
- System.Windows.Forms.DataVisualization.Charting.Legend legend3 = new System.Windows.Forms.DataVisualization.Charting.Legend();
- System.Windows.Forms.DataVisualization.Charting.Series series3 = new System.Windows.Forms.DataVisualization.Charting.Series();
- System.Windows.Forms.DataVisualization.Charting.ChartArea chartArea4 = new System.Windows.Forms.DataVisualization.Charting.ChartArea();
- System.Windows.Forms.DataVisualization.Charting.Legend legend4 = new System.Windows.Forms.DataVisualization.Charting.Legend();
- System.Windows.Forms.DataVisualization.Charting.Series series4 = new System.Windows.Forms.DataVisualization.Charting.Series();
- System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(frmAcompanhamento));
+ System.Windows.Forms.DataVisualization.Charting.ChartArea chartArea9 = new System.Windows.Forms.DataVisualization.Charting.ChartArea();
+ System.Windows.Forms.DataVisualization.Charting.Legend legend9 = new System.Windows.Forms.DataVisualization.Charting.Legend();
+ System.Windows.Forms.DataVisualization.Charting.Series series9 = new System.Windows.Forms.DataVisualization.Charting.Series();
+ System.Windows.Forms.DataVisualization.Charting.ChartArea chartArea10 = new System.Windows.Forms.DataVisualization.Charting.ChartArea();
+ System.Windows.Forms.DataVisualization.Charting.Legend legend10 = new System.Windows.Forms.DataVisualization.Charting.Legend();
+ System.Windows.Forms.DataVisualization.Charting.Series series10 = new System.Windows.Forms.DataVisualization.Charting.Series();
+ System.Windows.Forms.DataVisualization.Charting.ChartArea chartArea11 = new System.Windows.Forms.DataVisualization.Charting.ChartArea();
+ System.Windows.Forms.DataVisualization.Charting.Legend legend11 = new System.Windows.Forms.DataVisualization.Charting.Legend();
+ System.Windows.Forms.DataVisualization.Charting.Series series11 = new System.Windows.Forms.DataVisualization.Charting.Series();
+ System.Windows.Forms.DataVisualization.Charting.ChartArea chartArea12 = new System.Windows.Forms.DataVisualization.Charting.ChartArea();
+ System.Windows.Forms.DataVisualization.Charting.Legend legend12 = new System.Windows.Forms.DataVisualization.Charting.Legend();
+ System.Windows.Forms.DataVisualization.Charting.Series series12 = new System.Windows.Forms.DataVisualization.Charting.Series();
this.pnlFundo = new System.Windows.Forms.Panel();
+ this.lblB12V = new System.Windows.Forms.Label();
+ this.lblB7V2 = new System.Windows.Forms.Label();
+ this.lblB5V = new System.Windows.Forms.Label();
+ this.lblB3V = new System.Windows.Forms.Label();
this.lblTemperatura = new System.Windows.Forms.Label();
- this.lblCorrente = new System.Windows.Forms.Label();
this.lblTensao = new System.Windows.Forms.Label();
this.lblDistanciaParcial = new System.Windows.Forms.Label();
this.lblDistanciaTotal = new System.Windows.Forms.Label();
@@ -143,8 +145,11 @@ namespace AgroBase.Forms
//
this.pnlFundo.AutoScroll = true;
this.pnlFundo.BackColor = System.Drawing.Color.White;
+ this.pnlFundo.Controls.Add(this.lblB12V);
+ this.pnlFundo.Controls.Add(this.lblB7V2);
+ this.pnlFundo.Controls.Add(this.lblB5V);
+ this.pnlFundo.Controls.Add(this.lblB3V);
this.pnlFundo.Controls.Add(this.lblTemperatura);
- this.pnlFundo.Controls.Add(this.lblCorrente);
this.pnlFundo.Controls.Add(this.lblTensao);
this.pnlFundo.Controls.Add(this.lblDistanciaParcial);
this.pnlFundo.Controls.Add(this.lblDistanciaTotal);
@@ -229,91 +234,114 @@ namespace AgroBase.Forms
this.pnlFundo.Controls.Add(this.picEF);
this.pnlFundo.Dock = System.Windows.Forms.DockStyle.Fill;
this.pnlFundo.Location = new System.Drawing.Point(0, 0);
- this.pnlFundo.Margin = new System.Windows.Forms.Padding(2);
+ this.pnlFundo.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.pnlFundo.Name = "pnlFundo";
- this.pnlFundo.Size = new System.Drawing.Size(1484, 749);
+ this.pnlFundo.Size = new System.Drawing.Size(1979, 922);
this.pnlFundo.TabIndex = 0;
//
+ // lblB12V
+ //
+ this.lblB12V.AutoSize = true;
+ this.lblB12V.Font = new System.Drawing.Font("Microsoft Sans Serif", 6.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.lblB12V.Location = new System.Drawing.Point(853, 807);
+ this.lblB12V.Name = "lblB12V";
+ this.lblB12V.Size = new System.Drawing.Size(167, 15);
+ this.lblB12V.TabIndex = 177;
+ this.lblB12V.Text = "Barramento 12V: 0,00V 0,00A";
+ //
+ // lblB7V2
+ //
+ this.lblB7V2.AutoSize = true;
+ this.lblB7V2.Font = new System.Drawing.Font("Microsoft Sans Serif", 6.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.lblB7V2.Location = new System.Drawing.Point(853, 791);
+ this.lblB7V2.Name = "lblB7V2";
+ this.lblB7V2.Size = new System.Drawing.Size(167, 15);
+ this.lblB7V2.TabIndex = 176;
+ this.lblB7V2.Text = "Barramento 7V2: 0,00V 0,00A";
+ //
+ // lblB5V
+ //
+ this.lblB5V.AutoSize = true;
+ this.lblB5V.Font = new System.Drawing.Font("Microsoft Sans Serif", 6.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.lblB5V.Location = new System.Drawing.Point(853, 776);
+ this.lblB5V.Name = "lblB5V";
+ this.lblB5V.Size = new System.Drawing.Size(160, 15);
+ this.lblB5V.TabIndex = 175;
+ this.lblB5V.Text = "Barramento 5V: 0,00V 0,00A";
+ //
+ // lblB3V
+ //
+ this.lblB3V.AutoSize = true;
+ this.lblB3V.Font = new System.Drawing.Font("Microsoft Sans Serif", 6.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.lblB3V.Location = new System.Drawing.Point(852, 761);
+ this.lblB3V.Name = "lblB3V";
+ this.lblB3V.Size = new System.Drawing.Size(160, 15);
+ this.lblB3V.TabIndex = 174;
+ this.lblB3V.Text = "Barramento 3V: 0,00V 0,00A";
+ //
// lblTemperatura
//
this.lblTemperatura.AutoSize = true;
this.lblTemperatura.Font = new System.Drawing.Font("Microsoft Sans Serif", 6.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
- this.lblTemperatura.Location = new System.Drawing.Point(639, 631);
- this.lblTemperatura.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
+ this.lblTemperatura.Location = new System.Drawing.Point(1060, 746);
this.lblTemperatura.Name = "lblTemperatura";
- this.lblTemperatura.Size = new System.Drawing.Size(198, 12);
+ this.lblTemperatura.Size = new System.Drawing.Size(43, 15);
this.lblTemperatura.TabIndex = 173;
- this.lblTemperatura.Text = "Temp atual: 0,00ºC - Mín: 0,00ºC - Máx: 0,00ºC";
- //
- // lblCorrente
- //
- this.lblCorrente.AutoSize = true;
- this.lblCorrente.Font = new System.Drawing.Font("Microsoft Sans Serif", 6.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
- this.lblCorrente.Location = new System.Drawing.Point(639, 619);
- this.lblCorrente.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
- this.lblCorrente.Name = "lblCorrente";
- this.lblCorrente.Size = new System.Drawing.Size(202, 12);
- this.lblCorrente.TabIndex = 172;
- this.lblCorrente.Text = "Corrente atual: 0,00A - Mín: 0,00A - Máx: 0,00A";
+ this.lblTemperatura.Text = "0,00ºC";
//
// lblTensao
//
this.lblTensao.AutoSize = true;
this.lblTensao.Font = new System.Drawing.Font("Microsoft Sans Serif", 6.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
- this.lblTensao.Location = new System.Drawing.Point(639, 606);
- this.lblTensao.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
+ this.lblTensao.Location = new System.Drawing.Point(852, 746);
this.lblTensao.Name = "lblTensao";
- this.lblTensao.Size = new System.Drawing.Size(196, 12);
+ this.lblTensao.Size = new System.Drawing.Size(178, 15);
this.lblTensao.TabIndex = 171;
- this.lblTensao.Text = "Tensão atual: 0,00V - Mín: 0,00V - Máx: 0,00V";
+ this.lblTensao.Text = "Bateria: 0,00 V - 0,00 A - 0,00 W";
//
// lblDistanciaParcial
//
this.lblDistanciaParcial.AutoSize = true;
- this.lblDistanciaParcial.Location = new System.Drawing.Point(639, 189);
- this.lblDistanciaParcial.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
+ this.lblDistanciaParcial.Location = new System.Drawing.Point(852, 233);
this.lblDistanciaParcial.Name = "lblDistanciaParcial";
- this.lblDistanciaParcial.Size = new System.Drawing.Size(158, 13);
+ this.lblDistanciaParcial.Size = new System.Drawing.Size(199, 16);
this.lblDistanciaParcial.TabIndex = 170;
this.lblDistanciaParcial.Text = "Distância percorrida parcial: 0 m";
//
// lblDistanciaTotal
//
this.lblDistanciaTotal.AutoSize = true;
- this.lblDistanciaTotal.Location = new System.Drawing.Point(639, 176);
- this.lblDistanciaTotal.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
+ this.lblDistanciaTotal.Location = new System.Drawing.Point(852, 217);
this.lblDistanciaTotal.Name = "lblDistanciaTotal";
- this.lblDistanciaTotal.Size = new System.Drawing.Size(147, 13);
+ this.lblDistanciaTotal.Size = new System.Drawing.Size(183, 16);
this.lblDistanciaTotal.TabIndex = 169;
this.lblDistanciaTotal.Text = "Distância percorrida total: 0 m";
//
// lblTempoEmMovimento
//
this.lblTempoEmMovimento.AutoSize = true;
- this.lblTempoEmMovimento.Location = new System.Drawing.Point(639, 162);
- this.lblTempoEmMovimento.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
+ this.lblTempoEmMovimento.Location = new System.Drawing.Point(852, 199);
this.lblTempoEmMovimento.Name = "lblTempoEmMovimento";
- this.lblTempoEmMovimento.Size = new System.Drawing.Size(176, 13);
+ this.lblTempoEmMovimento.Size = new System.Drawing.Size(217, 16);
this.lblTempoEmMovimento.TabIndex = 168;
this.lblTempoEmMovimento.Text = "Tempo em movimento: 00:00:00 hrs";
//
// lblTempoConectado
//
this.lblTempoConectado.AutoSize = true;
- this.lblTempoConectado.Location = new System.Drawing.Point(639, 148);
- this.lblTempoConectado.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
+ this.lblTempoConectado.Location = new System.Drawing.Point(852, 182);
this.lblTempoConectado.Name = "lblTempoConectado";
- this.lblTempoConectado.Size = new System.Drawing.Size(159, 13);
+ this.lblTempoConectado.Size = new System.Drawing.Size(193, 16);
this.lblTempoConectado.TabIndex = 167;
this.lblTempoConectado.Text = "Tempo conectado: 00:00:00 hrs";
//
// chbDTLivre
//
this.chbDTLivre.AutoSize = true;
- this.chbDTLivre.Location = new System.Drawing.Point(784, 725);
- this.chbDTLivre.Margin = new System.Windows.Forms.Padding(2);
+ this.chbDTLivre.Location = new System.Drawing.Point(1045, 892);
+ this.chbDTLivre.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.chbDTLivre.Name = "chbDTLivre";
- this.chbDTLivre.Size = new System.Drawing.Size(49, 17);
+ this.chbDTLivre.Size = new System.Drawing.Size(58, 20);
this.chbDTLivre.TabIndex = 166;
this.chbDTLivre.Text = "Livre";
this.chbDTLivre.UseVisualStyleBackColor = true;
@@ -321,10 +349,10 @@ namespace AgroBase.Forms
// chbDTControlar
//
this.chbDTControlar.AutoSize = true;
- this.chbDTControlar.Location = new System.Drawing.Point(764, 703);
- this.chbDTControlar.Margin = new System.Windows.Forms.Padding(2);
+ this.chbDTControlar.Location = new System.Drawing.Point(1019, 865);
+ this.chbDTControlar.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.chbDTControlar.Name = "chbDTControlar";
- this.chbDTControlar.Size = new System.Drawing.Size(68, 17);
+ this.chbDTControlar.Size = new System.Drawing.Size(83, 20);
this.chbDTControlar.TabIndex = 165;
this.chbDTControlar.Text = "Controlar";
this.chbDTControlar.UseVisualStyleBackColor = true;
@@ -332,10 +360,10 @@ namespace AgroBase.Forms
// chbETLivre
//
this.chbETLivre.AutoSize = true;
- this.chbETLivre.Location = new System.Drawing.Point(639, 725);
- this.chbETLivre.Margin = new System.Windows.Forms.Padding(2);
+ this.chbETLivre.Location = new System.Drawing.Point(852, 892);
+ this.chbETLivre.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.chbETLivre.Name = "chbETLivre";
- this.chbETLivre.Size = new System.Drawing.Size(49, 17);
+ this.chbETLivre.Size = new System.Drawing.Size(58, 20);
this.chbETLivre.TabIndex = 164;
this.chbETLivre.Text = "Livre";
this.chbETLivre.UseVisualStyleBackColor = true;
@@ -343,10 +371,10 @@ namespace AgroBase.Forms
// chbETControlar
//
this.chbETControlar.AutoSize = true;
- this.chbETControlar.Location = new System.Drawing.Point(639, 703);
- this.chbETControlar.Margin = new System.Windows.Forms.Padding(2);
+ this.chbETControlar.Location = new System.Drawing.Point(852, 865);
+ this.chbETControlar.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.chbETControlar.Name = "chbETControlar";
- this.chbETControlar.Size = new System.Drawing.Size(68, 17);
+ this.chbETControlar.Size = new System.Drawing.Size(83, 20);
this.chbETControlar.TabIndex = 163;
this.chbETControlar.Text = "Controlar";
this.chbETControlar.UseVisualStyleBackColor = true;
@@ -354,10 +382,10 @@ namespace AgroBase.Forms
// chbDFLivre
//
this.chbDFLivre.AutoSize = true;
- this.chbDFLivre.Location = new System.Drawing.Point(784, 86);
- this.chbDFLivre.Margin = new System.Windows.Forms.Padding(2);
+ this.chbDFLivre.Location = new System.Drawing.Point(1045, 106);
+ this.chbDFLivre.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.chbDFLivre.Name = "chbDFLivre";
- this.chbDFLivre.Size = new System.Drawing.Size(49, 17);
+ this.chbDFLivre.Size = new System.Drawing.Size(58, 20);
this.chbDFLivre.TabIndex = 162;
this.chbDFLivre.Text = "Livre";
this.chbDFLivre.UseVisualStyleBackColor = true;
@@ -365,10 +393,10 @@ namespace AgroBase.Forms
// chbDFControlar
//
this.chbDFControlar.AutoSize = true;
- this.chbDFControlar.Location = new System.Drawing.Point(764, 64);
- this.chbDFControlar.Margin = new System.Windows.Forms.Padding(2);
+ this.chbDFControlar.Location = new System.Drawing.Point(1019, 79);
+ this.chbDFControlar.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.chbDFControlar.Name = "chbDFControlar";
- this.chbDFControlar.Size = new System.Drawing.Size(68, 17);
+ this.chbDFControlar.Size = new System.Drawing.Size(83, 20);
this.chbDFControlar.TabIndex = 161;
this.chbDFControlar.Text = "Controlar";
this.chbDFControlar.UseVisualStyleBackColor = true;
@@ -376,10 +404,10 @@ namespace AgroBase.Forms
// chbEFLivre
//
this.chbEFLivre.AutoSize = true;
- this.chbEFLivre.Location = new System.Drawing.Point(639, 86);
- this.chbEFLivre.Margin = new System.Windows.Forms.Padding(2);
+ this.chbEFLivre.Location = new System.Drawing.Point(852, 106);
+ this.chbEFLivre.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.chbEFLivre.Name = "chbEFLivre";
- this.chbEFLivre.Size = new System.Drawing.Size(49, 17);
+ this.chbEFLivre.Size = new System.Drawing.Size(58, 20);
this.chbEFLivre.TabIndex = 160;
this.chbEFLivre.Text = "Livre";
this.chbEFLivre.UseVisualStyleBackColor = true;
@@ -387,89 +415,89 @@ namespace AgroBase.Forms
// chbEFControlar
//
this.chbEFControlar.AutoSize = true;
- this.chbEFControlar.Location = new System.Drawing.Point(639, 64);
- this.chbEFControlar.Margin = new System.Windows.Forms.Padding(2);
+ this.chbEFControlar.Location = new System.Drawing.Point(852, 79);
+ this.chbEFControlar.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.chbEFControlar.Name = "chbEFControlar";
- this.chbEFControlar.Size = new System.Drawing.Size(68, 17);
+ this.chbEFControlar.Size = new System.Drawing.Size(83, 20);
this.chbEFControlar.TabIndex = 159;
this.chbEFControlar.Text = "Controlar";
this.chbEFControlar.UseVisualStyleBackColor = true;
//
// chartET
//
- chartArea1.Name = "ChartArea1";
- this.chartET.ChartAreas.Add(chartArea1);
- legend1.Name = "Legend1";
- this.chartET.Legends.Add(legend1);
- this.chartET.Location = new System.Drawing.Point(201, 410);
- this.chartET.Margin = new System.Windows.Forms.Padding(2);
+ chartArea9.Name = "ChartArea1";
+ this.chartET.ChartAreas.Add(chartArea9);
+ legend9.Name = "Legend1";
+ this.chartET.Legends.Add(legend9);
+ this.chartET.Location = new System.Drawing.Point(268, 505);
+ this.chartET.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.chartET.Name = "chartET";
- series1.ChartArea = "ChartArea1";
- series1.Legend = "Legend1";
- series1.Name = "Series1";
- this.chartET.Series.Add(series1);
- this.chartET.Size = new System.Drawing.Size(434, 390);
+ series9.ChartArea = "ChartArea1";
+ series9.Legend = "Legend1";
+ series9.Name = "Series1";
+ this.chartET.Series.Add(series9);
+ this.chartET.Size = new System.Drawing.Size(579, 480);
this.chartET.TabIndex = 94;
this.chartET.Text = "chart1";
//
// chartDT
//
- chartArea2.Name = "ChartArea1";
- this.chartDT.ChartAreas.Add(chartArea2);
- legend2.Name = "Legend1";
- this.chartDT.Legends.Add(legend2);
- this.chartDT.Location = new System.Drawing.Point(834, 410);
- this.chartDT.Margin = new System.Windows.Forms.Padding(2);
+ chartArea10.Name = "ChartArea1";
+ this.chartDT.ChartAreas.Add(chartArea10);
+ legend10.Name = "Legend1";
+ this.chartDT.Legends.Add(legend10);
+ this.chartDT.Location = new System.Drawing.Point(1112, 505);
+ this.chartDT.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.chartDT.Name = "chartDT";
- series2.ChartArea = "ChartArea1";
- series2.Legend = "Legend1";
- series2.Name = "Series1";
- this.chartDT.Series.Add(series2);
- this.chartDT.Size = new System.Drawing.Size(433, 390);
+ series10.ChartArea = "ChartArea1";
+ series10.Legend = "Legend1";
+ series10.Name = "Series1";
+ this.chartDT.Series.Add(series10);
+ this.chartDT.Size = new System.Drawing.Size(577, 480);
this.chartDT.TabIndex = 110;
this.chartDT.Text = "chart1";
//
// chartDF
//
- chartArea3.Name = "ChartArea1";
- this.chartDF.ChartAreas.Add(chartArea3);
- legend3.Name = "Legend1";
- this.chartDF.Legends.Add(legend3);
- this.chartDF.Location = new System.Drawing.Point(834, 4);
- this.chartDF.Margin = new System.Windows.Forms.Padding(2);
+ chartArea11.Name = "ChartArea1";
+ this.chartDF.ChartAreas.Add(chartArea11);
+ legend11.Name = "Legend1";
+ this.chartDF.Legends.Add(legend11);
+ this.chartDF.Location = new System.Drawing.Point(1112, 5);
+ this.chartDF.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.chartDF.Name = "chartDF";
- series3.ChartArea = "ChartArea1";
- series3.Legend = "Legend1";
- series3.Name = "Series1";
- this.chartDF.Series.Add(series3);
- this.chartDF.Size = new System.Drawing.Size(433, 390);
+ series11.ChartArea = "ChartArea1";
+ series11.Legend = "Legend1";
+ series11.Name = "Series1";
+ this.chartDF.Series.Add(series11);
+ this.chartDF.Size = new System.Drawing.Size(577, 480);
this.chartDF.TabIndex = 109;
this.chartDF.Text = "chart1";
//
// chartEF
//
- chartArea4.Name = "ChartArea1";
- this.chartEF.ChartAreas.Add(chartArea4);
- legend4.Name = "Legend1";
- this.chartEF.Legends.Add(legend4);
- this.chartEF.Location = new System.Drawing.Point(201, 4);
- this.chartEF.Margin = new System.Windows.Forms.Padding(2);
+ chartArea12.Name = "ChartArea1";
+ this.chartEF.ChartAreas.Add(chartArea12);
+ legend12.Name = "Legend1";
+ this.chartEF.Legends.Add(legend12);
+ this.chartEF.Location = new System.Drawing.Point(268, 5);
+ this.chartEF.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.chartEF.Name = "chartEF";
- series4.ChartArea = "ChartArea1";
- series4.Legend = "Legend1";
- series4.Name = "Series1";
- this.chartEF.Series.Add(series4);
- this.chartEF.Size = new System.Drawing.Size(434, 390);
+ series12.ChartArea = "ChartArea1";
+ series12.Legend = "Legend1";
+ series12.Name = "Series1";
+ this.chartEF.Series.Add(series12);
+ this.chartEF.Size = new System.Drawing.Size(579, 480);
this.chartEF.TabIndex = 93;
this.chartEF.Text = "chart1";
//
// picRobo
//
- this.picRobo.Image = ((System.Drawing.Image)(resources.GetObject("picRobo.Image")));
- this.picRobo.Location = new System.Drawing.Point(602, 206);
- this.picRobo.Margin = new System.Windows.Forms.Padding(2);
+ this.picRobo.Image = global::AgroBase.Properties.Resources.robo_superior;
+ this.picRobo.Location = new System.Drawing.Point(820, 254);
+ this.picRobo.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.picRobo.Name = "picRobo";
- this.picRobo.Size = new System.Drawing.Size(265, 395);
+ this.picRobo.Size = new System.Drawing.Size(313, 486);
this.picRobo.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
this.picRobo.TabIndex = 158;
this.picRobo.TabStop = false;
@@ -477,359 +505,327 @@ namespace AgroBase.Forms
// lblDTM_Corrente
//
this.lblDTM_Corrente.AutoSize = true;
- this.lblDTM_Corrente.Location = new System.Drawing.Point(1273, 790);
- this.lblDTM_Corrente.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
+ this.lblDTM_Corrente.Location = new System.Drawing.Point(1697, 972);
this.lblDTM_Corrente.Name = "lblDTM_Corrente";
- this.lblDTM_Corrente.Size = new System.Drawing.Size(66, 13);
+ this.lblDTM_Corrente.Size = new System.Drawing.Size(80, 16);
this.lblDTM_Corrente.TabIndex = 157;
this.lblDTM_Corrente.Text = "Corrente: 0A";
//
// lblDTM_Temperatura
//
this.lblDTM_Temperatura.AutoSize = true;
- this.lblDTM_Temperatura.Location = new System.Drawing.Point(1273, 776);
- this.lblDTM_Temperatura.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
+ this.lblDTM_Temperatura.Location = new System.Drawing.Point(1697, 955);
this.lblDTM_Temperatura.Name = "lblDTM_Temperatura";
- this.lblDTM_Temperatura.Size = new System.Drawing.Size(90, 13);
+ this.lblDTM_Temperatura.Size = new System.Drawing.Size(112, 16);
this.lblDTM_Temperatura.TabIndex = 156;
this.lblDTM_Temperatura.Text = "Temperatura: 0ºC";
//
// lblDTM_Sentido
//
this.lblDTM_Sentido.AutoSize = true;
- this.lblDTM_Sentido.Location = new System.Drawing.Point(1273, 762);
- this.lblDTM_Sentido.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
+ this.lblDTM_Sentido.Location = new System.Drawing.Point(1697, 938);
this.lblDTM_Sentido.Name = "lblDTM_Sentido";
- this.lblDTM_Sentido.Size = new System.Drawing.Size(83, 13);
+ this.lblDTM_Sentido.Size = new System.Drawing.Size(104, 16);
this.lblDTM_Sentido.TabIndex = 155;
this.lblDTM_Sentido.Text = "Sentido: Parado";
//
// lblDTM_SentidoSP
//
this.lblDTM_SentidoSP.AutoSize = true;
- this.lblDTM_SentidoSP.Location = new System.Drawing.Point(1273, 748);
- this.lblDTM_SentidoSP.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
+ this.lblDTM_SentidoSP.Location = new System.Drawing.Point(1697, 921);
this.lblDTM_SentidoSP.Name = "lblDTM_SentidoSP";
- this.lblDTM_SentidoSP.Size = new System.Drawing.Size(100, 13);
+ this.lblDTM_SentidoSP.Size = new System.Drawing.Size(125, 16);
this.lblDTM_SentidoSP.TabIndex = 154;
this.lblDTM_SentidoSP.Text = "Sentido SP: Parado";
//
// lblDTM_RPMSP
//
this.lblDTM_RPMSP.AutoSize = true;
- this.lblDTM_RPMSP.Location = new System.Drawing.Point(1273, 693);
- this.lblDTM_RPMSP.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
+ this.lblDTM_RPMSP.Location = new System.Drawing.Point(1697, 853);
this.lblDTM_RPMSP.Name = "lblDTM_RPMSP";
- this.lblDTM_RPMSP.Size = new System.Drawing.Size(60, 13);
+ this.lblDTM_RPMSP.Size = new System.Drawing.Size(71, 16);
this.lblDTM_RPMSP.TabIndex = 153;
this.lblDTM_RPMSP.Text = "RPM SP: 0";
//
// lblDTM_Potencia
//
this.lblDTM_Potencia.AutoSize = true;
- this.lblDTM_Potencia.Location = new System.Drawing.Point(1273, 734);
- this.lblDTM_Potencia.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
+ this.lblDTM_Potencia.Location = new System.Drawing.Point(1697, 903);
this.lblDTM_Potencia.Name = "lblDTM_Potencia";
- this.lblDTM_Potencia.Size = new System.Drawing.Size(69, 13);
+ this.lblDTM_Potencia.Size = new System.Drawing.Size(85, 16);
this.lblDTM_Potencia.TabIndex = 152;
this.lblDTM_Potencia.Text = "Potência: 0%";
//
// lblDTM_Velocidade
//
this.lblDTM_Velocidade.AutoSize = true;
- this.lblDTM_Velocidade.Location = new System.Drawing.Point(1273, 721);
- this.lblDTM_Velocidade.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
+ this.lblDTM_Velocidade.Location = new System.Drawing.Point(1697, 887);
this.lblDTM_Velocidade.Name = "lblDTM_Velocidade";
- this.lblDTM_Velocidade.Size = new System.Drawing.Size(101, 13);
+ this.lblDTM_Velocidade.Size = new System.Drawing.Size(123, 16);
this.lblDTM_Velocidade.TabIndex = 151;
this.lblDTM_Velocidade.Text = "Velocidade: 0 Km/h";
//
// lblDTM_RPM
//
this.lblDTM_RPM.AutoSize = true;
- this.lblDTM_RPM.Location = new System.Drawing.Point(1273, 707);
- this.lblDTM_RPM.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
+ this.lblDTM_RPM.Location = new System.Drawing.Point(1697, 870);
this.lblDTM_RPM.Name = "lblDTM_RPM";
- this.lblDTM_RPM.Size = new System.Drawing.Size(43, 13);
+ this.lblDTM_RPM.Size = new System.Drawing.Size(50, 16);
this.lblDTM_RPM.TabIndex = 150;
this.lblDTM_RPM.Text = "RPM: 0";
//
// lblDFM_Corrente
//
this.lblDFM_Corrente.AutoSize = true;
- this.lblDFM_Corrente.Location = new System.Drawing.Point(1273, 384);
- this.lblDFM_Corrente.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
+ this.lblDFM_Corrente.Location = new System.Drawing.Point(1697, 473);
this.lblDFM_Corrente.Name = "lblDFM_Corrente";
- this.lblDFM_Corrente.Size = new System.Drawing.Size(66, 13);
+ this.lblDFM_Corrente.Size = new System.Drawing.Size(80, 16);
this.lblDFM_Corrente.TabIndex = 149;
this.lblDFM_Corrente.Text = "Corrente: 0A";
//
// lblDFM_Temperatura
//
this.lblDFM_Temperatura.AutoSize = true;
- this.lblDFM_Temperatura.Location = new System.Drawing.Point(1273, 370);
- this.lblDFM_Temperatura.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
+ this.lblDFM_Temperatura.Location = new System.Drawing.Point(1697, 455);
this.lblDFM_Temperatura.Name = "lblDFM_Temperatura";
- this.lblDFM_Temperatura.Size = new System.Drawing.Size(90, 13);
+ this.lblDFM_Temperatura.Size = new System.Drawing.Size(112, 16);
this.lblDFM_Temperatura.TabIndex = 148;
this.lblDFM_Temperatura.Text = "Temperatura: 0ºC";
//
// lblDFM_Sentido
//
this.lblDFM_Sentido.AutoSize = true;
- this.lblDFM_Sentido.Location = new System.Drawing.Point(1273, 357);
- this.lblDFM_Sentido.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
+ this.lblDFM_Sentido.Location = new System.Drawing.Point(1697, 439);
this.lblDFM_Sentido.Name = "lblDFM_Sentido";
- this.lblDFM_Sentido.Size = new System.Drawing.Size(83, 13);
+ this.lblDFM_Sentido.Size = new System.Drawing.Size(104, 16);
this.lblDFM_Sentido.TabIndex = 147;
this.lblDFM_Sentido.Text = "Sentido: Parado";
//
// lblDFM_SentidoSP
//
this.lblDFM_SentidoSP.AutoSize = true;
- this.lblDFM_SentidoSP.Location = new System.Drawing.Point(1273, 343);
- this.lblDFM_SentidoSP.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
+ this.lblDFM_SentidoSP.Location = new System.Drawing.Point(1697, 422);
this.lblDFM_SentidoSP.Name = "lblDFM_SentidoSP";
- this.lblDFM_SentidoSP.Size = new System.Drawing.Size(100, 13);
+ this.lblDFM_SentidoSP.Size = new System.Drawing.Size(125, 16);
this.lblDFM_SentidoSP.TabIndex = 146;
this.lblDFM_SentidoSP.Text = "Sentido SP: Parado";
//
// lblDFM_RPMSP
//
this.lblDFM_RPMSP.AutoSize = true;
- this.lblDFM_RPMSP.Location = new System.Drawing.Point(1273, 288);
- this.lblDFM_RPMSP.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
+ this.lblDFM_RPMSP.Location = new System.Drawing.Point(1697, 354);
this.lblDFM_RPMSP.Name = "lblDFM_RPMSP";
- this.lblDFM_RPMSP.Size = new System.Drawing.Size(60, 13);
+ this.lblDFM_RPMSP.Size = new System.Drawing.Size(71, 16);
this.lblDFM_RPMSP.TabIndex = 145;
this.lblDFM_RPMSP.Text = "RPM SP: 0";
//
// lblDFM_Potencia
//
this.lblDFM_Potencia.AutoSize = true;
- this.lblDFM_Potencia.Location = new System.Drawing.Point(1273, 329);
- this.lblDFM_Potencia.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
+ this.lblDFM_Potencia.Location = new System.Drawing.Point(1697, 405);
this.lblDFM_Potencia.Name = "lblDFM_Potencia";
- this.lblDFM_Potencia.Size = new System.Drawing.Size(69, 13);
+ this.lblDFM_Potencia.Size = new System.Drawing.Size(85, 16);
this.lblDFM_Potencia.TabIndex = 144;
this.lblDFM_Potencia.Text = "Potência: 0%";
//
// lblDFM_Velocidade
//
this.lblDFM_Velocidade.AutoSize = true;
- this.lblDFM_Velocidade.Location = new System.Drawing.Point(1273, 315);
- this.lblDFM_Velocidade.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
+ this.lblDFM_Velocidade.Location = new System.Drawing.Point(1697, 388);
this.lblDFM_Velocidade.Name = "lblDFM_Velocidade";
- this.lblDFM_Velocidade.Size = new System.Drawing.Size(101, 13);
+ this.lblDFM_Velocidade.Size = new System.Drawing.Size(123, 16);
this.lblDFM_Velocidade.TabIndex = 143;
this.lblDFM_Velocidade.Text = "Velocidade: 0 Km/h";
//
// lblDFM_RPM
//
this.lblDFM_RPM.AutoSize = true;
- this.lblDFM_RPM.Location = new System.Drawing.Point(1273, 301);
- this.lblDFM_RPM.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
+ this.lblDFM_RPM.Location = new System.Drawing.Point(1697, 370);
this.lblDFM_RPM.Name = "lblDFM_RPM";
- this.lblDFM_RPM.Size = new System.Drawing.Size(43, 13);
+ this.lblDFM_RPM.Size = new System.Drawing.Size(50, 16);
this.lblDFM_RPM.TabIndex = 142;
this.lblDFM_RPM.Text = "RPM: 0";
//
// lblETM_Corrente
//
this.lblETM_Corrente.AutoSize = true;
- this.lblETM_Corrente.Location = new System.Drawing.Point(10, 790);
- this.lblETM_Corrente.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
+ this.lblETM_Corrente.Location = new System.Drawing.Point(13, 972);
this.lblETM_Corrente.Name = "lblETM_Corrente";
- this.lblETM_Corrente.Size = new System.Drawing.Size(66, 13);
+ this.lblETM_Corrente.Size = new System.Drawing.Size(80, 16);
this.lblETM_Corrente.TabIndex = 141;
this.lblETM_Corrente.Text = "Corrente: 0A";
//
// lblETM_Temperatura
//
this.lblETM_Temperatura.AutoSize = true;
- this.lblETM_Temperatura.Location = new System.Drawing.Point(10, 776);
- this.lblETM_Temperatura.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
+ this.lblETM_Temperatura.Location = new System.Drawing.Point(13, 955);
this.lblETM_Temperatura.Name = "lblETM_Temperatura";
- this.lblETM_Temperatura.Size = new System.Drawing.Size(90, 13);
+ this.lblETM_Temperatura.Size = new System.Drawing.Size(112, 16);
this.lblETM_Temperatura.TabIndex = 140;
this.lblETM_Temperatura.Text = "Temperatura: 0ºC";
//
// lblETM_Sentido
//
this.lblETM_Sentido.AutoSize = true;
- this.lblETM_Sentido.Location = new System.Drawing.Point(10, 762);
- this.lblETM_Sentido.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
+ this.lblETM_Sentido.Location = new System.Drawing.Point(13, 938);
this.lblETM_Sentido.Name = "lblETM_Sentido";
- this.lblETM_Sentido.Size = new System.Drawing.Size(83, 13);
+ this.lblETM_Sentido.Size = new System.Drawing.Size(104, 16);
this.lblETM_Sentido.TabIndex = 139;
this.lblETM_Sentido.Text = "Sentido: Parado";
//
// lblETM_SentidoSP
//
this.lblETM_SentidoSP.AutoSize = true;
- this.lblETM_SentidoSP.Location = new System.Drawing.Point(10, 748);
- this.lblETM_SentidoSP.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
+ this.lblETM_SentidoSP.Location = new System.Drawing.Point(13, 921);
this.lblETM_SentidoSP.Name = "lblETM_SentidoSP";
- this.lblETM_SentidoSP.Size = new System.Drawing.Size(100, 13);
+ this.lblETM_SentidoSP.Size = new System.Drawing.Size(125, 16);
this.lblETM_SentidoSP.TabIndex = 138;
this.lblETM_SentidoSP.Text = "Sentido SP: Parado";
//
// lblETM_RPMSP
//
this.lblETM_RPMSP.AutoSize = true;
- this.lblETM_RPMSP.Location = new System.Drawing.Point(10, 693);
- this.lblETM_RPMSP.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
+ this.lblETM_RPMSP.Location = new System.Drawing.Point(13, 853);
this.lblETM_RPMSP.Name = "lblETM_RPMSP";
- this.lblETM_RPMSP.Size = new System.Drawing.Size(60, 13);
+ this.lblETM_RPMSP.Size = new System.Drawing.Size(71, 16);
this.lblETM_RPMSP.TabIndex = 137;
this.lblETM_RPMSP.Text = "RPM SP: 0";
//
// lblETM_Potencia
//
this.lblETM_Potencia.AutoSize = true;
- this.lblETM_Potencia.Location = new System.Drawing.Point(10, 734);
- this.lblETM_Potencia.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
+ this.lblETM_Potencia.Location = new System.Drawing.Point(13, 903);
this.lblETM_Potencia.Name = "lblETM_Potencia";
- this.lblETM_Potencia.Size = new System.Drawing.Size(69, 13);
+ this.lblETM_Potencia.Size = new System.Drawing.Size(85, 16);
this.lblETM_Potencia.TabIndex = 136;
this.lblETM_Potencia.Text = "Potência: 0%";
//
// lblETM_Velocidade
//
this.lblETM_Velocidade.AutoSize = true;
- this.lblETM_Velocidade.Location = new System.Drawing.Point(10, 721);
- this.lblETM_Velocidade.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
+ this.lblETM_Velocidade.Location = new System.Drawing.Point(13, 887);
this.lblETM_Velocidade.Name = "lblETM_Velocidade";
- this.lblETM_Velocidade.Size = new System.Drawing.Size(101, 13);
+ this.lblETM_Velocidade.Size = new System.Drawing.Size(123, 16);
this.lblETM_Velocidade.TabIndex = 135;
this.lblETM_Velocidade.Text = "Velocidade: 0 Km/h";
//
// lblETM_RPM
//
this.lblETM_RPM.AutoSize = true;
- this.lblETM_RPM.Location = new System.Drawing.Point(10, 707);
- this.lblETM_RPM.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
+ this.lblETM_RPM.Location = new System.Drawing.Point(13, 870);
this.lblETM_RPM.Name = "lblETM_RPM";
- this.lblETM_RPM.Size = new System.Drawing.Size(43, 13);
+ this.lblETM_RPM.Size = new System.Drawing.Size(50, 16);
this.lblETM_RPM.TabIndex = 134;
this.lblETM_RPM.Text = "RPM: 0";
//
// lblEFM_Corrente
//
this.lblEFM_Corrente.AutoSize = true;
- this.lblEFM_Corrente.Location = new System.Drawing.Point(10, 384);
- this.lblEFM_Corrente.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
+ this.lblEFM_Corrente.Location = new System.Drawing.Point(13, 473);
this.lblEFM_Corrente.Name = "lblEFM_Corrente";
- this.lblEFM_Corrente.Size = new System.Drawing.Size(66, 13);
+ this.lblEFM_Corrente.Size = new System.Drawing.Size(80, 16);
this.lblEFM_Corrente.TabIndex = 133;
this.lblEFM_Corrente.Text = "Corrente: 0A";
//
// lblEFM_Temperatura
//
this.lblEFM_Temperatura.AutoSize = true;
- this.lblEFM_Temperatura.Location = new System.Drawing.Point(10, 370);
- this.lblEFM_Temperatura.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
+ this.lblEFM_Temperatura.Location = new System.Drawing.Point(13, 455);
this.lblEFM_Temperatura.Name = "lblEFM_Temperatura";
- this.lblEFM_Temperatura.Size = new System.Drawing.Size(90, 13);
+ this.lblEFM_Temperatura.Size = new System.Drawing.Size(112, 16);
this.lblEFM_Temperatura.TabIndex = 132;
this.lblEFM_Temperatura.Text = "Temperatura: 0ºC";
//
// lblEFM_Sentido
//
this.lblEFM_Sentido.AutoSize = true;
- this.lblEFM_Sentido.Location = new System.Drawing.Point(10, 357);
- this.lblEFM_Sentido.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
+ this.lblEFM_Sentido.Location = new System.Drawing.Point(13, 439);
this.lblEFM_Sentido.Name = "lblEFM_Sentido";
- this.lblEFM_Sentido.Size = new System.Drawing.Size(83, 13);
+ this.lblEFM_Sentido.Size = new System.Drawing.Size(104, 16);
this.lblEFM_Sentido.TabIndex = 131;
this.lblEFM_Sentido.Text = "Sentido: Parado";
//
// lblEFM_SentidoSP
//
this.lblEFM_SentidoSP.AutoSize = true;
- this.lblEFM_SentidoSP.Location = new System.Drawing.Point(10, 343);
- this.lblEFM_SentidoSP.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
+ this.lblEFM_SentidoSP.Location = new System.Drawing.Point(13, 422);
this.lblEFM_SentidoSP.Name = "lblEFM_SentidoSP";
- this.lblEFM_SentidoSP.Size = new System.Drawing.Size(100, 13);
+ this.lblEFM_SentidoSP.Size = new System.Drawing.Size(125, 16);
this.lblEFM_SentidoSP.TabIndex = 130;
this.lblEFM_SentidoSP.Text = "Sentido SP: Parado";
//
// lblEFM_RPMSP
//
this.lblEFM_RPMSP.AutoSize = true;
- this.lblEFM_RPMSP.Location = new System.Drawing.Point(10, 288);
- this.lblEFM_RPMSP.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
+ this.lblEFM_RPMSP.Location = new System.Drawing.Point(13, 354);
this.lblEFM_RPMSP.Name = "lblEFM_RPMSP";
- this.lblEFM_RPMSP.Size = new System.Drawing.Size(60, 13);
+ this.lblEFM_RPMSP.Size = new System.Drawing.Size(71, 16);
this.lblEFM_RPMSP.TabIndex = 129;
this.lblEFM_RPMSP.Text = "RPM SP: 0";
//
// lblEFM_Potencia
//
this.lblEFM_Potencia.AutoSize = true;
- this.lblEFM_Potencia.Location = new System.Drawing.Point(10, 329);
- this.lblEFM_Potencia.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
+ this.lblEFM_Potencia.Location = new System.Drawing.Point(13, 405);
this.lblEFM_Potencia.Name = "lblEFM_Potencia";
- this.lblEFM_Potencia.Size = new System.Drawing.Size(69, 13);
+ this.lblEFM_Potencia.Size = new System.Drawing.Size(85, 16);
this.lblEFM_Potencia.TabIndex = 128;
this.lblEFM_Potencia.Text = "Potência: 0%";
//
// lblEFM_Velocidade
//
this.lblEFM_Velocidade.AutoSize = true;
- this.lblEFM_Velocidade.Location = new System.Drawing.Point(10, 315);
- this.lblEFM_Velocidade.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
+ this.lblEFM_Velocidade.Location = new System.Drawing.Point(13, 388);
this.lblEFM_Velocidade.Name = "lblEFM_Velocidade";
- this.lblEFM_Velocidade.Size = new System.Drawing.Size(101, 13);
+ this.lblEFM_Velocidade.Size = new System.Drawing.Size(123, 16);
this.lblEFM_Velocidade.TabIndex = 127;
this.lblEFM_Velocidade.Text = "Velocidade: 0 Km/h";
//
// lblEFM_RPM
//
this.lblEFM_RPM.AutoSize = true;
- this.lblEFM_RPM.Location = new System.Drawing.Point(10, 301);
- this.lblEFM_RPM.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
+ this.lblEFM_RPM.Location = new System.Drawing.Point(13, 370);
this.lblEFM_RPM.Name = "lblEFM_RPM";
- this.lblEFM_RPM.Size = new System.Drawing.Size(43, 13);
+ this.lblEFM_RPM.Size = new System.Drawing.Size(50, 16);
this.lblEFM_RPM.TabIndex = 126;
this.lblEFM_RPM.Text = "RPM: 0";
//
// btnDTReverter
//
- this.btnDTReverter.Location = new System.Drawing.Point(736, 774);
- this.btnDTReverter.Margin = new System.Windows.Forms.Padding(2);
+ this.btnDTReverter.Location = new System.Drawing.Point(981, 953);
+ this.btnDTReverter.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.btnDTReverter.Name = "btnDTReverter";
- this.btnDTReverter.Size = new System.Drawing.Size(93, 23);
+ this.btnDTReverter.Size = new System.Drawing.Size(124, 28);
this.btnDTReverter.TabIndex = 125;
this.btnDTReverter.Text = "Reverter";
this.btnDTReverter.UseVisualStyleBackColor = true;
//
// btnETReverter
//
- this.btnETReverter.Location = new System.Drawing.Point(639, 774);
- this.btnETReverter.Margin = new System.Windows.Forms.Padding(2);
+ this.btnETReverter.Location = new System.Drawing.Point(852, 953);
+ this.btnETReverter.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.btnETReverter.Name = "btnETReverter";
- this.btnETReverter.Size = new System.Drawing.Size(93, 23);
+ this.btnETReverter.Size = new System.Drawing.Size(124, 28);
this.btnETReverter.TabIndex = 124;
this.btnETReverter.Text = "Reverter";
this.btnETReverter.UseVisualStyleBackColor = true;
//
// btnDFReverter
//
- this.btnDFReverter.Location = new System.Drawing.Point(736, 37);
- this.btnDFReverter.Margin = new System.Windows.Forms.Padding(2);
+ this.btnDFReverter.Location = new System.Drawing.Point(981, 46);
+ this.btnDFReverter.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.btnDFReverter.Name = "btnDFReverter";
- this.btnDFReverter.Size = new System.Drawing.Size(93, 23);
+ this.btnDFReverter.Size = new System.Drawing.Size(124, 28);
this.btnDFReverter.TabIndex = 123;
this.btnDFReverter.Text = "Reverter";
this.btnDFReverter.UseVisualStyleBackColor = true;
//
// btnEFReverter
//
- this.btnEFReverter.Location = new System.Drawing.Point(639, 37);
- this.btnEFReverter.Margin = new System.Windows.Forms.Padding(2);
+ this.btnEFReverter.Location = new System.Drawing.Point(852, 46);
+ this.btnEFReverter.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.btnEFReverter.Name = "btnEFReverter";
- this.btnEFReverter.Size = new System.Drawing.Size(93, 23);
+ this.btnEFReverter.Size = new System.Drawing.Size(124, 28);
this.btnEFReverter.TabIndex = 122;
this.btnEFReverter.Text = "Reverter";
this.btnEFReverter.UseVisualStyleBackColor = true;
@@ -837,49 +833,45 @@ namespace AgroBase.Forms
// lblDTA_SentidoSP
//
this.lblDTA_SentidoSP.AutoSize = true;
- this.lblDTA_SentidoSP.Location = new System.Drawing.Point(1273, 665);
- this.lblDTA_SentidoSP.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
+ this.lblDTA_SentidoSP.Location = new System.Drawing.Point(1697, 818);
this.lblDTA_SentidoSP.Name = "lblDTA_SentidoSP";
- this.lblDTA_SentidoSP.Size = new System.Drawing.Size(100, 13);
+ this.lblDTA_SentidoSP.Size = new System.Drawing.Size(125, 16);
this.lblDTA_SentidoSP.TabIndex = 121;
this.lblDTA_SentidoSP.Text = "Sentido SP: Parado";
//
// lblDTA_Sentido
//
this.lblDTA_Sentido.AutoSize = true;
- this.lblDTA_Sentido.Location = new System.Drawing.Point(1273, 679);
- this.lblDTA_Sentido.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
+ this.lblDTA_Sentido.Location = new System.Drawing.Point(1697, 836);
this.lblDTA_Sentido.Name = "lblDTA_Sentido";
- this.lblDTA_Sentido.Size = new System.Drawing.Size(83, 13);
+ this.lblDTA_Sentido.Size = new System.Drawing.Size(104, 16);
this.lblDTA_Sentido.TabIndex = 120;
this.lblDTA_Sentido.Text = "Sentido: Parado";
//
// lblDTA
//
this.lblDTA.AutoSize = true;
- this.lblDTA.Location = new System.Drawing.Point(1273, 652);
- this.lblDTA.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
+ this.lblDTA.Location = new System.Drawing.Point(1697, 802);
this.lblDTA.Name = "lblDTA";
- this.lblDTA.Size = new System.Drawing.Size(62, 13);
+ this.lblDTA.Size = new System.Drawing.Size(74, 16);
this.lblDTA.TabIndex = 119;
this.lblDTA.Text = "Angulo: 00º";
//
// lblDTA_SP
//
this.lblDTA_SP.AutoSize = true;
- this.lblDTA_SP.Location = new System.Drawing.Point(1273, 638);
- this.lblDTA_SP.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
+ this.lblDTA_SP.Location = new System.Drawing.Point(1697, 785);
this.lblDTA_SP.Name = "lblDTA_SP";
- this.lblDTA_SP.Size = new System.Drawing.Size(79, 13);
+ this.lblDTA_SP.Size = new System.Drawing.Size(95, 16);
this.lblDTA_SP.TabIndex = 118;
this.lblDTA_SP.Text = "Angulo SP: 00º";
//
// btnDTReferenciar
//
- this.btnDTReferenciar.Location = new System.Drawing.Point(736, 747);
- this.btnDTReferenciar.Margin = new System.Windows.Forms.Padding(2);
+ this.btnDTReferenciar.Location = new System.Drawing.Point(981, 919);
+ this.btnDTReferenciar.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.btnDTReferenciar.Name = "btnDTReferenciar";
- this.btnDTReferenciar.Size = new System.Drawing.Size(93, 23);
+ this.btnDTReferenciar.Size = new System.Drawing.Size(124, 28);
this.btnDTReferenciar.TabIndex = 117;
this.btnDTReferenciar.Text = "Referenciar";
this.btnDTReferenciar.UseVisualStyleBackColor = true;
@@ -888,68 +880,63 @@ namespace AgroBase.Forms
//
this.lblM3.AutoSize = true;
this.lblM3.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
- this.lblM3.Location = new System.Drawing.Point(1271, 410);
- this.lblM3.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
+ this.lblM3.Location = new System.Drawing.Point(1695, 505);
this.lblM3.Name = "lblM3";
- this.lblM3.Size = new System.Drawing.Size(66, 20);
+ this.lblM3.Size = new System.Drawing.Size(86, 25);
this.lblM3.TabIndex = 116;
this.lblM3.Text = "M3 (DT)";
//
// picDT
//
- this.picDT.Location = new System.Drawing.Point(1271, 432);
- this.picDT.Margin = new System.Windows.Forms.Padding(2);
+ this.picDT.Location = new System.Drawing.Point(1695, 532);
+ this.picDT.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.picDT.Name = "picDT";
- this.picDT.Size = new System.Drawing.Size(188, 203);
+ this.picDT.Size = new System.Drawing.Size(251, 250);
this.picDT.TabIndex = 115;
this.picDT.TabStop = false;
//
// lblDFA_SentidoSP
//
this.lblDFA_SentidoSP.AutoSize = true;
- this.lblDFA_SentidoSP.Location = new System.Drawing.Point(1273, 260);
- this.lblDFA_SentidoSP.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
+ this.lblDFA_SentidoSP.Location = new System.Drawing.Point(1697, 320);
this.lblDFA_SentidoSP.Name = "lblDFA_SentidoSP";
- this.lblDFA_SentidoSP.Size = new System.Drawing.Size(100, 13);
+ this.lblDFA_SentidoSP.Size = new System.Drawing.Size(125, 16);
this.lblDFA_SentidoSP.TabIndex = 114;
this.lblDFA_SentidoSP.Text = "Sentido SP: Parado";
//
// lblDFA_Sentido
//
this.lblDFA_Sentido.AutoSize = true;
- this.lblDFA_Sentido.Location = new System.Drawing.Point(1273, 274);
- this.lblDFA_Sentido.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
+ this.lblDFA_Sentido.Location = new System.Drawing.Point(1697, 337);
this.lblDFA_Sentido.Name = "lblDFA_Sentido";
- this.lblDFA_Sentido.Size = new System.Drawing.Size(83, 13);
+ this.lblDFA_Sentido.Size = new System.Drawing.Size(104, 16);
this.lblDFA_Sentido.TabIndex = 113;
this.lblDFA_Sentido.Text = "Sentido: Parado";
//
// lblDFA
//
this.lblDFA.AutoSize = true;
- this.lblDFA.Location = new System.Drawing.Point(1273, 246);
- this.lblDFA.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
+ this.lblDFA.Location = new System.Drawing.Point(1697, 303);
this.lblDFA.Name = "lblDFA";
- this.lblDFA.Size = new System.Drawing.Size(62, 13);
+ this.lblDFA.Size = new System.Drawing.Size(74, 16);
this.lblDFA.TabIndex = 112;
this.lblDFA.Text = "Angulo: 00º";
//
// lblDFA_SP
//
this.lblDFA_SP.AutoSize = true;
- this.lblDFA_SP.Location = new System.Drawing.Point(1273, 232);
- this.lblDFA_SP.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
+ this.lblDFA_SP.Location = new System.Drawing.Point(1697, 286);
this.lblDFA_SP.Name = "lblDFA_SP";
- this.lblDFA_SP.Size = new System.Drawing.Size(79, 13);
+ this.lblDFA_SP.Size = new System.Drawing.Size(95, 16);
this.lblDFA_SP.TabIndex = 111;
this.lblDFA_SP.Text = "Angulo SP: 00º";
//
// btnDFReferenciar
//
- this.btnDFReferenciar.Location = new System.Drawing.Point(736, 9);
- this.btnDFReferenciar.Margin = new System.Windows.Forms.Padding(2);
+ this.btnDFReferenciar.Location = new System.Drawing.Point(981, 11);
+ this.btnDFReferenciar.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.btnDFReferenciar.Name = "btnDFReferenciar";
- this.btnDFReferenciar.Size = new System.Drawing.Size(93, 23);
+ this.btnDFReferenciar.Size = new System.Drawing.Size(124, 28);
this.btnDFReferenciar.TabIndex = 108;
this.btnDFReferenciar.Text = "Referenciar";
this.btnDFReferenciar.UseVisualStyleBackColor = true;
@@ -958,68 +945,63 @@ namespace AgroBase.Forms
//
this.lblM4.AutoSize = true;
this.lblM4.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
- this.lblM4.Location = new System.Drawing.Point(1271, 4);
- this.lblM4.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
+ this.lblM4.Location = new System.Drawing.Point(1695, 5);
this.lblM4.Name = "lblM4";
- this.lblM4.Size = new System.Drawing.Size(67, 20);
+ this.lblM4.Size = new System.Drawing.Size(85, 25);
this.lblM4.TabIndex = 107;
this.lblM4.Text = "M4 (DF)";
//
// picDF
//
- this.picDF.Location = new System.Drawing.Point(1271, 27);
- this.picDF.Margin = new System.Windows.Forms.Padding(2);
+ this.picDF.Location = new System.Drawing.Point(1695, 33);
+ this.picDF.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.picDF.Name = "picDF";
- this.picDF.Size = new System.Drawing.Size(188, 203);
+ this.picDF.Size = new System.Drawing.Size(251, 250);
this.picDF.TabIndex = 106;
this.picDF.TabStop = false;
//
// lblETA_SentidoSP
//
this.lblETA_SentidoSP.AutoSize = true;
- this.lblETA_SentidoSP.Location = new System.Drawing.Point(10, 665);
- this.lblETA_SentidoSP.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
+ this.lblETA_SentidoSP.Location = new System.Drawing.Point(13, 818);
this.lblETA_SentidoSP.Name = "lblETA_SentidoSP";
- this.lblETA_SentidoSP.Size = new System.Drawing.Size(100, 13);
+ this.lblETA_SentidoSP.Size = new System.Drawing.Size(125, 16);
this.lblETA_SentidoSP.TabIndex = 105;
this.lblETA_SentidoSP.Text = "Sentido SP: Parado";
//
// lblETA_Sentido
//
this.lblETA_Sentido.AutoSize = true;
- this.lblETA_Sentido.Location = new System.Drawing.Point(10, 679);
- this.lblETA_Sentido.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
+ this.lblETA_Sentido.Location = new System.Drawing.Point(13, 836);
this.lblETA_Sentido.Name = "lblETA_Sentido";
- this.lblETA_Sentido.Size = new System.Drawing.Size(83, 13);
+ this.lblETA_Sentido.Size = new System.Drawing.Size(104, 16);
this.lblETA_Sentido.TabIndex = 104;
this.lblETA_Sentido.Text = "Sentido: Parado";
//
// lblETA
//
this.lblETA.AutoSize = true;
- this.lblETA.Location = new System.Drawing.Point(10, 652);
- this.lblETA.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
+ this.lblETA.Location = new System.Drawing.Point(13, 802);
this.lblETA.Name = "lblETA";
- this.lblETA.Size = new System.Drawing.Size(62, 13);
+ this.lblETA.Size = new System.Drawing.Size(74, 16);
this.lblETA.TabIndex = 103;
this.lblETA.Text = "Angulo: 00º";
//
// lblETA_SP
//
this.lblETA_SP.AutoSize = true;
- this.lblETA_SP.Location = new System.Drawing.Point(10, 638);
- this.lblETA_SP.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
+ this.lblETA_SP.Location = new System.Drawing.Point(13, 785);
this.lblETA_SP.Name = "lblETA_SP";
- this.lblETA_SP.Size = new System.Drawing.Size(79, 13);
+ this.lblETA_SP.Size = new System.Drawing.Size(95, 16);
this.lblETA_SP.TabIndex = 102;
this.lblETA_SP.Text = "Angulo SP: 00º";
//
// btnETReferenciar
//
- this.btnETReferenciar.Location = new System.Drawing.Point(639, 747);
- this.btnETReferenciar.Margin = new System.Windows.Forms.Padding(2);
+ this.btnETReferenciar.Location = new System.Drawing.Point(852, 919);
+ this.btnETReferenciar.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.btnETReferenciar.Name = "btnETReferenciar";
- this.btnETReferenciar.Size = new System.Drawing.Size(93, 23);
+ this.btnETReferenciar.Size = new System.Drawing.Size(124, 28);
this.btnETReferenciar.TabIndex = 101;
this.btnETReferenciar.Text = "Referenciar";
this.btnETReferenciar.UseVisualStyleBackColor = true;
@@ -1028,68 +1010,63 @@ namespace AgroBase.Forms
//
this.lblM2.AutoSize = true;
this.lblM2.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
- this.lblM2.Location = new System.Drawing.Point(9, 410);
- this.lblM2.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
+ this.lblM2.Location = new System.Drawing.Point(12, 505);
this.lblM2.Name = "lblM2";
- this.lblM2.Size = new System.Drawing.Size(65, 20);
+ this.lblM2.Size = new System.Drawing.Size(85, 25);
this.lblM2.TabIndex = 100;
this.lblM2.Text = "M2 (ET)";
//
// picET
//
- this.picET.Location = new System.Drawing.Point(9, 432);
- this.picET.Margin = new System.Windows.Forms.Padding(2);
+ this.picET.Location = new System.Drawing.Point(12, 532);
+ this.picET.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.picET.Name = "picET";
- this.picET.Size = new System.Drawing.Size(188, 203);
+ this.picET.Size = new System.Drawing.Size(251, 250);
this.picET.TabIndex = 99;
this.picET.TabStop = false;
//
// lblEFA_SentidoSP
//
this.lblEFA_SentidoSP.AutoSize = true;
- this.lblEFA_SentidoSP.Location = new System.Drawing.Point(10, 260);
- this.lblEFA_SentidoSP.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
+ this.lblEFA_SentidoSP.Location = new System.Drawing.Point(13, 320);
this.lblEFA_SentidoSP.Name = "lblEFA_SentidoSP";
- this.lblEFA_SentidoSP.Size = new System.Drawing.Size(100, 13);
+ this.lblEFA_SentidoSP.Size = new System.Drawing.Size(125, 16);
this.lblEFA_SentidoSP.TabIndex = 98;
this.lblEFA_SentidoSP.Text = "Sentido SP: Parado";
//
// lblEFA_Sentido
//
this.lblEFA_Sentido.AutoSize = true;
- this.lblEFA_Sentido.Location = new System.Drawing.Point(10, 274);
- this.lblEFA_Sentido.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
+ this.lblEFA_Sentido.Location = new System.Drawing.Point(13, 337);
this.lblEFA_Sentido.Name = "lblEFA_Sentido";
- this.lblEFA_Sentido.Size = new System.Drawing.Size(83, 13);
+ this.lblEFA_Sentido.Size = new System.Drawing.Size(104, 16);
this.lblEFA_Sentido.TabIndex = 97;
this.lblEFA_Sentido.Text = "Sentido: Parado";
//
// lblEFA
//
this.lblEFA.AutoSize = true;
- this.lblEFA.Location = new System.Drawing.Point(10, 246);
- this.lblEFA.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
+ this.lblEFA.Location = new System.Drawing.Point(13, 303);
this.lblEFA.Name = "lblEFA";
- this.lblEFA.Size = new System.Drawing.Size(62, 13);
+ this.lblEFA.Size = new System.Drawing.Size(74, 16);
this.lblEFA.TabIndex = 96;
this.lblEFA.Text = "Angulo: 00º";
//
// lblEFA_SP
//
this.lblEFA_SP.AutoSize = true;
- this.lblEFA_SP.Location = new System.Drawing.Point(10, 232);
- this.lblEFA_SP.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
+ this.lblEFA_SP.Location = new System.Drawing.Point(13, 286);
this.lblEFA_SP.Name = "lblEFA_SP";
- this.lblEFA_SP.Size = new System.Drawing.Size(79, 13);
+ this.lblEFA_SP.Size = new System.Drawing.Size(95, 16);
this.lblEFA_SP.TabIndex = 95;
this.lblEFA_SP.Text = "Angulo SP: 00º";
//
// btnEFReferenciar
//
- this.btnEFReferenciar.Location = new System.Drawing.Point(639, 9);
- this.btnEFReferenciar.Margin = new System.Windows.Forms.Padding(2);
+ this.btnEFReferenciar.Location = new System.Drawing.Point(852, 11);
+ this.btnEFReferenciar.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.btnEFReferenciar.Name = "btnEFReferenciar";
- this.btnEFReferenciar.Size = new System.Drawing.Size(93, 23);
+ this.btnEFReferenciar.Size = new System.Drawing.Size(124, 28);
this.btnEFReferenciar.TabIndex = 92;
this.btnEFReferenciar.Text = "Referenciar";
this.btnEFReferenciar.UseVisualStyleBackColor = true;
@@ -1098,29 +1075,28 @@ namespace AgroBase.Forms
//
this.lblM1.AutoSize = true;
this.lblM1.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
- this.lblM1.Location = new System.Drawing.Point(9, 4);
- this.lblM1.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
+ this.lblM1.Location = new System.Drawing.Point(12, 5);
this.lblM1.Name = "lblM1";
- this.lblM1.Size = new System.Drawing.Size(66, 20);
+ this.lblM1.Size = new System.Drawing.Size(84, 25);
this.lblM1.TabIndex = 91;
this.lblM1.Text = "M1 (EF)";
//
// picEF
//
- this.picEF.Location = new System.Drawing.Point(9, 27);
- this.picEF.Margin = new System.Windows.Forms.Padding(2);
+ this.picEF.Location = new System.Drawing.Point(12, 33);
+ this.picEF.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.picEF.Name = "picEF";
- this.picEF.Size = new System.Drawing.Size(188, 203);
+ this.picEF.Size = new System.Drawing.Size(251, 250);
this.picEF.TabIndex = 90;
this.picEF.TabStop = false;
//
// frmAcompanhamento
//
- this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+ this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
- this.ClientSize = new System.Drawing.Size(1484, 749);
+ this.ClientSize = new System.Drawing.Size(1979, 922);
this.Controls.Add(this.pnlFundo);
- this.Margin = new System.Windows.Forms.Padding(2);
+ this.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.Name = "frmAcompanhamento";
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.Text = "Acompanhamento";
@@ -1226,8 +1202,11 @@ namespace AgroBase.Forms
private System.Windows.Forms.Label lblDistanciaTotal;
private System.Windows.Forms.Label lblTempoEmMovimento;
private System.Windows.Forms.Label lblTempoConectado;
- public System.Windows.Forms.Label lblCorrente;
public System.Windows.Forms.Label lblTensao;
public System.Windows.Forms.Label lblTemperatura;
+ public System.Windows.Forms.Label lblB12V;
+ public System.Windows.Forms.Label lblB7V2;
+ public System.Windows.Forms.Label lblB5V;
+ public System.Windows.Forms.Label lblB3V;
}
}
\ No newline at end of file
diff --git a/AgroBase/AgroBase/Forms/frmAcompanhamento.cs b/AgroBase/AgroBase/Forms/frmAcompanhamento.cs
index 39da7107c..ed1512f54 100644
--- a/AgroBase/AgroBase/Forms/frmAcompanhamento.cs
+++ b/AgroBase/AgroBase/Forms/frmAcompanhamento.cs
@@ -140,55 +140,65 @@ namespace AgroBase.Forms
double Minimo = 0;
double Maximo = 0;
- Chart chart = (Chart)(pnlFundo.Controls.Find("chart" + Motor.ID, false).First());
- chart.Titles.Clear();
- chart.Titles.Add(Motor.Descricao);
- var Logs = (Motor.LogGrafico.Count > MovimentacaoModel.LogsManter ? Motor.LogGrafico.Skip(Math.Max(0, Motor.LogGrafico.Count - MovimentacaoModel.LogsManter)).Take(MovimentacaoModel.LogsManter).ToList() : Motor.LogGrafico).Where(log => log.ComponenteID == Motor.ID).ToList();
- chart.Series.Clear();
- List Momentos = Logs.Select(x => x.Momento.ToString("mm:ss:fff")).ToList();
- var serieRPMsp = new Series("RPM SP: " + (Log != null ? Log.RPM_SP : 0));
- serieRPMsp.Points.DataBindXY(Momentos, Logs.Select(x => x.RPM_SP).ToList());
- serieRPMsp.ChartType = SeriesChartType.Line;
- chart.Series.Add(serieRPMsp);
- Minimo = Logs.Min(x => x.RPM_SP) < Minimo ? Logs.Min(x => x.RPM_SP) : Minimo;
- Maximo = Logs.Min(x => x.RPM_SP) > Maximo ? Logs.Min(x => x.RPM_SP) : Maximo;
-
- var serieRPM = new Series("RPM: " + (Log != null ? Log.RPM : 0));
- serieRPM.Points.DataBindXY(Momentos, Logs.Select(x => x.RPM).ToList());
- serieRPM.ChartType = SeriesChartType.Spline;
- chart.Series.Add(serieRPM);
- Minimo = Logs.Min(x => x.RPM) < Minimo ? Logs.Min(x => x.RPM) : Minimo;
- Maximo = Logs.Max(x => x.RPM) > Maximo ? Logs.Max(x => x.RPM) : Maximo;
-
- var serieRPMOffset = new Series("RPM Offset: " + (Log != null ? Log.RPM_Offset : 0));
- serieRPMOffset.Points.DataBindXY(Momentos, Logs.Select(x => x.RPM_Offset).ToList());
- serieRPMOffset.ChartType = SeriesChartType.Spline;
- chart.Series.Add(serieRPMOffset);
- Minimo = Logs.Min(x => x.RPM_Offset) < Minimo ? Logs.Min(x => x.RPM_Offset) : Minimo;
- Maximo = Logs.Max(x => x.RPM_Offset) > Maximo ? Logs.Max(x => x.RPM_Offset) : Maximo;
-
- var seriePotencia = new Series("Potencia: " + (Log != null ? Log.Potencia : 0));
- seriePotencia.Points.DataBindXY(Momentos, Logs.Select(x => x.Potencia).ToList());
- seriePotencia.ChartType = SeriesChartType.Line;
- chart.Series.Add(seriePotencia);
- Minimo = Logs.Min(x => x.Potencia) < Minimo ? Logs.Min(x => x.Potencia) : Minimo;
- Maximo = Logs.Max(x => x.Potencia) > Maximo ? Logs.Max(x => x.Potencia) : Maximo;
-
- var serieTemperatura = new Series("Temperatura: " + (Log != null ? Log.Temperatura : 0));
- serieTemperatura.Points.DataBindXY(Momentos, Logs.Select(x => x.Temperatura).ToList());
- serieTemperatura.ChartType = SeriesChartType.Line;
- chart.Series.Add(serieTemperatura);
- Minimo = Logs.Min(x => x.Temperatura) < Minimo ? Logs.Min(x => x.Temperatura) : Minimo;
- Maximo = Logs.Max(x => x.Temperatura) > Maximo ? Logs.Max(x => x.Temperatura) : Maximo;
-
- foreach (var legend in chart.Legends)
+ try
{
- legend.Docking = Docking.Bottom;
+ Chart chart = (Chart)(pnlFundo.Controls.Find("chart" + Motor.ID, false).First());
+ chart.Titles.Clear();
+ chart.Titles.Add(Motor.Descricao);
+ var Logs = (Motor.LogGrafico.Count > MovimentacaoModel.LogsManter ? Motor.LogGrafico.Skip(Math.Max(0, Motor.LogGrafico.Count - MovimentacaoModel.LogsManter)).Take(MovimentacaoModel.LogsManter).ToList() : Motor.LogGrafico).Where(log => log.ComponenteID == Motor.ID).ToList();
+ chart.Series.Clear();
+ List Momentos = Logs.Select(x => x.Momento.ToString("mm:ss:fff")).ToList();
+
+ var serieRPMsp = new Series("RPM SP: " + (Log != null ? Log.RPM_SP : 0));
+ serieRPMsp.Points.DataBindXY(Momentos, Logs.Select(x => x.RPM_SP).ToList());
+ serieRPMsp.ChartType = SeriesChartType.Line;
+ chart.Series.Add(serieRPMsp);
+ Minimo = Logs.Min(x => x.RPM_SP) < Minimo ? Logs.Min(x => x.RPM_SP) : Minimo;
+ Maximo = Logs.Min(x => x.RPM_SP) > Maximo ? Logs.Min(x => x.RPM_SP) : Maximo;
+
+ var serieRPM = new Series("RPM: " + (Log != null ? Log.RPM : 0));
+ serieRPM.Points.DataBindXY(Momentos, Logs.Select(x => x.RPM).ToList());
+ serieRPM.ChartType = SeriesChartType.Spline;
+ chart.Series.Add(serieRPM);
+ Minimo = Logs.Min(x => x.RPM) < Minimo ? Logs.Min(x => x.RPM) : Minimo;
+ Maximo = Logs.Max(x => x.RPM) > Maximo ? Logs.Max(x => x.RPM) : Maximo;
+
+ var serieRPMOffset = new Series("RPM Offset: " + (Log != null ? Log.RPM_Offset : 0));
+ serieRPMOffset.Points.DataBindXY(Momentos, Logs.Select(x => x.RPM_Offset).ToList());
+ serieRPMOffset.ChartType = SeriesChartType.Spline;
+ chart.Series.Add(serieRPMOffset);
+ Minimo = Logs.Min(x => x.RPM_Offset) < Minimo ? Logs.Min(x => x.RPM_Offset) : Minimo;
+ Maximo = Logs.Max(x => x.RPM_Offset) > Maximo ? Logs.Max(x => x.RPM_Offset) : Maximo;
+
+ var seriePotencia = new Series("Potencia: " + (Log != null ? Log.Potencia : 0));
+ seriePotencia.Points.DataBindXY(Momentos, Logs.Select(x => x.Potencia).ToList());
+ seriePotencia.ChartType = SeriesChartType.Line;
+ chart.Series.Add(seriePotencia);
+ Minimo = Logs.Min(x => x.Potencia) < Minimo ? Logs.Min(x => x.Potencia) : Minimo;
+ Maximo = Logs.Max(x => x.Potencia) > Maximo ? Logs.Max(x => x.Potencia) : Maximo;
+
+ var serieTemperatura = new Series("Temperatura: " + (Log != null ? Log.Temperatura : 0));
+ serieTemperatura.Points.DataBindXY(Momentos, Logs.Select(x => x.Temperatura).ToList());
+ serieTemperatura.ChartType = SeriesChartType.Line;
+ chart.Series.Add(serieTemperatura);
+ Minimo = Logs.Min(x => x.Temperatura) < Minimo ? Logs.Min(x => x.Temperatura) : Minimo;
+ Maximo = Logs.Max(x => x.Temperatura) > Maximo ? Logs.Max(x => x.Temperatura) : Maximo;
+
+ foreach (var legend in chart.Legends)
+ {
+ legend.Docking = Docking.Bottom;
+ }
+
+ chart.ChartAreas[0].AxisY.Minimum = Minimo - 5;
+ chart.ChartAreas[0].AxisY.Maximum = Maximo + 5;
+ }
+ catch
+ {
+
}
- chart.ChartAreas[0].AxisY.Minimum = Minimo - 5;
- chart.ChartAreas[0].AxisY.Maximum = Maximo + 5;
+
}
}
@@ -410,9 +420,12 @@ namespace AgroBase.Forms
public void AtualizarSensores(string Texto)
{
Label lbl =
- Texto.Contains("Corrente") ? lblCorrente :
- Texto.Contains("Tensão") ? lblTensao:
+ Texto.Contains("Bateria") ? lblTensao:
Texto.Contains("Temp") ? lblTemperatura:
+ Texto.Contains("3V") ? lblB3V :
+ Texto.Contains("5V") ? lblB5V :
+ Texto.Contains("7V2") ? lblB7V2 :
+ Texto.Contains("12V") ? lblB12V :
new Label();
if (lbl.InvokeRequired)
{
@@ -423,6 +436,5 @@ namespace AgroBase.Forms
lbl.Text = Texto;
}
}
-
}
}
diff --git a/AgroBase/AgroBase/Forms/frmAcompanhamento.resx b/AgroBase/AgroBase/Forms/frmAcompanhamento.resx
index 05bcefc84..1af7de150 100644
--- a/AgroBase/AgroBase/Forms/frmAcompanhamento.resx
+++ b/AgroBase/AgroBase/Forms/frmAcompanhamento.resx
@@ -117,1619 +117,4 @@
System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
-
- /9j/4AAQSkZJRgABAQEAAAAAAAD/4QAiRXhpZgAATU0AKgAAAAgAAQESAAMAAAABAAEAAAAAAAD/2wBD
- AAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYU
- GBIUFRT/2wBDAQMEBAUEBQkFBQkUDQsNFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU
- FBQUFBQUFBQUFBQUFBT/wAARCAQ8AkIDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQF
- BgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAk
- M2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWG
- h4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx
- 8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQA
- AQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5
- OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmq
- srO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD9
- H91KOaZRSuA+imU4HtTAcDTqZS5qQHA4NOqPPNKOaQD6KbnFGTQA6jNNyaKB2FJzSUUmfTr6UCEJ7UhO
- KCajZqAFLYphfNNLflUZbNMB+6mls0wtxUbSUgJMimM4zULS1E0vvVgTPJzio2fioGmHrzUbSjHNAE7S
- D1xUbSe9QNKBULTe9AFhpPxpjScVWM3vTGl96ALBk96YZarGXjtTGlpoCwZPmpvmVXMvIpvm1QFvzPej
- eKqebS+YaALYbjrSq1VFkp4koAthuaeGqmJOakWQUrAWg1OBqqJOaeJKkCyG5pd4qAPml3+9AFgNx1o3
- e9Qb/elD80AWFapA1Vg9PV6ALAanq3FQK2TTw+OtSBOGpwYA1X380oekBZVqkDVWV+KeHoAnHNOBxUSv
- Tg2aAJVNPU1CDinbsGqsBOG7U4HmoA1SBqYFhTmng81ArdKkU5oAnDZpwPaolIHWng5+tADgKeDTAc9e
- KWgCQHFG6mA0u6gB+aN1R5o5PagBx5oLYpmcdaTNADt1FNLYpPM96AHUU3zD60UAUdw9KTdk0lFKwDqK
- bml3UAOBxSg0wGlpAPpQATjnPp/KmA4pRyRkdTgZPHr/AEpAczrnxV8GeGL97HWPFWj6Zex4L293fRxu
- vGeQWyOuazR8efhtj/kffDmfT+04f/iq/N/9q5/7Q+PHi+a2mglh+1hQ5Cn7qgEZI7EEfhXi0kUucb4v
- wUVNx2P2Hb4+/DVPvePvDa/XU4f/AIqtaz+KPg/UPDt34gtfE+lXGh2kgjuNRiu0aCJuPlZwcA8r1I6i
- vxQv0EUiqymRiONnT8a9s8AfE/RdC/ZW8f8Agi4vo7XWtU1i0ntbGRj5k8e6IysPYCLH4VVx2P1O8K+O
- vD3jq0nuPDut2Gt28Mhill0+5WdI2wDtJXvyOPasy6+Lfgu08Sjw7N4q0iHXXmW2XTmvEE/mn7q7M5BO
- R+dfB37D/wC0T4E+CGneKtL8ba4mhHUJre4tA9vI4kwriQ/KrdPl69a8q8WfE7Sbz9pZfH66iG8PHxRF
- eJeAMv8Aoy3CfOQVBC7BnkdKZJ+nviL40+A/CuqXGnav4t0nTdRgIElrc3aJJHkBgCpORwQfxrHf9o/4
- X5x/wnmhZ/6/U/xr8zv2gvGmlePvjN4u8QaU0Wq6Rd3f+j3sJIWRFREBX1Hy15wwtvNYi3baW4G7+tRc
- dj9dU/aI+GUkiKnjnRGLnAAvFOT09fcflXfeaHUMrBlPIKnII9RX4oo1qjY+zyJ6kP8An+OMY+hr9kfD
- F9He+GNJuI5BLHLaROrr0bKA5FUtQNlpKjaT3qB5sVEZqYiZ5RULS1A81QtPx1qgLLSD8ahaSqzT1G0/
- vQBZZxio2cY61Waeo2n96ALRYY61GXFVWn568U0z+9AFoyCm7xVQz80hn5qkBaMgzTd9VvOpplFMRb8y
- nBwR1ql5tKJsGgReDClzjvVITU4S5PWgouhjmpA9UhLzUiyZoAth6eHqqsgz1p4fJqALQel3VAD70u6g
- CfcPWlD1DvozmgC0GpytVYNTw+BQBbV6fuzVVXp4epAsbsU9X4qvvpRJSAtB6crVVD1IsnNAFpWqRW5q
- qr5qVXoAshqd1quH5qRW9+aYEoOODT1P4d+ahByPf+lfnv8Ate/FrxxoHxs1rT9G8UajplhBFCsdtbXk
- kCLmJXPCsoOSx60XsB+iQPNSofevx2k+O3xOVuPHeuj6anL/APFVLL8cvimlsWHjjXxtGRIuqSnb07bv
- f07UXHY/YhSMDv8AjTwSeAfm7cf5/wAivzs/a2+O3jDSI/hx/wAI94o1PSRe+F7W/nNlcuglkk6M+Dyf
- lPNfUGoePNRX9jtfE4vpU1iTwpHMLsyESfaXgA3Buu7cSc07hZnuwOenH1p+QfXFfnX+yr8efF+o+Gvj
- IfEHirU9Uu9M8OPqFm95cvJ5DIso3IT3yy9PavnyT9o74qQXBWLx/wCIGUHG4Xz9vYmi4WP2Wz34o3/n
- 2r8bH/aR+KbtlviB4iHr/prf0NXbL9o/4khwzfELxKGBDY+1MynkdQTyPai4WP2G3U0tzXM/D/VbjWPA
- fhu/u5POurrTreeWUjBdmjUk4981veZTETl6buqIyU0vQBMWpN3vUBkpC+aALG/3oqtvooASimUUrAPo
- plFIB9KDimA9qdSAdR0J7cf1po60p7/T+ooA/JL9oG1V/i94yYkKRq13x/22avMHjjDYIwM9q9c+P9m0
- /wAX/GLLjaNVuuf+2zV5lNbCFjuYA+lR1KMLUp5bWVI7a2acuOueBXPEzt490/zkEZ8htoHfg8V11/fw
- 2O3+Jm6BRXKpeyXPj+xJj2lYGCAj61QzF+INqLPULdt5YyISVboMH/69dLeRR2fw7jnIyxtgAvcZGM/r
- n8K574l2MkOpW7s+8OhIOeFw2f611sypD8Po3lYNustvy+u0j+opCIfBlhu8L2MgGQy8n15NbaxS+WE3
- HaOlUPB8Xm+FrAqSqbScfia21jdY0TOcd8VAyCNXijJChsAk5HWv1s+GUoPw28Kf9gq1/wDRS1+UkE5t
- kO6MOOetfqV8L7gt8M/Ch9dKtf8A0UtaREzsmlzUTye9VWuMVC89XYksSS8VA8oqrJcVXe496LAW2lHr
- UTTD1qm1xUTT0wLrTZphmGOtUDNxTDOcUAXmm96aZaoGY9c00z8datAXzKaaZR3qh55o880El7zh60ok
- 461Q880efQBf8z3pRJ71Q8+gXHNAjQEvvTxJzVBZc85qRZcHrQM0FepVeqCy5qVZKCi8r1Krj1qislSr
- J71IF1Xp4eqaye9PEnvSAuBs0obmqwfj1p6vQBYBp4Oar7qercUAWBxTt2KhV6eGzUgTK/FPDCoAeKUE
- j3FICcN6U8NzVcNTw2KALKtUqtVVXqRXoAtK1SA9+9VlepQ/FAFgOO/+f85r8uf2tIhN8efF7ySsSblR
- g+0aAfoK/UDfxX5iftWqsvx08V56i5Gf+/a0S2Gjwy4VYwSEZ8n0qGS5WJHBLIu0s3oRjoe3rxWhNMkO
- OGOasXtgkNr57uhjAG7PUA1CZRzPhLxBqviLT5JL2/ur6O1b7LB9olaTyIVHyxru6KuTxwK52w8Ta1Pr
- 9tpkut6jNpsc/kpbNdyGMR5OFC7iAB7VqfDrE1hqgiyiNdOvy9OQP1rmtIt/K8aRxoynF2V49MnP41Yt
- Tq9R1/WNF122t7G6udPtrtjbztbTNGLiLIyj4I3A/wB05Fbktv5kpKjan8KjjH4VzXi688zxDplsqYxP
- hGPQnIx/WuoNnJJcLIZGVQQVUd6TGC28iYwOPQitCxvLm1HyQI4AJ+ZM5/Wo3Eh7nrV7T9QnscbQGAyT
- u+lSI/WT9n+9lvfgn4LmmcySNpkOSfZcf0r0AtXmf7PE5l+B/gpzwW0yInH0r0Tf71sSTF6TfUJem+bi
- gCYvzSb6hMvNNMvPSgVyxvoqt5vtRQFy5RSE4o3VIxaKTdRuosAo604U2lB7UgHU5Tkj2ptAwTjvQM/K
- X9oCEw/F7xeqEkHVLknH/XVq8yli8w4bmvTP2gpJx8XfGO1Mt/alxt5/6atXlc/9oNnZGB9XxUdSh7Wc
- CEuwUFehauR1C/t18e6WI8SERNkj3ran0jU9SYLNKIE9VO4msZNCg0fxrpxaUygqWUy9jgjH54qlsBzf
- xEln1LUoVZNnlK2ARgEZHPvXWfYBc/D8F8jbalgQepA4/DgVQ+JU0YvLIJh22MDtHTkVYvmvZvh5+5jk
- I8nHple9J7CNHwFI6eF7AogePZj1z1rUk1NxdFfsshjGMHafSs74fzQQeG7G0Z9rqh6n1JP9a6ZljOPn
- XNQMhiuIZVw8TrnrkdB61+nfwumU/DPwptPy/wBlWoH/AH6WvzMeJWjfofl7V+kfwsm2/DHwmPTSrUf+
- QlrSAmdo0g9agkn96rtOSKryTcdea0JJpJc96rtKMdagkm461Xe5460AWmm4qFpveqb3FQPc0AXml/Gm
- G4wOtZ5u/eo2uc96dgNIze/NMM3qeazvtPvQbnPeqJNDzR60omrNFxzTvtBoEaPnDPWlE3vWb5/NOE/v
- VAaYlFKHBOaz1n96kWbNKwGgGx0p6y1RSap1fdSAuxyVMr+9UVOBUiyUDL6vUqvnvVBZsds1KstJlF9X
- 96kVxVBZR+NSrLmpAvK/vUimqaPUyyUAWg/apFPFVVepFakwLIPFPVqrh8CpFbiiwFhTT6gRqkD0gJPf
- 9KUGo9/NOD0gJQ/bFPBqAHP1p6tQBZVqkD1VDVIGoAsq/wDSvzQ/alg8343eKGHU3Iz/AN8LX6Uq2SPw
- r81P2obeR/jZ4qZZCAbheB2+RaUho8iktx0IX8ahurNbq2eB2YI3GAe/+NNk0ZnkLfaZAc5qK/hvobSZ
- Ym8wFGx2bOKhFHJ/DmN7fTNahgGW+1SKC3UHtmuZ0C2kXxlBkgyG6II98mul+EjfZ9M1Rrg7ZPtTOQ56
- 4HP41zWgyyS+OopEBAkuyRntkmrA6vxrcwx6zosYZfOWctx2xj/GtwX17c3O2KAiJWA34xkfU8H8KwvF
- uiR2OvaLdGYktdfMGxjt/QmuyuL61tm2tKuRxgH/AApAKsjl8lBjPatS0ns/+W0eeOTtrNhu4JMkNgY7
- 1o2tqLkEI2Tj1pdRM/UX9nx0/wCFJ+DNv3f7Ojxx2xXoO8V5z8Af3PwW8GpnONNiH6V3plrexmWN9MaT
- 3qu02O9RtLTsBZMg9ab5lVfM96PMAHWmIteZRVXzhRRYDePWkoorO5pYKKKKBDs80tN6U4c1I9hQad1+
- mRTKcpoGflh+0JLCnxh8XLvHy6lcZyP+mjGvMnu7Zc5mXrXoH7Rmgm5+MnjF/tEib9UuDhQMD5zXk03g
- xZCc384+m3/Co6jJtU8TWGlxjfIHc8hV44+tefXd9deKvGFm1soAjUKFzkdSea7i38C2KTCW5mlu9vRJ
- SAh+uKztXktdH8caNGkCQxyRsSEQDp/9amtgOY8ZWUnh+7ie6mSYTBigB54xXZz6pbw+ABOXCj7Jwp7s
- V4H8q4j4l6tHreq2KWUbTfZ1YMcfQH+VbqeGri/8BxSSXGB5XmGIrwqjkc+vFPoBf8CaHb3nhGxmcMs0
- q7i4Ykjk446dMVqjw7Onyi8OAeMpz/Osvwh4mhi0y2tozujUY59c5x7V0T+ILRWwQwbuMf8A16iwFePS
- biFWY3ZbaMkbOtfpR8KpCfhj4UJPP9l23/ota/OBtctJEIGcsMc1+iXwqmx8MfCnP/MLtv8A0WtXETOz
- eXPeq8ko79ahecc81Xef3rQkklkz3qq8gA65qOWbrzVSSf3oAmklzVd5PeoJJ6gaX3oAsmb3qMyj61Wa
- XiozNx0qhF3zaQyj1qkZc0nmEe9MkveaB3pfNHrVDzvwpRP78VQGgJRT1kz3rOE/vUize9AGkkmO9SpJ
- k9azkl6VPHJzQBpRvxUyv71npLzU6yc0AaCSGpFkz1qgsh9alV6kC8rD1p4bniqSyVIsnNAy6khFTo5z
- VJXzUquQetQUX0fNTK1UY3zUyvzQBcVs1Or1SWSpVkpMC4HzT1NVEfmpkemBZVuaeGqsrVKrVIEwbmnb
- qhDcU9WpFWJg1SA5quDUiHpQSTKeakBxUIPQ1IDQBIDkV+Z/7TurLF8bfFke3lLkd+vyqa/S70r84P2l
- LeJ/jN4nYxqzG65JXk/KtKQ0eKP4gXccRD8TV3+0LX7MZjMECgE555yKt/Y4v+eK8/7IrL1fw3Ff28ix
- SNauwPzp0z6mpRRyXw00+31GHWZJELBr11XqPl6/1rn9EkhtPGiw4wsNw/J9j/8AWrS8F+IG0KO+gVGm
- 2yu0siqSARwPzrK0HTTf+K7aaQh45LneeexJNWBq+NdUk17V9MghQF4rnAAzyDx+VdZZ+DkMnn3kpuHJ
- yEQ4UVn/ABCuINGvtEl8sL/pHZeeCtXb/wAcQQzCKCMuQQCW5xz6d6km5spo1qoO2Mj/AIEf8avWcH2U
- fuiV68Zz2rnB4wZm+WI9f7prZ03Xorpf3keD64IpdQZ+oXwFk/4sx4NJ6/2ZDnP+7Xdl687+A8gPwa8H
- 7en9nRd/au7MldBBMz5qMvUTS1GZKYifcKTeKg8ymmXmkBZ3+1FVvNooA7CiiiszUKKKKBBTxwKQClpD
- YUowSB+YpKUYBzQCPyr/AGktftrT4zeL42DFk1GYED3c15TL4ss48kpJ+leuftI6DbTfGTxc8qZd9SnJ
- P/AjXkz+E9PfrFke5qOozD1r4jRWcYS0hZ5m6bzx+Qrl7e2v/EniC1e9d7eZjhHIwVXBPFej2vhjTrCZ
- ZY7ZPM7M/wA2K5fxfff2X430K4IJhSOR3AH4Dj86fRgZnjDT7LwtLbjLO06sSXHPGOcitq98S2dj4Ezt
- LFrfauz1YH/E1zPirVY/F2qQi3iljhtFZAzrjcTXRJ4Utf8AhGDMGbcEaQqT8uB7UdgNPwDp0TeCdPjn
- iSTchaQOucnJ/Op5PB2mtJvxMuf4fMPFcp4c8aSwWMW23f7Knyh9p2Vst8QLRXCLCxwB0YUaga3/AAjd
- lBCzKJPlGRlya/Q34US5+F/hTv8A8Su3H/kNa/No+ObeZWTyHUsCPvV+i/wkmz8LPCR6Z0q2P/kNacRM
- 7RpeKryycVG8tVpZs9K0JHSSjFVXfdTZJB3qu8tAD3fHeq7y0x5c5qB5KoklaWo/MqEy00ycUwLHmUok
- 96p+b70eZxmgRc8z3pA2aqCTnrThIB3qgLe7HQ09ZMHFVBJnvTw9AGhHIKnR+etZsb+9WI3oA0kkwanS
- TNZ8clTo4/GgC+snNTK+aopIO/WpkfmlYC4r1Irc1VV+amRuaQFyNulWEbNVI2qdDg0iiyhxUyPVccYN
- SqakZZDVIr4NVkbNTLQBZQ1KhxVZDU6NSYE4OKlU1ApqRe1SBNT1biox0p60DuSDrUinjFR09etAiZfm
- HNOQ1Gpp44NAEo5we2ea/MP9qPUdRg+OXi5IYZHiW6G0qOvyrX6dqa/OT9o/I+Mnijj/AJej/wCgrQxo
- 8Dk13VAW/wBHmBH/AEzz/SrcXi6KOMrcJiRVztI2n8RjpW+3HXJFZ2raFZ6vCRPEN3QNHw3f86kZzfwp
- g8zTtVldc+dfyNhh1GOB9K421vvsPi64ZflWK5faq+ueMCtfw5qF3bRXsNnDLPbwuUZo/Xp/SqnhiwU+
- Jre4Y7i9wWZXPc5qhh4ggvdc1rTzfeZbRSSKsbP6EnkfnXpWleHbHR1Bgi3S95ZDuc/iOlcp8Ubo2V/4
- enBBMVyXYN6AD/61S3Hj+S+Jg062dpAMZVd5/OlYg7jYGPQE9zT4ohuwR+OM1wVtq2vZ+eK4x/umtmw1
- LUiwMiTj0+Q/4UIZ+pHwKb/izvhD/sHRfyruC3vXn/wLdl+Dvg8Nnd/ZsJOeP4a7cyVsQTl+KjL1FvyK
- QvTESbqQvUO/FLvFAEu+iot4ooA7yiilrOxpcKcOKQ9qWkIKKKKQ0rhSjp0JpKXpg0FH5VftPeKIrL42
- +L4mgkZor+XLDGOWz/WvH38eWyn/AI9pj+Ve5/tMaZGfjJ4r3ZzJfSk4PvXz74+RdB0yK4tl/etKF+fO
- DwT/AEqN3YHoQ6z8QbgoI9NsmMzfxydE/wDr1g2Oh3Wsa0g1GZ3uZvvNIuNi4PSu4+D0uk/EaOLw5YRx
- y/ELUrpoNPWdXWALhSuSARkkt/8ArxW/8cPhb45+Dnjrwp4c8RaTolt4iv0H2eaxupJVmBO3DgnCkk9Q
- PpWvsyOY878XW1p4YktY4d374Mee+COf8+tJL40gtPDEts8LtJ5TIhXnJOa9J+IPgzXrbwlB4l1PwZ4f
- S1NtdTw/6XPLKnlXqW7kqWxkMduO65PavAZNda6h81IoVRiW2gMxA9valyD5j1LwRAsfgvTkkRQPLy6k
- A8knORSy+GNKaUSG2wW54JH9a4zwZ8Qbuy1/T7BbOy1E3WIILa73iIs3AJKMrDGQfQ9wa6Lwl8UtCk8U
- XC+K1S30+K0lhSOxViHukXCMcHIBblsdjxjpQothc0ZNE0+O3k2Q4wDj5iccfWv0A+ETf8Wq8JY6f2Xb
- gf8AfsV+aOq+K78ateeRxYM7+RmMqSmcj73PQjrz6122h/tdfEbw3o9lpVlqFitpZwrBEHtFb5VGByaa
- jYGz9IZJMcHj0yf8/wCRUEj5GTkfh0/z/hX5zav+2B8TtWsJLZtZgtVkGGe1tkSTHTg475I45qlaftDe
- PtbgOkTeI5reJ5fNFwHcSJ8xYjeGzgglec9vQU37quyoRdWShF6n6OyscZ//AFVWZ6+TPGnx4v18UaPq
- 1pBqllaWySNLYS3bJHcpJEFUkZAOHLODg8YFbM37Z1tDgSeF5i3Qlbof/E8VzPEU1oz2f7FxjXMoaH0m
- z1C78185W/7Zen3L7f8AhGrkEnjNyvbGe3Fe6+HtbXxFoOn6mkbRJdwJMI2OSoYZwTW0KilsefXwdXDf
- xFY0y3NRs9Iz1GXrU4R+4UbvyqItQH/OmIm3DNODVX3HNODVQFlTUqsDVVXqRX5oAtKcCp0bgVURuKmV
- ulAFxG5qxG/vVFG5qxE2aAL0bZNTq3NVIzirEZoAtIcmrEdVk6GrUY6VIFmPpVlBVaMVaj6CkCJh0FSL
- yKiHapl7VJY9eKmWo0FSoKAJE6VOgqJOlToOKTAkUVKopq1IopAOB4qRKYuAw/ken+eK8k8V/tVfD7wT
- rt7o2qX13HfWbmKZEtHcBh7gYNRKSgry0OmjhquJfLSi2/I9hp46j+VeBL+2z8L26X9+fpZPWNr37a/h
- sXOnpoKzXKNeRrdm6tWXy7Uj95InPLg4wPzzwKxeKorTmPXjkOYtX9k7H0ytSCvz9+NX7dHj3w83l6DD
- pGmqJlUGaAvN91sh43PyjkYryof8FDPi/k7dQ0wgDvp6V0RfOrrY8evRlh6ns57n6tDGR6ngV+Wv7Uw1
- eb46+MDb3EkUP2v5QM4+6tUk/wCCh/xgBX/T9K65GdPTr/kV454x+Nninxp4lvNW1C4he/vHMkpjgVFY
- +ijoKpxuc6djRMPiBSP9Jmx7gjNXB4tudNQx3kRmI6HHzVT1v4r6DD4K0eGxEieKAivfNNG4Vj5kmVVS
- cYKeWDx1FZniTxXd3WkaXNJpljANRjaWFoTJvUIdhzliOWXP49ulJxHe5v8AwziMGnahuK7pbt5SoPUG
- uBn1Ga18T3Xl8uLh1UDv83b3pln4ruNPMgjkVQuC5Kn+h+ldx8G/B198S4PEWpaNpel3E2k20dzPPfTT
- LtLTIm9QpwTmQA56A5HIp8oXsYN/pl9qV1YwaiJIxLKChf72DwR/KvSdK0ix0SBYrO3SIYxv6s39azvF
- XhnxRd/EzQ/DUltpUWrS3Er2/wBnll8nKyOuGZuQMxP74I5r1Hxx4Fn+DvgmPxH8QI7K2i8SW0cugppU
- kssUZEbllkzhsklDySvPpmq9myHI4zzecY/OpoZFJ5Tv1rx3TPE+sXt4kaXcsoPIABJxjjPFdXptzqRx
- vM+f9od6zaaHc/U/4KnHwl8J44/4l0P/AKDXaFq4L4HMx+D/AIPLE7v7Mhz/AN8iu4L44rVEkhamF6jZ
- 6aWpgS7s96UNx1qDdRuqgJ959aKg30UAelYpQKWisblhRRRSHZhRQBmnAYNIpaDaUcj6U6k9/TvQK5+V
- /wC1F4lhtfjd4tge3uGaO+kG5EyDnn+teCeK/FkEtihWC5TY+SWVVB4x3HNfQP7UehpP8bPFj+dIoe9c
- kDHt7V8/ePtCWw8OSTpLIz71GDt5GamPxA9Ubv7BPiLSfDHxz0PVNVe3SCDUYhvmIG0EMMgnAXBKmvp/
- /goDqVl4j/ax+FM2nzx6rZhYg8tlIJUXE24jeuQMAZP4elfAPw4sLIaJ4p1SeJ3uNNt4ZYmVmG1muYlJ
- 46kqzDnNfUfx40/RdP8Ah58D/iJpmsado93NaGzudD0+OOOaI5fNwwHc/KM7B9TXY31MbHl/xS+KPinU
- 0m8ITxPYWNrPeWsETRfvDDNcmZ0IxlgXCMOM8dew5zRPgZ4k1jT45ZIUtrWNQf35wwHvtGR+Ndr8MrB/
- EupXfinUVN8xkKReZxtjHt613OueP5En+zWwwF/gUHpj0HJ/CsZz6FpHg2vfBnxN4RurPVrePe9o63EE
- sADhSCCDtI55A/KvLZpJrLVXlvceY8zSOQOCc7j+P4V9maF8RUuG+yXiq8LcFH5B9evI4rxj49+AoLXG
- q2cBjhuDnHcHquB74/WpTvoVaxz+t63peuPJLpn2p2fe7m4YfL16cVzrEb3I47djVLwvIUnZXGwbHwOg
- 5XH9KsvgkgEbeoANaEMUMdykD5geMVueD9OtNX12G2vg8ts+8sA+08DPp3IHSsVSAqtXQ+ACP+EptTgZ
- G7nHXg0eo02j6H1n4SG0+Dl5f6deSM0cSmO3mmYpEBIzuybuh2DaMVl/si+F9N8Waz4jTXNPt9Whhtov
- LW7i8zaSzZIzn0Fd38SCW/ZrviTjEtuMgesgH9TXm37JfjW38N+O20i4t5Hl1oLbQSKflRlDuS2exAxx
- 3qZUodjrji68Y8qmz6r/AOFWeDo3OPDGl5yelsnPY9q6K2tobC1it7eJIYIlCpHGoCqOwAFSbiR3Gex6
- 0zOaIxUfhMKlapVXvyuDNmmU5ulNPIqjEQ9KbSngYpvc00A4HFLnpTCe1CnBpgTZ5qVWqsDzUyHigCzG
- 3FTqciqqHkVZSgZPGc1Zj61Vjq1HwaBFmOrUdVoxmrUQoAsxircfGKrR9KtxipGTxDpVqOq0fQ1ajoGS
- DrUo61EOtSr1pWGSpU69ahTrU6DmpAlUc1OgGOtRL1qdBxSYEqjNSKKagxUqDJoYCqOx6dxk15J4s/ZX
- +H3jfX73WNV0+5l1G8kMs0kd3Im5vXAOB0r14Dmn5PrUygpq0lc6aGJq4Z81KVn5Hyd8Zf2RvAnhL4c6
- xq2iwahb6jarGYS10ZFy0irjac5+9XlHw/8AgbHqenXFyL28t5/KGWWQKQcg4GBkE89COMivsf45anZW
- XgO4trq7gguLuWKO3ilcBpiJUYqinlmwM4HQDJ45rzbwrBt0q7kj3LHLGgY4HJAO0/huNFPC0bX5Tunn
- ePa5HVdn5n5+/HnwtBoGqSNbwFZ5JiZHVyxYnJ79B6e2K8mCnnOeh6V7v+09tXVW4Azdensa8H2soxu5
- NapKKsjyZylL4mOcYOcqfrU2n6pDps8JvYmksJGYSmNUEoAH8LsCQfpUDD5RyFI7Ac1W17d/YtuFBY/a
- GOB0+6KZmVfEdxY69rhn0aK5isUVEX7S4dy3PUgAd/T0rtfC3gXxF45t7GG3Uy2ljEYonkG2NMkscYGT
- zn86xfhh4YPiLW7a0kXAmkzJnA+Udua+qrzX4PBmlR2VnAbUoAoC43Ej0I6DFQ5W0Ltc8XuP2dddeJxE
- 0EzqMNHuZe3HIBrH8Da54r+AWv3kVvFstdQURXlpcJuSdA6OBkHkBo1Y4IIwPevXbX4jXtjdLN5Er+c4
- X93G+SfX3xW74y06y+Jnheb9xGZVi8xZ+hU/wn8elClZg0LrGp6TeftJfDnWNCvrjVtIksUdtRu1VXae
- VZWlR8ADd5kpG0DHK9eg9P8A22vFWlX/AMAvhnobzWs2oWOlSGaP7Shlgk+z4CuqnIPHX379K+HfCHi2
- 98F/EHS7q7tzq1vYz7UtJXBCNnaGGRxtIyPevWf2mtP8P6j4y+Isuk29slnpttZNaPbBUjZmePc3y4DE
- 7jyc9a6k00ZNO55r8P8AUJIpIbbfI+YyzHcPLIxxn1r0a1uCZ485wWHJOa8a0vW7jTdlzEd0rRDgnJxi
- uk0vxrfSzJuVd3t+dc0ty9tD9a/gyMfCnwoB/wBA+L/0Guwrh/gZM0/wc8HSNyz6XAx9soK7iqEIx7U0
- mgmmmgAJxQOaZRVAPoplFAHqZ4op9JisbljaOtO20AYpD1ADBpaKAM0hBSEZzkcYpwFOXk/SgD8tv2pd
- ctbT42eKklLjy7184Qn0NfPXj/XrLUPDk0MLuZCykZjI7+uK98/aw8M3F58c/Fsi35hSW7JEflg4wqjq
- fpXzn448NNpWhyXEt/537wLsKhPXofX8KlbldDj/AIdNu8GeOd275bSDGOeBdQn+v612nxF+E3inwvpG
- g+ML3STB4a19ydOvQ42zYC5UgHK42nqPxrz/AOGOsJBfXmkTRL9j1byoZ5pD/q1WZJM8f7oH419c/te6
- zNqGo/CDwh4B1r/hIfDVppizxQW86NHFdbmaQ5OAGAOME9vWuvpYx6nE/CBUfwPlXVSuAVbjkMeOKYkY
- g1KeOX5ZRgjccHqema5XwT4vX4beK5tP1UxvazP5jgciGRvvA+2cnPvmva7yx0HxHaC/tLiGVShK7Wzk
- egP41zzVmaJpnld7EdR1W0+xqyToSZZuxAxjr0PXnv0qb40EWvgW0jmf5i0e1emCDnp26GvSTZ+H/B1p
- JeXlxCERQWAx19Ce/wBP0r5b+MHxDTxZqUkVouy1VmSFRxwerEduvH9KS1Y2czoLE3pKPuHlvlV7HbVt
- GycZP1zVTwzEEZXYFWcSN+G3irSndg4X14/lWxAhJDc5/Gui8CAr4mtSM8hsc/7JrnWy5Y4x7V0HgeVI
- /EdqzEKFDEg9/lIpgj6q+J3z/szah8xQebbHd/20FeO/syeF73Xvilo19ZQ+fa6XO013JuUFEMbqpweT
- ye1ey+OJLJ/2btTGoSPFABF88QBIfeNgPtu2j864z9hOQSeIfE6E8/ZYiQOx3nI4qmx6n18SSSaTGKnK
- Yz/WmstZiIetNxUu32o2+1MRCRTamKZPSkKY9qaAhIoUU/HNG3NMBF61KlNVakReaAJEGTVmMYqKNasI
- M4oGiSIVbjHNQxrzirUa9KAJoxVqIc/hUMa8VZiXBoEWY+1WY+tVoh0q1GKTGizH1qwnWoI+lWE60gHj
- rUimox1qROtA7E6VPH1qBOlWI+tSMmXrU6dKijGasRjpSAkXpUqUxRUyCkwHKKeopAKeOtMD5e/bVTOt
- /CUAHcdbl+6CSQYSO3uR+dbvhsKvhyQRkMBHjP04ANeifHixtLj4dXstxFE7xSwGOR0BaP8AfJkqT04z
- nFebeFZ4ZNEu0gIbyVQMykFeemMcHgV0w+FmUtz4Y/afXGqOMZ3XRx7fKxrwZshMjofXqK93/abkzqLY
- AJFzyOvY/lXhG4SYzheO1Ymr2FAYHIz05pmq/Po0KqXDfaG69PuCnnAX69zmotWmB06CFWBbzmbAP+zQ
- Qdr8DZYz4vtFVgrMhAOc7iGUn9Afyr27xrpxW8R2HnRo/wAw3Dn2z0P418p+Ddbl0XUYbmE+VPGweM9S
- TgdvQ819deBviBoHjrSUt52js70D5ozwcnnOM/MKykrlo51bu3jBM0ckiFWASM7CDtIXntg4+tbnhNH0
- nR5xO23MRwjfn0+lb48PaRazyNJNEI0wwYZO76c15p8X/ilpdvYyaRorJLNgo0sXzCMdCSe57Y//AFES
- bBs8R1e7SfxNdNsEiXM7hELYBZmO38uvQ13HjTwVqngPRfH+lawALuHTrBXj3bgredE2M9uv6V0HgT4d
- Wo+Jvgv+17a3l0OS2V2JfcjSMPlJ5/v5H1AGDnJ6b9tzxl4f1DxpqU/hPU7PXLLxJptmLv7G2RazJtZk
- 4xzlFBz0LV18tomTd2eH+Ak/0pVIIIhIwB7ivRbFM3MYOTzjmvKNK1afQtk6bJD5QjDEAg579faum0jx
- /JLcR7xAnOeBj+tc8ty7H62fB8Bfhb4WAGB/Z8PA/wB0V156VxXwUm+0/CPwfMSCZNLt2+XpygNdqavo
- IYelNPSnY4xTTxQgGUU+jHNMBlFL+FFAHqtFLjNG2sSxKMGnYoAosO4m2lxinYpQKQhuKBmn45o2ZpAf
- mJ+1JqFvB8a/FKPKqut0cqfoK+dfiNquny6Kq+cHYS/dVA/Y889K90/a58MXeofHrxdcRXwhje6GI9uc
- fIo/pXB+EPgpomq+EfE2v+LtTu7fStIEDfabYABGd9nzjaSQSVA9zUx+Ib2Nn/gmRd+H/wDhcthb6/ZW
- t7BPbzxRfa4RIglLAocMMA8deetdd/wUK1KKH9pbRrCwt7OztbGaGCMWluiqvEbnKjhiTISfUbemDU3w
- Otf2b7j4UX+g+K/iPqug3UuoPMRbgrJt2qAQywkgcd+/5V4n+054a+EPh3WtIb4VeL9R8Xwsu+8uNSmd
- 2DZwFyY0wMD0PWupys1YzWh6N+0P4At7j9nnwh4thnhnv5fON1MEXzJJHUONzDnABx17V8mW2rX+mWa3
- UFxcWm7JPkuydOPXpX0x+z3pfwB8a+EL22+LXiG/8JalHKv2eWyuZ381QOc5V1zn2zXlsvg3wzr3jPxF
- pPhea51awgt7q40+VyRJIsSO5J6D7qgnIHT1qpO5MVY88sp7rxN4u0TS728uWjvLpIWnd9zRhnAyCxwD
- z1rmRpMq6zLGIZZVSVgrEZYqrfrxXaaXHpUUwluLd3V+BKspUqfUc/Q888V6Z4B1DSfAmuNq2nbHaW0l
- tHiuWYqVkXaTkcgjOeCKxuaJs4HxA2lCYNpV1POHaTBlh8oouPujn+lcyvyvg4465POPWu+1vRtJuZ9R
- 1NbmVZZvMn8oNkKWycZ9s45rgTH8rNwvPAxTWomIxUluwI4PNX/D+nRaxqUVrM7xxyK2TGwU52nHJ4FU
- WwSM88V6h+zT4S0zxv8AF3TNF1iI3OnXEU3mQo7ISRGSCCpz29qTv0LjZNOS0NzxA18PBL+GI9R1DULa
- 6RP3JG4bkkMh2sRnIXYCB0696zPhfqPi/wCEN9fXugadcNNeRCOUz2LSDbuPTAHOfc19+P8ADjQWu9Ou
- vsR8/T5GltiZW+RjGsZPXn5FUc+nrW59mVQAF4HHzda5ZUqknfmPfp47C0YcnsbnxvZftDfFS4dQ2jI4
- zgf8SyT/ABr6c8F393rPhLSr7UIxDfT26vMgQphiOeD0rp2i2nIHNRmP24rWnGUdG7nn4vE0q69ymolQ
- rxTdhqy0fPWk8utzzCtg03aas+XTDHzTQEBX2poU1Y8v2pQntTAhVD6VKkdSrGalWOgBiJ0qeNTmhYua
- sRxe1ACxryKtRimpHjFWI0oAfH6VZTrUcaVYjj70ASRjpVqMVCi81YQdKGBNH1qwlQxrVhBwBUgOXrUq
- imIKnQUDJEXip41pka1ZjWkxoei9KsItMjXmrCLzUjFVamQU1RUgHNAC44zx0x83f/OK+W/iX+263w98
- b614fXwkt7/Z9w0Hn/b9u/HfAQ46+tfVAyCCpwR6HBBrEvfA3h3VZ5JrzQNMupZDueSezjdmPqSRk1jV
- jJr3HY9LA1cPRqc+IhzI+JfiH+3BP8QPCN/oI8KLp/2wJm4F8XK7XVumwZztx1rgtE+M9w2kz6Wpm0jz
- AqC9tJAzoQwxwcgZzgnrg8Y61+hNx8HvA12jLL4Q0Rg3X/iXxD9QK4Txf+y74e1vVdHvNGtNM0P7DqEV
- 48SWW5ZolUhoTgrwx5ySfoa4vZ4lP4z6f+0clcXF4XXvc/Mj4z6FFa3ralb3U90lzc8yTSF/nOSAN3JA
- BxzXl643Z6E9RxX2d+3X+znH8MdC0/xRa6qstneXcGnnThDgIVic71PTkRjI29cnNfGC8bh8oNejS5kv
- f3PkMV7F1f8AZ01HzYucHrxnpVnT57SK+gjvFEcDtlrhIt0qAf3TkY7VWJLDjGQetdn4H8B2HjGznlvH
- lR4ZQgERA6jOenXitDiOD8YWkL6zDcaF9tu9OMSbbq5t2Qlu/t6/lWpc6b/ZWj+G7xJ383UIZmlzhljZ
- HZQAByDgDvXu2s+HrfWvDOi6BPu+x6XH5UJU4kcb3c7j3/1mPwFc3qnwr0uXT5Vst8d2Zd8c0jkhExym
- M98g5obQ7Hksut380EsZubmREx8jOSp/DNe8/wDBPHwjp/jn9ofR4fEihYYi1xDFMQBIy9jntgMPxrk/
- B3gO0TwDq3jPU9KjutLstRj0w+e7LEJHjdsYVw275SR245r6W+Ffhr9jK10HT7/xN4m1VtZeEG6s3a7E
- cTnqB5SA4H+9Vx91XE1c5r9pzWV1D9siNpZYEsrXUGhj+xxpGI44SdmOMZwByc8k17t8ftO8I+Hf2P8A
- wzpGj2Nlezm9iCXqLF5wUOzFnI5LYxntgHpjFfFX7T8HwqtfiCG+El/c6h4fki8yRrl5TtkY/MoMgVv5
- 16t+yh4g+Bdp8OvEGnfE3xVquianqUscbwWQkZGjTO1VKoxydzZHuatS01IcdT570SaCbWbq0lRJHlmd
- gpiQpjcTu3HnNdhZaPafaU/0eI/N08sDjNd7qXw++E1/rPja4+Fmqanrf9jaa+pWgvCyr5aFfNZwyjjn
- jvzXi+mfEgNNGCkQxwAA3GKxlvcu7P1j+EMYX4X+FgAFA0+EAAcAbRXXEYrj/gnMbn4Q+D5jj95pdu/G
- e6A967MrTvoBEw700ipCPyphGKEAyin0hGTTuA2il20UXA9UpadRWZYmBS4xQBml21ICUq0o4paLAJj3
- pc4FFKoyaAPzK/apvre2+NvipJJURxcgkE9Mqpq5+zzoWjfFjwt8QvBmqXLDRrqyhuLiS0bEqOs6eXzg
- 4BbaOh/DrXN/teeEm1L4+eLbj7TsEsyfLg8YjQf0ryDT9Q8QfCq3vrvw/rtxpst6scExtm2llEqkA+2a
- gpH1Xd/8E2vBWnnF1dayoDtFxdRnBUjI+561Af8Agnb4AGCL/Wxjp/pCHH/jlfN3jT9qH4rQ3d1GPHGq
- 4W9lwDID1VD6e9cyP2pfitk58b6oVyP41/wpWk9Quj64f/gnd8Pxn/iYa5kjaf8ASUHHP/TOuG1r4DeB
- vg5oWseJfDd9qU2qppV2kUd8waLZIGgkYhVGSA0mORyAeRXgaftTfFbeR/wm2p7d3QyDn26e1cdcfFbx
- p4ltf7MuPEV5cRXVuyPEWABy7MVPHPOT+NXHm7iZseFfC9leeEoUuohJId25+CwOT0P4VA/w4ZHcQ6g4
- j3HAIJx+tYnhPxxcaRa+XcR+fa7yCR95TgZx+Nd5F4t0q5jDi6C+zLz/ACpFLQ5bUfA0trp91IdRd9kb
- PtIPPB964AMQ/wA3zD0r17V/EWny6TexpdKzNC4AGeu3pzXkAyFwRhieuOa1gRIC2MnbkH1r2r9jlc/H
- vRNowPJueP8Ati1eKOWHJPFe3fsaHd8ftD4J/cXP/olqGS3pY/RZ06/WoTH7VoPCee3NQPEQaRRQdPao
- Xj4zWgyeoqJ4t3SqJM8p7U3ZV4w8dKjMR9KYFTy6aY8nirhhHXvQIge2aaEU/J9qURVc8o+mBR5PPSmB
- XVOOlSLH7VOsXtUqRe1AECxn0qxHHUqxc9KmWIelAEaJViOOnRx+1TpHQAiL7VMimnxx1YjjoAjRT6VY
- RCeacsZ69qmRfSnuAiLgVMik0InNTIlQAqDHarCLk01E6VYRKAFReasxrTEj5qwi0mWPQVPGtMRanQVI
- DguKcvWkqQLmgAC5NSquD1pFWpFGTQAKpzUgXr+XNKF7U9UoA+O/+Cnv/JEvD5Odv9vx8f8AbCavzHBO
- DwQCOPzr9O/+CnwK/BHw8fTXo/8A0RNX5hHhh82f5U0Jj1xhlI5rtvh/4q/4R6wu4/K3+ZIGGQT0FcR9
- 89ePQdq9V+Dum2l/pmotPbQyssqgb0B/hNEhIc/xUKOT9mH0Ct06/wBK2tF8e6dqsJV2MEwBG05wf8Px
- roD4b03j/iX2+cY/1QrnNf8AhrY6gxlsm+xXC4OEGEb61CKPZv2R/hzp3xb+GnjrwRr3mnTJ9btL+3No
- wjkNyxZEBbnC4Z/yr1lP+CeHw3WIZGqA7njI+291OD/D7GviD4ffE3xR4N1q6tdD1u80wC+gaQWspRZG
- Vzj8eP1roNY/aG+Jlu/lp4810D7RcdLsjpIe1Jp30ZasfZVv/wAE8fhcW/ef2wVHGBfcf+g1cj/4J3fC
- WRwqprO49Cb/AN+f4a+FB+0d8UCvPjvXg3/X23+NT2v7R/xQ+1Rf8V5rvDc/6Y1TZ3DQ+v8Axx+zn4N/
- Z78I+NL/AMMpevrEulR2c0d7L50RtriRFcYwPmwUI9OTXybYeF9M+1JmwtvvDJEY6fU/zrN1v48+OtUu
- L1NY8RalrFvPaQrLBdTl0cDaVBHfBArL034mO0yGSy2gdlyf61r6mbsz9XfhDCsHws8KIgAVdNgAAGMD
- YK60iuS+Dsv2j4U+EpOm/TLdvzQV15GKokjIzUZFTHpTGFVcCOkIpxFJSAZg0U+iiwHqmKUClorOxYUU
- UoHeiwC4owKKKQBgUDrRRih3A/MP9rbxDY6f8dPFcE82x1nTI2sesaHt9a+efFXiCy1fTXjtJTI6sCQV
- PHzrz/KvoT9rvw/bX3x48VzSlgzTR5AI/wCeSCvJNL+Cur+OIb6PwvZ/a7m2RJJ1aZEwhlRR1x1YgVns
- 9Sjy7xmv+m3gBGftspBHptSuYOGdhnIJr6E+J37JfxS0K5Zrvw9FAs93KF/06DrtQY+/7VyDfsr/ABPC
- q48PRlTg5F9Bz/4/VXQanlcYHmrkgKDjBFR6LPHZ6hYyTttURsBnIHVunbvXrMP7LPxLa6iQeHkLO2AD
- fQHnp03/AErnb34AeMtMskub/ToobUWzu0n2hG2ASsDwGPdSKpO6Je5d8GaBYz+FwksKS7nYFmxn8DVn
- /hALKNn8uV1XPAI6Vxng/VNX0fQ/Pt90sPmHdFIu4dO3pXaWvjmC4g3vazI/dQQefzqCyjrfg+0sdIvJ
- 2uCu2FiN4wDwcAe9ef8AhzwrrnjPW10fw/pFzq+rMjTC1tF3OFA+ZjzgDkdcc9M16Lrnim01DRryB7WV
- g0TffAwCF4Oc1wXgrx54k+G/iKPxB4W1RtM1VYmgeYxrIroxBKsDkHoD0PNax2IkY8sctrLPBcRvb3EM
- jRSwSjDxODhlYdiCMV7f+xchb9oLQwDkCC5P/kFq8NvtRmur68vdRvDdX95LJc3FxIcGV2bLN+JOa92/
- YmRW/aG0LGcmC6Iz/wBcXp9CT9JXi5Pfmong46VpmIntTPK9RzSKMl4KgeDFbLwc9Kia29qdwMZoyKb5
- ZrUa256U37PVEmb5WRSeVjtWl9nzzig29CEZwiyelL5Rz0q+Lf8AGl8iqAorDUqxkVa8jn8KcsOKAIEj
- OalWOpVi5qRY6AGRx1OsdPSPpU6RgUAMROKmVcU9EBqRY6AGKlTxx05I6njjpgMWPmp0j5pyxc1MkdQA
- 1EqdEpyR1OsfFACRpUwXrSolSqlIYKtSr0pAtOHWpKFAqVRTVFTIlACqM1Kq0qpUirQAKtSBaFFPAoA+
- OP8Agp+yj4I+H94+X+3o84/64TV+YTttH9xTnkjtj/6459K/T/8A4KiAj4IeH8ZP/E+jzjp/x7zf/rr8
- upL63iuRG8g808BSeevC4HJ/r+FNCZrP4a8Q2vha28TT+HtSg8MXkxgt9aMDfZZJBwUD4wRkH8vaut+H
- PiW40W0uoLaOORpHVyrk56Y/KotU+N3jHWPg5pXwuvNUgl8HabcCeG3FuolOGZlVpR1XLHsW/Cui+CVj
- A9jqdw0KvceasYc87V64/OhiRLcePtZjGVtrY8ejf41e0r4pWksbR6lA1lPjqq5Rj/jXbmGPALIuPXaK
- wta8G6drQJMflTdQ8Q68jH8qlFHnWnWscHlyBV/0jVVfeeuCycVi6+DvOWO37RPs4H/PQ/jXc/B74P8A
- iv4o6rfrodoLqOy1G2gdZZ1iUO0hC43Hvtrt/EH7F/xT85QNKsmBubgBjfxDnzT6tUu1ylsfPAAYnOSM
- damtQv2yLAyM9M817cv7FXxUPI0rT8Y/6CUPH/j1JZfsb/FE6tBbLpNiZWbKj+0YsHHXvTuris7Hm/h6
- 2in8WLHLGsga0QlXCkH5Mj+Qr0S00OwW6T/QocBuAUHrUXi79nf4jfCx7/Vr/TraH7BZW0khS5SUhZCi
- g7R15cfnXE2vifxQZFAAJzwRB16flVEWP1l+EqhPhf4VUDAGmwDAGP4BXVHpXI/Btnf4UeEWk/1h0u3L
- fXYM12BGc1QiOmkU8jFJTAiPFJipSKaVouAzAop22ii4HqVAGaMc4pw4rJlhiiiiiwBS4zSjpS07gJto
- wMe+KWjAxSuB+X/7X2rva/HzxXEIgVWaPB3df3Mdav7HmrPfar4wDRbNlhAQc5/5eohUX7WqKfjr4oBV
- SfNjzkD/AJ4pWl+yYI/7V8W7VQH7Bbn5Rz/x9RVjJGi0PsD4vW0E81uJ4I7hEu5mVZUDAEbMEAjiuDDI
- UCGCBgOB+4T/AAr0D4sf6+L/AK+Z/wD2WvPBz27VgbWFhjj+0ROYIQyuMMIgCPyr5j+LF8bH4e3koRWZ
- NGuHHPX/AEqT/Gvp6H/XR/7w/nXzF8Soo5vBVwkwBjbSJwcn/p6kz/SuinqZT3PmzwBfQX3h8Abc723R
- k1tjRLHJYW6BjycA4rifCnht7vw+ksE3lSI52kH0J9K6GzttajhKSTsSpxk7Tn9KpkljWtHtI9Iv2S3Q
- EQOc8/3a8RAJw/XHr1zXr+sRasNLvvNk3J5L54HTbXkKRg5PUggnt61rHYiR3vwf+MSfCJvFBk8K2Hik
- 63ZLaI15gfZiN3qDlTu5HHQc1y/w58ban8K/EWkeIdKlC3unSiTnhHU8MjD0KkjPb6gVkNGGXnBBXPb2
- 96hvMCN8Hd1FNEn7HfCb4jaV8X/Aum+JtIbNvdoPMhP34JRkPG/uDx79e9db5WR1/Gvy0/Y2/aNb4K+P
- xpmsTEeEdZZYroMcrbSHhZwO2OjHuOvAr9WYlW4hSWNhLG6hldWDBge4Pv1pFGcYaY0Fahh/Go2hGelA
- GS8ODUbRH0rXMAxUbWwqkKxl+Tx0pPK7VpfZgKPJpiM7yfagxYHSr5hpDBkdKoRn+V7Uvl89KveTjtR5
- XtQBTWPHanBDVnyzSiHdzQBCq1Mik/SpFhx2qaOL2oAYi1OiZp6Rc9KmWKgBipUiJzUix4xUqJTYDUQ1
- OiUqpUyJUACLUyrQqVIo/OgAC808ClVDUipigqw1RUirTkWpAvNSMai81YjWmqtTIOaQCqKkApAOaeBk
- 0AKo46U7gDJOB6+nr/T6Uqrx/wDXr5L/AG8P2lv+Fa+GP+EH0C7MfifWYf8ASZYm+aztSSM8dGf5gPYE
- 8EDIB8x/t9/tFj4teK4/DOiXCv4Y0O4K+dENwubkAq0n+6uSF/E14x4O+MXh7w18APGHw9u/h/Yaxreu
- ztLb+JJ3QyW4YKB1UtlCuVwQPm55rhdYKtZRjGSrDo2QflPQ1jA5BOSWqkJixv5aqG5IGG5616L8MbXU
- bjS702MksaiUbghAzxXnYAYD1zXqnwh1K20/SdR86XY3nAjIzn5aUhI15dI8Rk5S8uV+kn+RVWPxdrug
- l4NQt/tX9x5CVbv3Gc9fauok8WaUhG68UHthSP6Va+0Wer2pwUu4cZIznHPP0qdij2D9gDUIL2fX1jZR
- KNa0zeq8Y+dsfyNfXviO4dZRgqQbi5IDAHH70+1fG3/BPXR5bLUvFE3ylZNb0tQB/syuf/Zq+xfE2BMM
- dPtFz/6NNc89WaxM0X8qnIK/98L/AIVPpUpfVrRyse7ePm8tQevqBWeetXdH/wCQna/9dF/nUJ6ldDzj
- 9p9v+JX4u5GP7H03/wBGQV8c2gRZU3YHIOa+uP2t9PbU/D/jO2VghbR9N+Y54/eQV8JWfw+uFmRRdgZI
- 5LH1rquYs/VL4TjHwx8LZH/MNg/9AFdXXLfCGDyPhX4Sj67NLt1z9IxXWla0RmQ44ppFTbeKay0wIaKk
- INJ9aAGYop9FAHptFFFQWFFFKBmgBQe1LQOKKkAoI4/Cig56+1ID8xP2w7Hzvj34qfft3Sxdv+mEdQ/s
- sa7ovgfWfFE2s6tDYx3VjDFF55I3MLiNjjr2U1Z/bCWVfj74qHG3zItv/fiOvB5HvQ3ylQB0PpWbLR+j
- XxJ+PHw+1eeI2fivT7lfPlc7GOQp2kdvQGuAuPjd4Ds5YYp/FWmxSy8IrS4LEDnFfD9t9vaTE7IEHPy1
- yPiXT/sXjXRrt5d0cr7cN/DjGfz6VHJcrmZ+hjfHv4e2dxCJ/FunRZIba0uDjIJ7dMV4J4/8W6B4m+H9
- 1b6dqtvczS6XNCpR+rm5dv5V82/EX7EDZNEFE+5slTjjHQ/jV7Q5L8+D7drYbywYbDzgc/8A161jGwm7
- lbwTqE+meGk/cmZPMbIHX+R/pXTwa/bzIX2yLnsRXN+AdShs/DoWYMR5zZbHHUV00c9nKoZPLKk84WgR
- V1rWYZNHvkG8boHHT2NeKuCFA5Y4z9BXtetC3bSL4KqZ8iTnH+zXiQf5yAcfwitI7ESFMhb7xPbGKgvF
- xAxOBjrU5VcEc/KACfxr0X4C/CIfHH4hx+ETdPYTXVrcyQTqeBKkTPGGH90kYOO3viqRJ4tdcHn8f8/h
- X6Qf8E9f2lv+Ey0EfDfxFdBta0yL/iWTyH5rq2X70ee7Jxgd1P8As1+efjTwvqXgjxLqWg6xavZ6np8z
- wXEEgwUZT/L0Pcc1V8K+KNT8F+ItO1zRrqSy1SwnW4t54jgq45APqDzx35B4p2QI/ex4jk5GTnr3J9ai
- MJz0rz/9nD43aX+0D8MbHxHZFIdQjAt9Rs93NtcAcg5/hPUeoPtXqRtsEjaQAe/X8fepKMow+1MaH2rV
- MHPSmtb8dKAMlofam+T7Vptb037PVkmb5R9KDFgdK0Wg56U3yPahCM7ysjpSGM56VoGHPam/Z6oDO8km
- nLDxV77PjtR5PNAFVYj6VKsZzVhIqkWGgCBUOalWOp1hxTxHRcCJUqRV5p4QelPVfapARFzUyrgUiqak
- VTQAqipFXmlValRaABVqQLzSolPC0FDQO1PVaXZT1SpYwUVKgoVakC80gAcVIopoXn1pl3dwafaTXN1K
- lvbQIZJJpW2JGoGSxboAAMk0AcL8dfjLo/wI+G+peKtWbeYh5dpafx3VyR+7iX8cE+gBNfi94v8AHWqf
- Ejxhq3iTXLnz9U1GdriaRjgDsEA4+UKQAvPSvTv20P2lZ/2gfiY6afNLH4R0hmg0yHoZefnnYdmfoPRc
- d814lpgWFhk5yflUDaB19sDp09qaEy7qQJtI2PLl+xzjistyVTaQM/rXtPjT4Eaj4b/Z30n4i6sHtf7W
- 1RLLT7EqBvg8qRjM3fLFFCjvg14qAhLnoozjIwRVEjc5B29vWvU/hFYQXel3zTLkiZR8p9q8rU7Qp5z9
- OK9O+FEU8+nX5ilEQ85eAfapY0d4/h6xYANFnjpms6/8JoELWkph6Hbk89ad/Zupkgi/Kr6bj/hUyvqt
- rHiQrcqRjPcfnUIo9L/YU+JOh+BrrxIniXVoNMi/tWxkjaYH5lR23nIXoBj86+ntc/aH+HF7dRxweKrO
- RmnnAwH53SEj+H0r87/AOu28H9q204KyC6eT7vG3oR+dYtxE954gi8i5CMbj5FBx3NS4plJn6I6j+0D8
- PtIEf23xPaWxf7u8Pz/47UmjftKfDQalbSf8JdZFFcEkB+Of9361+evifRfJ1bTV1KczrdOIzk5C4Izy
- ePyrqYv7E8OIiI0FvkjHzbnI/CpVNIbkfVn7Q/xt8GeItK8Tf2Lr9rqctxplhBAkW4eY6PCXHI7bSf8A
- gNfKdr4xZpARZODnOC3T9KnHiPSydv2lSw9VP+FW7bXdOWVWMyYB5G09PyrYhn6Z/CRjL8LvCjlSC2mW
- 7YPvGK6wpmua+EYEnwt8JOv3W0u3I4xx5a11hSqIKxQimFTVkpTCnFMCsVNJ0qcx00rigCKin7aKAPR6
- KKKgsKcBSAZpw4oAKKKKVgCjOAc+maKKYH5pftr6fJpfx41p5JVb7VHBOgH8K+UE5/Fa+eZZpcgK61+i
- n7Rv7Imr/Grx4PEOm69Y2EbWiQPBdQF23L3BHbFeSf8ADuDxQW+bxfpIHbEEnT6Vk0UfIO6c5DSpjOeK
- t+H/AIKaz8RYvEXiSy1G2+weFrVNQvYbgsGMZbGI8AjPyseSOlfWyf8ABN3xIhP/ABWWmYPY2sn+Neq/
- Br9ji++G3g74i6Lfa5Z303inTxYx3FvCyiAhZBuYE88up49Md6aiFz4B8CfAHxB+0J4hm0PwebKG90+A
- 3Vy2oSPGgj3BQFIBJYluw6Cm+Ofhdr/wZ1a98H6rLaS6rp+BI9vIXhbeodSrFVyMNjkZ5r9Gv2X/ANlu
- 9+AWva3qV3rVtq/9oQRwwpbxMhQBt3JPXPy/lXPfH39jG9+MnxOfxTB4jttMtXjgSS3e3YsSgCk5Bx8w
- AFMk+CfG3wl1T4Gas3hjW2t7y5EUdz5trkoyyorD7wB45H1BxWDC9vs+VNoJzgrX6L/tGfsdah8a/HkX
- iCw8RWuiqLKK0eGS2LszIWO7hsYwcV5gP+Cb+tcl/HFjjPGLJj/7PSsx3PjHWZoxo96MY/cv29jXixyy
- n5RwOO3Nfo349/4J9av4a8D+INWfxnZ3C2Gnz3ZiFi2XCRsxGSxA6V+cbsckZGBzzyPwNVFEsc7rIOfb
- JAr6N/4J7nd+0/4fGCf9GuuffyWr5xJJU89/TmvpP/gniA37Ufh/P/Prd/8Aolq0YH0P/wAFG/2Wj418
- NN8SfDNlu17SoR/advCuWubVcHzAO7pj/vnPoK/LfADHkNzxj+lf0ZyWqXELRyRh4XXa6sAVIOMgj3xX
- 45/t6/sst8BfiINa0S2P/CF69I0tr/dtJuWeA+3OV9hj+E1Izif2Sv2hb39nr4mW2omR5/DeoFbbVbVc
- keWTjzF9GTgjjkMR/FX7QaVqNnr+mWuo6bcR3djdxrNBPCQVkRhlSMdsEV/PvHgREZBzjkg5Ocjt+Jr9
- B/8Agm/+04La4j+EviO5LQyl20O4lPRurW5PqeXX/gQ64oA/Qkxe2aaYs9qvmDPPUe3f6e3pTTBQBntF
- 7VGY+OlaLQe1RtB7VSFYomImmmPAq4Ye2KaYeKYimY+KTyuM1bMPtTTDQIpmLmk8urZioEVUBWWOnhQK
- nEY9KUR4oAiCkjilEeanEdOWP0FMCEJTlWptlKEqAIwpzUirzUgjp6rQAiL0qVVoUVIq0AKq8U8LSqtP
- AoBAFpwWnBcU9VqCxoXingdqdtpwUmgBoXqOMHg/5/wr4I/4KO/tQNpdk3wq8M3a/bbxFbW7iNs7I25W
- 2z2LcMe+0+5r6S/av/aHsP2dPhfdawTHPr13uttJs3P+snx98gc7VBBJ9gOuMfivrmv3/iXWb3WNSupb
- 3Ur6Zrm4uJWO6SRjlmP50AVLdD5gZ87euTznv9OcV9JfsW/s3y/H/wCIqtexSJ4W0hlm1GYJtWTukAPq
- xHP+yD3Irw74feB9X+I/jHSvDWhWhvdX1KdYYkP3QDyWY9goGSfQe1ft58B/g1pPwK+GumeFtKCyNCnm
- XV4Vw9zMwy7t7ZAwOwAFAHzj/wAFQbOCw+APhi0tYlhtodciiiiQYVFW3mAUDsABX5egF1GeMHp61+pH
- /BU3I+Bfh8df+J/H/wCk89flsSGJxyByaokdlwp4Pse1em/CZZhpl+I3VcTLyR7V5ipx1Bx6E9K9z/Z8
- +G/ijxxoerXPh/Qb7V4YblY5JLSFnVG2g4OO+DSYItKuqbuZosD/AGauLNcovzBXJ6leMfXn27YruH/Z
- 8+JOf+RK1v8AC2aph+z98SQQB4L1nqOts3BJ+nHQ/lUoo8d0HS38NXuoWus6Zcaddzyfa1W7haMtE4yj
- DIGR1welYt34U8QWeoW98uiXtnBJKHgu57R0hIY4BBIwVPGPrX2/+1b8FvFuseP9DufD3hy91XT49Atb
- aSa2ty+14zINrH127TivoT4tfD281X9la78LWlpPNqMOj2scdvAp8wyxbDtA9QVPFAH5UeIvDGt61PbS
- tbz39jbsJLqe3iLLaxkgb5CB8ozwCeM1d+weHrF4/NkillyAGYljmvsD4F/A3xTp/wAIPjBa6t4d1O2v
- tT0iO2s7O9iKPcOglbaqnr820cV4Ja/s+fEhHVk+HGqRHqS1o5P/AKD/AFpgcUP7H7Rw59QtWbVtKMqH
- YjAHONpOfbp+XvXdn4FfEjPPgfWAP+vJ/wDCprT4H/EMXUYPgvVlJYcvZuFBz1Jx0/GlqJn6FfCi2kt/
- hj4UjlRo3XS7cFXGGH7teorqiMDpUWhWctloWnW86bJobaKN1xjDBQDVwpkVZJVK00rVhkphWmBWKUwr
- VorTClAFbbRU22igDvKKKKgsfRRRSQBRRRTADxRRRQA4HjrS5I4HA9KaOtOpMAz680UUUkAw5yf8KRqc
- R3pCM0AMPNNp59KaRRcDiPjTkfB/xyeuNDvTg+0D1+B7bQz8YyccdP8A9dfvl8aj/wAWe8c9/wDiR3vH
- /bB6/AqQZYjnrkCqExQzAggYI6etfS3/AATww/7Unh7BJP2W84/7YtXzWibQHIx6c19L/wDBOgA/tUeH
- +Mn7Jef+iWpsSP148ojPY1xPxk+EmjfGz4d6v4Q1xAbW+iIjmUfPbyjlJU91bBH4joTXfFMGkI46Uij+
- fT4rfCnWfg54+1fwj4htjFf2Mm1ZlHyTRn7siEjlWXDZzx0rndM1G70y9tL6zme0vbZ0mhmiJWRHVgVZ
- Tzgg9Pxr9e/2/f2V0+OHgA+JNBs1k8aaFEXiUAbr23GWeE8csOqZ4ByB96vyCdZBIyurbhlWD5Vge+e/
- 9aBWP2f/AGOf2kLT9on4ZxSXU0cfivSkSDVLdepOPkmUf3WAP0OR2r3sxjPTHtX4Yfs+fG3V/gD8R9N8
- VaWDLBGfIvrPO1Lu3ON6EeuOVPUEDtwf278D+MtJ+I3hPTfEmh3S3ul6jCs8Uyn16qfQg5BB6EYxQM0j
- H+FMaOrhT8PY1Gyc0AUmjqNo+avmIGo2i9KsCiYz2phjq6Y8dqYYvagkqFMdqbs9qttH7Uwxc8igRW2H
- NOEdT+VQEoAYFwKXb7VJt5pwXigCJVNPC08JTglADAtOC0/ZzTglADVWpFFAXmpAtACqKeBzTVWpQKRV
- gHSnjpSAd6kA4qRgOlZviTxHp3g/QNQ1vV7qOy0zT4WuLi4lbCoijJz9ccDv25rUHbAz2xjqf88V+Zv/
- AAUf/ai/4SbWG+F3hm8LaXp0gfWLmBiRPOOVgB/upyT6sAOdtArnzd+1D8f9R/aH+Jt5rlwXg0aAm20u
- 0f8A5Y2wPBIHG9yMt35x2ryNW3cuABt7Hocjrn155phADBgSFPJPHB//AFV9b/8ABP8A/ZaPxh8cDxb4
- gtQfB+hTBvLkHF9cjBWMdiq43N2PyjnJABH1N/wTz/ZbHww8Jr488RWfl+KtciH2aCYDdY2pwQCOzt95
- vQADvX2QMED0IzQqhVAGBgY44H04petBR8Z/8FS8/wDCjPD/AH/4n8f/AKImr8tkB47DHQiv1J/4KmnZ
- 8C/Dx5x/b8f/AKImr8tTuUAkkZ6U0Jg6hSMFee9fp1/wSjOfhJ4x9P7aH/ohK/MQjdg8Dt06Cv06/wCC
- Umf+FT+Mgeca0P8A0QlNiR9whjml69fyptAOKkdh36/Wlz9aZmjJoGKTj60w84pabQAxxUDr1qy1ROtO
- 5JUdajK1ZdaZtpiKzLUbLVlkqMpTArFDmmlcGrJjpjJzQBWwaKn2GigDsKUUY5xThxWbLCiiimgCiiig
- AooooAUdadTQO9OpMAoooqQCmnrTqQjNADCKbTyCDRimBxHxrH/Fn/HJx/zAr3/0Q9fgVG4DgE9T1P41
- +/PxpX/iz3jn/sB3v/oiSvwGU8q3GRziqExgDALxtOBy1fT3/BOZf+MqvD/Uk2d51/64tXzK67gXOcA9
- Fr6f/wCCcgB/aq8PgdDZ3mP+/DU2JH6/FTTSv41ZZKYUpFFZkHIwBkc5xz/nFflb/wAFF/2VT8PvFr/E
- bw3bMPD2tzbb62hjIFrdNn5uOgkOWz/e3f3q/VHUryDSbC4vrtvKtbaNppZCC21QMscAZ6Cvmnxp+2H+
- zt8QfCup+Hdc8XQ3umahC0M0D6fck4IPQ+XwR1B7EAjsaaEz8cPs+FY4AGTjI5PBr7P/AOCdv7T3/CtP
- Fn/CAeJr1v8AhG9ZmX7DNKcraXbcYz2R+h7BsHqWI+ZvHGjaJpfi3VLDQtUGsaRFcOtnfJGY/Oiz8rFW
- AIOMAjHXPbFctLbvbS/LkEDqmR37/Tg/gKdhH9CJTAxx/T/9VMKV8t/sFftMj40eAh4a1y68zxfoMYjZ
- 5T+8vbYYCS4H8S/db0yD/EK+qCO/XPPHepKIdmaaUzSahexaZY3F5cHZb28bSyuAWwqjJwBkngelc+nj
- 7T5UV1sNZZGAKsNIucEdj/q6pAbzR0wx1iweOdNuL+0tGh1K1e6k8mNrnTZ4kLYLYLMgA4B6/r0roCO/
- rzTJKxjNMMdWioNIyCgRVEZ9KTy+fSrJjpuw0AQbPelC4FTbaNtAEW2lAqUISOlGzFADMU4DIp2M0uKB
- 2Ggdqd0payda8T2OgT2sFyl3NNdBzFFZ2sk7kIAWOEU4HzD86BGxTx1Fcz/wn1icf8S/Wh/3B7n/AON1
- p6D4ks/EJufsy3Mb2sixzR3dq8DqSoYfKwBIww5xigZrUvQdfz7UAY68npwO9c38SPiHpHwr8E6t4o1y
- 4EGm6dCZXwRudv4UUd2Y4Ue7exqbDueKftvftNR/AL4byWWlTr/wmWtK0FhGCCbdOjzsOwGcD1Y98Gvx
- 6eWS/nlmmkeWeVi7ySNuZixJYkk8k55r0D4z/FTWfjh8RdU8U64376d8W9sDlLWIH5I1z2GBn1OT3rjo
- rdFTMoA/2lP0yevXjtnrzVWQjpvgt8HNa+NvxE0rwrowKy3bkzzkZS3gHEkjewDHA9cDqRX7ffDH4daP
- 8JvA2keFdAt/s+nabCI0GOXbqzt6sTkn3NfDX7FvxX+BfwA8Bm61fxbAPGOrgPfMtjcMYE/hhVhHggfe
- JH3j7Ktfbfwu+L3hT4zaNc6r4Q1UavYW0/2WWcQvHtk2hiMOoOMMvI45qWM7EYxgHIHHXNKDikByB/jm
- lpDPjL/gqef+LE+H88j+34//AERNX5ZNlFA3Z56elfqZ/wAFUG2/AjQPX+34h/5Bmr8sS6u3oaaJHqrZ
- yCenINfp3/wSi/5JP4y5z/xOl/8ARCV+YRbCAcMR3Pav09/4JRHPwm8Y/wDYaX/0QlNgj7h7CkooqSgo
- opuTQA49KYKXPFFACEcU08in9hTSO9ArELLTCvGanIzTCtO4iAimFeanK0wrTEVyKTbkZqcpxTSuKYEO
- yipdtFAHT0UUVnYsKKXFG2mAlFFFABSgZpKfSYB0ooopAFFFFUAUUUUrAFJgUuKMGiwHF/GkD/hT3jnj
- P/Ejve+P+WElfgLGAjjOMY6Zya/f34zrn4P+OMjP/EkveD/1wkr8AkjwGOQMelMTHKEZtqkorep619P/
- APBOBc/tV6AePltLwf8AkBq+YRGZPvH5sZz6cGvqH/gnBx+1VoK9QbS8Ixj/AJ4tVdBI/YQjPtTWWpTk
- 9etIVqSjmfiEP+KC8Sdv+JZc5x3/AHbV+Ai4yT05PNf0AfEEf8UH4j/7Btx/6Kav5/VBAzTQmdj8I/hz
- qXxX8f6d4X0oxrqF6sxhWRiA5SJ5Ng2jOW2YGehasbW9GuNLvrm0u4WhureVo5IZl5jcHBG3sc54ruv2
- aPihpfwb+Nnhvxhrdvcz6XpryvOloqvK26GRAFDEDqw7iup/a0+NXw0+LvjyLxT4HsNW06+u49uqQ3tv
- FGkki42yLtdvmIB3Y9M96ok8w+FfxA1r4TeO9I8U6BP5N7p8ocLuwk0fR429iDj1547Y/a/4PfFLSPjP
- 8PNJ8V6NJm2vIwJIWPzQTKCHif0Kn8+DX4XLq0UhLFWJx1Jwf5/rX0L+yH+1r/wzz4ovItRhu73wlqS5
- vLO1w0kUoU7JowWHP8JGeRnPQUPUZ+sPj7/kRvEP/YOnPv8A6s1paaMabaADpEn/AKCK+N/FX/BTH4Ya
- 14a1bTrbSPEYubu0lhi320KrvZGAz+94GSD3rjbP/gqzawWsMP8AwrqZvLQKSNW64H/XKpSGfb3jAf6T
- 4d/7CaA/TypP8a326nvmvgEf8FQNG1/WdGGqeCL3TdPtbwXEtxbXq3DgCN1ACFEBOW5+YYHNegL/AMFP
- fhYw40jxLjt/osP/AMdqhH14Rim18ij/AIKefCw/8wjxNn3tYf8A47SH/gp58Lef+JP4kOB/z6w//HaB
- H1125pD7V8if8PO/hcQP+JP4l/8AAWH/AOO0f8POPhbuwdG8TK3fNrD/APHaNgPrvBxSEc18in/gpt8L
- RwdJ8Sc/9O0P/wAdo/4ec/C48DR/Epx6W0PH/kWgD66pcV8iL/wU6+FjHnSfEnH/AE6w/wDx2lP/AAU3
- +GCgZ0bxKP8At1h/+O0DPrsClwBXyCf+CnPwuz/yCPEn/gND/wDHaU/8FO/hd/0CfEv/AICw/wDx2gNT
- 69/Gub1XP/CfeH+v/Hlffzgr5m/4edfC7r/ZPiX/AMBYf/jtcj4y/wCCmPg6PWtI1Tw/4Y1jU5baOeGW
- C9aO2AD7CCrAvk/JyMdO9Aj7tAx2rA8O8eKPE/GP38H/AKIWviQf8FV7b/onUp/3dVXH/oqtLwN/wUz8
- FLdaze+IPDesaZc3k8bRw2JjuVVFjVQWZihyWU8BfxoA+7dwUZOcAfp3/HGPpX5W/t5ftJP8YfGX/CKa
- Ddb/AAnocxBeLlLy6HDSD1VclVz3ya9G/aA/4KP6J4x+HV7oXgSw1ew1PUD5E95exxx+VAR8+zDt8x4G
- f4QSeeK+ERqlueQr7sZGe/vyaBkcFoSS275V7kZ5+nr0rr/EXw21nSfhzpXjK4g8jRtQvZLK0d875mRN
- zOB02jAXPqDWH4a1TRH17Txrf2uHSFnU3b2kavKIurBAzAbsDA5788A19Iftb/tG+Aviz8NfBnhfwNpW
- o6Ta6BMzLFeQxoioIwi4IYknPfgnrTuI+U2QFyVwVPPUZA/Kv1A/4Jac/BLxIeudefOf+uEVfl6Ou7Hy
- nkGv1C/4Jaf8kR8S8Y/4n0nH/bCGpY0fZ2c8nrRR3NFSUfF//BVPj4D+H/8AsPxf+iJ6/LEHLMc4YnAG
- K/U7/gqrz8BfD4/6j8f/AKInr8rAxUnHXPWmhMepKthhyOx71+oH/BJ//kk3jHr/AMhof+iEr8vd/HTH
- qa/UL/gk+274S+MT3/ttf/RCU2JH3GaSiipKCm06m0C6hQBmgDNHQ02MDxRQeaKLAMoIzSkd6SkSRsMU
- 0jNSkZppXmncdiIimVKRTCtMQ3FFO20UxHQ0AZoHNOHFQWGPejtS03tQAlFFFABT6ZTh0pMBaKKKQBRR
- QvU1QDhxRRRUgFFFFOwHHfGj/kj/AI4/7Ad7/wCiHr+f6I4Kk8D0z1r+gD40/wDJHvHGOv8AYl7/AOiJ
- K/n/AI8kbQMEmmJkquM7gpKjO6vp7/gm4A37VXh8gAt9jvPvenkNXy+WJ7ggcbc4H419Rf8ABN5gf2rf
- DuR/y43nOP8Api1V0Ej9iuo4pMEdKd+tFSUc58QhnwH4kz1/s25/9FNX8/uCMlQTkHIx29a/oE+IX/Ii
- eJP+wbcf+imr+ffGGzkZHNNCYgJEL5UBscZHf/8AVWYoLyHqw9/612ngPwk3jrxZY6IlwbY3ZYeaq5wQ
- rN7eldJrXwGn0SC9mbU95tldmURbc4z/ALR9K9Ohl9fEU3VgtEePic1wuErRoVJ2k+h5kmASWYlehyea
- kVV4yxwOfasqXWWhkkAjz5ZcZLdduP8AGkk10puHkjI3D73ov0rz2raHrJp6o2g/HIJyMHOeacp2nICk
- Y5wayV1xpDLmNVCAsQX6gDOBx15pp18lSBAOeD8x6Bdw7Uhmw5IwcFR9aJAoHTaSDxnPpWOPEBwWWDGT
- 97ORypPpW14ZjPieWeMDymiQNwRg5H0FXCnKrJRjuZVKsaUXObskJnduHAPfNJgsNgUdK6xPh9eOWO7q
- e4H+NTD4c3u7PmYOMdB/jXqrKMW9oHkPOsEnZ1DkULrsIB3AgKMZ59KLkyPPIZid+eeMYrrx8ObwMGEh
- 3DuP/wBdNn+Hl0pLzTkljySP/r0f2Ti0tYErPMC9PaHH7Rtx6DNBbHIGPWupHgdhkC6BIPTZnB/P0pF8
- FozBBd/QFeSPzrH+zq+9jZ5rhv5jmMqqHGeuDgZqW4a4YATKy/JheP4a6j/hAljALXwAPog/xp58ELMw
- Y6nu28cr0/Wj+zq/kS81wy6v7mcfHgJgg9OM00ZOepHoK7mH4XvP9y+B9fl/+vU5+E8+f+Psj/gH/wBe
- t45Ri2uZRujnln2Bg+WU7P0OBBAOeo6HJ5qPGCOSMV3N/wDDaSys5rg3e4QoZNpXGcZ75rzE66W2DyQc
- 7R971yP6VxYnCVsK0qqtc9PB42hjk3Qd7Gqr852Z4xmgfKSQMoRj5TWUuvF/JzENrbDjPTLUq6wHX5UR
- SI1Y7mxu+fGOnWuG53mnISCv8II4xyKZMgU9NpOeM5rKOvGNQFgwdoPB/wBvb6e1Da4QoJgwV5ALejBa
- dx2NJPmYA4DYxzWneGU6dCEHTdgMeM5HWo/CmiyeKGm8sFPKJHGM8ED19q6nxR4OufDegaXfOzYuZGTH
- bIx15PpXbDB1pUnWS0OCWNoQrewlL3mccPOW2UlR5oAwufl61+on/BLQEfBLxKG6/wBvSZx/1whr8vyT
- jLbicdDzX6gf8Es2/wCLIeJP+w9J1/64Q1w9DuR9nHrRR3NFIo+Lv+Cq3/JBPD+P+g/H/wCk89flVyM5
- BzX6q/8ABVV8fATQPbxBH/6TzV+VLM2STke1NEhxmv1D/wCCTf8AySTxl/2G1/8ARCV+XYya/UP/AIJN
- nPwk8ZHH/MbX/wBEJTYI+5x0ooyKMipHcCcU2g9aVaAEzRQTTc0xi5oyKbRTJY+img06iwhpHemkd6kP
- IplSMjIzTSKlIqM9adx2G7aKdRRcLG+OlGecU2ipsMcTjFIetJRTAKKKUdRQAdjSjpSY5pRxSYC0UUUI
- ApVpKF6mhgOooopIApM0E9qSqA474znPwf8AHH/YDvf/AERJX4AFGz8uQR3Ffv8AfGf/AJI/45/7Ad7/
- AOiJK/AFQzKDuPpjOKBMBtER5GScY9K+ov8Agm1k/tW+H2DblNleZH/bFq+X+hyB2wc4/wAa+of+CbSh
- f2rPDwXhvsV7k9j+4amxdT9jtp9KSnk5JpKm5Rz3xAH/ABQfiPP/AEDrj/0U1fz7ltpPG3vnFf0FfEEf
- 8UJ4jP8A1Dbn/wBFtX8+2cvuIJU8VSEz0T9n75Pi3oAxnc0pzz/zyevZ/iEP+Jfr57bJsD8DXivwBJX4
- t+HyOSJJeMdB5T17V8Q8HTtfOcDy5+3sa/S8j/5Fdb5/kfjnEr/4WaC9PzPii+wZrr/rpPx/3zUUrYMp
- IGSZP/QRT74bp7o9QJJiD/3zTJ8B5N2TzL/6AK/Np/Ez9gp/Ahsp5fPP3/8A0ClJUZ/HnH/TOg8buM/f
- /wDRYoYnO4E/TH/TOoNBq7QQvb5TwP8ApnXf/CDQ7zWtSvVsWjLRRRF/MJXgg+xzXBIeFBHPBOe37uvZ
- P2al36zrABz/AKLByfoauFaeHl7SG6OHHQU8PKMup38cEljIbeUjfHgHHA6VcVzjrxVfxFcCDxFeIezD
- /wBBFQR3YIx3r9fwWIVTDxnLdpH4ji6TVSSiaQbNLaQ+dq9qhGVJYkEZH3T6+hANUUucccVNYaotprNq
- zEBTuA477W/+tU5jUX1WfLvY1y2m1i4JrS57h4LufA+m+CNd0/X/AA8NR1e7RktL1Y0GPlGArE/KQ3OR
- 1BxXB6N4e03StQhuLqzjvLeNt0kfC71HuK1IdLtr/Rl1AXUsDyRGXbgfL6Dp/nFU9OsY73w7DqJupsvb
- mTYfXbkjp/nNfib+tT3bP3aLw8bcqQlzJonio299o+jR6ZYSxgBHYyHcpbJGfXitKLTNNjjx9mgOBwPK
- UZHGO3WsvwloVtJ4UtJIbuRURmHIGfvE0nhqQ6pZR3RumAJdCuOPlbb/AOy1PLiVs2OSw0tWkc74jtl0
- 3XIYkIberksIwmQWBHA44HH4U1zlOSelZOt+Io9T16GJAQ8auGD8HAOM/jjNae9SO3+c1+wZDJ/Uo8+6
- PxHiOC+vS5NmYviVmGi3wCsw8iTnH+ya+XU+9EecZj/ma+5763B+F942M/6BPj8mr4YjUlojzj91/Nq+
- FzTHvF4hxt8DsffcN4ZYei/7wsPAh6kAR5H/AAM0gbhPoMf9/DTocKIS3QeX+Pzmmwj5YuP4U/8ARhrx
- z7Ac6nblwS2OCBxjzTSTAmNsnnY+P+/opZG/ddSPkPJPH+tpXCFXP+y2B/21oA9S+C+C9+efvsP/AB6v
- QvjKM/D/AMN9wbmbP5CvPfgwHI1Dj5Sz/wDoQr0H4zYHgLw304uZe/tX6FhdMln/AF1PzTGf8j6F/wCt
- Dxtfv4Ibdu4PbFfqF/wS1APwR8Sk9f7ek/8ARENfl4SyrtHfmv1B/wCCWZ/4sj4k/wCw9J/6Ihr8/Z+k
- rU+zj1NFB6mipKPi7/gqoV/4UP4fDAlP7fizj/rhPX5VPjLY6ZOM/Wv1V/4KqDd8B/D4HLHX4+Mdf9Hm
- r8rGyjZYHHfimiRuCoznr2r9Qf8Agk3z8JPGX/YbX/0Qlfl6wz827g9sV+oP/BJz/kk3jP8A7DS/+iEp
- sEfc1FGeKXdSuOwlGeKXdSHmkMRulNpSaaT2oJFJxTd1JmjIp3HYfnNFNBpw6UXEKDikPNFBOKQhGpp6
- Up5pD0oLG0UUUAbtFJuoBoAWiiigApR1FJSjrQAYpaWipAKKKKoApVpKB1pMB1FFFJANPWinEZpuMVQH
- G/Gb/kkPjgf9QO9/9ESV+APYsQuO31r9/vjP/wAkg8cf9gO9/wDRElfgCqF1Y/e+6cDtyaBMC4xnJAxg
- ha+o/wDgmuc/tW+HcnI+x3mc9v3DV8v7d3bqOSPrX0//AME2uP2rdB44+xXvH/bFqfQR+x+6l3e1NPU/
- WikUYPxBOfAfiT/sG3H/AKKav59dpZcA/hX9BXj/AP5ETxJ/2Dbj/wBFNX8+xHDYB3e3emhM9E/Z9Yn4
- ueH1JAw0vX/rk9e0/EHnTtfzyPLn/ka8U/Z/Kn4t+HsrlvMkwf8Atk1e2eP1H9na8Bkfu5uT9DX6bkf/
- ACLKvzPxziX/AJHVD5fmfEt6czXK9B5k39KjuAA0pHPMv/oAp198txc8g/PP/SmzZ3y5PeT/ANAFfmk/
- iZ+wU/gQkhAL84yX/wDRYpD7f5/d0sp+96/N/wCixR2P+f8AlnUGgBhtzjn5f/Rdeyfs0Sw22uax58kc
- Km2gwXYD1968aQg4HU/Lx2/1Vdn8NXxd3mcL+5h/9ArehQWIqKm9Lnn4+fs8PKSPX/G14h8U3zRurpuX
- DIcg/KKx/wC3ILcBZxdGVztiWCNWDHBxksy4+bYO/eo/IMgBAzmqF9D5WqaWCBuadQfbkY/UivuMS6mD
- wlqb2Pz/AANOnicSo1Ve59CRfssfECbaToepIhVX+aOMkKevHm9s+n5d+G+Ifwt1HwP4nTw5q1hq76p9
- gOomK3skOIQ5Vm+aVR8uPzI6V+plvPp02oteovmXcYEAbacpwM96+Qf2yNU8J3Xxui0rXp5GnOgGaxht
- 0JE0qlso53rgE7fXJUdxXx880xTjZyPuVlGDTuoHzFoXhSTXdStrDSrHW7me53mMS2sUakKpduTNgZGc
- AnBwcE4OMLTzLqPjZvDcEMsl7572yxjyyS6bupMgULxyd2MdzXqHwX0yTT/in4UtvEOmXGvaTJLM9xGs
- DXCMqRt85jwTtyQw6lT+lzwRe+BH/a71m5l8OmTwnI00NtphsGPlSBFAPklflwyv/Dxk9K7cNi6s4ydv
- wOXFYKhCUf8AM801HTodL1K+025t9cF5p8rQXMcNlFPsdewKy8n7vT17Vp/DXwHqHxYutUtvClnrV++m
- GMXccunmJ42bqCPM6+/fFVvGnhW50fxnrM1lpz6Zp8uszyfYihiRId/3PK42HaQoHY4Nfa/7GeowXvi/
- 4jquj2nh+8hW2Fzp8EYRhKUzuYbsklduTmvOlj660X5HestwzWq/E+T5/wBn3xT4YiutRvtB1e2gtopJ
- pH+xLgJH8zNjeOAAciuBk8a2UkwWyeV4v4ZJ4wh4z1AY9vev1P8Ai69vL8KviCy2bRSWmiXe2WaMAMWg
- f7h7jPWvxy0+Np5Q/PDEHd1/H3r2MtzDETqKnfQ8PNcqwsaXtLan1FbsL34MzzJk7tPuD+jV8KQqGEBO
- V5h/ma+nI/FutReC7rTYrnFmlrKoQRr0IJPOM9z3r5jAP7oHkDyh+rV5OLwdTC1pTqbTdzbIasZ0pRj0
- GxcLB9E/9DNOiYFIscnC/wDow0QAhIScj/V4H/AzRAMRx4BJZFx7fvDXEfUA7nYF6jac/wDf2muMhzwM
- Bv8A0bT1JCjjnaM/9/qScDYcDnY3Pr+8FAHqvwZfJvlION7ZJ/3q774y8+APDI/6eZen0rgfg0CDqGc/
- ffg/7wrv/jLgeAvDmB/y8y/yr9Cwv/Iln/XU/NMZ/wAj6n/XQ8bC4YDtjnPWv0//AOCWw2fBHxIOv/E+
- k/8ARENfmCEJQN98eoPIr9Pv+CW/HwR8Sd/+J8//AKIhr8/Z+kxPs0Glzzim0ZxUlHxl/wAFUmx8CvDv
- zEY8QR9P+uE1flay5QkEkjPWv1P/AOCqTZ+BHh7gnOvx/d/64TV+WA3AE989KaExucKQQSMnvX6e/wDB
- J7j4TeMh/wBRof8AohK/MMLkf7eeM9Pxr9O/+CT52/CfxkMf8xof+iEpsSPuYHgUpIphalHNSUOyKCRi
- m0UCuBph6U4mmE9qAEopOgoBoGKDinA02gHFAEm6kPNJuHpSFqAFpCc0hNN3UAOopu6igDcooooAcOlL
- SDpSjmgAAzThxQOKWkwCiiikgCiiiqAKB1ooHWkwHUUUUkAUhGaWiqA4z40KP+FP+OCRn/iR3v8A6Ikr
- 8AGUIQATgiv6APjR/wAkf8cY5b+w73j/ALYSV/P8D85wxI6cjpQJil84G/noP519Q/8ABNtSP2q9APP/
- AB43h/OA18vlFXOeq46dPWvqT/gm0N37V/h/JzizvP8A0Q1PoI/YzGc0lOptSUYPj7P/AAgniPB/5htz
- /wCimr+fd2wMd+5r+gfx/wD8iL4k/wCwbcf+imr+fkKrMxPKgVSEz0H9n1tvxe0AheN8nX/rk9e1ePz/
- AMS7XQTj93N/I14p+z+oPxa8P5yfnl6dv3T17Z8QFP8AZ2v9M+XNj9a/Tcj/AORZV+Z+OcTf8jqh8vzP
- iS84ubvGT88/I/Co5us3/bX/ANAFS33Nzd4wPnn7/Sop+BJgY5l/9AFfmk/iZ+wU/gQSDLP9X/8ARYoI
- ByM9j/6KolPzN9X/APRYpSOCeOAf/RVQaAiAjGcDjn/tka9B+DnhiXxNqV+kVwtv5MULFmUnPykV54me
- wbt/6Lr2D9msn+19Z5PNrB1+hpxqzovng9ThxsVKhJM7S40U6XfyWjSeaYjguBjORn+tWxpWn3AR7uxh
- vdv3PPDHb6kYNTa6/wDxP7vnncP5Co1kwMiv1fCRjicNH2qvdH47XqVMPX5qbtY3tO8T6tbRJZ2pcheS
- qTS5IB9A4yBwPwpmsaD/AMJnepe654ch1q6EZiEt2ksjKu7djO7PU4+lZ2i2h1LUWgJOx42yAcZGK7/w
- perommwQNcFSvy+W7biOPXNfK5hUw+CqqCpJn2mV0sXmFDnlWaZzlj4OFleG9sfDzadeAkrcWjXETjP+
- 0HHXkY6VJZ+ELm1v5LkabdiQlijDzFdW5wwYHdkEg59q7oeNliBXzYWbAOC+DnOPxwOaD8QYIpQhuLfP
- Pyhhj+dcdLN6VJNKktT0a2SVq1nOs9Dhb3wNbXVxNJP4VSeSVy8sk3nuztz8zEv15P51Y8P6FdeFZ7qb
- SfD72M9yFE724nDSbTwDh8n7x5PpXaN8RIAhb7TbL2wZO+P/ANVLf/ERbeJioyCQAwI+YH0PUYrF5jQf
- /LlG6yvEJWVdnH6rqmr3enyWOoJdiCaN4m8y4uPnVuo+/jpkfhXHv4L0+3m3WVsLWMkHYpc+/cmvYvHf
- iXwprPwms3tjGPEu+EuI93GG5z2+7XmlrepLGAGB6CvrsnjhsRS9qqaTR8Ln08Zg6ioOo5JmNrGiXlt4
- dvZUs52hNu58wRnbjac89K+XVyTD6Exfzavv69JPwlvCP+gfcdPo1fAMOS1v3OYsfma+IzLHfWcROna3
- K7H13DdL2dBy/m1GxZPk4Jz+6/8AQzRH92I852rwP+upp0Lblt8hRgRfX75pI87Y87Twv/ow15h9gK3+
- rAIGQnb/AK7CmT5EcnUZVuSP+mopzEeXjH8OMf8AbWnTNhXX7uA33T/02oA9V+DB+a+BPPmPwev3q7z4
- yEf8IB4az1+0SdPpXAfBkYbUM8ne3J6/er0D4xY/4QHw1k4P2mX+VfoWG/5Esz80xn/I+p/10PGA3UAY
- z6Gv1A/4JbcfBLxJxj/ifPx/2wir8wGAGduMV+n3/BLjKfBLxJu6/wBuv/6Ihr8/Z+kxPswcUuaQtyaM
- 1JR8Z/8ABU0n/hRfh7Bx/wAT+M/+S89fllMQpx05z8p/zmv1K/4KoHPwK8PgjI/t+L/0RNX5abQ2cgEY
- 4HpTRJEx3E46elfp3/wSjO34UeMhjprK/wDolK/MTpzuJNfp3/wSlY/8Ko8Zd860v/ohKbA+5N2aTPNJ
- 60VJQ8HFKTTAcUuaBWCmnmlJpKBiHqKbT6ZQA4dKWkBwKOtOxItBoNNJzSKAnNJRRTsIKKKKLCN0UUUU
- ihw6U4daaOlLSAfRSDmloYBRRRUgFFFFCAKBxRRVAPzmkpFPalpIAoooqgON+M//ACSDxx/2BL3/ANES
- V/P/AMjsCO9fv/8AGcf8Wi8c/wDYDvf/AERJX8/7EFwN/wAuaBMfjcpJYJjHUYzX1F/wTZct+1ZoPGP9
- CvPqP3LV8tjcyk5BIPAHevqP/gmsAP2rdA6g/YrzHv8AuWp9BI/Y/jtnHvTT1p2c0YqEUc/4/H/FB+JP
- +wbcf+imr+fbqOw56etf0FePx/xQniP/ALBtx/6Kav59TznHKjrxVoTPRP2fv+StaCDlQXlxjv8AunwP
- zr2nx+S2na+T94Rz5+vNeJ/AF9nxb8PZznzJMD/tk1e2+PiTp+unHPlzZ+vNfpmRv/hLq/M/HOJv+R1Q
- 9F+Z8S32wy3WB82+c/8AoNRzDPmfWX/0AVJdwt59zwfvTfrtpsiMQ52nrJ/6AK/NZ/Ez9hp/AiOXln/3
- nGf+2YpcZyPT/wCN05o3YyfKzY3cgcD5AOfz60jA7jwcckf9+6gsarc4HX5f/Rdes/s9ahbafq2rPczp
- CGghA3H2NeUheF4PO3n/ALZ12/wthZri/BGP3cX/AKCa6sNh1iaipvqedmFT2eGlI9c1q8juddupoXEk
- TsCGHQ8CkEvFZ8UJUjA/KrQBxX6hQh7GmoLofj1eSqzuaXhvUYbDXYLi4jeWBMtLHG+xmUdQCBxWD4t8
- Z3Nlq99JbyXEFu6SXMURbeUTOApJ6nkVfs0xLKT0ETt+n/6q4fxgZHdmlj8mU6bLujBztO4cZr4XPP8A
- eUfpXD2mF+Zdt/iDd3E5YSu7vZm8BcDhBnjp14rcg8S6k2nwX32oeU4D4KDODj2rzLTD+9hH/UAf+T12
- ls0v/CLWiGHMPkREPu5JzyMV86fUHp2uX0GoxW5WNWKQ/KdvzZ5zyOvQV+jPwL0Wyf4OeD/tFnbySnTY
- t5eFcsdv0r83NOKSpDlQVyMcdRj3r7F/Z0g8ZfEPwpew23jm80G00gx20MFvZwSjbsJ5JHHb1qZDR2n7
- X9ja6d+zx4smt7WGKVEgwyRqpH75PQf1r85NB1NnRSzZY46mvuH9qr4deK9I+Bvii5v/AIi6nrVnAkRe
- yl0+CJJcyqB8wUH0Py9q+D9FA+VgNvbH419pkDag0fn/ABLCLknbU+gg+/4PXbf9Q+f+T18CW6gtBk8f
- ucn/AIEa+qtS8QanH4WvLWO7lS3FvIvlBvlwQSePzr5XiGJINyn70Rx/31Xg4/ATwmIlOWvM7no8O1lV
- pOK6DI0wIcdAIxn/AIGaIwdkfHARf/RhpyBjFCR6R5H/AAM02MEBCc4G3/0Yf0rzbH1w5o8Rg7c/Jnr/
- ANNaJl+RjgYw/cf89vzpCOATnBHT/tqaJVzEcAZCvkHr/rRQI9V+DXDaiMf8tXxwf79d98ZFz4C8NZB5
- uJcY+lcF8GEZVvQcqTI3J7/NXoHxjx/wgHhvnC+fLnB56V+h4X/kS1D80xf/ACPaf9dDxcKMDOSOmRX6
- ef8ABLrj4I+JB/1HpP8A0RDX5hbiF/pX6d/8EvGJ+CniTt/xPn/9J4a/PmfpSPswsMmjrTDjJoyKko+N
- P+Cp3PwN8PDudfj4/wC2E1flqeB/dP05NfqT/wAFTD/xYzw8fTXo+n/XCavy4YAplSTjvVIki29Tziv0
- 4/4JS5/4VT4y44/tlef+2KV+ZCsAQGHc/wAq/Tb/AIJSn/i1HjH/ALDK/wDolKGCPuKikzzRuqShymnV
- GDmnA0AOopM0Z4oAWmUE0UAKMCjINITigc07CsKT+VJRSZ5xRYYtFFFMlhRRRRcVmbtFFFSWOHSlpAe1
- LQAoPanUylyaVgFHU0tNB5p1IAooop2AKKKKYAvU06kUd6WpAKKKD0qgOM+M5x8H/HBOP+QHe9f+uElf
- gApQscDJJAyOn/66/f74z5/4U/447/8AEjvf/RElfz/lnbgZAHYGgTBXcSA7eQMHAwfxr6n/AOCbJ/4y
- u8P5JLfYrzp/1xavlvptbgegPUV9Rf8ABNgAftXaD0J+x3nP/bFqroI/ZCkoHIoqSjA+IH/Ih+JP+wbc
- f+imr+fZFIB6lccj0r+gn4gf8iH4k/7Btx/6Kav59irbc8j2HemhM9C+AWU+LugFSpJaXHf/AJZPXufi
- 4wZ1NbthFbuzpI5fHBPXJ+teGfs/4X4u+HWyqjfIOn/TKSvW/iv82ga8SOgfI/4EK/Tcin7PLKstz8a4
- npurnFGKdm0vzPD9Z8K+EobqTyL2Iq27n7SD161iXWh+HFVttzGc5PE478H+QrzuVsAjJZsHP/f2kl+6
- /b7x/wDHxXxlTG05tv2SP0all1aEUnWbO8jtNKtluPLuxGJAUk2zDDL3H/jopq6Xoe47p168/vhxxiuI
- adoobmMHAfeDx6MKZc/MZ9uQMy9PwrnWKgvsI6vqdS38VnokGh+HWGTOgxyczgdsfyrqvCuj6Tp5mOnS
- iQuFRyH34x0/SvEZWKmU/wDXX/0EV3nw51ZbH7cknV5FxzjsK9XAYym60U4pHkZlgqscPJqo35HqgUdu
- PapAvFVrSbz1BxVzYT2r7tNSV0fmk04uzHWgBeX18pv5GuD8cH/S5l7/ANmyY9vnFd5bjDy56CJyfYY6
- 1594zkWS8ZlYMp0yXBBz/Etfnuef7yj9O4cf+yX8zndOAMsPb/iQP/J67mIhfCFkx5xFGMflXC2JxNGe
- 39gSf+z12sE8f/CH2qllZ1gjYx5+bGRz9K+dsfVLY72zusyQr0HrX1L+zLrnjrSNE1hfCWg2etQPcI0z
- 3VwIzG23gDkcYr5X07Fy8JABOdvHTqK+rf2Zvixofwv8M65Hrn2xftNwjq9vbNKuFTGOO9TMaH/tN+K/
- ihe/B/xBbeIfCWladpckKNcXMF6rSL+8TkJuOecD6V8UaKcRgY/LpX2x+05+0F4T8cfCDX9I0uS9e6u0
- jRBJYOo4kVjlz90YX/69fEOlN5ZC7gPpX2eR/A35nwXEWskdBrN9Fp/h2/uZ42kiSFtyhgMrjkZ9a8Su
- NU8Mlv3el3SkfdP2nPRSw6D3r1jxlOE8G6upGGNu3P5V8/k5cZPryf8ArkKnOsQ+dRjZorh3DKVKUndO
- /c2JL/SnKrDZTKflI3TZPQsO1MiuIFDtCjxptRCu/kqct/WstHyEB5Hy47/8sqWMbGjAHJMfbH/LM18t
- 7Rvoj7NUkt2aEU9pIEXyXywQff8A72TTYri0lZQ8LsHwvD4PzNn+a1RiZQYuSBmI5H+61JGNpgIBxmL/
- ANmoVR3vYv2atue0fCk209rLc20bxBjkh33dzXXfGQM3gPw0AME3MvJ6jiuL+DJP/CPP7Hof+BV2XxiL
- L4E8Onov2iXAH0r9Dpe9ksn5fqfmVfTPoLzPGwm1ewz61+nH/BL0/wDFlfEnp/bkn/oiGvzG2j5TySR3
- r9OP+CX/APyRXxJk8/25Jz/2whr85Z+no+ySQDSbqQ9aP85qSj42/wCCpHzfA3w+AOf7ejI/78TV+XCr
- 65A2ngV+o3/BUdgnwO8PMc/8h+Mcf9cJq/LnaUTcSdx7CqRI2UEOTxj9a/TT/glN/wAkp8Zf9hhf/RKV
- +ZbYKg5/Ada/TX/glS2PhV4xB6/2yvT/AK4pQwR9wUlG8dulGcmlcAFOBptFIofRmmg4pQadhMWignFN
- Jo2GB60lFFUAUUA5ooEx9ApoOKdSFcXbRSUUtAubtFFFIoKcOlNpwPagBaKKKAFHWnUwdafSYBRR17Uc
- etMApQO9IOvanZGP/rUrjsFFJupRzSCwUHp+lFcx498eaD4I0p31nXbHRJZ4ZRam8uVhMjKvITdjJG4H
- j1FV0ApfGYZ+D/jjjrod7/6If/Oa/n9QbcL93I719QePfjP461DS7+21jx3rcwktJIzbvfOqyIVYFSow
- GHJ618vqQMcqOecdqSdwaHFCOpOM9DX1L/wTcwf2sPD5xjNle8AdvIavltgWy4Gee5rc8JeJNf8AC2vQ
- al4XuLy11uNSIZNPfZNgghwD6bSe3eq6Ebux/QweM+me1JX5e/sIftWeJrr4yXOi/Ezxxc2ujQ6ROUj1
- 67WKMzb4to3MR8+0sRnA61+ntle2+p2cF5azxXVrcIJYp4mBSRG5VlI4II6YpFGP4+H/ABQniP8A7Btz
- /wCimr+fI5AHPT3r+gzx+3/FCeI+QMabc85/6ZNX8+e8Of6DmmtRHoPwAUt8WtA29nkP/kJ69g+LA36H
- 4hByOGI/77FeR/AIEfFrw+F+9vk6jt5TV618WBt8P6+cYI39f94V+k5P/wAiqt8/yPyHiH/keUPl+Z8X
- zADdjd0br/11ps2AsmOmH/8ARgp0g2gkfewcnv8A6ymzkkSk5Jw/X/roK/NnufrsdkLKeJc8/wCs/wDQ
- lol6S895f/ZaSbpL/wBtP/QlolOFmOP+ev8A7LSKFkPM3H/PX/0EV7h+zrBFLFrZkjR8TR/fXdj5a8Qm
- 487HPMvH/ARXuP7OinytdzkZmi/9BNRK6aa3OLG/wTqbqELrF7tUKPObAHTrVlYi1MnZf7Vux/00b+dX
- ItuOtfsWAtLDx9EfieMbVVlNIdry7gMeWc5xyD2rzzxbbKtw4RQFXTpFATpncOK9u8DyTWXiuxvrSJJ7
- i1bzkjkRXVmHYg1k+L9JfVfEF5fX1pJazXkrTyJGEVF3MSQoAwBXwufxccSkfpXDMr4T5ngtjalJ4lYH
- nQ5Fx7kP/wDq/Guygt0j8K2n7tS4hiQkDJIHb869QsvAGjtC3n3BQEqqytIFKn0AHXipLT4Z6TeTxxLf
- rIwYBR58ZyO3AGPXrXzO2h9eloZui2TfukCFGIwM/QV92/sa6csXg3XhPGnF8uGkUcfIPavnfSvhtDIj
- zNdxia3jUIqD77Z5BHbr+lbeq/FjxH8DvCd9caPcmOCaZCyxxoxLHgZLjGOKmWo9Eey/tiWcUfwT8bSw
- mPISNvLW1C/N5ka53+uCMf4Zr81dEMhAfBJPr+FewfEz9qXxl8SPCF9pV1qLf2dcvH9qja3hTeQQRyoB
- PI7+ledeH7cTBTgBVr63KIOVKdmfC8QTUaiPWfiZZxJ8ANTdYkVhpakNtGegr4jCrtDH0P8A6Jr7l+Kc
- e34A6qMcDS0/kK+GiSAB/D/9qFfJXlKvPmfVns5Mk8PcfEMOM8Y29P8ArlRGAGTOTkx8/wDbM0gUAjrj
- 5e//AEyoicgIo4+aL/0Was+gGwlf3OM8mL+Rp9qocwZPGYcbv+BUsAAMLDqGh4P0aiCPJtudufI5PXq3
- SgD2D4Mbj4ebdgr8uMfVq7H4x5/4QPw6eubmX+Vcb8GXz4fYdgRj82rsvjHz4C8OEHn7RL/Kv0eg/wDh
- Fl6fqfl2I/5H0P66HjXUKD3/AMK/Tb/gl9/yRTxH/wBhx/8A0nhr8yRgEZJ4HAr9N/8Agl6AnwX8SA/9
- B18j/thF/wDWr86Z+no+yOnWm4+uR/n8aUtwSevGfr7+lfL37b/x4i+H/wAMbqDwt4tt7Hxhb6hAjWtp
- cr9pRWzuynXG3B6d6kuxyn/BUobfgX4fIx/yHo//AEnn/wDrfnX5dyDauAT9K9G+I/xH8eeNtKt4/FGp
- avfWDzedCL+RzEWKtyM8ZweK85LB3UnIBJz+VNEMbkqQw6981+mv/BKr/klXjLt/xOV7f9MEr8zWG1R3
- 4zz1rtvh58SvFPgeG4h8P67qWlRSSCV47G6aNXYAYLAEA02CP3a7jj6f/q70CvlH9hz45p4s+H0tn4v8
- YR33ii51aSK2tdRu0N1IhjjKhFJyRndjHoa+rs9MnmpKHA5opuR2YU7I9R+dAtQoo/EfnS4qrjE/ClpD
- gdT+tHQ+v0oJYUhPalpp60rAgpQaSiiw7jqUHFNBxRupiH7qKZuopWEdDRRQORSLCiiigBw6UtNzilBz
- S2AWlU0lAOKHqA4A5JxkZHJ6Z9On9a/MfxhPr6+Lta267rSL9tnwBdShQPMbgc9K/TgYOOOa5Cf4O+Br
- qeSabwlo8ssjF3drKMliTkkkioauNOx+b32zxADz4g1r/wAC5f8AGmteeIF5PiHWsf8AX3L/AI1+j/8A
- wpTwD/0J2ifjYR/4Uh+CPgB+vg3Qz/24x/4UcpR+bzahrwP/ACMWs/8AgbL/APFUw6hr3P8AxUWtAf8A
- X9N/jX6Sf8KP+H2P+RK0L/wAj/wpP+FHfD0jB8FaF/4AR/4UlEdz81ZNU11B/wAjLrOf+v8Am/8Aiqy9
- TuL/AFs20Gpave6kkJJhS9uHlEZbrgOTjOB6Zr9Pf+FF/Dz/AKEjQf8AwXxf4VxvxP8A2WvAHi3SkkTT
- R4ebT4pZUOipHb+YSM/P8hBHy8c8c+tDi+grn5c6noU934X1efXbOFL6KGVYxE2dqhDj1zg5r5+hcxyA
- 7gq4yPf6V794ySx1XT72ZdTeFobd1WNCVU8NwR9M/hivAAM5JKqQR2x+lXEUmOyhJByMgnmtnwjcSWvi
- CCaBnRlLgGI4PT2+tYyKWwGG447DtWv4VupLHW4JYXijlUNhpBlR8p6jGe/6VbehHUj8dWn2nxBPeGct
- czn5yZdxAAUfMuMj8/SvQ/CfxH8dNZWsLeMfEaQQRJDFEuoTBURQFRQA2MAAD8K9U/ZF+Avh74/fG29s
- /FVxM9m2mzXeNPBixIrRqPmIPGCeBX6f6R+zj8NNH0qxsB4I0ScWkEduJbrT4XmcIoUF228txyfWotdW
- KPyWvvG3jCfR7yObxVr8ymFwyPezsrAg4DDPTOa8HXhmwR1PSv3T8c/Az4eW/gjxBJF4J0GKVNPuWR0s
- I1ZT5bcgge1fhWo27iAB3AAwB7U4qxLPQ/2fyW+L2gbj8oklJyf+mL1698WNo0DxB3Hz4z/vCvI/gD83
- xa8P5GR5j55/6ZPXrfxWB/sDXwM7sP8A+hCv0vJv+RVV+f5H5DxD/wAjyh8vzPi4nG7qTg9/+mopkpys
- h9m/9GCnyKAGyT0b6/62mz8JJz/f/wDRgr82e5+ux2QsvSX/ALaf+hLQ5RfPLAknzv8A2WkkziX0/ef+
- hLRJgibGWOZcj0Hy80ihzEkyjIH+t/8AQRXpnwn8R3WhJqgt3QeZIu7cM9FGK8zlBHmHGc+aAP8AgK81
- 1Hg15QL0QxSSjzFz5alsHAPP5Gu3CcjrR9psedmCboOx6qmuNPcvLKV8x23N6ZPpW1Fqi7ByWyP8/wCf
- wrzhJ33bWUhwcFehU969o/ZF8H2XxS+NEega9c3sukCwnmNvBcFQCgBHHbkk9K+xq5k8JTXKtD4Ohk8c
- ZUtJ2MbS/FMml6itxDF55CupUjAwQM1d1jxdLq0kbJaRxFE8tFVjgjB/+tX3Zon7JHgy6jMl7Z6xbS+a
- 67BqrOrAfdY8d8Zxg9a+DtettQ8NyXZ/tHxBNajVZ4lnt71lEkYZokhWMYywbAyCOByp7fP1s1p15c1W
- ndn02HyirhY8lKq0vQmh1C2v7cjVNMhnEYyCzMCOfTNOsTpTTlrbRLcyjOF3OwH4V1HgH4f3/wASfhl4
- /n0iK5mn0gGR7vUdauAbdQvmFVj5WQMFcfMQ2TXOfsx+Db74p/EiDSrZYZWigku3iuriWBHVcAjdH8w5
- Yd/4a66NTCVKUpulqjjxFHG068aaqvU6Cw+IOq6b5wjsWZbk7sDeeCAAF79uMe9R+J/F9z4m0q5stQ0F
- jE+JHZRIn3cKDuHO0ZGceoz1rmHs7eXxVeadrE1zBezaxPaWzW2rXawW6rKyqEIcnZj+LbkAZPAr6h/Z
- J/Z+0NLj4g6Xr9+3i1YLmE288l1JKkMbBjsDHDZBODjuDXlTx1COnsj145fiOtZnx3rXhq7BeC30q5s4
- Wkyd6ux4PuOK0LRV0lhBOhglUYKvwR6Z/nX3n8bv2e/B+hfCLxdqNrpFvbT2OiXUw8sSZWQJlW3FjjBU
- 8Yr8vrHWJ0u1QyP77jjnvmvVyvMIxqOChZM8fNsrnOlzym20ewfEnxnqt58NtV0/fGbT7J5ZATBwB618
- ss2MgZwCQAf+uQr3/wAS/av+EA1R3tZVja1JEjIQpHY56eleAEZ+mTn/AL9VxZsqPtVKj139To4c51Ql
- GfRggG5SeT8v/oqnw4XZn72Y8f8AfBpoUkoSOTt/9FUluxWSI5zzH/6LNeGfWC26h5IB1y0PU+zUW4z9
- nyxz+5GB/wACpIT/AKjcO8PP/ATSW3/LAggLuh/DlqAPZPgwP+KeY4PUdfqa6/4wkf8ACCeGj/08S/li
- uO+DJLeHmHYEdfqa7L4v8+A/DbZxieX+Vfo1D/kSS9P1Py6v/wAj6Hr+h44RzkdK6vwfq/iuw06dNC1v
- VtNtfM3SR2VxJGrNxkkKeeABXJjJIZl7da/RP/gnD8PPC/i74Ra/d634f0/VblNaeNJbuBZGRRDEQFLD
- jqa/O2fp6Pi2fxb8RY1JHi3xFxzk383ykdf4q5ieTUfEniKW812/nvrydv3t3ezM5YgYXcxDHtj6AV+1
- LfAv4dSuC3gnQmII+9Yx9PxFfKX7a/7NHg3wt4JvvGmjQT6fqVxewxG2gRfssaFSGCxquR0B4PUmoZaZ
- 8E+LNQupdLtLeW6kkjhZQqPKzJkKRxnjFcicNvOQpOeFruPG17Nc6Xa27TRyxxSBcRxlWGBjnj+tcKgK
- APxyOCpzVIliNkOeOOmK9R+Dvh2DXNN1LzLcSzLIAjM2FBxwDXlz5Az/AOg16p8HbO2m0y/knu2gdZlw
- ivgNwOabEjrNO8G6xoGo6bfNdpYanEd8M2mSspQdByDnPXpXb2MPiab73iTWWJ/iN7L/AI19I/so/Bbw
- x470EeJ7957u4sdQaIW5Km3cKi4DoyncMsc8jtX0p/wpnwKDn/hEtIB75s0z+oqLFLQ/O2Ox8SAf8jDr
- OD3+2S/41Mtp4iHXxDrGP+vuX/Gv0OHwd8D9P+ET0j/wET/ClHwb8DZ/5FPSP/ANP8KVh3Pz1Sy8Quf+
- Rg1n8LqX/GpBYeJMf8h7WT/29Sf41+hQ+D3gcdPCmkj6Wif4U7/hUPgnH/Iq6T/4CJ/hT5Qufnp9g8Rl
- SDr2s+2LqT/GvuX9mGO5i+DejpeXE91OJZ90tw5aQ/vWxknk104+EXgodPC2lD6Wqf4V0OkaPY6BYpZa
- baxWNmhJWGBAqKScnAHqTmmk0JsuDgD+tNPWnUhGapkoSkJxS0jdKADIoLU2imOwuTRTd1FAWOmJxSA8
- UlFZ2GOyKKbQDikkA6lpM5opsB9FID2paQDh0paQdKWgApVpKVabAWiiikgCmEBsgqGXBBB5BBxnI79K
- fTfwqgPKfjh8NfCV78LPGN3P4Y0iW7g0O8MVw2nxF0Ihcgq2Mg8ZzmvwkSQIcMcjPQ55/L+tf0AfGY/8
- Wf8AHA/6gd7/AOiJK/n/AI+MAAF880Ax33cld4QZzX0l/wAE9PD+meJP2odCs9V0211Gxezu3NteRCVM
- rCxB2nivm05VTk8nsK+pP+CbX/J13h7v/oV51/64tVdCUfr1pPhfR/D4T+zNJsdPKjaPssCxEAnJAKgY
- HNafAAA6ClyaSpKMHx//AMiJ4iP/AFDrn/0U1fz6/NyBnFf0F+Pv+RF8R/8AYNuf/RTV/PkcrISCPTGa
- aEz0L9n9x/wtjQQQRhpD/wCQnr134sZ/sDxAV6fP/wChCvJf2fmx8XtByf4pBjt/qnr1n4sEr4e18Zzt
- DDj/AHhX6Tk3/Iqq/P8AI/IeIf8AkeUPl+Z8XOCRJ0J2nOf+uopZRlJCPR+v/XQUOGxKT2U/+jRTZPuy
- A9cP/wCjBX5s9z9djshZiAsnP/PT/wBCWiVtqzAHvL/7LSS8iX/tp/MUswUi47Eeaf8A0GkUOkJAk4IP
- 73/0EV7T+z1N5Sa5n/ntH/6DXi0mNkxJB5m7/wCyK9e+BcpEOtAYwZU7j+7WdTbTc48X/CZN4gj83xXq
- hx8v2l8Y+tejfs6eLJ/hB8S28US20NzA1jPbBFvI43UuAA21vcd+K8yvr5f+Ej1HcwH798nj1Na8U5KK
- fKc9Oik8/wD6v519isPTxNCKnKx8dDE1MJWbhG5982v7a2l2UgWXSDLKoaNv+JlAwLYJLfL9e1fGx8T+
- M9YudU03UI7a90a41Ka9sYRqixpAHLHGMYy3zZPUE8Yya5uFmBLfZ5CBliQjY75/l/nBrbtHfDf6JPtU
- /MRE2B156f7LDn0PoaiOTYdv+Ia1M9xcVpROp8H67qfgvwN4ztLMXmk3GubAsVlqNtLAE2rGwddu8ZXe
- Pl/vnpWP8JJb/wACeJrbUraee2URsswgu2tXaMj7u8KT1x0GTtxUwnFuAtxE0LEbirqUOOhxn0KkfhU8
- dzHzyD2PFfQ4fJ6FOjKCle58vi8+xM60ZuFrFPxG9zdaldXsOmaO/m3UssclzqcrTgOxOZG8rG7BILdS
- Wz2r1b4A/Hm5+C1x4qlOn6Wun6tLFLbafb3U0z2uEO4FyoJG456d+9eZyrCfmJH+8DyP8/1rPlvLVHx8
- gOckZHHIrz58P4aO8z0afFGJktKZ9FeOv2rG8T+CvFekWunabbz63ZPayM087jLLsyARjPzHpXxufAk1
- peAGSKcdEeDftx26gHP4V3Av7QYGV9cBun+f6U4XtsQdpTPU7O3PX+VXRynDYf3lPozPEZ3jMVHkdM9D
- +J37v9nXUEycrpKDr32rXw1tO7Lc9e//AEyFfbfxOvUm+A+rBSGH9lqVx0xhetfEm4BlAB685/65V+eR
- u6s231PtsnX7m9hQ24L2OV4z28qnRBTs29cxf+izTYzny/4fu8j/AK5UQkZXB7xdf+uZrU90IDl4Rxkm
- Ln0+U0tr9+2DcfNCcj0yeaW2IeS3HAyYev0am2q4+zn5iAYen1anYD2H4MgDw82PUde/Jrs/jApbwD4b
- 9p5eB9K4v4NN/wASFuvUdf8AgVdp8XyR4C8ObQcm5l/lX6LR/wCRLL0/U/LsR/yPoep45gqoJ7ccmv00
- /wCCYWV+DPiPsf7dk6f9e8NfmUQFGecgd+n41+mX/BMIgfBbxF1z/br9f+uEVfnbP09H2PnHtVe90+11
- OHyru2huos7tkyBlz+Pepic0obFSUfD3/BS7wX4f8PfB3Q77TNEsLC8k1xFkntbZEdgYZickDnkDvX5s
- hsMwIJUg/gM9a/UD/gqG3/FkfD3OP+J9H/6Imr8vdxjf765PrViY0EDOVI4r9GP+CYvgzw/4j+HHiu71
- PRLDUrmHV0WOa7to5XUeSpwCw4Gea/Oggupb06iv0t/4JXn/AItb4x4/5jC/+iUpMSPtay06002Ly7S2
- htY879kCBFzjGcDqasK2MD2ppOfpQOtKxRJuyacD2pnSnA0gH0oNM3Uu4U7isPopnWlzTVxDqKQHNLQw
- sIR3pKcelNoQDDxRStSUxjcUU6igLnR0UUVAwooooAUHtS02nDpQAo606mjrTqkBw6UtIOlLQgCgHFFF
- NgOHNFNHWnUbAFNPWnUhFMDjPjNj/hT/AI5B6/2He4/78SV/P+Rk/J95R0r+gD40An4P+OMdRod7/wCi
- JK/AFSWIw3zHgjjjv+dAmKFKxZLYDH1NfUf/AATYH/GV/h85z/oV51/64tXy1w3RVzg5Jr6l/wCCbMYX
- 9q7QME/8ed6ef+uLU+gkfsdRRRSKMLx8P+KF8RnnH9m3Of8Av01fz6EgHAAB9SK/oK8f/wDIi+I/+wbc
- /wDopq/n0xhskHaaaEz0P4AqP+Ft6Avq8vP/AGyevW/ium3QdfxyBv8A/QhXkX7P+P8AhbugcnmSTr/1
- yevcPiNos+s6TrNpaqHnm3KgLbec+pr9MySDqZVVjHd3/I/HOJasaedUJydkrfmfDUpIVweOG/H97TZO
- kvPZ/wD0YK9JufgZ4ph80G0gJwf+XhT/ABk/1qrcfBjxKkcitbRH7w/16/3s18LLLsUnrTZ+lwzfAtL9
- 6vvOAuBhZvX97/MUs4C+fk4+aXjP+7Xdn4Ra6sN0JbRTKxbyys64GTk5HU/hUM3wp19vMP2eP5t5z5q9
- 8VH1DEr7DNlmmCf/AC8X3nGSgu02AduZu+P4RXReGdb1HR4rw2Fw8IeRQwTB7D2q3L8LNeBfMEfJf/lq
- P4gB/St/w94Ju7KG7F7EsXmMGTY2e1a0cBVc1zRZy4nMcN7NuMkyLStPfWPLnlW4lu7ljl0I+Zy3Cgep
- 44r76m0zwj4N0Hw+3ifX9Q0a8v7OHbaDRZpN0gjiDIpUYJBjOe/NfHVubvwv4QttQt4m32uqRTIzKpj3
- AgqD3/hPHSvqLwj+1n4h+IXxA8IR6h4JGoiBXEVlaxkzSyMuPMTdxwB0JwM9axx3tKUuVPQeGcZR50r3
- OvsYPhZrVlOw+I0dmWEkTxXVm9vICUlXOxyCB++PX+7VSHxL8Kta1DVbex8V61fsJJ45GtNJkZRua6XO
- eVx/pnHrsHrXzl+1R4qn8Q/GPUpZdAl8MXESLHJZycO3HLkLkchs8dareKdQuvDOmeHrXRpprSzmtw7X
- MbbS7kZPI559682VSouVRe561KNOUZSktja/aK1jTtY+IsaaEdQv4UtigW8hNvJJM08zlduOQPMAB715
- 5PeXGkeI73S76C6s5oU3tbyIwlGQOx5r0jTpDrfg7RtVvUzqFrrVskUxxvmRpE+UfXn8q6HRpPL/AGuP
- FguF3r/YisqY3fNsiA7e1e7l2Nq+zd5bOx89mOX0ZzTS3VzQ+Ben+G9Wttds9Z8QWWjmZEMMmox5zuin
- TAGM8F0J+nsK9Ll8MfDzWtRextviJ4djv7tpfLheHYcv9sK8HAGBdR/9+vpXzjLrUnw58K6LcaeFkvtS
- BlkuZF3EdflAz7jv+VLrN+/jbwNf6xerFDrWmENFdwDazDGCD6ccfjXk4jMa9ao530vbc9fCZdQwtP2b
- S5rX2Pp/xN4P8C+FlWfVviB4csklkbZtVXbJaZtu1CScCRR/wGuG+I9h4NuvhP4q1Hw34rtPEMtvaGMr
- p1lJhWYwjJcLhcBCfxrg/wBlXUoB8R47nUvC1x44VLdwLSNEmMRJx5mx/lJ7duuat3X7R/iHwBB8TPCu
- jeAV03S9Uu53aGeJg9h5qFXDAfKRjB+p4pudWDtzDisPOLbitD5t8SeJ9bPgu7sW1S5ayaEwmGTbsZcd
- uP615KEOCB16ggcf6uvdvEek7PhL4enInK3M8kfMaqrD5vut1J+tcdb+DtOZULfaFZge/wDsgdMeld9T
- CJtctkclKtHD3SV1foeeJyVO0gFk/wDRRoto2YxDBIzEfu/7FeqR/DyzlgmuI4L14IADLIvKoMbQWOMA
- cY5qeL4cxXFjdS2Vrf3VtEFa4khjLrHgHbk7TtH86j6m/wCZGv1+P8kvuPJIEIMGc/ehzgZ52miGN/3O
- Rhsxev8AtV6/Z/CNnkigGlat50iCWKIW7BnQDG9RjkYOaVfhVDb2KXk1lqcVo0gjWaSJlRpF52529eDx
- 7Uvqb/nQPMF/I/uD4OKx0JgB3H82rs/jICvgDw1g/MbmXP5VV8BaB/ZcN0NOsb26sofmnmWIyrF6liB8
- oADda0PjiQ3gnw4VxsNxITzwMrX3FLkhlE4812kfA1HKWd06ji0m9DxWPHykg59e1fph/wAExf8AkjPi
- M/8AUdf/ANERV+ZwJVdoAHfH+Ffpd/wTEP8AxZjxF/2HH/8ARMVfnTP1FH2NRTQ1LuqCj48/4KfuF+CP
- h7eCUOvRbsdceTN0r8wXkwflx7ZAyRX6ef8ABUAsfgl4eC/9B6I/+QZq/MN2w+fmI9f8KokjXG05bGfa
- v0s/4JXk/wDCrfGP/YZX/wBEJX5pSD0Jz6Gv0t/4JX/8ks8Y/wDYYX/0SlDBH25nmlpg60+lcocOlKDi
- mrS0gHZFHFNooAeKUGmZoDVQrEmeaWmA/nS5osIdRTd1G6gQNSUHmimV0Ciiigk6OiiioLCiiigApw6U
- 2nDpQAtOplPpAKDS55ptFIB9FIDS0wClU84pKVetDAWiiigDjPjOD/wqHxx6f2He/wDoiSv5/sjaXB6D
- uehr+gH40H/iz/jjr/yA73/0Q9fgAke6MsQG4X5aYmIz7vpivqT/AIJsc/tW+H8HOLK86/8AXFq+XvLy
- BleT3/SvqD/gmvhf2rtAB7Wd4P8AyC1V0F1P2QHSijGKKkowPiBx4D8Sf9g25/8ARTV/PrgkYBzjsa/o
- L+IH/Ih+I/8AsG3H/opq/n0bhWIHIpoTPQfgFl/i14eyAdrydOv+ravo3VX/AOJhc46CRuR9a+cv2fxu
- +LOg8fMGlOf+2T19I6gga8vG27j5j4/Ov1Lh/ErC5fOpNaXPxXirCTxubQow/lMC52nOcc+tYt4OOQfq
- K6i6twct5IOOeBwen4123wq+E7fFvXNUlt5LPTUsUUNBNE7q+e/UY6Gs6vE+F25WXh+DcbFJ86PB7sJu
- wcn1NUJPmzxk4557fSvePi/8Cn+EGh2xur2z1QalcFVdbdo2hwM4GXJPB9K4W6t9JuNKigj0eKK7BRjc
- 7zk4BBXHuSD+FedLiGhL7LPWhwtiY7zR5zLg5Hb6VUlQZ6ZNehDRbQdYIs+60h0ayBz9mg/FawlntJ/Z
- OyHDVZacyODvAL7w/HYfYoZM3C3BuWTcwKH7nPGDn0/GvsDWz4y+IEHw98Q+H9Q8HeEr/SoA8SXd2zyN
- 5qRqEKeWMKQ6Dgk5kGOor58/4R61u4JVSyRwo+YxxEhR68Z7A1laf8Vdat4rK3jtrMpa+UqFkYt+7+zY
- 53f9O0f5t615E6TzWTlS6Huwq/2RFQxDuj2jX/2a/wDhamvXfiTxx8TtBbWrp1ONOTdCsYVQm3LLxhl7
- fxjmqWj/ALO0vh4z2snjzwpq+kqGFtHfpI7xpy2eMjIRG6k/pXnWm/EXXIY4gsdoREqgAxscBVhVf4v+
- mCfr3xWrb/EHX1ieEi1A2GPHln+6VHf3rZcOYmrbm6GMuKcHTvymP8bdB1XwJ4j0y3/tSx1iKJftkI09
- THCJFkdSmDjncmDjsBXO6D8QdQT4qan4ovdOE13NpxjeK1BVAQE4HXn5a7DxBqd54vuIZ75YSYg4jCJg
- Ydy5z+LGqcOgQLJ5ioM9j6V9LhOHZUqXKfH43iqNSs5RRe+F/wAN9V+KWny6AlpbXdpZKZl+13CwNEr5
- 4G488jtk9a7LUv2TfGeoi10WD+wdC8Pl/wDS5pNWWSVgFJJPH+y3/fPsazPCerf8IzbX0aWUd19qCgmR
- j8pAYen+2fyq9feOb65jmX+zoFWUODlj8oZbgcY/6+WH/AR614eJ4VxCquVJaHv4LjHCuglWfvHpPwy+
- A/jD9nvWG1TwtrPhnxBNOrW91Z3moGEbRnkMRwQUI/P0rr5PEWveA/hr8QdZ8a6J4fvr27Mt050y9SXc
- pAUAgqCdvt6V4BceOtRkM3/Ettx5u8n5iSNxuM/l9qb/AL5HrWd4g8ZalrGj6lYPptvFHexSxM6lvl3l
- iSMdT836CuV8NYxyUpI3lxLlrTcXqfPWo69JceGtO0tNNSEWVy8v2lcgyblY464wCQOnanabqxsbG9tp
- rSC4E8e3e8JkaIDJBRweD2IrY1Hwn/ZqO8jBsDILZxn0Hv09a0tavvAjeEbG20jS9UtvEizKbubUJ1mj
- ePa3Chdu0bip5H415+ZUKmFmoS7Hu5TiqeMpOpDuUvCuooNJ1mKW6hgklhVYkLOu9gwJXavyt1x8xGM5
- BB6+z6PNongLw14/0fULy30u4ntFENmbrfJIzRDlWC8/0yK+ebWKWWWMQ7PMeQD5sKcng5yTjqefzr6m
- GhW2s6R8Rbi+023kmi02KK3uZogZISluoXazDIPGQQQp49a8Z3toe8kuxW8DeL7Dxr4/8KW2h3V9cGws
- 3juvMiKEnIxnn7o4GDWB4yR7/wCBpiiaWZ/7fMUSMpY5+cABfc5GB7V10Hgi01Xxl4Ltp9EWOO50uX7U
- LDNthgUCu3lFd2PU9c1xU+i+IbfwHpDWuqRtoy675dvp8VuBKsvmSFG87qx49eM47VndlNLsb3wdk1C7
- 8MeP4bnSP7IaPR5PMiSExL/qiFJVupIGR+PbNeIfGNy/gHw2pADfaJcgdBxXpPxw07xDqfj/AFKfSodQ
- ntodPtBqD2hYrH+6OS5HTvndXmnxeG34f+HBxkzy9uOlfVZZd4TEX7I+UzNf7bhvVnj6p82P4cc56/hX
- 6Wf8EyBt+DXiIE/8xxv/AERFX5pquUD4BBGOOor9Kv8AgmWwHwb8Rf8AYcbp/wBcIq8A+lifYeaUNUea
- VTUso+QP+CnzH/hSfh4gkf8AE9j6f9cJq/MQZMeQ33e3fmv04/4Ketn4J+Hhjrr0fT/rhNX5i5OxumeO
- VpiYjcKBg4HB96/Sv/glh/yS7xj6f2wv/olK/NTGQT35PNfpX/wSwOfhd4wzj/kML0/64pQxI+2wRTqZ
- TgakoeOlFID2paYgopaCMUhiUUUVQrC0u6m0UwuOzRkU2igQ+jNMooEx2RRTaKBWOmoplFZ2NB9FNGKU
- HtTAWlB7UlA60twHUoOKSihgPHNFNzinDmiwBT6ZTh0oYC0q0lKtHQBaKKKSA4340n/izvjkf9QS9/8A
- RElfz/OAhULluB/Wv6APjQc/B/xxjH/IDvc5/wCuElfz/qCCcOCegqhMN4MQycnA4Oa+ov8AgmwgH7V2
- gEjn7Fecf9sGr5eAAU5zuHTBr6l/4JskH9q/w/kNuFlec+v7hqvoLqj9jeMDHpRQOgorMowvH5P/AAgf
- iMA4P9m3OP8Av01fz6SNhcdSOtf0FePyf+EE8SDH/MNuP/RTV/PsAGZjwwA71SEz0H9n7B+Lvh/b/fkz
- u/65PX0jq37u7ucZP71icAevp3/Gvm39n4D/AIW14fyW+9L/AOinr6d1SHzbucAniRuv1r9AwFCdbJaq
- ppt3Py7NcRTw/ENGdV2jy9T7e8C3mgjwNoHm3GnrL9ggD73jDbvLGc89c15lefE3wp4D+NviOTUtVht7
- a6020ELQqZEZlL5GUBAPPevlia1dRjcuAOmaybqyB6Bdxzz6fpXx0soxqV/Zv7j7qOc5e3ZVV957T+0/
- 8UvCnxF0fRbXQ9TF7Pb3LyOBC6bQVx/EorwlZBIucdeT+NTan4bdNJ+3xNGWkWBNvOVJeQH2/wCWX/j1
- U4I/JU7+Pbk1yYXB4nEKXLTejsb1s0wVFrnqrXUuBsimM3U1C10qD736U03SEZJP5V2/2Ri3/wAu2czz
- vAdKiNrw5IWttVUtGirGrks2GOA2QPzFeaWen/Plhz6iuplltpRl4y5HQkVVhgGTxjPavs8gwNWg5Osr
- HwvEmZUcQoKjO+4lrbhQMDitS3h4zUcMeKvRxgD619/Tp2Py2rUuSRpzVqNeBUUYxU6kV2RVlY86bZMg
- GOgOOf8AP5VIqL6c9KjQ4qZDW6Wpzt9BhRcdKhlt1YH5RmrPWlwKbgmRGbWqMQ6SLjU7Irbpdf6REGgZ
- ARIN4+Ug9c8cVS+PnhfR7TxozWDWejo1pbkWNra/65yzBjwNoOMDn0rqTFHIhV0DqRyrcj/PFVZNFsm6
- 2sBHvGDmviM34dlmNdVacraH6JkXFUMpw7pVIXbZe+KnhSz0zQYJ4NHs7Fzpjy3Ahsov9YGXGT1Q5J6A
- nnHeubtdAsPixovirxPI+qWlxbWSeUFkSOJnjjC7GAJLZwCD8vQ8VpNodmR/x7QntzGP8KdFoNkqlRaQ
- hTwQEGDXz/8AqbV/5+I+p/1+of8APpkum/AvS7rxR4dtDe60kGpWDSzkXMfmwEFQCDjiPk8Y7rzXKeK/
- A82mfCmDVxr2oXEX9otbJYTZ8hBlwHTBycbeT65rqholn/z7RZHQhBkfSpTodlIAHtYGAOQCgIqlwXV/
- 5+Ih+IFBf8umSfBbSray8JePWtrwXtudImD3aF0UMYsqpyMjHz9M14t8Yo/J8BeGwylCLmUAHsMV7VHo
- llGny2sKjpxGBXl/7R0CW/hvQERQoFxIQAMA8CumeQTyrBVpuV7oxw3E1PO8xw9OEWrNngIPy8Dg+9fp
- T/wTLYf8Kb8RAf8AQcf/ANERV+a7bRkjBr9Jv+CZylPg94iB4zrb/wDoiKvzY/XEfYYbilBzUangU6oK
- PkH/AIKc8/BXw/zz/bkeOe/ky1+ZU7ANjHGT93vX6Zf8FOsH4JaAD/0HUB4/6YS1+ZWMlvpxVEkfPTGB
- jpX6Wf8ABLLj4XeMFHbWF/8ARKV+aQGACCRX6V/8EtWz8MPGBP8A0F1/9EpQwR9ulgScdM0A0wHkinA9
- qkokB704c1EDinhuKAJAaWmjinDmqATbSEYp1FMkZRTiKbQAUZopp60CFzzSnim0Z4xQAu6ikooA6Wik
- 3UbqzuWLRSbqAc0wHg5paaOtOpbAOHSikB7UtIApw6U2nLTuAtOHSm0q0AOpVpKVaOgC0HpRQelCA4r4
- z/8AJIPHP/YDvf8A0RJX4AqrSBgFDDGD2PPpX9AHxm/5JB44z0/sS9/9ESV/P8cgnkDB+Un+lMTFLhly
- cADGeOT9K+pf+CbB/wCMr/D4B4+x3vJ/64tXy2CSp5GeoyOa+pP+CbKqP2rtAGDk2V5z/wBsWquguqP2
- O7DNFBI7dKaTmoKMH4gH/ihPEn/YNuf/AEU1fz7Fc9OOeg71/QR8QP8AkQ/Ef/YNuf8A0U1fz8HByQSV
- HXFUhM9D/Z9Vj8W9AXBALyjJ/wCuT19QaiCt/OD2kb+dfLv7P5/4u34eyWx5kmOf+mTV9Qai3+mz8Y/e
- N1+tfsnB/wDuk15n8/8AHt/r8PQpSjIqhMgwauyNwarSEBa+1mk9z87ptxasylc3U0lp9lZ91vkEIfYk
- /wDszfnWXJCM5xmtOUZ71UkGK8xYenSuoRsnr8z1vrFSo7ylexnvAeajNvzVxxyajPWocUdCqSZWNt/+
- qnpARUtL3oSWwObFjTFWUqFOKlU4rZaGEmWEIFSKagVs1IprZM5pIsKakVu1QIfyqQH8vWtkzBonzTh0
- qANxTt9aJmfKS7sZHtSFiT1qIvzTd9JyDlLAc0ofmq2+nK9PmDkLSyc1IshqoHpRJz1qlKxDii8JDivK
- f2kzv8PeHx/03l/lXpYlPPORXmH7RjA+GtBLYx58n16V4GfyTy6ofV8KRtmtI8D2gYPVRx1r9JP+CaJI
- +D3iLnP/ABO2/wDRMVfm4HIHHT0zX6R/8E0fn+D/AIiP/Ubf/wBERV+Cn9Ln1/nk06mdqdnnFKxSPkD/
- AIKcH/iyegD112Mf+QZq/MtuAOcHtX6Z/wDBTglfgr4fwOf7cj5/7YTV+ZhUMgweByTTEMPRs1+lH/BL
- bj4YeMP+wsv/AKJSvzXV8ON3IySfyr9Jv+CWhz8L/GH/AGFl/wDRKUmCPtoNTw2ajFKD2qSiUHFPXrUO
- aeDg0ATZ5pwOKiByaeDVITJKKQHtS0xIKQjvS0UFDKQjvTyKbQSNooPWigQzNFGKKAOloooqCwpelJRQ
- A+lB7UlA4pMB44NOHNMpwOKkBaVaSigB9KtNB7UoOKYD6F6mkHNKOtNAOoPNLSUwOM+M/wDySDxxn/oB
- 3uP+/ElfgBtLMSQcngYGR/8Arr9//jRj/hT/AI54/wCYHe/+iJK/n9IB+g5A96BMeThgwBznFfUf/BNl
- g/7VmgkklhZ3v/olq+XVARUJzgnP0r6i/wCCbjKf2q9A6ZNne9P+uLVXQR+xpU5PbmnAYFBbmm5zUlGD
- 8Qv+RC8Sf9g24/8ARTV/PuBwepGDx6V/QN8QT/xQfiT1/s24/wDRTV/Pxg9c5z0FNCZ6J8AV2/F/w+V2
- kGSTH/fp6+m9Ub/iZXP/AF0b+dfJnwr8R2fhDx7o+sag2yytnZpCBkjKOOmPevZ7r4/+Erq6mlW8kCs5
- IxA3r9K/U+F8fhsNhpRqzs7n4rxplmLxeMjUoU3JW6Hdu3Jqu7cVwbfHLws2f9Kl/wC/Lf4VG3xs8LlS
- RdSfTym/wr66WbYL/n6vvPhI5DmK/wCXL+47WQ1Wl9K41vjJ4bccTyfXyzULfGDw84yJ5P8Av23+Fc0s
- 2wX/AD9R2wyTHr/ly/uOvbqajPNcZL8W9AJG2SVj7Rmoh8W9EJPzyAe8ZrB5pg/+fiOhZLj/APn0/uO3
- HNKBXEr8WNBOcyyDH/TM0/8A4WvoAODcSf8AfpjSWZYP/n4vvK/sfHf8+mdsDzUimuLT4q+HNuTdSDt/
- qW6/lUyfFXwyTj7bID/1xb/CtFmeE/5+L7zKWTY7/n0/uOzX608MM1xv/C2PDKE/6dJx/wBMG/wpf+Ft
- eGAATfPg/wDTFv8ACtlmeD/5+r7zF5Pj3/y5f3HbKcd6kDflXDr8XPDOCftkh+kLf4U7/hcHhkcfbH+n
- kv8A4VazXBr/AJeL7zJ5Lj/+fL+47jIxS5rhP+FxeGucXUhx/wBMmo/4XH4bA/4+ZSPaI1X9q4P/AJ+L
- 7yf7DzD/AJ8v7jut1IWrhD8ZfDfaeUj/AK5N/hTf+FyeG8c3Ug9jE3+FH9q4L/n4vvH/AGHmH/Pp/cd5
- uo31wh+MXhwjIun/AO/Lf4U3/hcnh0f8vLn/ALYt/hUrN8F/z8RX9h5h/wA+n9x34fNODfjXno+M3h8c
- +fIf+2Tf4Uh+Nnh1Tgzyf9+mp/2vgv8An4hf2DmH/Pl/ceih+DXmf7RALeHNAA6meT+VWP8Ahdnh7b/x
- 8SfTym/wrkfi747sfFuk6VBp7O32d5HcsuOoHrXh51mmFrYKpTp1E2fScO5NjKGY06tSm0keXhdqc4B7
- k1+kf/BNBs/B7xF/2G26/wDXGKvzaI2lTgknsa/SP/gmiSPhB4iycn+23/8AREVfj7P3g+v884pRxUee
- KUNQWfIn/BTYFvgtoAH/AEHIyfp5E1fmVs4BP3cHgV+mX/BTZgPgroBJI/4niZ/78S1+ZZO0McHk8elB
- IkoO84OR7V+k/wDwS0/5Jf4w4/5iy/8AolK/NZjuGSOnpX6T/wDBLU4+GPi/Iz/xN1/9ErSYI+2s8ke9
- KOKYOlLmpKJAc08c1CDmpFPFVYkkB7U5etMB705TQOxKD3p45qIHFPVs0yR1FFKooGJ1ppGKeetIelAh
- lNPWnUhFACUUUUAdFRmkJ5pKzsWOopFpaQD6KKKAFBp1MpQe1Idh4OKWm0oOKBDulOHNMpwPagBy06mi
- nU7gOHSim04HinYDjPjV/wAke8c8f8wO9/8ARElfz+K3OBxn1r+gT40HHwe8cEf9AO9/9EPX8/YO9lz1
- Az9Pw71S0Ex4AB68+/WvqL/gm4AP2rvD5A62V5/6Javl0gndIPuj+GvqT/gnAAP2rPDo7fY7zGP+uLU2
- I/YzjHHSjdTScCm5qSjB+IJz4D8Sf9g24/8ARTV/Pydw4B7D+df0CfENseAfEv8A2Dbn/wBFNX8/Zbe/
- QgelNCZG2WEoIK8dT9azVUF2+9+fevTvg58LL340/EfR/Bmn3cNheaoXCXFyGKLsjdzkAdwhH1Ire/aH
- /Zhuf2d/Eljoeo+KdN13UriHzpoNPR1a2XPylt3duSB6D3qtmT1PHhxnI7DmpkYKBkkj0FTLYYYnzFOT
- k46c16j+z/8As6eJv2hPF0ui6E9vbQ20Rnu7+5DeRAvQBtozk9sehJ4zh3bCx5UQACc5OfSnhARgdD7Y
- Ffbn/Dq/xqq4/wCEy0M+5hm/wpP+HWfjUcDxhoJ9/Jm/wouwsfEkgUEbTk9MrSbRuIznmvUv2hPgHq37
- O3jO18O6nqNrqdxcWaXq3FmrKihnZMfMOuUNeXghsHGDxg+tVyyeohpX0I49aVCM4zg9ODXU6P8AD+81
- bTIbyK4hRZMnD5zwSPT2p0vw8vYjhrmDqSTz/hSswsuxyLgkFWzzkE+1JFGsMKKp3gjhs5qxqNqIJ7iF
- 2DFGZSFPboadp+niSS1tImEYdgis/wB1eRj69+nrSbY9CFSMZIP+NL90dMnsK+zU/wCCYvjR41/4q3RO
- QD/q5uPbhaB/wTE8aA5/4S3RPxjm/wDiaWoWR8Z7CHGenXg1DDGsbOUdmGcnnpXpvx7+Ceo/APxonhvV
- dRtNRuntEuxNaqwXDMwC4POflPavM4YYrcymIg72LMSeT707sNCUpkk8gHpTdhUsWDD6V0Fh4MutRtIp
- lljAcZGWNaUXwy1CUH/S4cHHc/4U7NisjjWGOCPxpU24HJIz0FSXcS2t3LEWL7HKnuODin6dA2oX9taI
- yxNcSLCrn7oLEAE/ie1VyysLQrkDnLZNAUEZwfTOMCvsRf8Agmn4yZcjxXoag848qUY/SuF+Mf7FXiX4
- N+FYtcvtc0vUkluUtVhtVdXLMCcjcAOAhrO7KSTPnObaCNp3HB5HI7VEy4YjPFel+MvgVr3gptLW8uLO
- Rr/TotSXDsBGkq7lRiygZ244z3HXt51LCyF1fAZDgUXK5StsIHHzY56//WrWupCNJiKxlmUsSPfHSmaF
- oM2uapa2cTpFJcyrEJZDhVDHGTwTjk5+nTvW78QfCd/8PfFWs+FNTCHUdGvJLWZomzGzKxUlSQDjjjik
- ncnrqjlfMPkI5jJPPyr1zjpX6R/8E0XJ+DviAkYP9snI/wC2MVfnEMbhnJKjFfo5/wAE2AE+EfiHrn+2
- m6/9cY6YH18G4H0pS1RB8/8A1qUHmgo+RP8AgptlvgpoHGf+J4n/AKIlr8z3yBj1r9Lf+Cmpz8FtA9tc
- j/8ARMtfmhIT5h9KBDckH6V+lH/BLb/kmHjH/sLr/wCiUr81yOpr9Jv+CW7f8Wx8YD/qLr/6JSkwR9tB
- qM80wNTupqRj+lPU1FnFOBqgsTA4py1GOlPXtQhEo6U9elMBp46Ux2H0q00GlBxQIcelNpc8UlAhp60l
- KetIelAxtFNwaKBHRGgDNB60VBY4DAopN3WlqQHA9qWmUuaAHUU3NOpDuOBpaZTgaBDlpaavWnUAPFPq
- MdKcDQA6ikJFGRVagcZ8asf8Ke8c56f2Hfd8f8u71+ASYSZeyqcjua/f740ED4O+Occ/8SO9/wDRD1+A
- OwMZCTwCeB9aaExwVWZv4VJznnn9a+oP+CbykftU+HjjgWd50/64tXy+clQDyeox2FfT3/BOF8/tV6B8
- y4Npd8D/AK4tTYkfsX29KTdTC/pTd2aRRh/EM58A+JOn/INuf/RbV+AC43k5APpX9Bev6YuvaHqOms5i
- W8t5LdpAuSqupUkc9s55r4S1D/glj4U0fT7u+vPiLqFrawI0s88llGEjQKSzE7uABk5/+vloTPiX9nz4
- mj4O/FzRvFrWzXp05Z2jtwcbpHgkjXJ7DLqT7A+gBwPiH401Tx54o1LxBrV0bnUtQnaaaQt1YnoB2AAA
- A6ADFV/FkGjaZ4m1CLQL+e90mK4dbS6uI1jeaMHAYqCdueuM+lcxe3e8sqnBIzz/AI9gcH8a0iiTX8O6
- PqPjDxBp+i6Rby32p6hMttb28XLSOxwAAPXPOemPTNftH+zP8BdP/Z9+GVnocISfV7gLcaneqo/f3DDB
- APdAMBfpmvmz/gnF+y//AMI1oy/FHxLbKNU1GIro9vKP+Pe2P3pT/tOAQp7Kc/xV91M2SSckkkknrz61
- EvIoCeTzn39feoy2KR3phccUIZ+XH/BUKQp8etGK8MdBhO70/fTV8eq5OMZzxjivrz/gqIwPx60XPI/s
- CLp/13lr5A83auR6YyO1ac1jNo9F0X4g2WgeHbK1mjdnCt/D/tGopfivYyn5Y5AMjI9ea4LVAJrCBlzk
- ZGPxrPsLIySrnPXH0qtdxm3fzLd301woX96xfAPrU3h/5dc0/gg/aE7f7S1VZDG2NoA6CregknWtOwP+
- XqP/ANCFZMD93oSDBH/uj+VKWAqCB/8AR4/90fypxeqA/MP/AIKScftAWh/6gtv/AOjJa+VRkszcZJ7D
- tzX1V/wUdy3x/tD2/sa3/wDRklfKygopOBzUgdlonjW10rTre3eJj5a7cjvW5Y/EqwaVIxE4YkAE15tc
- wlYEYDtRpcebhGPY1SuFiHVrvztTunBOGlY8/WrHhV8+J9I54+2Rf+hrWRfSZupv98/zq74Tf/iqdH5/
- 5fYf/QxWnP0J5T914jiNevSvF/2vPD9xr3wYv7i1iM8+kzx6h5YGSUXIkx9FYtXsUbfuk/3R/Ko7mKK7
- tpYJo0nhkUxvFLgq4YYII9CMj8T61ky1ofnP8YfHOm+MPBXgzW7K/H2uHTF0jVbbLGSJoSQhI7q8YQ8d
- 1buBXzBc28bXrmIER7uEJBOMn0r66+PH7IXiXwDrN5r3gG3fXfD1yS0ulqnmSwgnJXZ/y0TOcbeR6YGa
- 8H8Oy6Ho/iW3PibwhqLxxP8AvtOSd4TJwRjJRio9cA96zsVcPgX4ds9R+IOhHWbhdL0KCdLu/vZxhUhj
- +dgPUlVZQO5x6Vznxi8br8SPih4m8TJEYotSv55/mUnaGkLKv1xivTfi18eItT0FPCGieHbTwf4eSXz3
- 0qzQtLLKAQrzSP8AO5wxxnjHQCvDw8Mu1V2oc59iSOOapJklNl+fKkYbnhsmv0Y/4JsnHwj8RZJP/E6b
- qf8ApjHXj/wT/Yz8I/GrwNa+ItN8b3sUw/d3Vn9jQvbzY5U/N6cj1Bx2r6//AGefgRbfs/eE9Q0Oz1aX
- WIru7N15ksIjIJRU2jb2wuaYI9bDU4c1Bu5J7E5FL5me9Az5H/4KaH/iy+gf9hxP/REtfmnnqfWv0o/4
- KYvn4M+Hxx/yHE/9Ey1+a2PlJ4OKBDa/SX/glyf+LZeMP+wuv/ola/Nsjj61+kP/AAS++X4ZeMO//E2X
- /wBEpSYI+2QcU5W5qANTweakosBqBwajVqkHrVEkqnIqReKhQ1KrcCmIlWnDrTENPHWgY9adTKfQOwUe
- lFNagQHrTcjOKUHNNY0AGB60U3dRQI6I9aKKKzLClB7UlFMB1FNpd1SAtFJupaQDh0py00HtS0APpw5p
- tKD2oAcDinZzTKKAH0UylzTuBx3xpP8AxZ7xz/2A73/0RJX4AhirKSoPt61+/nxp5+D/AI49f7Dvf/RE
- lfgChIUDgZOST3poTJvM2hiAcdDgfpX0z/wThb/jK3QCAMfY7zp/1wavmNy21vmyOlfTH/BOWTP7Vfh/
- GQPsd2M/9sGpiR+xhak3e9Q7+PejdxQUSMwyDycevQH8OnXv1wa/O3/gpR+1WLVD8JvDN4fMbbJr9xC3
- +rXqtuD0yeC49Cq9zX0t+2B+0lZ/s5fDCe/ieOXxTqW610e1Y8tKRzIQDnanU+u4L35/FDVdcu9d1G91
- PUJ2u7+7meeeeRstJITksT7nJpoGSC4kZO+0c7c9MV9HfsQ/s1S/tAfEYX2qWzf8IdobJLqDsMC6kHzJ
- bj1zjLeifUV4X8M/h9rPxT8a6V4W0CI3OoajMqIH+7Gmfmkf0VRkk/7JHXFft78FPhNo/wADvhxpfhPR
- kBhtI909xtw9zOR88re5I4HYYHancmx3sMMVnbx28CLFBEojSNVwFUcAY+gxQz1E0g/DtUbS0kUSswqJ
- mFRNLUTy9aZJ+X3/AAVBJPx50fbx/wASCL8f301fIEagMN44zwfwr66/4Kdyn/he+kDPB0GHt/02lr5F
- hf5eGyBwAf6e9HUGXY4/MgVQMrnmrVtZCMjjvmrumaafsiOwxu55q6bcAHA9a9GFO8DjlJqVjnpgyuS3
- JzjHpVrRFP8AbdgTkf6RH06feFV7wILmY/Nw54FT6GR/bGn84Pnp/wChCuCWjsdS2R+58En7iP8A3R/K
- nmSqtux+zx5PO0fyp+cCmM/M/wD4KNNn49Wp5I/saDIx/ty4r5ZyTu3A8jtX1H/wUVYH4+W/TP8AY1vj
- I/25a+WuRJ15IOcUuo+hopH5ttGD2FOgiETZHepLVc26HtipVjz6DtXeqfu3OJ1bSONumPnyZ/vH+dX/
- AAo2PE+j/wDX5B/6MFZ16dt1KP8AbP8AOr3hM58U6Pz/AMvsP/oYrge52I/dWN/3a/QUjPnPb+dQRSfu
- k/3RSl6YD2brgkE9KrSW8LsHeFCynIOwEj0I/GnlvWmMxzUgfGn7ev7Ox1rS3+Ivh2zzf2aBdYgiXmaE
- dJQO5X+L1Ue1fn/Fct/CeOvLe1fuNcRRXUMkEyCSGVSkiPyGU8EH2IyK/Kb9sD9nub4I/EBrrT4ZG8La
- yzSWD4wIHzl4W7fLnK+30NFwIP2Wv2h7n4FfECC7ui0nh3UClvqMHJ+XPEij+8mc47gkdSDX606dqVtq
- 2nW17Z3EdzaXESywzxncsiMMhg3cEc5r8IJsBnIc5UDDZzk9ifYj+dfeH/BPn9pBdkfww8Q3LbiXk0aa
- cgcdXtyfw3KfqOoFA0ffG7jv+NLv96rlv/r57Uu72x7GgD5N/wCClhJ+DWgd/wDidp/6Jlr82hzyc1+k
- f/BSRv8Aiz3h/nB/tpMZ/wCuMtfm6FwR82fpQIFA53A+1fo7/wAEwD/xbbxdxj/ibL/6JWvzjAHByfoK
- /Rv/AIJiED4b+L8DA/tZP/RK0hn2mh7VIp5qFTzUi471JROh5qWoFPTFTKcincljhzUynJFQjgmnq1UI
- nHWng81CDUimgZMDmlBxUYOacDigB+eKaxppf0phNAh+cUw80ham5oAfRTMiigDpScU080UVnYsKAcUU
- UXAcDmlplOBpAL0pw5FNpR1HucUgFzj8KcDkZr4+/aW/bG8VfB74m3PhvRdP0eW0t4InMmoJI7M7LuP3
- WAAGcc968ib/AIKPfEMKSNJ8Mn28mfP/AKMouOx+kNKOenNfmtJ/wUt+I0YATQPDkjHriKb/AOO17H8E
- /wBtDxP8QfhV8UPEus6XpNtqHhazjubSC2SQRyllkwHy5P31UcEcZphY+xs4HtRnHevmH9jv9qXxD+0L
- qfimy8Qadpuny6TFA8C6esis28uG3bi390dK5X48ftq+JvhX8cLnwdp2l6RdaVbT2scs1wkpnxIsbPja
- 4HAY44p3Cx9kZNHWvj39pf8AbF8YfB/4ozeGPD2j6Rf2kNtBK0l4rmTe4JPRwCMEdR3/ABrx6f8A4KVf
- EO2l8uTw74fik6FGimBHt/rKnmCx94/Gkf8AFnvHHH/MDvf/AERJX4BBXOABtK199eNf+ChnjzxJ4K13
- Srjw5okMN/YT2zyxxTblVo2UkfvDzgnr6V8CkFgPT37U0IXP7s724zX0x/wTmOP2qPDoDfJ9kvP/AES1
- fMzMACAM8Hv9Pevpf/gnSyr+1P4fIJ/49bzr0/1LVQkfsPuwaxfGfi/SvAvhjUvEOt3SWWlabA1xcTyH
- KqqjPI7+gHcsPatPzM9Dn6/r+WRx75r8rP8AgpR+1a3jvxGfhh4Yuy2g6VMDqtxE3F3dL0jB7onOfVsn
- +GgZ87/tK/H/AFP9oj4p6h4lvTJFp6H7Pp1izAi3tlJ2j/eP3j7k15VEcgKMnccDPJ4BI4+uKro2ThCN
- oI289fT9K+yv+Ce37Lw+KXjIeOfEVpv8L6LKv2aGZPlu7xeQOeCqcE46nA7GmhM+qf8Agn/+zCPg34IP
- i7X7YJ4u16JWCMuWsrU/MsY/224ZvbA7V9bGX6fgc/r3+veoGl9OnofT3qJpcUhlkyZ71G8gqsZajeU0
- 0BM8lRGTjrULSmo2k96ok/Mn/gpqS3x40fGT/wASGLI9B503NfJUEXnSMqpyOFJ/OvrL/gpaS3x20fZy
- 39hw9P8ArtLXyzp0IkdMhuDkjvkmpvqJnYWUZeyhz121L9mO4cdc81b02ImyTcORkfkcVZW3z14r36VO
- 8Lnj1KjVQ87vTtvp+DnzDnHTrUuj/wDIYsD3+0px/wACFR6tldRu1Xk+af5nj/PpTdDbOs2JJz+/j5z/
- ALQ/+tXiT+NnrQ1ij9yLdv3MfP8ACKfuzxnrWZbtHJrfhaCTmCfUIo5FJ4K7GyD69O/Fee+CtXnu7OFp
- byWWb/hLbm1w0rH9yLVyEPbaG6D1FS3rY1sfE3/BRJwvx4twwJH9j2+cdfvy9K+XmcZwPXr7V9Mf8FEZ
- n/4X5bYyD/Y1uMn/AK6SV8wq2X5DZ6dOc98VXVE33OksIs2cRznKirKwjHvzUmkW+dNt+P4auiDGe1fS
- Qpfuk/I+dlVtUaPLdVHl6hP6bz/OrXhdj/wk+j4/5/Iv/Q1qHXVxezH/AGj/ADp/hT/kZtIJ/wCfuL/0
- Na+cn8TPfi7pM/dCJgY1+lOLVVjkxGv0FO8ykUSlqaWpm7NJuoAk3VxXxh+FukfGTwDqXhjV1HlXCboZ
- x96CUfcdc9wfTsTng12G+nB+OuDUgfiR498Ear8M/F2peGdbgNvqVjMY32ghXHG1k/2CMtnp2rFsdQuN
- Fvbe+sJ2s7y3lWaGVHw0bodysPoQMfl2r9LP25P2cx8VPBz+K9Dti3ijRYi7xwj57u3HJTHXcvJX23D0
- x+YoXOQSWIPKsDx9Pw9KkD9gP2Vf2grb49fDqK9meNPEmnbYdTtFPIk6CQD0bqPQ5HavaPxzjvX4xfs+
- fGrUPgd8RdP8QWAaS0J8m/tN2BcQEgsMeoxkHrnb2Jr9hvCXinTfGvhzTdb0i4F3pt9As0Mq91I6Edjx
- gjtTA+Y/+CkOP+FQeH8gkf22nT/rjL+tfnIx+QLjntgc/jX6N/8ABSLd/wAKf0DZyf7ZTj/tjLX5ygAt
- yDt756/hTAAmEI6nrnNfot/wTF+X4beLvfVV6/8AXFa/OogZB6gn8R9a+w/2Iv2jfB/wU8H+INP8RPdp
- cXd+txH9lg80bBGFPcYORSuNH6Qg4qZDXzT/AMN8/CxBzLq//gD/APZU/wD4eAfClFJafVxj/px6fXni
- ldFH0wnOO/0qVeMV478Sf2o/Anwnn0ePX7m8VtUtBe232e28zMJxgnng13l78QdH074dyeNJ5JRokenD
- UmcITJ5Pl7+B64pAdT6H1p46ivHvh7+1N4F+Jmj+JtR0We+Nt4ftftd759sYmEeHPy5PJwjVxqf8FAPh
- Ky5N1qy/XTm/xq+ZEn0stSKfWvmhf+CgPwl/5/NV/wDABqsQft9fCecqBe6omTt3GwYDt1pXQ7H0kDQT
- VLTdSg1bT7a+tX8y2uYlnifGNyMNwOPoaslqYiQ8CmkjHvUe/imlzQIkJ96buFR5B6ijIoAk3UVFmigD
- qzSZ5FLSNWdixCeaXdTaKLAPooopD3HdzSnp3po605evHX1pCPy6/bO1aS++PfiR7iCOUxPHEpAP3VjX
- mvAJJVb/AJYge9e7/tdO8fx28V8Kym5UgN2/dpXhciPISSMd+KjqUZ19B54QmQwIDzsOCat+Gfilq/gC
- 01zwroskElh4ujittR85S7hYn3rsORtJ3MOh4qG/0tdQEYlaRVU/dVtufrXL6rp1va+J9FS3xjexdQev
- pTGd54C/aH8XfATxFd3ngy6htLm+h8i4a4tVlDqGBUAHpg5P0NP8YfEnW/ine3virWXgfXtRInkngiCL
- uUBRtToAAq+nf1rzXx3fxTXkEKKzeWWO7HuK6TTy914DFtGcBkY7vTGc1QHX+J/ihqvxt1iTxb4i8iLU
- 75URxaxlIgqIEGASSOEGeeua5+7hQXHLeacD5yKzPA80Z8M2ayB8/MdwHHXit6URRybAfMB/ixWdwKWo
- wk6VdnzSwELEBvpXlGOGPHXvXrurQhdJvCDn9y/B+hryGNA4J4Y5HArWJAbsZ5xxX0p/wTuIH7Unh4fe
- P2S8/wDRLV81lAy/h1/Ae9eyfsl/E3R/g38ZrTxbrkhTT9Psbx8LgNKxhYLGvuxwAfc54qhH6Dft7/tT
- p8Bfh0+iaLdL/wAJlr0TRWmDzZw9HuCOxA4X3Of4Tn8bJZpJ5nllYyO7bndjknPJz+Jrt/jT8V9b+NPx
- D1fxdrsxa8vZcxxLnZBGD8kSA9FUevXrXF2dncahdw2trE9xczSCKKKKMlnYnAUAdSSQBQM9E+APwX1f
- 48/EzS/Culho0mfzLu9xxa24HzyH3A4HqWA+n7feAfBGkfDXwdpfhnQ7ZbXS9PhWCOP1x95mPck5J9ya
- 8S/Ys/Zsg/Z6+G8T38UbeMNXCT6lMBkxcfJbqe4Xdz75NfQRnwAM9APpQBO0me5/Goi9QPNnvUTzigCw
- 0uKheaqslx71CZ8H1qkSy40nHWozKKqNcZpjTe9MR+bv/BSMlvjtpGASP7Eh9T1mm7fh/wDXry/4heG/
- h7oPh/wdeeDdfuNY1O6s92sQ3KZW3mAU7Qdq4wS4xzwAc88+nf8ABRRnf446UVzgaLDwADz5stfNURPl
- bGJB44Bz9aOoPY7jQsy6XEzbgxJyGOSDk5B960PL7H/PWqXhpc6Lb59/5mtYKAGHrX0tF2pr0Pnqt3UZ
- 3H7KHwZ8NfE3xJ4xvPEdm2pLp5SGC0LYRjKzDcSCCDkADt619Z6H+xr8Kb8XsVz4VFnMmGjns7qXfHIG
- UghixBHIwCD1NfCXwk+POr/A3xPrk1lZQarY6gdlxZzsVyVY4ZWA4xnn2r2XSv8Agotr1shstO8IaZYt
- csiLMZXdEy43HbhQenGT718xWTc2fQU/hR+nvhPwJHBBZ6r9veV4EYmJoVZX4xgng96818K+BP7b8V3f
- narcRQx3z3xgWFDuYhgPm9Pm/StODxn4ghsdPtYNUkhR7i3jfESbmVpEVhkL3BPPWuP8EeINWtNRuro3
- 8u+TUdTgcbU2lIZYhGOV7BiKlJplnj/7TfwN8Jaz441TWNZsm1O/gs4bWJ5ZCqIok4wqkDJ3MOSevQYz
- Xhnx3/Zt8J+FvhFe6tbaTDpOpQWaX1vJZTs67cjKOG4xg9R+Z6V1H7Yv7SOr/D/4o3WhyadBq0V7p9tM
- 8zv5bK3mtkfKOQdhH4188ePP2q9X8ceCL7w5BodrpkF6qxyzrM0rBOpChuBWvVGdtGcb4dUvolmzZ3FM
- nP1rR8oVV8OIP7Es/lx8n9a1BCSRt45719fTkvZR9D5Sqn7Z+p594b07QtV8fWFp4m1CTSvD8t7svbyI
- ZaKLPLAc+3ODj0qz4q0rwzoXxn+w+DtRm1bw7FqEK2t3cDDMMpuzwM4bcM4GcZrndajxfXP++wP5mq3h
- r5fE2lf9fcP/AKEK+TqfGz6qHwo/b+J/3af7op4kqrGwKKfYVIG5o0LLG8euKN/vUI5pc1IEuaN2O9MH
- SigCUEFcYBznqOvoD7HkV+Z/7c37Nx+Gvi1vGOg2xXwzrM5+0RxLkWdycllOeiseQTxuLZ7V+lgJFYfj
- jwXpHxG8I6n4c1u2Fzpl/C0Uin7y+jIezA4I9CM1DA/EZHy6gkMTgHB6nHP4H+n1r7Q/YM/aG/4QjWk8
- B69dEaJqMubGaU4FtcE/dz2V8n/gR+tfNvxn+F2p/BPx/e+G9UiMnkP5lrcMv7u4hP3HUnjHPOOh+lc/
- pkc0QjkXdEVcY2twjZyv0ORwPagZ+jH/AAUhG34QeH85AGtIOBwf3MvSvzi6qMdvWvpP4v8A7QSfFz9m
- 7QdF1OYnxTo+qRJMDw1xD5MgSX65IVh64NfNjANkjDHPBB4piHB8YyBgda3PD7YtpcjgtxntxWGg3r0A
- YHqeg+tbWhqGt5gpP3/6VMho0SMjrgdxioJRcZ+Ty3A5w+R34/Ue9I9jv5Jb8KY1tLGpEUhBxwGrMo9I
- +OHxjsfi9d+E5LK1uwdG0C20q5M6AHz03eYwwT8vIwevXivZNb/bp0HVv2dYvhvbaFqiaxJo8WlNesY1
- gDqoVsDcTjAPYda+PvDspjW6UruxN1ArOSMz6ztB8vdN1UD1NMD3T4Q/Gax+FPhr4h6VqH2qeTxPoj6d
- bPbouI5eQHfLZAw7c89OleaosawjaCyYyM5zj8RWJq9vDYz2TcsryAtu5xW6m0xlo8FAMgCkMW3nAwFV
- lrZ0wSlwyTqmDwD1zisCK53HJRlHvW5o9nHcyoWmSM5H3sf40CP2S+Eepwar8LvCd1bZ8iTTLfbkY6Rg
- f0rqy2T1rz/4Af8AJFfBnOf+JZDyPpXelgDWq2JHUhYUwvmmFuetMRJkUZFRb/ejzB60AS5FFReYPWig
- DszTTzTqaRWdyxKKXFGOtMBc80tAoqRoBwacp+b8qbQOvvSHY/Ln9rV1Hx28WeYuR9oXb/37SsX4G/Cn
- Tfitf6/Ff3VzZpp1tHOn2YL85eZI8HOf71bX7W8yS/HTxUO6XAyP+ArW5+xy8R1fxptOW/s+3P8A5NxV
- kylozr/i7+w34a8Km1jtvEusEPJNG+fLH3CnP3f9o15cn7GfhyPUYLxtd1R5IicKwjwT3/hr7m/aC/19
- l/19XH/sleO1g5s1seAa9+yF4a1NVnfVb5HhViNqR4bkHnA9q8YvvDUOm/Di4ktJZfPitZJVLAZbEpXj
- 8BX29f4+xXIxyY25HXoa+MtWvo7fwLdSSFiqWkwU/SZzit4O61IkcN8PrfPg+zLMAx3nDHoMmtxkXd1G
- a53wJE1x4VgMoZSzP+HJrXbShn5Z5MZJGaCB2sRZ0i95yBC5/Q14+4wFAJOVyD2Fet6lbumk3g8wsPJf
- r67eleSYKkgOM9Mc8fpWsdiWIZNwwScemarXiMInPQ8f4D+dWSi8A53dOtRXiFrduDuGAasRgXAzuwRn
- nqcAD69q+7f+CcX7MI1fUU+KniW1Bs7Viuh20y48yToZz7LjC/7WTXzp+zL8Ar74/fEy00lFkh0S1YXG
- p3aj/VRA52ZPG5uQB7k+uf2O0PTbHw1o1jpOl2yWenWUKQW9vEMLGijAA+gGKbEbrzA9OnpUTyjJzxVM
- z8daY1wKLCLbSAjrVd5cHrxUDXHHWq8k2R1qkBO8uaiMvvVZpRiozMMUCLLTYqNpfeqrSjNMaYdqpAfn
- p/wUJdP+F26YzHgaLDkfWaUV83RkY6exYV9Gf8FAH3fGrTW2khdHh5/7aTV85xOJHHJMXXBGAD9anqM9
- C8OJ/wASeDHTnp9TWp5fUd+3615+nxFh8PRR2b2ZkK5O5W4POfT3qeH4tQSthNPfPGMvj+levGuowseZ
- KhJzuc1rxA1rUFAPMz9/ek0TadYseMuZ48f99VFqV0tzeXNwE2+Y27BOcZPrSWcz2V7BPjcY3D+2Mj39
- xXkv3pnoL3Yn7X2fzS6WW4Jubbn/ALapXN+GeLhu3/E01n/0dBXgf7Pv7Vev/Ff4l6J4dv8AR7CztZJE
- kea3Lb8q6EDk+oFdJ8ZvjBqHwb8N2Wq6bZW19Nc+IdYt2iuQQgHmRMTwc5+UVo6UlUURRqwlBy7Hy3/w
- UIUt8eLUqduNItwfX78lfM2QFGeDnbkj2r0v9of4p3/xe8eLreo2dvZ3C2kdsqWxbZ8pcg/N3O79K82j
- 2tkgjYAcE+nbtUzXJKzCMlON0el+FE8zRbQYx8np71tG1z39a8+0v4jQ6FZQWz2ZlEa43h8Z/Sri/F23
- lkATTn9iXFezDEwUEmeVLDSc7nKa+mNQuR/01b+Zqh4fB/4SbSvX7ZD/AOhir2sS+fPLKV2b2Lbc56nN
- UvD3PiXSiP8An7h/9DFePN3dz1oqySP2xhP7pB7CpQcVDFzEn+6KeDipKJVanhqgDc1IDSsBIOaXOKj3
- UoPeiwEganbxUO7igHNOwHiX7Wv7PsHxz8AmSzhT/hJ9KDzafIQAZeCWhJ9Gxx6HHqa/L+3t5rGSeC4h
- aG4hkZHEyYkDjqrd+vUV+16t1GSMDt+R/nXwx+2/+z2NN1F/iH4etCtrdELqdvCceXIekmPQ9D6E57kV
- Az46uSTEhLZcHceSP/1dKrygJ8pw3+7Vy8bdaruVSTj5xnJwD3/z2qoAH3Mfu44JpiGD5/ujGPWt3QRi
- 2m4H3ufesFTtAPfPQVu6FJ/o07EEneMDFSxovOjkn5lHpxmoszQAk4ce3anG8Cufkpq6lEVYt8nBrMo9
- Q/ZL+DGkfGLUdYttTvryzEOpWluv2XaCRM5VidwPIAGPqa9ltP2GPBM0Yvf7Y1rzPtMyjDx4wr4B+56C
- ua/4J54Gua+QR82t6b1/67n/ABr6009SNKUnnN5dc/8AA6hs0SPni4/Yg8G3SxLJrGskRtuH7yPn/wAc
- rY0P9iTwdf6lZ2jatq6RyOqZDR9+OpT2r3LOCcVq+FxjxBp5/wCmy1CbuU0rHy18fv2R/C3wp8OeINQ0
- rVtUuptOsbO6iS5ZCrmV41YNtQcASE/hXzJpOj3E8kbIoYAg5PpX6D/tn/N4O8dc/wDMI0zj/trBX566
- Pf3NvPGEkwpIzwK3MT9evgDx8FvBg6Y0yEfpXds1cB8BCR8GfBueD/ZkOf8Avmu7Zq0RIpbio93NDP2p
- uRViH7qUGos80buakCaiot1FAHdUU7bRtrOxY2kxS0UWAKKKUDNItCUu2gdaceOfb+tIVz8t/wBrO2X/
- AIXn4qIHzPdcnP8AsKK3f2OrVbfVfGbAYLadbjr/ANPcVcr+13qctv8AHnxggRmVbobcIT/Ap9K474Sf
- Huf4TT67cDRxqIvraKArLIYQu24jfg7Tnp04rJq40fo5+0GMT2fBz9queo/3K8dz0zj868U+N/7eU/iu
- 5tVXwkbH7JfTOTFqJ+ckIevl9MHpXIv+3jIMAeESSvGf7SPP/kOsnTZpzH0lfHFnOc/wHP5V8Xavbi78
- AzQOrIr2swLD081sn9TXVa3+2u2rlT/wi8kZUEcakdvI7goAfWvDLr4xzXfh57CPTNklxC6iR5Mld0jd
- Fxz19a1hGxEmaPhPU3GjxeVbs9suRu9Tk5q9ca/HDOV2cepODUfgS0Fp4XtIcksC2QfXJrZe2hPLRLn3
- XmmxGNf6qs+l3YUYPkv3/wBk15YzHbuA4AIyeRXsGrxImkXhChcQtzjHb/8AVXldjpt7quox2enWd1qF
- 6+Wjt7GJpZWAwchVBJxySfT0rSOxLOq+Gnwa8W/GM6+3haxt7pdEtlubozTeXnOdqLkEljtbHQcda5HQ
- 9Fv/ABfqFnpek2r3d9fzLDDAo3MzM2AOOgOevsasaHr2s+HzevpOs3+kvdx/ZrxLSRoDMgyCjgHpnPB/
- IV7h+wrZwxftD+HV8sOscFwVLdQfJfmtEZs++P2b/gfYfAf4b2mjQhJ9XuAs+p3qj/XzEc49lzgewFep
- 7zj/AB7+9Rl+/frUbSkd802NE7OaaXz3qu0uajabHegCaSUDvUDy+9QPN71C0uaYiZpajaQ9qgeXFRmW
- nYCcyc0wvz1qAyc0wyc0wPgD9vpy3xn01AWAOkQ5I6H97LxXkvjn4R6/8NtD8OanrElu0Ot2/wBotVtp
- izIuFb5gBxwy9DXqn7fMhX4w6dgZzpER5OBkSSf4184T393crElxczXEUChIllYsEUnooPQcZ4qeoGXr
- ytdagH+VvlUdam03TjuUnOP61fNlLcSiRIXlU/xhDg1p20bRKA9rMBjH+rI+v6U3IrlMJgA2SOM4x0ya
- WMENngPx15Pf/GvVvgV8Ef8Ahb+o61JfazH4f0nSo/Mu7uXBILbiBhiAB8p6kdPTNe8eFv8Agn5pnjrQ
- LjUfDvxAWfMRkhlkt828jA4wWVie+OAelZOfK7jUU9GcJ+w9rv239ojQrbyhFwfm35H307V65+23qo0v
- 4c6JKEEmfFesDaBj+JO/4V0f7Nf/AAT9+Jvwl+KOkeM7i90DUtJgYrMLa6lWbbvUnCtGM9OmR161t/HX
- 9mbxr8e9Ct/Deif2dZXdjr2pao82ozsqGOYr5artUnIwcg+3XrWntpSnzMn2VNLlS0Pza8Q3w1C5DiPy
- ztA2Zz+v4VRB3eoOe4619L6/+xJqvg27vIvEniC1iltVQ402N5QcuFHzMB/eHNcf4r/Z903S/h/qniTQ
- /FCau+lspu7cxhSqnO4ZBOCOCO2AfpRKTk7sajGOkdjw2+hMsnyjt0NSWumcoxGCvNXrCGS4hSQROykZ
- DBSQfocVpRqVU5hlGRjJjPB/+vRzMOVieG/C97488V6V4f0zy/t+oTi3hE7hE3H1Jzx19u2Cal8R+AtR
- +GPxXXwzqrwSX1hfQo72zl42yVYEEgHkMD0GOlcxLcS2915kTvFLG+QyEqyEHjv27elWtFurjUPFmm3F
- zNLczPeRM8s7l3c7xySep96BWP2qjPyL9BT6ii/1SfQVIDVCHDrTl60ynjrQA6lzxikpDwc0ALRmmnrS
- ZoAkB/Kq2raTZ+INKutN1GBbqyu0MU0LDIdTwR9e+fYVODilU1IH5VftIfBq8+DHjSfSiGm0q5Yz6ddB
- cCSHP3Sf7y8gj6VxGk/C/wAZeIvAeseN9O0VrnwtpMrJd3gkUOu3aWIQnJAyOQP5ZH3F/wAFEYo3+Fnh
- +YxK0yasFVyPmAMMm4A+hwPxAr4Ss/Feuad4c1Hw/Y63f2+g38gkvNNjm2wzN0yR+HPsBQBjR7/KDc7C
- Mgiug8NxE202fmG7qfpWDHvigila3uY7SR/KS4kQiF2H8IfpmtrRFkkhnMZUEMBgg1LGjX2EAduKhnsI
- rpDG68t3HrUZtron5mXr2zVVrq509284ExYzuUZ96zKPo3/gnmpj8Q68CDhdY01QT6+e39MV9d6ad2kx
- 7csou7np2+evz4/Zn+Nkvwnvr25g0xNT+16pbXDK8xjAEcm4dj15r2Kz/brvtC042cXhOGUC6ncuL5lB
- +f2Wotc0TPqoK5Aypzj0rV8Lo39v6eSpH75e1fIi/wDBQbUghB8HQn3/ALQf+qVNpH7f+pR61az/APCH
- wlUYEq2oNjH/AHxQoO4cx77+2XIE8H+Ofl3H+yNL/wDRtvX5/wCiXloJkM8Qznjj8q9t+Mf7Wl38W7fX
- dKfw3DYLqenWcJmS7L7RG0bf3B12d68L0/TpzcxnyjguM8HpWtiD9b/gU5b4N+DTjGdMh/8AQRXclq4P
- 4FnHwd8HA9tMh6/7tdyxrVIgUnFMJxSbqaTRYQ/NGRUYPFGTRYCTIoqPJoosB6LRTsUYFZljMUm2nHrR
- SsA0jFA6040gFFx6gBzml7UUo5pBZn5gftYJn43+Jzj/AJePX/ZWvAvFUf8AxLGJxyyA5P8AtjpXsf7X
- K6i/x18XyxFin2vCAMR/Av8AWvBb8agbWY3qMqAKVZnOM+Yv+NZ31GZPjzd/aNwAOBeynBBIB2pz7VyB
- ySSeT69c12Hj53bUrg/wNey9M88R1yI6DjB7VpcNQyCpOCRjseO3UVU0CCI3tiNm5CjEg8jOWxVsD5eg
- B4xweRnp+dYulQyPJAkQ8uUqwBKkfMW//XT0aEegeEYNSvNDS8juEKEtsjYYOM9zVy81fV1umVLScKPR
- eKu+Do0svD1tauRvQN8x+ua3HUc5559KysUchqF3f3mm3CTwzImwliRj/PSofhj8TPEXwa8bf8JP4XFn
- JqAt3s3ivIvMjeN8ZxyCDwOR6c11OqL/AMS66A6eU3Q+1eZlMkYxwc1rEljr+/vNc1jUdW1F45tQv7qS
- 6uXjXapd2LNgduSa90/YhUL+0Pobc7hBcjrxjynrxFIF2qwPfGB6/wCFe6/sWqI/2hNDBUbvJucn1/ct
- V2Mz9MGPJqNn545prSZzUDsXwqqXZmCBVGSSenX1yBj9aYyRnqGRveqlpqa35mAhuIjHK8LefCyZdH2O
- AT1wysM+3HFPZ+OM4oEKzVEz0jPUZk96EAMw71GX/KkdsfjUbNxVAPZ+aZuqNmxTd9AHwN+3r8/xf0/j
- 5f7Iizj/AK6SV83IoaQZAGcDjsa+m/25bfz/AItWDA4xpUQPr/rJK+dvs2GG0Z64456daVirn6N/spWc
- L/AHwtvhR38qYFmUEn989euNZW+eIIl6kYTpx1x+PavKf2V/l+A3hkEfwT9f+uz16yWz61dkK7Pn74Xf
- DTxT4J+JvxAub7QUfQvEF69zbXcFzEXQCQsmY26j5s8c5BzX0P4X19dBt7wvpN3cSyx5VN0P+s3qR/EA
- OnpjjioBjnHPringk89frWbpRY7nrHgv4rSSvp2htYRQ/aCU+1zXOxFJ6cbc5PYepFcfpHiweGNSuL6O
- O2vPOvZLR4458suz7xzjkZPPAwWA7V4l8UfiLc+C9S0tLa1iuDG0d8BIT96OQMOnqVAPfmvGvhz+05rG
- t+L9O019LskhutQu7gurPvDXMiO2M9gY8D61mklKw90e1fGrw3q3j7VtRuLHTnYXKxhB564BDDPJwcjn
- t+fSvPvir8OvGfi34a6ho1npaXupz2q2cbSXEECIMjLlgfbPQ56cV9DdRjHB7e1KGPrge1bON9SDgvgl
- 4KuPBfwp8M6Fq9pBHqVhZrDOqhXAcE5wRmu6WxtgQfs8WM/3B79Kefwpw/z+tVYq5+PnxUhP/CzfFgAA
- H9q3Qxj/AKatWN4bg/4qHSiBnF3F/wChCuv+J9ln4k+KWIyP7Vuv/RrVk+HbELremErhhcx/+hCoaBn7
- FxcxJ9BT6ihP7pB/sipKZI+njrTB2p460AOoPSig9P8ACgBhpvbPan1E5K7dqu7MwQKgBJJ6fnn096TA
- f0PenBqo2OoC+DlYbiAJNJAfPhaM70cq4G7rhlYZ74zVoNkKT3ApoD5h/wCCg6eZ8KNEXr/xN1PH/XGW
- vz8VDskLj5NjYBPQnjPHbr+NfoL+3+234WaGRk41deg/6ZSV8CtFsUFQCzVIHY6v8Y/EGq/BnSvhm9rp
- q6FYXP2iO6jiZbh8OzAMc7erHJA54BrnfDqonmOzYP3Qp9Pf3FZxjXylBBJHr0x3zWhp1h9sjkLSshBA
- yD2pMaNnKYxupmEmU/xryD7fWqX9ikNxcyfjVK8tbzT4neLdPGOuzqPqO9ZFEPg1Ct47DiMXqIMZ2qAw
- OT7cnHvU19hAQFbb50o+bqRv71T8GnepRtoAukLZOD8zdP0/z1q5extIoKK+fPlzkEj7/rQmMprhlxjL
- AcZPWrGnkNewjBQgjAH9aiMDq3Mbdj93pVixgke/iAQ/6zsMVd0G6LzRu99II2EchtYiG4yOF7VqaW11
- HKitLkk4LY9ap2/zahKX6iziJOMY4Arb0+18y5jYEEAjnOOnNBKP1b+A6mL4NeDUbll0yEE++2u7JzXD
- fA4hvhB4QI76bCf/AB2u2ZscVqthClsCoyc0pOaaTigQtFRlsmjdQBJRUe6igD0+kp+KTbWRY3FIRTjx
- SUANopxHNKFOOBUjuMxSrw1O20oXoaQ9T8wf2plB+NPig45+1H+QrU/ZmXSrG38c6hrbWVtpsGnRMbzU
- VXyI3WdGCFmIALYCjnPPfpXGftb2N9L8ePGDxSzLGbvCqvT7q1j/AA2vNPufhL8RPCHifV4tCttWFoyX
- txKFdjHLv2IGwDkouevFRa7GfV3jT48/CvxYLfyX8M2LRPIzESwOW34xnGD2rlj8Rvhc3I1TwvjOB+8g
- rxT4Rfsc/CPx94Gn8Qa38ZIfDvl3rWhSXyDGSMFfvMMDGTjt1ryz9pj4L/D/AODmq6Ra+DPiBB49t7uF
- mkmtZYiIGDAbTsLc4pukHMfSnxU+K/gjR/h7rd1oF14cu9WWD/RoU8l2diQDhRz0zXw+fHl2mny2f2ay
- MUmcstsAwJJOQc8dc123g/4PaF4i+G/ijxDN4jTSr/ToxJZWFw0a/bWLKNoYsD0xxjtXlj2czPIWU5BP
- p+NaqHKiObmE06+udPZzE7AHkgngVck8Q38gH78g/wCzmqH2ZnUYClVGW+Zeg5/n/OtXSPCesa7qB0/T
- tPkvrwK0hjiIb5RyzH2wOT6D2oSAq/2veOGV55MEdC3WoFupEwpx/wABNLc6fc2N3NbTRsJ4mKSKSMhg
- cEH3qFYZCc7Gx0A9TTsSPW9nDkjHTvzXUfDr4oax8MPFdn4h0f7O2oW6SKguE3J8y7TkDBPGelcuLeXJ
- ZYyvOM9qU20m1i6ExjqwB+h6fUdaewWPohf2+Pic4J8vRMev2Njz6ffq5pH/AAUG+KOkX1vfQLoX2iFs
- rvszgdO2+vDZ/hh4qtLy0sptHmjurolY4/lyxCB27jopB/GretfB3xj4alWLVNBuLWVlDiNyrMV9cAnH
- Q/lU3Xcpproe5eI/+CkXxd8UJbrff2G/k7igTT2QZbufn5rGb9vD4knJC6NyP+fM9c/79eJWHw78Qape
- R2kOly/aWwqrKVj3HpgFiuT7DmuvH7MnxRx/yJ1+QWzzs54/3qpEndv+3V8SiT8ui8elo3/xdMP7dnxI
- bB8vRgP+vNv/AIquJX9mb4oHr4O1AKOuCn/xVJJ+zT8UeM+DdQKjr9z/AOKoEdsv7c3xHbqNGQ4zhrQ5
- /D56R/24viQAPk0ZiemLNj/7PXDN+zZ8Tt2R4N1AjsG2f/FUH9mn4mA/8idfE46kJ/8AFUXYHbf8Ny/E
- fgeXo45/58z/APF0N+3H8RR1XR+en+iH/wCKriR+zZ8TPMB/4Q+/Ax0+Tr/31SN+zZ8SyWLeD7/kY/g6
- /wDfVMDI+JHxd134p69Hq+ui0F1FCsCtbR7FChiRnJ9WrlF1KVAQcE46bcHPtWr4q8AeIPBOoR6frmlT
- 6bdtF5ixyjkoT1yM9cEfhWQLWdRxCcbjzijUD2HwT+1h438B+G7TQtNTTDZ2isEM9szNyxY5IPqxrbH7
- cPxHBG5NH5PGLQ//ABdebeH/AIGePfE+kQ6npXhm8vtPnB8uePbhsEg4yexBFaC/s2fE0E48IagRjj7n
- /wAVRqB2/wDw3J8SSWwujAD0tD/8XTx+3L8RsDKaP/4CH/4quGX9mz4m7uPB1+T6HZg/Xml/4Zr+JxDB
- vB1+eOPuf/FUXYFrxp+0v4x8f3EM2otp8MkCNFG1vCV6+oLH3rjfDPjrVfDOtWmrWjxm7tp1mXzY8jcM
- dQMcc5rV8Q/BDx54S0mbUNV8M31hYwhTJcOuQvJHO09Oe9YHhrwZq3i24ktdI06W+mTAKxr0ycD88Y61
- PW5XQ9sP7dXxIAGF0cN/d+yHj83pT+3T8R+eNHIxgn7Geuf96uG/4Zl+J5wf+EP1HO0dk/8AiqD+zN8U
- Ap/4o7UTyOPk/wDiqrUk7r/huj4k4BK6L1PWzP8A8XSf8N2fEnbuEWjhQozmzbv9JOn4VxI/Zl+KJOP+
- EO1AKOeqf/FUN+zL8Uiwx4Mv2HplAQPruzRqBwera/d65q99qN0EW5u5pJ5MDGGZiTt56c1Wg1CeyuIp
- kK74mV1yvBOQRnr70XulXem6hNaT2rW9xBIYpYmHKMCQR1PQimW+m3VzLHDFAzO/yqqr1Jx39+nJpDPo
- BP28fiUoA2aLgHH/AB6Nn8cPT/8AhvT4lg/c0YjH/Pm3H/j9cKv7MHxSba//AAhuoHIznCdf++qX/hl7
- 4puWz4M1DkY/g/8AiqeojuU/bz+JZzmPRT7/AGQ//F0o/b0+JgT/AFei9+lkx/8AZ64U/sufFTaqjwZq
- G0f7n/xVKP2XfiqBj/hCtQ69cp/8VRqB3v8Aw3n8Sw5zHouMf8+ZH/s9NH7eXxMGB5ei8n/nzb/4uuF/
- 4Zb+Ky5/4ozUTn3T/wCKpB+y58Vs8+CtRPHXKf8AxVGoHdD9vT4mkt+60TH/AF5t/wDF1b0n/goN8UNG
- 1K2vrddE86I7lJsmPPp9+vPB+y78VlOR4Jvx9dmP/Qq5zxF8IfGPhK8S21nQLizuCgkWJihfaSfm2hs4
- 4PX69qW247HuviD/AIKP/F3xWsH9oHQSsG5owlgRyx5/j7VjJ+3f8SSi/LooIPT7IRxkf7deN6R8MfFe
- qyrDZ6LOZMAEnZGG7dWx+AHeumf9mr4k2+1JvCl3CXIRDLJGNxI4Gd3XvTvYLMn+K/7S3i74waHa6V4g
- XT0tbecXKfZoCjbtrKMnccjk8V5eZWyAWGR3x3rovFPww8S+CYI59Z0uTT0cquGlR23YPGFYkd+a5wQy
- KMYx8xypHOPWjcT0BpHUH5hz1PY1PaanNahhFtUN2bmoRCwxkYXtkdabI33AQCvIwRQNF5daumIyVQ/7
- S/8A16c2sXKkYZS3PO3oKbeaHf6dZWd5NaNDaXYBgkkwFkG4qcc+qN+VQyWE0Vo8zqvlRNsY8YDHnGOp
- 6denNJodzqPhj8VdZ+FV1dTaLb2UstxcwXTfbYPM+eJmZcDjjk59Rivp34DftNWnig62njibQNNiiYTW
- jmBYNxkZi45J6ZU8dMgV8aW0bXcpEO1yOcEgYP1zX0B+yf8AArwB8a7/AMQWvjzx2vgr7KImsyJ4Y2uW
- YsH+/wCm0HHvmjluFz6k/wCF3fDPbxrmg+n+sjqxYfHr4aWF5Bcf2xoEojcHaZIhnsfX1r4m/aL+Fvg/
- 4UePm0Xwd4oXxhYKGDXcc8TFWB5XKjB/rXpH7NX7OPwh+KvgXUNZ8b/EqbwbqFnKFltVeMqiEcMxZeM4
- NT7PqNs9d+L/AIi8M/F7wL4/n8O6lp93qy6XZr9g04o0qxxSx+bOCAOF2DPs1fGuk6ZJHJGBcy4JHXtm
- vfYtG+GfwS1z4hnwX45i8VRz6PLpds8sqATiUx7yu3G4qV4ArxfTSrSxOudvB544p2sTc/VD4GoYfg/4
- PjJJ26ZCOf8AdruCa4j4JuD8JPCRHKnTocfTbXak1ogAmmk9qN1MLUCFozTaQnFAD8iio91FAHrJGaae
- Kk20YrIsjoA704ijFADaUZpwFLtpWAZjnmlwcj607bzS7Qfbg0h3PzD/AGpY/wDi9ficHnN0TwfYV82f
- FiIPoVuDIExcbvuliflPpXs/7W6XT/HzxntnvUT7c20RE7fur04r518XDUItLLvcXxQOABKW2k8ge3c1
- C3K6Htn/AAT38FN8Z/GsfgjWpY5/Cr+bqF7YSoNkxQqDgj5gSNo4I4NJ+3l8HPD/AMLfjsdH8M6D/Y+k
- S+XJFbwpIUCmOPlc5PUvyM8gj3r50+DHi7xj4Q1w6r4Z1i90QWWGmvbGXy2hVnCjJ9Cze/Wvp39rPVrz
- S/iV8JL3+177xtPdaFFeSXOqTAv5u5tyBlAwEZTj09+a6nrZmJxHjRPhzZfBXTorLSraHxcz7HYFxN8o
- UNu54OSe3avDZAJbGERRqJmDbyg5H9K6v+yNR+Ivie9nigW2Z5DJcCJNoRifurjAyeprv9L+HGh6Pav9
- sijubkZ5kTcRUzqdCoqx4lpkiReI9K+2OI7AXES3G8gIELDJJH0rS8MeMtW8La9cXWi3Bt2lSW3DmNHD
- QSZUjDgg5BPPvXr2ufDzw7rUDLalLa6xxtIU/THQ14d4k8P3XhjUZEb5HU5BHQ+4qU+wPQ6PVkmi1G7k
- nmaWQyv5juu0lvUYP8qzN218EDGeSKi0/VptVLC5ld/KUkB3yOh7UiBlG8kBQeF6A/hVElpXUghSQ3BA
- J61PbSZfAQy9yg788c/U5qny54x0z9BWn4dRJtXt4pTvBzgZ4PBpPU0g+V8yOz1O51fUNObV47q+32sY
- d/tBG5FY+TlXXt8gGPTFfRP7I/xA1TX5Ut4tEsvGfiCVXstmtSht4cja3Pdcgc8YJArP13R9Kh+AN6k2
- ntKsnlqI7b5ZC5b5CD7Ng49jU37Jvhy60PxrbX2lOkMlg3mXE4iDbmDAsADwQCFArCVJJrU9CpjJVaXs
- 3FG9p/w88UXmi+I7aLwnpd8J76bSlvZ7nL21xbPtmWNAygcsPnJ7cV9BeCLS/sfCGkW+phl1CO2RZg77
- yGxzz3+tX7DSYtLjuIomkaOe/u9SYOwIE9wwaUjuASoOO3TtVs9Wx0zW8Y2POvoIajYnnmnkVG3erIIm
- 56/nUbU9jg0xuaAG0jDIpaQjNOwHwr+27P5Xxb08Zx/xK4jx3/eSV89pekY53ZAABPvXvH7djhfi7p69
- zpMR46/6yTp/Kvm57sg53bcY49OelSB+mH7LzeZ8C/DLZB/dzc/9tXr1gHk8CvI/2UCH+AXhZh3jm6/9
- dnr1zHJq0AU9O1MAp6imBxPxw8J33jj4Ua9oelRCbUrtI1hRnCLw4JyTj0rwH4Efs8+MvA2q3c+qadHD
- HM0JUrco/wB1iSMBj25r64XOakXNRyjFQcDv7jvUq01R7VIoqrCDGaeFyD/n1oHWpFGf8/WgD8mPibdl
- PiN4qGcD+1Lnof8Apq1Y+hXQbXtNX72biPO7/eFP+KUmPiT4tycf8TS6wT/11asfw3JjXtK2jg3UXLH/
- AGxU3KsfsxF/q0zk8DrUgHtRCv7pOvQdalxjtQIZtpwHNOH0pQKBCUA0/Zk0uzmgBueOuOvP4Yrw/Tpv
- F8Hxk11ofAkXiSS+DabaSaxGBamN2CoVY8ZGfyzXuipTkR47i1mRtktvMs0bYBwynIOCPUfSpnHm2NIu
- x8oxakfh58NPGN5r/hlLi3vrmbRre8W5BWC7t5P3w8oAAjjAPX5a+bD8ZPHXi6+tZr7WbpotMuI72Fxb
- ofJkQ+Wh5XB++F549c44+w/2nfAM8nwvlt9Pdnsk1afWLiOTktczks7E9dpIIAHHPpXjH7PWgaQ9zrNy
- ZUM4tfLhtJUB3xlgWcsOPlIAwawlT5nud+HxX1dN8qd+580+NNQubzV7h5xLud9pnnkV2mxkD7nHTjmu
- bMhUEZxk5O3ivRvjVZw2WvXCxR+Ugn5XB9D2P4V5iWbr6muiMUkcVWbqSuyQy9OSp7be/wCNV2Xzp0RT
- lznaigl2Pt2pS2/vgDoKrahM1tbCeJzHKpIDJxjp3pmRc8Ra3rKQWOk3lzKsFvHmGGQBWQEsT0Gerk8n
- vUd9JbTaZoscBD3Hkym6IXnd5jbd3H90CsyBbjWLrfPJJNKW25JyenHNeteEfh7ZWtpHc6qM56R9v0qW
- B5jMzMkjbUyT8mP8a9c/ZBtPDviP41eGtG8WaVbalp+oahFbPb3Q+UqxGf0X8q6W10TwtemSB7KHZgBS
- EGR+Ncb41+HEnhKQa3oN1LFFE2/5GKtHzwysOnvnsKadgaPQvjR8LdJ0D9rK58M22gLpWiNqk0cds8TJ
- GIckxlc/w4KsPY19BftGfBHwp4L/AGXND8XeC4NOsFup4bW8ktIcC/jJZRJg9T7kHrXyr8P/AIpX/wAQ
- PiN4Pi1q6kvNQtndZNQugJbiZF+aMGRwTnBC8DPGBWv+1V4r8R2erXHhzSdd1LUfDWkWtvcNaXTgRWW8
- 8KkYVV2hnUDgkVtG1jN3ueK6T4cN5c3Be5aB4ndQFRhyCBgMe4wPyrotJ8OCKZFW7mIJ/irl/CN/5moB
- p5Sq+WxwTgMx7/jnOa9B06+t2uo/3yttYEkfrWEtyz9SfgfF5Hwg8IRZ3bNNhXJ9lrtye1cT8F2D/Cfw
- my/dOnQkfTbXaE4qgGnrSE4pSaYT3oADzRSA0tABRTc0UAew7aTFSEUbayLI8GjBp+2lC80AR4NLtp5W
- nBeKAIsUuAcfQ1JtpMDn261IH5hftPR/8Xq8U5Ax9tf+lfO3xWTZ4OmYDcRLHzj3r1v9rvXprP4+eNIR
- dSxbL47VCZABVT/dr5x8aa7dX+jvDJcySozKdrJgHnv8oqFuXsjlvh88g8F+M2Q7JBZwbWJ6H7VDg47c
- nH4V7N8T/wBoa71/4beAvAS6Lb2l74QZymu+bvmuCckgjGFA3d8/hXjvw7hNx4T8YQxuEZrW2C5O0sTd
- RDB9R9P5V9AfHb4X+BPCPw4+FhD3enfEXXoWutXWVpGiNtuZFlQHgE7egIGOa6n8JhfUwvhlaLbeEReh
- iJ5XMrOp6kk/0qrqk8l9dSjcUXpnr3qz8K9RSbRrjRW2tdwSFDkY4ycP9OcUuq6Hd6bfyuqgwyfejK5O
- fY5z+VcslZm6ORvpbrSrwMsh4+ZWGVyMjj+dWfiHpkd94csNSEY3hVV+cEg55rWTw/ea3KkbA+UpyBnA
- X/61ZPxR1xLDSYNIiK7oTl9jZGB/+uqjuJnm3h2FIZZQhUkxvkEdBj1q0rtvUFd3Of0qrolxJM87sAoC
- sox9PWrTAZO35Tn61sZiqnOSGIPXHpVzSdRGm36XJTciHGARn0HH41UVmUY6ckE1u+CLyGw8TWc0trFe
- xoDmKcZQkr6H86PQaR6bonxFbx5pn2cRfZW01fLX++wbksfQDiux+DHjPVdF+MHhPSxNc21rqEphe0t5
- QoYBWJMmQdwzkjGOhpniLwNpMGjWni2PTltIVXZdtBgRjoEIRRnPXnB4rr/2TU0nxv451iZtOth/Y6pc
- WN1HHiVtzEZYnPGPpwBWdnfUu9kfXxGCchevRRgDtgUU84ycdPWkK1szMiYcVEwqwV4qJlxQIgYU3FSs
- vNMI70AR4pNvepMcUmOPaqsB+f37eQ/4vFpuGCn+yYf/AEbLXzZnorjPvX0z+3gMfF+xwDn+yIeR/wBd
- Za+booz5QC8E4rJrUs/Sz9k1P+LAeFcdPKm/9GvXr5XmvJP2TY9v7P8A4UXp+7m/9HPXr4XJrVbEkYXg
- 09Up6oOakC0xDVSnqlOVKlVaAEUcAU4JT1XmpFXigCMJzUqJ39x/WnBaeg5/z70mM/HX4qZb4m+Lk2Z/
- 4m13knoB5zVi+GIyfEWmKRlTdRYP/AhXQfFaH/i5nizjOdWuvoB5zVj+G4wPEWlgH/l6j6f7wrLqUftB
- En7tcegqQLinRjCL9KeFrSxIwJS7KkApwWkIjVKds5qTbTglAEYT2p20/SpNhHPal2ZoG0fOn7YvxMuv
- BnhzR9Bgt0dPEMkkElyzYMGwxsOO+e46V8W6jrz6Dey6nuSOWyfz0jQ4XK8tx6HAr7p/az8OXd54Ns9a
- ih0+4tNJkZrmG+RmLLIVRfLA77iK+XbH4W2/xCvYYmsNtsT510U/dhYwRnGT3yBxzWcou90WtjwXxp4w
- uPFtwbmcKsruWZUXABrluDnO455PbvXofxY8K6d4YvntbCIqIpfLVixOcA+teeAMsoGecdO1UtiWO2hQ
- +OvUE+lVNTRJNOVckAOdxXvwKubS4dt2VHB46VBqT40+PC8eY3AH+yKaEbXw706K71m3QFmUZfk9eQK7
- HxDezrdy2sLNGm7aAPTOK4XwRrP9n6nDO3CqQp44x/8Arr2S80D+1LdNQh2sT83yDiokikc/pWilJwFa
- e6lVG2xRSKgLYJBJwem3oevNdZoF2NS0mZbgtIPJYhT78dPeshLK+37IcwMyshkjznawwR+I4PtmtCZl
- 8IaVPPdbURkYH5ucdx/LH40lcGzwbVbI2niKTyXaKS2mZo3Rtp+UkjB7H19j9K7vxh4xfxrafEfV2iER
- ubOykMYOduZowcH+ftXOW/hPVvEPiTSLG3iX+0NVfzUWV9o2Nls7vQj+Qr0b4z+D7DwQ/j3TrQCCJbCx
- VISfm/10fC568ZzXQk1HUyb1PH/DejvqzR26TRwnyy+5eQBkdOa7TSPBs8VxGBdodxAzsP8AjWF4DaOL
- VsvIka/Z+ecDORnGT0r0rT5rf7THi4jPzA4Dj+lYFn6c/BSLyPhH4QiJDbNMgXIGOiCu0bpXI/B47vhV
- 4UOc506H/wBBFdeelaCGHpTD0px6009RQA2lzxRjikoAKKdiigD2SinYowKyLG0fTrS7aUCgBuCetKFp
- 2DS7aAG4FGOKeOKMZP0pMD8xP2m4xJ8afFZPP+mP2+lfOXxfxD4VWNdg8yYDLdeATx+VevftY+MZNL+P
- XjO2Q4KX78GPPUA9fxr5z8a+Kr3XdMSCPnbJkhYjnkYzWa0Zb2Iv2VPhRB8XvilpXh6Xcftd3HATkrlT
- ndgjB6V9dftZ/DnSfg/+1B8KfDugzXk2mNbRqBf3klzIEeUqQJGbcBgnAzgZOOK+a/2dtH1T4bzW/wAT
- NM1Fnu9G1AH+yYYMvIqKp3MCwyv7zHQ8givUf2pfj/cfHL40+B/HEPg7VNJtNPgSNLa5YNJcbXLMUx2O
- T/Oup20MbNnifxDvdcsPFt/r62b2cTXLwi4hB8pgjFAvU88YPOeK19P+NQurExajaF5CMF4cMMnv24ru
- vih4z1DVfh94f8Pz+EL/AE27srbUvLmuJEZW8+/EuVAOcIDt5GcnjjNfPDWMllbCCWMo+SisRlR649cd
- KifK2NOx6Lq/xikez+yafa+WW+TeByeMcBcnPHr3ryu9updXu3Llm3NtJbglq07S0udNuLbU1jVks2Rg
- HGfmB4JH1qnwZ5JnHzMxkPse5H50JJId7mpb6K+jTTWxBUoCjnHzZHWotuRtYZYdDU2q+ILzVpmkuGVm
- LNkgY6gVQ+0yvtLEE56UIRaEeIzu4wcVa0qcWd9FK3zKuTtC8ng8e9ZhvGVSAFOAef8AJqS11R7WZXVU
- JycK5IB/L+hpvQa3Po3U/i1Zv8D9RsLbz7fVdqL5csO7KFzGxXHtnn6+la/7CHiPTtH8ReK31O+s9Oje
- 2iWNrmZYhKd7fdLHoPavnTU/H+qajZwWzR29vbw7QsUEexCQeGPPJyxNYj6tJIwyi/UZxWMp1L6I9OlS
- wrj+8k7n67R+NfDsxwmu6a/OBtvIznrz19xWtFLHcQpLFIssTqGV1IIYHoQa/HiLXrm1y8ezcDuHXgjH
- PH4ele6eHf24vHPhfQLDSLSw0aW3soVt0aSGQsQoxyRJjNOEpP4jCvToR/hyv8j9EmFRupxnrXwB/wAN
- +/EFkb/iW6GD2/cS/wDxymf8N+fEFsAaZoRORn/R5Md/+mlbnEkz78Iph618Cf8ADevxAPH9m6DwO1vL
- /wDHKb/w3t8QA3/IM0Mj/rhJ/wDF0rgffmM0Y9q+AP8Ahvbx8zHOm6GPrby//HKD+3t4+AI/s3Qjjv8A
- Z5f/AI5VXQWLf7dMJf4v2H3sf2RF/wCjJPavnNrcgbQGzwVI9K6n4pfGbWPi74kg1vWLezhuoYFt1W1R
- lTaGJ5yWP8Vccl9JtXKjG3Hoah6lH6XfsoqV+AnhUN1EUv8A6NevXcc1+b/gX9r/AMZ/DrwpYeH9MsdJ
- ms7MMI3uIXLnLFjkhwOrHtXQ/wDDe/xA4/4luhE5/wCeEn/xyruiT9AVHFSBa/Pv/hvn4gbiBpuhcDvB
- J/8AHKcv7fvxBIH/ABLdBVj6wSf/AByjmQj9B1GKeBX57D9v/wCIXbTNCPOP+PeT/wCOU7/h4D8QwwH9
- l6Dz3+zy/wDxyjmQH6FqKkUV+eJ/4KBfEMZA03QcjsIJP/jlL/w8I+IIA/4lmg57jyJP/jlHMgP0QUcZ
- p6qSQfcf1r87h/wUI+IZVj/Zmggjt9nk/wDjlL/w8J+ImMLpegE+n2aU5PpjzP6UnIqx4t8T4D/ws3xe
- V+YHVbrj/ts1Y3h+JY/EOl4Gf9Kj/D5hUGueJLzX9f1DVLgRJcXs73Eqxj5QzsWIHPTJqtZ6zPZXsNzG
- sZeKQOu4cEg5A7Z56+1R1GftZGv7tfpTwK/OVP8Agoj8RUAUaV4fAUY/495cf+jBTv8Ah4n8Ru2laAT2
- xby//Hau7Jsfo0BT1XNfnF/w8V+I3X+ytAA97eX/AOOVIn/BRP4jHk6V4e2+1vL/APHKV0I/R0L2p4Sv
- zjP/AAUU+I6Y26V4fI97eX/47T1/4KL/ABHGAdK8PE+n2eX/AOO0XA/RwJgep9KQ7QMFh+eK/Of/AIeM
- /EcAkaT4e4Gci2lPp/01rxPxn8afE3jnxFqGsXl21rcXsxmaO3kdY1z2UbjgfjUyk1sb0owb9+Vj9NP2
- l7iOz+CviOfcreWkRALd/OTv2HSvl34Y/ELS/DWk65ealH/q4Y1WeDJKrv2CML/FkkHd7V8iz+KdUuo2
- Wa7mmVjyJJGKk+vWpdN8Yarot0k9lcPDIoxuJJ+X3Hcf4VmpzfQ7HSwvLdVNTp/id4o/4SPXrhhZzWqL
- OTulzyOneuHA+42cc4yRx071q+IPF134jnMssFtAQfuW0exeOOmcc9fqTWP52c7QCCOfrWiPOla+gbRg
- gYx688mormKS5WKCMZ3E42jJJxzjmpftBdDwM0sErQzRzRjEkffPAyTTRJlSwyaVOiMHUuocDGK7/wAK
- fEjUfD1tBHLC01owym/5SwHBIJ4I4Ncnqc0urXSTXL75kRVBxgbR6VZubu51G10y02oE0+J44iQBuVnZ
- iSWOM5Yjj0oBHoN18Y7eON3gtGWWQ7suFAHH5/pXNWGoat8SdYVVtp7+0tv39ysO7y0jBGSzD7o5HPHX
- jrmuc/sWZi6bxzjgOMKMV7F+zt4g1j4b+H/GVtB4ZutcGuWUMXm28iqLdUuIpNzEnBB2EH04J4qo2uN7
- HRrFZ6D8WfA+j6XLbLpmpQQXEos5HZY2/eloldmJG0oFOcZwc9a3f2uv2etE8DfDP4f+L7Zrm6u/EGmt
- Ncy3F1JIzTLGGyNzcLz0FeeeL/Gep6X8XNF8QX3hy4tHsZZXFp5wkL75pnADqSvHnDr1wT3rqfiv48v/
- AI7+AdMsL83/AIej8JWqW6xySLOLh2RgNoJUY3LlupwTjgVrzJpmfLqj510DRZtfhVraWJH2nCSswJxx
- xwc9OldXpPg/V7a5TE1pycclsHP4Vn+B472x1aKCdXt7Zd4dXBVN3uD0r07Tprc3Uf7+Mnd0DA1zN3NL
- H6WfBWJofhH4QjcgummQK2OmQgzXZbcc1y3wgUH4W+FcHIOnQn/x0V1rLxWiEQsM1FnFTsKjIoAaORRt
- paKACiiigD2fFGBTttG2sixKNvelxSgcUANpcU4CjafWgBu2lwAOadt96No6UAfmH+0pZRzfGjxYWiRi
- b+TkivKjp0B628X/AHwK6v8Aau8X3mmfHnxpbRQhhHfvhiPUA/1rxCf4ia2hwsUPHqhP9ay3ZR6PFbRw
- AiNETOCQuBn3rzL4l6w9p4v0afT3jubqzDuUHzY3cYI+lWItd8Q+K4zbI3koThlhUruHuaxdI8I3Gg+P
- rG11BQ0F0xdArc9DnPrzT1ZI++1ybxdet9sKQS2wyIl4CgkZIPfOBXVt4b0+68EFpraNpkikkWQj5gwD
- YwayPilpyadcWEllCsLMjq5jG3cBtxn9ax7bxtqGgaJ9gmjWa2nVkVyvMYPXgde/Wh7gcpJoV+vhaHVp
- Mi1dyHGQCTk4wPrWLndyQoxwSO9ei6LENcay0KeZ/wCzZZidiFQeAxGDiutf4PaESQftBP8A10/+tV3s
- B4ev3gFy3zd/xpAAylsqTjua9tsvhjoNtq01u1sZ0NvvAlkOQckE8Y9BX3L8Mf2UfhRrfw58N6hfeC7K
- 5vLmwhlmldpCWYqCT9+mmKx+Vu4HJBKjHSmIxyACSffFfry37H/we/6Eaw/77k/+LrjfGP7Gvwo1XxDo
- WnReG/7Kt5I7iaRrCd43coEwMknj5jViPy4ABzxn02jANEijbnnHQ89K/T2X/gn98J41AFrqo29B/aDc
- fpXxH+1l8L9D+D3xck0Dw8J49OFlDcYuJfMbe2c8+nApO4HjWeQTxxwfWm7tuT6nrSrjGMDtjBr7c+Bf
- ww+Fdv8Asy2vjnxtoFrdNbi4kubqRm3vtkdFUAEAk/KBnqQPSl6jS5nofEAOemOTyCOn40jMVORtB6YA
- xXr2seGU+KWu3F94f8KW3hfQ1BFrBGzDcucB5CxO5j7Yrn5vhFdwu0ZudrR/KRt6fpXK68E7HtQynEzj
- z2OBfGevB9u9IOgO0njPH+eldw3wnvD0u2Axj7lIPhLeYx9tfGP7o/wo+sQL/sfE9jiNpOSR2z1oBIGT
- kcY45rs5PhLdr8xvGPr8n/1qjPwwuMD/AEyTj/pn/wDWo9vAP7HxPY44Fv4t3Hvj9KN+44IA712I+GN5
- JhRfSk/7n/1qkHwlv2B/0qUg/wCyKPrEA/sfFdjiwwJKjB7n0oBwGIOOOBnHNdsvwjvQf+PlwcY+4KcP
- hFfbubpzkdlH+FP6xAX9kYrscOZAeeVHfIzQjnsSxHr0rtv+FSX7KSbmTjjG0c0qfCO+YLm6dOcZKCl9
- YgP+x8V2OI3hjjDHtSsuYwQpPPNdyfg/e8j7cwx3CDmmf8Kgvs/8fjY/3BR9YgL+yMT/ACnDKcngFeac
- ZCFY4PfPP0ruH+EF6qj/AEtyO2EFJ/wqW+X/AJe5MfQUfWIB/Y2JfQ4cMckgLjPekZxkEMufYV3Q+EN6
- y7jePn3A/wAKP+FQXuQRdtgdPlH+FP6xAP7IxPY4hjwD+HA70AlFBIY8Z4/r7V23/CotQAJN5IcjH3BU
- L/Cq8hUbryRef7o/wpe3gP8AsfE/ynHhQR07ccUKePmyvHBFdZ/wrK43ZN9If+2f/wBarCfCy7lUmO7k
- IH+wP8Kft4B/Y+J7HFLnnOSO/wD9alD8jIA9sGu2Pwpvjgfa5PrsHFKPhPespzduD2Hl9aPrECv7HxPY
- 4xW56bh0OKkztBPYdm9a7BPhTeKT/pLgYyTsFNHw51XQ5INTeNNRtY3DvDwTgEdR6Y7H3wR1NxrwZjUy
- rE01do5MtgMQSOOcjkUKccBif61+gv7L3hn4G/H3Rbu1ufh9p+m+K9MXF9Zo8oR1OB5sRLfdJxkZ+XPe
- vg3xlZw6b4u1qzt0WG3t76eKJAc7VWRgB19q3TW540k4PlaM0MGO3BPbC96c0bbQR06cHtSQL5s0MWMq
- zgHacE846j61+otl/wAE9fhFc2kMr2urF3QMcagwGSPTFNaiPy5wCw+XBz1pwJ+Y8k9D6V+hXxt/ZL+G
- XwQ8JWfinTNCl1eeHUIYGstVvHktpUk+QhgCD3B49O/IrvvhL+zf8MPGdlry618PdDgu9L1WXTWNjJP5
- bhFQ7vmfOfmPWnZiPy1xnJXjORz7YPSlbBbepHPNfsMv7HXwdwD/AMIFp5PGfnk9v9r1r83f2gvhNH4d
- +MXjC08P2sOn6NaX7QW9uGb5BgDAznuf1pPQDx1sNjB5966b4fWyT60ySoHVoWyGGcnIp4+Gmtkgb7YY
- 77v51TuLLVfBl0soPkykFRIBkEHrSAjsvC+qatf6hcWskUcEMpTy25LnPQVcsovsurWZmlMISUBwX4Ud
- 66bwFe28NpOJbhVklfzCH+UE4HSuP1+2nv8AUZobVd0kszLHnpyaTGa3xC8R21q1m1tMk0sLmVjH8wHA
- Of0rnHm8R+P5FWNSIFJ+Y/JH9frVseBbvR9U0qO/ljuEuJhuQc/xLn+deuRWUVnAoRUhgUYA6L+NAHkM
- fw114dZbXb/v/wD1q09I8A65a3SlZLfceM7unSvSlkh7zR/99CrNk8P2hcSKQCCcNSHqfpD8FIXg+EXg
- +OQgyJpcCsV6Z2CuyIzXMfCAA/C7wsRyDp8Jz1/hFdcy1qhFVl4qNl61ZdaiK9qBEOKUJntUhTFJg0AM
- 8s+lFPwaKAPZcUYNPyaSsixu0+tKFpaUDNACUU8dKKAG4o25p1Hr64pMD8xv2jIYpvjN4tYopJv5PvDP
- evMTZQ/88ovptH+Fbn7U934hj+O3jZLFpFgGoybAsW4ds849c14vPfeNh9yeXb6fZ1/wrLqUenxW6w5K
- RqhP9wAce/f8q8p+IWsg+LNJn0qeGa7sgcjO5QxPQ49qvWOk+KPEkTw6ndTLECPkwIg35DJ/Gsuz8BDw
- 38RNNSV0mgumLKo4wR6j61SJIJtevPEOpuuqKiNCuURVIXB4PX6Cuu/4R6y1LwK5lt0kcW8jrIF+YN82
- MN25FZ/xVt0iudNeCMRuyNuCD7y8YzWH/bmtaDosEUTb7KZSrCVMlc9cHjHf1oA5bT4b4x2S2MjpqCNv
- XaQHGA3+H611Ft8QPEccWy4MPnRjaxZOSR6815f4xvpGkuPJkaJA4I2NgdB2Fcit3cFz+/kwx5LO39at
- xuJbn0Da+OtafUmkeOGQtDs2qD0yef1r9Xfg4PM+Evg9yoQvpVsxGOmYwa/DbSta1DTBIbW9uIxJgbUk
- Ybz6Hnmu6sPjz8RtPs4bW28deIba2gVY44YtSmCogGAAA2AKpKwXP28aPrx+lcrrZWHxv4fLusQNteDc
- xx/zx/wNfjo37QPxLd/l+IHiZh3J1ObH/oVYviL4n+MfF8MKa54o1fV44CWjS8vXkCE8EgMevA5qgsft
- 7LdQYx50Qx/tivzA/wCCgkyN+0DJ5bo3/Estsspzz83H8vzr5qj1C9kYf6ZOctnmRv8AGpJzMZN0sjMx
- HDsx6fU0mFiN+Rk53Env3719OeGbS4+Ingf4B/DATtDpWs6td3WohTy0SXJH6Dea+Yid6r97PqTyOK96
- /Y4nvLj9oPwEs08ssFpFeyW6yfMsQELscDooL5JrGo7RbOzBxUq0V3aPaPHGmf8ACT+KBo/gSwlmtLiI
- TRWtunzsqpkpgdQoB468V43qGlywTskqPDKrFWV8hgR1BB5zX2R+yppyP+0bpSbVIitLqQ4QKBuB7Y9/
- 1rqP+Chfw+8PaPZ6H4gstPitNbvbswT3MI2+agjJ+YD7xyAMjkfSvn1Scqbq3P1/6/To4ynl7hpJLU+B
- hYH1Jo+wH1P612A8NT46x+nLZ/pR/wAI1P6xf99Vw877n0n1eHY5D7Ae5bH1pP7PPbOK7D/hGLg/3PwY
- /wCFIfDU4POzP1/+tT52P6vDscj/AGefcUf2efeuu/4Rqb1T8/8A61H/AAjc/qn/AH1/9alzsPYUzjzY
- H/a/Ol/s8kd/zrr/APhGZj3T8z/hR/wjVwOmz8z/AIU+dh7CmcedPOe9L/Zpx0Ndf/wjdx/sfmf8KP8A
- hG7j1T8z/hRzh7Gmcj/Z+eufzo/s/nv+ddd/wjdx6p+dH/CN3P8Asfmf8KXOw9hTOP8A7PI6ZpRp5J/i
- /CuvPhu4A6J+Z/wpp8OXHqg/H/61HOL2FLscoNPIzy1J/Zx/2q63/hHZ/wDY/wC+v/rUf8I5cf7H5n/C
- nzsXsKZyB0457/jS/wBnn/arrv8AhG7j/pn+Z/wpf+Ean7lPzP8AhS52P2NM5D+zz7/jml/s76113/CN
- T56p+f8A9al/4Rm47bPzP+FPnY/YUzj/AOzz/tUf2ef9qux/4Rq4HdP++j/hR/wjdx/sfnRzsPq9M419
- PO08nntmnWST2cwMLNtPLJ1yPX049/euivbA2cpSQDdjPHIx7/8A1q/Qb4HfCLwlB+y8fEFpolp/bl9o
- ly8186b5WfY4OHbkDjoMdK68PCVVtX2PBzavRwEIuUb8zsfnl8J/F918Mf2ifAFxbBIbO91D7BcKq4JS
- UiMoTjoCVI91FeD+PZCvjvxGnpqVwOpP/LVq9M/aAM+nXPhK8t7l7WZLkvFNF8jxPnOVZec5H14FeKPd
- ST30ss8jPNJIzO7HJZickn3Jr38Pdw1PyvOqcY4ltIvWUm29hJwB5qkE/Uf/AKvxr92dMu7cafag3EYP
- lL1YDsK/BgOTG2HKsBkEckflUQ1LUFhwl9c4PA/etj+ddR8+fr/+2pJbzfAy+IkR2juEmXa+GDIjurD6
- ED8sd68g+AP7QepeBvBXgi3urFNb1Dxnr1yl5qFzMdwfzY495wDu+Vs/gB3r834db1O1kWRb65yhOA0p
- YcjB4JrsfDHxAu4dK2XOqzwtYuZbCMSlfIcjJaPn5GLBTkdwDTuWo3P3QVQVH3unv6e9fmB+0jdW0Hxd
- 8ao88aN/a27azgHG5en5V84H9or4oH/mofiZic4J1Wbr6j5q4rW/Eep+JNSudQ1PULq9v52Ly3F1MzvI
- 3qWPJpPUmx9Kf2nYFiPtluSDjCyL/jXGfFSRH0+xZWD4kPKtkYxXh5eY4UzOOxG41bgadZtjzOyqvR2J
- FJKwjufCvg/UvECS3kN35KxNsRDnnjOf/wBdb9lbpbanayTyKoikG5ycAEdSam+Hvi/S7GzNpdS+RKTn
- cQcH5QOw9u9Y+rWE+u6k8Vs5VbmUhT0GGOefapGavxB1+182zfT5hPPb7m3RDIBwMfqKxEh8UePnDO7x
- WY5XHyJjtnoT+tXpvAa+G9V0jzJkuRPcJ5g29MHDY9eor026ubTSLYS3M0VrCuBuchFFA7W2PLl+F+rx
- j/j7h49JG/wrR0z4ea3BIoS7QAkf8tWArs18X6Cw/wCQta888SVZtfFmhGVf+JpbHkYIkH6+tIVz9Lfg
- rC0Pwi8HxuQXTS7dWIzydgz1rsiPzrk/g4Vl+FPhORDlX02BgeOhQeldhitlsIrstMK1ZZMimFaAKxGK
- TbntUzJz1o247UAQ7faipse1FAHrtKBmnUVkWIBiloooAKKXbS4FADaMcGnYFGcYpMD8yP2h3UfGPxeN
- wyNQl7/7VebtKm4kOPzFdN+0x4TfUfjh40nEyr5mpS8HOeDj+leP3Hw3mkY/6Ug/A1j1KOxvNUtNOiMl
- xcLGn+8CT9FHJ/CvJ9f8Rr4v8ZWKaaLiE2gKrIRgsx5BAP0Fdjo/w6jtmZruVZhnI2DpWXqtnpfhHx1o
- 0iAWyTgmQtyBjoa0JMDWINTsNTkbVZZpvNX935p4PI+6Old3phg1DwGUHl7TBJ8rHG0nODxXM/Eq/ttc
- 1Gzhtbje1urF9o45IA5/A1TuPCV9P4XS9tZB5IjctGJCCVGf/r0AeM+ItPniu57NRJLIj5yozn34GaxD
- pOpO5Bs59uM/PC2f5V6j8NtcTSfHMt5dRu8bxvG4QElc7eecdMe9e4xeMNHljVxeRgdcFSCP0q+awHx+
- ml38aqTY3DHnAETjP046jI/Ctu18EeJr2KOaHw3q00Uq7lkSxkKkdiDtwRj0r6q/4SzR3RgL2LoeCOpx
- X6W/B2NX+E3g9sAhtJtj09YloUrisfhg/wAP/FbHH/CNauu3ByLCXk/981LH4B8VeZn/AIRrViC3INjK
- PXP8NfvuYEA4UflTGgXP3R+VDA/Biz8A+I2aNT4e1ZQCu7dYyf4VS17Rb/Q54o72znsXdNwW5iaMkAnk
- Buo+lfvc1sOwH5V+bv8AwVMi2+P/AAP2H9mzDj/rqP8AGn0GfDp6D5jyK+hP2MInf486A5UqlvoupzKS
- vUeRMM+p59K+fTtIIxzjt2r6T/Y1uzdfF0L9waf4Q1HG5e7eb/8AFisKvwM9DL1fEwXmfY/7IMQn/aJk
- k6+VpczfnIn+Ndd/wUfuCNI8FW+Th7md8Z64RR/7NXOfsWp53x21iXBPl6S3b1lj/wAK0/8Ago/cA6h4
- Ct89DdPj15iFeRHTCP1P0CoubiCkuy/Q+Vc+v86TPufzppJBxSg15J+hJ6C03NBNJQO4ZozSbqN1BncW
- jimE0m6gm4/I9BRkelMyaTdTHzEuffFIW59aj3+9JuzSDmJCc03fTd1Jup2Fck60oJFRb6cH4osK5IGp
- ai3c8U8NkUFpjqcOlNzmnCkMWikz70hbBoKuc94jGLtTnnYCP1/xr9Jf2XT/AGh+ybpUX3ibG7h/J5F/
- pX5s+JD/AKQhHGUxX6QfsTy/bP2atOiPOyS6j/8AIrn+tengPil6Hx/FCvhqb/vI/KD9pOMnRPDTAk7b
- orgDk5PA6+teFCPZOyt8rK7ZXHQ+lfQf7Sj/AGLw7pTkEC21In64bp+leB6lci91e7uFG3zpncA9ssTX
- r4b4T8+ztfv0/ISGOW5xFDG00r4RI0XczEnAA9Tkj861z4C8T4Vf+Ed1cgcf8eMv+Fb3wJG342eAgMlf
- 7escj1/frX7qrEABxniu2x86fgHJ8PvFEhIHhrVz2z9hl/8AiajHgLxPBlT4c1dC/wAqj7HKpcjnA+Xr
- gE/QV/QF5Y4+UY78V5l8XfHtt4W1DRILWKO+1iC4NybQPtEcZhlQO5A+XmQY7kA/8BT0Gmz8SW+HnisN
- n/hGdXyOMiwl9c8fL7H+VZFzp13ZXEkFxazQXCHDxzIwZT7gjj6V+yk/jHxRr5aaXXTZBulvp0YhVfYM
- csRznr37dK878Y/sv+D/AIi3N3qd9JONYupDJLeNJkux7mockI/LOG3k+XK7h3yDUy27x5LIyjPcV9e/
- EX9mtPh7dgTRyTWbfcuUbjHvXjfxN8LW+laILqBiArqpU+/vTTuIofD/AMEW/iCwmu55GWQsEUKBjpnJ
- z/SrbalBoN/G0ybo4JMNsXkjOKzPA3je60GJrM2i3FuyhvvENuxgdB04rSTSTr+owPPlI7iYOyL1wT0p
- DsUvGvjJfE95axaZDcKIX4mIwdxIxj8v0q1p3w71jXnW61m8kGBwZiWYD2XoK2PEWj6X4Vu9LkRBbxNJ
- +8bOeFxzWpqvxJ0iwZEhkOoXBOCIAfx54FK4GYvwntkIxdtjH/PLH9as23wrtQ6/6Wx9fk6/rSJ8UbfG
- f7Ol/wC+xVm0+JcLOuNPlzn+/wD/AFqOoz9Tvg5bi3+FHhGJSSE0u3UEjHRBXXla5X4Nubn4S+D5iu0y
- aVbttznGYxXXlK2RJXZaaVzVhkxUZXBoEQ4pCvNS4FGKAItv1oqXFFAHq1FLijbWRYlKB3pRxS0AFFFF
- ABQB+tFLwRyM9P50mB+V/wC0Z4hNp8afGUbW7Nt1KbkPjPP0ryqTxuY2I+xyH/gf/wBavYf2g762X4ye
- MRI6qy6nPkH/AHjXmbarp5H+uh/HFZNAY0Hi281MOlrZGNgQC7vnH5c1wuoaRquofEGwXV5SRISI1I42
- YJ4/GvS5PEmmWi5W4UnONsIyf06VwWt6vJrvjjSTZo1tJACoZyOc7u2KpAN8f6FDot/ZPamQm4Uhgeg2
- 4xV/T/FJ0zwWLWS0Z2MLorpyMHPX061neM21Cx1OA6iWn8yMhSpGByPxrobOXTpfAiicQllgkOJM5zz6
- 0+gHnHwtS31T4h3KyxI8TW78HnB+WvYB4K0tSdsZAPZWGP5V4r8ObA6p48uI7ecwYhdlYE56ivYY7HXU
- UL9tBxxu4JP1z0okBd/4Q7T0UttYYGRz/wDWr9PvhFGE+FXhFQD8uk2oA9hEtfmp4Z8G61r9rdEaqY7i
- LBVUCnjnJ4H0/OusvNb+LVpplrp1t431KKwsrdI4oYG2AIoOF4GeOBVxTtcD9KWXmmFa8b/Y58Xap46+
- A2i6rrFzJdXxnuImmlcuxCSsFyTyeBXtJTigViuyZr82P+CqQ2+P/A/zY/4lc+Pr5or9LimRX5q/8FWV
- x4+8CnAwNNnz/wB/RQM+FhgtjnOTX0P+w0d/xL8bXEhwbbwtOijbnAaWMZ/8er53HJZs+vFfSf7DaLD4
- g+JlyOq6BDH8x5+a6h6f98mufEP92z1cqV8ZTXmfcH7DkPmfFnxVMORFYRqDj1cf4VS/4KKXHm+OPBNt
- n7ttM2PrIg/9lrd/YJh87xv45n67YLVM/Uv/AIVx3/BQW4834v8AhmHP+r07d+crf4V5X/MIfeLXiL0X
- 6Hzw3JoxxQeDRnjFeSffiHgU0nI9KG70wnAoJbsBOaOlN3ims9VYzuPLUwuQajLk9OlNLe9OxDZMX4pN
- 3vUJb3phkp2FzFjfRv8AeqpkoEnvRYn2hZL89aN9VjLimmb3p2J5ywZMUolqkZiO9Cz+pxQk27Ih1UtW
- 9DQEgxThLisWTWI42ChS3X5ui544/Q09tSlSGaV7ZikY+co4JXn0OM9e3pWvsJ72OD+1sLGXK5q5tCUU
- 7eKx7PV7e/UyQSq6nnGen4VZFyD06Vk4NPU9GGIhNc0Xcv7xRu5qmtxzipBJk+9S4myqXMrxKcyQ/wC6
- a/RH9gafz/gDJHnPl6hcrj05B/rX51+IjzA3swr9Af8Agndc+Z8GNWiP/LPVZR+ccR/rXoYHSoz5niXX
- Ap9mj83P2toRF4b1C22kG21SUEj/AHyP5ivmpCWILE7upNfV37Ztgbe38Xj/AJ461MuPTE5r5RiGAoJJ
- 4xxXrYbVNHwOd/xIPyR6H8Bgp+NfgEFjg67Y/wDpQtfuuAcD1r8KPgMB/wALt8A8E/8AE+sOf+26V+7A
- GDXefNFTWdR/sfRr6/aJpRbW8k2xRkttUtge/B//AFZr44i1i/1K7u9VvyX1C9lMsjDrzgqP90cAewr6
- h+Mfnp8MfET27vG62pYvGcNsBG8D32k59q+ftOgjup7aUBQMqxbHynn/AB5/EVlPUqO5lI95FB50t2+n
- 23RQse+Uj2GK29Cu7wA3FlqD6pBH/roJY/LnUew7/wD669WtNOsP7YtLiaJZQlrHFDuTIRgFzn/a9ffN
- dDceELS5aK5KBLyUoi7eC6lgMn6cn6VlGN2DZ454lWx8U6FcWtwgljkQgdyp9vpmvz3+N8dzpMWo6LdR
- BWt7obJR0ZeoP5EV+gnilbbT/EGpx2eDbLOwTByvXn/2bFfC/wC0/wCI9PvPEWq6ZE+6/heJnXacAFAe
- uMd+larsK+hgfDW1sZ9GaN1hklwu4NjONox17Vy+o3c9tqZGm5SRJiIQoB/i44q54J8JQaxC063iCYRq
- PLU5IHqfTmpIbiHRNQhnmTeltKPMYc8bsZxT6DI9U0jWNfu7X+2XIMkgSNGQAAHIJA/EV2mlfD/StM2u
- bcXMgH3pe/4HiuY8X+Jjrl1praUJQbd/M3MuNxJGMAfSr40XxPr5U6he/ZIQOY4jtz9QvP5mlZCsdZ/Y
- mnn/AJcrfPtED/SrNtolgkyYs4Bzn/VjrXJJ4DuwcjVHP/fX+NWrXwTd71B1Jjkgfxf40nuFj9VfhAoH
- ws8JgDAGmQDGMfwCutZa5T4MweR8JPCEe4sU0u3Uk9/kFdgVrZCKzJmo2SrbLxUZTNAirtpdtTmOk2D0
- zQBDtoqbYPSigD06ik3UmayLHUUyigB2aMim0UAOyKAwGfw49eabQBk/iOfQ5/wJoA/Lj9oaG2f4yeMz
- Igb/AImc+T/wI9a8ta10oDkR49d1e1/tcpDZ/HrxSFjVF3wSFcEZ3Qpk9OQSa8QcxEYMAY98gVmwDytH
- twZtkRC9x8xrjdf1SO68Z6NcafC2YOCdm0Meevtjge9dekqRcJaouT7CuX8fXGraVDompW7LbxX189gV
- TB3FQjHt6OKIrWwHF+LfiXa61qohdJFS1LR7fLyT29a7Lw3c6brnghgg2SpG6qZGCluTjj09awPFXwi0
- vSZbi6hW5mZn3SFnAwScnjHrxUPgpUkmlsDaJLpkYZHjkYgsWz3BGK1lHlWok7lf4R6Dq2pfEq6s9MRZ
- b5IHYxxkMuMjv+VfW3g34LanqUO7W7e6SNuDDa7UyPdyT+i18i6L4/8A+FR/E3UtV062kWNQbdIYpCAo
- baSdzA5xgdR3r628AftqTa5bww3fhYv8oDPa3Wxzxz94MM/gKqNmM9s8DfDDRPDPhzWEsPDy2LpCGNzJ
- KZHbkZBJPGcCsDVfDxjSYMrAeWeeRkbT+dekfDvxlbeNfhv4o1uBL6witoxC8F68b4bgqwKKCByetePR
- eOJNPS2huIYdUndWLyzO27ksAMZ9AOvbFaSkkrItI9l/YIQp+zbowbGftt6OP+u719Dhfbmvwo8X/Fvx
- 54G1O503w/4w1nRNOUC4Wz07UJIIVLZYgKrYHJOcd81zzftI/FfdtX4k+Ks5Iz/a8/8A8XWArH77lOOR
- jmvzR/4KvLt8e+BD2Omz/wDo0V8hWv7R3xVZ1R/iP4oznr/bE+4f+P4rN8X+O/EXjq5trjxFrmpa7c26
- mOKbUbpp2QZ3YUsTjJx0oE1Y58nJJ4Prj7o9zX0/+xDCBZfFi4I3H7BYQKzerT5/ktfMPCDCnqMEelfU
- 37F8Pl+Cfijc9A0umQAk9/37f0rmxP8ADZ7eSx5sbT9T7s/YBizqfj+fHWW2QH6eZ/jXl/7ek+/49abH
- nIi0qMY+skpr1z9gCD/iX+N7jAAa/jT8Qp/+KrxP9tuf7R+0dIvURWMCY/Bm/rXlz0wcT7fDLn4hqeS/
- yPGSvzH602nYwRTSRmvJPvRrCoX4IqdulQyrQRJXRXaXaTzTfNyeatR+GdW1XSLzULKOMWlowWWaQ/cJ
- HXaOSORVSTwB4xTQo9Zg0bV59LlUyJfJZN5RUHGc4PHFarVHJN8iTl1AufSm81y51HVMkbiMey/4Un9o
- aqOjN+S/4UXXcbp1Ox1BphNc0dR1Q/xn8l/wppvtTP8AET74H+FPTuS4VOx0jORUTS7awPtmpnu35D/4
- mopbrU8ZDMD0OQvP6VV43sZTp1Er2Oi+0U15+Tk4rkpz4kFu08UErwj7zvATHj3I9zTtP16S+h/eIYpV
- OHX0NbezPMqYj2ekjp/O3YA5OePrXV6L4bt/sj32pyeVZRfOzHjPr74+nPauW8HWq6rrsMEjYQK7knoA
- qk11njaa61fSIrBESKBQvmbON4AAAP48134ailqz47OsfNWpRZx3jHx1ba8sOnaTZi3sYZd6zkfNJgEY
- AxwMHPJqz4L1mTRbpJtqzqUaMq4yGBHvR4d+Gr6mxubiRoLUPt3KRlmxyBWvrvgWPR7FrzTriVhF8zxT
- MGBX/eHf65r0/Kx8S5O9+pf1PwrYeILVtU0eM2t+gzLCnAcY5GPX0/GuSEzxOFcbTyCPSt/wXrZt7gSo
- AyY2vGSQGB6D8KXxnpkcCJfRIVVpMMAcr0yefwNcdeknG59Pk2PqU6qpt7mTFJnBzVtHyay7dvlHtxWh
- Ec4rxGj9OpybKHiA5jgPu38hX3h/wTguPM+HHiaDP3NULY+sSf4V8H68P3MJ9Gr7c/4Jr3OfDXjKDP3b
- uF8f70ZH9K6cHpWseZxAr5c/VHx7+29Y+XcfEYYP7vWpW/OUtXxpbEgpyOnpX3V+3TZMuu/FCHaSBfef
- x2yM/wDs1fCkRwFz0wM4r18Ppf1Pz7OPejTl/dR6D8B03fG7wCc4/wCJ/YDr1/0hK/do4Bxnn3Ffz32t
- /PplzHdWk8lvdQN5sNxE5V42HIKkYwQQDn2rrU/aG+KJRf8Ai4Xifp1/tef/AOKruPm0j93NQsYNV0+5
- srlQ9vcxtE68YKsCD/8AWr5bt9AvPBPie50LUeFibNvOcfvoiRhgSeTjg46EGvzF/wCGifigMf8AFxPE
- /wD4OJ//AIqptM/aI+IdtrNrqN14r1bWHgDbYtVvJLhCp6jDMcD6c1MrFbH666FqUdof3cqyJ1KOc/lW
- n4g8bTy2LWdoiQb1w0oYM2D1we34V8YfDL4+6jr2nRXl9ot7EzfJm3mWSM4wOPmBHUYBzXqVh4suPEfh
- vXNc07zmg0mBpZQUOeFY7f05NJQk9hPQf8UPHOn+AtBvdV1Gby4rdNx3H5nb+FR7knj8a+AfE9w3ivS9
- U8ZTlEuNVut3kKT+75I6FieMf/q6V6f8Q/izZfEzSJrHWVEsUh3ImwnymHQg9iMnnvXgd7pk2kWpiS4a
- ayVysSlm5HUcdM1ajyiPTfBmrxf2OHsbSwsJYEVZpo8+dPgZz8xPfHYdK41/H2mR34+1xSTRrLulXaPm
- 56ZJq54L8NT6r4k8PWMpEUF/dQRSSBOQrso719IH9g3wbNPKz61q0oY7sI8aZ9eoI/I+lVCm5IhyUTwq
- 78QW2sQaJqOlWbQJDJvMRXG5QRxmup/tnXtQRfsmmrbKf47ggn8OaqfFvwUfgv468N+G9BvLi+sLmETG
- O5VSW+duMj1ra83WJivy21sPqXNRKPK7FxfMiqjeJc5KwY+g/wAat239vGQbhbrnjOB+dOCalgYuoD/w
- GrVquo+Yim6hBJAztxjOeefxrPqM/T74NKw+EvhDf9/+y7fcffyxmuwK896w/hzpyaZ4A8OWsbtJHFp8
- Chnxk/IPSuhK1stiSBlphWpyO1JsFAivto2VP5ftS7D6UAV9lFWNh9KKAO8ooorIsKKKKACinAUtADKU
- LxzTqKAMrUPCmiavcGe+0ixvZ9oUyXFsjvge5Wq3/CAeF8k/8I3pGSc/8eMX/wATW9RQBgf8K/8AC/8A
- 0Lekf+AMX/xNfJn7fPwe8P6/beBPLshpsVncXdxt02OOEM2IcM3TIG0dOea+0qw/FnhnSfEWmy/2np1r
- qHkxSNF9phEnlkrztznHQdKqO4nqj8ffFmnoYJJZgRhQTHu4JGCe49/88jmfhhZLBBqvmSRDEq5d3CcY
- x1+teo+JdKRYZkTYywsWPm5YBgMDjHpjjP8AOvZf2WE8D+Bv2fviJ418ZeEbTxJBpGqJvSSyimn8srEo
- CeZx9585yM1vWWhnB6nwH4q8MX3iH4jaraWFo+pSpIWKWUTS8BRknaDxz6Y557V6B8JNHk1rzV00Ce+t
- ztuLSQHcuOM7TyVB69xxmvR/AX7WnhT4UftQ+MviV4d8Fzf8I5qOnm0tdGtzHbmHIhyWChlALRknA/ir
- e+AnhMXuqah42ms/L1LxPez6gsbMX+zW0srOqBuM7gdxOOmKwTcY3Nup7V8ItUv/AA98NvEPhW9tVe61
- iQMJo3UCFQoGTgEZq7/wr3xJYaKbfStVsywBIM8KOxPXk7QcfjXUWGjMkQkhtvMK4G4EgE/U5rL1bxhq
- Xh9jLeaU01kv+sltJ1kaMe6n+lYObkXsfnL8b/gR448G+KZGv9Mmv/t0hEclhEXEjEk7Qq5rzZvhV4wD
- 5/4RDW9vX/kFzA/+g1+tg16w8SWlvNaXAV8iS3uofleJxnDA9QQeo+vrX0b8IfGr+PfCcc91t/tSykNp
- e7VwpkUAhx7MrK2O26rTJZ+BkHwt8XlwT4U11AM/8w2b/wCJpNQ8P6j4fKW+p6de6bI67o0vIGiLjuQr
- AZHb8a/or8vODgetfmP/AMFcU2+O/h9jr/Ztxgf9tVqgbufn8gDgEZJ9RX1N+xli48IfEyHcMxzadMcH
- jGy4H9a+XsnIwvXg19LfsXXXk6f8VbcFVJtNPchuuPOZP/Z/1rmxP8NntZLK2Np+p+iP7Bcg/sXxjDgA
- rqKv+aD/AAr5+/bQgMH7Sd+x/wCWlpAwz/uY/pXun7BsuLnx1F6TW7/mr/4V43+3TB5X7QdtJj/W6ZCf
- yZx/SvKn/ucT7jB+7xBVv1X+R4jjn/CjAp2KQ8V5R99YaRTSm6pMUY5xTFyl7TfEl7oelXdlAqTW1w6y
- SRuM4IPJA+mK6BvjL4hfww3h063qtppJjEBtkKMNgGNoJ+bH4iuS6ds1G0QweKE2tmROnGSSlFOxV+w6
- QePtF1/36H+NJ9g0gf8AL1dj/tkP8akaEH61H5VLkRp7ea2FFhpH/PxdH6xD/Gl+w6T/AM/F1/36H+NM
- 8o+lHl0+RE/WZ9hxsdKz/wAfF1/36H+Nafh248OaRema+09taiK4WC5DoobscxuDjrx+tZXle1H2cE9B
- TSsyJ1ZVI8rO48QfE5r/AMBDwrHOi6FFI01vYW0Lrt3OX2liRuG4n727H1rxUeHvLkaXbtdm3MoJwD6c
- 12f2UdgB9Kje2GMAYrf2j7nlSwkbWS3KPhMNpuq7zkB4pI8g92Uj3747VteJY7zw7Zx3F2IikjcbG3DJ
- HG7gf/rFUY7cq+V4IORg811tvLZ+IdGl03UVEkMg2fOQAD6Z/WvRwtdfCz4bPstnFKtBXOa8L+O4YYDb
- yv8A6MWLrIvUEjv36CneL/iBbrpz2ulytNdzAguFKrGp68nv6Vzmt/D688IyLLHcLd2LvsjOcOOD1H+c
- 03SPDN1rV9Fa26jzGUsC/AAAJJP4CvWtY+Cd9mifwDYXF1dR28ABYfMWYkAgcknA9h+JrofGVxNDZpYT
- xhZ1lVjtbcSAp6988810emaPaeC9OZ/MSW6b7zNxgeuP5e9cLql22qXzTMCRzt3e9cleoox5T6XJsHKr
- WVRrRFOBflA6+9X4hwKghhIx6e9WkSvEZ+n0o20Zm69/qIR6sa+2v+Ca1vt0HxrOejXFuv5Ix/rXxN4g
- H7uEepb+Qr7r/wCCcFv5fw+8VTkff1ILn6RL/jXRg/4x53EHu5c15r8z5U/bquxJrHxUkznNz5f6Af0r
- 4MT5ip/Svtf9ty/zJ8SZOvmavJHn6SMP6V8TxHbt+g6162H3fqfn+bq0Ka/uotpHJcMIYoZJZpPlRIxl
- mJ4AAxyckce9XV+HfipBt/4RrWce9jL/APE11fwDz/wvH4fYxtOv2Of+/wClfvGIgAPlHSu+x8zex/PU
- 3w68WZ48M6z+Gny//E1LbfDfxYzKD4Z1jG7vp8uCf++euB1z3r+hHyx/dX8qbJGPLbKjBpWHc/Gv4PeG
- r+OMXN0IJoGfYIWlJKMCnJGOD0H4V9jfA7wpfa38LfHtjtGmfbWeHzLiMkJHIHXOMg9Ca4/4K6BbXXh7
- VZJUj8z+1boAsgJI39M17hpF1DoHh3WVM8UFu8aFgxVVYK3TnjgZr0KVJct2ZOV2fG/iD9hPxRpwZ9K8
- VaLfYBISQmFuO3Jx+teH/FL4WeKPBujGXWbSNYoZghnj5XLcLyMjtX6ifDa0uPiPp91d6LqNi9jBKbd7
- owLIDKFDEKSORg5yDg14/wDt+/CS38M/s9XWsvfvd38eoWwwIo4YyWYgkKoyTj3P9KyqRgloUmfJ3wEn
- 0+91jRIVw9xbSW5YsMFSXAwDjg8etfa0sY5aSbkMWIYAKSWxyw/Dntz6Cux+CPwM8G6Z8DvD/iD+xra7
- 1K58PW90ZbmGMmOQwKwZflyDnHeuQu2PkYaTyo2OOXIGcDc2R0x7+tOgrJnPVPO9f+Bvhv4u/Fvw1Lqg
- 1CIqFtd9qyBQh3FWOckkEj25r2U/sA+AVIDaprbkcfPPEcf+Q69A+BWg6fe6LcX1xZW1zewXhWK6MYZl
- wFOA31Jr1s/d9u1YVbORtTXunzIf2CvAo+7q2sg9OZIj/wC06fF+wl4IilRhq2tMAeV8yIZ9v9WOPx71
- 9LEUmOvOD61kkiypY2UWnWNvaQDEMEaxIPRVGB/KpSKeV9PyoqhEW2mkZqQjFIVoAjxRg1JijAoAjwaK
- kwKKAO2oopQM1kWJTgKMYpaACiiigAooooAKKKKACq2pH/iW3Xf90/8A6DVmq2ojOn3QH/PFv5GmtxM/
- MTXNOR0uCTiJtyBgOhPJ79cduK+gv2NPA+k+Pfg9458Pa/Cup6bf6sv2qHOFfEcTDOPQgflXiGqw7t/l
- hI0OeW65x/Fx05z+HtX01+wsmzwR4n+YOTqgzgekSjpjj9K7KvwmEPisfLvgz9mHwR4s/bs+IfgCa1uL
- Twxp2mfabWG0kCtG5W27sG4/eN2r17w14St/DmrXmmWsRW0sJntYd6/OqIdijP8AwH9Kg+EjL/w8++K4
- ILEaIABng/LZHFei/EXw1L4S+Jd1KQV07UibuGTjkkjzF54yDk8DPI61wPax0o9Nt/BWnXWhWSYEbC0E
- uFP32x/iAP8AgVeCfGH4Y6dpFlBrmiu+napDOkcio5K3CHqrL3r13w74vU6fHC7s3k58to+q5HII5OPx
- Ncx4vu7O9Qs8U11MpzEJcqkfvk9vYD8ayirPUp3Z82xq/h3xRc2Vu2LV9tx5Q6R7wCwHPrX0z+y3eT3O
- t+MFcHyGjtHJb7nmHzQT9SAv6Z4rxy88Jx2cs1+8rTTv80kh6Y7fQAAV9Ifsz+Hr7RvAc19d7oV1W5a5
- to3wGEO1VRunRgN2c9G9603ehKPWiOp569+v41+Yf/BXYZ8dfD3jP/Etuvz8xa/T0YwMYx0GK/ML/gry
- D/wnnw7wcf8AEuuj/wCREqxH5/O3yjngdRX0R+xdKDrvxJtnAIk0W1kHGfuXcRz+tfPLqeARke1fQf7C
- 6NJ8TfHNoSwabwxKwwOPllibn/vmubEfw2evlL5cZTfmfoV+whKE8U+OIOu6O0fn6Sf415z+35AYvjdo
- UwH+s01F/KST/Gu3/YdmEXxJ8VQ5zvsYG/Jsf1rm/wDgodb+V8SPCVwBjfZMv1xJ/wDZV5W+DPu6TtxD
- 6r9D5w5pRSnqaSvHP0ECPekHWlopgFLikooAaUz2phQelS0YqiWiHy80COpSuaTFMXKRFOaUJT8UdO1A
- uRDNtN2c1MKQjJoDlItlPjzG24dfanYpccU02tUKVKM1yyWhNLdC5txDcAyxg7gC2MH6dKZbXFvZTNNa
- wiOYpt37+Rnr0plIRnvXQsVUStc8SeSYKc+dw1K15NPfEea5KnkAHiqf2bvtrTMYJ6/SmFO1Zucpatno
- U8JTpR5YKyKIhp6x4qz5Qo2YqeY0VKxg+IB81uP9419+f8E7bfy/g7rcuP8AWatKf/IUY/xr4E8Rj97C
- P9k1+hv7AEH2f4CTykYE2o3Dfoq/+y134LWpc+a4l93Apd2j89v2z7gT6d4zm3cS67KfqPNavkOLACj2
- HFfUP7Xd2Z/C2qvwTcaw7fXLk/1r5eQHGMEY6kV62H2Z8FnjtOC8j0X4BBf+F4/D4Ak/8T+w/wDR61+8
- vevwZ+AXPxz+HxXOP7esP/R6V+836122PmGFNfOxvy9v8+/SnUoGe9OwH5j+GdX8aeCtR1bQovC2r3ck
- eoXEhFvYu/3mPPTn8Ovbivefh34B8e/EiXTL2/0ttA06y1a2mnTVY2hmkSJw52RkEsD0yeBX1+Fwff1p
- OQc9f85/pWqqNKwuVDYoo4MiJBGCTnYAM/lXyx/wUs/5Nd1HHX+07P8A9DNfVW0496+V/wDgpWv/ABi/
- qH/YTtP/AEOs99xnq3wi3f8ADNPhIgB2/wCEXtsDPX/Rl/z+FeI6gAlxKIyN3yjexxgkljg9sgD+favb
- vhE2P2Z/CIY5x4WteuP+fZR9cV4FqczC43BTiNyAMkAEcg8nkcDpXXR2Zy1dz339n7J8JXZyMm7zgdjs
- SvTgCR0xXl/7O7rL4NvGAC7r1jhf91fevUgvA71y1PiOiHwkZGKQ81KRmmlMVKGREc03HPpUuDSMtMCP
- FJT8UmOKAG4HpRgU4DFBbmgBuBRTt1FAHaUUUVkWFFFFABRRRQAUUUUAFFFFABVbUeNPuu/7puPwNWar
- 6gcWNyemIm5yB/CfxprdCZ+bV3FbgtIVVQS24MT8wGAcZ6YyD+NfTn7EeP8AhDvFABP/ACEx94f9MUr5
- pcSRxMCQ8LqAQvzF+Tkge3uRwK+mP2Jomi8F+JNylW/tIHGQQf3K4xiuyp8Bzw+M8m+ELH/h6P8AFsdh
- oY5x/sWX+c+9fZnjDwbp/jjR30+/QgElo5lPzQv6g9/p0IzX46ftu+OPEPgL9s74h6l4c12/0DUGkt4j
- dafcvBIUNtBuXcpBwSF49q8eH7UPxdyP+Ln+LcdM/wBs3H/xdcZ03sfrvdfCzxV4JuJvLtpNcsT/AKqa
- 2X97jtuj4OfoDWWdP8RXziKPwxqzSvxtNmyY/wCBHCgfUivyjj/ae+LTsQPib4tYcZA1m44/8fq0P2l/
- i2HYf8LM8Vtk/c/tm4x6/wB/rS5Q5mfrn4c+COoajqunT+K44Y9OeVv+JRG+9pSFLDzXB+7kDKjOcjJA
- zX0AqBFCqCoA4wtfgkn7R3xTmsLyeX4jeKWlgUPG8msT7lLHBx8/oT+dZj/tMfFtQwHxN8WlhnP/ABOb
- gen+3SSsW9j+gAg56V+Yn/BXdc+Ovh5kcnTboDn/AKaL/wDXr45/4aa+L2efiZ4rOTnH9sXGf/Q6w/GH
- j7xR49ntrjxP4g1PxDcW6lYZdTunnaNTyQpcnFMzZzxQI2M84+9xgmvo39jrTJNP+Lwf5l/tPwhfzDHf
- azjt/wBc6+cdoUhSD0xzivoH9jW5m/4XzoUTzvKkui6nbLH94RgwTEADtljn8axrL3Genl2mKpvzPvD9
- i2XyvjLrcfTzNKz+Uq1F/wAFG4NniLwLc46x3KH8GiP9ag/Y+l8r48Trn/W6TKBg5/5aof6Vsf8ABSG1
- xH4GnHO2W5T8/KP/ALLXkR1wjR99L3OIKfmv0Pk+ijrzRXjn6GFFLRiixYlFLiiggSiloxRYQlFFFPUA
- opaMUajExRS4pKNRBgUUtGKNQEooopWGBGabtp1FVcQwrzSFD6VIRSEcUBY5zxHxcRDHRc/qa/Rn9iKL
- 7F+zZYyngPLdSE/SRh/Svzl8R/8AH2B/sDH61+kf7LCf2d+ybpcpGP8ARLuX/wAiSmvUwHxtnx/FDthq
- cf7yPy2/aYdbnwxpsbAt5+q8gHrXz3qlqLDW9Qtx8qwzSR478MR/Svdf2kZyNK8MoCSXvy/Bx3GP614E
- 0zzXk0krF5HdmYk5JJOSc16uGVonwGeP98vQ774AYf44fD3HAGv2Ayf+vhP8a/eVcMM49+lfzyW19c6V
- cR3dlcTW11A3mxTwuUaJwQQykEYIIHI9K6tf2jfiq8a/8XF8Ug4ySdYn6ev367bnzSR++Ipa/A0ftGfF
- Qj/kovioe/8AbM//AMXTD+0R8V8Z/wCFkeKf/BxcH/2egdj99guRSEYr8BX/AGi/iuP+akeKgf8AsMXH
- /wAXTT+0b8Vwcf8ACyPFnPT/AInE+P8A0Knck/fzr0/nXyp/wUuK/wDDL1/yB/xM7Mf+Pmvy3tv2jPiq
- wJX4ieK3YY4/tec55/36q+I/i9448Y2R0zxD4t13WdPkIkNpqF/LLESOVJVm29+9ID9qfhGM/sz+EQBu
- H/CLW2ff/Rl471886od+ohZSV2MCoZuAfrgY4/8A1d6+ifhGwT9mjwixwQPC9t3A/wCXZen/AOuvnm8d
- PtMmGly4KsxPCDAOfvcZ6de498ddHZnPV3PoD9nQf8UfeEBcNfHGw5H3E7/5+p616oAcDjtXlf7N8gk8
- GX7Ltwb9z8pyPuJXrBBNc8/iN4fCR0Y4p/Sg1AyPbTStPPFFAERFIRUpFN20ARYNKPpUmBRj2oAZu9qK
- ft9qKAOuoooqCwooooAKKKKACiiigAooooAKgvyPsNz6eUxP5Gp6g1AE6fc/9cmwD9DTW6Ez86bnzL8J
- GsYYqwOZVwRnqc9wAPWvp39jtQvg/wAQFctnUchu2PKXFfMMcqq8mVkJTAER3Nn5u2OO/evqf9kYbPBm
- sjADi+AcAkjPlrjr7YrsqfAc8PjPy1/4KJxlv2sviCxAP+kWoH/gLCePfivmcbuBtb5Rzla/UFtKsdU/
- 4Knz297aQ3sMlyxaGeMOrEaXkZByDggHn0r77/4QPw1/0L+kn3+xRf8AxNcaOnc/nh8OeFda8Tsw0fSb
- /VJIcFxZ27SlMnjdtU4zggZ966NPhJ4x8ts+E9ex76fNjI9tn4V+92kaHpmi+Nrr7Bp9pYLJp0fmfZ4V
- jDASv129etdTgnlgQ3f60XFY/DPwH8H3n+HniKTWtBv7fWGD/Zop4ZYXYhAUCqQN3z+xzn2rxXXfCWq6
- DDBPf2bQwTMQr9cHAPPvjP5D3r95fiP8LdQ8W/Ejwh4lt7u1trTRGLTJMW3uN4Y7cDpjPUjrXzZ+x74Y
- s3+KWvWWr6ZBcCW3lvrWK/tg2+MyKolQMOVIbGR61T2KufkvbDeFO3PfBUjH0/Wta4izPuU4V+VU9Qv+
- efwr+hj/AIQLwzjnw7pJ9/sUP/xNfkx/wU/0my0b9pSGDT7SCygbQ7R/Lto1jUtvl5wo649qhEs+R+ML
- /FjAOPSvb/2Q0mt/2hPh+Xt5YxdLepGSpXzlaF0+X+9yCD6Y5FeIgY4xyB16Zr7FsVb4ffB79lT4oTRn
- +xtK1TUbDUpwMiJJL1mBP/AVm/IVFVe6dmDfLXiz6J/ZRujH8f7JiCA1jcxtyDtIYdSOD06jIPrXQ/8A
- BRbxLpt4fC2hxzCTU4HkunRTny4iNoJ+pHH0avF9VS68I6y03hPV57YwoYo760mO6RGAbcDnv1/GuI17
- SvEHiXU5r/Vr6XUrqTCm4upGeQgdOSOnSvm3X5KTpeZ+y08q+sY6GPctFFfec2NcuMD92h96X+27g/8A
- LJK1D4Lvs9U/An/Ck/4Qu+9U/M/4V5uqPsLQMwa3Pj/VJ+tL/bk//PJP1rT/AOELvww+5+Z/wpR4Mvsd
- U/M/4VWo7QMv+3J/+eUf60n9tz5/1cf61qHwbfZ6r+Z/wo/4Qu+PdPzP+FLUVqZljW5v+eafmaP7dnH/
- ACyT9a0/+ELvv9j8z/hTh4Jvsfwfmf8ACnqO1Myv7dn/AOeaD8TR/bs//PNfzNah8GXw4yn5n/Ck/wCE
- LvjzlPzP+FGouWn3Mz+3J/8Ankn5ml/tyf8A55J+taY8GX2Oq/mf8KQ+DL/P3l/M/wCFGoWpmYddnH/L
- JP1o/t2f/nmg/E1p/wDCGX3cr+Z/wpf+ENvfVPzP+FGorUu5mf25P/zyT9aP7buP+eKfrWn/AMIXfHoU
- /M/4Uf8ACF33qh/P/CjULU+5mf25P/zzQfiaT+3J/wDnlH+Oa1P+EMvv9j9f8KP+EMvvVPzP+FGpVqfc
- y/7cuP8Ankn4Uf25P/zyj/WtT/hC771T8z/hR/whl8OPk/M/4UtQtTMv+3bjtEn4Uf27cf8APJK0/wDh
- DL085T8z/hS/8IZfZ6p+Z/wpXYrUzmdSlkvJfNZcHG3avf6e9fpR8ELiO1/Y1tJInVlj0W6JYdmHmZH1
- zkV8Q/DnSdP8OeMdPv8AxJpMet6NExM9puIJyDg44DAELwTg817Zon7RUXhzw/4o8K6T4c+x+Fr9Jxp8
- Ak+e0Mo+YEdCm4sQo5UcdBmvXwc1TvKT3PiuIqFXF8lKjHSLTv0PhL9omVp38JW8MLySG5byxjd5h3Yw
- AOQcjvXhhhMUziRSjq5BRhggg8gjtX2Zo3gq1+IP7Xnw50bw5HJNp+mapFqN0zPvVRH+9b6r8hGe25R3
- r5b+JcX/ABcnxXjtq13jtx5zV7WHXun5jnU1LEWRzRAEUh5BIOBnGf8AP9Kw4d+0DYwz1yuMV1dlze26
- EAgyrkYGDyPb3NfvlYfDnwqLG3H/AAjGjn92vJsIueBz92uqx4N7H8+WkafdavepaWdpPc3EhISOKLe7
- Ec8AcngH6da6Nvhn4rHXwvrOR2+wS/8AxPNfur4g8G6Do2seFbnT9E06xuV1ZcS29pGjgGGUEZCg13gj
- UAAKMYwO/FMLn89J+GHiwj/kWdZB/wCwfL/8TVHU/AHiLS7SW7vNA1S1toV3STT2ciIPqxGBX9E2xf7o
- rlviVaQ3fhOS3miSaGW7tEeJ1DKw+0xcEHNBJ/PRbNIWSNUHL8F84HJ/StCCERzYYHJTLMF755x+tf0H
- /wDCuvCuMDwxo+Og/wBAi6f9818Uf8FRfCuj6H8N/BsunaVY6fI+qSI72tukZI8ljgkL0oA+n/hSGH7M
- fhQ4+YeFbYnBx/y6r+FfNU4a6uWMm1WjzglwCAf5Dp+VfS3wuBH7L/hfAJYeFbfjk/8ALqtfNCb/ACyr
- KRyAVA+8c5OR29B/OuujszGofR37NSBPBN6q5I+3OMHHHyJ6dq9aHSvJ/wBmvK+CbtCQxW9I3Dv+7T9a
- 9aIPeuefxGsPhG009adQelQMbSYpaKAE20m2n7aNtADNtLtqTb7UYNAEe2ipMGigDpaKKKgsKKKKACii
- igAooooAKKKKACq+o/8AHhdDnJibOB7HH61YqvqAzp90M4zE2MfQ01uhM/O3Y5klZditg7oyBy2eMDqf
- YAjoa+pv2S5PM8Jay27ePtqncFwG/dJ/+qvlySLChmKllkBEg+9nHAXPVuvOD3r6i/ZJVh4R1ouw+a+B
- CoSVVfKXpXZU+A54fGfOHj3Q9R+EP7dc/wAXfFun3ek/DmC52Pr5geWFC+nmFThAW5kwvSvoEft+fAXp
- /wAJ/b/+AN1/8arnv+ClRP8Awyfr+R0vbLr/ANdwf6V+NgGTuPArjsdF7H7d+FP2vfg54w8X6hPp/wAQ
- dHhhgsIkaXUZTZKWMjnavnBNxAGTjP3hXcf8NG/Cn/opHhT151i3/wDi6/A1Ow6H1NAGWIXGcYA7UWC5
- +9l7+0R8Kp7SaFfiV4TDSIyA/wBtW3UjjjfzjrXz3pHxo+HXws+JmgeJdf8AH3hY2EHh19BjbRr86hIH
- WSKRGdY1JQEbuoIyPevyWdQFIIJwMGhhux1PzHj0qguftn/w398BO/xAgH1sbsn8cxV+bv7f/wAWvC/x
- j+O0eveD9VGr6Smk29sbpYZIx5itKWGHUE8MOQMV82M29Bnp3PelC/KARgk9c0kJjW557/8A66/UT9mf
- W/hD45/Yf0b4eePPF+gae063azWt5qkNvc2rm6leKRQ5yp5BBx36YzX5eNwAp49hTuBj0/l707XKi3F3
- R9E+KdX1H9njxU+gQ+KNF8b6CEzp+o6ReJOGhB+UOF3eWwH8LH8W7O/4ag0zYCdIvFY9VGOPavnPGB0w
- RzSs5yvPT1rz54KnJ3PqKPEOLo01TT2Pov8A4ag0o9dJvic/NgDp/wDrpjftSaYD8uk3hGeeBXzsSy8s
- 3yk84pjMRwvU9Kn6jTOn/WbFn0b/AMNTaQDzpN/jvgDP4U3/AIan0rH/ACCb3PuBXzmctyWxilGduc5X
- vS+oUhf6zYs+jl/an0fbhtJv8452gUg/an0djxpGoH3wK+dNxYY/lScn5vwz60fUqYf6zYw+jP8AhqjS
- Af8AkEX+Megpf+GpdIEeTpV+G7cDH4ntXzlGpztHHOcnpQMhshgW6DNH1GkL/WfFn0cv7Uuj9W0jUePR
- RzTT+1NpIY50e/GeACB1r5yKgK2T84B5pWyGIPqeaPqFIP8AWjF9z6N/4al0cHB0rUM46BBTW/an0gZx
- pF/x6qK+cwzEDjGBjNKAWUDB5bkk0fUKQf6z4w+jT+1Lo+ONJ1DP0GKB+1NpAxu0m/A7/KK+cSCMBs8e
- 9KcZAxkDoO340/qFIP8AWfFn0cf2pdG2/wDIJ1Hcenyim/8ADU+kDH/Eo1D8hXzkSTz1xSs7Eqozkd6P
- qNIP9ZsYfRn/AA1JpJY/8Si//IUjftTaV8uzSb7PfIFfOmGGCW474o3sSe+elL6hSD/WfFn0Uf2ptKB4
- 0q8z6YFKf2ptK2krpN8W/wB0V85YJzztI780AZQEc88kin9Rpj/1mxZ9GD9qbScfNpF9n02jH407/hqj
- SS+BpV9jH92vnTcGGOOucKP50YJ+Y8Dpml9Sp9hf6zY3ufRLftT6Vn5dJvsY/iGKpax+082pQppvh3QA
- mqXo8hL3VZ1WGAt8u7sB15LcDrx38EQN0HHuaaBlyBgt0HoO2f1q44KnF3Ma3EeMqw5L2P1B/Y68OfCv
- 4Cabe+IPEnxT8Kav4+1gZurldXh8u1QnPlRZboTjJHp0Ffmv8QrmG98feJbm3lWa2n1O5lidMEMhlYgg
- g9CCDWLsXHPJAOfehhgcHH4V3pJKyPl5zlUk5SepJZyLBdQu/CrIp3HsAeT/AJ9K/ZKz/b0+BkVpAknj
- dFdUUFTp9zkHHtHX40kmTAYcdzjk0qofLwRg5pmZ+xN9+2h8GfFuueGrPTvG9mJV1JZXe6ilt4kUQy5L
- SSKqgcgDJHJHXpXpv/DSHwq/6KN4Y/8ABtB/8VX4VMxUDrgKRx+B/pSthT6AHgHofrQM/dT/AIaR+FP/
- AEUbwx/4NYf/AIquY+JP7Snwrt/CFxOPiB4fnWC4tp3jt7+OeQolxGzFY1YsSFU8AZr8UueoJ/OgyFsY
- GD3J5oA/Zn/hvb4GEEjxuh+lhc//ABuvnT9sn4k6B+11oXhnw18JLifxrrlheSX1zZ2dnMrRQBNpc71X
- jc6jj1FfngQRyWBU9eK+xP8AgluN37QmqAZyfD9xg+3nQ0IR+hXgjR7vQv2cdE0zUbaS0vrTwzDBPbzg
- b43W2UMp9wQQa+XC7qXwAiYAUsRktjJwAPYc4PtnnH2z4xwvhTWj93FnMTt9lNfEskDyRLNvkIYgMsb9
- Mg4XPXn26c110dmY1D6U/Zr58DXJUD/j8P3cbT+7TpivWK8p/ZtYv4NvtxG/7e2QuNv3V6Y7V6vjgH2r
- nn8RrD4Rh60h6U4im1AxtOAxRjnNKBzQAdaUDFAGKcBmgBKKdjmloAZRT6KAOgoooqCwooooAKKKKACi
- iigAooooAKr6gM6fcjk/u24H+6asVW1HB0+5yePKbp9Dmmt0Jn55ZmE8gZFVApAC4wSRwM5HOOQe3PY1
- 9QfsjFf+EL1cR7ABeABU6AeWvQjj8q+WTKgk2tEVZWJDDnIwcE+w4z+FfU37I/8AyJms4yf9PHOf+ma/
- yrsqfAc8PjJv2yvhJ4g+N/wI1Xwn4YSB9Xubq2ljF3L5ce1JQzZY5xxntX51j/gmB8bSQPsuhbev/ITX
- /wCJr9hME89DRtIFcdzpPx7/AOHYHxv/AOfXQsDp/wATMf8AxNB/4JhfG84/0PQhj/qJj/4mv2EoouKx
- +Pjf8Ewfjc/JtNCB/wCwmP8A4mhf+CYfxwVT/omgt9dTH/xNfsHRRcLH4+t/wTD+NxAH2TQ8Dv8A2mv/
- AMTSD/gmH8bNp/0PQ2btnVB/8TX7B0UXCx+Pn/DsL43bObPQfw1Nf8K8E+MfwZ8RfAjxo/hjxZDbxaml
- ulxi1m81GR87TlfoevpX7/V5z47+Gun+IfF8fiC+0zTruC30q4t3e5hV5dxGVxlTwM+oo5mFj8DWwDgq
- 2cYxx1pwUFenGe+P0r9Bp7HwlLJHDax6ZdO+fkjs2j6ckfOi5PJ6Z6d69N0P9rDwD8HvB9jp/jHwq17J
- CfKhudN0+3kIQDKmQEqQf4RgEkgA9OVzIfKflU0eAcZAz37H/JoK5cZBLf15H9a/WP45ftZfD+DwNY3v
- wqfQta12W8jEsDaIZAsOxy2coo+9sGN1fA3xK1KfxDrt54j1bTxBNqEpmldLMJEp7YAGFAGBg88etPmF
- Y8VJPynI6ZGO9GQ54BwOtfpF8Df2lvCOtfBGw8FWfhoHxNZWps5dSvbODyXUsw/dkEuzBNudyjA61zGt
- 6v8AD/wtcpba3LpOmzvH5irLZmTcvIz8iN39ce3pTCx8W/C/4a638XPHWm+EfDkcTa1qJdYEnl8tPkQu
- cnHHCk/gK+hv+HY3xv6Gw0XHp/aaj+lfot8Bvhrptjofg3xBZadpfkGwnmS9t7dUd1mdZI2G5Qw+Q4we
- mSK9u7AjjIzwc/youLc/Hr/h2R8bzwbDRsDsNTX/AOJprf8ABMv43g/8g/RRxx/xM0/wr9hyc0jDjNF2
- Ox+PLf8ABMv43v10/Rc/9hNP8KB/wTN+N6jH9naKfXOqL/hX7CUUxH49n/gmd8bsbfsGj49tTT/Ck/4d
- n/GxQQNP0Zm4xu1Nf8K/YLkHrijr1pDsfj63/BM743Ec6do2cnpqSf4UD/gmb8bM5OnaOeOn9pLz+lfs
- ERxTSMVVxH4/f8Ozfjbk/wDEu0f/AMGaf4Un/Ds/42jj+ztHx3H9qJ/hX7A0hGaQH4/N/wAE0fjb0Gn6
- OP8AuJp/hXmnxu/ZV8ffs96Xpuo+MLWzgtL+VoIWtLpZiZFAbBA6DFfuXgg8Zrifiv4EXx/o+m2j2Vne
- m2v4bkpeorAIp+bG7P6Uhn4GnIxuPI64PFBw5OFYjPI98V+mHxwufAOl/FTxFZNFpNvcJdhFtf7PZQpK
- rgFvL2dxznGPerPgX4q+FPgvYajNrvhm21bR3HmLFb2kLXAk/wBjfgHK84yO5HWlzK9mFj8xkypwBsbp
- jqaQggDPOTwP51+tsv7W/wAE/Efw21PUdAh06y8S/YpjZ6be6ODKtwqny1fapXk4PDCviD4ueOtX+Kc9
- tquu6PawS2sXkxpYaaIIwpYncyqOTzTegWPnEKzD+LZyMgZ98fX/ABpWJLMcAjsB29q+2f2Nvj54N+Ha
- a74e1nw7/a93fyxy2cjWcLRW5CsDvZ8Fctt4AOfSu48Waj4WiuZtZ1220qwiuZiS72i7cnnG1VJ4GBwK
- VxH53Y88hcfMxCqP7xPqe3brX1Hbf8E3PjXdW6SppmktHKodd2pKDgjI7elfaP7Ofgrwp4/8J65qGj2G
- j6raNf20KzizCeW0bb5Bh4w2drLyPpX1YE2AfLt/2Qu0D2x2+lUB+Qzf8E1PjWRg6bpAH/YST/Cgf8E1
- /jWF40zSC3bOpp/hX680mBQI/IZv+Ca/xrbrp2jg57aih/pSr/wTV+NRIzp2kEDP/MTTn9K/Xfb+FGPb
- n60DPyH/AOHa3xq4/wCJdpHQddTT/ClH/BNf41cZ07SMdx/aSc/pX68cjpTTQOx+RB/4Jr/Gvtp2kgf9
- hNP8K+h/2HP2QviJ8CPi/feIfFlpYW+mzaTLZh7a8WV/MaSNgMDthG/KvvCigVjJ8W8+FtXBHH2SXIzj
- jYfaviS3QqcM6DcQVRjwvULz2J5/IV9s+Mv+RQ1v/rymHGT/AMs2r4mhuP8ASVSJUUnA3bd3PbOePyrr
- o7Mwqn0j+zQo/wCEGvcYyL1s4HA+RK9b/DFeU/s37v8AhDb8n7x1ByOeMFE616xj161zz+I1h8JGRzTS
- M1KRSEVAyPbzTgM0uKUCgBAKWl20o4oAQDNG2looHYMCiiigLG9RRRUFBRRRQAUUUUAFFFFABRRRQAVX
- 1HnT7n3icY/4DViq+ocWFyRnIiYj8jTW6Ez87A7SXLLsbcxcDywdwHTr/hX1N+yOnl+ENaUDAF/nGMdY
- 1P8AWvly6mc3IjZfnCs+U74yR075457V9Sfsk7v+ER1sM4bF+Qo64HlrgH+ntXZU+A54fGe70lHHaiuI
- 6QpCM0tFADaKcRmmkYoAKKKKACq9+nnWVzHyd8TKR1zwe1WKa6CRGU9xijpYD4K+PHwhmg8NWq6THLbX
- 7ahCkMsCEsDk8YA5yM8exrxXxb4V1Oy0RdK8QaVOoZghluYmTzlPzZUPznrnsM1+h3xk8Haunge+vPBN
- uJfFVsRNZ7nB2t0LDdxu2luvtXxF8XZfHDabon/Ce/bH1oJO+29xu25GNuOPu4/OskhtnhPi7xLJ4Lgt
- IdO0Vr158qohUhBjnHy5IPPSm+DPGN34ourqy1DRJtPeNNzGRTsIORj5lXnn1qb4d+Nn8Yw3iXcMdre2
- 0pRoUPG36e1TfELxf/whmipcxRxTXUrhIo34BHUk45wMDp61QjoPDeg3dv8AaNL8O6abi7uw7RRQLjHG
- WJI6AAE/hXS/Db4B6/r76xdeLIZZ9aS6COzjO1dilAPQYNQfDv8A4Sm9eK68KG+tvE4sjNbrprES7iAG
- A7lcMc59q+5v2YfDnjC88AzX/wAR7aZPEd1cjLTjbM0aoqqZB6jp+FaxJZ6d8L9MGifDnwzp4XZ9l06C
- Hb6bUA/pXTnpUMESwRIiZCKBgGpCc0mV0EoIyKXGelHSkAzGKKdikIoFYaRmm0+kxQMbRTttNIxTuKw0
- jFJT6TAphYb1pOV5H/16ftpDx9KYz5C+Ovwmh1nWfF2qPbsxlSRi+OwQd/wr5usfCPibw34ZhbU7W6vb
- W4tV23V1GQqEIDg9sYzj1/Gv0v8AEPhiDVtNvotpllmhcBGYhWOD/XFfCfjk/FQaHr8fjtb6LTo5Yo7O
- OTAg4c8JjjoF/OsZLW47nz5qZtPA+hXN3Z6cZmQ7zHAmHYk9eB09657Q/iTqV9q9rZXvhya2juXCq6hs
- LnPJDDBFa9t45kHxCuvD91FHbwCMNBKz4ZzgE5+vI/Cun1nUYtE0u7vZSAsMbNgkYJxwPrTEMtbOLSdV
- Oo2lmHu5AI2WKNd8g9h+IFdB4M+EnjDxd8RlTxRp93ZaelvK9lbzxuAhyu4jI5PzfrXKfCvWrzxxZWVx
- PB9lmnuhEnkHqNy7WB6hs/yr7P8A2X9J+KmpeLNSm+IEV/JpFnE62E+ogeaGZlHy98YA7d6uImrnpf7N
- XglPAngm/wBPWIxLLftNsA6ZRF/TGPwr1w8jpg0y2tI7RWVM49M8VJVCWgyilIzRtoKEopdtGKCRKTFL
- g0YNA7ibaTbT9tBFArmL4wH/ABSmsgk7fscvB5/gPSvidWe6kkRJFQspDliQQR04HI5K/nX214uOPCus
- kfLizmOf+AGvidCVIlLclvvcA9TnnHTnd17V10dmYVT6Q/ZndX8D3fGf9NbJI6/InNetFcdMke9eS/s0
- KB4IvQquifbnwG7jYnPXvXrnauefxG0NhlFOwKNtQA3Aoxg07bRtoAbRTsUtADQM0u2loAzQO4m2inba
- KAubVFFFQUFFFFABRRRQAUUUUAFFFFABVfUDt0+6P/TJuc47GrFQX4/0C46g+U3Q47Gmt0Jn52lwGeRZ
- CrxlTkc5Gc578du1fUf7IZU+CdXRQQVvcHsD8i4P5V8vsg+0IoLSZBRnBG7APON3GO3Hqa+pf2TjL/wi
- OtCTG8XvzEAAH5F5GOK7KnwHPD4z3QjBP17UlKRgmkriOkKKKKACiiigBCKSnUjDvQAlFFFABk+tfPv7
- XXwiv/Hvhiz1jRoGudR0xn8yBQS0kWASF9WHp3+oFfQVQ3MMsyhY5jDzncEBIPqDzz9RQB+OEfw6stM8
- YtrduZ7O4G4S2yjaCx4Jb0P9aNU+Hdn4i8T2ep3DzTtAqqlqD8hwcg+vU9q/U/xd8AvB3jh/O1fS4Zr0
- ghruNFjlb3JTH0qj4f8A2avBHhra1lpxSQcCRmLH65JNJK4Hiv7Gvw9n0XXb7VdStTbTvDshVhgqhByc
- fgK+vMknJ6nrXNeG/BNr4aunnhmeViCG3gfdzx0rpOe/XvVMkQim0+jFIoZSnmgjFJQAUUUUAFNPWnUU
- ANopSKSgBNtNp9FADKKUjmkp3AQjJ/zzXC/GjwGPiL4A1PRw225aPfbuTkLICMZHoScV3dRzI7r8j7D0
- 5XP86GB+RHxK+DzNr8cGs21zpGs2EgyyJhjtPb1Hv6VV8YeDoPF+nW9jcXM0EMUgdhGc7x0wfrX6r+J/
- hfonji38nxDaW+qjhY2lgUNEvPRhyPzrjdM/Zb8B6VP58Wm7n4Yea7OF+gJIqbCufKP7Mnwpd/GWgSya
- c0Gh2b7oywwHYBsY4PcZ7V+g+wYH9RXM6b8PbLSbxJrWVo0T7kYQAKfXj8q6jHFVYY3BFJT6btpisNIz
- SbTT9tHIpiYzBo2n0p+M0cigYzpSU80UAMop9FAWMXxiAfCWt9/9CmH/AI4TXxIjh4XaNmLEAbE4IPHP
- 1wcfTivtzxihk8J60FOG+xTcjt8hr4nt1DYO3eUbO4qQM9uD/n3rro7M56u59I/s3gDwbqBG/Bv25Y/7
- CcD2HSvWK8n/AGbCD4L1DK7G+3vkDHUomeletAe1c8/iNobDaKdgUYFQVYaKXGaXAo20BYTbRto20baB
- Cjilpu2lx70CFopMH1ooA2aKKKgsKKKKACiiigAooooAKKKKACq+of8AIOuuM4if/wBBNWKr34zYXQOM
- GJuv0NNboTPzvVowm9ATyRnj0+6T6HH54r6j/ZHJbwdrQPzAX+Ae5HlL19/Wvl6NHDnZ8yqS+3I25BAA
- 555OOnT8a+of2RmL+DdZOwp/pvO4YyTGucfjXZU+A54fGe8GkpTx2I+tJXEdIUUUUAFFFFABSN0paCM0
- ANooIxRQAUUUUAH5fhR+tFFADTnNJ0p9MpiW4UUUUhh1ppGKdRQAyilIxSUABoHSignFABTT1p1BGaBD
- aKXFGOKAuJTSKdRQMZRTiM02gW4UEZooqyRpGDQetOPNNPFKxQ0jmk6U6imMbRS7aMUrEiUUYNKBTASi
- l20baAG4owKfik20FGL4wVW8KayCMj7FNke2w18PeVtRmUAwlWBVsMBgjI9iRn86+4/GIx4U1nIDD7HM
- cHofkNfDsYee32tG6wg8k+uBuwPr/T2rqo7M5qu59L/s0sH8D3u1SFF+wG4cn92let7cd68n/ZnTb4Gv
- huyRfvu6f3E6Y4r1w+1YT+I1hsMHFFPoqDQZik21JSEZoJGFaSnkYpKB2G0Yp1Lk0BYZiin5PrRQFjVo
- p1IR3qBiUUUUAFFFFABRRRigAooooAKgvj/oNwTwPLYZP+6anqC/z/Z9zt6+U2Seg4PNNboTPzuRcSmX
- zvL3gjbjI5bPr7D07+lfUn7JLIfCeubdoZb7azJ3IiUV8vrIFlw7IFYj5Cpyx6Z6c8N06Yr6e/ZFJbwb
- rXf/AE/g4xn92tdlT4Dnh8Z7wPy+gopT19aSuI6QooooAKKKKACiiigApCKWigBtFKR3pKACiiigAplP
- o7UAMopSMUlABRRRQAU0jFOpD0oENobpRRQMB0opBS0AFFFFBIhHekp1IR3poe4lNI706ii4IZRTsUba
- LhYbRS7aCMUDGkd6bT6MUgGUU7bSYp6i0Eop22jFFwsNop2BRto1DQbRTttJijULmP4xB/4RPWSOv2Ob
- H12NXw1JM6XEiqYpJVbkdM59TjrgEflX3J4ywPCOtEkKBZzZJbAH7s9fSviBJc+X+6MkcfzBc4bn09fu
- nFddHZnPV3Ppn9mlR/whF6eMG+YYHbCIK9bI9a8l/Zj+bwFeuwCl9QdsAYUfKvQ969cI9Mn61jP4jWGw
- lFFFQXYQjNNp9JigQ2k20/bSbaB3EHFFLtpcVNxDaKdgUUXA06KKKRQhHekp1IRmgBKKXFAFAAtLRRQA
- UhGaWigBuDUGojGnXP8A1zY4Pfg1ZqDUMfYLnJAHltyeMfKaa3QmfnQzIsjGKIoXJABPDHGO/wBRxgiv
- qf8AZHYt4R1wgkj7efvdR+7XFfLUTzJg+YHjZVDBSDuG7k/h8v5e9fU37JP/ACKOtbgd/wBu+c4wM+Ut
- dlT4Dnh8Z7tRR9aK4jpCiiigAooooAKKKKACiiigAPSm049KbQAUUUUAFFFFACN0ptPprCgBKKKKACkP
- SloPSgQyiiigYmcGlpp60ozQAtFFFArhRRRQMQjNGKWigVhuKKfk0lAXG0GlI70lAxpGKSnmm7aAEopd
- tIeKdxWCilAzS4oAbRSkUlABRRRRcLGP4yO3wjrRJP8Ax4zD6DY3tXwwIg8iF8uVf5SRgDBJ5JPAwOPe
- vufxiceFNZyOPsUv4nYeK+Ho2G5gd/mSDY7gD5eAeDn9PWuuhsc9Xc+mv2ZsHwPfuNuGv2PygZ+4nX3r
- 1z/PNeSfsySrN4Iv2UDB1Bz8hyo+ROBXrpGeawn8RtDYbRiiis7lWGnrRTqKoQ2inYowKB2G0AZp1FQF
- hNtFLRQFjQooooGFFFFABRRRQAUUUUAFFFFABUGo4/s+65P+qbp9DU9Qah/yD7n1MTdfoaa3QmfnfO0l
- 4yRrHuKNk+ZwwXjJB9Px9q+oP2RpPO8Haz97f9tG5jgBj5SngdvSvlmORQ0hKylkxiI7mJO724xz0NfU
- 37I4CeDNYGQzi9G4Ak4zGpFdlT4Dnh8Z7x1NJSnqfrSVxHSFFFFABRRRQAUUUUAFFFFAAelNp1NPFABR
- RRQAUUUUAFI3SlpOtADaKDxRQAUUUUAMopxFNoAKKKKACiiigVgooooCwUUUUBcKKUHFKRnmgY2kI70t
- FAhtFOxSbaBiUUuKTpQAUUUU7isFIRmloouFhu2lHFLRRYLGP4yH/FJa1xk/Ypev+6a+FvL+0N8yBQgB
- y7/MQe4B425655r7p8ZDPhHW8dfsU3P/AAA8fnXw2m5lcEEZYA46sc5IOPQY6nvXXR2Zz1dz6Z/ZeATw
- HfBSSBqDj/xxOntXsFeQ/swhv+EEvFyGZb0jcOh/dpXr+09656nxG8PhEpCM07bRtqLDuM2mjpT+RSGk
- MZS4p1FArjcc0u2looDUTbRS0UBqXaKKKBhRRRQAUUUUAFFFFABRRRQAVX1D/jwucZOYm4HPY1YqDUD/
- AKBcjkfum6fQ01uhM/O3a26RhsQgEmMqMk8YwOp/Ag8GvqX9k193hPWieQb1TuAwG/dr0r5ckTYoJwWW
- QEOo+bp0XPUnnt619Rfskhk8Jay0jL818CFQkgDylxjPauyp8Bzw+M91/wA8UUUVxHSFFFFABRRRQAUU
- UUAFFFFABQelFHWgBtFBGKKACiiigAooooAQjNNPFPpp60AJRRRQJh1pp4p1FAxlFOI702gAooooAKKK
- KACiiigApw6U2lBxQAUlOxnmkPFACUUUUCsFFFFAWEIpKdRQMbRTsUhX3oFcSil2+9G2gLmL40H/ABSG
- tcZ/0Gbp/uH3/pXw20jl5Ao2rjCEnktjJwAPYdQe/Xt9z+MCU8J60cnAspjxn+4a+FJoXkiWUvIwYgsF
- OcAg4HPfp+BrsobHPV3PqH9mHB8A3RG3m+bmPG37idMV7B0ryH9mMs3gW9LEbvt7kheg+ROntXr+Cawq
- fEbQWglFGDRg1lcqwUhGaWigLDMYop9FAxoGaMU6igdxuDRTqKAuWqKKKBBRRRQAUUUUAFFFFABRRRQA
- VXv+bC57/u24z22mrFVtSx/Z11np5Te/GD2AprdCZ+eQMwnl3KAiqRhCMcjgdRz3B7c544r6f/ZGx/wh
- usKuzat4MKuOP3a9COD+FfLXmoJArRYZWOWVTwMdTnoB/hzX1L+yL/yJurk5wb4Hk8keWvWuyp8Bzw+M
- 94PU0lHWiuI6QooooAKKKKACiiigAooooAKKKKAA9KbTj0ptABRRRQAUUUUAFNIp1I3SgQ2iiigYUUUU
- AFIR3paKAGUU4jNIRigV0JRRRQMKKKKACiiigBc4pc5ptFADivNGBTaduoFYNtJtpd1GRQFhCMUlP60h
- HagY2ilwaKAsJRQcY5zjvQf164NArGT4vGfCms8ZH2OXj1+Q57V8K20bIdpdfmcFEYjC9VGe+cZ/Svuj
- xpx4R1zPGLGftn/lm1fC0Fwq3CiNVXkDO3cTj68d+1ddA56u59P/ALLq7PAV4FAAF8wKjoPkSvYz1ryH
- 9mMN/wAIRfl8FjqLnjp9xOteugYrCb99m0FoFFFFZlWDFNPWnUUDG0U6jFADaKdgUYFADaKdgUUAWKKK
- KACiiigAooooAKKKKACiiigAqvqIJ0+5x/zycfpViq+of8eFzjqI37/7NNboTPzq3mW4YbGLEsoMYO5R
- n17V9TfskoI/COugJgC/LAY9Y1P9a+XLud2uAGUZCs+VyM4yR0Pr69q+hf2S/GVnHd6t4TbzH1GQNqSS
- KAYxCpjjAznJO4jouCMc8V21fgRyx+M9b+Onjq++Gnwk8UeKNMjgm1DS7M3EMV0rNExBA+YKQSOexr5r
- /Zv/AOCi+gfEdtftPiNNpPg2+04wJbPFJK63gbf5jhdp2bSF4yfvd69x/a5IP7NXxCIzzpbtwc55Ffht
- Z6lHpnim/d3ADkDnr17/AKVxJaHWfuVD+1r8IrmREj8b6ezSHCoFkBJ9Pu/QV64DkA9c859a/B3wv4os
- 21GxBuYk/ep/y0AzhgfWv3gix5SY6YFIB1FFFABRRRQAUUUUAFFFFACN0pKKKACiiigAooooAKTrS0UA
- MopSKSgAooooAKKKKACiiigVhpGKSn00jFAxKKKdigBtFPooAZRTiM0hGKAEooooAKKKKAFBxTutMpQc
- UAOrxf4u/tU+Gfg14sTQNY03VLq5a2S5D2axlNjMR/G68/Ka9nyK/NL/AIKGePNF0H48xWd7d+VMmkQO
- V8tm4LSY6Um7DPYfiv8A8FDdBsvhx4gm8Nabq9j4hWyk+w3NxBC0cc+MIzjecgEk45pf+Ce/x28b/G24
- 8YzeMtafVTbw2ckMQhSOOIuZdwVUVcD5R61+cnjH4haRq2h3tna3TTSTKUUbGGT9T9DX2/8A8EoSd/jz
- PDG3sCPfmbj9DTWqE9D7u8YLnwjrIzkfYpuCAc/Ia+FgWuXdEdfmBDZJBBHTgc91FfX3xx+Ilp4E+Hup
- XYEF5cSvHY+QJgjBpnEW7HJO3duxgdK+Q1Ow+a55YjJGAepznOOO/wCFdlDZnNVPp79l50bwDd4YNi+b
- JI+9+7Q5r2CvHf2X5ol8D6hEp2st87eWWGQuxcHHXnBr2Qryec++OvvWE/iNobDaKdto21kUNopcUYNA
- XEopSMUlAwooooFYKKKKAsWKKKKBhRRRQAUUUUAFFFFABRRRQAV5x+0Te3Gn/BnxLPazyW86xxhZY2Ks
- oMqA4I55BI49a9HrzT9pLI+CXigjAPlRe3/LZOTTXQTPi9ZwczeayyIVZ2HPoSSfz7iuC8dXWr2V/psv
- h/VrvRdSEDRSXNpcSW7MhYHbuRgSCQDjHVetegFf9IjVcuW+XfuGeT2J4A6/n71xHxAEkuracrAZEbfN
- gDILeg4Fd1TWCOWPxH07rniXUPE3/BPnXbrVnaW+g0aW1lnkmMry+XJ5e9mIBLMACc/nX5zeP/hpoEPh
- Pw1qcFgEv7638yeVmZt74U5xnA6mvvbXvFOmaB+wDrFveXQSe9WfToFQFmadpWZUOM7eAWyccfWuR+LX
- gHwzrv7LXww8RaTbaS9lpVhD/a9zaywpLvNvHlOozJuwSnLe2K4W+VHXufC+jeBdEXU7B2swYo5ULoGO
- SAcYGD75r957YAW0QB3AIBkd+OtfkF8MdI0L4j+KotE8OWDR6nNdBrUXl1GkTKCP4nI5+8eM8MBj1/X+
- MBYk6gBR1GO1RGfMhWsOoooqhhRRRQAUUUUAFFFFADaKD1ooAKKKKACiiigAooooADTDxT6aR3oASiii
- gAooooAKKKKACiiigBAMUtFFArBRRRQFgooooEkJtpNuKdRQUNNBGKdRQAyilIx3o/lQK4lfm9/wUC8P
- y6v8d7WVLaAmHTYCHaIMzjL9fbr+lfpATjjnPP69APevjX9rW70fR/iVba/b6rYapqcUEdtLpEkTOYtu
- 5tzHO05BHy8Hr65EyfKtClZnxh8PvANzqnjrTo5tKtbmOWRQ8MFtvHAJ4X3r7G/YJ0saJ8UfjHYi1Nmk
- L2aC38sps5m+Xbjryv4ZriP2ade8Nv8AEjRtT1/VdL8KXemFpY4DE6C7yjLjd9wY3E8nPbHNdn+zJ8b/
- AAprn7W/xXt9Mv1u7fxN5Vxp92imNJRBG2/73P8AFkccBT6ckG5Ruwe54Z4qjutX+K15r17NG893qRld
- II9qAmQdOenFelxyb7d2jZi7KMqhIIJx/QkfpXnd9cJe+IYpoH3JPd70ZO6s+QcfSvSIAGxgeYVYtv2F
- Rntx/n613YfVM5qu56x+ynF/xc3xbKpkA/su1UeaclT5snQHoO2PavqcnJJ96+XP2T2/4uD4r+XYw062
- yMd/Nkr6jrCp8ZpT2Ciiisi7BRRRQFgpNtLRQFhpGKSn00jmgYlFLg0UAT0UUUAFFFFABRRRQAUUUUAF
- FFFABXmP7TAJ+B3ijjI8mMfX99HxXp1c98QfCtn418G6ro19JJFa3MP7x4GCuu0hhgsMdVA/OqXQTPgS
- N0EIaNT029BnoPlP1xge+K4rxws0uq2KrtKhWAbPJ5H/AOuu4SNk3BMOI9zsoPygjt2xnHUenvkdp8Hf
- grbfF/xXO+sw39rolpaN/pNo6x5uC6nZkqeqs5xgdK7KnwHLDVny/wDFP4W/FPxT4Hgn0y7Mvgf+1T5V
- gZQg+2eUgaQE9MgKM9MA45yD5XrVv4oF5pvhfVLeXTbW1Qu8QXETzAAOwAJDM2AC2ecc9BX7Uah8L9Eu
- /h9beFLtXfTbOJVjkfBdGUY3nAxkAt2PU1+aPjHwU+n+M7jV4JIdSMM8kM0Cu0kTBWISWM4wVIHHTBGO
- 9cbeh1nkFn4Ue0tpJNOmnlu7dfOTbyDjvgdO+O/av0L/AGKP2hrrxD4Pfw942vltNTsDGthcag5R5423
- DyyW6lCo+b+6655Br5Y020jWzlttI0yVbmZCs04UhguBnkk4xw2e3Hpiu78K/DXVPHNvPpnhzVLstb26
- rcG2hE5nDFt7hWwQu47EPfax71KbA/RZdSs8YF3CcEDmReT6daUajZZ/4+oCc4wHB56+vsa/PvTv2MNd
- t1BnbVS2ckfYM/j9810dp+yfqEckJa21BgjDDGwxkg5yTu/WgD7pHT/69FMt0MdvEjZ3KgU5HPAxT6AC
- iiigAooooARqSlakoAKKKKACiiigAooooAKKKKAGUU4jNNoAKKKXBoASiiigAooooAKKKKACiiigAooo
- oAKKKKACiiigDjvFPxg8HeCdVGm63rtvYX2wSeQ4YnaehOB7GsQ/tJ/DVUBPiu1AxnBjk/L7tch8bP2f
- tS+Jni1tUtJ7aKNoY4T5r4Py59vc15/bfsda2vMl/aOSM48wn/2WlcND0/4g/tKeHIfCN8fCuqDVdYmj
- MNp9nBAjlYYBO4ZyN3Ydvevh0aJf6kNR1fUA1wvn7GkZy2Cfm3E+uSP++vy+ifEX7Od38PNEvddvruJb
- S0j3SGE7mXJAVsYHQkH8BXl+pu15dXN5o/kyWV+Vnntom3IJMHLLySVO5iMdARUSKVjxTxX4TnLQXWnR
- SEM2CNy7eOc5bA78ZzjrioPhX+yL4r8f+Porux13+w764D3QS3d1ngG0th227SPuj5Tk7xyOtes6tpTz
- taPqiG10tXV2ghYCSTB/hHJXPTPA55719d/smnSdY8CSazaw7tRkuHgnugo8s85VYuT8gBAzgZ29xWsV
- pYh7nxEmkXWh3+mafqFvJb3dtLHFNDKpVkYEZBBGQfrXpZhEauwVRBhhhvmXgjI9jj+ea+kPjp8A9D1r
- QNU1/SdGV/Ei3Ed7JM1y6kqrq0pwTtHyB+MDp36V84R+bPCRJG6RDAJOBk8BsY9z7fyrqw7STMKqPYf2
- T3D+PfFIUEqNNtQCeD/rJK+odpHavD/2WtBsLfw9qetCMNqU1x9llmDkgxoNwUAHHBdjkc9q9yAKgA9R
- xn196yqP3jSCdhtAOBTqKxNBAc0tJjmlzzQAUUUUAFFFFABRRRQBLRRRQAUUUUAFFFFABRRRQAUUUUAF
- JIoljZG+YEEFT3BHtj3paKAOG/4Ud4GU8eHoOOPvyf8AxVdD4a8IaP4Pt5rfRbFNPimcPII2b5mxjPJ9
- BWx+lLVOTasJJIjuIEuYJIpV3Ruu0r6g9eRjHHevgj44fs6+Nfhz8QL7U/B2iXXiLwhfubiO1tSzz2Uj
- AeYuM7tpIJBAIOccV99Ueo6cdqkZ+ZkujfEHxBELHR/AniK6lcgOLuCSOGJj03ZCjr/eOPWvs39l/wCB
- 0nwh8EiTV9s3irUWa41CVHJSPJGyNRnb8oVRwMZBxxzXs2Pp68UHnrz707isGRjjpjA+lHHpRRSGFFFF
- ABRRRQAUUUUAI3Skp1GKAG0Uu2gjFACUUUUAFFFFABRRRQAUdqKKAEAxS0UUANI70lPpMUAIaSn0mBQK
- 42inYFBWgLjaKMYooGFFFFACgZpDxSrRjJoASinFfSm0AFHFFFAEdzbx3UDRTRrLGwwY5BkMO/FfFfiX
- 9i7xt4X8SXr+BtV07UfDMsjSW+malIyyQAnJRflIwATg5HGOK+2KMUAfCUf7GXxN8aX8dtrepaR4c0J3
- CzpYSGSYp0xkKATgnGWA719r+FPDGneDPDenaHpUAt9PsLdLWFBgHYqhRnHfjn3rW/TqOKKdwGyRLNGU
- dVdCCCjDKkEYIIrJHg3QRnGi6cM/9Oqf4VsUUJtbCauVrHTbXS4vKs7WC1jJLbIYwq5xjJAqyOgHoMc0
- UUt2NaBRRRQAUh4OaWigAopOmaWgAoooFABRS7aKAJKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
- iiigAooooAKKKKACiiigAooooAKKKKACiiigAoPSiigBgpaKKACiiigAooooAKKKKACiiigAooooAKKK
- KBWCiiigQjdKbTm6U2goKAM0U4dKAE6GnUhHzGloFYKQjNLRQIbtoxTqKChuDSU+igBlFK1JQAUUUUAF
- FFFABRRRQAUUUUAFFFFArBRRRQMKKKKAP//Z
-
-
\ No newline at end of file
diff --git a/AgroBase/AgroBase/Forms/frmGPS.cs b/AgroBase/AgroBase/Forms/frmGPS.cs
index a5a8abfd2..9e2ed3ef0 100644
--- a/AgroBase/AgroBase/Forms/frmGPS.cs
+++ b/AgroBase/AgroBase/Forms/frmGPS.cs
@@ -10,6 +10,7 @@ namespace AgroBase.Forms
public partial class frmGPS : Form
{
private MapasModel Mapa;
+ private Timer tmrLeitura;
public frmGPS()
{
@@ -24,6 +25,20 @@ namespace AgroBase.Forms
private void frmGPS_Load(object sender, EventArgs e)
{
IniciarMapa();
+ tmrLeitura = new Timer() { Interval = 1000 };
+ tmrLeitura.Tick += tmrLeitura_Tick;
+ tmrLeitura.Start();
+ }
+
+ private void tmrLeitura_Tick(object sender, EventArgs e)
+ {
+ lblAltitude.Text = "Altitude: " + GPSService.UltimaLeitura.Altitude.ToString("0.0");
+ lblDatahora.Text = "Ultima Leitura: " + GPSService.UltimaLeitura.DataHora.ToString("HH:mm:ss");
+ lblLatitude.Text = "Latitude: " + GPSService.UltimaLeitura.Latitude.ToString();
+ lblLongitude.Text = "Longitude: " + GPSService.UltimaLeitura.Longitude.ToString();
+ lblPrecisao.Text = "Precisão: " + GPSService.UltimaLeitura.PrecisaoHorizontal.ToString();
+ lblSatelites.Text = "Satélites: " + GPSService.UltimaLeitura.NumeroSatelites.ToString();
+ lblVelocidade.Text = "Velocidade: " + GPSService.UltimaLeitura.Velocidade.ToString("0.00") + " km/h";
}
private void frmGPS_FormClosing(object sender, FormClosingEventArgs e)
diff --git a/AgroBase/AgroBase/Forms/frmPinout.Designer.cs b/AgroBase/AgroBase/Forms/frmPinout.Designer.cs
index 94bc31eef..43374bd8f 100644
--- a/AgroBase/AgroBase/Forms/frmPinout.Designer.cs
+++ b/AgroBase/AgroBase/Forms/frmPinout.Designer.cs
@@ -74,9 +74,34 @@
this.cmb3 = new System.Windows.Forms.ComboBox();
this.cmb2 = new System.Windows.Forms.ComboBox();
this.cmb1 = new System.Windows.Forms.ComboBox();
- this.imgESP32 = new System.Windows.Forms.PictureBox();
this.cbTipo = new System.Windows.Forms.ComboBox();
+ this.imgESP32 = new System.Windows.Forms.PictureBox();
+ this.picMCP = new System.Windows.Forms.PictureBox();
+ this.cmbB7 = new System.Windows.Forms.ComboBox();
+ this.cmbB6 = new System.Windows.Forms.ComboBox();
+ this.cmbB5 = new System.Windows.Forms.ComboBox();
+ this.cmbB4 = new System.Windows.Forms.ComboBox();
+ this.cmbB3 = new System.Windows.Forms.ComboBox();
+ this.cmbB2 = new System.Windows.Forms.ComboBox();
+ this.cmbB1 = new System.Windows.Forms.ComboBox();
+ this.cmbB0 = new System.Windows.Forms.ComboBox();
+ this.cmbA7 = new System.Windows.Forms.ComboBox();
+ this.cmbA6 = new System.Windows.Forms.ComboBox();
+ this.cmbA5 = new System.Windows.Forms.ComboBox();
+ this.cmbA4 = new System.Windows.Forms.ComboBox();
+ this.cmbA3 = new System.Windows.Forms.ComboBox();
+ this.cmbA2 = new System.Windows.Forms.ComboBox();
+ this.cmbA1 = new System.Windows.Forms.ComboBox();
+ this.cmbA0 = new System.Windows.Forms.ComboBox();
+ this.lblB1 = new System.Windows.Forms.Label();
+ this.lblA1 = new System.Windows.Forms.Label();
+ this.txtMCP1 = new System.Windows.Forms.TextBox();
+ this.lblMCP1 = new System.Windows.Forms.Label();
+ this.gpbMCP1 = new System.Windows.Forms.GroupBox();
+ this.chbMCP1 = new System.Windows.Forms.CheckBox();
((System.ComponentModel.ISupportInitialize)(this.imgESP32)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.picMCP)).BeginInit();
+ this.gpbMCP1.SuspendLayout();
this.SuspendLayout();
//
// lblPinout
@@ -160,7 +185,8 @@
//
// btnSalvar
//
- this.btnSalvar.Location = new System.Drawing.Point(581, 810);
+ this.btnSalvar.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
+ this.btnSalvar.Location = new System.Drawing.Point(1240, 810);
this.btnSalvar.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.btnSalvar.Name = "btnSalvar";
this.btnSalvar.Size = new System.Drawing.Size(148, 39);
@@ -593,17 +619,6 @@
this.cmb1.TabIndex = 182;
this.cmb1.Visible = false;
//
- // imgESP32
- //
- this.imgESP32.Image = global::AgroBase.Properties.Resources.esp32_s3;
- this.imgESP32.Location = new System.Drawing.Point(169, 2);
- this.imgESP32.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
- this.imgESP32.Name = "imgESP32";
- this.imgESP32.Size = new System.Drawing.Size(405, 847);
- this.imgESP32.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
- this.imgESP32.TabIndex = 181;
- this.imgESP32.TabStop = false;
- //
// cbTipo
//
this.cbTipo.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
@@ -615,12 +630,292 @@
this.cbTipo.TabIndex = 228;
this.cbTipo.SelectedIndexChanged += new System.EventHandler(this.cbTipo_SelectedIndexChanged);
//
+ // imgESP32
+ //
+ this.imgESP32.Image = global::AgroBase.Properties.Resources.esp32_s3;
+ this.imgESP32.Location = new System.Drawing.Point(169, 2);
+ this.imgESP32.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.imgESP32.Name = "imgESP32";
+ this.imgESP32.Size = new System.Drawing.Size(405, 847);
+ this.imgESP32.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
+ this.imgESP32.TabIndex = 181;
+ this.imgESP32.TabStop = false;
+ //
+ // picMCP
+ //
+ this.picMCP.Image = global::AgroBase.Properties.Resources.mcp;
+ this.picMCP.Location = new System.Drawing.Point(15, 52);
+ this.picMCP.Name = "picMCP";
+ this.picMCP.Size = new System.Drawing.Size(278, 322);
+ this.picMCP.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
+ this.picMCP.TabIndex = 229;
+ this.picMCP.TabStop = false;
+ //
+ // cmbB7
+ //
+ this.cmbB7.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+ this.cmbB7.Enabled = false;
+ this.cmbB7.FormattingEnabled = true;
+ this.cmbB7.Location = new System.Drawing.Point(299, 334);
+ this.cmbB7.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.cmbB7.Name = "cmbB7";
+ this.cmbB7.Size = new System.Drawing.Size(148, 24);
+ this.cmbB7.TabIndex = 237;
+ //
+ // cmbB6
+ //
+ this.cmbB6.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+ this.cmbB6.Enabled = false;
+ this.cmbB6.FormattingEnabled = true;
+ this.cmbB6.Location = new System.Drawing.Point(299, 304);
+ this.cmbB6.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.cmbB6.Name = "cmbB6";
+ this.cmbB6.Size = new System.Drawing.Size(148, 24);
+ this.cmbB6.TabIndex = 236;
+ //
+ // cmbB5
+ //
+ this.cmbB5.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+ this.cmbB5.Enabled = false;
+ this.cmbB5.FormattingEnabled = true;
+ this.cmbB5.Location = new System.Drawing.Point(299, 274);
+ this.cmbB5.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.cmbB5.Name = "cmbB5";
+ this.cmbB5.Size = new System.Drawing.Size(148, 24);
+ this.cmbB5.TabIndex = 235;
+ //
+ // cmbB4
+ //
+ this.cmbB4.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+ this.cmbB4.Enabled = false;
+ this.cmbB4.FormattingEnabled = true;
+ this.cmbB4.Location = new System.Drawing.Point(299, 244);
+ this.cmbB4.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.cmbB4.Name = "cmbB4";
+ this.cmbB4.Size = new System.Drawing.Size(148, 24);
+ this.cmbB4.TabIndex = 234;
+ //
+ // cmbB3
+ //
+ this.cmbB3.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+ this.cmbB3.Enabled = false;
+ this.cmbB3.FormattingEnabled = true;
+ this.cmbB3.Location = new System.Drawing.Point(299, 213);
+ this.cmbB3.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.cmbB3.Name = "cmbB3";
+ this.cmbB3.Size = new System.Drawing.Size(148, 24);
+ this.cmbB3.TabIndex = 233;
+ //
+ // cmbB2
+ //
+ this.cmbB2.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+ this.cmbB2.Enabled = false;
+ this.cmbB2.FormattingEnabled = true;
+ this.cmbB2.Location = new System.Drawing.Point(299, 184);
+ this.cmbB2.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.cmbB2.Name = "cmbB2";
+ this.cmbB2.Size = new System.Drawing.Size(148, 24);
+ this.cmbB2.TabIndex = 232;
+ //
+ // cmbB1
+ //
+ this.cmbB1.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+ this.cmbB1.Enabled = false;
+ this.cmbB1.FormattingEnabled = true;
+ this.cmbB1.Location = new System.Drawing.Point(299, 154);
+ this.cmbB1.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.cmbB1.Name = "cmbB1";
+ this.cmbB1.Size = new System.Drawing.Size(148, 24);
+ this.cmbB1.TabIndex = 231;
+ //
+ // cmbB0
+ //
+ this.cmbB0.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+ this.cmbB0.Enabled = false;
+ this.cmbB0.FormattingEnabled = true;
+ this.cmbB0.Location = new System.Drawing.Point(299, 124);
+ this.cmbB0.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.cmbB0.Name = "cmbB0";
+ this.cmbB0.Size = new System.Drawing.Size(148, 24);
+ this.cmbB0.TabIndex = 230;
+ //
+ // cmbA7
+ //
+ this.cmbA7.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+ this.cmbA7.Enabled = false;
+ this.cmbA7.FormattingEnabled = true;
+ this.cmbA7.Location = new System.Drawing.Point(468, 334);
+ this.cmbA7.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.cmbA7.Name = "cmbA7";
+ this.cmbA7.Size = new System.Drawing.Size(148, 24);
+ this.cmbA7.TabIndex = 245;
+ //
+ // cmbA6
+ //
+ this.cmbA6.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+ this.cmbA6.Enabled = false;
+ this.cmbA6.FormattingEnabled = true;
+ this.cmbA6.Location = new System.Drawing.Point(468, 304);
+ this.cmbA6.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.cmbA6.Name = "cmbA6";
+ this.cmbA6.Size = new System.Drawing.Size(148, 24);
+ this.cmbA6.TabIndex = 244;
+ //
+ // cmbA5
+ //
+ this.cmbA5.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+ this.cmbA5.Enabled = false;
+ this.cmbA5.FormattingEnabled = true;
+ this.cmbA5.Location = new System.Drawing.Point(468, 274);
+ this.cmbA5.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.cmbA5.Name = "cmbA5";
+ this.cmbA5.Size = new System.Drawing.Size(148, 24);
+ this.cmbA5.TabIndex = 243;
+ //
+ // cmbA4
+ //
+ this.cmbA4.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+ this.cmbA4.Enabled = false;
+ this.cmbA4.FormattingEnabled = true;
+ this.cmbA4.Location = new System.Drawing.Point(468, 244);
+ this.cmbA4.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.cmbA4.Name = "cmbA4";
+ this.cmbA4.Size = new System.Drawing.Size(148, 24);
+ this.cmbA4.TabIndex = 242;
+ //
+ // cmbA3
+ //
+ this.cmbA3.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+ this.cmbA3.Enabled = false;
+ this.cmbA3.FormattingEnabled = true;
+ this.cmbA3.Location = new System.Drawing.Point(468, 213);
+ this.cmbA3.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.cmbA3.Name = "cmbA3";
+ this.cmbA3.Size = new System.Drawing.Size(148, 24);
+ this.cmbA3.TabIndex = 241;
+ //
+ // cmbA2
+ //
+ this.cmbA2.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+ this.cmbA2.Enabled = false;
+ this.cmbA2.FormattingEnabled = true;
+ this.cmbA2.Location = new System.Drawing.Point(468, 184);
+ this.cmbA2.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.cmbA2.Name = "cmbA2";
+ this.cmbA2.Size = new System.Drawing.Size(148, 24);
+ this.cmbA2.TabIndex = 240;
+ //
+ // cmbA1
+ //
+ this.cmbA1.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+ this.cmbA1.Enabled = false;
+ this.cmbA1.FormattingEnabled = true;
+ this.cmbA1.Location = new System.Drawing.Point(468, 154);
+ this.cmbA1.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.cmbA1.Name = "cmbA1";
+ this.cmbA1.Size = new System.Drawing.Size(148, 24);
+ this.cmbA1.TabIndex = 239;
+ //
+ // cmbA0
+ //
+ this.cmbA0.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+ this.cmbA0.Enabled = false;
+ this.cmbA0.FormattingEnabled = true;
+ this.cmbA0.Location = new System.Drawing.Point(468, 124);
+ this.cmbA0.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.cmbA0.Name = "cmbA0";
+ this.cmbA0.Size = new System.Drawing.Size(148, 24);
+ this.cmbA0.TabIndex = 238;
+ //
+ // lblB1
+ //
+ this.lblB1.AutoSize = true;
+ this.lblB1.Font = new System.Drawing.Font("Microsoft Sans Serif", 16.2F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.lblB1.Location = new System.Drawing.Point(352, 90);
+ this.lblB1.Name = "lblB1";
+ this.lblB1.Size = new System.Drawing.Size(34, 32);
+ this.lblB1.TabIndex = 246;
+ this.lblB1.Text = "B";
+ //
+ // lblA1
+ //
+ this.lblA1.AutoSize = true;
+ this.lblA1.Font = new System.Drawing.Font("Microsoft Sans Serif", 16.2F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.lblA1.Location = new System.Drawing.Point(523, 90);
+ this.lblA1.Name = "lblA1";
+ this.lblA1.Size = new System.Drawing.Size(34, 32);
+ this.lblA1.TabIndex = 247;
+ this.lblA1.Text = "A";
+ //
+ // txtMCP1
+ //
+ this.txtMCP1.Enabled = false;
+ this.txtMCP1.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.txtMCP1.Location = new System.Drawing.Point(468, 52);
+ this.txtMCP1.Name = "txtMCP1";
+ this.txtMCP1.Size = new System.Drawing.Size(148, 30);
+ this.txtMCP1.TabIndex = 248;
+ this.txtMCP1.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
+ //
+ // lblMCP1
+ //
+ this.lblMCP1.AutoSize = true;
+ this.lblMCP1.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.lblMCP1.Location = new System.Drawing.Point(299, 55);
+ this.lblMCP1.Name = "lblMCP1";
+ this.lblMCP1.Size = new System.Drawing.Size(144, 25);
+ this.lblMCP1.TabIndex = 249;
+ this.lblMCP1.Text = "Endereço I2C";
+ //
+ // gpbMCP1
+ //
+ this.gpbMCP1.Controls.Add(this.chbMCP1);
+ this.gpbMCP1.Controls.Add(this.picMCP);
+ this.gpbMCP1.Controls.Add(this.lblMCP1);
+ this.gpbMCP1.Controls.Add(this.cmbB0);
+ this.gpbMCP1.Controls.Add(this.txtMCP1);
+ this.gpbMCP1.Controls.Add(this.cmbB1);
+ this.gpbMCP1.Controls.Add(this.lblA1);
+ this.gpbMCP1.Controls.Add(this.cmbB2);
+ this.gpbMCP1.Controls.Add(this.lblB1);
+ this.gpbMCP1.Controls.Add(this.cmbB3);
+ this.gpbMCP1.Controls.Add(this.cmbA7);
+ this.gpbMCP1.Controls.Add(this.cmbB4);
+ this.gpbMCP1.Controls.Add(this.cmbA6);
+ this.gpbMCP1.Controls.Add(this.cmbB5);
+ this.gpbMCP1.Controls.Add(this.cmbA5);
+ this.gpbMCP1.Controls.Add(this.cmbB6);
+ this.gpbMCP1.Controls.Add(this.cmbA4);
+ this.gpbMCP1.Controls.Add(this.cmbB7);
+ this.gpbMCP1.Controls.Add(this.cmbA3);
+ this.gpbMCP1.Controls.Add(this.cmbA0);
+ this.gpbMCP1.Controls.Add(this.cmbA2);
+ this.gpbMCP1.Controls.Add(this.cmbA1);
+ this.gpbMCP1.Location = new System.Drawing.Point(759, 12);
+ this.gpbMCP1.Name = "gpbMCP1";
+ this.gpbMCP1.Size = new System.Drawing.Size(632, 385);
+ this.gpbMCP1.TabIndex = 250;
+ this.gpbMCP1.TabStop = false;
+ this.gpbMCP1.Text = "Expansor de GPIO";
+ //
+ // chbMCP1
+ //
+ this.chbMCP1.AutoSize = true;
+ this.chbMCP1.Location = new System.Drawing.Point(15, 23);
+ this.chbMCP1.Name = "chbMCP1";
+ this.chbMCP1.Size = new System.Drawing.Size(160, 20);
+ this.chbMCP1.TabIndex = 250;
+ this.chbMCP1.Text = "MCP23017 conectado";
+ this.chbMCP1.UseVisualStyleBackColor = true;
+ this.chbMCP1.CheckedChanged += new System.EventHandler(this.chbMCP_CheckedChanged);
+ //
// frmPinout
//
this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.BackColor = System.Drawing.Color.White;
- this.ClientSize = new System.Drawing.Size(748, 862);
+ this.ClientSize = new System.Drawing.Size(1408, 862);
+ this.Controls.Add(this.gpbMCP1);
this.Controls.Add(this.cbTipo);
this.Controls.Add(this.lblPinout);
this.Controls.Add(this.cmb22);
@@ -676,6 +971,9 @@
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.frmPinout_FormClosing);
this.Load += new System.EventHandler(this.frmPinout_Load);
((System.ComponentModel.ISupportInitialize)(this.imgESP32)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.picMCP)).EndInit();
+ this.gpbMCP1.ResumeLayout(false);
+ this.gpbMCP1.PerformLayout();
this.ResumeLayout(false);
this.PerformLayout();
@@ -731,5 +1029,28 @@
private System.Windows.Forms.ComboBox cmb1;
private System.Windows.Forms.PictureBox imgESP32;
private System.Windows.Forms.ComboBox cbTipo;
+ private System.Windows.Forms.PictureBox picMCP;
+ private System.Windows.Forms.ComboBox cmbB7;
+ private System.Windows.Forms.ComboBox cmbB6;
+ private System.Windows.Forms.ComboBox cmbB5;
+ private System.Windows.Forms.ComboBox cmbB4;
+ private System.Windows.Forms.ComboBox cmbB3;
+ private System.Windows.Forms.ComboBox cmbB2;
+ private System.Windows.Forms.ComboBox cmbB1;
+ private System.Windows.Forms.ComboBox cmbB0;
+ private System.Windows.Forms.ComboBox cmbA7;
+ private System.Windows.Forms.ComboBox cmbA6;
+ private System.Windows.Forms.ComboBox cmbA5;
+ private System.Windows.Forms.ComboBox cmbA4;
+ private System.Windows.Forms.ComboBox cmbA3;
+ private System.Windows.Forms.ComboBox cmbA2;
+ private System.Windows.Forms.ComboBox cmbA1;
+ private System.Windows.Forms.ComboBox cmbA0;
+ private System.Windows.Forms.Label lblB1;
+ private System.Windows.Forms.Label lblA1;
+ private System.Windows.Forms.TextBox txtMCP1;
+ private System.Windows.Forms.Label lblMCP1;
+ private System.Windows.Forms.GroupBox gpbMCP1;
+ private System.Windows.Forms.CheckBox chbMCP1;
}
}
\ No newline at end of file
diff --git a/AgroBase/AgroBase/Forms/frmPinout.cs b/AgroBase/AgroBase/Forms/frmPinout.cs
index c2ae7f543..6169aeb7c 100644
--- a/AgroBase/AgroBase/Forms/frmPinout.cs
+++ b/AgroBase/AgroBase/Forms/frmPinout.cs
@@ -24,7 +24,7 @@ namespace AgroBase.Forms
Enum.GetName(typeof(FuncoesPinout), FuncoesPinout.NaoConectado),
};
List Funcoes = new List();
- List Pinout = new List();
+ PinoutDataModel Pinout = new PinoutDataModel();
List Dispositivos = new List();
public frmPinout(T_Code tipo)
@@ -44,7 +44,12 @@ namespace AgroBase.Forms
Enum.GetName(typeof(FuncoesPinout), FuncoesPinout.NaoConectado),
};
Funcoes = new List();
- Pinout = new List();
+ Pinout = new PinoutDataModel()
+ {
+ ExpansorGPIO = false,
+ EnderecoExpansor = "",
+ Pinos = new List(),
+ };
Dispositivos = new List();
switch (TipoDisp)
@@ -61,7 +66,7 @@ namespace AgroBase.Forms
this.Text = "Pinout - Movimentação";
Funcoes = MovimentacaoModel.Funcoes.ToList();
- Pinout = MovimentacaoModel.Pinout.ToList();
+ Pinout = MovimentacaoModel.Pinout;
Dispositivos = Disp.Dados.Motores.Select(x => new DispositivoDataModel()
{
ID = x.ID,
@@ -81,7 +86,7 @@ namespace AgroBase.Forms
this.Text = "Pinout - Direcional";
Funcoes = DirecionalModel.Funcoes.ToList();
- Pinout = DirecionalModel.Pinout.ToList();
+ Pinout = DirecionalModel.Pinout;
Dispositivos = Disp.Dados.Motores.Select(x => new DispositivoDataModel()
{
ID = x.ID,
@@ -101,7 +106,7 @@ namespace AgroBase.Forms
this.Text = "Pinout - Sensoriamento";
Funcoes = SensoriamentoModel.Funcoes.ToList();
- Pinout = SensoriamentoModel.Pinout.ToList();
+ Pinout = SensoriamentoModel.Pinout;
Dispositivos.Add(new DispositivoDataModel()
{
ID = "",
@@ -131,7 +136,7 @@ namespace AgroBase.Forms
this.Text = "Pinout - Atuador";
Funcoes = AtuadorModel.Funcoes.ToList();
- Pinout = AtuadorModel.Pinout.ToList();
+ Pinout = AtuadorModel.Pinout;
Dispositivos = new List();
Dispositivos.Add(new DispositivoDataModel()
{
@@ -152,7 +157,10 @@ namespace AgroBase.Forms
}
}
- Funcoes.ForEach(x => Pinos.Add(Enum.GetName(typeof(FuncoesPinout), x)));
+ chbMCP1.Checked = Pinout.ExpansorGPIO;
+ txtMCP1.Text = Pinout.EnderecoExpansor;
+
+ //Funcoes.ForEach(x => Pinos.Add(Enum.GetName(typeof(FuncoesPinout), x)));
foreach (var Dispositivo in Dispositivos)
{
@@ -160,18 +168,23 @@ namespace AgroBase.Forms
}
List cmbs = this.Controls.OfType().Where(x => x.Name.Contains("cmb")).ToList();
+ cmbs.AddRange(gpbMCP1.Controls.OfType().ToList());
foreach (var cmb in cmbs)
{
+ if (cmb.Name.Contains("A"))
+ {
+
+ }
cmb.SelectedIndexChanged -= Cmb_SelectedIndexChanged;
cmb.SelectedIndexChanged += Cmb_SelectedIndexChanged;
cmb.Items.Clear();
Pinos.ForEach(x => cmb.Items.Add(x));
cmb.SelectedIndex = 0;
- var Selecionado = Pinout.FirstOrDefault(x => x.Descricao == cmb.Name.Replace("cmb", ""));
+ var Selecionado = Pinout.Pinos.FirstOrDefault(x => x.Descricao == cmb.Name.Replace("cmb", ""));
if (Selecionado != null)
{
- cmb.Enabled = Selecionado.Habilitado;
+ cmb.Enabled = (Selecionado.Barramento == TiposBarramentos.CONTROLADOR && Selecionado.Habilitado) || (Selecionado.Barramento == TiposBarramentos.EXPANSORI2C && chbMCP1.Checked);
if (Selecionado.Habilitado)
{
cmb.SelectedItem = (Selecionado.Funcao != FuncoesPinout.Geral ? Selecionado.ComponenteID + " " : "") + Enum.GetName(typeof(FuncoesPinout), Selecionado.Funcao);
@@ -179,7 +192,7 @@ namespace AgroBase.Forms
}
}
- AtualizaTipoControlador(Pinout.FirstOrDefault().Tipo, false);
+ AtualizaTipoControlador(Pinout.Pinos.FirstOrDefault().Controlador, false);
}
private void frmPinout_FormClosing(object sender, FormClosingEventArgs e)
@@ -195,39 +208,44 @@ namespace AgroBase.Forms
private void btnSalvar_Click(object sender, EventArgs e)
{
- Pinout.ForEach(x =>
+ Pinout.Pinos.ForEach(x =>
{
x.ComponenteID = "";
x.Funcao = FuncoesPinout.NaoConectado;
});
List cmbs = this.Controls.OfType().Where(x => x.Name.Contains("cmb") && x.Enabled && x.Visible).ToList();
+ cmbs.AddRange(gpbMCP1.Controls.OfType().ToList());
foreach (var cmb in cmbs)
{
string ComponenteID = cmb.SelectedItem.ToString().Split(' ').Length > 1 ? cmb.SelectedItem.ToString().Split(' ')[0] : "";
FuncoesPinout Funcao = (FuncoesPinout)Enum.Parse(typeof(FuncoesPinout), ComponenteID != "" ? (cmb.SelectedItem.ToString().Split(' ')[1]) : cmb.SelectedItem.ToString());
- if (Pinout.Any(x => x.Descricao == cmb.Name.Replace("cmb", "")))
+ if (Pinout.Pinos.Any(x => x.Descricao == cmb.Name.Replace("cmb", "")))
{
- Pinout.FirstOrDefault(x => x.Descricao == cmb.Name.Replace("cmb", "")).Funcao = Funcao;
- Pinout.FirstOrDefault(x => x.Descricao == cmb.Name.Replace("cmb", "")).ComponenteID = ComponenteID;
+ Pinout.Pinos.FirstOrDefault(x => x.Descricao == cmb.Name.Replace("cmb", "")).Funcao = Funcao;
+ Pinout.Pinos.FirstOrDefault(x => x.Descricao == cmb.Name.Replace("cmb", "")).ComponenteID = ComponenteID;
+ Pinout.Pinos.FirstOrDefault(x => x.Descricao == cmb.Name.Replace("cmb", "")).Barramento = cmb.Name.Contains("A") || cmb.Name.Contains("B") ? TiposBarramentos.EXPANSORI2C : TiposBarramentos.CONTROLADOR;
}
}
+ Pinout.ExpansorGPIO = chbMCP1.Checked;
+ Pinout.EnderecoExpansor = txtMCP1.Text;
+
PinoutModel.SalvarPinout(Pinout, "pinout" + Enum.GetName(typeof(T_Code), TipoDisp) + ".pin");
switch (TipoDisp)
{
case T_Code.Mov:
- MovimentacaoModel.Pinout = Pinout.ToList();
+ MovimentacaoModel.Pinout = Pinout;
break;
case T_Code.Dir:
- DirecionalModel.Pinout = Pinout.ToList();
+ DirecionalModel.Pinout = Pinout;
break;
case T_Code.Sen:
- SensoriamentoModel.Pinout = Pinout.ToList();
+ SensoriamentoModel.Pinout = Pinout;
break;
case T_Code.Atu:
- AtuadorModel.Pinout = Pinout.ToList();
+ AtuadorModel.Pinout = Pinout;
break;
}
}
@@ -235,7 +253,7 @@ namespace AgroBase.Forms
private void cbTipo_SelectedIndexChanged(object sender, EventArgs e)
{
TiposControladores Tipo = (TiposControladores)(((ComboBox)sender).SelectedIndex);
- if (Pinout.FirstOrDefault().Tipo != Tipo)
+ if (Pinout.Pinos.FirstOrDefault().Controlador != Tipo)
{
AtualizaTipoControlador(Tipo, true);
}
@@ -250,26 +268,60 @@ namespace AgroBase.Forms
imgESP32.Size = new Size(304, 688);
imgESP32.Location = new Point(130, 2);
if (Novo)
- Pinout = PinoutModel.CarregarPinoutPadrao_S3();
+ Pinout = new PinoutDataModel()
+ {
+ ExpansorGPIO = false,
+ EnderecoExpansor = "",
+ Pinos = PinoutModel.CarregarPinoutPadrao_S3(),
+ };
break;
case TiposControladores.ESP32_WROVER:
imgESP32.Image = Properties.Resources.esp32_wrover;
imgESP32.Size = new Size(304, 540);
imgESP32.Location = new Point(130, 40);
if (Novo)
- Pinout = PinoutModel.CarregarPinoutPadrao_Wrover();
+ Pinout = new PinoutDataModel()
+ {
+ ExpansorGPIO = false,
+ EnderecoExpansor = "",
+ Pinos = PinoutModel.CarregarPinoutPadrao_Wrover(),
+ };
break;
}
List cmbs = this.Controls.OfType().Where(x => x.Name.Contains("cmb")).ToList();
foreach (var cmb in cmbs)
{
- cmb.Visible = Pinout.Any(x => x.Descricao == cmb.Name.Replace("cmb", ""));
+ cmb.Visible = Pinout.Pinos.Any(x => x.Descricao == cmb.Name.Replace("cmb", ""));
}
-
cbTipo.SelectedIndex = (int)TipoControlador;
+
+ chbMCP1.Checked = Pinout.ExpansorGPIO;
}
+
+ private void chbMCP_CheckedChanged(object sender, EventArgs e)
+ {
+ CheckBox chb = (CheckBox)sender;
+ AtualizarCombosMCP(chb);
+ }
+
+ private void AtualizarCombosMCP(CheckBox chb)
+ {
+ if (chb.Checked && !Pinout.Pinos.Any(x => x.Barramento == TiposBarramentos.EXPANSORI2C))
+ {
+ Pinout.Pinos.AddRange(PinoutModel.CarregarPinoutPadrao_MCP());
+ }
+ string ID = chb.Name.Replace("chbMCP", "");
+ GroupBox gpb = this.Controls.OfType().FirstOrDefault(x => x.Name == "gpbMCP" + ID);
+ foreach (var cmb in gpb.Controls.OfType())
+ {
+ cmb.Enabled = chb.Checked;
+ }
+ TextBox txt = gpb.Controls.OfType().FirstOrDefault(x => x.Name == "txtMCP" + ID);
+ txt.Enabled = chb.Checked;
+ }
+
}
class DispositivoDataModel
diff --git a/AgroBase/AgroBase/Forms/frmPrincipal.Designer.cs b/AgroBase/AgroBase/Forms/frmPrincipal.Designer.cs
index 8ffcf8eef..c4d8af732 100644
--- a/AgroBase/AgroBase/Forms/frmPrincipal.Designer.cs
+++ b/AgroBase/AgroBase/Forms/frmPrincipal.Designer.cs
@@ -78,6 +78,8 @@ namespace AgroBase
this.gpbJoystick = new System.Windows.Forms.GroupBox();
this.gpbControleDirecional = new System.Windows.Forms.GroupBox();
this.gpbAtalhos = new System.Windows.Forms.GroupBox();
+ this.btnSonar = new System.Windows.Forms.Button();
+ this.btnAtuCalibragem = new System.Windows.Forms.Button();
this.btnContornos = new System.Windows.Forms.Button();
this.btnGPS = new System.Windows.Forms.Button();
this.gpbOperacao = new System.Windows.Forms.GroupBox();
@@ -87,7 +89,7 @@ namespace AgroBase
this.btnIniciarOperacao = new System.Windows.Forms.Button();
this.lblModoOperacao = new System.Windows.Forms.Label();
this.cmbModoOperacao = new System.Windows.Forms.ComboBox();
- this.btnAtuCalibragem = new System.Windows.Forms.Button();
+ this.btnSimulador = new System.Windows.Forms.Button();
this.gpbAcoes.SuspendLayout();
this.erroStrip.SuspendLayout();
this.pnlLateral.SuspendLayout();
@@ -160,7 +162,7 @@ namespace AgroBase
//
this.chbConexaoautomatica.AutoSize = true;
this.chbConexaoautomatica.Location = new System.Drawing.Point(229, 34);
- this.chbConexaoautomatica.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
+ this.chbConexaoautomatica.Margin = new System.Windows.Forms.Padding(4);
this.chbConexaoautomatica.Name = "chbConexaoautomatica";
this.chbConexaoautomatica.Size = new System.Drawing.Size(152, 20);
this.chbConexaoautomatica.TabIndex = 21;
@@ -616,6 +618,8 @@ namespace AgroBase
//
// gpbAtalhos
//
+ this.gpbAtalhos.Controls.Add(this.btnSimulador);
+ this.gpbAtalhos.Controls.Add(this.btnSonar);
this.gpbAtalhos.Controls.Add(this.btnAtuCalibragem);
this.gpbAtalhos.Controls.Add(this.btnContornos);
this.gpbAtalhos.Controls.Add(this.btnGPS);
@@ -633,6 +637,28 @@ namespace AgroBase
this.gpbAtalhos.TabStop = false;
this.gpbAtalhos.Text = "Atalhos";
//
+ // btnSonar
+ //
+ this.btnSonar.Location = new System.Drawing.Point(5, 262);
+ this.btnSonar.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.btnSonar.Name = "btnSonar";
+ this.btnSonar.Size = new System.Drawing.Size(112, 25);
+ this.btnSonar.TabIndex = 22;
+ this.btnSonar.Text = "Sonar";
+ this.btnSonar.UseVisualStyleBackColor = true;
+ this.btnSonar.Click += new System.EventHandler(this.btnSonar_Click);
+ //
+ // btnAtuCalibragem
+ //
+ this.btnAtuCalibragem.Location = new System.Drawing.Point(6, 233);
+ this.btnAtuCalibragem.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.btnAtuCalibragem.Name = "btnAtuCalibragem";
+ this.btnAtuCalibragem.Size = new System.Drawing.Size(112, 25);
+ this.btnAtuCalibragem.TabIndex = 21;
+ this.btnAtuCalibragem.Text = "Atuador";
+ this.btnAtuCalibragem.UseVisualStyleBackColor = true;
+ this.btnAtuCalibragem.Click += new System.EventHandler(this.btnAtuCalibragem_Click);
+ //
// btnContornos
//
this.btnContornos.Location = new System.Drawing.Point(5, 204);
@@ -736,16 +762,16 @@ namespace AgroBase
this.cmbModoOperacao.TabIndex = 13;
this.cmbModoOperacao.SelectedIndexChanged += new System.EventHandler(this.cmbModoOperacao_SelectedIndexChanged);
//
- // btnAtuCalibragem
+ // btnSimulador
//
- this.btnAtuCalibragem.Location = new System.Drawing.Point(6, 233);
- this.btnAtuCalibragem.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
- this.btnAtuCalibragem.Name = "btnAtuCalibragem";
- this.btnAtuCalibragem.Size = new System.Drawing.Size(112, 25);
- this.btnAtuCalibragem.TabIndex = 21;
- this.btnAtuCalibragem.Text = "Calibrar Atuador";
- this.btnAtuCalibragem.UseVisualStyleBackColor = true;
- this.btnAtuCalibragem.Click += new System.EventHandler(this.btnAtuCalibragem_Click);
+ this.btnSimulador.Location = new System.Drawing.Point(5, 291);
+ this.btnSimulador.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.btnSimulador.Name = "btnSimulador";
+ this.btnSimulador.Size = new System.Drawing.Size(112, 25);
+ this.btnSimulador.TabIndex = 23;
+ this.btnSimulador.Text = "Simulador";
+ this.btnSimulador.UseVisualStyleBackColor = true;
+ this.btnSimulador.Click += new System.EventHandler(this.btnSimulador_Click);
//
// frmPrincipal
//
@@ -858,6 +884,8 @@ namespace AgroBase
public System.Windows.Forms.CheckBox chbConexaoautomatica;
public System.Windows.Forms.CheckBox chbDebugMode;
private System.Windows.Forms.Button btnAtuCalibragem;
+ private System.Windows.Forms.Button btnSonar;
+ private System.Windows.Forms.Button btnSimulador;
}
}
diff --git a/AgroBase/AgroBase/Forms/frmPrincipal.cs b/AgroBase/AgroBase/Forms/frmPrincipal.cs
index 5ce8f4c8c..f10fdcaf7 100644
--- a/AgroBase/AgroBase/Forms/frmPrincipal.cs
+++ b/AgroBase/AgroBase/Forms/frmPrincipal.cs
@@ -138,7 +138,7 @@ namespace AgroBase
SerialService.DispositivosMapeados
.Select(x => new ListViewItem()
{
- Text = x.PortaCOM + " - " + Enum.GetName(typeof(T_Code), x.Dispositivo) + " - " +
+ Text = x.PortaCOM + " - " + Enum.GetName(typeof(T_Code), x.Dispositivo) + " v" + x.Versao + " - " +
(x.Dispositivo == T_Code.Gps ? (GPSService.PortaGPS != null && GPSService.PortaGPS.IsOpen ? "Conectado" : "Desconectado") :
x.Dispositivo == T_Code.Pzm ? (PZEMService.PortaPZEM != null && PZEMService.PortaPZEM.IsOpen ? "Conectado" : "Desconectado") :
(Variaveis.DispositivosConectados.FirstOrDefault(y => y.PortaCOM() == x.PortaCOM)?.StatusPorta() ?? "Desconectado"))
@@ -170,7 +170,6 @@ namespace AgroBase
}
catch
{
-
}
}
@@ -278,19 +277,7 @@ namespace AgroBase
}
else
{
- if (Variaveis.OperacaoEmAndamento.OperacaoLiberada)
- {
- Variaveis.OperacaoEmAndamento.frmOperacao = (Form)Activator.CreateInstance(Variaveis.OperacaoEmAndamento.frmOperacao.GetType());
- /*if (Variaveis.OperacaoEmAndamento.Modo == ModoOperacao.Manual)
- {
- Variaveis.OperacaoEmAndamento.Iniciado = true;
- }*/
- Variaveis.OperacaoEmAndamento.frmOperacao.Show();
- }
- else
- {
- MessageBox.Show(Variaveis.OperacaoEmAndamento.ErroOperacaoLiberada, "Conexão de módulos pendentes", MessageBoxButtons.OK, MessageBoxIcon.Warning);
- }
+ Variaveis.OperacaoEmAndamento.AbrirForm();
}
lblStripOperacao.Text = "Operação: " + Enum.GetName(typeof(ModoOperacao), Variaveis.OperacaoEmAndamento.Modo);
@@ -320,5 +307,17 @@ namespace AgroBase
frmAtuCalibragem frm = new frmAtuCalibragem();
frm.Show();
}
+
+ private void btnSonar_Click(object sender, EventArgs e)
+ {
+ frmSonar frm = new frmSonar();
+ frm.Show();
+ }
+
+ private void btnSimulador_Click(object sender, EventArgs e)
+ {
+ frmSimulacaoMapaGPS frm = new frmSimulacaoMapaGPS();
+ frm.Show();
+ }
}
}
diff --git a/AgroBase/AgroBase/Forms/frmSimulacaoMapaGPS.Designer.cs b/AgroBase/AgroBase/Forms/frmSimulacaoMapaGPS.Designer.cs
new file mode 100644
index 000000000..9487763f9
--- /dev/null
+++ b/AgroBase/AgroBase/Forms/frmSimulacaoMapaGPS.Designer.cs
@@ -0,0 +1,468 @@
+namespace AgroBase.Forms
+{
+ partial class frmSimulacaoMapaGPS
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ this.pnlOpcoes = new System.Windows.Forms.Panel();
+ this.lblDistanciaFinal = new System.Windows.Forms.Label();
+ this.btnCarregarMapa = new System.Windows.Forms.Button();
+ this.lblDistanciaOperacao = new System.Windows.Forms.Label();
+ this.btnIniciarSimulacao = new System.Windows.Forms.Button();
+ this.gpbSonar = new System.Windows.Forms.GroupBox();
+ this.btnAdicionarDeteccao = new System.Windows.Forms.Button();
+ this.lblAnguloFinal = new System.Windows.Forms.Label();
+ this.txtAnguloFinal = new System.Windows.Forms.TextBox();
+ this.lblDistanciaSonar = new System.Windows.Forms.Label();
+ this.txtDistanciaSonar = new System.Windows.Forms.TextBox();
+ this.lblAnguloI = new System.Windows.Forms.Label();
+ this.txtAnguloInicial = new System.Windows.Forms.TextBox();
+ this.lblDirecao = new System.Windows.Forms.Label();
+ this.lblStatus = new System.Windows.Forms.Label();
+ this.gpbGPS = new System.Windows.Forms.GroupBox();
+ this.btnAcrescentarGPS = new System.Windows.Forms.Button();
+ this.lblDistancia = new System.Windows.Forms.Label();
+ this.txtDistanciaGPS = new System.Windows.Forms.TextBox();
+ this.lblAnguloGPS = new System.Windows.Forms.Label();
+ this.txtAnguloGPS = new System.Windows.Forms.TextBox();
+ this.lblLongitude = new System.Windows.Forms.Label();
+ this.lblLatitude = new System.Windows.Forms.Label();
+ this.txtLongitude = new System.Windows.Forms.TextBox();
+ this.txtLatitude = new System.Windows.Forms.TextBox();
+ this.btnIniciarGPS = new System.Windows.Forms.Button();
+ this.pnlMapa = new System.Windows.Forms.Panel();
+ this.pnlOrientacaoTrajeto = new System.Windows.Forms.Panel();
+ this.pnlSonar = new System.Windows.Forms.Panel();
+ this.picSonar = new System.Windows.Forms.PictureBox();
+ this.chbSonarVirando = new System.Windows.Forms.CheckBox();
+ this.chbMoverObstaculo = new System.Windows.Forms.CheckBox();
+ this.pnlOpcoes.SuspendLayout();
+ this.gpbSonar.SuspendLayout();
+ this.gpbGPS.SuspendLayout();
+ this.pnlMapa.SuspendLayout();
+ this.pnlSonar.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.picSonar)).BeginInit();
+ this.SuspendLayout();
+ //
+ // pnlOpcoes
+ //
+ this.pnlOpcoes.Controls.Add(this.lblDistanciaFinal);
+ this.pnlOpcoes.Controls.Add(this.btnCarregarMapa);
+ this.pnlOpcoes.Controls.Add(this.lblDistanciaOperacao);
+ this.pnlOpcoes.Controls.Add(this.btnIniciarSimulacao);
+ this.pnlOpcoes.Controls.Add(this.gpbSonar);
+ this.pnlOpcoes.Controls.Add(this.lblDirecao);
+ this.pnlOpcoes.Controls.Add(this.lblStatus);
+ this.pnlOpcoes.Controls.Add(this.gpbGPS);
+ this.pnlOpcoes.Dock = System.Windows.Forms.DockStyle.Bottom;
+ this.pnlOpcoes.Location = new System.Drawing.Point(0, 590);
+ this.pnlOpcoes.Name = "pnlOpcoes";
+ this.pnlOpcoes.Size = new System.Drawing.Size(1371, 123);
+ this.pnlOpcoes.TabIndex = 0;
+ //
+ // lblDistanciaFinal
+ //
+ this.lblDistanciaFinal.AutoSize = true;
+ this.lblDistanciaFinal.Font = new System.Drawing.Font("Microsoft Sans Serif", 7.8F);
+ this.lblDistanciaFinal.Location = new System.Drawing.Point(9, 85);
+ this.lblDistanciaFinal.Name = "lblDistanciaFinal";
+ this.lblDistanciaFinal.Size = new System.Drawing.Size(146, 16);
+ this.lblDistanciaFinal.TabIndex = 21;
+ this.lblDistanciaFinal.Text = "Distância Final: 00,00 m";
+ //
+ // btnCarregarMapa
+ //
+ this.btnCarregarMapa.Location = new System.Drawing.Point(12, 8);
+ this.btnCarregarMapa.Name = "btnCarregarMapa";
+ this.btnCarregarMapa.Size = new System.Drawing.Size(161, 23);
+ this.btnCarregarMapa.TabIndex = 20;
+ this.btnCarregarMapa.Text = "Carregar Mapa";
+ this.btnCarregarMapa.UseVisualStyleBackColor = true;
+ this.btnCarregarMapa.Click += new System.EventHandler(this.btnCarregarMapa_Click);
+ //
+ // lblDistanciaOperacao
+ //
+ this.lblDistanciaOperacao.AutoSize = true;
+ this.lblDistanciaOperacao.Font = new System.Drawing.Font("Microsoft Sans Serif", 7.8F);
+ this.lblDistanciaOperacao.Location = new System.Drawing.Point(9, 66);
+ this.lblDistanciaOperacao.Name = "lblDistanciaOperacao";
+ this.lblDistanciaOperacao.Size = new System.Drawing.Size(178, 16);
+ this.lblDistanciaOperacao.TabIndex = 19;
+ this.lblDistanciaOperacao.Text = "Distância Operação: 00,00 m";
+ //
+ // btnIniciarSimulacao
+ //
+ this.btnIniciarSimulacao.Location = new System.Drawing.Point(12, 37);
+ this.btnIniciarSimulacao.Name = "btnIniciarSimulacao";
+ this.btnIniciarSimulacao.Size = new System.Drawing.Size(161, 25);
+ this.btnIniciarSimulacao.TabIndex = 18;
+ this.btnIniciarSimulacao.Text = "Iniciar Simulação";
+ this.btnIniciarSimulacao.UseVisualStyleBackColor = true;
+ this.btnIniciarSimulacao.Click += new System.EventHandler(this.btnIniciarSimulacao_Click);
+ //
+ // gpbSonar
+ //
+ this.gpbSonar.Controls.Add(this.chbMoverObstaculo);
+ this.gpbSonar.Controls.Add(this.chbSonarVirando);
+ this.gpbSonar.Controls.Add(this.btnAdicionarDeteccao);
+ this.gpbSonar.Controls.Add(this.lblAnguloFinal);
+ this.gpbSonar.Controls.Add(this.txtAnguloFinal);
+ this.gpbSonar.Controls.Add(this.lblDistanciaSonar);
+ this.gpbSonar.Controls.Add(this.txtDistanciaSonar);
+ this.gpbSonar.Controls.Add(this.lblAnguloI);
+ this.gpbSonar.Controls.Add(this.txtAnguloInicial);
+ this.gpbSonar.Location = new System.Drawing.Point(811, 3);
+ this.gpbSonar.Name = "gpbSonar";
+ this.gpbSonar.Size = new System.Drawing.Size(309, 117);
+ this.gpbSonar.TabIndex = 17;
+ this.gpbSonar.TabStop = false;
+ this.gpbSonar.Text = "Sonar";
+ //
+ // btnAdicionarDeteccao
+ //
+ this.btnAdicionarDeteccao.Location = new System.Drawing.Point(93, 79);
+ this.btnAdicionarDeteccao.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.btnAdicionarDeteccao.Name = "btnAdicionarDeteccao";
+ this.btnAdicionarDeteccao.Size = new System.Drawing.Size(60, 28);
+ this.btnAdicionarDeteccao.TabIndex = 25;
+ this.btnAdicionarDeteccao.Text = "Add";
+ this.btnAdicionarDeteccao.UseVisualStyleBackColor = true;
+ this.btnAdicionarDeteccao.Click += new System.EventHandler(this.btnAdicionarDeteccao_Click);
+ //
+ // lblAnguloFinal
+ //
+ this.lblAnguloFinal.AutoSize = true;
+ this.lblAnguloFinal.Location = new System.Drawing.Point(90, 22);
+ this.lblAnguloFinal.Name = "lblAnguloFinal";
+ this.lblAnguloFinal.Size = new System.Drawing.Size(67, 16);
+ this.lblAnguloFinal.TabIndex = 27;
+ this.lblAnguloFinal.Text = "Angulo Fn";
+ //
+ // txtAnguloFinal
+ //
+ this.txtAnguloFinal.Location = new System.Drawing.Point(93, 41);
+ this.txtAnguloFinal.Name = "txtAnguloFinal";
+ this.txtAnguloFinal.Size = new System.Drawing.Size(60, 22);
+ this.txtAnguloFinal.TabIndex = 23;
+ this.txtAnguloFinal.Text = "0";
+ this.txtAnguloFinal.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
+ //
+ // lblDistanciaSonar
+ //
+ this.lblDistanciaSonar.AutoSize = true;
+ this.lblDistanciaSonar.Location = new System.Drawing.Point(12, 66);
+ this.lblDistanciaSonar.Name = "lblDistanciaSonar";
+ this.lblDistanciaSonar.Size = new System.Drawing.Size(63, 16);
+ this.lblDistanciaSonar.TabIndex = 25;
+ this.lblDistanciaSonar.Text = "Distancia";
+ //
+ // txtDistanciaSonar
+ //
+ this.txtDistanciaSonar.Location = new System.Drawing.Point(15, 85);
+ this.txtDistanciaSonar.Name = "txtDistanciaSonar";
+ this.txtDistanciaSonar.Size = new System.Drawing.Size(60, 22);
+ this.txtDistanciaSonar.TabIndex = 24;
+ this.txtDistanciaSonar.Text = "0";
+ this.txtDistanciaSonar.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
+ //
+ // lblAnguloI
+ //
+ this.lblAnguloI.AutoSize = true;
+ this.lblAnguloI.Location = new System.Drawing.Point(12, 22);
+ this.lblAnguloI.Name = "lblAnguloI";
+ this.lblAnguloI.Size = new System.Drawing.Size(62, 16);
+ this.lblAnguloI.TabIndex = 23;
+ this.lblAnguloI.Text = "Angulo In";
+ //
+ // txtAnguloInicial
+ //
+ this.txtAnguloInicial.Location = new System.Drawing.Point(15, 41);
+ this.txtAnguloInicial.Name = "txtAnguloInicial";
+ this.txtAnguloInicial.Size = new System.Drawing.Size(60, 22);
+ this.txtAnguloInicial.TabIndex = 22;
+ this.txtAnguloInicial.Text = "0";
+ this.txtAnguloInicial.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
+ //
+ // lblDirecao
+ //
+ this.lblDirecao.AutoSize = true;
+ this.lblDirecao.Font = new System.Drawing.Font("Microsoft Sans Serif", 7.8F);
+ this.lblDirecao.Location = new System.Drawing.Point(9, 104);
+ this.lblDirecao.Name = "lblDirecao";
+ this.lblDirecao.Size = new System.Drawing.Size(106, 16);
+ this.lblDirecao.TabIndex = 16;
+ this.lblDirecao.Text = "Direção: Parado";
+ //
+ // lblStatus
+ //
+ this.lblStatus.AutoSize = true;
+ this.lblStatus.Font = new System.Drawing.Font("Microsoft Sans Serif", 7.8F);
+ this.lblStatus.Location = new System.Drawing.Point(205, 85);
+ this.lblStatus.Name = "lblStatus";
+ this.lblStatus.Size = new System.Drawing.Size(125, 16);
+ this.lblStatus.TabIndex = 15;
+ this.lblStatus.Text = "Status: Aguardando";
+ //
+ // gpbGPS
+ //
+ this.gpbGPS.Controls.Add(this.btnAcrescentarGPS);
+ this.gpbGPS.Controls.Add(this.lblDistancia);
+ this.gpbGPS.Controls.Add(this.txtDistanciaGPS);
+ this.gpbGPS.Controls.Add(this.lblAnguloGPS);
+ this.gpbGPS.Controls.Add(this.txtAnguloGPS);
+ this.gpbGPS.Controls.Add(this.lblLongitude);
+ this.gpbGPS.Controls.Add(this.lblLatitude);
+ this.gpbGPS.Controls.Add(this.txtLongitude);
+ this.gpbGPS.Controls.Add(this.txtLatitude);
+ this.gpbGPS.Controls.Add(this.btnIniciarGPS);
+ this.gpbGPS.Location = new System.Drawing.Point(385, 3);
+ this.gpbGPS.Name = "gpbGPS";
+ this.gpbGPS.Size = new System.Drawing.Size(420, 117);
+ this.gpbGPS.TabIndex = 14;
+ this.gpbGPS.TabStop = false;
+ this.gpbGPS.Text = "GPS";
+ //
+ // btnAcrescentarGPS
+ //
+ this.btnAcrescentarGPS.Enabled = false;
+ this.btnAcrescentarGPS.Location = new System.Drawing.Point(307, 82);
+ this.btnAcrescentarGPS.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.btnAcrescentarGPS.Name = "btnAcrescentarGPS";
+ this.btnAcrescentarGPS.Size = new System.Drawing.Size(99, 28);
+ this.btnAcrescentarGPS.TabIndex = 22;
+ this.btnAcrescentarGPS.Text = "Acrescentar";
+ this.btnAcrescentarGPS.UseVisualStyleBackColor = true;
+ this.btnAcrescentarGPS.Click += new System.EventHandler(this.btnAcrescentarGPS_Click);
+ //
+ // lblDistancia
+ //
+ this.lblDistancia.AutoSize = true;
+ this.lblDistancia.Location = new System.Drawing.Point(212, 66);
+ this.lblDistancia.Name = "lblDistancia";
+ this.lblDistancia.Size = new System.Drawing.Size(63, 16);
+ this.lblDistancia.TabIndex = 21;
+ this.lblDistancia.Text = "Distancia";
+ //
+ // txtDistanciaGPS
+ //
+ this.txtDistanciaGPS.Enabled = false;
+ this.txtDistanciaGPS.Location = new System.Drawing.Point(215, 85);
+ this.txtDistanciaGPS.Name = "txtDistanciaGPS";
+ this.txtDistanciaGPS.Size = new System.Drawing.Size(71, 22);
+ this.txtDistanciaGPS.TabIndex = 20;
+ this.txtDistanciaGPS.Text = "0";
+ this.txtDistanciaGPS.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
+ //
+ // lblAnguloGPS
+ //
+ this.lblAnguloGPS.AutoSize = true;
+ this.lblAnguloGPS.Location = new System.Drawing.Point(212, 22);
+ this.lblAnguloGPS.Name = "lblAnguloGPS";
+ this.lblAnguloGPS.Size = new System.Drawing.Size(49, 16);
+ this.lblAnguloGPS.TabIndex = 19;
+ this.lblAnguloGPS.Text = "Angulo";
+ //
+ // txtAnguloGPS
+ //
+ this.txtAnguloGPS.Enabled = false;
+ this.txtAnguloGPS.Location = new System.Drawing.Point(215, 41);
+ this.txtAnguloGPS.Name = "txtAnguloGPS";
+ this.txtAnguloGPS.Size = new System.Drawing.Size(71, 22);
+ this.txtAnguloGPS.TabIndex = 18;
+ this.txtAnguloGPS.Text = "0";
+ this.txtAnguloGPS.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
+ //
+ // lblLongitude
+ //
+ this.lblLongitude.AutoSize = true;
+ this.lblLongitude.Location = new System.Drawing.Point(9, 66);
+ this.lblLongitude.Name = "lblLongitude";
+ this.lblLongitude.Size = new System.Drawing.Size(66, 16);
+ this.lblLongitude.TabIndex = 17;
+ this.lblLongitude.Text = "Longitude";
+ //
+ // lblLatitude
+ //
+ this.lblLatitude.AutoSize = true;
+ this.lblLatitude.Location = new System.Drawing.Point(9, 22);
+ this.lblLatitude.Name = "lblLatitude";
+ this.lblLatitude.Size = new System.Drawing.Size(54, 16);
+ this.lblLatitude.TabIndex = 16;
+ this.lblLatitude.Text = "Latitude";
+ //
+ // txtLongitude
+ //
+ this.txtLongitude.Location = new System.Drawing.Point(12, 85);
+ this.txtLongitude.Name = "txtLongitude";
+ this.txtLongitude.Size = new System.Drawing.Size(179, 22);
+ this.txtLongitude.TabIndex = 15;
+ this.txtLongitude.Text = "-47.26406713810977";
+ this.txtLongitude.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
+ //
+ // txtLatitude
+ //
+ this.txtLatitude.Location = new System.Drawing.Point(12, 41);
+ this.txtLatitude.Name = "txtLatitude";
+ this.txtLatitude.Size = new System.Drawing.Size(179, 22);
+ this.txtLatitude.TabIndex = 14;
+ this.txtLatitude.Text = "-22.339442335994334";
+ this.txtLatitude.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
+ //
+ // btnIniciarGPS
+ //
+ this.btnIniciarGPS.Location = new System.Drawing.Point(307, 38);
+ this.btnIniciarGPS.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.btnIniciarGPS.Name = "btnIniciarGPS";
+ this.btnIniciarGPS.Size = new System.Drawing.Size(99, 28);
+ this.btnIniciarGPS.TabIndex = 13;
+ this.btnIniciarGPS.Text = "Iniciar";
+ this.btnIniciarGPS.UseVisualStyleBackColor = true;
+ this.btnIniciarGPS.Click += new System.EventHandler(this.btnIniciarGPS_Click);
+ //
+ // pnlMapa
+ //
+ this.pnlMapa.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+ | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right)));
+ this.pnlMapa.Controls.Add(this.pnlOrientacaoTrajeto);
+ this.pnlMapa.Location = new System.Drawing.Point(12, 12);
+ this.pnlMapa.Name = "pnlMapa";
+ this.pnlMapa.Size = new System.Drawing.Size(674, 572);
+ this.pnlMapa.TabIndex = 1;
+ //
+ // pnlOrientacaoTrajeto
+ //
+ this.pnlOrientacaoTrajeto.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+ this.pnlOrientacaoTrajeto.BackColor = System.Drawing.Color.White;
+ this.pnlOrientacaoTrajeto.BackgroundImage = global::AgroBase.Properties.Resources.rosa_dos_ventos;
+ this.pnlOrientacaoTrajeto.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom;
+ this.pnlOrientacaoTrajeto.Location = new System.Drawing.Point(567, 2);
+ this.pnlOrientacaoTrajeto.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.pnlOrientacaoTrajeto.Name = "pnlOrientacaoTrajeto";
+ this.pnlOrientacaoTrajeto.Size = new System.Drawing.Size(104, 103);
+ this.pnlOrientacaoTrajeto.TabIndex = 12;
+ this.pnlOrientacaoTrajeto.Paint += new System.Windows.Forms.PaintEventHandler(this.pnlOrientacaoTrajeto_Paint);
+ //
+ // pnlSonar
+ //
+ this.pnlSonar.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+ | System.Windows.Forms.AnchorStyles.Right)));
+ this.pnlSonar.Controls.Add(this.picSonar);
+ this.pnlSonar.Location = new System.Drawing.Point(692, 12);
+ this.pnlSonar.Name = "pnlSonar";
+ this.pnlSonar.Size = new System.Drawing.Size(667, 572);
+ this.pnlSonar.TabIndex = 2;
+ //
+ // picSonar
+ //
+ this.picSonar.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.picSonar.Location = new System.Drawing.Point(0, 0);
+ this.picSonar.Name = "picSonar";
+ this.picSonar.Size = new System.Drawing.Size(667, 572);
+ this.picSonar.TabIndex = 0;
+ this.picSonar.TabStop = false;
+ //
+ // chbSonarVirando
+ //
+ this.chbSonarVirando.AutoSize = true;
+ this.chbSonarVirando.Location = new System.Drawing.Point(165, 84);
+ this.chbSonarVirando.Name = "chbSonarVirando";
+ this.chbSonarVirando.Size = new System.Drawing.Size(117, 20);
+ this.chbSonarVirando.TabIndex = 28;
+ this.chbSonarVirando.Text = "Sonar atuando";
+ this.chbSonarVirando.UseVisualStyleBackColor = true;
+ //
+ // chbMoverObstaculo
+ //
+ this.chbMoverObstaculo.AutoSize = true;
+ this.chbMoverObstaculo.Location = new System.Drawing.Point(165, 43);
+ this.chbMoverObstaculo.Name = "chbMoverObstaculo";
+ this.chbMoverObstaculo.Size = new System.Drawing.Size(129, 20);
+ this.chbMoverObstaculo.TabIndex = 29;
+ this.chbMoverObstaculo.Text = "Mover obstáculo";
+ this.chbMoverObstaculo.UseVisualStyleBackColor = true;
+ //
+ // frmSimulacaoMapaGPS
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(1371, 713);
+ this.Controls.Add(this.pnlSonar);
+ this.Controls.Add(this.pnlMapa);
+ this.Controls.Add(this.pnlOpcoes);
+ this.Name = "frmSimulacaoMapaGPS";
+ this.Text = "frmSimulacaoMapaGPS";
+ this.Load += new System.EventHandler(this.frmSimulacaoMapaGPS_Load);
+ this.pnlOpcoes.ResumeLayout(false);
+ this.pnlOpcoes.PerformLayout();
+ this.gpbSonar.ResumeLayout(false);
+ this.gpbSonar.PerformLayout();
+ this.gpbGPS.ResumeLayout(false);
+ this.gpbGPS.PerformLayout();
+ this.pnlMapa.ResumeLayout(false);
+ this.pnlSonar.ResumeLayout(false);
+ ((System.ComponentModel.ISupportInitialize)(this.picSonar)).EndInit();
+ this.ResumeLayout(false);
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.Panel pnlOpcoes;
+ private System.Windows.Forms.Panel pnlMapa;
+ private System.Windows.Forms.Panel pnlSonar;
+ private System.Windows.Forms.GroupBox gpbGPS;
+ private System.Windows.Forms.TextBox txtLatitude;
+ private System.Windows.Forms.Button btnIniciarGPS;
+ private System.Windows.Forms.Label lblLongitude;
+ private System.Windows.Forms.Label lblLatitude;
+ private System.Windows.Forms.TextBox txtLongitude;
+ private System.Windows.Forms.Button btnAcrescentarGPS;
+ private System.Windows.Forms.Label lblDistancia;
+ private System.Windows.Forms.TextBox txtDistanciaGPS;
+ private System.Windows.Forms.Label lblAnguloGPS;
+ private System.Windows.Forms.TextBox txtAnguloGPS;
+ private System.Windows.Forms.Label lblDirecao;
+ private System.Windows.Forms.Label lblStatus;
+ private System.Windows.Forms.GroupBox gpbSonar;
+ private System.Windows.Forms.Button btnAdicionarDeteccao;
+ private System.Windows.Forms.Label lblAnguloFinal;
+ private System.Windows.Forms.TextBox txtAnguloFinal;
+ private System.Windows.Forms.Label lblDistanciaSonar;
+ private System.Windows.Forms.TextBox txtDistanciaSonar;
+ private System.Windows.Forms.Label lblAnguloI;
+ private System.Windows.Forms.TextBox txtAnguloInicial;
+ private System.Windows.Forms.Button btnIniciarSimulacao;
+ private System.Windows.Forms.Label lblDistanciaOperacao;
+ private System.Windows.Forms.Button btnCarregarMapa;
+ private System.Windows.Forms.Panel pnlOrientacaoTrajeto;
+ private System.Windows.Forms.Label lblDistanciaFinal;
+ private System.Windows.Forms.PictureBox picSonar;
+ private System.Windows.Forms.CheckBox chbMoverObstaculo;
+ private System.Windows.Forms.CheckBox chbSonarVirando;
+ }
+}
\ No newline at end of file
diff --git a/AgroBase/AgroBase/Forms/frmSimulacaoMapaGPS.cs b/AgroBase/AgroBase/Forms/frmSimulacaoMapaGPS.cs
new file mode 100644
index 000000000..c60017d35
--- /dev/null
+++ b/AgroBase/AgroBase/Forms/frmSimulacaoMapaGPS.cs
@@ -0,0 +1,289 @@
+using AgroBase.Models;
+using AgroBase.Services;
+using CefSharp;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Drawing.Drawing2D;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+using static AgroBase.Models.Enuns;
+
+namespace AgroBase.Forms
+{
+ public partial class frmSimulacaoMapaGPS : Form
+ {
+ Timer tmrSonar;
+
+ public frmSimulacaoMapaGPS()
+ {
+ InitializeComponent();
+
+ Timer tmr = new Timer() { Interval = 500 };
+ tmr.Tick += Tmr_Tick;
+ tmr.Start();
+
+ tmrSonar = new Timer() { Interval = 100 };
+ tmrSonar.Tick += tmrSonar_Tick;
+ tmrSonar.Start();
+ }
+
+
+
+ private void Tmr_Tick(object sender, EventArgs e)
+ {
+ lblStatus.Text = "Status: " + Enum.GetName(typeof(StatusCarroMapa), Variaveis.OperacaoEmAndamento.OpMapaGPS.ReferencialRuaGPS.StatusAtual);
+ lblDirecao.Text = "Direção: " + Enum.GetName(typeof(DirecaoCarroRua), Variaveis.OperacaoEmAndamento.OpMapaGPS.ReferencialRuaGPS.Direcao);
+ lblDistanciaOperacao.Text = "Distância Operação: " + (Variaveis.OperacaoEmAndamento.Mapa == null ? 0 : Variaveis.OperacaoEmAndamento.Mapa.DistanciaTotal).ToString("00.00") + " m";
+ lblDistanciaFinal.Text = "Distância Final: " + (GPSService.DistanciaDoTrecho(Variaveis.OperacaoEmAndamento.Mapa.TrajetoriaDinamica)).ToString("00.00") + " m";
+
+ if (Variaveis.OperacaoEmAndamento.Iniciado)
+ {
+ var StatusCarro = Variaveis.OperacaoEmAndamento.OpMapaGPS.ReferencialRuaGPS.StatusAtual;
+ if (StatusCarro == StatusCarroMapa.Direcionando)
+ {
+ Variaveis.OperacaoEmAndamento.Mapa.GerarCaminhoEntreDoisPontos(Variaveis.OperacaoEmAndamento.Mapa.Trajetoria[Variaveis.OperacaoEmAndamento.Mapa.IdxRuaAtual].First());
+ }
+ else if (StatusCarro == StatusCarroMapa.Manobrando)
+ {
+ //Variaveis.OperacaoEmAndamento.Mapa.GerarCaminhoEntreDoisPontos(Variaveis.OperacaoEmAndamento.Mapa.Trajetoria[Variaveis.OperacaoEmAndamento.Mapa.IdxRuaAtual].First());
+ }
+
+ pnlOrientacaoTrajeto.Invalidate();
+ }
+ else
+ {
+ Variaveis.OperacaoEmAndamento.OpMapaGPS.AtualizarRuasSelecionadas();
+ }
+ }
+
+
+ private void frmSimulacaoMapaGPS_Load(object sender, EventArgs e)
+ {
+ Variaveis.OperacaoEmAndamento.Mapa = new MapasModel()
+ {
+ pnlMapa = pnlMapa,
+ };
+ Variaveis.OperacaoEmAndamento.Sensoriamento.SonarFrontal = new SonarModel(picSonar);
+ }
+
+ private void btnCarregar_Click(object sender, EventArgs e)
+ {
+ Variaveis.OperacaoEmAndamento.Mapa.btnCarregar_Click((Control) sender, e);
+ }
+
+ private void btnIniciarGPS_Click(object sender, EventArgs e)
+ {
+ AtualizarPosicaoGPS();
+ btnAcrescentarGPS.Enabled = true;
+ txtAnguloGPS.Enabled = true;
+ txtDistanciaGPS.Enabled = true;
+ btnIniciarGPS.Enabled = false;
+ txtLatitude.Enabled = false;
+ txtLongitude.Enabled = false;
+ }
+
+ private void AtualizarPosicaoGPS()
+ {
+ GPSService.PenultimaLeitura = new GPSModel()
+ {
+ DataHora = GPSService.UltimaLeitura.DataHora,
+ Longitude = GPSService.UltimaLeitura.Longitude,
+ Latitude = GPSService.UltimaLeitura.Latitude,
+ };
+
+ GPSService.UltimaLeitura = new GPSModel()
+ {
+ DataHora = DateTime.Now,
+ Longitude = double.Parse(txtLongitude.Text.Replace(".", ",")),
+ Latitude = double.Parse(txtLatitude.Text.Replace(".", ",")),
+ };
+
+ GPSService.AtualizarCoordenadasGPS();
+ }
+
+ private void btnAcrescentarGPS_Click(object sender, EventArgs e)
+ {
+ double angulo = Variaveis.OperacaoEmAndamento.OpMapaGPS.ReferencialRuaGPS.AnguloCaminho;
+ if (txtAnguloGPS.Text != "")
+ {
+ angulo = double.Parse(txtAnguloGPS.Text);
+ }
+ double distancia = double.Parse(txtDistanciaGPS.Text); // Distância em metros
+ angulo -= 180; // Ângulo em graus
+
+ double latitude = GPSService.UltimaLeitura.Latitude;
+ double longitude = GPSService.UltimaLeitura.Longitude;
+
+ // Conversão de ângulo de graus para radianos
+ double anguloRad = angulo * (Math.PI / 180);
+
+ // Raio da Terra em metros
+ double raioTerra = 6371000;
+
+ // Calcular deslocamento de latitude em radianos
+ double deltaLat = distancia * Math.Cos(anguloRad) / raioTerra;
+ // Converter de radianos para graus
+ double latAtt = latitude + deltaLat * (180 / Math.PI);
+
+ // Calcular deslocamento de longitude em radianos
+ double deltaLong = distancia * Math.Sin(anguloRad) / (raioTerra * Math.Cos(latitude * (Math.PI / 180)));
+ // Converter de radianos para graus
+ double longAtt = longitude + deltaLong * (180 / Math.PI);
+
+ // Atualizar os TextBoxes com as novas coordenadas
+ txtLatitude.Text = latAtt.ToString();
+ txtLongitude.Text = longAtt.ToString();
+
+ AtualizarPosicaoGPS();
+
+ if (chbMoverObstaculo.Checked && ObjetoDetectado && double.TryParse(txtDistanciaSonar.Text, out double distSonar))
+ {
+ distSonar -= (distancia * 100);
+ txtDistanciaSonar.Text = distSonar.ToString();
+ }
+ }
+
+ private void btnIniciarSimulacao_Click(object sender, EventArgs e)
+ {
+ Variaveis.OperacaoEmAndamento.Iniciado = !Variaveis.OperacaoEmAndamento.Iniciado;
+ btnIniciarSimulacao.Text = Variaveis.OperacaoEmAndamento.Iniciado ? "Parar Simulação" : "Iniciar Simulação";
+ }
+
+ private void btnCarregarMapa_Click(object sender, EventArgs e)
+ {
+ Variaveis.OperacaoEmAndamento.Mapa.btnCarregar_Click((Control)sender, e);
+ }
+
+ private void pnlOrientacaoTrajeto_Paint(object sender, PaintEventArgs e)
+ {
+ try
+ {
+ double angulo = Variaveis.OperacaoEmAndamento.OpMapaGPS.ReferencialRuaGPS.AnguloCaminho;
+ DesenharInclinacao((Panel)sender, e, (float)angulo, -90);
+ }
+ catch { }
+ }
+
+ private void DesenharInclinacao(Panel pnlBussola, PaintEventArgs e, float anguloInclinacao, float anguloSub)
+ {
+ if (!(anguloInclinacao >= 0 || anguloInclinacao <= 0))
+ {
+ anguloInclinacao = 0;
+ }
+
+ Graphics g = e.Graphics;
+ // Desenha o círculo da bússola
+ int diameter = Math.Min(pnlBussola.Width - 1, pnlBussola.Height - 1);
+ Point centro = new Point((pnlBussola.Width - 1) / 2, (pnlBussola.Height - 1) / 2);
+ //g.DrawEllipse(Pens.Black, centro.X - diameter / 2, centro.Y - diameter / 2, diameter, diameter);
+
+ // Escreve o ângulo no centro do círculo
+ string anguloTexto = $"{anguloInclinacao.ToString("0")}°";
+ Font fonteAngulo = new Font("Arial", 7); // Ajuste o tamanho da fonte conforme necessário
+ SizeF textSize = e.Graphics.MeasureString(anguloTexto, fonteAngulo);
+
+ // Calcula a posição para o texto ser centralizado no círculo
+ float textX = 0;
+ float textY = 0;
+
+ // Define a cor do texto
+ Brush textBrush = Brushes.Black;
+
+ // Desenha o texto no Graphics do painel
+ g.DrawString(anguloTexto, fonteAngulo, textBrush, textX, textY);
+
+ // A linha será desenhada do centro do círculo
+ PointF pontoCentral = new PointF(centro.X, centro.Y);
+ // O comprimento da linha será metade do diâmetro do círculo (raio)
+ float comprimentoLinha = diameter / 3;
+
+ // Ajustar o ângulo para que 0 graus esteja para cima e aumente no sentido horário
+ //float anguloRadianos = (anguloInclinacao - 90) * (float)(Math.PI / 180.0);
+ float anguloRadianos = (anguloInclinacao - anguloSub) * (float)(Math.PI / 180.0);
+
+ // Calcular o ponto final da linha baseado no ângulo de inclinação
+ PointF pontoFinal = new PointF(
+ pontoCentral.X + comprimentoLinha * (float)Math.Cos(anguloRadianos),
+ pontoCentral.Y + comprimentoLinha * (float)Math.Sin(anguloRadianos)
+ );
+
+ // Desenhar a linha de inclinação
+ g.DrawLine(Pens.Red, pontoCentral, pontoFinal);
+
+ // Opcional: Desenhar uma ponta de seta na linha para indicar direção
+ using (AdjustableArrowCap bigArrow = new AdjustableArrowCap(4, 4))
+ {
+ using (Pen pen = new Pen(Color.Red, 2))
+ {
+ pen.CustomEndCap = bigArrow;
+ g.DrawLine(pen, pontoCentral, pontoFinal);
+ }
+ }
+ }
+
+
+ bool ObjetoDetectado = false;
+ Direcao dirSonar = Direcao.Esquerda;
+ int angulo = 0;
+ int posicao = 1;
+ int distanciaMaxima = 356;
+ private void tmrSonar_Tick(object sender, EventArgs e)
+ {
+ if (Variaveis.OperacaoEmAndamento.DispSen.Dados.Conectado && Variaveis.OperacaoEmAndamento.DispSen.Dados.Sensores.Any(x => x.Componente == S_Code.sSNR && x.Inicializado) || !chbSonarVirando.Checked)
+ {
+ return;
+ }
+
+ int.TryParse(txtAnguloInicial.Text, out int anguloInicial);
+ int.TryParse(txtAnguloFinal.Text, out int anguloFinal);
+ int distancia = ObjetoDetectado && angulo >= anguloInicial && angulo <= anguloFinal ? int.Parse(txtDistanciaSonar.Text) : distanciaMaxima;
+
+ var posArr = Variaveis.OperacaoEmAndamento.Sensoriamento.SonarFrontal.Deteccoes.FirstOrDefault(x => x.Posicao == posicao);
+ if (posArr == null)
+ {
+ posArr = new SonarRegistroModel()
+ {
+ Posicao = posicao,
+ Leituras = new List()
+ };
+ Variaveis.OperacaoEmAndamento.Sensoriamento.SonarFrontal.Deteccoes.Add(posArr);
+ }
+ var leituras = posArr.Leituras;
+ if (leituras.Any(x => x.Angulo == angulo))
+ {
+ leituras.First(x => x.Angulo == angulo).Momento = DateTime.Now;
+ leituras.First(x => x.Angulo == angulo).Distancia = distancia;
+ }
+ else
+ {
+ leituras.Add(new SonarLeituraModel(angulo, distancia));
+ }
+ Variaveis.OperacaoEmAndamento.Sensoriamento.SonarFrontal.PosicaoAtual = posicao;
+ Variaveis.OperacaoEmAndamento.Sensoriamento.SonarFrontal.AtualizarSonar();
+
+ angulo += dirSonar == Direcao.Esquerda ? SonarModel.anguloAcrescentar : -SonarModel.anguloAcrescentar;
+
+ if (angulo >= 180)
+ {
+ dirSonar = Direcao.Direita;
+ //posArr.Leituras.Clear();
+ }
+ else if (angulo <= 0)
+ {
+ dirSonar = Direcao.Esquerda;
+ //posArr.Leituras.Clear();
+ }
+ }
+
+ private void btnAdicionarDeteccao_Click(object sender, EventArgs e)
+ {
+ ObjetoDetectado = !ObjetoDetectado;
+ btnAdicionarDeteccao.Text = ObjetoDetectado ? "Del" : "Add";
+ }
+ }
+}
diff --git a/AgroBase/AgroBase/Forms/frmSimulacaoMapaGPS.resx b/AgroBase/AgroBase/Forms/frmSimulacaoMapaGPS.resx
new file mode 100644
index 000000000..1af7de150
--- /dev/null
+++ b/AgroBase/AgroBase/Forms/frmSimulacaoMapaGPS.resx
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/AgroBase/AgroBase/Imagens/mcp.jpg b/AgroBase/AgroBase/Imagens/mcp.jpg
new file mode 100644
index 000000000..8d0272ff7
Binary files /dev/null and b/AgroBase/AgroBase/Imagens/mcp.jpg differ
diff --git a/AgroBase/AgroBase/Imagens/robo_superior.jpg b/AgroBase/AgroBase/Imagens/robo_superior.jpg
index f7f886a6e..24a357702 100644
Binary files a/AgroBase/AgroBase/Imagens/robo_superior.jpg and b/AgroBase/AgroBase/Imagens/robo_superior.jpg differ
diff --git a/AgroBase/AgroBase/Models/Enuns.cs b/AgroBase/AgroBase/Models/Enuns.cs
index 6f873ac96..1f58ccfeb 100644
--- a/AgroBase/AgroBase/Models/Enuns.cs
+++ b/AgroBase/AgroBase/Models/Enuns.cs
@@ -62,6 +62,7 @@ namespace AgroBase.Models
Cfg = 258,
Tst = 288,
Cmd = 293,
+ Err = 404,
}
public enum S_Code
@@ -81,6 +82,7 @@ namespace AgroBase.Models
sMAG = 855,
sBMB = 325,
sLED = 445,
+ sSNR = 532,
}
public enum BotoesJoystick
@@ -122,15 +124,22 @@ namespace AgroBase.Models
public enum StatusOperacao
{
- Parado,
+ NaoIniciado,
Parametrizando,
- Aguardando,
+ Aguardando,
+ EmAndamento,
+ Parado,
+ Concluido
+ }
+
+ public enum StatusCarroMapa
+ {
+ Parado,
EntrandoRua,
CaminhandoRua,
SaindoRua,
- Manobrando,
- Retornando,
- Concluida
+ Manobrando,
+ Direcionando
}
public enum DirecaoCarroRua
diff --git a/AgroBase/AgroBase/Models/GeneralJoystick.cs b/AgroBase/AgroBase/Models/GeneralJoystick.cs
index d0b75313e..6a51c8b73 100644
--- a/AgroBase/AgroBase/Models/GeneralJoystick.cs
+++ b/AgroBase/AgroBase/Models/GeneralJoystick.cs
@@ -32,6 +32,10 @@ namespace AgroBase
new DeParaComandos() { key = Keys.Down, Dispositivo = T_Code.Mov, botaoJoy = BotoesJoystick.X, PararAoSoltar = true },
new DeParaComandos() { key = Keys.Subtract, Dispositivo = T_Code.Mov, botaoJoy = BotoesJoystick.L1, PararAoSoltar = false },
new DeParaComandos() { key = Keys.Add, Dispositivo = T_Code.Mov, botaoJoy = BotoesJoystick.R1, PararAoSoltar = false },
+ new DeParaComandos() { key = Keys.D1, Dispositivo = T_Code.Atu, botaoJoy = BotoesJoystick.L2, PararAoSoltar = true, IDcontrolar = "B01" },
+ new DeParaComandos() { key = Keys.D2, Dispositivo = T_Code.Atu, botaoJoy = BotoesJoystick.L2, PararAoSoltar = true, IDcontrolar = "B02" },
+ new DeParaComandos() { key = Keys.D3, Dispositivo = T_Code.Atu, botaoJoy = BotoesJoystick.R2, PararAoSoltar = true, IDcontrolar = "B03" },
+ new DeParaComandos() { key = Keys.D4, Dispositivo = T_Code.Atu, botaoJoy = BotoesJoystick.R2, PararAoSoltar = true, IDcontrolar = "B04" },
};
public static List BotoesJoyPressionados = new List() { };
@@ -438,11 +442,6 @@ namespace AgroBase
BotoesJoyPressionados.Add(botao.botao);
if (DeParaComandos.Any(x => x.botaoJoy == botao.botao))
{
- if (botao.botao == BotoesJoystick.AEEsquerda || botao.botao == BotoesJoystick.AEDireita)
- {
- int _Angulo = (int)DeParaAnanlogico(botao.valor, 0, MaximoAnalogico, -Angulo, Angulo);
- Console.WriteLine(_Angulo);
- }
EnviaComandoMotor(DeParaComandos.FirstOrDefault(x => x.botaoJoy == botao.botao).key);
}
});
@@ -458,7 +457,7 @@ namespace AgroBase
public static void EnviaComandoMotor(Keys Tecla, T_Code? Disp = null)
{
- if (DispCon.Count == 0 || Variaveis.OperacaoEmAndamento.Modo != ModoOperacao.Manual || !Variaveis.OperacaoEmAndamento.Iniciado)
+ if ((DispCon.Count == 0 || Variaveis.OperacaoEmAndamento.Modo != ModoOperacao.Manual || !Variaveis.OperacaoEmAndamento.Iniciado))
{
return;
}
@@ -466,19 +465,24 @@ namespace AgroBase
ComandosDispositivo Comando = new ComandosDispositivo()
{
Momento = DateTime.Now,
- Comando = Tecla
+ Comando = Tecla,
+ IDcontrolar = DeParaComandos.FirstOrDefault(x => x.key == Tecla)?.IDcontrolar ?? "",
};
Direcao DirecaoAtual = Direcao.Parado;
+ // Cancelar Comando Anterior
if (Comando.Comando == Keys.Escape)
{
- Comando.Dispositivo = Disp ?? Comandos[Comandos.Count - 1].Dispositivo;
+ var ComandosDisp = Disp == null ? Comandos : Comandos.Where(x => x.Dispositivo == Disp).ToList();
+ Comando.Dispositivo = ComandosDisp[ComandosDisp.Count - 1].Dispositivo;
+ Comando.IDcontrolar = ComandosDisp[ComandosDisp.Count - 1].IDcontrolar;
DirecaoAtual = Direcao.Parado;
Pressionado = true;
DispCon.FirstOrDefault(x => x.Dispositivo == Comando.Dispositivo).LimparBufferSerial(true);
}
+ // Controle de Velocidade (MOV RPM SP)
else if (Comando.Comando == Keys.Add)
{
Comando.Dispositivo = T_Code.Mov;
@@ -493,6 +497,7 @@ namespace AgroBase
frmInstancial.frmPrincipal.AtualizaRPM(frmInstancial.frmPrincipal.trkRPM.Value - 1);
Pressionado = true;
}
+ // Controle Direcao dos Motores BLDC (MOV)
else if (Comando.Comando == Keys.Up && UltimaDirecao != Direcao.Frente)
{
Comando.Dispositivo = T_Code.Mov;
@@ -517,6 +522,7 @@ namespace AgroBase
DirecaoAtual = Direcao.Direita;
Pressionado = true;
}
+ // Controle de Rotação dos Motores de Passo (DIR)
else if (Comando.Comando == Keys.A && UltimaDirecao != Direcao.Cima)
{
Comando.Dispositivo = T_Code.Dir;
@@ -529,6 +535,13 @@ namespace AgroBase
DirecaoAtual = Direcao.Baixo;
Pressionado = true;
}
+ // Controle dos Bicos Pulverizadores (ATU)
+ else if ((Comando.Comando == Keys.D1 || Comando.Comando == Keys.D2 || Comando.Comando == Keys.D3 || Comando.Comando == Keys.D4) && !Variaveis.OperacaoEmAndamento.DispAtu.Dados.BicosPulverizadores.FirstOrDefault(x => x.ID == Comando.IDcontrolar).Atuado)
+ {
+ Comando.Dispositivo = T_Code.Atu;
+ Pressionado = true;
+ }
+ // Soltar o Botão
else
{
Pressionado = false;
@@ -538,7 +551,7 @@ namespace AgroBase
{
Comandos.Add(Comando);
- for (int i = 0; i < 1; i++)
+ /*for (int i = 0; i < 1; i++)
{
var Dispositivo = DispCon.FirstOrDefault(x => x.Dispositivo == Comando.Dispositivo);
if (Dispositivo != null)
@@ -554,6 +567,43 @@ namespace AgroBase
}
}
+ Task.Delay(100);
+ }*/
+
+ for (int i = 0; i < 1; i++)
+ {
+ List Protocolos = new List();
+ IDispositivosService Dispositivo = default(IDispositivosService);
+ switch (Comando.Dispositivo)
+ {
+ case T_Code.Mov:
+ {
+ Protocolos = Variaveis.OperacaoEmAndamento.DispMov.Dados.Motores.Select(x => x.ProtocoloComando(DirecaoAtual)).ToList();
+ Dispositivo = Variaveis.OperacaoEmAndamento.DispMov;
+ break;
+ }
+ case T_Code.Dir:
+ {
+ Protocolos = Variaveis.OperacaoEmAndamento.DispDir.Dados.Motores.Select(x => x.ProtocoloComando(DirecaoAtual)).ToList();
+ Dispositivo = Variaveis.OperacaoEmAndamento.DispDir;
+ break;
+ }
+ case T_Code.Atu:
+ {
+ var Bico = Variaveis.OperacaoEmAndamento.DispAtu.Dados.BicosPulverizadores.FirstOrDefault(x => x.ID == Comando.IDcontrolar);
+ Bico.Atuado = Comando.Comando == Keys.Escape ? false : true;
+ Protocolos.Add(Bico.ProtocoloComando());
+ Dispositivo = Variaveis.OperacaoEmAndamento.DispAtu;
+ break;
+ }
+ }
+ foreach (var ProtocoloMotor in Protocolos)
+ {
+ Dispositivo.EnviarDadosSerial(ProtocoloMotor);
+ Task.Delay(10);
+ Console.WriteLine(ProtocoloMotor);
+ }
+
Task.Delay(100);
}
@@ -576,6 +626,7 @@ namespace AgroBase
public DateTime Momento { get; set; }
public Keys Comando { get; set; }
public T_Code Dispositivo { get; set; }
+ public string IDcontrolar { get; set; }
}
public class DeParaComandos
@@ -584,6 +635,7 @@ namespace AgroBase
public Keys key { get; set; }
public T_Code Dispositivo { get; set; }
public bool PararAoSoltar { get; set; }
+ public string IDcontrolar { get; set; }
}
public enum ComparativoAnalogico
diff --git a/AgroBase/AgroBase/Models/MapasModel.cs b/AgroBase/AgroBase/Models/MapasModel.cs
index 229b69830..c28256507 100644
--- a/AgroBase/AgroBase/Models/MapasModel.cs
+++ b/AgroBase/AgroBase/Models/MapasModel.cs
@@ -1,13 +1,16 @@
using AgroBase.Properties;
using AgroBase.Services;
using CefSharp.WinForms;
+using Emgu.CV.Features2D;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
+using System.Security.Cryptography;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
+using static AgroBase.Models.Enuns;
namespace AgroBase.Models
{
@@ -19,6 +22,7 @@ namespace AgroBase.Models
public Label lblMapa { get; set; }
public MapasService mapaService { get; set; } = new MapasService();
public List> Trajetoria { get; set; } = new List>();
+ public List TrajetoriaDinamica { get; set; } = new List();
public List RuasPercorrer { get; set; } = new List();
public int IdxRuaAtual { get; set; } = 0;
public double DistanciaTotal { get; set; } = 0;
@@ -94,10 +98,10 @@ namespace AgroBase.Models
{
double OrientacaoRuas = -999;
DistanciaTotal = 0;
- if (!RuasPercorrer.Any())
+ /*if (!RuasPercorrer.Any())
{
RuasPercorrer = mapaService.DadosMapa.features.Select(x => x.geometry.id).ToList();
- }
+ }*/
Trajetoria = new List>();
foreach (var ID in RuasPercorrer)
@@ -155,8 +159,271 @@ namespace AgroBase.Models
APIService.Parar();
GPSService.PararRecepcaoDados();
}
-
-
+
+
+
+ // Método para gerar o caminho entre dois pontos
+ public void GerarCaminhoEntreDoisPontos(GPSModel destino)
+ {
+ //PopularTrajetoriaComOffset(destino);
+ //return;
+ // Inicialização do caminho com o ponto de início
+ GPSModel inicio = GPSService.UltimaLeitura;
+
+ // Gera waypoints intermediários
+ var caminho = GPSService.InterpolarPontos(inicio, destino, 1.0); // 1 metro de distância entre os pontos
+
+ // Limpa a trajetória dinâmica existente e adiciona os novos pontos
+ TrajetoriaDinamica.Clear();
+ caminho.ForEach(x => TrajetoriaDinamica.Add(x));
+
+ if (Variaveis.OperacaoEmAndamento.Sensoriamento.SonarFrontal.DesvioNecessario)
+ {
+ AjustarTrajetoriaParaDesvio(Variaveis.OperacaoEmAndamento.Sensoriamento.SonarFrontal.ObstaculosDetectados.OrderBy(x => x.DistanciaMedia).First(x => x.DeslocamentoNecessarioDesvio > 0));
+ }
+
+ GPSService.AtualizarTrajetoriaDinamica();
+ }
+
+ public void AjustarTrajetoriaParaDesvio(SonarObstaculoDetectadoModel obstaculo)
+ {
+ GPSModel posicaoAtual = GPSService.UltimaLeitura;
+
+ // Identificar o waypoint mais próximo para iniciar o desvio
+ int indiceInicioDesvio = EncontrarIndiceInicioDesvio(TrajetoriaDinamica, posicaoAtual, ((double)obstaculo.DistanciaMedia / 100));
+
+ // Calcular os waypoints de desvio
+ var waypointsDesvio = CalcularWaypointsDesvio(posicaoAtual, obstaculo, indiceInicioDesvio);
+
+ Console.WriteLine(obstaculo);
+
+ // Determinar o intervalo de waypoints a serem removidos
+ int indiceFinalDesvio = EncontrarIndiceFinalDesvio(TrajetoriaDinamica, waypointsDesvio.Last(), ((double)obstaculo.DistanciaMedia / 100) + ((double)obstaculo.DeslocamentoNecessarioDesvio * 2 / 100));
+ int quantidadeWaypointsRemover = indiceFinalDesvio - indiceInicioDesvio;
+
+ // Remover waypoints obsoletos
+ if (quantidadeWaypointsRemover > 0)
+ {
+ TrajetoriaDinamica.RemoveRange(indiceInicioDesvio + 1, quantidadeWaypointsRemover);
+ }
+
+ // Inserir waypoints de desvio na trajetória
+ TrajetoriaDinamica.InsertRange(indiceInicioDesvio + 1, waypointsDesvio);
+ }
+
+ private int EncontrarIndiceFinalDesvio(List trajetoria, GPSModel ultimoWaypointDesvio, double distanciaSeguranca)
+ {
+ // Encontrar o índice do waypoint que está imediatamente após o retorno do desvio
+ // Este é um método simplificado. A lógica exata pode variar dependendo da precisão necessária.
+ double distanciaAnterior = 0;
+ for (int i = 0; i < trajetoria.Count; i++)
+ {
+ double distancia = GPSService.DistanciaEntrePontos(trajetoria[i], ultimoWaypointDesvio);
+ bool aumentando = distancia > distanciaAnterior;
+ distanciaAnterior = distancia;
+ if (distancia < distanciaSeguranca)
+ {
+ if (aumentando)
+ {
+ return i;
+ }
+ }
+ }
+ return 0; // Se não encontrar, assuma o último waypoint
+ }
+
+ private int EncontrarIndiceInicioDesvio(List trajetoria, GPSModel posicaoAtual, double distanciaObstaculo)
+ {
+ // Este é um método simplificado. Você precisará implementar a lógica para encontrar o waypoint mais adequado.
+ return trajetoria.FindIndex(wp => GPSService.DistanciaEntrePontos(wp, posicaoAtual) < distanciaObstaculo);
+ }
+
+ private List CalcularWaypointsDesvio(GPSModel posicaoAtual, SonarObstaculoDetectadoModel obstaculo, int indiceInicioDesvio)
+ {
+ List waypointsDesvio = new List();
+
+ // Calcular o ângulo e distância para o desvio
+ double anguloDesvio = Variaveis.OperacaoEmAndamento.OpMapaGPS.ReferencialRuaGPS.AnguloCaminho + ((obstaculo.DirecaoDesvio == Enuns.Direcao.Direita ? 270 : 90) + obstaculo.AnguloParaDesvio);
+ double deslocamento = (double)obstaculo.DistanciaMedia / 100; // Math.Sqrt(Math.Pow(((double)obstaculo.DeslocamentoNecessarioDesvio / 100), 2) + Math.Pow(((double)obstaculo.DistanciaMedia / 100), 2));
+
+ // Waypoint de início do desvio
+ GPSModel waypointInicioDesvio = CalcularNovoWaypoint(posicaoAtual, anguloDesvio, deslocamento);
+ waypointsDesvio.Add(waypointInicioDesvio);
+
+ // Waypoint de contorno do obstáculo
+ double anguloContorno = 270 - Variaveis.OperacaoEmAndamento.OpMapaGPS.ReferencialRuaGPS.AnguloCaminho; // Ajustar conforme a orientação do desvio
+ GPSModel waypointContornoObstaculo = CalcularNovoWaypoint(waypointInicioDesvio, anguloContorno, ((double)obstaculo.Largura / 100)); //((double)obstaculo.Largura / 100)
+ waypointsDesvio.Add(waypointContornoObstaculo);
+
+ // Waypoint de retorno à trajetória
+ double anguloRetorno = Variaveis.OperacaoEmAndamento.OpMapaGPS.ReferencialRuaGPS.AnguloCaminho + ((obstaculo.DirecaoDesvio == Enuns.Direcao.Direita ? 90 : 270) - obstaculo.AnguloParaDesvio); //anguloDesvio - obstaculo.AnguloParaDesvio - 180;// Variaveis.OperacaoEmAndamento.OpMapaGPS.ReferencialRuaGPS.AnguloCaminho + (obstaculo.AnguloParaDesvio); // Pode precisar ajustar baseado na orientação do desvio
+ GPSModel waypointRetorno = CalcularNovoWaypoint(waypointContornoObstaculo, anguloRetorno, deslocamento);
+ waypointsDesvio.Add(waypointRetorno);
+
+ return waypointsDesvio;
+ }
+
+ private GPSModel CalcularNovoWaypoint(GPSModel posicaoAtual, double angulo, double distancia)
+ {
+ double anguloRad = FuncoesGlobais.ConvertDegreesToRadians(angulo);
+ double deltaLatitude = Math.Cos(anguloRad) * distancia / 111111; // Conversão para graus
+ double deltaLongitude = Math.Sin(anguloRad) * distancia / (111111 * Math.Cos(FuncoesGlobais.ConvertDegreesToRadians(posicaoAtual.Latitude)));
+
+ return new GPSModel
+ {
+ Latitude = posicaoAtual.Latitude + deltaLatitude,
+ Longitude = posicaoAtual.Longitude + deltaLongitude
+ };
+ }
+
+
+
+ public void PopularTrajetoriaComOffset(GPSModel destino)
+ {
+ if (mapaService.DadosMapa != null)
+ {
+ GPSModel inicio = GPSService.UltimaLeitura;
+
+ // Coleta os primeiros pontos de cada rua com base na orientação e posição atual do robô
+ var pontosExtremosComOffset = new List();
+
+ foreach (var rua in mapaService.DadosMapa.features)
+ {
+ var primeiroPonto = new GPSModel()
+ {
+ Latitude = rua.geometry.coordinates.First()[1],
+ Longitude = rua.geometry.coordinates.First()[0]
+ };
+ var ultimoPonto = new GPSModel()
+ {
+ Latitude = rua.geometry.coordinates.Last()[1],
+ Longitude = rua.geometry.coordinates.Last()[0]
+ };
+ GPSModel pontoInicial = new GPSModel();
+ GPSModel pontoSecundario = new GPSModel();
+
+ if (GPSService.DistanciaEntrePontos(inicio, primeiroPonto) < GPSService.DistanciaEntrePontos(inicio, ultimoPonto))
+ {
+ pontoInicial = primeiroPonto;
+ pontoSecundario = new GPSModel()
+ {
+ Latitude = rua.geometry.coordinates.Skip(1).First()[1],
+ Longitude = rua.geometry.coordinates.Skip(1).First()[0]
+ };
+ }
+ else
+ {
+ pontoInicial = ultimoPonto;
+ pontoSecundario = new GPSModel()
+ {
+ Latitude = rua.geometry.coordinates.Skip(rua.geometry.coordinates.Count - 2).First()[1],
+ Longitude = rua.geometry.coordinates.Skip(rua.geometry.coordinates.Count - 2).First()[0]
+ };
+ }
+
+ var orientacaoRua = GPSService.CalcularOrientacao(pontoInicial, pontoSecundario);
+
+ // Calcula o ponto com offset baseado no ângulo oposto à orientação da rua
+ var anguloOffset = (orientacaoRua + 180) % 360;
+ var distanciaOffset = 10; // Defina o offset desejado aqui
+
+ // Adiciona o ponto com offset à lista
+ pontosExtremosComOffset.Add(new GPSModel
+ {
+ Latitude = pontoInicial.Latitude,// + (Math.Cos(anguloOffset * (Math.PI / 180)) * distanciaOffset),
+ Longitude = pontoInicial.Longitude// + (Math.Sin(anguloOffset * (Math.PI / 180)) * distanciaOffset),
+ });
+ }
+
+ var pontosRelevantes = FiltrarPontosRelevantes(inicio, destino, pontosExtremosComOffset);
+
+ // Ordena os pontos com offset pela proximidade com a posição atual
+ var pontosOrdenados = pontosRelevantes.OrderBy(p => GPSService.DistanciaEntrePontos(inicio, p)).ToList();
+
+ // Agora, conecta os pontos ordenados para formar a trajetória
+ TrajetoriaDinamica.Clear();
+ GPSModel pontoAnterior = inicio;
+ foreach (var ponto in pontosOrdenados)
+ {
+ //var caminho = GPSService.InterpolarPontos(pontoAnterior, ponto, 1.0);
+ //caminho.ForEach(x => TrajetoriaDinamica.Add(x));
+ //pontoAnterior = ponto;
+ TrajetoriaDinamica.Add(ponto);
+ }
+
+ // Atualiza a trajetória dinâmica
+ GPSService.AtualizarTrajetoriaDinamica();
+ }
+ }
+ private List FiltrarPontosRelevantes(GPSModel inicio, GPSModel destino, List todasRuas)
+ {
+ var ruasRelevantes = new List();
+
+ // Define os limites do quadrante
+ double minLatitude = Math.Min(inicio.Latitude, destino.Latitude);
+ double maxLatitude = Math.Max(inicio.Latitude, destino.Latitude);
+ double minLongitude = Math.Min(inicio.Longitude, destino.Longitude);
+ double maxLongitude = Math.Max(inicio.Longitude, destino.Longitude);
+
+ // Filtra previamente os pontos que estão dentro do quadrante definido
+ var pontosNoQuadrante = todasRuas.Where(ponto => ponto.Latitude >= minLatitude && ponto.Latitude <= maxLatitude
+ && ponto.Longitude >= minLongitude && ponto.Longitude <= maxLongitude).ToList();
+
+ // Continua a filtragem dos pontos relevantes como antes, mas agora apenas com os pontos dentro do quadrante
+ GPSModel pontoMaisProximoInicio = IdentificarPontoMaisProximo(inicio, pontosNoQuadrante);
+ if (pontoMaisProximoInicio != null && !ruasRelevantes.Contains(pontoMaisProximoInicio))
+ {
+ ruasRelevantes.Add(pontoMaisProximoInicio);
+ }
+
+ GPSModel ultimoPontoRelevante = pontoMaisProximoInicio;
+
+ foreach (var ponto in pontosNoQuadrante)
+ {
+ if (ponto.Equals(inicio) || ponto.Equals(pontoMaisProximoInicio)) continue;
+
+ double margem = 20;
+ double distanciaPontoAnterior = GPSService.DistanciaEntrePontos(ultimoPontoRelevante, destino);
+ double distanciaPontoAtual = GPSService.DistanciaEntrePontos(ponto, destino);
+ double diferenca = (distanciaPontoAnterior - distanciaPontoAtual);
+ bool relevante = diferenca > 0 && diferenca < margem;
+
+ if (relevante || distanciaPontoAtual == 0 || true)
+ {
+ ruasRelevantes.Add(ponto);
+ ultimoPontoRelevante = ponto;
+ }
+
+ if (distanciaPontoAtual == 0)
+ {
+ break;
+ }
+ }
+
+ return ruasRelevantes;
+ }
+
+ // Método auxiliar para identificar o ponto mais próximo a um dado ponto de referência
+ private GPSModel IdentificarPontoMaisProximo(GPSModel referencia, List pontos)
+ {
+ GPSModel pontoMaisProximo = null;
+ double distanciaMinima = double.MaxValue;
+
+ foreach (var ponto in pontos)
+ {
+ double distancia = GPSService.DistanciaEntrePontos(referencia, ponto);
+ if (distancia < distanciaMinima)
+ {
+ distanciaMinima = distancia;
+ pontoMaisProximo = ponto;
+ }
+ }
+
+ return pontoMaisProximo;
+ }
+
+
+
}
public class MapaFeatureCollectionModel
diff --git a/AgroBase/AgroBase/Models/Modules/AtuadorModel.cs b/AgroBase/AgroBase/Models/Modules/AtuadorModel.cs
index 695d33940..d9d38faed 100644
--- a/AgroBase/AgroBase/Models/Modules/AtuadorModel.cs
+++ b/AgroBase/AgroBase/Models/Modules/AtuadorModel.cs
@@ -14,10 +14,9 @@ namespace AgroBase.Models.Modules
{
public static int _TaxaAmostragem { get; set; } = 500;
public bool Conectado { get; set; } = false;
- public static List Pinout { get; set; }
+ public static PinoutDataModel Pinout { get; set; }
public static List Funcoes { get; set; } = new List()
- {
- FuncoesPinout.Geral,
+ {
FuncoesPinout.SDA,
FuncoesPinout.SCL,
};
@@ -239,8 +238,7 @@ namespace AgroBase.Models.Modules
"MD".PadRight(5, ' ') + ";" + // 0 ~ 4
(Conectar ? "1" : "0") + ";" + // 6
_TaxaAmostragem.ToString("00000") + ";" + // 8 ~ 12
- (Pinout.Any(x => x.Funcao == FuncoesPinout.Geral) ? Pinout.FirstOrDefault(x => x.Funcao == FuncoesPinout.Geral).Pino.ToString("00") : "-1") + ";" + // 14 ~ 15
- (AtuacaoNivelAlto ? "1" : "0"); // 17
+ (AtuacaoNivelAlto ? "1" : "0"); // 14
Config.Add(ProtocoloMOD);
return Config;
}
@@ -324,7 +322,7 @@ namespace AgroBase.Models.Modules
double periodoAtual = Sensor.Leituras.Any() ? (double)_LeituraPeriodo - Sensor.Leituras[1] : (double)_LeituraPeriodo;
VolumeVazaoML += (VazaoFluxoMLpS) * (periodoAtual / 1000);
- Variaveis.OperacaoEmAndamento.Sensoriamento.HerbicidaConsumido = (VolumeVazaoML / 1000);
+ Variaveis.OperacaoEmAndamento.OpMapaGPS.Sensoriamento.HerbicidaConsumido = (VolumeVazaoML / 1000);
}
Sensor.Leituras = new List()
@@ -419,23 +417,6 @@ namespace AgroBase.Models.Modules
}
- public List CarregarPinout(string nomeArquivo)
- {
- if (!File.Exists(nomeArquivo))
- {
- var newPinout = PinoutModel.CarregarPinoutPadrao_S3();
- File.WriteAllText(nomeArquivo, JsonConvert.SerializeObject(newPinout));
- }
- var pinoutText = File.ReadAllText(nomeArquivo);
- Pinout = JsonConvert.DeserializeObject(pinoutText).ToList();
- return Pinout;
- }
-
- public void SalvarPinout(List newPinout, string nomeArquivo)
- {
- File.WriteAllText(nomeArquivo, JsonConvert.SerializeObject(newPinout));
- }
-
public void IniciarRegistrador()
{
@@ -457,13 +438,19 @@ namespace AgroBase.Models.Modules
public string ProtocoloConfiguracaoBico(bool Conectar)
{
- var _pinout = AtuadorModel.Pinout.Where(x => x.ComponenteID == ID).ToList();
+ var _pinout = new PinoutDataModel()
+ {
+ ExpansorGPIO = AtuadorModel.Pinout.ExpansorGPIO,
+ EnderecoExpansor = AtuadorModel.Pinout.EnderecoExpansor,
+ Pinos = AtuadorModel.Pinout.Pinos.ToList(),
+ };
+ _pinout.Pinos = _pinout.Pinos.Where(x => x.ComponenteID == ID).ToList();
return ((int)F_Code.Cfg).ToString() +
ID.PadRight(5, ' ') + ";" + // 0 ~ 2
(Conectar ? "1" : "0") + ";" + // 4
(Comandar ? "1" : "0") + ";" + // 6
Posicao.ToString("00") + ";" + // 8 ~ 9
- (_pinout.Any(x => x.Funcao == FuncoesPinout.Solenoide) ? _pinout.FirstOrDefault(x => x.Funcao == FuncoesPinout.Solenoide).Pino.ToString("00") : "-1"); // 11 ~ 12
+ PinoutModel.PinoProtocolo(_pinout, Funcoes); // 11 ~ 13
}
public string ProtocoloComando()
@@ -527,17 +514,19 @@ namespace AgroBase.Models.Modules
public string ProtocoloConfiguracaoBomba(bool Conectar)
{
- var _pinout = AtuadorModel.Pinout.Where(x => x.ComponenteID == ID).ToList();
+ var _pinout = new PinoutDataModel()
+ {
+ ExpansorGPIO = AtuadorModel.Pinout.ExpansorGPIO,
+ EnderecoExpansor = AtuadorModel.Pinout.EnderecoExpansor,
+ Pinos = AtuadorModel.Pinout.Pinos.ToList(),
+ };
+ _pinout.Pinos = _pinout.Pinos.Where(x => x.ComponenteID == ID).ToList();
return ((int)F_Code.Cfg).ToString() +
ID.PadRight(5, ' ') + ";" + // 0 ~ 4
(Conectar ? "1" : "0") + ";" + // 6
(Comandar ? "1" : "0") + ";" + // 8
PressaoSP.ToString("000") + ";" + // 10 ~ 12
- (_pinout.Any(x => x.Funcao == FuncoesPinout.ENA) ? _pinout.FirstOrDefault(x => x.Funcao == FuncoesPinout.ENA).Pino.ToString("00") : "-1") + ";" + // 14 ~ 15
- (_pinout.Any(x => x.Funcao == FuncoesPinout.CS) ? _pinout.FirstOrDefault(x => x.Funcao == FuncoesPinout.CS).Pino.ToString("00") : "-1") + ";" + // 17 ~ 18
- (_pinout.Any(x => x.Funcao == FuncoesPinout.INA) ? _pinout.FirstOrDefault(x => x.Funcao == FuncoesPinout.INA).Pino.ToString("00") : "-1") + ";" + // 20 ~ 21
- (_pinout.Any(x => x.Funcao == FuncoesPinout.INB) ? _pinout.FirstOrDefault(x => x.Funcao == FuncoesPinout.INB).Pino.ToString("00") : "-1") + ";" + // 23 ~ 24
- (_pinout.Any(x => x.Funcao == FuncoesPinout.PWM) ? _pinout.FirstOrDefault(x => x.Funcao == FuncoesPinout.PWM).Pino.ToString("00") : "-1"); // 26 ~ 27
+ PinoutModel.PinoProtocolo(_pinout, Funcoes); // 14 ~ 32
}
public string ProtocoloComando()
diff --git a/AgroBase/AgroBase/Models/Modules/DirecionalModel.cs b/AgroBase/AgroBase/Models/Modules/DirecionalModel.cs
index 8265560fe..77c040dc0 100644
--- a/AgroBase/AgroBase/Models/Modules/DirecionalModel.cs
+++ b/AgroBase/AgroBase/Models/Modules/DirecionalModel.cs
@@ -21,8 +21,12 @@ namespace AgroBase.Models.Modules
public bool AA_Ref090 { get; set; } = false;
public bool AA_Ref270 { get; set; } = false;
public static int LogsManter { get; set; } = 60;
- public static List Pinout { get; set; }
- public static List Funcoes { get; set; } = new List() { FuncoesPinout.Geral };
+ public static PinoutDataModel Pinout { get; set; }
+ public static List Funcoes { get; set; } = new List()
+ {
+ FuncoesPinout.SDA,
+ FuncoesPinout.SCL
+ };
public List Motores { get; set; }
@@ -128,10 +132,9 @@ namespace AgroBase.Models.Modules
"MD" + ";" + // 0 ~ 1
(Conectar ? "1" : "0") + ";" + // 3
_TaxaAmostragem.ToString("00000") + ";" + // 5 ~ 9
- (Pinout.Any(x => x.Funcao == FuncoesPinout.Geral) ? Pinout.FirstOrDefault(x => x.Funcao == FuncoesPinout.Geral).Pino.ToString("00") : "-1") + ";" + // 11 ~ 12
- (AA_Ref000 ? "1" : "0") + ";" + // 14
- (AA_Ref090 ? "1" : "0") + ";" + // 16
- (AA_Ref270 ? "1" : "0"); // 18
+ (AA_Ref000 ? "1" : "0") + ";" + // 11
+ (AA_Ref090 ? "1" : "0") + ";" + // 13
+ (AA_Ref270 ? "1" : "0"); // 15
Config.Add(ProtocoloMOD);
return Config;
}
@@ -275,19 +278,24 @@ namespace AgroBase.Models.Modules
}
- public List CarregarPinout(string nomeArquivo)
+ public PinoutDataModel CarregarPinout(string nomeArquivo)
{
if (!File.Exists(nomeArquivo))
{
- var newPinout = PinoutModel.CarregarPinoutPadrao_S3();
+ var newPinout = new PinoutDataModel()
+ {
+ ExpansorGPIO = false,
+ EnderecoExpansor = "",
+ Pinos = PinoutModel.CarregarPinoutPadrao_S3(),
+ };
File.WriteAllText(nomeArquivo, JsonConvert.SerializeObject(newPinout));
}
var pinoutText = File.ReadAllText(nomeArquivo);
- Pinout = JsonConvert.DeserializeObject(pinoutText).ToList();
+ Pinout = JsonConvert.DeserializeObject(pinoutText);
return Pinout;
}
- public void SalvarPinout(List newPinout, string nomeArquivo)
+ public void SalvarPinout(PinoutDataModel newPinout, string nomeArquivo)
{
File.WriteAllText(nomeArquivo, JsonConvert.SerializeObject(newPinout));
}
@@ -330,7 +338,13 @@ namespace AgroBase.Models.Modules
public string ProtocoloConfiguracaoMotor(bool Conectar)
{
- var _pinout = DirecionalModel.Pinout.Where(x => x.ComponenteID == ID).ToList();
+ var _pinout = new PinoutDataModel()
+ {
+ ExpansorGPIO = DirecionalModel.Pinout.ExpansorGPIO,
+ EnderecoExpansor = DirecionalModel.Pinout.EnderecoExpansor,
+ Pinos = DirecionalModel.Pinout.Pinos.ToList(),
+ };
+ _pinout.Pinos = _pinout.Pinos.Where(x => x.ComponenteID == ID).ToList();
return ((int)F_Code.Cfg).ToString() +
ID + ";" + // 0 ~ 1
(Conectar ? "1" : "0") + ";" + // 3
@@ -338,20 +352,13 @@ namespace AgroBase.Models.Modules
(Comandar ? "1" : "0") + ";" + // 7
(Estabilizar ? "1" : "0") + ";" + // 9
(Referenciar ? "1" : "0") + ";" + // 11
- (_pinout.Any(x => x.Funcao == FuncoesPinout.PUL) ? _pinout.FirstOrDefault(x => x.Funcao == FuncoesPinout.PUL).Pino.ToString("00") : "-1") + "," + // 13 ~ 14
- (_pinout.Any(x => x.Funcao == FuncoesPinout.DIR) ? _pinout.FirstOrDefault(x => x.Funcao == FuncoesPinout.DIR).Pino.ToString("00") : "-1") + "," + // 16 ~ 17
- (_pinout.Any(x => x.Funcao == FuncoesPinout.ENA) ? _pinout.FirstOrDefault(x => x.Funcao == FuncoesPinout.ENA).Pino.ToString("00") : "-1") + "," + // 19 ~ 20
- (_pinout.Any(x => x.Funcao == FuncoesPinout.EncoderA) ? _pinout.FirstOrDefault(x => x.Funcao == FuncoesPinout.EncoderA).Pino.ToString("00") : "-1") + "," + // 22 ~ 23
- (_pinout.Any(x => x.Funcao == FuncoesPinout.EncoderB) ? _pinout.FirstOrDefault(x => x.Funcao == FuncoesPinout.EncoderB).Pino.ToString("00") : "-1") + "," + // 25 ~ 26
- (_pinout.Any(x => x.Funcao == FuncoesPinout.REF000) ? _pinout.FirstOrDefault(x => x.Funcao == FuncoesPinout.REF000).Pino.ToString("00") : "-1") + "," + // 28 ~ 29
- (_pinout.Any(x => x.Funcao == FuncoesPinout.REF090) ? _pinout.FirstOrDefault(x => x.Funcao == FuncoesPinout.REF090).Pino.ToString("00") : "-1") + "," + // 31 ~ 32
- (_pinout.Any(x => x.Funcao == FuncoesPinout.REF270) ? _pinout.FirstOrDefault(x => x.Funcao == FuncoesPinout.REF270).Pino.ToString("00") : "-1") + ";" + // 34 ~ 35
- Angulo_Offset.ToString(Angulo_Offset < 0 ? "000" : "0000"); // 37 ~ 40
+ Angulo_Offset.ToString(Angulo_Offset < 0 ? "000" : "0000") + ";" + // 13 ~ 16
+ PinoutModel.PinoProtocolo(_pinout, Funcoes); // 18 ~ 48
}
public string ProtocoloComando(Direcao Direcao, bool _Ref = false)
{
- if (Comandar && Controlar)
+ if (Comandar && (Controlar))
{
Sentido_SP =
Direcao == Direcao.Cima ? ConfigSentidos.Direita :
diff --git a/AgroBase/AgroBase/Models/Modules/DispositivoBaseModel.cs b/AgroBase/AgroBase/Models/Modules/DispositivoBaseModel.cs
index c8328e98b..f1bd78041 100644
--- a/AgroBase/AgroBase/Models/Modules/DispositivoBaseModel.cs
+++ b/AgroBase/AgroBase/Models/Modules/DispositivoBaseModel.cs
@@ -17,8 +17,6 @@ namespace AgroBase.Models
List ProtocoloConfiguracao(bool Conectar);
void PopulaGridSensoriamento();
void AtualizaGridSensoriamento();
- List CarregarPinout(string nomeArquivo);
- void SalvarPinout(List newPinout, string nomeArquivo);
void IniciarRegistrador();
}
diff --git a/AgroBase/AgroBase/Models/Modules/MovimentacaoModel.cs b/AgroBase/AgroBase/Models/Modules/MovimentacaoModel.cs
index 41b0d07b6..3b3fd057d 100644
--- a/AgroBase/AgroBase/Models/Modules/MovimentacaoModel.cs
+++ b/AgroBase/AgroBase/Models/Modules/MovimentacaoModel.cs
@@ -29,8 +29,8 @@ namespace AgroBase.Models
public static double DiametroRoda { get; set; } = 0.3556;
public bool Conectado { get; set; } = false;
public static int LogsManter { get; set; } = 60;
- public static List Pinout { get; set; }
- public static List Funcoes { get; set; } = new List() { FuncoesPinout.Geral };
+ public static PinoutDataModel Pinout { get; set; }
+ public static List Funcoes { get; set; } = new List();
public List Motores { get; set; }
public static Direcao UltimaDirecao { get; set; } = Direcao.Parado;
public int TempoEmAtividade { get; set; } = 0;
@@ -59,12 +59,12 @@ namespace AgroBase.Models
},
Funcoes = new List() {
FuncoesPinout.PWM,
- FuncoesPinout.HallA,
- FuncoesPinout.HallB,
- FuncoesPinout.HallC,
FuncoesPinout.DIR,
FuncoesPinout.BRK,
FuncoesPinout.STP,
+ FuncoesPinout.HallA,
+ FuncoesPinout.HallB,
+ FuncoesPinout.HallC,
FuncoesPinout.TMP,
}
},
@@ -80,12 +80,12 @@ namespace AgroBase.Models
},
Funcoes = new List() {
FuncoesPinout.PWM,
- FuncoesPinout.HallA,
- FuncoesPinout.HallB,
- FuncoesPinout.HallC,
FuncoesPinout.DIR,
FuncoesPinout.BRK,
FuncoesPinout.STP,
+ FuncoesPinout.HallA,
+ FuncoesPinout.HallB,
+ FuncoesPinout.HallC,
FuncoesPinout.TMP,
}
},
@@ -101,12 +101,12 @@ namespace AgroBase.Models
},
Funcoes = new List() {
FuncoesPinout.PWM,
- FuncoesPinout.HallA,
- FuncoesPinout.HallB,
- FuncoesPinout.HallC,
FuncoesPinout.DIR,
FuncoesPinout.BRK,
FuncoesPinout.STP,
+ FuncoesPinout.HallA,
+ FuncoesPinout.HallB,
+ FuncoesPinout.HallC,
FuncoesPinout.TMP,
}
},
@@ -122,12 +122,12 @@ namespace AgroBase.Models
},
Funcoes = new List() {
FuncoesPinout.PWM,
- FuncoesPinout.HallA,
- FuncoesPinout.HallB,
- FuncoesPinout.HallC,
FuncoesPinout.DIR,
FuncoesPinout.BRK,
FuncoesPinout.STP,
+ FuncoesPinout.HallA,
+ FuncoesPinout.HallB,
+ FuncoesPinout.HallC,
FuncoesPinout.TMP,
}
}
@@ -142,13 +142,12 @@ namespace AgroBase.Models
"MD" + ";" + // 0 ~ 1
(Conectar ? "1" : "0") + ";" + // 3
_TaxaAmostragem.ToString("00000") + ";" + // 5 ~ 9
- (Pinout.Any(x => x.Funcao == FuncoesPinout.Geral) ? Pinout.FirstOrDefault(x => x.Funcao == FuncoesPinout.Geral).Pino.ToString("00") : "-1") + ";" + // 11 ~ 12
- RampaMin.ToString("0000") + ";" + // 14 ~ 17
- RampaMax.ToString("0000") + ";" + // 19 ~ 22
- PulsosPorRevolucao.ToString("000") + ";" + // 24 ~ 26
- _DelayBalanceamento.ToString("00000") + ";" + // 28 ~ 32
- _MargemRPM.ToString("00") + ";" + // 34 ~ 35
- _MaxOffsetRPM.ToString("00"); // 37 ~ 38
+ RampaMin.ToString("0000") + ";" + // 11 ~ 14
+ RampaMax.ToString("0000") + ";" + // 16 ~ 19
+ PulsosPorRevolucao.ToString("000") + ";" + // 21 ~ 23
+ _DelayBalanceamento.ToString("00000") + ";" + // 25 ~ 29
+ _MargemRPM.ToString("00") + ";" + // 31 ~ 32
+ _MaxOffsetRPM.ToString("00"); // 34 ~ 35
Config.Add(ProtocoloMOD);
return Config;
}
@@ -365,23 +364,6 @@ namespace AgroBase.Models
}
}
- public List CarregarPinout(string nomeArquivo)
- {
- if (!File.Exists(nomeArquivo))
- {
- var newPinout = PinoutModel.CarregarPinoutPadrao_S3();
- File.WriteAllText(nomeArquivo, JsonConvert.SerializeObject(newPinout));
- }
- var pinoutText = File.ReadAllText(nomeArquivo);
- Pinout = JsonConvert.DeserializeObject(pinoutText).ToList();
- return Pinout;
- }
-
- public void SalvarPinout(List newPinout, string nomeArquivo)
- {
- File.WriteAllText(nomeArquivo, JsonConvert.SerializeObject(newPinout));
- }
-
public void IniciarRegistrador()
{
tmrRegistrador = new Timer()
@@ -417,6 +399,10 @@ namespace AgroBase.Models
return RPM;
}
+ public static double ConverteKmhParaMs(double Velocidade)
+ {
+ return Velocidade / 3.6;
+ }
}
@@ -455,7 +441,13 @@ namespace AgroBase.Models
public string ProtocoloConfiguracaoMotor(bool Conectar)
{
- var _pinout = MovimentacaoModel.Pinout.Where(x => x.ComponenteID == ID).ToList();
+ var _pinout = new PinoutDataModel()
+ {
+ ExpansorGPIO = MovimentacaoModel.Pinout.ExpansorGPIO,
+ EnderecoExpansor = MovimentacaoModel.Pinout.EnderecoExpansor,
+ Pinos = MovimentacaoModel.Pinout.Pinos.ToList(),
+ };
+ _pinout.Pinos = _pinout.Pinos.Where(x => x.ComponenteID == ID).ToList();
return ((int)F_Code.Cfg).ToString() +
ID + ";" + // 0 ~ 1
(Conectar ? "1" : "0") + ";" + // 3
@@ -465,14 +457,7 @@ namespace AgroBase.Models
MovimentacaoModel.Kp.ToString("0.000").Replace(",", ".") + "," + // 11 ~ 15
MovimentacaoModel.Ki.ToString("0.000").Replace(",", ".") + "," + // 17 ~ 21
MovimentacaoModel.Kd.ToString("0.000").Replace(",", ".") + "," + // 23 ~ 27
- (_pinout.Any(x => x.Funcao == FuncoesPinout.PWM) ? _pinout.FirstOrDefault(x => x.Funcao == FuncoesPinout.PWM).Pino.ToString("00") : "-1") + "," + // 29 ~ 30
- (_pinout.Any(x => x.Funcao == FuncoesPinout.DIR) ? _pinout.FirstOrDefault(x => x.Funcao == FuncoesPinout.DIR).Pino.ToString("00") : "-1") + "," + // 32 ~ 33
- (_pinout.Any(x => x.Funcao == FuncoesPinout.BRK) ? _pinout.FirstOrDefault(x => x.Funcao == FuncoesPinout.BRK).Pino.ToString("00") : "-1") + "," + // 35 ~ 36
- (_pinout.Any(x => x.Funcao == FuncoesPinout.STP) ? _pinout.FirstOrDefault(x => x.Funcao == FuncoesPinout.STP).Pino.ToString("00") : "-1") + "," + // 38 ~ 39
- (_pinout.Any(x => x.Funcao == FuncoesPinout.HallA) ? _pinout.FirstOrDefault(x => x.Funcao == FuncoesPinout.HallA).Pino.ToString("00") : "-1") + "," + // 41 ~ 42
- (_pinout.Any(x => x.Funcao == FuncoesPinout.HallB) ? _pinout.FirstOrDefault(x => x.Funcao == FuncoesPinout.HallB).Pino.ToString("00") : "-1") + "," + // 44 ~ 45
- (_pinout.Any(x => x.Funcao == FuncoesPinout.HallC) ? _pinout.FirstOrDefault(x => x.Funcao == FuncoesPinout.HallC).Pino.ToString("00") : "-1") + "," + // 47 ~ 48
- (_pinout.Any(x => x.Funcao == FuncoesPinout.TMP) ? _pinout.FirstOrDefault(x => x.Funcao == FuncoesPinout.TMP).Pino.ToString("00") : "-1"); // 50 ~ 51
+ PinoutModel.PinoProtocolo(_pinout, Funcoes); // 29 ~ 51
}
diff --git a/AgroBase/AgroBase/Models/Modules/PinoutModel.cs b/AgroBase/AgroBase/Models/Modules/PinoutModel.cs
index af8a7b6a4..f9053b5f5 100644
--- a/AgroBase/AgroBase/Models/Modules/PinoutModel.cs
+++ b/AgroBase/AgroBase/Models/Modules/PinoutModel.cs
@@ -8,9 +8,17 @@ using System.Threading.Tasks;
namespace AgroBase.Models.Modules
{
+ public class PinoutDataModel
+ {
+ public bool ExpansorGPIO { get; set; }
+ public string EnderecoExpansor { get; set; }
+ public List Pinos { get; set; }
+ }
+
public class PinoutModel
{
- public TiposControladores Tipo { get;set; }
+ public TiposControladores Controlador { get;set; }
+ public TiposBarramentos Barramento { get;set; }
public int Pino { get; set; }
public string Descricao { get; set; }
public FuncoesPinout Funcao { get; set; }
@@ -122,50 +130,50 @@ namespace AgroBase.Models.Modules
{
List Pinout = new List()
{
- new PinoutModel() { Tipo = TiposControladores.ESP32_S3, Pino = 99, ComponenteID = "", Descricao = "1", Funcao = FuncoesPinout.Desabilitado, Habilitado = false },
- new PinoutModel() { Tipo = TiposControladores.ESP32_S3, Pino = 98, ComponenteID = "", Descricao = "2", Funcao = FuncoesPinout.Desabilitado, Habilitado = false },
- new PinoutModel() { Tipo = TiposControladores.ESP32_S3, Pino = 97, ComponenteID = "", Descricao = "3", Funcao = FuncoesPinout.NaoConectado, Habilitado = false },
- new PinoutModel() { Tipo = TiposControladores.ESP32_S3, Pino = 4, ComponenteID = "", Descricao = "4", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
- new PinoutModel() { Tipo = TiposControladores.ESP32_S3, Pino = 5, ComponenteID = "", Descricao = "5", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
- new PinoutModel() { Tipo = TiposControladores.ESP32_S3, Pino = 6, ComponenteID = "", Descricao = "6", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
- new PinoutModel() { Tipo = TiposControladores.ESP32_S3, Pino = 7, ComponenteID = "", Descricao = "7", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
- new PinoutModel() { Tipo = TiposControladores.ESP32_S3, Pino = 15, ComponenteID = "", Descricao = "8", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
- new PinoutModel() { Tipo = TiposControladores.ESP32_S3, Pino = 16, ComponenteID = "", Descricao = "9", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
- new PinoutModel() { Tipo = TiposControladores.ESP32_S3, Pino = 17, ComponenteID = "", Descricao = "10", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
- new PinoutModel() { Tipo = TiposControladores.ESP32_S3, Pino = 18, ComponenteID = "", Descricao = "11", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
- new PinoutModel() { Tipo = TiposControladores.ESP32_S3, Pino = 8, ComponenteID = "", Descricao = "12", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
- new PinoutModel() { Tipo = TiposControladores.ESP32_S3, Pino = 3, ComponenteID = "", Descricao = "13", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
- new PinoutModel() { Tipo = TiposControladores.ESP32_S3, Pino = 46, ComponenteID = "", Descricao = "14", Funcao = FuncoesPinout.Desabilitado, Habilitado = true },
- new PinoutModel() { Tipo = TiposControladores.ESP32_S3, Pino = 9, ComponenteID = "", Descricao = "15", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
- new PinoutModel() { Tipo = TiposControladores.ESP32_S3, Pino = 10, ComponenteID = "", Descricao = "16", Funcao = FuncoesPinout.Desabilitado, Habilitado = true },
- new PinoutModel() { Tipo = TiposControladores.ESP32_S3, Pino = 11, ComponenteID = "", Descricao = "17", Funcao = FuncoesPinout.Desabilitado, Habilitado = true },
- new PinoutModel() { Tipo = TiposControladores.ESP32_S3, Pino = 12, ComponenteID = "", Descricao = "18", Funcao = FuncoesPinout.Desabilitado, Habilitado = true },
- new PinoutModel() { Tipo = TiposControladores.ESP32_S3, Pino = 13, ComponenteID = "", Descricao = "19", Funcao = FuncoesPinout.Desabilitado, Habilitado = true },
- new PinoutModel() { Tipo = TiposControladores.ESP32_S3, Pino = 14, ComponenteID = "", Descricao = "20", Funcao = FuncoesPinout.Desabilitado, Habilitado = true },
- new PinoutModel() { Tipo = TiposControladores.ESP32_S3, Pino = 96, ComponenteID = "", Descricao = "21", Funcao = FuncoesPinout.Desabilitado, Habilitado = false },
- new PinoutModel() { Tipo = TiposControladores.ESP32_S3, Pino = 95, ComponenteID = "", Descricao = "22", Funcao = FuncoesPinout.Desabilitado, Habilitado = false },
- new PinoutModel() { Tipo = TiposControladores.ESP32_S3, Pino = 94, ComponenteID = "", Descricao = "23", Funcao = FuncoesPinout.Desabilitado, Habilitado = false },
- new PinoutModel() { Tipo = TiposControladores.ESP32_S3, Pino = 93, ComponenteID = "", Descricao = "24", Funcao = FuncoesPinout.Desabilitado, Habilitado = false },
- new PinoutModel() { Tipo = TiposControladores.ESP32_S3, Pino = 19, ComponenteID = "", Descricao = "25", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
- new PinoutModel() { Tipo = TiposControladores.ESP32_S3, Pino = 20, ComponenteID = "", Descricao = "26", Funcao = FuncoesPinout.Desabilitado, Habilitado = true },
- new PinoutModel() { Tipo = TiposControladores.ESP32_S3, Pino = 21, ComponenteID = "", Descricao = "27", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
- new PinoutModel() { Tipo = TiposControladores.ESP32_S3, Pino = 47, ComponenteID = "", Descricao = "28", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
- new PinoutModel() { Tipo = TiposControladores.ESP32_S3, Pino = 48, ComponenteID = "", Descricao = "29", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
- new PinoutModel() { Tipo = TiposControladores.ESP32_S3, Pino = 45, ComponenteID = "", Descricao = "30", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
- new PinoutModel() { Tipo = TiposControladores.ESP32_S3, Pino = 0, ComponenteID = "", Descricao = "31", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
- new PinoutModel() { Tipo = TiposControladores.ESP32_S3, Pino = 35, ComponenteID = "", Descricao = "32", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
- new PinoutModel() { Tipo = TiposControladores.ESP32_S3, Pino = 36, ComponenteID = "", Descricao = "33", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
- new PinoutModel() { Tipo = TiposControladores.ESP32_S3, Pino = 37, ComponenteID = "", Descricao = "34", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
- new PinoutModel() { Tipo = TiposControladores.ESP32_S3, Pino = 38, ComponenteID = "", Descricao = "35", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
- new PinoutModel() { Tipo = TiposControladores.ESP32_S3, Pino = 39, ComponenteID = "", Descricao = "36", Funcao = FuncoesPinout.Desabilitado, Habilitado = true },
- new PinoutModel() { Tipo = TiposControladores.ESP32_S3, Pino = 40, ComponenteID = "", Descricao = "37", Funcao = FuncoesPinout.Desabilitado, Habilitado = true },
- new PinoutModel() { Tipo = TiposControladores.ESP32_S3, Pino = 41, ComponenteID = "", Descricao = "38", Funcao = FuncoesPinout.Desabilitado, Habilitado = true },
- new PinoutModel() { Tipo = TiposControladores.ESP32_S3, Pino = 42, ComponenteID = "", Descricao = "39", Funcao = FuncoesPinout.Desabilitado, Habilitado = true },
- new PinoutModel() { Tipo = TiposControladores.ESP32_S3, Pino = 2, ComponenteID = "", Descricao = "40", Funcao = FuncoesPinout.Desabilitado, Habilitado = true },
- new PinoutModel() { Tipo = TiposControladores.ESP32_S3, Pino = 1, ComponenteID = "", Descricao = "41", Funcao = FuncoesPinout.Desabilitado, Habilitado = true },
- new PinoutModel() { Tipo = TiposControladores.ESP32_S3, Pino = 44, ComponenteID = "", Descricao = "42", Funcao = FuncoesPinout.RX, Habilitado = false },
- new PinoutModel() { Tipo = TiposControladores.ESP32_S3, Pino = 43, ComponenteID = "", Descricao = "43", Funcao = FuncoesPinout.TX, Habilitado = false },
- new PinoutModel() { Tipo = TiposControladores.ESP32_S3, Pino = 92, ComponenteID = "", Descricao = "44", Funcao = FuncoesPinout.Desabilitado, Habilitado = false },
+ new PinoutModel() { Controlador = TiposControladores.ESP32_S3, Barramento = TiposBarramentos.CONTROLADOR, Pino = 99, ComponenteID = "", Descricao = "1", Funcao = FuncoesPinout.Desabilitado, Habilitado = false },
+ new PinoutModel() { Controlador = TiposControladores.ESP32_S3, Barramento = TiposBarramentos.CONTROLADOR, Pino = 98, ComponenteID = "", Descricao = "2", Funcao = FuncoesPinout.Desabilitado, Habilitado = false },
+ new PinoutModel() { Controlador = TiposControladores.ESP32_S3, Barramento = TiposBarramentos.CONTROLADOR, Pino = 97, ComponenteID = "", Descricao = "3", Funcao = FuncoesPinout.NaoConectado, Habilitado = false },
+ new PinoutModel() { Controlador = TiposControladores.ESP32_S3, Barramento = TiposBarramentos.CONTROLADOR, Pino = 4, ComponenteID = "", Descricao = "4", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
+ new PinoutModel() { Controlador = TiposControladores.ESP32_S3, Barramento = TiposBarramentos.CONTROLADOR, Pino = 5, ComponenteID = "", Descricao = "5", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
+ new PinoutModel() { Controlador = TiposControladores.ESP32_S3, Barramento = TiposBarramentos.CONTROLADOR, Pino = 6, ComponenteID = "", Descricao = "6", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
+ new PinoutModel() { Controlador = TiposControladores.ESP32_S3, Barramento = TiposBarramentos.CONTROLADOR, Pino = 7, ComponenteID = "", Descricao = "7", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
+ new PinoutModel() { Controlador = TiposControladores.ESP32_S3, Barramento = TiposBarramentos.CONTROLADOR, Pino = 15, ComponenteID = "", Descricao = "8", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
+ new PinoutModel() { Controlador = TiposControladores.ESP32_S3, Barramento = TiposBarramentos.CONTROLADOR, Pino = 16, ComponenteID = "", Descricao = "9", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
+ new PinoutModel() { Controlador = TiposControladores.ESP32_S3, Barramento = TiposBarramentos.CONTROLADOR, Pino = 17, ComponenteID = "", Descricao = "10", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
+ new PinoutModel() { Controlador = TiposControladores.ESP32_S3, Barramento = TiposBarramentos.CONTROLADOR, Pino = 18, ComponenteID = "", Descricao = "11", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
+ new PinoutModel() { Controlador = TiposControladores.ESP32_S3, Barramento = TiposBarramentos.CONTROLADOR, Pino = 8, ComponenteID = "", Descricao = "12", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
+ new PinoutModel() { Controlador = TiposControladores.ESP32_S3, Barramento = TiposBarramentos.CONTROLADOR, Pino = 3, ComponenteID = "", Descricao = "13", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
+ new PinoutModel() { Controlador = TiposControladores.ESP32_S3, Barramento = TiposBarramentos.CONTROLADOR, Pino = 46, ComponenteID = "", Descricao = "14", Funcao = FuncoesPinout.Desabilitado, Habilitado = true },
+ new PinoutModel() { Controlador = TiposControladores.ESP32_S3, Barramento = TiposBarramentos.CONTROLADOR, Pino = 9, ComponenteID = "", Descricao = "15", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
+ new PinoutModel() { Controlador = TiposControladores.ESP32_S3, Barramento = TiposBarramentos.CONTROLADOR, Pino = 10, ComponenteID = "", Descricao = "16", Funcao = FuncoesPinout.Desabilitado, Habilitado = true },
+ new PinoutModel() { Controlador = TiposControladores.ESP32_S3, Barramento = TiposBarramentos.CONTROLADOR, Pino = 11, ComponenteID = "", Descricao = "17", Funcao = FuncoesPinout.Desabilitado, Habilitado = true },
+ new PinoutModel() { Controlador = TiposControladores.ESP32_S3, Barramento = TiposBarramentos.CONTROLADOR, Pino = 12, ComponenteID = "", Descricao = "18", Funcao = FuncoesPinout.Desabilitado, Habilitado = true },
+ new PinoutModel() { Controlador = TiposControladores.ESP32_S3, Barramento = TiposBarramentos.CONTROLADOR, Pino = 13, ComponenteID = "", Descricao = "19", Funcao = FuncoesPinout.Desabilitado, Habilitado = true },
+ new PinoutModel() { Controlador = TiposControladores.ESP32_S3, Barramento = TiposBarramentos.CONTROLADOR, Pino = 14, ComponenteID = "", Descricao = "20", Funcao = FuncoesPinout.Desabilitado, Habilitado = true },
+ new PinoutModel() { Controlador = TiposControladores.ESP32_S3, Barramento = TiposBarramentos.CONTROLADOR, Pino = 96, ComponenteID = "", Descricao = "21", Funcao = FuncoesPinout.Desabilitado, Habilitado = false },
+ new PinoutModel() { Controlador = TiposControladores.ESP32_S3, Barramento = TiposBarramentos.CONTROLADOR, Pino = 95, ComponenteID = "", Descricao = "22", Funcao = FuncoesPinout.Desabilitado, Habilitado = false },
+ new PinoutModel() { Controlador = TiposControladores.ESP32_S3, Barramento = TiposBarramentos.CONTROLADOR, Pino = 94, ComponenteID = "", Descricao = "23", Funcao = FuncoesPinout.Desabilitado, Habilitado = false },
+ new PinoutModel() { Controlador = TiposControladores.ESP32_S3, Barramento = TiposBarramentos.CONTROLADOR, Pino = 93, ComponenteID = "", Descricao = "24", Funcao = FuncoesPinout.Desabilitado, Habilitado = false },
+ new PinoutModel() { Controlador = TiposControladores.ESP32_S3, Barramento = TiposBarramentos.CONTROLADOR, Pino = 19, ComponenteID = "", Descricao = "25", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
+ new PinoutModel() { Controlador = TiposControladores.ESP32_S3, Barramento = TiposBarramentos.CONTROLADOR, Pino = 20, ComponenteID = "", Descricao = "26", Funcao = FuncoesPinout.Desabilitado, Habilitado = true },
+ new PinoutModel() { Controlador = TiposControladores.ESP32_S3, Barramento = TiposBarramentos.CONTROLADOR, Pino = 21, ComponenteID = "", Descricao = "27", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
+ new PinoutModel() { Controlador = TiposControladores.ESP32_S3, Barramento = TiposBarramentos.CONTROLADOR, Pino = 47, ComponenteID = "", Descricao = "28", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
+ new PinoutModel() { Controlador = TiposControladores.ESP32_S3, Barramento = TiposBarramentos.CONTROLADOR, Pino = 48, ComponenteID = "", Descricao = "29", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
+ new PinoutModel() { Controlador = TiposControladores.ESP32_S3, Barramento = TiposBarramentos.CONTROLADOR, Pino = 45, ComponenteID = "", Descricao = "30", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
+ new PinoutModel() { Controlador = TiposControladores.ESP32_S3, Barramento = TiposBarramentos.CONTROLADOR, Pino = 0, ComponenteID = "", Descricao = "31", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
+ new PinoutModel() { Controlador = TiposControladores.ESP32_S3, Barramento = TiposBarramentos.CONTROLADOR, Pino = 35, ComponenteID = "", Descricao = "32", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
+ new PinoutModel() { Controlador = TiposControladores.ESP32_S3, Barramento = TiposBarramentos.CONTROLADOR, Pino = 36, ComponenteID = "", Descricao = "33", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
+ new PinoutModel() { Controlador = TiposControladores.ESP32_S3, Barramento = TiposBarramentos.CONTROLADOR, Pino = 37, ComponenteID = "", Descricao = "34", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
+ new PinoutModel() { Controlador = TiposControladores.ESP32_S3, Barramento = TiposBarramentos.CONTROLADOR, Pino = 38, ComponenteID = "", Descricao = "35", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
+ new PinoutModel() { Controlador = TiposControladores.ESP32_S3, Barramento = TiposBarramentos.CONTROLADOR, Pino = 39, ComponenteID = "", Descricao = "36", Funcao = FuncoesPinout.Desabilitado, Habilitado = true },
+ new PinoutModel() { Controlador = TiposControladores.ESP32_S3, Barramento = TiposBarramentos.CONTROLADOR, Pino = 40, ComponenteID = "", Descricao = "37", Funcao = FuncoesPinout.Desabilitado, Habilitado = true },
+ new PinoutModel() { Controlador = TiposControladores.ESP32_S3, Barramento = TiposBarramentos.CONTROLADOR, Pino = 41, ComponenteID = "", Descricao = "38", Funcao = FuncoesPinout.Desabilitado, Habilitado = true },
+ new PinoutModel() { Controlador = TiposControladores.ESP32_S3, Barramento = TiposBarramentos.CONTROLADOR, Pino = 42, ComponenteID = "", Descricao = "39", Funcao = FuncoesPinout.Desabilitado, Habilitado = true },
+ new PinoutModel() { Controlador = TiposControladores.ESP32_S3, Barramento = TiposBarramentos.CONTROLADOR, Pino = 2, ComponenteID = "", Descricao = "40", Funcao = FuncoesPinout.Desabilitado, Habilitado = true },
+ new PinoutModel() { Controlador = TiposControladores.ESP32_S3, Barramento = TiposBarramentos.CONTROLADOR, Pino = 1, ComponenteID = "", Descricao = "41", Funcao = FuncoesPinout.Desabilitado, Habilitado = true },
+ new PinoutModel() { Controlador = TiposControladores.ESP32_S3, Barramento = TiposBarramentos.CONTROLADOR, Pino = 44, ComponenteID = "", Descricao = "42", Funcao = FuncoesPinout.RX, Habilitado = false },
+ new PinoutModel() { Controlador = TiposControladores.ESP32_S3, Barramento = TiposBarramentos.CONTROLADOR, Pino = 43, ComponenteID = "", Descricao = "43", Funcao = FuncoesPinout.TX, Habilitado = false },
+ new PinoutModel() { Controlador = TiposControladores.ESP32_S3, Barramento = TiposBarramentos.CONTROLADOR, Pino = 92, ComponenteID = "", Descricao = "44", Funcao = FuncoesPinout.Desabilitado, Habilitado = false },
};
return Pinout;
@@ -175,72 +183,151 @@ namespace AgroBase.Models.Modules
{
List Pinout = new List()
{
- new PinoutModel() { Tipo = TiposControladores.ESP32_WROVER, Pino = 99, ComponenteID = "", Descricao = "1", Funcao = FuncoesPinout.Desabilitado, Habilitado = false },
- new PinoutModel() { Tipo = TiposControladores.ESP32_WROVER, Pino = 98, ComponenteID = "", Descricao = "2", Funcao = FuncoesPinout.Desabilitado, Habilitado = false },
- new PinoutModel() { Tipo = TiposControladores.ESP32_WROVER, Pino = 36, ComponenteID = "", Descricao = "3", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
- new PinoutModel() { Tipo = TiposControladores.ESP32_WROVER, Pino = 39, ComponenteID = "", Descricao = "4", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
- new PinoutModel() { Tipo = TiposControladores.ESP32_WROVER, Pino = 34, ComponenteID = "", Descricao = "5", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
- new PinoutModel() { Tipo = TiposControladores.ESP32_WROVER, Pino = 35, ComponenteID = "", Descricao = "6", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
- new PinoutModel() { Tipo = TiposControladores.ESP32_WROVER, Pino = 32, ComponenteID = "", Descricao = "7", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
- new PinoutModel() { Tipo = TiposControladores.ESP32_WROVER, Pino = 33, ComponenteID = "", Descricao = "8", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
- new PinoutModel() { Tipo = TiposControladores.ESP32_WROVER, Pino = 25, ComponenteID = "", Descricao = "9", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
- new PinoutModel() { Tipo = TiposControladores.ESP32_WROVER, Pino = 26, ComponenteID = "", Descricao = "10", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
- new PinoutModel() { Tipo = TiposControladores.ESP32_WROVER, Pino = 27, ComponenteID = "", Descricao = "11", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
- new PinoutModel() { Tipo = TiposControladores.ESP32_WROVER, Pino = 14, ComponenteID = "", Descricao = "12", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
- new PinoutModel() { Tipo = TiposControladores.ESP32_WROVER, Pino = 12, ComponenteID = "", Descricao = "13", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
- new PinoutModel() { Tipo = TiposControladores.ESP32_WROVER, Pino = 97, ComponenteID = "", Descricao = "14", Funcao = FuncoesPinout.Desabilitado, Habilitado = false },
- new PinoutModel() { Tipo = TiposControladores.ESP32_WROVER, Pino = 13, ComponenteID = "", Descricao = "15", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
- new PinoutModel() { Tipo = TiposControladores.ESP32_WROVER, Pino = 9, ComponenteID = "", Descricao = "16", Funcao = FuncoesPinout.Desabilitado, Habilitado = false },
- new PinoutModel() { Tipo = TiposControladores.ESP32_WROVER, Pino = 10, ComponenteID = "", Descricao = "17", Funcao = FuncoesPinout.Desabilitado, Habilitado = false },
- new PinoutModel() { Tipo = TiposControladores.ESP32_WROVER, Pino = 11, ComponenteID = "", Descricao = "18", Funcao = FuncoesPinout.Desabilitado, Habilitado = false },
- new PinoutModel() { Tipo = TiposControladores.ESP32_WROVER, Pino = 96, ComponenteID = "", Descricao = "19", Funcao = FuncoesPinout.Desabilitado, Habilitado = false},
- new PinoutModel() { Tipo = TiposControladores.ESP32_WROVER, Pino = 6, ComponenteID = "", Descricao = "26", Funcao = FuncoesPinout.Desabilitado, Habilitado = false },
- new PinoutModel() { Tipo = TiposControladores.ESP32_WROVER, Pino = 7, ComponenteID = "", Descricao = "27", Funcao = FuncoesPinout.Desabilitado, Habilitado = false },
- new PinoutModel() { Tipo = TiposControladores.ESP32_WROVER, Pino = 8, ComponenteID = "", Descricao = "28", Funcao = FuncoesPinout.Desabilitado, Habilitado = false },
- new PinoutModel() { Tipo = TiposControladores.ESP32_WROVER, Pino = 15, ComponenteID = "", Descricao = "29", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
- new PinoutModel() { Tipo = TiposControladores.ESP32_WROVER, Pino = 2, ComponenteID = "", Descricao = "30", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
- new PinoutModel() { Tipo = TiposControladores.ESP32_WROVER, Pino = 0, ComponenteID = "", Descricao = "31", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
- new PinoutModel() { Tipo = TiposControladores.ESP32_WROVER, Pino = 4, ComponenteID = "", Descricao = "32", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
- new PinoutModel() { Tipo = TiposControladores.ESP32_WROVER, Pino = 16, ComponenteID = "", Descricao = "33", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
- new PinoutModel() { Tipo = TiposControladores.ESP32_WROVER, Pino = 17, ComponenteID = "", Descricao = "34", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
- new PinoutModel() { Tipo = TiposControladores.ESP32_WROVER, Pino = 5, ComponenteID = "", Descricao = "35", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
- new PinoutModel() { Tipo = TiposControladores.ESP32_WROVER, Pino = 18, ComponenteID = "", Descricao = "36", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
- new PinoutModel() { Tipo = TiposControladores.ESP32_WROVER, Pino = 19, ComponenteID = "", Descricao = "37", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
- new PinoutModel() { Tipo = TiposControladores.ESP32_WROVER, Pino = 95, ComponenteID = "", Descricao = "38", Funcao = FuncoesPinout.Desabilitado, Habilitado = false },
- new PinoutModel() { Tipo = TiposControladores.ESP32_WROVER, Pino = 21, ComponenteID = "", Descricao = "39", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
- new PinoutModel() { Tipo = TiposControladores.ESP32_WROVER, Pino = 3, ComponenteID = "", Descricao = "40", Funcao = FuncoesPinout.RX, Habilitado = false },
- new PinoutModel() { Tipo = TiposControladores.ESP32_WROVER, Pino = 1, ComponenteID = "", Descricao = "41", Funcao = FuncoesPinout.TX, Habilitado = false },
- new PinoutModel() { Tipo = TiposControladores.ESP32_WROVER, Pino = 22, ComponenteID = "", Descricao = "42", Funcao = FuncoesPinout.Desabilitado, Habilitado = true },
- new PinoutModel() { Tipo = TiposControladores.ESP32_WROVER, Pino = 23, ComponenteID = "", Descricao = "43", Funcao = FuncoesPinout.Desabilitado, Habilitado = true },
- new PinoutModel() { Tipo = TiposControladores.ESP32_WROVER, Pino = 94, ComponenteID = "", Descricao = "44", Funcao = FuncoesPinout.Desabilitado, Habilitado = false },
+ new PinoutModel() { Controlador = TiposControladores.ESP32_WROVER, Barramento = TiposBarramentos.CONTROLADOR, Pino = 99, ComponenteID = "", Descricao = "1", Funcao = FuncoesPinout.Desabilitado, Habilitado = false },
+ new PinoutModel() { Controlador = TiposControladores.ESP32_WROVER, Barramento = TiposBarramentos.CONTROLADOR, Pino = 98, ComponenteID = "", Descricao = "2", Funcao = FuncoesPinout.Desabilitado, Habilitado = false },
+ new PinoutModel() { Controlador = TiposControladores.ESP32_WROVER, Barramento = TiposBarramentos.CONTROLADOR, Pino = 36, ComponenteID = "", Descricao = "3", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
+ new PinoutModel() { Controlador = TiposControladores.ESP32_WROVER, Barramento = TiposBarramentos.CONTROLADOR, Pino = 39, ComponenteID = "", Descricao = "4", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
+ new PinoutModel() { Controlador = TiposControladores.ESP32_WROVER, Barramento = TiposBarramentos.CONTROLADOR, Pino = 34, ComponenteID = "", Descricao = "5", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
+ new PinoutModel() { Controlador = TiposControladores.ESP32_WROVER, Barramento = TiposBarramentos.CONTROLADOR, Pino = 35, ComponenteID = "", Descricao = "6", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
+ new PinoutModel() { Controlador = TiposControladores.ESP32_WROVER, Barramento = TiposBarramentos.CONTROLADOR, Pino = 32, ComponenteID = "", Descricao = "7", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
+ new PinoutModel() { Controlador = TiposControladores.ESP32_WROVER, Barramento = TiposBarramentos.CONTROLADOR, Pino = 33, ComponenteID = "", Descricao = "8", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
+ new PinoutModel() { Controlador = TiposControladores.ESP32_WROVER, Barramento = TiposBarramentos.CONTROLADOR, Pino = 25, ComponenteID = "", Descricao = "9", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
+ new PinoutModel() { Controlador = TiposControladores.ESP32_WROVER, Barramento = TiposBarramentos.CONTROLADOR, Pino = 26, ComponenteID = "", Descricao = "10", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
+ new PinoutModel() { Controlador = TiposControladores.ESP32_WROVER, Barramento = TiposBarramentos.CONTROLADOR, Pino = 27, ComponenteID = "", Descricao = "11", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
+ new PinoutModel() { Controlador = TiposControladores.ESP32_WROVER, Barramento = TiposBarramentos.CONTROLADOR, Pino = 14, ComponenteID = "", Descricao = "12", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
+ new PinoutModel() { Controlador = TiposControladores.ESP32_WROVER, Barramento = TiposBarramentos.CONTROLADOR, Pino = 12, ComponenteID = "", Descricao = "13", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
+ new PinoutModel() { Controlador = TiposControladores.ESP32_WROVER, Barramento = TiposBarramentos.CONTROLADOR, Pino = 97, ComponenteID = "", Descricao = "14", Funcao = FuncoesPinout.Desabilitado, Habilitado = false },
+ new PinoutModel() { Controlador = TiposControladores.ESP32_WROVER, Barramento = TiposBarramentos.CONTROLADOR, Pino = 13, ComponenteID = "", Descricao = "15", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
+ new PinoutModel() { Controlador = TiposControladores.ESP32_WROVER, Barramento = TiposBarramentos.CONTROLADOR, Pino = 9, ComponenteID = "", Descricao = "16", Funcao = FuncoesPinout.Desabilitado, Habilitado = false },
+ new PinoutModel() { Controlador = TiposControladores.ESP32_WROVER, Barramento = TiposBarramentos.CONTROLADOR, Pino = 10, ComponenteID = "", Descricao = "17", Funcao = FuncoesPinout.Desabilitado, Habilitado = false },
+ new PinoutModel() { Controlador = TiposControladores.ESP32_WROVER, Barramento = TiposBarramentos.CONTROLADOR, Pino = 11, ComponenteID = "", Descricao = "18", Funcao = FuncoesPinout.Desabilitado, Habilitado = false },
+ new PinoutModel() { Controlador = TiposControladores.ESP32_WROVER, Barramento = TiposBarramentos.CONTROLADOR, Pino = 96, ComponenteID = "", Descricao = "19", Funcao = FuncoesPinout.Desabilitado, Habilitado = false},
+ new PinoutModel() { Controlador = TiposControladores.ESP32_WROVER, Barramento = TiposBarramentos.CONTROLADOR, Pino = 6, ComponenteID = "", Descricao = "26", Funcao = FuncoesPinout.Desabilitado, Habilitado = false },
+ new PinoutModel() { Controlador = TiposControladores.ESP32_WROVER, Barramento = TiposBarramentos.CONTROLADOR, Pino = 7, ComponenteID = "", Descricao = "27", Funcao = FuncoesPinout.Desabilitado, Habilitado = false },
+ new PinoutModel() { Controlador = TiposControladores.ESP32_WROVER, Barramento = TiposBarramentos.CONTROLADOR, Pino = 8, ComponenteID = "", Descricao = "28", Funcao = FuncoesPinout.Desabilitado, Habilitado = false },
+ new PinoutModel() { Controlador = TiposControladores.ESP32_WROVER, Barramento = TiposBarramentos.CONTROLADOR, Pino = 15, ComponenteID = "", Descricao = "29", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
+ new PinoutModel() { Controlador = TiposControladores.ESP32_WROVER, Barramento = TiposBarramentos.CONTROLADOR, Pino = 2, ComponenteID = "", Descricao = "30", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
+ new PinoutModel() { Controlador = TiposControladores.ESP32_WROVER, Barramento = TiposBarramentos.CONTROLADOR, Pino = 0, ComponenteID = "", Descricao = "31", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
+ new PinoutModel() { Controlador = TiposControladores.ESP32_WROVER, Barramento = TiposBarramentos.CONTROLADOR, Pino = 4, ComponenteID = "", Descricao = "32", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
+ new PinoutModel() { Controlador = TiposControladores.ESP32_WROVER, Barramento = TiposBarramentos.CONTROLADOR, Pino = 16, ComponenteID = "", Descricao = "33", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
+ new PinoutModel() { Controlador = TiposControladores.ESP32_WROVER, Barramento = TiposBarramentos.CONTROLADOR, Pino = 17, ComponenteID = "", Descricao = "34", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
+ new PinoutModel() { Controlador = TiposControladores.ESP32_WROVER, Barramento = TiposBarramentos.CONTROLADOR, Pino = 5, ComponenteID = "", Descricao = "35", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
+ new PinoutModel() { Controlador = TiposControladores.ESP32_WROVER, Barramento = TiposBarramentos.CONTROLADOR, Pino = 18, ComponenteID = "", Descricao = "36", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
+ new PinoutModel() { Controlador = TiposControladores.ESP32_WROVER, Barramento = TiposBarramentos.CONTROLADOR, Pino = 19, ComponenteID = "", Descricao = "37", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
+ new PinoutModel() { Controlador = TiposControladores.ESP32_WROVER, Barramento = TiposBarramentos.CONTROLADOR, Pino = 95, ComponenteID = "", Descricao = "38", Funcao = FuncoesPinout.Desabilitado, Habilitado = false },
+ new PinoutModel() { Controlador = TiposControladores.ESP32_WROVER, Barramento = TiposBarramentos.CONTROLADOR, Pino = 21, ComponenteID = "", Descricao = "39", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
+ new PinoutModel() { Controlador = TiposControladores.ESP32_WROVER, Barramento = TiposBarramentos.CONTROLADOR, Pino = 3, ComponenteID = "", Descricao = "40", Funcao = FuncoesPinout.RX, Habilitado = false },
+ new PinoutModel() { Controlador = TiposControladores.ESP32_WROVER, Barramento = TiposBarramentos.CONTROLADOR, Pino = 1, ComponenteID = "", Descricao = "41", Funcao = FuncoesPinout.TX, Habilitado = false },
+ new PinoutModel() { Controlador = TiposControladores.ESP32_WROVER, Barramento = TiposBarramentos.CONTROLADOR, Pino = 22, ComponenteID = "", Descricao = "42", Funcao = FuncoesPinout.Desabilitado, Habilitado = true },
+ new PinoutModel() { Controlador = TiposControladores.ESP32_WROVER, Barramento = TiposBarramentos.CONTROLADOR, Pino = 23, ComponenteID = "", Descricao = "43", Funcao = FuncoesPinout.Desabilitado, Habilitado = true },
+ new PinoutModel() { Controlador = TiposControladores.ESP32_WROVER, Barramento = TiposBarramentos.CONTROLADOR, Pino = 94, ComponenteID = "", Descricao = "44", Funcao = FuncoesPinout.Desabilitado, Habilitado = false },
};
return Pinout;
}
- public static List CarregarPinout(string nomeArquivo)
+ public static List CarregarPinoutPadrao_MCP()
{
- if (!File.Exists(nomeArquivo))
- {
- var newPinout = PinoutModel.CarregarPinoutPadrao_Wrover();
- File.WriteAllText(nomeArquivo, JsonConvert.SerializeObject(newPinout));
- }
- var pinoutText = File.ReadAllText(nomeArquivo);
- var Pinout = JsonConvert.DeserializeObject(pinoutText).ToList();
+ List Pinout = new List()
+ {
+ new PinoutModel() { Controlador = TiposControladores.TODOS, Barramento = TiposBarramentos.EXPANSORI2C, Pino = 0, ComponenteID = "", Descricao = "A0", Funcao = FuncoesPinout.Desabilitado, Habilitado = true },
+ new PinoutModel() { Controlador = TiposControladores.TODOS, Barramento = TiposBarramentos.EXPANSORI2C, Pino = 1, ComponenteID = "", Descricao = "A1", Funcao = FuncoesPinout.Desabilitado, Habilitado = true },
+ new PinoutModel() { Controlador = TiposControladores.TODOS, Barramento = TiposBarramentos.EXPANSORI2C, Pino = 2, ComponenteID = "", Descricao = "A2", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
+ new PinoutModel() { Controlador = TiposControladores.TODOS, Barramento = TiposBarramentos.EXPANSORI2C, Pino = 3, ComponenteID = "", Descricao = "A3", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
+ new PinoutModel() { Controlador = TiposControladores.TODOS, Barramento = TiposBarramentos.EXPANSORI2C, Pino = 4, ComponenteID = "", Descricao = "A4", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
+ new PinoutModel() { Controlador = TiposControladores.TODOS, Barramento = TiposBarramentos.EXPANSORI2C, Pino = 5, ComponenteID = "", Descricao = "A5", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
+ new PinoutModel() { Controlador = TiposControladores.TODOS, Barramento = TiposBarramentos.EXPANSORI2C, Pino = 6, ComponenteID = "", Descricao = "A6", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
+ new PinoutModel() { Controlador = TiposControladores.TODOS, Barramento = TiposBarramentos.EXPANSORI2C, Pino = 7, ComponenteID = "", Descricao = "A7", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
+ new PinoutModel() { Controlador = TiposControladores.TODOS, Barramento = TiposBarramentos.EXPANSORI2C, Pino = 8, ComponenteID = "", Descricao = "B0", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
+ new PinoutModel() { Controlador = TiposControladores.TODOS, Barramento = TiposBarramentos.EXPANSORI2C, Pino = 9, ComponenteID = "", Descricao = "B1", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
+ new PinoutModel() { Controlador = TiposControladores.TODOS, Barramento = TiposBarramentos.EXPANSORI2C, Pino = 10, ComponenteID = "", Descricao = "B2", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
+ new PinoutModel() { Controlador = TiposControladores.TODOS, Barramento = TiposBarramentos.EXPANSORI2C, Pino = 11, ComponenteID = "", Descricao = "B3", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
+ new PinoutModel() { Controlador = TiposControladores.TODOS, Barramento = TiposBarramentos.EXPANSORI2C, Pino = 12, ComponenteID = "", Descricao = "B4", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
+ new PinoutModel() { Controlador = TiposControladores.TODOS, Barramento = TiposBarramentos.EXPANSORI2C, Pino = 13, ComponenteID = "", Descricao = "B5", Funcao = FuncoesPinout.Desabilitado, Habilitado = true },
+ new PinoutModel() { Controlador = TiposControladores.TODOS, Barramento = TiposBarramentos.EXPANSORI2C, Pino = 14, ComponenteID = "", Descricao = "B6", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
+ new PinoutModel() { Controlador = TiposControladores.TODOS, Barramento = TiposBarramentos.EXPANSORI2C, Pino = 15, ComponenteID = "", Descricao = "B7", Funcao = FuncoesPinout.Desabilitado, Habilitado = true },
+ };
+
return Pinout;
}
- public static void SalvarPinout(List newPinout, string nomeArquivo)
+
+ public static PinoutDataModel CarregarPinout(string nomeArquivo)
+ {
+ if (!File.Exists(nomeArquivo))
+ {
+ var newPinout = new PinoutDataModel()
+ {
+ ExpansorGPIO = false,
+ EnderecoExpansor = "",
+ Pinos = CarregarPinoutPadrao_S3(),
+ };
+ File.WriteAllText(nomeArquivo, JsonConvert.SerializeObject(newPinout));
+ }
+ var pinoutText = File.ReadAllText(nomeArquivo);
+ var Pinout = JsonConvert.DeserializeObject(pinoutText);
+ return Pinout;
+ }
+
+ public static void SalvarPinout(PinoutDataModel newPinout, string nomeArquivo)
{
File.WriteAllText(nomeArquivo, JsonConvert.SerializeObject(newPinout));
}
+ public static string PinoProtocolo(PinoutDataModel _pinout, List _funcoes)
+ {
+ string Pinos = "";
+ int i = 0;
+ foreach (FuncoesPinout funcao in _funcoes)
+ {
+ if (i > 0)
+ {
+ Pinos += ",";
+ }
+ var pino = _pinout.Pinos.FirstOrDefault(x => x.Funcao == funcao);
+ if (pino != null && (pino.Barramento == TiposBarramentos.CONTROLADOR || (pino.Barramento == TiposBarramentos.EXPANSORI2C && _pinout.ExpansorGPIO)))
+ {
+ Pinos += (int)pino.Barramento + pino.Pino.ToString("00");
+ }
+ else
+ {
+ Pinos += "0-1";
+ }
+ i++;
+ }
+ return Pinos;
+ }
+
+ public static string PinoSensorProtocolo2(PinoutDataModel _pinout)
+ {
+ string pin = "0-1";
+ string pin2 = "0-1";
+ var comp = _pinout.Pinos.FirstOrDefault(x => x.Funcao != FuncoesPinout.NaoConectado);
+ var p2 = _pinout.Pinos.FirstOrDefault(x => PinoutUtils.PinosSecundarios.Any(y => y == x.Funcao));
+ if (comp != null && (comp.Barramento == TiposBarramentos.CONTROLADOR || (comp.Barramento == TiposBarramentos.EXPANSORI2C && _pinout.ExpansorGPIO)))
+ {
+ pin = (int)comp.Barramento + comp.Pino.ToString("00");
+ }
+ if (p2 != null && (p2.Barramento == TiposBarramentos.CONTROLADOR || (p2.Barramento == TiposBarramentos.EXPANSORI2C && _pinout.ExpansorGPIO)))
+ {
+ pin2 = (int)p2.Barramento + p2.Pino.ToString("00");
+ }
+ return pin + ";" + pin2;
+ }
+
}
public enum TiposControladores
{
ESP32_S3,
ESP32_WROVER,
+ TODOS,
+ }
+
+ public enum TiposBarramentos
+ {
+ CONTROLADOR = 0,
+ EXPANSORI2C = 1
}
public enum FuncoesPinout
@@ -284,6 +371,8 @@ namespace AgroBase.Models.Modules
INA,
INB,
Sinaleiro,
+ ServoX,
+ ServoY,
}
public static class PinoutUtils
diff --git a/AgroBase/AgroBase/Models/Modules/SensoriamentoModel.cs b/AgroBase/AgroBase/Models/Modules/SensoriamentoModel.cs
index 7160777ca..8819a4033 100644
--- a/AgroBase/AgroBase/Models/Modules/SensoriamentoModel.cs
+++ b/AgroBase/AgroBase/Models/Modules/SensoriamentoModel.cs
@@ -1,5 +1,6 @@
using AgroBase.Forms;
using AgroBase.Services;
+using Emgu.CV.Structure;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
@@ -16,7 +17,8 @@ namespace AgroBase.Models.Modules
public static int _TaxaAmostragem { get; set; } = 500;
public bool Conectado { get; set; } = false;
public static int LogsManter { get; set; } = 60;
- public static List Pinout { get; set; }
+ public static PinoutDataModel Pinout { get; set; }
+ public static bool ExpansorGPIO { get; set; } = false;
public static List Funcoes { get; set; } = new List()
{
FuncoesPinout.SDA,
@@ -150,111 +152,9 @@ namespace AgroBase.Models.Modules
},
new SensorModel()
{
- ID = "VBAT",
- Descricao = "Tensão da bateria",
- Prioridade = 20,
- Componente = S_Code.sTEN,
- Aferir = true,
- Inicializado = false,
- Testando = false,
- Funcoes = new List()
- {
- FuncoesPinout.Tensao,
- },
- DelayAmostragem = 500,
- UnidadeMedida = "V",
- Parametros = new List()
- {
- new string[] { "V offset", "000.85" },
- new string[] { "R1", "120000" },
- new string[] { "R2", "010000" },
- },
- },
- new SensorModel()
- {
- ID = "AMVET",
+ ID = "AB3V",
Prioridade = 10,
- Descricao = "Corrente do Motor BLDC ET",
- Componente = S_Code.sCOR,
- Aferir = true,
- Inicializado = false,
- Testando = false,
- Funcoes = new List()
- {
- FuncoesPinout.I2C,
- },
- DelayAmostragem = 500,
- UnidadeMedida = "A",
- Parametros = new List()
- {
- new string[] { "Endereço I2C", "0x40" },
- },
- },
- new SensorModel()
- {
- ID = "AMVEF",
- Prioridade = 10,
- Descricao = "Corrente do Motor BLDC EF",
- Componente = S_Code.sCOR,
- Aferir = true,
- Inicializado = false,
- Testando = false,
- Funcoes = new List()
- {
- FuncoesPinout.I2C,
- },
- DelayAmostragem = 500,
- UnidadeMedida = "A",
- Parametros = new List()
- {
- new string[] { "Endereço I2C", "0x41" },
- },
- },
- new SensorModel()
- {
- ID = "AMVDT",
- Prioridade = 10,
- Descricao = "Corrente do Motor BLDC DT",
- Componente = S_Code.sCOR,
- Aferir = true,
- Inicializado = false,
- Testando = false,
- Funcoes = new List()
- {
- FuncoesPinout.I2C,
- },
- DelayAmostragem = 500,
- UnidadeMedida = "A",
- Parametros = new List()
- {
- new string[] { "Endereço I2C", "0x42" },
- },
- },
- new SensorModel()
- {
- ID = "AMVDF",
- Prioridade = 10,
- Descricao = "Corrente do Motor BLDC DF",
- Componente = S_Code.sCOR,
- Aferir = true,
- Inicializado = false,
- Testando = false,
- Funcoes = new List()
- {
- FuncoesPinout.I2C,
- },
- DelayAmostragem = 500,
- UnidadeMedida = "A",
- Parametros = new List()
- {
- new string[] { "Endereço I2C", "0x43" },
- },
- },
- new SensorModel()
- {
- ID = "AMP",
- Prioridade = 10,
- Descricao = "Corrente dos Motores de Passo",
+ Descricao = "Corrente no Barramento 3V",
Componente = S_Code.sCOR,
Aferir = true,
Inicializado = false,
@@ -268,13 +168,14 @@ namespace AgroBase.Models.Modules
Parametros = new List()
{
new string[] { "Endereço I2C", "0x44" },
+ new string[] { "CI", "219" }
},
},
new SensorModel()
{
- ID = "AAT",
+ ID = "AB5V",
Prioridade = 10,
- Descricao = "Corrente do Módulo Atuador",
+ Descricao = "Corrente no Barramento 5V",
Componente = S_Code.sCOR,
Aferir = true,
Inicializado = false,
@@ -287,14 +188,15 @@ namespace AgroBase.Models.Modules
UnidadeMedida = "A",
Parametros = new List()
{
- new string[] { "Endereço I2C", "0x45" },
+ new string[] { "Endereço I2C", "0x41" },
+ new string[] { "CI", "219" }
},
},
new SensorModel()
{
- ID = "APC",
+ ID = "AB7V2",
Prioridade = 10,
- Descricao = "Corrente do Computador",
+ Descricao = "Corrente no Barramento 7,2V",
Componente = S_Code.sCOR,
Aferir = true,
Inicializado = false,
@@ -307,7 +209,29 @@ namespace AgroBase.Models.Modules
UnidadeMedida = "A",
Parametros = new List()
{
- new string[] { "Endereço I2C", "0x46" },
+ new string[] { "Endereço I2C", "0x40" },
+ new string[] { "CI", "219" }
+ },
+ },
+ new SensorModel()
+ {
+ ID = "AB12V",
+ Prioridade = 10,
+ Descricao = "Corrente no Barramento 12V",
+ Componente = S_Code.sCOR,
+ Aferir = true,
+ Inicializado = false,
+ Testando = false,
+ Funcoes = new List()
+ {
+ FuncoesPinout.I2C,
+ },
+ DelayAmostragem = 500,
+ UnidadeMedida = "A",
+ Parametros = new List()
+ {
+ new string[] { "Endereço I2C", "0x43" },
+ new string[] { "CI", "226" }
},
},
new SensorModel()
@@ -383,6 +307,31 @@ namespace AgroBase.Models.Modules
UnidadeMedida = "º",
Parametros = new List(),
},
+ new SensorModel()
+ {
+ ID = "SNR_F",
+ Descricao = "Sensor Sonar Frontal",
+ Prioridade = 20,
+ Componente = S_Code.sSNR,
+ Aferir = true,
+ Inicializado = false,
+ Testando = false,
+ Funcoes = new List()
+ {
+ FuncoesPinout.Echo,
+ FuncoesPinout.Trigger,
+ FuncoesPinout.ServoX,
+ FuncoesPinout.ServoY,
+ },
+ DelayAmostragem = 1000,
+ UnidadeMedida = "cm/º",
+ Parametros = new List()
+ {
+ new string[] { "Angulo X Acrescentar", "5" },
+ new string[] { "Angulo Y Acrescentar", "30" },
+ },
+ },
+
},
};
}
@@ -395,8 +344,8 @@ namespace AgroBase.Models.Modules
"MD".PadRight(5, ' ') + ";" + // 0 ~ 4
(Conectar ? "1" : "0") + ";" + // 6
_TaxaAmostragem.ToString("00000") + // 8 ~ 12
- (Pinout.Any(x => x.Funcao == FuncoesPinout.SDA) ? Pinout.FirstOrDefault(x => x.Funcao == FuncoesPinout.SDA).Pino.ToString("00") : "-1") + ";" + // 14 ~ 15
- (Pinout.Any(x => x.Funcao == FuncoesPinout.SCL) ? Pinout.FirstOrDefault(x => x.Funcao == FuncoesPinout.SCL).Pino.ToString("00") : "-1"); // 17 ~ 18
+ (Pinout.Pinos.Any(x => x.Funcao == FuncoesPinout.SDA) ? Pinout.Pinos.FirstOrDefault(x => x.Funcao == FuncoesPinout.SDA).Pino.ToString("00") : "-1") + ";" + // 14 ~ 15
+ (Pinout.Pinos.Any(x => x.Funcao == FuncoesPinout.SCL) ? Pinout.Pinos.FirstOrDefault(x => x.Funcao == FuncoesPinout.SCL).Pino.ToString("00") : "-1"); // 17 ~ 18
Config.Add(ProtocoloMOD);
return Config;
}
@@ -434,115 +383,201 @@ namespace AgroBase.Models.Modules
Sensor.Inicializado = Dados[2] == "1";
break;
case S_Code.sCOR:
- double vBarramento = -1;
- double.TryParse(Dados[2].Replace(".", ","), out vBarramento);
- double vShunt = -1;
- double.TryParse(Dados[3].Replace(".", ","), out vShunt);
- double corrente = -1;
- double.TryParse(Dados[4].Replace(".", ","), out corrente);
- double potencia = -1;
- double.TryParse(Dados[5].Replace(".", ","), out potencia);
+ {
+ double vBarramento = -1;
+ double.TryParse(Dados[2].Replace(".", ","), out vBarramento);
+ double vShunt = -1;
+ double.TryParse(Dados[3].Replace(".", ","), out vShunt);
+ double corrente = -1;
+ double.TryParse(Dados[4].Replace(".", ","), out corrente);
+ double potencia = -1;
+ double.TryParse(Dados[5].Replace(".", ","), out potencia);
- Sensor.Leituras = new List()
- {
- corrente,
- vBarramento,
- potencia,
- vShunt,
- };
-
- if (Sensor.Descricao.ToLower().Contains("bateria"))
- {
- frmInstancial.frmAcompanhamento.AtualizarSensores("Corrente atual: " + corrente.ToString("0.00") + "A - Mín: " + Sensor.ValorMinimo.ToString("0.00") + "A - Máx: " + Sensor.ValorMaximo.ToString("0.00") + "A");
- }
-
- AtualizaGrafico = true;
- break;
- case S_Code.sTEN:
- double leituraV = -1;
- double.TryParse(Dados[2].Replace(".", ","), out leituraV);
- double vPinV = -1;
- double.TryParse(Dados[3].Replace(".", ","), out vPinV);
- double tensao = -1;
- double.TryParse(Dados[4].Replace(".", ","), out tensao);
-
- Sensor.Leituras = new List()
- {
- tensao,
- leituraV,
- vPinV,
- };
-
- if (Sensor.Descricao.ToLower().Contains("bateria"))
- {
- frmInstancial.frmAcompanhamento.AtualizarSensores("Tensão atual: " + tensao.ToString("0.00") + "V - Mín: " + Sensor.ValorMinimo.ToString("0.00") + "V - Máx: " + Sensor.ValorMaximo.ToString("0.00") + "V");
- Variaveis.OperacaoEmAndamento.Sensoriamento.PorcentagemBateria = (tensao / Sensor.LimiteMaximo) * 100;
- if (Variaveis.OperacaoEmAndamento.Sensoriamento.PorcentagemBateria < 0)
+ Sensor.Leituras = new List()
{
- Variaveis.OperacaoEmAndamento.Sensoriamento.PorcentagemBateria = 0;
+ corrente,
+ vBarramento,
+ potencia,
+ vShunt,
+ };
+
+ if (Sensor.ID.Contains("AB"))
+ {
+ frmInstancial.frmAcompanhamento.AtualizarSensores(Sensor.ID.Replace("AB", "Barramento ") + ": " + vBarramento.ToString("0.00") + " V " + corrente.ToString("0.00") + " mA");
}
+
+ AtualizaGrafico = true;
+ break;
}
+ case S_Code.sTEN:
+ {
+ double leitura = -1;
+ double.TryParse(Dados[2].Replace(".", ","), out leitura);
- AtualizaGrafico = true;
+ double Vcc = 3.3;
+ double Voffset = double.Parse(Sensor.Parametros[0][1]);
+ double R1 = double.Parse(Sensor.Parametros[1][1].Replace(".", ","));
+ double R2 = double.Parse(Sensor.Parametros[2][1].Replace(".", ","));
+ double Razao = (R1 + R2) / (double)R2;
+ double voltageV = (leitura * (Vcc / 4095.0)) + (Voffset / Razao); // Convertendo o valor ADC para tensão
+ double realVoltage = voltageV * Razao;
- break;
+ Sensor.Leituras = new List()
+ {
+ realVoltage,
+ leitura,
+ voltageV,
+ };
+
+ if (Sensor.Descricao.ToLower().Contains("bateria"))
+ {
+ frmInstancial.frmAcompanhamento.AtualizarSensores("Tensão atual: " + realVoltage.ToString("0.00") + "V - Mín: " + Sensor.ValorMinimo.ToString("0.00") + "V - Máx: " + Sensor.ValorMaximo.ToString("0.00") + "V");
+ Variaveis.OperacaoEmAndamento.Sensoriamento.PorcentagemBateria = (realVoltage / Sensor.LimiteMaximo) * 100;
+ if (Variaveis.OperacaoEmAndamento.Sensoriamento.PorcentagemBateria < 0)
+ {
+ Variaveis.OperacaoEmAndamento.Sensoriamento.PorcentagemBateria = 0;
+ }
+ }
+
+ AtualizaGrafico = true;
+
+ break;
+ }
case S_Code.sTMP:
- double temp = -1;
- double.TryParse(Dados[2].Replace(".", ","), out temp);
- Sensor.Leituras = new List() { temp };
-
- if (Sensor.Descricao.ToLower().Contains("bateria"))
{
- frmInstancial.frmAcompanhamento.AtualizarSensores("Temp atual: " + temp.ToString("0.00") + "ºC - Mín: " + Sensor.ValorMinimo.ToString("0.00") + "ºC - Máx: " + Sensor.ValorMaximo.ToString("0.00") + "ºC");
- }
+ double temp = -1;
+ double.TryParse(Dados[2].Replace(".", ","), out temp);
- AtualizaGrafico = true;
- break;
+ double Vs = 3.3; // TENSÃO DE SAIDA DO ESP32
+ double R1 = 10000; //RESISTOR UTILIZADO NO DIVISOR DE TENSÃO
+ double Beta = 3950; // VALOR DE BETA
+ double To = 298.15; // VALOR EM KELVIN REFERENTE A 25° CELSIUS
+ double Ro = 10000;
+ double adcMax = 4095.0;
+ double Vout, Rt = 0;
+ double T, Tc, Tf, adc = 0;
+ //CALCULOS PARA CONVERSÃO DA LEITURA RECEBIDA PELO ESP32 EM TEMPERATURA EM °C
+ double Voffset = double.Parse(Sensor.Parametros[0][1].Replace(".", ","));
+ Vout = (temp * Vs / adcMax) + Voffset;
+ Rt = R1 * Vout / (Vs - Vout);
+ T = 1 / (1 / To + Math.Log(Rt / Ro) / Beta);
+ Tc = T - 273.15;
+ Tf = Tc * 9 / 5 + 32;
+
+ Tc = Math.Round(Tc, 2);
+
+ Sensor.Leituras = new List() { Tc };
+
+ if (Sensor.Descricao.ToLower().Contains("bateria"))
+ {
+ frmInstancial.frmAcompanhamento.AtualizarSensores(Tc.ToString("0.00") + " ºC");
+ }
+
+ AtualizaGrafico = true;
+ break;
+ }
case S_Code.sULT:
- double distancia = -1;
- double.TryParse(Dados[2].Replace(".", ","), out distancia);
- int duracao = -1;
- int.TryParse(Dados[3], out duracao);
-
- Sensor.Leituras = new List()
{
- distancia,
- duracao,
- };
+ double distancia = -1;
+ double.TryParse(Dados[2].Replace(".", ","), out distancia);
+ int duracao = -1;
+ int.TryParse(Dados[3], out duracao);
- if (Sensor.ID == "SUESQ")
- {
- Variaveis.OperacaoEmAndamento.Sensoriamento.DistanciaEsquerda = distancia;
- }
- else if (Sensor.ID == "SUDIR")
- {
- Variaveis.OperacaoEmAndamento.Sensoriamento.DistanciaDireita = distancia;
- }
+ Sensor.Leituras = new List()
+ {
+ distancia,
+ duracao,
+ };
- AtualizaGrafico = true;
- break;
+ if (Sensor.ID == "SUESQ")
+ {
+ Variaveis.OperacaoEmAndamento.Sensoriamento.DistanciaEsquerda = distancia;
+ }
+ else if (Sensor.ID == "SUDIR")
+ {
+ Variaveis.OperacaoEmAndamento.Sensoriamento.DistanciaDireita = distancia;
+ }
+
+ AtualizaGrafico = true;
+ break;
+ }
case S_Code.sMAG:
- int x = -1;
- int.TryParse(Dados[2], out x);
- int y = -1;
- int.TryParse(Dados[3], out y);
- int z = -1;
- int.TryParse(Dados[4], out z);
- double angulo = -1;
- double.TryParse(Dados[5].Replace(".", ","), out angulo);
-
- Sensor.Leituras = new List()
{
- angulo,
- x,
- y,
- z,
- };
+ int x = -1;
+ int.TryParse(Dados[2], out x);
+ int y = -1;
+ int.TryParse(Dados[3], out y);
+ int z = -1;
+ int.TryParse(Dados[4], out z);
+ double angulo = -1;
+ double.TryParse(Dados[5].Replace(".", ","), out angulo);
- Variaveis.OperacaoEmAndamento.Sensoriamento.AnguloCarroBussola = angulo;
+ Sensor.Leituras = new List()
+ {
+ angulo,
+ x,
+ y,
+ z,
+ };
+
+ Variaveis.OperacaoEmAndamento.Sensoriamento.AnguloCarroBussola = angulo;
+
+ AtualizaGrafico = true;
+ break;
+ }
+ case S_Code.sSNR:
+ {
+ int distancia = -1;
+ int.TryParse(Dados[2], out distancia);
+ int angulo = -1;
+ int.TryParse(Dados[3], out angulo);
+ int posicao = -1;
+ int.TryParse(Dados[4], out posicao);
+
+ Sensor.Leituras = new List()
+ {
+ distancia,
+ angulo,
+ posicao,
+ };
+
+ if (Sensor.ID == "SNR_F")
+ {
+ var posArr = Variaveis.OperacaoEmAndamento.Sensoriamento.SonarFrontal.Deteccoes.FirstOrDefault(x => x.Posicao == posicao);
+ if (posArr == null)
+ {
+ posArr = new SonarRegistroModel()
+ {
+ Posicao = posicao,
+ Leituras = new List()
+ };
+ Variaveis.OperacaoEmAndamento.Sensoriamento.SonarFrontal.Deteccoes.Add(posArr);
+ }
+ var leituras = posArr.Leituras;
+
+ if (false && posicao != Variaveis.OperacaoEmAndamento.Sensoriamento.SonarFrontal.PosicaoAtual && Variaveis.OperacaoEmAndamento.Sensoriamento.SonarFrontal.Deteccoes.Any(x => x.Posicao == posicao))
+ {
+ Variaveis.OperacaoEmAndamento.Sensoriamento.SonarFrontal.Deteccoes.First(x => x.Posicao == posicao).Leituras.Clear();
+ }
+
+ if (leituras.Any(x => x.Angulo == angulo))
+ {
+ leituras.First(x => x.Angulo == angulo).Momento = DateTime.Now;
+ leituras.First(x => x.Angulo == angulo).Distancia = distancia;
+ }
+ else
+ {
+ leituras.Add(new SonarLeituraModel(angulo, distancia));
+ }
+
+ Variaveis.OperacaoEmAndamento.Sensoriamento.SonarFrontal.PosicaoAtual = posicao;
+ Variaveis.OperacaoEmAndamento.Sensoriamento.SonarFrontal.AtualizarSonar();
+ }
+
+ AtualizaGrafico = true;
+ break;
+ }
- AtualizaGrafico = true;
- break;
}
@@ -571,10 +606,10 @@ namespace AgroBase.Models.Modules
Momento = DateTime.Now,
ComponenteID = Sensor.ID,
Componente = Sensor.Componente,
- Leitura1 = Sensor.Leituras[0],
- Leitura2 = Sensor.Leituras[1],
- Leitura3 = Sensor.Leituras[2],
- Leitura4 = Sensor.Leituras[3],
+ Leitura1 = Sensor.Leituras.Count() > 0 ? Sensor.Leituras[0] : -1,
+ Leitura2 = Sensor.Leituras.Count() > 1 ? Sensor.Leituras[1] : -1,
+ Leitura3 = Sensor.Leituras.Count() > 2 ? Sensor.Leituras[2] : -1,
+ Leitura4 = Sensor.Leituras.Count() > 3 ? Sensor.Leituras[3] : -1,
AlarmeMinima = Sensor.Leituras[0] < Sensor.LimiteMinimo,
AlarmeMaxima = Sensor.Leituras[0] > Sensor.LimiteMaximo,
});
@@ -656,23 +691,6 @@ namespace AgroBase.Models.Modules
}
}
- public List CarregarPinout(string nomeArquivo)
- {
- if (!File.Exists(nomeArquivo))
- {
- var newPinout = PinoutModel.CarregarPinoutPadrao_Wrover();
- File.WriteAllText(nomeArquivo, JsonConvert.SerializeObject(newPinout));
- }
- var pinoutText = File.ReadAllText(nomeArquivo);
- Pinout = JsonConvert.DeserializeObject(pinoutText).ToList();
- return Pinout;
- }
-
- public void SalvarPinout(List newPinout, string nomeArquivo)
- {
- File.WriteAllText(nomeArquivo, JsonConvert.SerializeObject(newPinout));
- }
-
public void IniciarRegistrador()
{
@@ -701,9 +719,15 @@ namespace AgroBase.Models.Modules
public List LogGrafico = new List();
- public string ProtocoloConfiguracaoSensor(List Pinout, bool Conectar)
+ public string ProtocoloConfiguracaoSensor(PinoutDataModel Pinout, bool Conectar)
{
- var _pinout = Pinout.Where(x => x.ComponenteID == ID).ToList();
+ var _pinout = new PinoutDataModel()
+ {
+ ExpansorGPIO = Pinout.ExpansorGPIO,
+ EnderecoExpansor = Pinout.EnderecoExpansor,
+ Pinos = Pinout.Pinos.ToList(),
+ };
+ _pinout.Pinos = _pinout.Pinos.Where(x => x.ComponenteID == ID).ToList();
string Protocolo = ((int)F_Code.Cfg).ToString() +
ID.PadRight(5, ' ') + ";" + // 0 ~ 4
(Conectar ? "1" : "0") + ";" + // 6
@@ -711,11 +735,10 @@ namespace AgroBase.Models.Modules
(Aferir ? "1" : "0") + ";" + // 12
DelayAmostragem.ToString("00000") + ";" + // 14 ~ 18
Prioridade.ToString("00") + ";" + // 20 ~ 21
- (_pinout.Any(x => x.Funcao != FuncoesPinout.NaoConectado) ? _pinout.FirstOrDefault(x => x.Funcao != FuncoesPinout.NaoConectado).Pino.ToString("00") : "-1") + ";" + // 23 ~ 24
- (_pinout.Any(x => PinoutUtils.PinosSecundarios.Any(y => y == x.Funcao)) ? _pinout.FirstOrDefault(x => PinoutUtils.PinosSecundarios.Any(y => y == x.Funcao)).Pino.ToString("00") : "-1"); // 26 ~ 27
+ PinoutModel.PinoProtocolo(_pinout, Funcoes); // 23 ~ 25 / 27 ~ 29
foreach (var Parametro in Parametros)
{
- Protocolo += ";" + Parametro[1];
+ Protocolo += ";" + Parametro[1].PadRight(6, ' ');
}
return Protocolo;
}
@@ -729,13 +752,19 @@ namespace AgroBase.Models.Modules
public List Funcoes { get; set; }
public SensorSinaleiroComportamentoModel Comportamento { get; set; }
- public string ProtocoloConfiguracaoSinaleiro(List Pinout, bool Conectar)
+ public string ProtocoloConfiguracaoSinaleiro(PinoutDataModel Pinout, bool Conectar)
{
- var _pinout = Pinout.Where(x => x.ComponenteID == ID).ToList();
+ var _pinout = new PinoutDataModel()
+ {
+ ExpansorGPIO = Pinout.ExpansorGPIO,
+ EnderecoExpansor = Pinout.EnderecoExpansor,
+ Pinos = Pinout.Pinos.ToList(),
+ };
+ _pinout.Pinos = _pinout.Pinos.Where(x => x.ComponenteID == ID).ToList();
string Protocolo = ((int)F_Code.Cfg).ToString() +
ID.PadRight(5, ' ') + ";" + // 0 ~ 4
(Conectar ? "1" : "0") + ";" + // 6
- (_pinout.Any(x => x.Funcao != FuncoesPinout.NaoConectado) ? _pinout.FirstOrDefault(x => x.Funcao != FuncoesPinout.NaoConectado).Pino.ToString("00") : "-1"); // 8 ~ 9
+ PinoutModel.PinoProtocolo(_pinout, Funcoes); // 8 ~ 10
return Protocolo;
}
@@ -775,4 +804,6 @@ namespace AgroBase.Models.Modules
public bool AlarmeMaxima { get; set; }
public bool AlarmeMinima { get; set; }
}
+
+
}
diff --git a/AgroBase/AgroBase/Models/Operacoes/OperacaoManualModel.cs b/AgroBase/AgroBase/Models/Operacoes/OperacaoManualModel.cs
new file mode 100644
index 000000000..8f4051c56
--- /dev/null
+++ b/AgroBase/AgroBase/Models/Operacoes/OperacaoManualModel.cs
@@ -0,0 +1,18 @@
+using AgroBase.Forms.Operacoes;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+
+namespace AgroBase.Models.Operacoes
+{
+ public class OperacaoManualModel
+ {
+ public Form frmOperacao { get; set; } = new frmOperacaoManual();
+ public string frmOperacaoNome { get; set; } = "frmOperacaoManual";
+ public OperacaoControleModel Controle { get; set; } = new OperacaoControleModel();
+ public OperacaoControleModel ControleAnterior { get; set; } = new OperacaoControleModel();
+ }
+}
diff --git a/AgroBase/AgroBase/Models/Operacoes/OperacaoMapaGPSModel.cs b/AgroBase/AgroBase/Models/Operacoes/OperacaoMapaGPSModel.cs
new file mode 100644
index 000000000..7811018d0
--- /dev/null
+++ b/AgroBase/AgroBase/Models/Operacoes/OperacaoMapaGPSModel.cs
@@ -0,0 +1,842 @@
+using AgroBase.Forms.Operacoes;
+using AgroBase.Models.Modules;
+using AgroBase.Services;
+using Newtonsoft.Json;
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+using static AgroBase.Models.Enuns;
+
+namespace AgroBase.Models.Operacoes
+{
+ public class OperacaoMapaGPSModel
+ {
+ public Form frmOperacao { get; set; } = new frmOperacaoMapaGPS();
+ public string frmOperacaoNome { get; set; } = "frmOperacaoMapaGPS";
+ public bool Concluido
+ {
+ get
+ {
+ return Variaveis.OperacaoEmAndamento.Mapa.IdxRuaAtual >= Variaveis.OperacaoEmAndamento.Mapa.Trajetoria.Count - 1;
+ }
+ }
+ public OperacaoRefRuaGPS ReferencialRuaGPS { get; set; } = new OperacaoRefRuaGPS();
+ public OperacaoMapaGPSSensoriamentoModel Sensoriamento { get; set; } = new OperacaoMapaGPSSensoriamentoModel();
+ public OperacaoControleModel Controle { get; set; } = new OperacaoControleModel();
+ public OperacaoControleModel ControleAnterior { get; set; } = new OperacaoControleModel();
+ public List Logs { get; set; } = new List();
+
+
+ public void AtualizarDadosControle()
+ {
+ DateTime Agora = DateTime.Now;
+ OperacaoControleTipoModel ControleMov = Controle.TiposControle != null ? Controle.TiposControle.FirstOrDefault(x => x.Tipo == T_Code.Mov) : null;
+ OperacaoControleTipoModel ControleDir = Controle.TiposControle != null ? Controle.TiposControle.FirstOrDefault(x => x.Tipo == T_Code.Dir) : null;
+ OperacaoControleTipoModel ControleAtu = Controle.TiposControle != null ? Controle.TiposControle.FirstOrDefault(x => x.Tipo == T_Code.Atu) : null;
+
+ if (ControleMov != null && Controle.RPM != ControleAnterior.RPM && (Agora - ControleMov.UltimoComando).TotalMilliseconds > ControleMov.DelayEnvioComando)
+ {
+ // Enviar comando MOV
+ var Protocolos = EnviarProtocoloComando(Variaveis.OperacaoEmAndamento.DispMov);
+ ControleMov.UltimoComando = Agora;
+ ControleMov.Comandos.AddRange(Protocolos);
+
+ ControleAnterior.RPM = Controle.RPM;
+ }
+ if (ControleDir != null && Convert.ToInt32(Controle.Angulo) != Convert.ToInt32(ControleAnterior.Angulo) && (Agora - ControleDir.UltimoComando).TotalMilliseconds > ControleDir.DelayEnvioComando)
+ {
+ // Enviar comando DIR
+ var Protocolos = EnviarProtocoloComando(Variaveis.OperacaoEmAndamento.DispDir);
+ ControleDir.UltimoComando = Agora;
+ ControleDir.Comandos.AddRange(Protocolos);
+
+ ControleAnterior.Angulo = Controle.Angulo;
+ }
+ if (ControleAtu != null && !Controle.BicosAtuados.Select(x => x.Atuado).SequenceEqual(ControleAnterior.BicosAtuados.Select(x => x.Atuado)) && (Agora - ControleAtu.UltimoComando).TotalMilliseconds > ControleAtu.DelayEnvioComando)
+ {
+ // Enviar comando ATU
+ var Protocolos = EnviarProtocoloComando(Variaveis.OperacaoEmAndamento.DispAtu);
+ ControleAtu.UltimoComando = Agora;
+ ControleAtu.Comandos.AddRange(Protocolos);
+
+ ControleAnterior.BicosAtuados = new List();
+ foreach (var bico in Controle.BicosAtuados)
+ {
+ ControleAnterior.BicosAtuados.Add(bico.Clone());
+ }
+ }
+
+ AtualizarDadosOperacao();
+ }
+
+ public List EnviarProtocoloComando(IDispositivosService Dispositivo)
+ {
+ if (Dispositivo == null)
+ {
+ return new List();
+ }
+
+ if (Dispositivo.Dispositivo == T_Code.Mov)
+ {
+ GeneralJoystick.RPM = Controle.RPM;
+ if (Controle.RPM == 0)
+ {
+ Controle.Direcao = Direcao.Parado;
+ }
+ else
+ {
+ if (Controle.RPM < 0)
+ {
+ GeneralJoystick.RPM *= -1;
+ Controle.Direcao = Direcao.Tras;
+ }
+ else
+ {
+ Controle.Direcao = Direcao.Frente;
+ }
+ }
+ }
+ else if (Dispositivo.Dispositivo == T_Code.Dir)
+ {
+ GeneralJoystick.Angulo = Controle.Angulo;
+ if (Controle.Angulo < 0)
+ {
+ GeneralJoystick.Angulo *= -1;
+ if (ControleAnterior.Angulo < Controle.Angulo)
+ {
+ Controle.Direcao = Direcao.Parado;
+ }
+ else
+ {
+ Controle.Direcao = Direcao.Baixo;
+ }
+ }
+ else
+ {
+ if (ControleAnterior.Angulo > Controle.Angulo)
+ {
+ Controle.Direcao = Direcao.Parado;
+ }
+ else
+ {
+ Controle.Direcao = Direcao.Cima;
+ }
+ }
+ }
+
+ var Protocolos =
+ Dispositivo.Dados is MovimentacaoModel ? ((MovimentacaoModel)Dispositivo.Dados).Motores.Select(x => x.ProtocoloComando(Controle.Direcao)) :
+ Dispositivo.Dados is DirecionalModel ? ((DirecionalModel)Dispositivo.Dados).Motores.Select(x => x.ProtocoloComando(Controle.Direcao)) :
+ Dispositivo.Dados is AtuadorModel ? ((AtuadorModel)Dispositivo.Dados).BicosPulverizadores.Select(x => x.ProtocoloComando()) :
+ null;
+ foreach (var ProtocoloMotor in Protocolos)
+ {
+ Dispositivo.EnviarDadosSerial(ProtocoloMotor);
+ Task.Delay(10);
+ }
+
+ return Protocolos.ToList();
+ }
+
+ private void AtualizarDadosOperacao()
+ {
+ if (Variaveis.OperacaoEmAndamento.DispMov == null)
+ {
+ return;
+ }
+ try
+ {
+ //Sensoriamento.DistanciaPercorrida = DispMov.Dados.DistanciaPercorridaOperacao;
+ Sensoriamento.ProgressoTrajeto = Variaveis.OperacaoEmAndamento.Mapa.mapaService.pythonProcess == null ? 0 : Variaveis.OperacaoEmAndamento.Sensoriamento.DistanciaPercorrida.Sum() / Variaveis.OperacaoEmAndamento.Mapa.DistanciaTotal * 100;
+ if (Sensoriamento.ProgressoTrajeto < 0 && Sensoriamento.ProgressoTrajeto >= 0)
+ {
+ Sensoriamento.ProgressoTrajeto = 0;
+ }
+ Sensoriamento.ProgressoRua =
+ Variaveis.OperacaoEmAndamento.Mapa == null || Variaveis.OperacaoEmAndamento.Mapa.pnlMapa == null ? 0 :
+ (ReferencialRuaGPS.Direcao == DirecaoCarroRua.Ida ? ((double)ReferencialRuaGPS.IdxPontoAproximadoRua / (double)(Variaveis.OperacaoEmAndamento.Mapa.Trajetoria[Variaveis.OperacaoEmAndamento.Mapa.IdxRuaAtual].Count - 1)) :
+ ReferencialRuaGPS.Direcao == DirecaoCarroRua.Volta ? ((double)(Variaveis.OperacaoEmAndamento.Mapa.Trajetoria[Variaveis.OperacaoEmAndamento.Mapa.IdxRuaAtual].Count - 1 - ReferencialRuaGPS.IdxPontoAproximadoRua) / (double)(Variaveis.OperacaoEmAndamento.Mapa.Trajetoria[Variaveis.OperacaoEmAndamento.Mapa.IdxRuaAtual].Count - 1)) :
+ 0) * 100;
+ }
+ catch
+ {
+
+ }
+
+ }
+
+ public void SalvarLog(bool Fim)
+ {
+ Logs.Add(new OperacaoMapaGPSSensoriamentoModel()
+ {
+ Momento = DateTime.Now,
+ AtuacoesPorBico = new List(Sensoriamento.AtuacoesPorBico),
+ ErvasNoRadar = Sensoriamento.ErvasNoRadar,
+ HerbicidaConsumido = Sensoriamento.HerbicidaConsumido,
+ HerbicidaPorErva = Sensoriamento.HerbicidaPorErva,
+ ProgressoTrajeto = Sensoriamento.ProgressoTrajeto,
+ ProgressoRua = Sensoriamento.ProgressoRua,
+ Status = ReferencialRuaGPS.StatusAtual,
+ Direcao = ReferencialRuaGPS.Direcao,
+ AnguloCarro = ReferencialRuaGPS.AnguloCarro,
+ AnguloRua = ReferencialRuaGPS.AnguloCaminho,
+ DentroDaRua = ReferencialRuaGPS.DentroDaRua,
+ IdxPontoAproximadoRua = ReferencialRuaGPS.IdxPontoAproximadoRua,
+ IdxRuaAtual = Variaveis.OperacaoEmAndamento.Mapa.IdxRuaAtual,
+ AnguloDif = Sensoriamento.AnguloDif,
+ AnguloRuaCamera = Sensoriamento.AnguloRuaCamera,
+ });
+ if (!Directory.Exists(Variaveis.CaminhoOperacoes + Variaveis.OperacaoEmAndamento.ID))
+ {
+ Directory.CreateDirectory(Variaveis.CaminhoOperacoes + Variaveis.OperacaoEmAndamento.ID);
+ }
+ if (!File.Exists(Variaveis.CaminhoOperacoes + Variaveis.OperacaoEmAndamento.ID + "/logs.json"))
+ {
+ string jsonLog = JsonConvert.SerializeObject(Logs, Formatting.None);
+ File.WriteAllText(Variaveis.CaminhoOperacoes + Variaveis.OperacaoEmAndamento.ID + "/logs.json", jsonLog.Substring(0, jsonLog.Length - 1));
+ }
+ else
+ {
+ string jsonLog = JsonConvert.SerializeObject(Logs[Logs.Count - 1], Formatting.None);
+ File.AppendAllText(Variaveis.CaminhoOperacoes + Variaveis.OperacaoEmAndamento.ID + "/logs.json", "," + jsonLog + (Fim ? "]" : ""));
+ }
+
+ }
+
+ public void AtualizarControleAtuadores()
+ {
+ Controle.BicosAtuados = Variaveis.OperacaoEmAndamento.DispAtu.Dados.BicosPulverizadores;
+ }
+
+ public void CalcularAnguloInclinacao()
+ {
+ double erroOrientacao = 0.0;
+ double anguloCarro = ReferencialRuaGPS.AnguloCarro;
+ double anguloOposto = (anguloCarro + 180) % 360;
+ double anguloRua = ReferencialRuaGPS.AnguloCaminho;
+ double anguloCamera = Sensoriamento.AnguloRuaCamera;
+
+ // Calcula o erro de orientação
+ if ((anguloCarro + ReferencialRuaGPS.MargemErroAngulo) >= anguloRua && (anguloCarro - ReferencialRuaGPS.MargemErroAngulo) <= anguloRua)
+ {
+ erroOrientacao = anguloCarro - anguloRua;
+ }
+ else if ((anguloOposto + ReferencialRuaGPS.MargemErroAngulo) >= anguloRua && (anguloOposto - ReferencialRuaGPS.MargemErroAngulo) <= anguloRua)
+ {
+ erroOrientacao = anguloOposto - anguloRua;
+ }
+ Sensoriamento.AnguloDif = erroOrientacao;
+
+ // Assume-se que o anguloCamera reflete o desvio lateral.
+ // Isso pode precisar de ajuste dependendo de como o ângulo é medido.
+ double erroPosicaoLateral = anguloCamera;
+
+ // Combina os erros. Ajuste os pesos conforme necessário para o seu caso específico.
+ double pesoOrientacao = 0.3;
+ double pesoPosicaoLateral = 0.7;
+ double erroCombinado = (erroOrientacao * pesoOrientacao) + (erroPosicaoLateral * pesoPosicaoLateral);
+
+ var statusAtual = ReferencialRuaGPS.StatusAtual;
+ // Atualiza o PID com o erro combinado
+ if (statusAtual != StatusCarroMapa.Parado && statusAtual != StatusCarroMapa.Manobrando)
+ {
+ Controle.PIDdirecional.Atualizar(erroCombinado);
+ }
+ double correcaoAngulo = Controle.PIDdirecional.Saida;
+
+ // Aplica a correção. Isso pode incluir limites para evitar comandos excessivos.
+ Controle.Angulo = correcaoAngulo;
+ }
+
+ public void CalculaDadosMovimentacaoAutonoma()
+ {
+ CalcularAnguloInclinacao();
+
+ var statusAtual = ReferencialRuaGPS.StatusAtual;
+
+ if (statusAtual == StatusCarroMapa.Parado)
+ {
+ var BicosNaoAtuados = new List(Variaveis.OperacaoEmAndamento.DispAtu.Dados.BicosPulverizadores);
+ BicosNaoAtuados.ForEach(x => x.Atuado = false);
+ Controle.BicosAtuados = BicosNaoAtuados.ToList();
+ Controle.RPM = 0;
+ Controle.Angulo = 0;
+ }
+ else if (statusAtual == StatusCarroMapa.Direcionando)
+ {
+ Controle.RPM = Controle.RPM_Max;
+ }
+ else if (statusAtual == StatusCarroMapa.EntrandoRua)
+ {
+ Controle.RPM = Controle.RPM_Min;
+ }
+ else if (statusAtual == StatusCarroMapa.SaindoRua)
+ {
+ Controle.RPM = Controle.RPM_Min;
+ }
+ else if (statusAtual == StatusCarroMapa.CaminhandoRua)
+ {
+ if (Sensoriamento.ErvasNoRadar == 0)
+ {
+ Controle.RPM = Controle.RPM_Max;
+ }
+ else
+ {
+ Controle.RPM = Convert.ToInt32(Controle.RPM_Max * 0.85);
+ }
+
+ double margemAngulo = 5;
+ if (Controle.Angulo > margemAngulo || Controle.Angulo < (margemAngulo * -1))
+ {
+ Controle.RPM = Controle.RPM_Min;
+ }
+ }
+ else if (statusAtual == StatusCarroMapa.Manobrando)
+ {
+ Controle.RPM = 0;
+ CalcularManobra();
+ }
+
+ }
+
+ public void CalcularManobra()
+ {
+
+ }
+
+ public void AtualizarRuasSelecionadas()
+ {
+ List ids = new List();
+ var Topico = Variaveis.MqttService.Topicos.FirstOrDefault(x => x.Topico == MapasVariaveisModel.TopicoSelecaoRuasMapa);
+ var Mensagem = Topico.Mensagens.LastOrDefault();
+ if (Mensagem != null && !Mensagem.Mensagem.Contains("[]"))
+ {
+ Mensagem.Mensagem = Mensagem.Mensagem.Replace("\n", "");
+ Mensagem.Mensagem = Mensagem.Mensagem.Replace("\"", "");
+ ids = JsonConvert.DeserializeObject(Mensagem.Mensagem).Select(x => x.ToString()).ToList();
+ }
+ if (ids.Count != Variaveis.OperacaoEmAndamento.Mapa.RuasPercorrer.Count)
+ {
+ Variaveis.OperacaoEmAndamento.Mapa.RuasPercorrer = ids;
+ Variaveis.OperacaoEmAndamento.Mapa.PopularTrajetoria();
+ }
+ }
+
+
+
+ }
+
+ public class OperacaoRefRuaGPS
+ {
+ public bool ManobraConcluida { get; set; } = false;
+ private StatusCarroMapa _EtapaAtual;
+ public StatusCarroMapa StatusAtual
+ {
+ get
+ {
+ StatusCarroMapa etapaAtual = _EtapaAtual;
+
+ // Se o status da operação não estiver Em Andamento
+ if (Variaveis.OperacaoEmAndamento.StatusAtual != StatusOperacao.EmAndamento)
+ {
+ etapaAtual = StatusCarroMapa.Parado;
+ }
+ else
+ {
+ // Robô está manobrando para seguir a próxima rota do mapa
+ if (_EtapaAtual == StatusCarroMapa.Manobrando)
+ {
+ // Aguarda a mudança de rua até que o robô tenha terminado a manobra e tenha ficado parado em frente à rua
+ if (ManobraConcluida && Direcao == DirecaoCarroRua.Parado)
+ {
+ Variaveis.OperacaoEmAndamento.Mapa.IdxRuaAtual++;
+ ManobraConcluida = false;
+ etapaAtual = StatusCarroMapa.EntrandoRua;
+ GPSService.AtualizaLeituraSimulacao();
+ Task.Delay(500);
+ }
+ }
+ // Se o robô não estiver dentro da entrelinha de cana
+ else if (!DentroDaRua)
+ {
+ // Está próximo o bastante e alinhado para entrar na rua
+ if (NaMargemEntradaRua)
+ {
+ // Está mais próximo do ponto inicial da rota, e a direção do carro é IDA ou então PARADO, logo está entrando na rua, do começo para o final
+ if (ExtremoMaisProximo == 0 && (Direcao == DirecaoCarroRua.Ida || Direcao == DirecaoCarroRua.Parado) && etapaAtual != StatusCarroMapa.SaindoRua)
+ {
+ etapaAtual = StatusCarroMapa.EntrandoRua;
+ }
+ // Está mais próximo do ponto final da rota, e a direção do carro é VOLTA ou então PARADO, logo está entrando na rua, do final para o começo
+ else if (ExtremoMaisProximo == 1 && (Direcao == DirecaoCarroRua.Volta || Direcao == DirecaoCarroRua.Parado) && etapaAtual != StatusCarroMapa.SaindoRua)
+ {
+ etapaAtual = StatusCarroMapa.EntrandoRua;
+ }
+ // Robô não está entrando na rua do começo para o fim, nem do fim para o começo
+ else
+ {
+ // Se a etapa anterior era CaminhandoRua, ou seja, robô estava na rua e agora não está mais, então esta saindo da rua
+ if (_EtapaAtual == StatusCarroMapa.CaminhandoRua)
+ {
+ etapaAtual = StatusCarroMapa.SaindoRua;
+ }
+ // Se a etapa anterior não for CaminhandoRua, então significa que ele já iniciou a etapa de sair da rua
+ else
+ {
+ // Ainda tem ruas a serem percorridas, logo, o robô precisa realizar a manobra para seguir para a próxima rua
+ if (!Variaveis.OperacaoEmAndamento.OpMapaGPS.Concluido)
+ {
+ etapaAtual = StatusCarroMapa.Manobrando;
+ }
+ }
+ }
+ }
+ // Estará se direcionando para o ponto inicial
+ else
+ {
+ etapaAtual = StatusCarroMapa.Direcionando;
+ }
+ }
+ // Se o robô estiver dentro da entrelinha da cana
+ else if (DentroDaRua)
+ {
+ etapaAtual = StatusCarroMapa.CaminhandoRua;
+ }
+ }
+
+
+ _EtapaAtual = etapaAtual;
+
+ _EtapaAtual = StatusCarroMapa.Direcionando;
+
+ return _EtapaAtual;
+ }
+ }
+ /*public StatusOperacaoMapaGPS StatusAtual
+ {
+ get
+ {
+ StatusOperacaoMapaGPS etapaAtual = _EtapaAtual;
+
+ // Se a operação não estiver iniciada
+ if (!Variaveis.OperacaoEmAndamento.Iniciado)
+ {
+ // Etapa atual não é Finalizado, então a etapa é Parametrizando
+ if (_EtapaAtual != StatusOperacaoMapaGPS.Concluida)
+ {
+ etapaAtual = StatusOperacaoMapaGPS.Parametrizando;
+ }
+ }
+ // Operação em andamento
+ else
+ {
+ // Se a operação tiver algum item mandatório interrompido
+ if (!Variaveis.OperacaoEmAndamento.OperacaoLiberada)
+ {
+ // Da primeira vez, salva a etapa atual anterior à parada para possível retomada
+ if (etapaAtual != StatusOperacaoMapaGPS.Parado)
+ {
+ _EtapaAnteriorParada = etapaAtual;
+ }
+ etapaAtual = StatusOperacaoMapaGPS.Parado;
+ }
+ // Se a etapa atual for parado, mas a operação foi liberada, retoma de onde parou
+ else if (etapaAtual == StatusOperacaoMapaGPS.Parado && Variaveis.OperacaoEmAndamento.OperacaoLiberada)
+ {
+ Variaveis.OperacaoEmAndamento.TempoAguardando = DateTime.Now;
+ etapaAtual = StatusOperacaoMapaGPS.Aguardando;
+ }
+ // Etapa atual é finalizada, então finaliza a operação
+ else if (_EtapaAtual == StatusOperacaoMapaGPS.Concluida)
+ {
+ Variaveis.OperacaoEmAndamento.FinalizarOperacao();
+ }
+ // Contagem regressiva para iniciar a operação
+ else if (Variaveis.OperacaoEmAndamento.TempoAguardando.AddSeconds(Variaveis.OperacaoEmAndamento.TempoIniciarOperacao) > DateTime.Now)
+ {
+ etapaAtual = StatusOperacaoMapaGPS.Aguardando;
+ }
+ else if (_EtapaAnteriorParada != StatusOperacaoMapaGPS.Parado)
+ {
+ etapaAtual = _EtapaAnteriorParada;
+ _EtapaAnteriorParada = StatusOperacaoMapaGPS.Parado;
+ }
+ // Robô está manobrando para seguir a próxima rota do mapa
+ else if (_EtapaAtual == StatusOperacaoMapaGPS.Manobrando)
+ {
+ // Aguarda a mudança de rua até que o robô tenha terminado a manobra e tenha ficado parado em frente à rua
+ if (ManobraConcluida && Direcao == DirecaoCarroRua.Parado)
+ {
+ Variaveis.OperacaoEmAndamento.Mapa.IdxRuaAtual++;
+ ManobraConcluida = false;
+ etapaAtual = StatusOperacaoMapaGPS.EntrandoRua;
+ GPSService.AtualizaLeituraSimulacao();
+ Task.Delay(500);
+ }
+ }
+ // Se o robô não estiver dentro da entrelinha de cana
+ else if (!DentroDaRua)
+ {
+ // Está mais próximo do ponto inicial da rota, e a direção do carro é IDA ou então PARADO, logo está entrando na rua, do começo para o final
+ if (ExtremoMaisProximo == 0 && (Direcao == DirecaoCarroRua.Ida || Direcao == DirecaoCarroRua.Parado) && etapaAtual != StatusOperacaoMapaGPS.SaindoRua)
+ {
+ etapaAtual = StatusOperacaoMapaGPS.EntrandoRua;
+ }
+ // Está mais próximo do ponto final da rota, e a direção do carro é VOLTA ou então PARADO, logo está entrando na rua, do final para o começo
+ else if (ExtremoMaisProximo == 1 && (Direcao == DirecaoCarroRua.Volta || Direcao == DirecaoCarroRua.Parado) && etapaAtual != StatusOperacaoMapaGPS.SaindoRua)
+ {
+ etapaAtual = StatusOperacaoMapaGPS.EntrandoRua;
+ }
+ // Robô não está entrando na rua do começo para o fim, nem do fim para o começo
+ else
+ {
+ // Se a etapa anterior era CaminhandoRua, ou seja, robô estava na rua e agora não está mais, então esta saindo da rua
+ if (_EtapaAtual == StatusOperacaoMapaGPS.CaminhandoRua)
+ {
+ etapaAtual = StatusOperacaoMapaGPS.SaindoRua;
+ }
+ // Se a etapa anterior não for CaminhandoRua, então significa que ele já iniciou a etapa de sair da rua
+ else
+ {
+ // O índice de rua para realizar o trabalho já ultrapassou a quantidade de ruas definidas pelo operador, então a operação foi concluída
+ if (Variaveis.OperacaoEmAndamento.Mapa.IdxRuaAtual >= Variaveis.OperacaoEmAndamento.Mapa.Trajetoria.Count - 1)
+ {
+ etapaAtual = StatusOperacaoMapaGPS.Concluida;
+ }
+ // Ainda tem ruas a serem percorridas, logo, o robô precisa realizar a manobra para seguir para a próxima rua
+ else
+ {
+ etapaAtual = StatusOperacaoMapaGPS.Manobrando;
+ }
+ }
+ }
+ }
+ // Se o robô estiver dentro da entrelinha da cana
+ else if (DentroDaRua)
+ {
+ etapaAtual = StatusOperacaoMapaGPS.CaminhandoRua;
+ }
+ }
+
+
+ _EtapaAtual = etapaAtual;
+
+ return etapaAtual;
+ }
+ }*/
+ public int PontosConsiderarAngulo { get; set; } = 2;
+ public double Distancia { get; set; } = 0;
+ public double AnguloCarro
+ {
+ get
+ {
+ if (Variaveis.OperacaoEmAndamento.DispSen._Porta.IsOpen && Variaveis.OperacaoEmAndamento.DispSen.Dados.Sensores.Any(x => x.Componente == S_Code.sMAG && x.Inicializado))
+ {
+ return Variaveis.OperacaoEmAndamento.Sensoriamento.AnguloCarroBussola;
+ }
+ else
+ {
+ return AnguloCarroGPS;
+ }
+ }
+ }
+ public double AnguloCarroGPS
+ {
+ get
+ {
+ try
+ {
+ double somaAngulo = 0;
+ var Pontos = !Variaveis.OperacaoEmAndamento.GPSTrajetoriaRua.Any() || Variaveis.OperacaoEmAndamento.Mapa.IdxRuaAtual >= Variaveis.OperacaoEmAndamento.GPSTrajetoriaRua.Count() ? new List() :
+ Variaveis.OperacaoEmAndamento.GPSTrajetoriaRua[Variaveis.OperacaoEmAndamento.Mapa.IdxRuaAtual].Count > PontosConsiderarAngulo ?
+ Variaveis.OperacaoEmAndamento.GPSTrajetoriaRua[Variaveis.OperacaoEmAndamento.Mapa.IdxRuaAtual].OrderByDescending(x => x.DataHora).Take(PontosConsiderarAngulo).ToList() :
+ Variaveis.OperacaoEmAndamento.GPSTrajetoriaRua[Variaveis.OperacaoEmAndamento.Mapa.IdxRuaAtual].OrderByDescending(x => x.DataHora).ToList();
+ Pontos = Pontos.OrderBy(x => x.DataHora).ToList();
+ for (int i = 0; i < Pontos.Count - 1; i++)
+ {
+ somaAngulo += GPSService.CalcularOrientacao(Pontos[i + 1], Pontos[i]);
+ }
+ double mediaAngulo = somaAngulo / (Pontos.Count - 1);
+
+ return (!(mediaAngulo >= 0 || mediaAngulo <= 0)) ? 0 : mediaAngulo;
+ }
+ catch
+ {
+ return 0;
+ }
+ }
+ }
+ public double AnguloCaminho
+ {
+ get
+ {
+ try
+ {
+ if (_EtapaAtual == StatusCarroMapa.Direcionando)
+ {
+ /*GPSModel PontoRua = ExtremoMaisProximo == 0 ? PrimeiroPontoRua : UltimoPontoRua;
+ double anguloCaminho = GPSService.CalcularOrientacao(GPSService.UltimaLeitura, PontoRua);
+ return anguloCaminho;*/
+ double somaAnguloRua = 0;
+ var Rua = Variaveis.OperacaoEmAndamento.Mapa.TrajetoriaDinamica;
+
+
+ var PontosRua = PontosConsiderarAngulo < Rua.Count ?
+ Rua.Take(PontosConsiderarAngulo).ToList() :
+ Rua.Skip(PontosConsiderarAngulo).ToList();
+
+ for (int i = 0; i < PontosRua.Count - 1; i++)
+ {
+ somaAnguloRua += GPSService.CalcularOrientacao(PontosRua[i + 1], PontosRua[i]);
+ }
+ double mediaAnguloRua = somaAnguloRua / (PontosRua.Count - 1);
+
+ return (!(mediaAnguloRua >= 0 || mediaAnguloRua <= 0)) ? 0 : mediaAnguloRua;
+ }
+ else
+ {
+ double somaAnguloRua = 0;
+ var Rua = Variaveis.OperacaoEmAndamento.Mapa.Trajetoria.Skip(Variaveis.OperacaoEmAndamento.Mapa.IdxRuaAtual).First();
+
+
+ var PontosRua = IdxPontoAproximadoRua + PontosConsiderarAngulo < Rua.Count ?
+ Rua.Skip(IdxPontoAproximadoRua).Take(PontosConsiderarAngulo).ToList() :
+ Rua.Skip(IdxPontoAproximadoRua - PontosConsiderarAngulo).ToList();
+
+ /*var Pontos = Rua.Count > PontosConsiderarAngulo ?
+ Rua.OrderByDescending(x => x.DataHora).Take(PontosConsiderarAngulo).ToList() :
+ Rua.OrderByDescending(x => x.DataHora).ToList();*/
+
+
+ for (int i = 0; i < PontosRua.Count - 1; i++)
+ {
+ somaAnguloRua += GPSService.CalcularOrientacao(PontosRua[i + 1], PontosRua[i]);
+ }
+ double mediaAnguloRua = somaAnguloRua / (PontosRua.Count - 1);
+
+ return (!(mediaAnguloRua >= 0 || mediaAnguloRua <= 0)) ? 0 : mediaAnguloRua;
+ }
+ }
+ catch
+ {
+ return 0;
+ }
+ }
+ }
+ public double MargemErroAngulo { get; set; } = 45;
+ public DirecaoCarroRua Direcao
+ {
+ get
+ {
+
+ if (GPSService.UltimaLeitura.Latitude == GPSService.PenultimaLeitura.Latitude && GPSService.UltimaLeitura.Longitude == GPSService.PenultimaLeitura.Longitude && GPSService.UltimaLeitura.DataHora > GPSService.PenultimaLeitura.DataHora)
+ {
+ return DirecaoCarroRua.Parado;
+ }
+ double mediaAngulo = AnguloCarro;
+ double anguloOposto = (mediaAngulo + 180) % 360;
+ double mediaAnguloRua = AnguloCaminho;
+
+ if ((mediaAngulo + MargemErroAngulo) >= mediaAnguloRua && (mediaAngulo - MargemErroAngulo) <= mediaAnguloRua)
+ {
+ return DirecaoCarroRua.Ida;
+ }
+ else if ((anguloOposto + MargemErroAngulo) >= mediaAnguloRua && (anguloOposto - MargemErroAngulo) <= mediaAnguloRua)
+ {
+ return DirecaoCarroRua.Volta;
+ }
+ else
+ {
+ return DirecaoCarroRua.Parado;
+ }
+ }
+ }
+ public GPSModel PrimeiroPontoRua
+ {
+ get
+ {
+ try
+ {
+ var primeiroPontoRua = Variaveis.OperacaoEmAndamento.Mapa.Trajetoria.Skip(Variaveis.OperacaoEmAndamento.Mapa.IdxRuaAtual).First().First();
+ return primeiroPontoRua;
+ }
+ catch
+ {
+ return new GPSModel();
+ }
+
+ }
+ }
+ public GPSModel UltimoPontoRua
+ {
+ get
+ {
+ try
+ {
+ var ultimoPontoRua = Variaveis.OperacaoEmAndamento.Mapa.Trajetoria.Skip(Variaveis.OperacaoEmAndamento.Mapa.IdxRuaAtual).First().Last();
+ return ultimoPontoRua;
+ }
+ catch
+ {
+ return new GPSModel();
+ }
+ }
+ }
+ public bool DentroDaRua
+ {
+ get
+ {
+ if (Variaveis.OperacaoEmAndamento.Mapa.RuasPercorrer.Count() > Variaveis.OperacaoEmAndamento.Mapa.IdxRuaAtual)
+ {
+ try
+ {
+ string IDruaAtual = Variaveis.OperacaoEmAndamento.Mapa.RuasPercorrer[Variaveis.OperacaoEmAndamento.Mapa.IdxRuaAtual];
+ var Rua = Variaveis.OperacaoEmAndamento.Mapa.mapaService.DadosMapa.features.Where(x => x.geometry.id == IDruaAtual).FirstOrDefault();
+ if (Rua != null)
+ {
+ bool dentro = false;
+ List Trecho = new List();
+ var PontosRua = Variaveis.OperacaoEmAndamento.Mapa.Trajetoria[Variaveis.OperacaoEmAndamento.Mapa.IdxRuaAtual].ToList();
+ int idx = Variaveis.OperacaoEmAndamento.OpMapaGPS.ReferencialRuaGPS.IdxPontoAproximadoRua;
+ if (Variaveis.OperacaoEmAndamento.Mapa.IdxRuaAtual % 2 != 0)
+ {
+ PontosRua.Reverse();
+ idx = idx != (PontosRua.Count - 1) ? (PontosRua.Count - 1) - idx : idx;
+ }
+ for (int i = 0; i <= idx; i++)
+ {
+ Trecho.Add(PontosRua[i]);
+ }
+ double distTrecho = GPSService.DistanciaDoTrecho(Trecho);
+ dentro = distTrecho > 0 && distTrecho < Rua.properties.Length;
+
+ return dentro;
+ }
+ else
+ {
+ return false;
+ }
+ }
+ catch
+ {
+ return false;
+ }
+ }
+ else
+ {
+ return false;
+ }
+ }
+ }
+ public int ExtremoMaisProximo
+ {
+ get
+ {
+ double distPP = GPSService.DistanciaEntrePontos(GPSService.UltimaLeitura, PrimeiroPontoRua);
+ double distUP = GPSService.DistanciaEntrePontos(GPSService.UltimaLeitura, UltimoPontoRua);
+
+ // 0 para mais próximo do primeiro ponto da rua (ENTRANDO)
+ // 1 para mais próximo do último ponto da rua (SAINDO)
+ return (distPP < distUP) ? 0 : 1;
+ }
+ }
+ private DateTime UltimaLeituraDistancia;
+ private int idxPontoAproximadoRua = 0;
+ public int IdxPontoAproximadoRua
+ {
+ get
+ {
+ try
+ {
+ if (UltimaLeituraDistancia == null)
+ {
+ UltimaLeituraDistancia = DateTime.Now.Add(new TimeSpan(0, 0, -10));
+ }
+ else if (UltimaLeituraDistancia.Add(new TimeSpan(0, 0, 5)) < DateTime.Now)
+ {
+ int idx = -1;
+ double menorDistancia = 9999;
+ double distanciaAnterior = 9999;
+
+ var Rua = Variaveis.OperacaoEmAndamento.Mapa.Trajetoria[Variaveis.OperacaoEmAndamento.Mapa.IdxRuaAtual];
+
+ foreach (var Ponto in Rua)
+ {
+ double dist = GPSService.DistanciaEntrePontos(GPSService.UltimaLeitura, Ponto);
+ if (dist < menorDistancia)
+ {
+ menorDistancia = dist;
+ idx = Rua.IndexOf(Ponto);
+ }
+ else if (dist > distanciaAnterior)
+ {
+ break;
+ }
+ distanciaAnterior = dist;
+ }
+ idxPontoAproximadoRua = idx;
+
+ UltimaLeituraDistancia = DateTime.Now;
+ }
+ }
+ catch
+ {
+
+ }
+
+
+ return idxPontoAproximadoRua;
+ }
+ }
+ public double MargemLimiteEntradaRua { get; } = 2.0;
+ public bool NaMargemEntradaRua
+ {
+ get
+ {
+ bool NaMargem = false;
+ GPSModel PontoRua = ExtremoMaisProximo == 0 ? PrimeiroPontoRua : UltimoPontoRua;
+ double Distancia = GPSService.DistanciaEntrePontos(GPSService.UltimaLeitura, PontoRua);
+
+ if (Distancia <= MargemLimiteEntradaRua)
+ {
+ NaMargem = true;
+ }
+
+ return NaMargem;
+ }
+ }
+
+ }
+
+ public class OperacaoMapaGPSSensoriamentoModel
+ {
+ public DateTime Momento { get; set; }
+ public int ErvasNoRadar { get; set; } = 0;
+ public double HerbicidaConsumido { get; set; } = 0;
+ public double HerbicidaPorErva { get; set; } = 0;
+ public int ErvasIdentificadas
+ {
+ get
+ {
+ return AtuacoesPorBico.Sum();
+ }
+ }
+ public List AtuacoesPorBico { get; set; } = new List();
+ public double ProgressoTrajeto { get; set; } = 0;
+ public double ProgressoRua { get; set; } = 0;
+ public StatusCarroMapa Status { get; set; } = StatusCarroMapa.Parado;
+ public double AnguloCarro { get; set; } = 0;
+ public double AnguloRua { get; set; } = 0;
+ public double AnguloRuaCamera { get; set; } = 0;
+ public double AnguloDif { get; set; } = 0;
+ public DirecaoCarroRua Direcao { get; set; } = DirecaoCarroRua.Parado;
+ public bool DentroDaRua { get; set; } = false;
+ public int IdxPontoAproximadoRua { get; set; } = 0;
+ public int IdxRuaAtual { get; set; } = 0;
+ }
+
+}
diff --git a/AgroBase/AgroBase/Models/Operacoes/OperacaoModel.cs b/AgroBase/AgroBase/Models/Operacoes/OperacaoModel.cs
index ff6b3687d..0bad935f1 100644
--- a/AgroBase/AgroBase/Models/Operacoes/OperacaoModel.cs
+++ b/AgroBase/AgroBase/Models/Operacoes/OperacaoModel.cs
@@ -2,6 +2,7 @@
using AgroBase.Forms;
using AgroBase.Forms.Operacoes;
using AgroBase.Models.Modules;
+using AgroBase.Models.Operacoes;
using AgroBase.Services;
using CefSharp.DevTools.Network;
using Emgu.CV.CvEnum;
@@ -14,6 +15,7 @@ using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
using static AgroBase.Models.Enuns;
+using static AgroBase.Models.Operacoes.OperacaoMapaGPSModel;
namespace AgroBase.Models
{
@@ -21,72 +23,148 @@ namespace AgroBase.Models
{
public OperacaoModel(ModoOperacao Modo, DispositivosService Mov = null, DispositivosService Dir = null, DispositivosService Atu = null)
{
- /*if (APIService.pythonProcess == null)
- {
- APIService.Inicializar();
- }*/
-
this.Modo = Modo;
- this.Controle = new OperacaoControleModel()
- {
- PIDdirecional = new PIDModel(),
- TiposControle = new List()
- {
- new OperacaoControleTipoModel()
- {
- Tipo = T_Code.Mov,
- DelayEnvioComando = 500,
- Comandos = new List(),
- UltimoComando = DateTime.Now
- },
- new OperacaoControleTipoModel()
- {
- Tipo = T_Code.Dir,
- DelayEnvioComando = 1000,
- Comandos = new List(),
- UltimoComando = DateTime.Now
- },
- new OperacaoControleTipoModel()
- {
- Tipo = T_Code.Atu,
- DelayEnvioComando = 100,
- Comandos = new List(),
- UltimoComando = DateTime.Now
- },
- },
- };
- this.ControleAnterior = new OperacaoControleModel();
-
+
this.DispMov = Mov;
this.DispDir = Dir;
this.DispAtu = Atu;
- this.Sensoriamento.AtuacoesPorBico = new List();
- if (DispAtu != null)
+ if (Modo == ModoOperacao.MapaGPS)
{
- for (int i = 0; i < DispAtu.Dados.QuantidadeBicos; i++)
+ this.OpMapaGPS.Controle = new OperacaoControleModel()
{
- this.Sensoriamento.AtuacoesPorBico.Add(0);
+ PIDdirecional = new PIDModel(),
+ TiposControle = new List()
+ {
+ new OperacaoControleTipoModel()
+ {
+ Tipo = T_Code.Mov,
+ DelayEnvioComando = 500,
+ Comandos = new List(),
+ UltimoComando = DateTime.Now
+ },
+ new OperacaoControleTipoModel()
+ {
+ Tipo = T_Code.Dir,
+ DelayEnvioComando = 1000,
+ Comandos = new List(),
+ UltimoComando = DateTime.Now
+ },
+ new OperacaoControleTipoModel()
+ {
+ Tipo = T_Code.Atu,
+ DelayEnvioComando = 100,
+ Comandos = new List(),
+ UltimoComando = DateTime.Now
+ },
+ },
+ };
+ this.OpMapaGPS.ControleAnterior = new OperacaoControleModel();
+
+ this.OpMapaGPS.Sensoriamento.AtuacoesPorBico = new List();
+ if (DispAtu != null)
+ {
+ for (int i = 0; i < DispAtu.Dados.QuantidadeBicos; i++)
+ {
+ this.OpMapaGPS.Sensoriamento.AtuacoesPorBico.Add(0);
+ }
}
}
- this.tmrLogs.Tick -= TmrLogs_Tick;
- this.tmrLogs.Tick += TmrLogs_Tick;
- this.tmrLogs.Start();
- /*this.tmrParametrizacao.Tick -= TmrParametrizacao_Tick;
- this.tmrParametrizacao.Tick += TmrParametrizacao_Tick;
- this.tmrParametrizacao.Start();*/
+
+ if (!this.tmrLogs.Enabled)
+ {
+ this.tmrLogs.Tick -= TmrLogs_Tick;
+ this.tmrLogs.Tick += TmrLogs_Tick;
+ this.tmrLogs.Start();
+ }
}
public ModoOperacao Modo { get; set; }
+ public OperacaoMapaGPSModel OpMapaGPS { get; set; } = new OperacaoMapaGPSModel();
+ public OperacaoManualModel OpManual { get; set; } = new OperacaoManualModel();
public DispositivosService DispSen { get; set; }
public DispositivosService DispMov { get; set; }
public DispositivosService DispDir { get; set; }
public DispositivosService DispAtu { get; set; }
public MapasModel Mapa { get; set; } = new MapasModel();
+ public OperacaoSensoriamentoModel Sensoriamento { get; set; }
public Form frmOperacao { get; set; }
+ private StatusOperacao _EtapaAtual;
+ private StatusOperacao _EtapaAnteriorParada = StatusOperacao.Parado;
+ public StatusOperacao StatusAtual
+ {
+ get
+ {
+ StatusOperacao etapaAtual = _EtapaAtual;
+
+ // Se a operação não estiver iniciada
+ if (!Variaveis.OperacaoEmAndamento.Iniciado)
+ {
+ // Etapa atual não é Finalizado, então a etapa é Parametrizando
+ if (_EtapaAtual != StatusOperacao.Concluido)
+ {
+ etapaAtual = StatusOperacao.Parametrizando;
+ }
+ }
+ // Operação em andamento
+ else
+ {
+ // Se o trajeto foi finalizado
+ if (Variaveis.OperacaoEmAndamento.OpMapaGPS.Concluido)
+ {
+ etapaAtual = StatusOperacao.Concluido;
+ }
+ // Se a operação tiver algum item mandatório interrompido
+ else if (!Variaveis.OperacaoEmAndamento.OperacaoLiberada)
+ {
+ // Da primeira vez, salva a etapa atual anterior à parada para possível retomada
+ if (etapaAtual != StatusOperacao.Parado)
+ {
+ _EtapaAnteriorParada = etapaAtual;
+ }
+ etapaAtual = StatusOperacao.Parado;
+ }
+ // Se a etapa atual for parado, mas a operação foi liberada, retoma de onde parou
+ else if (etapaAtual == StatusOperacao.Parado && Variaveis.OperacaoEmAndamento.OperacaoLiberada)
+ {
+ Variaveis.OperacaoEmAndamento.TempoAguardando = DateTime.Now;
+ etapaAtual = StatusOperacao.Aguardando;
+ }
+ // Etapa atual é finalizada, então finaliza a operação
+ else if (_EtapaAtual == StatusOperacao.Concluido)
+ {
+ if (Variaveis.OperacaoEmAndamento.Iniciado)
+ {
+ Variaveis.OperacaoEmAndamento.FinalizarOperacao();
+ }
+ }
+ // Contagem regressiva para iniciar a operação
+ else if (Variaveis.OperacaoEmAndamento.TempoAguardando.AddSeconds(Variaveis.OperacaoEmAndamento.TempoIniciarOperacao) > DateTime.Now)
+ {
+ etapaAtual = StatusOperacao.Aguardando;
+ }
+ else if (_EtapaAnteriorParada != StatusOperacao.Parado)
+ {
+ etapaAtual = _EtapaAnteriorParada;
+ _EtapaAnteriorParada = StatusOperacao.Parado;
+ }
+ else
+ {
+ etapaAtual = StatusOperacao.EmAndamento;
+ }
+ }
+
+
+ _EtapaAtual = etapaAtual;
+
+ _EtapaAtual = StatusOperacao.EmAndamento;
+
+ return _EtapaAtual;
+ }
+ }
public bool ModulosConectados
{
get
@@ -139,7 +217,6 @@ namespace AgroBase.Models
return MensagemErro;
}
}
- public string frmOperacaoNome { get; set; }
public bool Iniciado { get; set; }
public long TimestampInicio { get; set; }
public long TimestampFim { get; set; }
@@ -151,23 +228,18 @@ namespace AgroBase.Models
}
}
public DateTime TempoAguardando { get; set; }
- public OperacaoControleModel Controle { get; set; } = new OperacaoControleModel();
- public OperacaoControleModel ControleAnterior { get; set; } = new OperacaoControleModel();
+
public List ModulosMandatorios { get; set; } = new List();
public List ParametrosMandatorios { get; set; } = new List();
- public OperacaoSensoriamentoModel Sensoriamento { get; set; } = new OperacaoSensoriamentoModel();
public List Logs { get; set; } = new List();
public List GPSTrajetoria { get; set; } = new List();
public List> GPSTrajetoriaRua { get; set; } = new List>();
- public OperacaoRefRuaGPS ReferencialRuaGPS { get; set; } = new OperacaoRefRuaGPS();
public int QuantidadeCamerasSolo { get; set; } = 2;
public List CamerasSolo { get; set; } = new List();
public CameraCaminhoModel CameraCaminho { get; set; }
- public int TempoIniciarOperacao { get; set; } = 10;
- public string PastaSaida { get; } = "Operacoes/";
+ public int TempoIniciarOperacao { get; set; } = 25;
public string ID { get; set; }
public Timer tmrLogs = new Timer() { Interval = 5000 };
- public List StatusOperacoesPararCarro { get; set; } = new List() { StatusOperacao.Parametrizando, StatusOperacao.Aguardando, StatusOperacao.Parado, StatusOperacao.Concluida };
public static OperacaoModel CarregarParametrosOperacaoPadrao(ModoOperacao Modo)
@@ -179,8 +251,6 @@ namespace AgroBase.Models
OperacaoModel OperacaoCarregar = new OperacaoModel(Modo)
{
- Controle = new OperacaoControleModel(),
- ControleAnterior = new OperacaoControleModel(),
Iniciado = false,
TimestampInicio = 0,
TimestampFim = 0,
@@ -188,22 +258,16 @@ namespace AgroBase.Models
DispDir = DirConectado,
DispMov = MovConectado,
DispSen = SenConectado,
- Sensoriamento = new OperacaoSensoriamentoModel(),
Logs = new List(),
+ Sensoriamento = new OperacaoSensoriamentoModel(),
};
- if (OperacaoCarregar.DispAtu != null)
- {
- for (int i = 0; i < OperacaoCarregar.DispAtu.Dados.QuantidadeBicos; i++)
- {
- OperacaoCarregar.Sensoriamento.AtuacoesPorBico.Add(0);
- }
- }
+
switch (Modo)
{
case ModoOperacao.Manual:
- OperacaoCarregar.frmOperacao = new frmOperacaoManual();
- OperacaoCarregar.Controle = new OperacaoControleModel()
+ OperacaoCarregar.frmOperacao = (Form)Activator.CreateInstance(Variaveis.OperacaoEmAndamento.OpManual.frmOperacao.GetType());
+ OperacaoCarregar.OpManual.Controle = new OperacaoControleModel()
{
TiposControle = new List()
{
@@ -244,10 +308,13 @@ namespace AgroBase.Models
Mandatorio = false,
}
};
+ OperacaoCarregar.Sensoriamento.SonarFrontal = new SonarModel(FuncoesGlobais.FindControlRecursive(OperacaoCarregar.frmOperacao, "picSonar"));
break;
case ModoOperacao.MapaGPS:
- OperacaoCarregar.frmOperacao = new frmOperacaoMapaGPS();
- OperacaoCarregar.Controle = new OperacaoControleModel()
+ OperacaoCarregar.frmOperacao = (Form)Activator.CreateInstance(Variaveis.OperacaoEmAndamento.OpMapaGPS.frmOperacao.GetType());
+ OperacaoCarregar.Logs = new List();
+ OperacaoCarregar.OpMapaGPS.ControleAnterior = new OperacaoControleModel();
+ OperacaoCarregar.OpMapaGPS.Controle = new OperacaoControleModel()
{
RPM_Max = 45,
RPM_Min = 15,
@@ -325,20 +392,20 @@ namespace AgroBase.Models
Mandatorio = true,
}
};
+ OperacaoCarregar.OpMapaGPS.Sensoriamento = new OperacaoMapaGPSSensoriamentoModel();
+ if (OperacaoCarregar.DispAtu != null)
+ {
+ for (int i = 0; i < OperacaoCarregar.DispAtu.Dados.QuantidadeBicos; i++)
+ {
+ OperacaoCarregar.OpMapaGPS.Sensoriamento.AtuacoesPorBico.Add(0);
+ }
+ }
break;
}
- if (OperacaoCarregar.DispAtu != null)
- {
- for (int i = 0; i < OperacaoCarregar.DispAtu.Dados.QuantidadeBicos; i++)
- {
- OperacaoCarregar.Sensoriamento.AtuacoesPorBico.Add(0);
- }
- }
-
if (OperacaoCarregar.DispSen != null && OperacaoCarregar.DispSen.Dados.Conectado)
{
- OperacaoCarregar.DispSen.Dados.Sinaleiros.ForEach(x => x.Comportamento = Variaveis.ComportamentoPorStatus(StatusOperacao.Concluida));
+ OperacaoCarregar.DispSen.Dados.Sinaleiros.ForEach(x => x.Comportamento = Variaveis.ComportamentoPorStatus(StatusOperacao.Concluido));
SensorSinaleiroModel Sinaleiro = OperacaoCarregar.DispSen.Dados.Sinaleiros.First(x => x.ID == (Modo == ModoOperacao.Manual ? "LEDMN" : "LEDAT"));
Sinaleiro.Comportamento.statusLED = StatusLED.Aceso;
@@ -352,14 +419,18 @@ namespace AgroBase.Models
public static void SalvarOperacaoPersonalizada(OperacaoModel Operacao)
{
- Operacao.frmOperacaoNome = Operacao.frmOperacao.Name;
- Form frm = Operacao.frmOperacao;
+ if (Variaveis.OperacaoEmAndamento.Modo == ModoOperacao.MapaGPS)
+ {
+ Operacao.OpMapaGPS.frmOperacaoNome = Operacao.OpMapaGPS.frmOperacao.Name;
+ Form frm = Operacao.OpMapaGPS.frmOperacao;
- Operacao.frmOperacao = null;
+ Operacao.OpMapaGPS.frmOperacao = null;
- //File.WriteAllText("operacao" + Enum.GetName(typeof(ModoOperacao), Operacao.Modo) + ".opr", JsonConvert.SerializeObject(Operacao));
+ //File.WriteAllText("operacao" + Enum.GetName(typeof(ModoOperacao), Operacao.Modo) + ".opr", JsonConvert.SerializeObject(Operacao));
- Operacao.frmOperacao = frm;
+ Operacao.OpMapaGPS.frmOperacao = frm;
+ }
+
}
public static OperacaoModel CarregarOperacaoPersonalizada(string nomeArquivo)
@@ -378,16 +449,15 @@ namespace AgroBase.Models
var operacaoText = File.ReadAllText(nomeArquivo);
Operacao = JsonConvert.DeserializeObject(operacaoText);
- Type tipoDoForm = Type.GetType(Operacao.frmOperacaoNome);
+ Type tipoDoForm = Type.GetType(Operacao.OpMapaGPS.frmOperacaoNome);
if (tipoDoForm != null)
{
- Operacao.frmOperacao = (Form)Activator.CreateInstance(tipoDoForm);
+ Operacao.OpMapaGPS.frmOperacao = (Form)Activator.CreateInstance(tipoDoForm);
}
return Operacao;
}
-
public void IniciarOperacao(OperacaoControleModel controle = null, bool DaIHM = true)
{
Iniciado = true;
@@ -398,55 +468,69 @@ namespace AgroBase.Models
if (DispMov != null)
{
DispMov.Dados.DistanciaPercorridaOperacao = 0;
+ DispMov.Dados.TempoEmAtividade = 0;
}
- Sensoriamento = new OperacaoSensoriamentoModel();
- if (DispAtu != null)
+ if (DispDir != null)
{
- for (int i = 0; i < DispAtu.Dados.QuantidadeBicos; i++)
+ DispDir.Dados.Motores.ForEach(x =>
{
- Sensoriamento.AtuacoesPorBico.Add(0);
- }
- DispAtu.Dados.VolumeVazaoML = 0;
+ x.Referenciado = false;
+ x.Referenciando = false;
+ });
}
Sensoriamento.DistanciaPercorrida = new List();
+ if (Modo == ModoOperacao.MapaGPS)
+ {
+ OpMapaGPS.Sensoriamento = new OperacaoMapaGPSSensoriamentoModel();
+ OpMapaGPS.Logs = new List();
+ if (DispAtu != null)
+ {
+ DispAtu.Dados.BombaPressurizadora.BombaAtuada = false;
+ for (int i = 0; i < DispAtu.Dados.QuantidadeBicos; i++)
+ {
+ OpMapaGPS.Sensoriamento.AtuacoesPorBico.Add(0);
+ DispAtu.Dados.BicosPulverizadores[i].Atuado = false;
+ }
+ DispAtu.Dados.VolumeVazaoML = 0;
+ }
+ OpMapaGPS.Controle.PIDdirecional = new PIDModel()
+ {
+ LimiteSaida = OpMapaGPS.Controle.Angulo_Max,
+ SetPoint = 0,
+ Kp = 1.0,
+ Ki = 0.1,
+ Kd = 0.01,
+ };
+ if (controle != null)
+ {
+ OpMapaGPS.Controle = controle;
+ }
+ }
Logs = new List();
GPSTrajetoria = new List();
ID = (new DateTime(TimestampInicio)).ToString("dd_MM_yyyy_HH_mm_ss");
- Directory.CreateDirectory(PastaSaida + ID + "/");
+ Directory.CreateDirectory(Variaveis.CaminhoOperacoes + ID + "/");
GPSService.IniciarRecepcaoDados();
//Controle = new OperacaoControleModel();
//ControleAnterior = new OperacaoControleModel();
- Controle.PIDdirecional = new PIDModel()
- {
- LimiteSaida = Controle.Angulo_Max,
- SetPoint = 0,
- Kp = 1.0,
- Ki = 0.1,
- Kd = 0.01,
- };
- if (controle != null)
- {
- Controle = controle;
- }
+
//tmrParametrizacao.Stop();
- if (DispAtu.Dados.BombaPressurizadora.Inicializado)
- {
- DispAtu.Dados.BombaPressurizadora.BombaAtuada = true;
- string Protocolo = DispAtu.Dados.BombaPressurizadora.ProtocoloComando();
- DispAtu.EnviarDadosSerial(Protocolo);
- }
+ RealizarCalibracaoInicialAsync().ConfigureAwait(false);
}
public void FinalizarOperacao()
{
- Controle.Angulo = 0;
- Controle.RPM = 0;
- AtualizarDadosControle();
+ if (Modo == ModoOperacao.MapaGPS)
+ {
+ OpMapaGPS.Controle.Angulo = 0;
+ OpMapaGPS.Controle.RPM = 0;
+ OpMapaGPS.AtualizarDadosControle();
+ }
if (DispAtu.Dados.BombaPressurizadora.Inicializado)
{
DispAtu.Dados.BombaPressurizadora.BombaAtuada = false;
@@ -467,144 +551,52 @@ namespace AgroBase.Models
AtualizarSinaleiroOperacao();
}
- public void AtualizarDadosControle()
+ public async Task RealizarCalibracaoInicialAsync()
{
- DateTime Agora = DateTime.Now;
- OperacaoControleTipoModel ControleMov = Controle.TiposControle != null ? Controle.TiposControle.FirstOrDefault(x => x.Tipo == T_Code.Mov) : null;
- OperacaoControleTipoModel ControleDir = Controle.TiposControle != null ? Controle.TiposControle.FirstOrDefault(x => x.Tipo == T_Code.Dir) : null;
- OperacaoControleTipoModel ControleAtu = Controle.TiposControle != null ? Controle.TiposControle.FirstOrDefault(x => x.Tipo == T_Code.Atu) : null;
-
- if (ControleMov != null && Controle.RPM != ControleAnterior.RPM && (Agora - ControleMov.UltimoComando).TotalMilliseconds > ControleMov.DelayEnvioComando)
+ if (DispAtu != null)
{
- // Enviar comando MOV
- var Protocolos = EnviarProtocoloComando(DispMov);
- ControleMov.UltimoComando = Agora;
- ControleMov.Comandos.AddRange(Protocolos);
-
- ControleAnterior.RPM = Controle.RPM;
- }
- if (ControleDir != null && Convert.ToInt32(Controle.Angulo) != Convert.ToInt32(ControleAnterior.Angulo) && (Agora - ControleDir.UltimoComando).TotalMilliseconds > ControleDir.DelayEnvioComando)
- {
- // Enviar comando DIR
- var Protocolos = EnviarProtocoloComando(DispDir);
- ControleDir.UltimoComando = Agora;
- ControleDir.Comandos.AddRange(Protocolos);
-
- ControleAnterior.Angulo = Controle.Angulo;
- }
- if (ControleAtu != null && !Controle.BicosAtuados.Select(x => x.Atuado).SequenceEqual(ControleAnterior.BicosAtuados.Select(x => x.Atuado)) && (Agora - ControleAtu.UltimoComando).TotalMilliseconds > ControleAtu.DelayEnvioComando)
- {
- // Enviar comando ATU
- var Protocolos = EnviarProtocoloComando(DispAtu);
- ControleAtu.UltimoComando = Agora;
- ControleAtu.Comandos.AddRange(Protocolos);
-
- ControleAnterior.BicosAtuados = new List();
- foreach (var bico in Controle.BicosAtuados)
+ // Ligar bomba
+ if (DispAtu.Dados.BombaPressurizadora.Inicializado)
{
- ControleAnterior.BicosAtuados.Add(bico.Clone());
+ DispAtu.Dados.BombaPressurizadora.BombaAtuada = true;
+ string Protocolo = DispAtu.Dados.BombaPressurizadora.ProtocoloComando();
+ DispAtu.EnviarDadosSerial(Protocolo);
}
- }
- AtualizarDadosOperacao();
- }
+ await Task.Delay(5000);
- private void AtualizarDadosOperacao()
- {
- if (DispMov == null)
- {
- return;
- }
- try
- {
- Sensoriamento.ErvasIdentificadas = Sensoriamento.AtuacoesPorBico.Sum();
- Sensoriamento.VelocidadeMedia = DispMov.Dados.Motores.Average(x => x.VelocidadeInstantanea);
- //Sensoriamento.DistanciaPercorrida = DispMov.Dados.DistanciaPercorridaOperacao;
- Sensoriamento.ProgressoTrajeto = Mapa.mapaService.pythonProcess == null ? 0 : Sensoriamento.DistanciaPercorrida.Sum() / Mapa.DistanciaTotal * 100;
- if (Sensoriamento.ProgressoTrajeto < 0 && Sensoriamento.ProgressoTrajeto >= 0)
+ // Testar os bicos
+ for (int i = 0; i < DispAtu.Dados.QuantidadeBicos; i++)
{
- Sensoriamento.ProgressoTrajeto = 0;
- }
- Sensoriamento.ProgressoRua =
- Mapa == null ? 0 :
- (ReferencialRuaGPS.Direcao == DirecaoCarroRua.Ida ? ((double)ReferencialRuaGPS.IdxPontoAproximadoRua / (double)(Mapa.Trajetoria[Mapa.IdxRuaAtual].Count - 1)) :
- ReferencialRuaGPS.Direcao == DirecaoCarroRua.Volta ? ((double)(Mapa.Trajetoria[Mapa.IdxRuaAtual].Count - 1 - ReferencialRuaGPS.IdxPontoAproximadoRua) / (double)(Mapa.Trajetoria[Mapa.IdxRuaAtual].Count - 1)) :
- 0) * 100;
- }
- catch
- {
+ var Bico = DispAtu.Dados.BicosPulverizadores[i];
+ if (Bico.Inicializado)
+ {
+ Bico.Atuado = true;
+ DispAtu.EnviarDadosSerial(Bico.ProtocoloComando());
- }
-
- }
+ await Task.Delay(1000);
- public List EnviarProtocoloComando(IDispositivosService Dispositivo)
- {
- if (Dispositivo == null)
- {
- return new List();
- }
-
- if (Dispositivo.Dispositivo == T_Code.Mov)
- {
- GeneralJoystick.RPM = Controle.RPM;
- if (Controle.RPM == 0)
- {
- Controle.Direcao = Direcao.Parado;
- }
- else
- {
- if (Controle.RPM < 0)
- {
- GeneralJoystick.RPM *= -1;
- Controle.Direcao = Direcao.Tras;
- }
- else
- {
- Controle.Direcao = Direcao.Frente;
- }
- }
- }
- else if (Dispositivo.Dispositivo == T_Code.Dir)
- {
- GeneralJoystick.Angulo = Controle.Angulo;
- if (Controle.Angulo < 0)
- {
- GeneralJoystick.Angulo *= -1;
- if (ControleAnterior.Angulo < Controle.Angulo)
- {
- Controle.Direcao = Direcao.Parado;
- }
- else
- {
- Controle.Direcao = Direcao.Baixo;
+ Bico.Atuado = false;
+ DispAtu.EnviarDadosSerial(Bico.ProtocoloComando());
}
}
- else
+
+ await Task.Delay(1000);
+ }
+
+ // Referenciar o direcional
+ if (DispDir != null)
+ {
+ foreach (var Motor in DispDir.Dados.Motores)
{
- if (ControleAnterior.Angulo > Controle.Angulo)
+ DispDir.EnviarDadosSerial(Motor.ProtocoloComando(Direcao.Parado, true));
+
+ while (Motor.Referenciando)
{
- Controle.Direcao = Direcao.Parado;
- }
- else
- {
- Controle.Direcao = Direcao.Cima;
+ await Task.Delay(500);
}
}
}
-
- var Protocolos =
- Dispositivo.Dados is MovimentacaoModel ? ((MovimentacaoModel)Dispositivo.Dados).Motores.Select(x => x.ProtocoloComando(Controle.Direcao)) :
- Dispositivo.Dados is DirecionalModel ? ((DirecionalModel)Dispositivo.Dados).Motores.Select(x => x.ProtocoloComando(Controle.Direcao)) :
- Dispositivo.Dados is AtuadorModel ? ((AtuadorModel)Dispositivo.Dados).BicosPulverizadores.Select(x => x.ProtocoloComando()) :
- null;
- foreach (var ProtocoloMotor in Protocolos)
- {
- Dispositivo.EnviarDadosSerial(ProtocoloMotor);
- Task.Delay(10);
- }
-
- return Protocolos.ToList();
}
public void SalvarLog(bool Fim)
@@ -612,43 +604,27 @@ namespace AgroBase.Models
Logs.Add(new OperacaoSensoriamentoModel()
{
Momento = DateTime.Now,
- AtuacoesPorBico = new List(Sensoriamento.AtuacoesPorBico),
BateriaConsumida = Sensoriamento.BateriaConsumida,
DistanciaDireita = Sensoriamento.DistanciaDireita,
DistanciaEsquerda = Sensoriamento.DistanciaEsquerda,
DistanciaPercorrida = new List(Sensoriamento.DistanciaPercorrida),
- ErvasIdentificadas = Sensoriamento.ErvasIdentificadas,
- ErvasNoRadar = Sensoriamento.ErvasNoRadar,
- HerbicidaConsumido = Sensoriamento.HerbicidaConsumido,
- HerbicidaPorErva = Sensoriamento.HerbicidaPorErva,
- ProgressoTrajeto = Sensoriamento.ProgressoTrajeto,
- ProgressoRua = Sensoriamento.ProgressoRua,
- VelocidadeMedia = Sensoriamento.VelocidadeMedia,
PorcentagemBateria = Sensoriamento.PorcentagemBateria,
- Status = ReferencialRuaGPS.StatusAtual,
- Direcao = ReferencialRuaGPS.Direcao,
- AnguloCarro = ReferencialRuaGPS.AnguloCarro,
- AnguloRua = ReferencialRuaGPS.AnguloRua,
- DentroDaRua = ReferencialRuaGPS.DentroDaRua,
- IdxPontoAproximadoRua = ReferencialRuaGPS.IdxPontoAproximadoRua,
- IdxRuaAtual = Mapa.IdxRuaAtual,
- AnguloDif = Sensoriamento.AnguloDif,
- AnguloRuaCamera = Sensoriamento.AnguloRuaCamera,
+ //AnguloCarro = ReferencialRuaGPS.AnguloCarro,
AnguloCarroBussola = Sensoriamento.AnguloCarroBussola
});
- if (!Directory.Exists(PastaSaida + ID))
+ if (!Directory.Exists(Variaveis.CaminhoOperacoes + ID))
{
- Directory.CreateDirectory(PastaSaida + ID);
+ Directory.CreateDirectory(Variaveis.CaminhoOperacoes + ID);
}
- if (!File.Exists(PastaSaida + ID + "/logs.json"))
+ if (!File.Exists(Variaveis.CaminhoOperacoes + ID + "/logsGerais.json"))
{
string jsonLog = JsonConvert.SerializeObject(Logs, Formatting.None);
- File.WriteAllText(PastaSaida + ID + "/logs.json", jsonLog.Substring(0, jsonLog.Length - 1));
+ File.WriteAllText(Variaveis.CaminhoOperacoes + ID + "/logsGerais.json", jsonLog.Substring(0, jsonLog.Length - 1));
}
else
{
string jsonLog = JsonConvert.SerializeObject(Logs[Logs.Count - 1], Formatting.None);
- File.AppendAllText(PastaSaida + ID + "/logs.json", "," + jsonLog + (Fim ? "]" : ""));
+ File.AppendAllText(Variaveis.CaminhoOperacoes + ID + "/logsGerais.json", "," + jsonLog + (Fim ? "]" : ""));
}
@@ -674,109 +650,9 @@ namespace AgroBase.Models
}
Sensoriamento.DistanciaPercorrida[Mapa.IdxRuaAtual] += GPSService.DistanciaEntrePontos(GPSTrajetoria[GPSTrajetoria.Count - 1], GPSTrajetoria[GPSTrajetoria.Count - 2]);
}
- File.WriteAllText(PastaSaida + ID + "/trajetoria.json", JsonConvert.SerializeObject(GPSTrajetoria, Formatting.None));
+ File.WriteAllText(Variaveis.CaminhoOperacoes + ID + "/trajetoria.json", JsonConvert.SerializeObject(GPSTrajetoria, Formatting.None));
}
-
- public void AtualizarControleAtuadores()
- {
- Controle.BicosAtuados = DispAtu.Dados.BicosPulverizadores;
- }
-
- public void CalcularAnguloInclinacao()
- {
- double erroOrientacao = 0.0;
- double anguloCarro = ReferencialRuaGPS.AnguloCarro;
- double anguloOposto = (anguloCarro + 180) % 360;
- double anguloRua = ReferencialRuaGPS.AnguloRua;
- double anguloCamera = Sensoriamento.AnguloRuaCamera;
-
- // Calcula o erro de orientação
- if ((anguloCarro + ReferencialRuaGPS.MargemErroAngulo) >= anguloRua && (anguloCarro - ReferencialRuaGPS.MargemErroAngulo) <= anguloRua)
- {
- erroOrientacao = anguloCarro - anguloRua;
- }
- else if ((anguloOposto + ReferencialRuaGPS.MargemErroAngulo) >= anguloRua && (anguloOposto - ReferencialRuaGPS.MargemErroAngulo) <= anguloRua)
- {
- erroOrientacao = anguloOposto - anguloRua;
- }
- Sensoriamento.AnguloDif = erroOrientacao;
-
- // Assume-se que o anguloCamera reflete o desvio lateral.
- // Isso pode precisar de ajuste dependendo de como o ângulo é medido.
- double erroPosicaoLateral = anguloCamera;
-
- // Combina os erros. Ajuste os pesos conforme necessário para o seu caso específico.
- double pesoOrientacao = 0.3;
- double pesoPosicaoLateral = 0.7;
- double erroCombinado = (erroOrientacao * pesoOrientacao) + (erroPosicaoLateral * pesoPosicaoLateral);
-
- var statusAtual = ReferencialRuaGPS.StatusAtual;
- // Atualiza o PID com o erro combinado
- if (!StatusOperacoesPararCarro.Contains(statusAtual) && statusAtual != StatusOperacao.Manobrando)
- {
- Controle.PIDdirecional.Atualizar(erroCombinado);
- }
- double correcaoAngulo = Controle.PIDdirecional.Saida;
-
- // Aplica a correção. Isso pode incluir limites para evitar comandos excessivos.
- Controle.Angulo = correcaoAngulo;
- }
-
- public void CalculaDadosMovimentacaoAutonoma()
- {
- CalcularAnguloInclinacao();
-
- var statusAtual = ReferencialRuaGPS.StatusAtual;
-
- if (StatusOperacoesPararCarro.Contains(statusAtual))
- {
- var BicosNaoAtuados = new List(DispAtu.Dados.BicosPulverizadores);
- BicosNaoAtuados.ForEach(x => x.Atuado = false);
- Controle.BicosAtuados = BicosNaoAtuados.ToList();
- Controle.RPM = 0;
- Controle.Angulo = 0;
- }
- else if (statusAtual == StatusOperacao.EntrandoRua)
- {
- Controle.RPM = Controle.RPM_Min;
- }
- else if (statusAtual == StatusOperacao.SaindoRua)
- {
- Controle.RPM = Controle.RPM_Min;
- }
- else if (statusAtual == StatusOperacao.CaminhandoRua)
- {
- if (Sensoriamento.ErvasNoRadar == 0)
- {
- Controle.RPM = Controle.RPM_Max;
- }
- else
- {
- Controle.RPM = Convert.ToInt32(Controle.RPM_Max * 0.85);
- }
-
- double margemAngulo = 5;
- if (Controle.Angulo > margemAngulo || Controle.Angulo < (margemAngulo * -1))
- {
- Controle.RPM = Controle.RPM_Min;
- }
- }
- else if (statusAtual == StatusOperacao.Manobrando)
- {
- Controle.RPM = 0;
- CalcularManobra();
- }
-
- }
-
- public void CalcularManobra()
- {
-
- }
-
-
-
private void TmrLogs_Tick(object sender, EventArgs e)
{
if (Iniciado)
@@ -787,24 +663,6 @@ namespace AgroBase.Models
AtualizarSinaleiroOperacao();
}
- public void AtualizarRuasSelecionadas()
- {
- List ids = new List();
- var Topico = Variaveis.MqttService.Topicos.FirstOrDefault(x => x.Topico == MapasVariaveisModel.TopicoSelecaoRuasMapa);
- var Mensagem = Topico.Mensagens.LastOrDefault();
- if (Mensagem != null && !Mensagem.Mensagem.Contains("[]"))
- {
- Mensagem.Mensagem = Mensagem.Mensagem.Replace("\n", "");
- Mensagem.Mensagem = Mensagem.Mensagem.Replace("\"", "");
- ids = JsonConvert.DeserializeObject(Mensagem.Mensagem).Select(x => x.ToString()).ToList();
- }
- if (ids.Count != Mapa.RuasPercorrer.Count)
- {
- Mapa.RuasPercorrer = ids;
- Mapa.PopularTrajetoria();
- }
- }
-
public void AtualizarSinaleiroOperacao()
{
if (DispSen != null && DispSen.Dados.Conectado)
@@ -815,6 +673,44 @@ namespace AgroBase.Models
}
}
+ public void AbrirForm()
+ {
+ if (Variaveis.OperacaoEmAndamento.OperacaoLiberada)
+ {
+ frmOperacao = (Form)Activator.CreateInstance((
+ Modo == ModoOperacao.Manual ? Variaveis.OperacaoEmAndamento.OpManual.frmOperacao :
+ Modo == ModoOperacao.MapaGPS ? Variaveis.OperacaoEmAndamento.OpMapaGPS.frmOperacao :
+ new Form()
+ ).GetType());
+ Variaveis.OperacaoEmAndamento.Sensoriamento.SonarFrontal = new SonarModel(FuncoesGlobais.FindControlRecursive(frmOperacao, "picSonar"));
+ frmOperacao.Show();
+ }
+ else
+ {
+ MessageBox.Show(Variaveis.OperacaoEmAndamento.ErroOperacaoLiberada, "Conexão de módulos pendentes", MessageBoxButtons.OK, MessageBoxIcon.Warning);
+ }
+ }
+ }
+
+ public class OperacaoSensoriamentoModel
+ {
+ public DateTime Momento { get; set; }
+ public double VelocidadeMedia
+ {
+ get
+ {
+ return Variaveis.OperacaoEmAndamento.DispMov.Dados.Motores.Average(x => x.VelocidadeInstantanea);
+ }
+ }
+ public double PorcentagemBateria { get; set; } = 0;
+ public double BateriaConsumida { get; set; } = 0;
+ public List DistanciaPercorrida { get; set; } = new List();
+ public double DistanciaEsquerda { get; set; } = 0;
+ public double DistanciaDireita { get; set; } = 0;
+ public double AnguloCarro { get; set; } = 0;
+ public double AnguloCarroBussola { get; set; } = 0;
+ public SonarModel SonarFrontal { get; set; }
+
}
public class OperacaoControleModel
@@ -858,380 +754,8 @@ namespace AgroBase.Models
public bool Pronto { get; set; }
}
- public class OperacaoSensoriamentoModel
- {
- public DateTime Momento { get; set; }
- public int ErvasNoRadar { get; set; } = 0;
- public double VelocidadeMedia { get; set; } = 0;
- public double HerbicidaConsumido { get; set; } = 0;
- public double HerbicidaPorErva { get; set; } = 0;
- public double PorcentagemBateria { get; set; } = 0;
- public double BateriaConsumida { get; set; } = 0;
- public int ErvasIdentificadas { get; set; } = 0;
- public List AtuacoesPorBico { get; set; } = new List();
- public List DistanciaPercorrida { get; set; } = new List();
- public double ProgressoTrajeto { get; set; } = 0;
- public double ProgressoRua { get; set; } = 0;
- public double DistanciaEsquerda { get; set; } = 0;
- public double DistanciaDireita { get; set; } = 0;
- public StatusOperacao Status { get; set; } = StatusOperacao.Parado;
- public double AnguloCarro { get; set; } = 0;
- public double AnguloCarroBussola { get; set; } = 0;
- public double AnguloRua { get; set; } = 0;
- public double AnguloRuaCamera { get; set; } = 0;
- public double AnguloDif { get; set; } = 0;
- public DirecaoCarroRua Direcao { get; set; } = DirecaoCarroRua.Parado;
- public bool DentroDaRua { get; set; } = false;
- public int IdxPontoAproximadoRua { get;set; } = 0;
- public int IdxRuaAtual { get; set;} = 0;
- }
+
- public class OperacaoRefRuaGPS
- {
- public bool ManobraConcluida { get; set; } = false;
- private StatusOperacao _EtapaAtual;
- private StatusOperacao _EtapaAnteriorParada = StatusOperacao.Parado;
- public StatusOperacao StatusAtual
- {
- get
- {
- StatusOperacao etapaAtual = _EtapaAtual;
-
- // Se a operação não estiver iniciada
- if (!Variaveis.OperacaoEmAndamento.Iniciado)
- {
- // Etapa atual não é Finalizado, então a etapa é Parametrizando
- if (_EtapaAtual != StatusOperacao.Concluida)
- {
- etapaAtual = StatusOperacao.Parametrizando;
- }
- }
- // Operação em andamento
- else
- {
- // Se a operação tiver algum item mandatório interrompido
- if (!Variaveis.OperacaoEmAndamento.OperacaoLiberada)
- {
- // Da primeira vez, salva a etapa atual anterior à parada para possível retomada
- if (etapaAtual != StatusOperacao.Parado)
- {
- _EtapaAnteriorParada = etapaAtual;
- }
- etapaAtual = StatusOperacao.Parado;
- }
- // Se a etapa atual for parado, mas a operação foi liberada, retoma de onde parou
- else if (etapaAtual == StatusOperacao.Parado && Variaveis.OperacaoEmAndamento.OperacaoLiberada)
- {
- Variaveis.OperacaoEmAndamento.TempoAguardando = DateTime.Now;
- etapaAtual = StatusOperacao.Aguardando;
- }
- // Etapa atual é finalizada, então finaliza a operação
- else if (_EtapaAtual == StatusOperacao.Concluida)
- {
- Variaveis.OperacaoEmAndamento.FinalizarOperacao();
- }
- // Contagem regressiva para iniciar a operação
- else if (Variaveis.OperacaoEmAndamento.TempoAguardando.AddSeconds(Variaveis.OperacaoEmAndamento.TempoIniciarOperacao) > DateTime.Now)
- {
- etapaAtual = StatusOperacao.Aguardando;
- }
- else if (_EtapaAnteriorParada != StatusOperacao.Parado)
- {
- etapaAtual = _EtapaAnteriorParada;
- _EtapaAnteriorParada = StatusOperacao.Parado;
- }
- // Se o modo de operação for Manual, sempre estará no status CaminhandoRua
- else if (Variaveis.OperacaoEmAndamento.Modo == ModoOperacao.Manual)
- {
- etapaAtual = StatusOperacao.CaminhandoRua;
- }
- // Robô está manobrando para seguir a próxima rota do mapa
- else if (_EtapaAtual == StatusOperacao.Manobrando)
- {
- // Aguarda a mudança de rua até que o robô tenha terminado a manobra e tenha ficado parado em frente à rua
- if (ManobraConcluida && Direcao == DirecaoCarroRua.Parado)
- {
- Variaveis.OperacaoEmAndamento.Mapa.IdxRuaAtual++;
- ManobraConcluida = false;
- etapaAtual = StatusOperacao.EntrandoRua;
- GPSService.AtualizaLeituraSimulacao();
- Task.Delay(500);
- }
- }
- // Se o robô não estiver dentro da entrelinha de cana
- else if (!DentroDaRua)
- {
- // Está mais próximo do ponto inicial da rota, e a direção do carro é IDA ou então PARADO, logo está entrando na rua, do começo para o final
- if (ExtremoMaisProximo == 0 && (Direcao == DirecaoCarroRua.Ida || Direcao == DirecaoCarroRua.Parado) && etapaAtual != StatusOperacao.SaindoRua)
- {
- etapaAtual = StatusOperacao.EntrandoRua;
- }
- // Está mais próximo do ponto final da rota, e a direção do carro é VOLTA ou então PARADO, logo está entrando na rua, do final para o começo
- else if (ExtremoMaisProximo == 1 && (Direcao == DirecaoCarroRua.Volta || Direcao == DirecaoCarroRua.Parado) && etapaAtual != StatusOperacao.SaindoRua)
- {
- etapaAtual = StatusOperacao.EntrandoRua;
- }
- // Robô não está entrando na rua do começo para o fim, nem do fim para o começo
- else
- {
- // Se a etapa anterior era CaminhandoRua, ou seja, robô estava na rua e agora não está mais, então esta saindo da rua
- if (_EtapaAtual == StatusOperacao.CaminhandoRua)
- {
- etapaAtual = StatusOperacao.SaindoRua;
- }
- // Se a etapa anterior não for CaminhandoRua, então significa que ele já iniciou a etapa de sair da rua
- else
- {
- // O índice de rua para realizar o trabalho já ultrapassou a quantidade de ruas definidas pelo operador, então a operação foi concluída
- if (Variaveis.OperacaoEmAndamento.Mapa.IdxRuaAtual >= Variaveis.OperacaoEmAndamento.Mapa.Trajetoria.Count - 1)
- {
- etapaAtual = StatusOperacao.Concluida;
- }
- // Ainda tem ruas a serem percorridas, logo, o robô precisa realizar a manobra para seguir para a próxima rua
- else
- {
- etapaAtual = StatusOperacao.Manobrando;
- }
- }
- }
- }
- // Se o robô estiver dentro da entrelinha da cana
- else if (DentroDaRua)
- {
- etapaAtual = StatusOperacao.CaminhandoRua;
- }
- }
-
-
- _EtapaAtual = etapaAtual;
-
- return etapaAtual;
- }
- }
- public int PontosConsiderarAngulo { get; set; } = 2;
- public double Distancia { get; set; } = 0;
- public double AnguloCarro
- {
- get
- {
- if (Variaveis.OperacaoEmAndamento.DispSen._Porta.IsOpen && Variaveis.OperacaoEmAndamento.DispSen.Dados.Sensores.Any(x => x.Componente == S_Code.sMAG && x.Inicializado))
- {
- return Variaveis.OperacaoEmAndamento.Sensoriamento.AnguloCarroBussola;
- }
- else
- {
- return AnguloCarroGPS;
- }
- }
- }
- public double AnguloCarroGPS
- {
- get
- {
- try
- {
- double somaAngulo = 0;
- var Pontos = !Variaveis.OperacaoEmAndamento.GPSTrajetoriaRua.Any() ? new List() :
- Variaveis.OperacaoEmAndamento.GPSTrajetoriaRua[Variaveis.OperacaoEmAndamento.Mapa.IdxRuaAtual].Count > PontosConsiderarAngulo ?
- Variaveis.OperacaoEmAndamento.GPSTrajetoriaRua[Variaveis.OperacaoEmAndamento.Mapa.IdxRuaAtual].OrderByDescending(x => x.DataHora).Take(PontosConsiderarAngulo).ToList() :
- Variaveis.OperacaoEmAndamento.GPSTrajetoriaRua[Variaveis.OperacaoEmAndamento.Mapa.IdxRuaAtual].OrderByDescending(x => x.DataHora).ToList();
- Pontos = Pontos.OrderBy(x => x.DataHora).ToList();
- for (int i = 0; i < Pontos.Count - 1; i++)
- {
- somaAngulo += GPSService.CalcularOrientacao(Pontos[i + 1], Pontos[i]);
- }
- double mediaAngulo = somaAngulo / (Pontos.Count - 1);
-
- return (!(mediaAngulo >= 0 || mediaAngulo <= 0)) ? 0 : mediaAngulo;
- }
- catch
- {
- return 0;
- }
- }
- }
- public double AnguloRua
- {
- get
- {
- try
- {
- double somaAnguloRua = 0;
- var Rua = Variaveis.OperacaoEmAndamento.Mapa.Trajetoria.Skip(Variaveis.OperacaoEmAndamento.Mapa.IdxRuaAtual).First();
-
-
- var PontosRua = IdxPontoAproximadoRua + PontosConsiderarAngulo < Rua.Count ?
- Rua.Skip(IdxPontoAproximadoRua).Take(PontosConsiderarAngulo).ToList() :
- Rua.Skip(IdxPontoAproximadoRua - PontosConsiderarAngulo).ToList();
-
- /*var Pontos = Rua.Count > PontosConsiderarAngulo ?
- Rua.OrderByDescending(x => x.DataHora).Take(PontosConsiderarAngulo).ToList() :
- Rua.OrderByDescending(x => x.DataHora).ToList();*/
-
-
- for (int i = 0; i < PontosRua.Count - 1; i++)
- {
- somaAnguloRua += GPSService.CalcularOrientacao(PontosRua[i + 1], PontosRua[i]);
- }
- double mediaAnguloRua = somaAnguloRua / (PontosRua.Count - 1);
-
- return (!(mediaAnguloRua >= 0 || mediaAnguloRua <= 0)) ? 0 : mediaAnguloRua;
- }
- catch
- {
- return 0;
- }
- }
- }
- public double MargemErroAngulo { get; set; } = 45;
- public DirecaoCarroRua Direcao
- {
- get {
-
- if (GPSService.UltimaLeitura.Latitude == GPSService.PenultimaLeitura.Latitude && GPSService.UltimaLeitura.Longitude == GPSService.PenultimaLeitura.Longitude && GPSService.UltimaLeitura.DataHora > GPSService.PenultimaLeitura.DataHora)
- {
- return DirecaoCarroRua.Parado;
- }
- double mediaAngulo = AnguloCarro;
- double anguloOposto = (mediaAngulo + 180) % 360;
- double mediaAnguloRua = AnguloRua;
-
- if ((mediaAngulo + MargemErroAngulo) >= mediaAnguloRua && (mediaAngulo - MargemErroAngulo) <= mediaAnguloRua)
- {
- return DirecaoCarroRua.Ida;
- }
- else if ((anguloOposto + MargemErroAngulo) >= mediaAnguloRua && (anguloOposto - MargemErroAngulo) <= mediaAnguloRua)
- {
- return DirecaoCarroRua.Volta;
- }
- else
- {
- return DirecaoCarroRua.Parado;
- }
- }
- }
- public GPSModel PrimeiroPontoRua
- {
- get
- {
- try
- {
- var primeiroPontoRua = Variaveis.OperacaoEmAndamento.Mapa.Trajetoria.Skip(Variaveis.OperacaoEmAndamento.Mapa.IdxRuaAtual).First().First();
- return primeiroPontoRua;
- }
- catch
- {
- return new GPSModel();
- }
-
- }
- }
- public GPSModel UltimoPontoRua
- {
- get
- {
- try
- {
- var ultimoPontoRua = Variaveis.OperacaoEmAndamento.Mapa.Trajetoria.Skip(Variaveis.OperacaoEmAndamento.Mapa.IdxRuaAtual).First().Last();
- return ultimoPontoRua;
- }
- catch
- {
- return new GPSModel();
- }
- }
- }
- public bool DentroDaRua
- {
- get
- {
- try
- {
- string IDruaAtual = Variaveis.OperacaoEmAndamento.Mapa.RuasPercorrer[Variaveis.OperacaoEmAndamento.Mapa.IdxRuaAtual];
- var Rua = Variaveis.OperacaoEmAndamento.Mapa.mapaService.DadosMapa.features.Where(x => x.geometry.id == IDruaAtual).First();
-
- bool dentro = false;
- List Trecho = new List();
- var PontosRua = Variaveis.OperacaoEmAndamento.Mapa.Trajetoria[Variaveis.OperacaoEmAndamento.Mapa.IdxRuaAtual].ToList();
- int idx = Variaveis.OperacaoEmAndamento.ReferencialRuaGPS.IdxPontoAproximadoRua;
- if (Variaveis.OperacaoEmAndamento.Mapa.IdxRuaAtual % 2 != 0)
- {
- PontosRua.Reverse();
- idx = idx != (PontosRua.Count - 1) ? (PontosRua.Count - 1) - idx : idx;
- }
- for (int i = 0; i <= idx; i++)
- {
- Trecho.Add(PontosRua[i]);
- }
- double distTrecho = GPSService.DistanciaDoTrecho(Trecho);
- dentro = distTrecho > 0 && distTrecho < Rua.properties.Length;
-
- return dentro;
- }
- catch
- {
- return false;
- }
- }
- }
- public int ExtremoMaisProximo {
- get
- {
- double distPP = GPSService.DistanciaEntrePontos(GPSService.UltimaLeitura, PrimeiroPontoRua);
- double distUP = GPSService.DistanciaEntrePontos(GPSService.UltimaLeitura, UltimoPontoRua);
-
- // 0 para mais próximo do primeiro ponto da rua (ENTRANDO)
- // 1 para mais próximo do último ponto da rua (SAINDO)
- return (distPP < distUP) ? 0 : 1;
- }
- }
- private DateTime UltimaLeituraDistancia;
- private int idxPontoAproximadoRua = 0;
- public int IdxPontoAproximadoRua
- {
- get
- {
- try
- {
- if (UltimaLeituraDistancia == null)
- {
- UltimaLeituraDistancia = DateTime.Now.Add(new TimeSpan(0, 0, -10));
- }
- else if (UltimaLeituraDistancia.Add(new TimeSpan(0, 0, 5)) < DateTime.Now)
- {
- int idx = -1;
- double menorDistancia = 9999;
- double distanciaAnterior = 9999;
-
- var Rua = Variaveis.OperacaoEmAndamento.Mapa.Trajetoria[Variaveis.OperacaoEmAndamento.Mapa.IdxRuaAtual];
-
- foreach (var Ponto in Rua)
- {
- double dist = GPSService.DistanciaEntrePontos(GPSService.UltimaLeitura, Ponto);
- if (dist < menorDistancia)
- {
- menorDistancia = dist;
- idx = Rua.IndexOf(Ponto);
- }
- else if (dist > distanciaAnterior)
- {
- break;
- }
- distanciaAnterior = dist;
- }
- idxPontoAproximadoRua = idx;
-
- UltimaLeituraDistancia = DateTime.Now;
- }
- }
- catch
- {
-
- }
-
- return idxPontoAproximadoRua;
- }
- }
- }
+
}
diff --git a/AgroBase/AgroBase/Models/SonarModel.cs b/AgroBase/AgroBase/Models/SonarModel.cs
new file mode 100644
index 000000000..142a7e0cb
--- /dev/null
+++ b/AgroBase/AgroBase/Models/SonarModel.cs
@@ -0,0 +1,643 @@
+using AgroBase.Models.Modules;
+using AgroBase.Services;
+using System;
+using System.Collections.Generic;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+using static AgroBase.Models.Enuns;
+
+namespace AgroBase.Models
+{
+ public class SonarModel
+ {
+ public SonarModel(PictureBox pictureSonar)
+ {
+ picSonar = pictureSonar;
+ }
+
+
+ public List Deteccoes { get; set; } = new List();
+ public List ObstaculosDetectados { get; set; } = new List();
+ public int maxDistanceCm { get; set; } = 200;
+ public static int anguloAcrescentar { get; set; } = 5;
+ public int PosicaoAtual { get; set; } = 0;
+ public static int AnguloDesvioMaximo { get; set; } = 60;
+ public static double MargemSegurancaDesvio { get; set; } = 5;
+ private int LarguraMinimaObstaculo { get; set; } = 10;
+ public bool DesvioNecessario { get; set;} = false;
+ public double DistanciaEsquerda { get; set; }
+ public double DistanciaDireita { get; set; }
+
+
+ #region Informacoes Visiais
+
+ PictureBox picSonar;
+ int radarRadiusPixels = 0; // Raio do radar em pixels
+ double pixelsPerCm = 0; // Calcula pixels por cm
+ int leiturasManter = 20;
+
+ public void AtualizarSonar()
+ {
+ // Atualiza o desenho do radar
+ DrawRadar();
+ ProcessarDados();
+ }
+ private void DrawRadar()
+ {
+ radarRadiusPixels = ((picSonar.Height < picSonar.Width ? picSonar.Height : picSonar.Width) / 2) - 50; // Raio do radar em pixels
+ pixelsPerCm = radarRadiusPixels / (double)maxDistanceCm; // Calcula pixels por cm
+
+ Bitmap bmp = new Bitmap(picSonar.Width, picSonar.Height);
+ Graphics g = Graphics.FromImage(bmp);
+ g.Clear(Color.Black);
+
+ int centerX = picSonar.Width / 2;
+ int centerY = picSonar.Height / 2;
+
+ // Desenha a grade e os ângulos
+ DrawGrid(g, centerX, centerY);
+ DrawAngles(g, centerX, centerY);
+
+ var detections = Deteccoes.First(x => x.Posicao == PosicaoAtual).Leituras.OrderByDescending(d => d.Momento);
+ // Aqui continua o código para desenhar as detecções e o arco do sonar...
+ // Filtra e mantém apenas as últimas 2 detecções de cada ângulo
+ var recentDetections = detections.ToList();
+ int i = 0;
+ foreach (var detection in recentDetections)
+ {
+ // Ajusta a distância para a escala do display
+ double scaledDistance = (i == 0 ? maxDistanceCm : detection.Distancia) * pixelsPerCm;
+
+ // Calcula as posições finais ajustadas para a escala
+ int x = (int)(Math.Cos(detection.Angulo * Math.PI / 180) * scaledDistance);
+ int y = (int)(Math.Sin(detection.Angulo * Math.PI / 180) * scaledDistance);
+
+ // Desenha uma linha do centro até o ponto detectado, ajustado para a escala
+ g.DrawLine(i == 0 ? new Pen(Color.Red, 7) : Pens.Red, centerX, centerY, centerX + x, centerY - y);
+ i++;
+ }
+
+ // Desenha os obstáculos detectados
+ DrawObstacles(g, centerX, centerY);
+
+ // Adiciona as novas informações visuais aqui
+ DrawAdditionalInfo(g, detections.First().Angulo, detections.First().Distancia);
+
+ // Desenha a trajetória de desvio
+ DrawTrajectory(g, centerX, centerY);
+
+ // Ao final, atribui o bitmap ao PictureBox
+ picSonar.Image?.Dispose(); // Libera o recurso da imagem anterior
+ picSonar.Image = bmp;
+ }
+
+ private void DrawGrid(Graphics g, int centerX, int centerY)
+ {
+ int scaleDistanceCm = 50; // Distância em cm que cada círculo da grade representa
+
+ // Calcula o espaçamento entre as linhas da grade em pixels
+ int stepPixels = (int)(scaleDistanceCm * pixelsPerCm);
+
+ // Desenha linhas circulares baseadas na escala
+ for (int r = stepPixels; r <= radarRadiusPixels; r += stepPixels)
+ {
+ g.DrawEllipse(Pens.Gray, centerX - r, centerY - r, 2 * r, 2 * r);
+
+ // Calcula a posição da legenda
+ int legendX = centerX + 5; // Um pequeno deslocamento à direita do centro
+ int legendY = centerY + r - 10; // Posiciona acima da linha da grade
+
+ // Desenha a legenda de distância
+ string legendText = $"{(r / pixelsPerCm).ToString("0")} cm";
+ g.DrawString(legendText, new Font("Arial", 8), Brushes.White, legendX, legendY);
+ }
+
+ // Desenha linhas radiais (Opcional: ajuste conforme necessário)
+ for (int angle = 0; angle < 360; angle += 30)
+ {
+ double radian = angle * Math.PI / 180;
+ int x = (int)(Math.Cos(radian) * radarRadiusPixels);
+ int y = (int)(Math.Sin(radian) * radarRadiusPixels);
+ g.DrawLine(Pens.Gray, centerX, centerY, centerX + x, centerY - y);
+ }
+
+ // Desenha o arco do sonar
+ g.DrawEllipse(Pens.Green, centerX - radarRadiusPixels, centerY - radarRadiusPixels, radarRadiusPixels * 2, radarRadiusPixels * 2);
+ }
+
+ private void DrawAngles(Graphics g, int centerX, int centerY)
+ {
+ int radius = radarRadiusPixels + 10; // Posiciona o texto um pouco fora do radar para não sobrepor as linhas
+ using (Font font = new Font("Arial", 8))
+ {
+ for (int angle = 0; angle <= 180; angle += 30) // Ajuste o passo conforme necessário
+ {
+ // Ajuste aqui para o sentido anti-horário
+ double radian = (360 - angle) * Math.PI / 180;
+ int x = (int)(Math.Cos(radian) * radius) + centerX;
+ int y = (int)(Math.Sin(radian) * radius) + centerY;
+
+ // Ajusta a posição do texto para melhor alinhamento
+ SizeF textSize = g.MeasureString(angle.ToString(), font);
+ g.DrawString(angle.ToString(), font, Brushes.White, x - textSize.Width / 2, y - textSize.Height / 2);
+ }
+ }
+ }
+
+ private void DrawObstacles(Graphics g, int centerX, int centerY)
+ {
+ // Desenha obstáculos detectados
+ foreach (var obstaculo in ObstaculosDetectados)
+ {
+ // Calcula a posição e o tamanho do obstáculo no radar
+ double anguloInicialRad = obstaculo.AnguloInicial * Math.PI / 180;
+ double anguloFinalRad = obstaculo.AnguloFinal * Math.PI / 180;
+
+ // Calcula a largura do obstáculo no radar em pixels
+ double larguraObstaculoPixels = obstaculo.Largura * pixelsPerCm;
+ int posicaoAtual = Variaveis.OperacaoEmAndamento.Sensoriamento.SonarFrontal.PosicaoAtual;
+ var deteccoes = Variaveis.OperacaoEmAndamento.Sensoriamento.SonarFrontal.Deteccoes.First(x => x.Posicao == posicaoAtual).Leituras.OrderBy(x => x.Angulo).ToList();
+ var leituraInicial = deteccoes.First(x => x.Angulo == obstaculo.AnguloInicial);
+ var leituraFinal = deteccoes.First(x => x.Angulo == obstaculo.AnguloFinal);
+ int idxPontoInicial = deteccoes.IndexOf(leituraInicial);
+ int idxPontoFinal = deteccoes.IndexOf(leituraFinal);
+
+ List pontos = new List();
+ for (int i = idxPontoInicial; i <= idxPontoFinal; i++)
+ {
+ double anguloRad = deteccoes[i].Angulo * Math.PI / 180;
+ var ponto = new Point(centerX + (int)(Math.Cos(anguloRad) * deteccoes[i].Distancia),
+ centerY - (int)(Math.Sin(anguloRad) * deteccoes[i].Distancia));
+ pontos.Add(ponto);
+ }
+
+ pontos.Add(new Point(
+ pontos[pontos.Count - 1].X + (int)(Math.Cos(anguloFinalRad) * larguraObstaculoPixels),
+ pontos[pontos.Count - 1].Y - (int)(Math.Sin(anguloFinalRad) * larguraObstaculoPixels))
+ );
+ pontos.Add(new Point(
+ pontos[0].X + (int)(Math.Cos(anguloInicialRad) * larguraObstaculoPixels),
+ pontos[0].Y - (int)(Math.Sin(anguloInicialRad) * larguraObstaculoPixels))
+ );
+
+ g.FillPolygon(Brushes.Yellow, pontos.ToArray());
+ }
+ }
+
+ private void DrawAdditionalInfo(Graphics g, double angulo, double distancia)
+ {
+ // Adiciona a informação de ângulo e distância atuais
+ string infoText = $"Posição: {PosicaoAtual}, Ângulo: {angulo}°, Distância: {distancia} cm";
+ // Escolha a posição onde deseja que o texto apareça. Exemplo: canto superior esquerdo.
+ int infoPosX = 10; // 10 pixels do canto esquerdo
+ int infoPosY = 10; // 10 pixels do topo
+ g.DrawString(infoText, new Font("Arial", 10), Brushes.White, infoPosX, infoPosY);
+ string distText = $"DE: {DistanciaEsquerda.ToString("0.0")} cm, DD: {DistanciaDireita.ToString("0.0")} cm";
+ g.DrawString(distText, new Font("Arial", 7), Brushes.White, picSonar.Width - 180, picSonar.Height - 20);
+
+ // Verifica se há obstáculos detectados para evitar erros
+ if (ObstaculosDetectados.Any())
+ {
+ SonarObstaculoDetectadoModel obstaculoCritico = ObstaculosDetectados.OrderBy(o => o.DistanciaMedia).First();
+
+ string anguloDesvioText = $"Ângulo de Desvio: {obstaculoCritico.AnguloParaDesvio.ToString("0.00")}°";
+ string distanciaObstaculoText = $"Distância até Obstáculo: {obstaculoCritico.DistanciaMedia.ToString("0.00")} cm";
+ string larguraObstaculoText = $"Largura do Obstáculo: {obstaculoCritico.Largura.ToString("0.00")} cm";
+ string tempoColisaoText = $"Tempo até Colisão: {obstaculoCritico.TempoAteColisao.ToString("0.00")} s";
+ string direcaoDesvioText = $"Direção para Desvio: {obstaculoCritico.DirecaoDesvio.ToString()}";
+
+ // Define a posição inicial para as informações adicionais
+ int startX = 10;
+ int startY = picSonar.Height - 100; // Ajuste conforme necessário para não sobrepor outros elementos
+
+ // Desenha o texto no radar
+ g.DrawString(anguloDesvioText, new Font("Arial", 10), Brushes.White, startX, startY);
+ g.DrawString(distanciaObstaculoText, new Font("Arial", 10), Brushes.White, startX, startY + 20);
+ g.DrawString(larguraObstaculoText, new Font("Arial", 10), Brushes.White, startX, startY + 40);
+ g.DrawString(tempoColisaoText, new Font("Arial", 10), Brushes.White, startX, startY + 60);
+ g.DrawString(direcaoDesvioText, new Font("Arial", 10), Brushes.White, startX, startY + 80);
+ }
+ }
+
+ private void DrawTrajectory(Graphics g, int centerX, int centerY)
+ {
+ if (DesvioNecessario)
+ {
+ SonarObstaculoDetectadoModel obstaculoCritico = ObstaculosDetectados.OrderBy(o => o.DistanciaMedia).First();
+
+ // Calcula o ângulo final considerando o ângulo de desvio
+ double anguloDesvioRad = (obstaculoCritico.AnguloParaDesvio + 90) * (Math.PI / 180); // +90 para ajustar a referência
+
+ // Calcula a posição final da trajetória
+ double distanciaObstaculo = maxDistanceCm * pixelsPerCm;
+ int desvioX = (int)(Math.Cos(anguloDesvioRad) * distanciaObstaculo);
+ int desvioY = (int)(Math.Sin(anguloDesvioRad) * distanciaObstaculo);
+
+ // Cria um Pen tracejado azul
+ Pen penTrajectory = new Pen(Color.Blue, 3) { DashPattern = new float[] { 4, 2 } }; // Ajuste o padrão de traço conforme necessário
+
+ // Desenha a linha de trajetória
+ g.DrawLine(penTrajectory, centerX, centerY, centerX + desvioX, centerY - desvioY);
+ }
+ }
+
+ #endregion
+
+ #region Processamento de Dados
+
+ public void ProcessarDados()
+ {
+ DesvioNecessario = false;
+
+ // Limpa a lista de obstáculos para o novo processamento
+ ObstaculosDetectados.Clear();
+
+ // Agrupa leituras por proximidade
+ var grupos = AgruparLeiturasPorProximidade(Deteccoes.First(x => x.Posicao == PosicaoAtual).Leituras);
+
+ foreach (var grupo in grupos)
+ {
+ var leiturasGrupo = grupo.OrderBy(x => x.Angulo).ToList();
+ var primeiraLeitura = leiturasGrupo.First();
+ var ultimaLeitura = leiturasGrupo.Last();
+
+ // Calcula a largura aproximada do obstáculo
+ //double larguraObstaculo = CalcularLarguraObstaculo(primeiraLeitura, ultimaLeitura);
+ double distanciaMedia = leiturasGrupo.Average(x => x.Distancia);
+ var Objeto = new SonarObstaculoDetectadoModel(primeiraLeitura.Angulo, ultimaLeitura.Angulo, distanciaMedia);
+
+ // Verifica se a largura do obstáculo é significativa
+ if (Objeto.Largura > LarguraMinimaObstaculo)
+ {
+ // Adiciona o obstáculo detectado à lista
+ ObstaculosDetectados.Add(Objeto);
+ }
+ }
+
+
+
+ CalcularDirecaoDesvio();
+ }
+
+ private List> AgruparLeiturasPorProximidade(List leituras)
+ {
+ int maxAnguloDiferenca = anguloAcrescentar * 3; // Diferença máxima de ângulo (em graus) para considerar leituras no mesmo grupo
+ const int maxDistanciaDiferenca = 20; // Diferença máxima de distância (em cm) para considerar leituras no mesmo grupo
+
+ List> grupos = new List>();
+ List grupoAtual = new List();
+
+ // Ordena as leituras por ângulo para processamento sequencial
+ var leiturasOrdenadas = leituras.OrderBy(l => l.Angulo).ToList();
+
+ foreach (var leitura in leiturasOrdenadas)
+ {
+ if (grupoAtual.Count == 0)
+ {
+ // Se o grupo atual está vazio, simplesmente adiciona a leitura atual ao grupo
+ grupoAtual.Add(leitura);
+ }
+ else
+ {
+ // Compara a leitura atual com a última leitura do grupo atual
+ var ultimaLeitura = grupoAtual.Last();
+ if (Math.Abs(leitura.Angulo - ultimaLeitura.Angulo) <= maxAnguloDiferenca &&
+ Math.Abs(leitura.Distancia - ultimaLeitura.Distancia) <= maxDistanciaDiferenca)
+ {
+ // Se a leitura atual está próxima da última leitura, adiciona ao mesmo grupo
+ grupoAtual.Add(leitura);
+ }
+ else
+ {
+ // Se a leitura atual está longe da última leitura, considera como um novo grupo
+ grupos.Add(new List(grupoAtual)); // Adiciona o grupo atual aos grupos
+ grupoAtual.Clear(); // Limpa o grupo atual
+ grupoAtual.Add(leitura); // Inicia um novo grupo com a leitura atual
+ }
+ }
+ }
+
+ if (grupoAtual.Count > 0)
+ {
+ // Adiciona o último grupo aos grupos, se não estiver vazio
+ grupos.Add(grupoAtual);
+ }
+
+ return grupos.Where(x => x.All(y => y.Distancia <= maxDistanceCm)).ToList();
+ }
+
+
+ // Método para calcular a média de distâncias nas laterais do robô
+ private void CalcularDistanciasLaterais()
+ {
+ // Filtra leituras correspondentes aos ângulos de interesse
+ //var leiturasDireita = Deteccoes.SelectMany(d => d.Leituras.Where(l => l.Angulo <= 4)).ToList();
+ //var leiturasEsquerda = Deteccoes.SelectMany(d => d.Leituras.Where(l => l.Angulo >= 176)).ToList();
+ var leiturasDireita = Deteccoes.Where(d => d.Posicao == 1).SelectMany(d => d.Leituras.Where(l => l.Angulo <= anguloAcrescentar)).ToList();
+ var leiturasEsquerda = Deteccoes.Where(d => d.Posicao == 1).SelectMany(d => d.Leituras.Where(l => l.Angulo >= 180 - anguloAcrescentar)).ToList();
+
+ // Calcula as médias
+ if (leiturasDireita.Any() && leiturasEsquerda.Any())
+ {
+ DistanciaDireita = leiturasDireita.Any() ? leiturasDireita.Average(l => l.Distancia) : 0;
+ DistanciaEsquerda = leiturasEsquerda.Any() ? leiturasEsquerda.Average(l => l.Distancia) : 0;
+ }
+ }
+
+ // Método para decidir a direção do desvio
+ public void CalcularDirecaoDesvio()
+ {
+ // Calcula distâncias médias laterais
+ CalcularDistanciasLaterais();
+
+ foreach (var obstaculo in ObstaculosDetectados)
+ {
+ // Inicializa variáveis para determinar a melhor direção de desvio
+ double espacoLivreDireita = DistanciaDireita - obstaculo.DeslocamentoNecessarioDireita;
+ double espacoLivreEsquerda = DistanciaEsquerda - obstaculo.DeslocamentoNecessarioEsquerda;
+
+ // Decisão de direção baseada no espaço livre ajustado
+ if (espacoLivreDireita > espacoLivreEsquerda && espacoLivreDireita > 0)
+ {
+ obstaculo.DirecaoDesvio = Direcao.Direita;
+ }
+ else if (espacoLivreEsquerda > 0)
+ {
+ obstaculo.DirecaoDesvio = Direcao.Esquerda;
+ }
+ else
+ {
+ // Não há espaço suficiente para desviar
+ obstaculo.DirecaoDesvio = Direcao.Parado;
+ }
+ }
+
+ DesvioNecessario = ObstaculosDetectados.Any(obstaculo => obstaculo.DeslocamentoNecessarioDesvio > 0);
+ }
+
+
+ #endregion
+
+ }
+
+ public class SonarRegistroModel
+ {
+ public int Posicao { get; set; }
+ public List Leituras { get; set; }
+ }
+
+ public class SonarLeituraModel
+ {
+ public int Angulo { get; set; }
+ public int Distancia { get; set; }
+ public DateTime Momento { get; set; }
+
+ public SonarLeituraModel(int angle, int distance)
+ {
+ Angulo = angle;
+ Distancia = distance;
+ Momento = DateTime.Now;
+ }
+ }
+
+ public class SonarObstaculoDetectadoModel
+ {
+ public double AnguloInicial { get; set; }
+ public double AnguloFinal { get; set; }
+ public double Largura
+ {
+ get
+ {
+ double largura = 0;
+ if ((Aesquerda && !Adireita) || (!Aesquerda && Adireita))
+ {
+ largura = DistanciaInicial - DistanciaFinal;
+ }
+ else if (Aesquerda && Adireita)
+ {
+ largura = DistanciaInicial + DistanciaFinal;
+ }
+ if (largura < 0)
+ {
+ largura *= -1;
+ }
+ return largura;
+ }
+ }
+ public double DistanciaMedia { get; set; }
+ public double DistanciaInicial
+ {
+ get
+ {
+ // Cálculo simplificado, assumindo que podemos determinar a distância direta até o ponto inicial do obstáculo.
+ // Esta fórmula precisa ser adaptada com base na geometria específica e na localização do obstáculo.
+ double anguloRelativo = AnguloInicial - 0; // Calculando o ângulo relativo ao centro do robô
+ // Convertendo o ângulo para radianos para uso em funções trigonométricas
+ double anguloRad = anguloRelativo * (Math.PI / 180);
+
+ // Usando trigonometria para calcular a componente da distância na direção do obstáculo
+ // Esta é uma simplificação e pode não refletir a distância exata sem mais contextos
+ double distanciaInicial = Math.Cos(anguloRad) * DistanciaMedia;
+ if (distanciaInicial < 0)
+ {
+ distanciaInicial *= -1;
+ }
+
+ return distanciaInicial;
+ }
+ }
+ public double DistanciaFinal
+ {
+ get
+ {
+ // Cálculo simplificado, assumindo que podemos determinar a distância direta até o ponto inicial do obstáculo.
+ // Esta fórmula precisa ser adaptada com base na geometria específica e na localização do obstáculo.
+ double anguloRelativo = AnguloFinal - 0; // Calculando o ângulo relativo ao centro do robô
+ // Convertendo o ângulo para radianos para uso em funções trigonométricas
+ double anguloRad = anguloRelativo * (Math.PI / 180);
+
+ // Usando trigonometria para calcular a componente da distância na direção do obstáculo
+ // Esta é uma simplificação e pode não refletir a distância exata sem mais contextos
+ double distanciaFinal = Math.Cos(anguloRad) * DistanciaMedia;
+ if (distanciaFinal < 0)
+ {
+ distanciaFinal *= -1;
+ }
+
+ return distanciaFinal;
+ }
+ }
+ public double TempoAteColisao
+ {
+ get
+ {
+ return DistanciaMedia / MovimentacaoModel.ConverteKmhParaMs(Variaveis.OperacaoEmAndamento.Sensoriamento.VelocidadeMedia);
+ }
+ }
+ public double DeslocamentoNecessarioDesvio
+ {
+ get
+ {
+ if (DirecaoDesvio == Direcao.Direita)
+ {
+ return DeslocamentoNecessarioDireita;
+ }
+ else if (DirecaoDesvio == Direcao.Esquerda)
+ {
+ return DeslocamentoNecessarioEsquerda;
+ }
+ else
+ {
+ return 0;
+ }
+ }
+ }
+ public double DeslocamentoNecessarioEsquerda
+ {
+ get
+ {
+ if (Adireita && !Aesquerda)
+ {
+ //return DistanciaInicial + SonarModel.MargemSegurancaDesvio;
+ double deslocamento = (VariaveisEquipamento.Largura / 2) - DistanciaFinal + SonarModel.MargemSegurancaDesvio;
+ if (deslocamento < 0)
+ {
+ deslocamento = 0;
+ }
+ return deslocamento;
+ }
+ else if (Aesquerda && !Adireita)
+ {
+ //return DistanciaFinal + SonarModel.MargemSegurancaDesvio + (VariaveisEquipamento.Largura / 2);
+ double deslocamento = (VariaveisEquipamento.Largura / 2) + DistanciaFinal + SonarModel.MargemSegurancaDesvio;
+ if (deslocamento < 0)
+ {
+ deslocamento = 0;
+ }
+ return deslocamento;
+ }
+ else if (Adireita && Aesquerda)
+ {
+ double deslocamento = (VariaveisEquipamento.Largura / 2) + DistanciaFinal + SonarModel.MargemSegurancaDesvio;
+ if (deslocamento < 0)
+ {
+ deslocamento = 0;
+ }
+ return deslocamento;
+ }
+ else
+ {
+ return 0;
+ }
+ }
+ }
+ public double DeslocamentoNecessarioDireita
+ {
+ get
+ {
+ if (Adireita && !Aesquerda)
+ {
+ //return DistanciaInicial + SonarModel.MargemSegurancaDesvio + (VariaveisEquipamento.Largura / 2);
+ double deslocamento = (VariaveisEquipamento.Largura / 2) + DistanciaInicial + SonarModel.MargemSegurancaDesvio;
+ if(deslocamento < 0)
+ {
+ deslocamento = 0;
+ }
+ return deslocamento;
+ }
+ else if (Aesquerda && !Adireita)
+ {
+ //return DistanciaFinal + SonarModel.MargemSegurancaDesvio;
+ double deslocamento = (VariaveisEquipamento.Largura / 2) - DistanciaInicial + SonarModel.MargemSegurancaDesvio;
+ if (deslocamento < 0)
+ {
+ deslocamento = 0;
+ }
+ return deslocamento;
+ }
+ else if (Adireita && Aesquerda)
+ {
+ double deslocamento = (VariaveisEquipamento.Largura / 2) + DistanciaInicial + SonarModel.MargemSegurancaDesvio;
+ if (deslocamento < 0)
+ {
+ deslocamento = 0;
+ }
+ return deslocamento;
+ }
+ else
+ {
+ return 0;
+ }
+ }
+ }
+ public double AnguloParaDesvio
+ {
+ get
+ {
+ // Usando trigonometria para calcular o ângulo necessário
+ // Nota: Assegure-se de converter o resultado de arco seno para graus, se necessário
+ double anguloRad = Math.Atan(DistanciaMedia / DeslocamentoNecessarioDesvio);
+ double anguloDesvio = (anguloRad * (180 / Math.PI)); // Convertendo radianos para graus
+
+ Direcao direcaoDesvio = DirecaoDesvio;
+
+ if (direcaoDesvio == Direcao.Esquerda)
+ {
+ anguloDesvio = 90 - anguloDesvio;
+ }
+ else if (direcaoDesvio == Direcao.Direita)
+ {
+ anguloDesvio = anguloDesvio - 90;
+ }
+
+ // Atribuição do ângulo calculado ao ângulo de desvio, com verificação de limites
+ return Math.Min(anguloDesvio, SonarModel.AnguloDesvioMaximo);
+ }
+ }
+ public Direcao DirecaoDesvio { get; set; }
+ public bool Adireita
+ {
+ get
+ {
+ return AnguloInicial < 90 || AnguloFinal > 270;
+ }
+ }
+ public bool Aesquerda
+ {
+ get
+ {
+ return AnguloFinal > 90 && AnguloInicial < 270;
+ }
+ }
+ public GPSModel Coordenadas
+ {
+ get
+ {
+ double anguloAbsolutoObstaculo = (Variaveis.OperacaoEmAndamento.Sensoriamento.AnguloCarro + AnguloInicial + AnguloFinal) / 2;
+ double anguloRad = anguloAbsolutoObstaculo * (Math.PI / 180);
+
+ // Supondo que a distância seja em metros e utilizando uma aproximação simples da Terra como esfera
+ // para converter distância e ângulo em mudança de latitude/longitude.
+ double deltaLatitude = (DistanciaMedia * Math.Cos(anguloRad)) / 111111; // Dividindo por 111111 para converter metros em graus
+ double deltaLongitude = (DistanciaMedia * Math.Sin(anguloRad)) / (111111 * Math.Cos(GPSService.UltimaLeitura.Latitude * (Math.PI / 180)));
+
+ return new GPSModel
+ {
+ Latitude = GPSService.UltimaLeitura.Latitude + deltaLatitude,
+ Longitude = GPSService.UltimaLeitura.Longitude + deltaLongitude
+ };
+ }
+ }
+
+ public SonarObstaculoDetectadoModel(double anguloInicial, double anguloFinal, double distanciaMedia)
+ {
+ AnguloInicial = anguloInicial;
+ AnguloFinal = anguloFinal;
+ DistanciaMedia = distanciaMedia;
+ }
+ }
+
+}
diff --git a/AgroBase/AgroBase/Models/Variaveis.cs b/AgroBase/AgroBase/Models/Variaveis.cs
index a63900b26..a7611ba7a 100644
--- a/AgroBase/AgroBase/Models/Variaveis.cs
+++ b/AgroBase/AgroBase/Models/Variaveis.cs
@@ -6,6 +6,7 @@ using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
+using System.Windows.Forms;
using static AgroBase.Models.Enuns;
namespace AgroBase.Models
@@ -13,6 +14,8 @@ namespace AgroBase.Models
public class Variaveis
{
public static string CaminhoSistema { get; set; } = AppDomain.CurrentDomain.BaseDirectory;
+ public static string CaminhoLogsDispositivos { get; } = "Logs/";
+ public static string CaminhoOperacoes { get; } = "Operacoes/";
public static List DispositivosConectados { get; set; } = new List();
public static OperacaoModel OperacaoEmAndamento { get; set; } = new OperacaoModel(ModoOperacao.Manual);
public static MqttService MqttService { get; set; } = new MqttService("localhost", 1883);
@@ -21,7 +24,7 @@ namespace AgroBase.Models
{
if (_status == null)
{
- _status = OperacaoEmAndamento.ReferencialRuaGPS.StatusAtual;
+ _status = OperacaoEmAndamento.StatusAtual;
}
SensorSinaleiroComportamentoModel comportamento = new SensorSinaleiroComportamentoModel()
@@ -45,7 +48,8 @@ namespace AgroBase.Models
};
break;
}
- case StatusOperacao.Concluida:
+ case StatusOperacao.NaoIniciado:
+ case StatusOperacao.Concluido:
{
comportamento = new SensorSinaleiroComportamentoModel()
{
@@ -57,7 +61,6 @@ namespace AgroBase.Models
break;
}
case StatusOperacao.Aguardando:
- case StatusOperacao.Retornando:
{
comportamento = new SensorSinaleiroComportamentoModel()
{
@@ -79,26 +82,13 @@ namespace AgroBase.Models
};
break;
}
- case StatusOperacao.CaminhandoRua:
+ case StatusOperacao.EmAndamento:
{
comportamento = new SensorSinaleiroComportamentoModel()
{
statusLED = StatusLED.Piscando,
QtdPiscadas = 3,
- TempoMs = 400,
- PausaMs = 1000,
- };
- break;
- }
- case StatusOperacao.EntrandoRua:
- case StatusOperacao.SaindoRua:
- case StatusOperacao.Manobrando:
- {
- comportamento = new SensorSinaleiroComportamentoModel()
- {
- statusLED = StatusLED.Piscando,
- QtdPiscadas = 2,
- TempoMs = 500,
+ TempoMs = 200,
PausaMs = 1000,
};
break;
@@ -132,6 +122,29 @@ namespace AgroBase.Models
{
return paraMin + (valor - deMin) * (paraMax - paraMin) / (deMax - deMin);
}
+
+ public static T FindControlRecursive(Control parent, string controlName) where T : Control
+ {
+ foreach (Control child in parent.Controls)
+ {
+ if (child is T foundControl && child.Name == controlName)
+ {
+ return foundControl; // Retorna o controle se encontrado
+ }
+ else
+ {
+ T foundInChildren = FindControlRecursive(child, controlName);
+ if (foundInChildren != null) return foundInChildren; // Retorna o controle se encontrado em controles filhos
+ }
+ }
+ return null; // Retorna null se o controle não for encontrado
+ }
+
+ public static double ConvertDegreesToRadians(double degrees)
+ {
+ double radians = (Math.PI / 180) * degrees;
+ return (radians);
+ }
}
public static class VariaveisPortas
@@ -143,5 +156,9 @@ namespace AgroBase.Models
public static int SocketCaminho { get; } = 6588;
}
+ public static class VariaveisEquipamento
+ {
+ public static double Largura { get; } = 80;
+ }
}
diff --git a/AgroBase/AgroBase/Properties/Resources.Designer.cs b/AgroBase/AgroBase/Properties/Resources.Designer.cs
index cfd2bd360..f61dd3b46 100644
--- a/AgroBase/AgroBase/Properties/Resources.Designer.cs
+++ b/AgroBase/AgroBase/Properties/Resources.Designer.cs
@@ -1,10 +1,10 @@
//------------------------------------------------------------------------------
//
-// This code was generated by a tool.
-// Runtime Version:4.0.30319.42000
+// O código foi gerado por uma ferramenta.
+// Versão de Tempo de Execução:4.0.30319.42000
//
-// Changes to this file may cause incorrect behavior and will be lost if
-// the code is regenerated.
+// As alterações ao arquivo poderão causar comportamento incorreto e serão perdidas se
+// o código for gerado novamente.
//
//------------------------------------------------------------------------------
@@ -13,12 +13,12 @@ namespace AgroBase.Properties {
///
- /// A strongly-typed resource class, for looking up localized strings, etc.
+ /// Uma classe de recurso de tipo de alta segurança, para pesquisar cadeias de caracteres localizadas etc.
///
- // This class was auto-generated by the StronglyTypedResourceBuilder
- // class via a tool like ResGen or Visual Studio.
- // To add or remove a member, edit your .ResX file then rerun ResGen
- // with the /str option, or rebuild your VS project.
+ // Essa classe foi gerada automaticamente pela classe StronglyTypedResourceBuilder
+ // através de uma ferramenta como ResGen ou Visual Studio.
+ // Para adicionar ou remover um associado, edite o arquivo .ResX e execute ResGen novamente
+ // com a opção /str, ou recrie o projeto do VS.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
@@ -33,7 +33,7 @@ namespace AgroBase.Properties {
}
///
- /// Returns the cached ResourceManager instance used by this class.
+ /// Retorna a instância de ResourceManager armazenada em cache usada por essa classe.
///
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Resources.ResourceManager ResourceManager {
@@ -47,8 +47,8 @@ namespace AgroBase.Properties {
}
///
- /// Overrides the current thread's CurrentUICulture property for all
- /// resource lookups using this strongly typed resource class.
+ /// Substitui a propriedade CurrentUICulture do thread atual para todas as
+ /// pesquisas de recursos que usam essa classe de recurso de tipo de alta segurança.
///
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Globalization.CultureInfo Culture {
@@ -61,7 +61,7 @@ namespace AgroBase.Properties {
}
///
- /// Looks up a localized resource of type System.Drawing.Bitmap.
+ /// Consulta um recurso localizado do tipo System.Drawing.Bitmap.
///
internal static System.Drawing.Bitmap esp32_s3 {
get {
@@ -71,7 +71,7 @@ namespace AgroBase.Properties {
}
///
- /// Looks up a localized resource of type System.Drawing.Bitmap.
+ /// Consulta um recurso localizado do tipo System.Drawing.Bitmap.
///
internal static System.Drawing.Bitmap esp32_wrover {
get {
@@ -81,7 +81,7 @@ namespace AgroBase.Properties {
}
///
- /// Looks up a localized resource of type System.Drawing.Bitmap.
+ /// Consulta um recurso localizado do tipo System.Drawing.Bitmap.
///
internal static System.Drawing.Bitmap loading {
get {
@@ -91,7 +91,27 @@ namespace AgroBase.Properties {
}
///
- /// Looks up a localized resource of type System.Drawing.Bitmap.
+ /// Consulta um recurso localizado do tipo System.Drawing.Bitmap.
+ ///
+ internal static System.Drawing.Bitmap mcp {
+ get {
+ object obj = ResourceManager.GetObject("mcp", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Consulta um recurso localizado do tipo System.Drawing.Bitmap.
+ ///
+ internal static System.Drawing.Bitmap robo_superior {
+ get {
+ object obj = ResourceManager.GetObject("robo_superior", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Consulta um recurso localizado do tipo System.Drawing.Bitmap.
///
internal static System.Drawing.Bitmap rosa_dos_ventos {
get {
@@ -101,7 +121,7 @@ namespace AgroBase.Properties {
}
///
- /// Looks up a localized resource of type System.Drawing.Bitmap.
+ /// Consulta um recurso localizado do tipo System.Drawing.Bitmap.
///
internal static System.Drawing.Bitmap transferidor {
get {
diff --git a/AgroBase/AgroBase/Properties/Resources.resx b/AgroBase/AgroBase/Properties/Resources.resx
index cd04ec8b8..6d25c899b 100644
--- a/AgroBase/AgroBase/Properties/Resources.resx
+++ b/AgroBase/AgroBase/Properties/Resources.resx
@@ -127,6 +127,12 @@
..\Imagens\loading.gif;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+ ..\Imagens\mcp.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Imagens\robo_superior.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
..\Imagens\rosa_dos_ventos.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
diff --git a/AgroBase/AgroBase/Python/Scripts/gps-viewer.py b/AgroBase/AgroBase/Python/Scripts/gps-viewer.py
index 79a5a1432..cc774717e 100644
--- a/AgroBase/AgroBase/Python/Scripts/gps-viewer.py
+++ b/AgroBase/AgroBase/Python/Scripts/gps-viewer.py
@@ -20,7 +20,7 @@ pathFiles = sys.argv[1]
fileName = sys.argv[2]
outputName = sys.argv[3]
outputMapName = sys.argv[4]
-apiEndpoit = sys.argv[5]
+topico_gps = sys.argv[5]
pastaSaida = 'Python/Output/'
center = [0, 0]
@@ -54,7 +54,7 @@ with open(caminho_completo_html, 'r+') as arquivo_html:
raise ValueError("Não foi possível encontrar o ID do mapa no arquivo HTML.")
# Script JavaScript para adicionar ao HTML, com o ID do mapa substituído
- script_atualizacao_marcador = f"""
+ script_desenha_trajeotria = f"""
+ """
+ # Script JavaScript para adicionar ao HTML, com o ID do mapa substituído
+ script_atualizacao_marcador = f"""
+
"""
# Inserir o script no conteúdo HTML
-conteudo_atualizado = conteudo_html.replace('