[Support] buanet - ioBroker


Recommended Posts

  • 2 weeks later...

Hello, Thanks for creating this container.

 

i migrated from a raspberry pi4 to my unraid machine - so far i can see all adapters are working except of one:

i cant install amazon.dash button adapter , see log - seems that some pcap stuff is missing, any ideas?

 

Dankeschön

 

 

$ ./iobroker add amazon-dash  --host 4ce650a5a078
NPM version: 6.14.10
npm install [email protected] --loglevel error --unsafe-perm --prefix "/opt/iobroker" (System call)
WARNING: apt does not have a stable CLI interface. Use with caution in scripts.
E: Sperrdatei /var/lib/dpkg/lock-frontend konnte nicht geöffnet werden. - open (13: Keine Berechtigung)E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), are you root?
../authenticate_pam.cc: In function ‘void after_doing_auth(uv_work_t*, int)’:../authenticate_pam.cc:107:87: warning: ‘v8::Local<v8::Value> Nan::MakeCallback(v8::Local<v8::Object>, v8::Local<v8::Function>, int, v8::Local<v8::Value>*)’ is deprecated [-Wdeprecated-declarations]   Nan::MakeCallback(Nan::GetCurrentContext()->Global(), Nan::New(m->callback), 1, args);                                                                                       ^In file included from ../authenticate_pam.cc:23:../../nan/nan.h:1026:46: note: declared here   NAN_DEPRECATED inline v8::Local<v8::Value> MakeCallback(                                              ^~~~~~~~~~~~../authenticate_pam.cc:107:87: warning: ‘v8::Local<v8::Value> Nan::MakeCallback(v8::Local<v8::Object>, v8::Local<v8::Function>, int, v8::Local<v8::Value>*)’ is deprecated [-Wdeprecated-declarations]   Nan::MakeCallback(Nan::GetCurrentContext()->Global(), Nan::New(m->callback), 1, args);                                                                                       ^In file included from ../authenticate_pam.cc:23:../../nan/nan.h:1026:46: note: declared here   NAN_DEPRECATED inline v8::Local<v8::Value> MakeCallback(                                              ^~~~~~~~~~~~
../authenticate_pam.cc: In function ‘Nan::NAN_METHOD_RETURN_TYPE Authenticate(Nan::NAN_METHOD_ARGS_TYPE)’:../authenticate_pam.cc:147:83: warning: ‘v8::Local<v8::Value> v8::Object::Get(v8::Local<v8::Value>)’ is deprecated: Use maybe version [-Wdeprecated-declarations]   Local<Value> res = options->Get(Nan::New<String>("serviceName").ToLocalChecked());                                                                                   ^
In file included from /opt/iobroker/.cache/node-gyp/12.20.1/include/node/v8-internal.h:14,                 from /opt/iobroker/.cache/node-gyp/12.20.1/include/node/v8.h:27,                 from /opt/iobroker/.cache/node-gyp/12.20.1/include/node/node.h:67,                 from ../../nan/nan.h:56,                 from ../authenticate_pam.cc:23:/opt/iobroker/.cache/node-gyp/12.20.1/include/node/v8.h:3553:51: note: declared here   V8_DEPRECATED("Use maybe version", Local<Value> Get(Local<Value> key));                                                   ^~~/opt/iobroker/.cache/node-gyp/12.20.1/include/node/v8config.h:328:3: note: in definition of macro ‘V8_DEPRECATED’   declarator __attribute__((deprecated(message)))   ^~~~~~~~~~../authenticate_pam.cc:150:69: error: no matching function for call to ‘v8::String::WriteUtf8(char [128], long unsigned int)’    serviceName->WriteUtf8(m->serviceName, sizeof(m->serviceName) - 1);                                                                     ^
In file included from /opt/iobroker/.cache/node-gyp/12.20.1/include/node/node.h:67,                 from ../../nan/nan.h:56,                 from ../authenticate_pam.cc:23:/opt/iobroker/.cache/node-gyp/12.20.1/include/node/v8.h:2878:7: note: candidate: ‘int v8::String::WriteUtf8(v8::Isolate*, char*, int, int*, int) const’   int WriteUtf8(Isolate* isolate, char* buffer, int length = -1,       ^~~~~~~~~/opt/iobroker/.cache/node-gyp/12.20.1/include/node/v8.h:2878:7: note:   no known conversion for argument 1 from ‘char [128]’ to ‘v8::Isolate*’../authenticate_pam.cc:152:69: warning: ‘v8::Local<v8::Value> v8::Object::Get(v8::Local<v8::Value>)’ is deprecated: Use maybe version [-Wdeprecated-declarations]   res = options->Get(Nan::New<String>("remoteHost").ToLocalChecked());                                                                     ^In file included from /opt/iobroker/.cache/node-gyp/12.20.1/include/node/v8-internal.h:14,                 from /opt/iobroker/.cache/node-gyp/12.20.1/include/node/v8.h:27,                 from /opt/iobroker/.cache/node-gyp/12.20.1/include/node/node.h:67,                 from ../../nan/nan.h:56,                 from ../authenticate_pam.cc:23:/opt/iobroker/.cache/node-gyp/12.20.1/include/node/v8.h:3553:51: note: declared here   V8_DEPRECATED("Use maybe version", Local<Value> Get(Local<Value> key));                                                   ^~~/opt/iobroker/.cache/node-gyp/12.20.1/include/node/v8config.h:328:3: note: in definition of macro ‘V8_DEPRECATED’   declarator __attribute__((deprecated(message)))   ^~~~~~~~~~../authenticate_pam.cc:155:66: error: no matching function for call to ‘v8::String::WriteUtf8(char [128], long unsigned int)’    remoteHost->WriteUtf8(m->remoteHost, sizeof(m->remoteHost) - 1);                                                                  ^In file included from /opt/iobroker/.cache/node-gyp/12.20.1/include/node/node.h:67,                 from ../../nan/nan.h:56,                 from ../authenticate_pam.cc:23:/opt/iobroker/.cache/node-gyp/12.20.1/include/node/v8.h:2878:7: note: candidate: ‘int v8::String::WriteUtf8(v8::Isolate*, char*, int, int*, int) const’   int WriteUtf8(Isolate* isolate, char* buffer, int length = -1,       ^~~~~~~~~/opt/iobroker/.cache/node-gyp/12.20.1/include/node/v8.h:2878:7: note:   no known conversion for argument 1 from ‘char [128]’ to ‘v8::Isolate*’../authenticate_pam.cc:160:58: error: no matching function for call to ‘v8::String::WriteUtf8(char [128], long unsigned int)’  username->WriteUtf8(m->username, sizeof(m->username) - 1);                                                          ^In file included from /opt/iobroker/.cache/node-gyp/12.20.1/include/node/node.h:67,                 from ../../nan/nan.h:56,                 from ../authenticate_pam.cc:23:/opt/iobroker/.cache/node-gyp/12.20.1/include/node/v8.h:2878:7: note: candidate: ‘int v8::String::WriteUtf8(v8::Isolate*, char*, int, int*, int) const’   int WriteUtf8(Isolate* isolate, char* buffer, int length = -1,       ^~~~~~~~~/opt/iobroker/.cache/node-gyp/12.20.1/include/node/v8.h:2878:7: note:   no known conversion for argument 1 from ‘char [128]’ to ‘v8::Isolate*’../authenticate_pam.cc:161:58: error: no matching function for call to ‘v8::String::WriteUtf8(char [128], long unsigned int)’  password->WriteUtf8(m->password, sizeof(m->password) - 1);                                                          ^In file included from /opt/iobroker/.cache/node-gyp/12.20.1/include/node/node.h:67,                 from ../../nan/nan.h:56,                 from ../authenticate_pam.cc:23:/opt/iobroker/.cache/node-gyp/12.20.1/include/node/v8.h:2878:7: note: candidate: ‘int v8::String::WriteUtf8(v8::Isolate*, char*, int, int*, int) const’   int WriteUtf8(Isolate* isolate, char* buffer, int length = -1,       ^~~~~~~~~/opt/iobroker/.cache/node-gyp/12.20.1/include/node/v8.h:2878:7: note:   no known conversion for argument 1 from ‘char [128]’ to ‘v8::Isolate*’
../authenticate_pam.cc: At global scope:../authenticate_pam.cc:170:11: error: variable or field ‘init’ declared void void init(Handle<Object> exports) {           ^~~~~~../authenticate_pam.cc:170:11: error: ‘Handle’ was not declared in this scope
../authenticate_pam.cc:170:11: note: suggested alternative: ‘rand_r’ void init(Handle<Object> exports) {           ^~~~~~           rand_r
../authenticate_pam.cc:170:24: error: expected primary-expression before ‘>’ token void init(Handle<Object> exports) {                        ^../authenticate_pam.cc:170:26: error: ‘exports’ was not declared in this scope void init(Handle<Object> exports) {                          ^~~~~~~
In file included from ../../nan/nan.h:56,                 from ../authenticate_pam.cc:23:../authenticate_pam.cc:175:31: error: ‘init’ was not declared in this scope NODE_MODULE(authenticate_pam, init);                               ^~~~/opt/iobroker/.cache/node-gyp/12.20.1/include/node/node.h:737:36: note: in definition of macro ‘NODE_MODULE_X’       (node::addon_register_func) (regfunc),                          \                                    ^~~~~~~../authenticate_pam.cc:175:1: note: in expansion of macro ‘NODE_MODULE’ NODE_MODULE(authenticate_pam, init); ^~~~~~~~~~~
../authenticate_pam.cc:175:31: note: suggested alternative: ‘int’ NODE_MODULE(authenticate_pam, init);                               ^~~~/opt/iobroker/.cache/node-gyp/12.20.1/include/node/node.h:737:36: note: in definition of macro ‘NODE_MODULE_X’       (node::addon_register_func) (regfunc),                          \                                    ^~~~~~~../authenticate_pam.cc:175:1: note: in expansion of macro ‘NODE_MODULE’ NODE_MODULE(authenticate_pam, init); ^~~~~~~~~~~
make: *** [authenticate_pam.target.mk:111: Release/obj.target/authenticate_pam/authenticate_pam.o] Fehler 1
gyp
 ERR! build error 
gyp
 ERR! stack Error: `make` failed with exit code: 2gyp ERR! stack     at ChildProcess.onExit (/usr/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:194:23)gyp ERR! stack     at ChildProcess.emit (events.js:314:20)gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:276:12)
gyp ERR! System Linux 5.10.1-Unraidgyp ERR! command "/usr/bin/node" "/usr/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"gyp ERR! cwd /opt/iobroker/node_modules/authenticate-pamgyp ERR! node -v v12.20.1gyp ERR! node-gyp -v v5.1.0
gyp ERR! not ok 
../src/linux/BluetoothSerialPort.cc:18:14: error: variable or field ‘InitAll’ declared void void InitAll(Handle<Object> exports) {              ^~~~~~../src/linux/BluetoothSerialPort.cc:18:14: error: ‘Handle’ was not declared in this scope
../src/linux/BluetoothSerialPort.cc:18:14: note: suggested alternative: ‘rand_r’ void InitAll(Handle<Object> exports) {              ^~~~~~              rand_r../src/linux/BluetoothSerialPort.cc:18:27: error: expected primary-expression before ‘>’ token void InitAll(Handle<Object> exports) {                           ^../src/linux/BluetoothSerialPort.cc:18:29: error: ‘exports’ was not declared in this scope void InitAll(Handle<Object> exports) {                             ^~~~~~~
In file included from ../src/linux/BluetoothSerialPort.cc:12:../src/linux/BluetoothSerialPort.cc:23:34: error: ‘InitAll’ was not declared in this scope NODE_MODULE(BluetoothSerialPort, InitAll)                                  ^~~~~~~/opt/iobroker/.cache/node-gyp/12.20.1/include/node/node.h:737:36: note: in definition of macro ‘NODE_MODULE_X’       (node::addon_register_func) (regfunc),                          \                                    ^~~~~~~../src/linux/BluetoothSerialPort.cc:23:1: note: in expansion of macro ‘NODE_MODULE’ NODE_MODULE(BluetoothSerialPort, InitAll) ^~~~~~~~~~~
make: *** [BluetoothSerialPort.target.mk:117: Release/obj.target/BluetoothSerialPort/src/linux/BluetoothSerialPort.o] Fehler 1
gyp
 ERR! build error 
gyp
 ERR! stack Error: `make` failed with exit code: 2gyp ERR! stack     at ChildProcess.onExit (/usr/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:194:23)gyp ERR! stack     at ChildProcess.emit (events.js:314:20)gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:276:12)
gyp ERR! System Linux 5.10.1-Unraidgyp ERR! command "/usr/bin/node" "/usr/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "configure" "build"gyp ERR! cwd /opt/iobroker/node_modules/node-bluetoothgyp ERR! node -v v12.20.1gyp ERR! node-gyp -v v5.1.0gyp ERR! not ok 
../pcap_binding.cc:2:10: fatal error: pcap/pcap.h: Datei oder Verzeichnis nicht gefunden #include <pcap/pcap.h>          ^~~~~~~~~~~~~
compilation terminated.
make: *** [pcap_binding.target.mk:112: Release/obj.target/pcap_binding/pcap_binding.o] Fehler 1gyp
 ERR! build error 
gyp
 ERR! stack Error: `make` failed with exit code: 2gyp ERR! stack     at ChildProcess.onExit (/usr/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:194:23)gyp ERR! stack     at ChildProcess.emit (events.js:314:20)gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:276:12)
gyp ERR! System Linux 5.10.1-Unraidgyp ERR! command "/usr/bin/node" "/usr/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"gyp ERR! cwd /opt/iobroker/node_modules/pcapgyp ERR! 
node -v v12.20.1gyp ERR! node-gyp -v v5.1.0gyp ERR! not ok 
npm
 ERR! code ELIFECYCLEnpm ERR! errno 1
npm 
ERR! [email protected] install: `node-gyp rebuild`npm ERR! Exit status 1npm ERR! npm ERR! Failed at the [email protected] install script.npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:npm ERR!     /opt/iobroker/.npm/_logs/2021-01-18T12_46_24_490Z-debug.log
ERROR: host.4ce650a5a078 Cannot install [email protected]: 1
ERROR: process exited with code 25

 

Link to comment

This is a general problem for multiple iobroker users with those amazon dash buttons:

https://www.google.com/search?q=iobroker+Unable+to+acquire+the+dpkg+frontend+lock

 

First step would be to open the Container's console (click on its icon) and install pcap by the following command:

apt-get update && apt-get install libpcap-dev

 

If this still does not help read this:

https://forum.iobroker.net/topic/11021/amazon-dash-adapter-spinnt-sich-aus/7?_=1610987374725&lang=de

 

A general question: Are you using the container in bridge or host mode? @_Marlon_ complained that it worked for him with Shelly adapters only in host mode.

Link to comment

 after :

apt-get update && apt-get install libpcap-dev

 

i was able to install and start the adapter , it „listens“ only when i start iobroker in „host“ mode , i think there is a broadcast address or port which must be opened. i have something similar in Tvheadend :

 

 

Host vs. Bridge

If you use IPTV, SAT>IP or HDHomeRun, you need to create the container with --net=host and remove the -p flags. This is because to work with these services Tvheadend requires a multicast address of 239.255.255.250 and a UDP port of 1900 which at this time is not possible with docker bridge mode. If you have other host services which also use multicast such as SSDP/DLNA/Emby you may experience stabilty problems. These can be solved by giving tvheadend its own IP using macavlan.

 

is there a significant disadvantage when i start iobroker in host mode? (bridge is more isolated, but is there another thing)

 

when i restart iobroker i must again run apt-get update &&...... is there another way around this?

 

Thanks!

Link to comment
1 minute ago, reppmic said:

when i restart iobroker i must again run apt-get update &&...... is there another way around this?

 

 

Create a script with the following content:

#!/bin/bash
apt-get update
apt-get -y install libpcap-dev

 

And save it under /mnt/user/appdata/iobroker/scripts/userscript_everystart.sh.

 

The ioBroker container executes this script if it exists. Credits go to @ich777. He found the line ;)

 

4 minutes ago, reppmic said:

it „listens“ only when i start iobroker in „host“ mode

 

Ok, then I will make "host" the default setting of the container.

  • Like 1
  • Thanks 1
Link to comment

Hallo, ich habe ein neues Mainboard installiert... Asus TUF B550 Plus. Diese lief mit Unraid 6.8.3 absolut nicht. Das Netzwerk funktionierte nicht.

Jetzt habe ich ein upgrade auf 6.9 rc2 gemacht und soweit läuft alles. Nur den ioBroker bekomme ich nicht zum laufen.

Kann es hier aufgrund der unraid version zu Problemen kommen ? Der iobroker Container startet aber ich kommen nicht auf die Admin Seite.

 

So sieht es aus wenn ich die admin seite aufrufe

 

Error: Cannot find module './lib/mediaType'
Require stack:
- /opt/iobroker/node_modules/iobroker.admin/node_modules/negotiator/index.js
- /opt/iobroker/node_modules/iobroker.admin/node_modules/accepts/index.js
- /opt/iobroker/node_modules/iobroker.admin/node_modules/express/lib/request.js
- /opt/iobroker/node_modules/iobroker.admin/node_modules/express/lib/express.js
- /opt/iobroker/node_modules/iobroker.admin/node_modules/express/index.js
- /opt/iobroker/node_modules/iobroker.admin/lib/web.js
- /opt/iobroker/node_modules/iobroker.admin/main.js
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:815:15)
    at Function.Module._load (internal/modules/cjs/loader.js:667:27)
    at Module.require (internal/modules/cjs/loader.js:887:19)
    at require (internal/modules/cjs/helpers.js:74:18)
    at loadModule (/opt/iobroker/node_modules/iobroker.admin/node_modules/negotiator/index.js:114:16)
    at Negotiator.mediaTypes (/opt/iobroker/node_modules/iobroker.admin/node_modules/negotiator/index.js:76:29)
    at Accepts.type.Accepts.types (/opt/iobroker/node_modules/iobroker.admin/node_modules/accepts/index.js:105:33)
    at IncomingMessage.req.accepts (/opt/iobroker/node_modules/iobroker.admin/node_modules/express/lib/request.js:134:23)
    at ServerResponse.res.format (/opt/iobroker/node_modules/iobroker.admin/node_modules/express/lib/response.js:668:11)
    at ServerResponse.redirect (/opt/iobroker/node_modules/iobroker.admin/node_modules/express/lib/response.js:929:8)

 

Danke und Grüße 

Edited by platoboos
Link to comment
8 minutes ago, platoboos said:

Der iobroker Container startet aber ich kommen nicht auf die Admin Seite.

 

Hast du den Appdata Share mal mit und mal ohne Cache konfiguriert? Der Pfad /opt/iobroker verlinkt auf /mnt/user/appdata/iobroker/data:

IMG_20210125_190653.jpg.f8e5fc203c01f3f3998943b44c939089.jpg

 

Dort werden die Dateien bei der Installation reinkopiert.

 

Also welche Cache Option hat "appdata"?

 

Wenn du bei den Freigaben rechts auf den Ordner klickst um die Dateien in "appdata" anzuschauen, welchen Standort habe sie? Nur Cache, eine bestimmte Disk, beides?

 

Link to comment
1 hour ago, platoboos said:

Beides versucht ohne Erfolg

 

Mach das bitte nicht. Ich hab nur gefragt ^^

 

Wenn du im laufenden Betrieb den Cache deaktivierst, dann kann der Container nur noch auf /mnt/disk1/appdata oder /mnt/disk2/appdata zugreifen. Die Dateien auf /mnt/cache/appdata kennt er dann nicht mehr. Der Container installiert sich also neu oder weil er gerade noch läuft, meldet er "ich kann nichts finden, Fehler".

 

Daher bitte niemals die Cache-Einstellung ändern, wenn VMs oder Docker-Container noch laufen.

 

Nutzt du einen Cache mit zwei SSDs? Dann stoppe in den Einstellungen den Docker-Dienst, stell appdata beim Cache auf "Bevorzugen" und starte den Mover. Dieser schiebt dann denn kompletten appdata Ordner auf die SSDs. Wenn er damit fertig ist, darfst du unter "Speicherort" nur noch "cache" lesen dürfen. Erst danach startest du wieder den Docker-Dienst.

 

Warum sehe ich denn auf deinem Screenshot unter appdata keinen iobroker Ordner? Hattest du den Container schon wieder gelöscht oder hat der erst gar keinen Ordner erstellt? Das wäre tatsächlich komisch. Ich habe ihn gerade testweise unter 6.8.3 installiert und der Ordner wurde erstellt:

1188552885_2021-01-2520_40_57.thumb.png.67428c5cc0c769d84fdfeca198193e42.png

 

Link to comment
3 hours ago, platoboos said:

Das ist bei mir alles im "docker" Ordner

Achso. Das kannst du dir sparen. Da der appdata Share nur von Docker genutzt wird.

 

Lösch mal den ioBroker Container und lösch die ioBroker Dateien. Entweder von Hand oder mit dem CleanUp Appdata Plugin. Dann noch mal schauen ob die Dateien wirklich gelöscht sind. Danach kannst du den Container wieder installieren. Hat es jetzt geklappt?

 

Übrigens solltest du den Cache von appdata entweder deaktivieren oder bevorzugt wählen (und dann natürlich regelmäßig Backups machen). Die Dateien auf Array und Cache verstreut zu haben, bringt dir ja nichts, da sie alle schlussendlich auf dem Array landen werden.

Link to comment
4 hours ago, mgutt said:

@ich777

Hast du eine Idee was da falsch läuft? Ich verstehe zb nicht warum der auf den Pfad /dev/disk/by-id zugreift?!

Nicht wirklich, kenn mich wie gesagt nicht richtig mit ioBoker aus, gibt's da evtl Plugins die auf die Disks zugreifen wollen damit zB eine Übersicht im Dashboard ersichtlich ist?

 

Ihr könntet ja mal versuchen den Pfad /dev/disk/by-id vom Host in den Container mit read only zu mounten (aber wirklich im Read only da der evtl dann was in Unraid zerschießen kann).

 

EDIT: Hab hier den thread gefunden weiß aber nicht ob er euch weiterhilft, find den ein wenig chaotisch... Klick

Link to comment
13 hours ago, platoboos said:

Nein funktioniert nicht...

Ich habe gerade bei mir in die Logs geschaut. Die Fehler habe ich auch, aber der Container läuft trotzdem. Sicher, dass du nicht auf die WebGUI kommst? Für mich liest sich das so, als suche der Container auf der Platte nur nach einem Update von NodeJS. 

Link to comment
49 minutes ago, mgutt said:

Wir hast du das gemacht? Beim Docker Container Repository buanet/iobroker:v5.0.0 oder wie?

Mit diesem Befehl iobroker gestoppt "pkill -u iobroker" und mit "iobroker restore" das Backup angestossen. Die Datei aus dem Backup Ordner kann man dann auswählen mit z.B. 0 oder 1 je nachdem wie viele Dateien im Ordner liegen. Die Backup Datei muss in /opt/iobroker/data/backups liegen. 

Danach Neustart von dem iobroker Container. 

 

PS: Ich habe mir ein neues Board und CPU bestellt Intel Core i7-9700 und ASRock B365M PRO4. Bin mit AMD überhaupt nicht zufrieden...

Link to comment

I installed the docker, no changes except putting it on a custom bridge network, but it seems to get stuck on Step 5

 

Tail of log:

 

------------------------------------------------------------
----- Step 5 of 5: ioBroker startup -----
------------------------------------------------------------

Starting ioBroker...

host.542b55ffc9ab check instance "system.adapter.admin.0" for host "a2e2a3097bbf"
host.542b55ffc9ab check instance "system.adapter.discovery.0" for host "a2e2a3097bbf"
host.542b55ffc9ab check instance "system.adapter.info.0" for host "a2e2a3097bbf"

 

Then just sits here. Any thoughts? Something about the hostname change.

Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.