mirror of
https://github.com/qelectrotech/qelectrotech-source-mirror.git
synced 2025-12-18 05:00:33 +01:00
Compare commits
205 Commits
pixel_size
...
0.9-dev-20
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d7e1813ff3 | ||
|
|
d6e8a1c133 | ||
|
|
eee1c7fff7 | ||
|
|
af5d5e0aa3 | ||
|
|
e9931511de | ||
|
|
acf1e713fc | ||
|
|
21524ee528 | ||
|
|
f0919d5fa6 | ||
|
|
695e4d95aa | ||
|
|
02769fe881 | ||
|
|
e57ba72d7c | ||
|
|
1b3599e673 | ||
|
|
d0d6b299e4 | ||
|
|
56b7458951 | ||
|
|
74a187e659 | ||
|
|
8b62318588 | ||
|
|
31466a65ba | ||
|
|
a7160ba9b7 | ||
|
|
cacbce6cec | ||
|
|
6fd5209364 | ||
|
|
57695bbbea | ||
|
|
5a497cd6b5 | ||
|
|
cae7cbdbd8 | ||
|
|
b65ff83805 | ||
|
|
c1f2b345e4 | ||
|
|
f9600f5dbb | ||
|
|
6e81451b46 | ||
|
|
2a7848e1ca | ||
|
|
c22abdd2f8 | ||
|
|
9e2d4abd01 | ||
|
|
acd151c9ca | ||
|
|
ab724377c0 | ||
|
|
4c5d27e9af | ||
|
|
8af850df44 | ||
|
|
8a1f509b62 | ||
|
|
cf479bc113 | ||
|
|
08e206deeb | ||
|
|
ba1e8381f2 | ||
|
|
d082c9c9a6 | ||
|
|
84631b238c | ||
|
|
aa50224b00 | ||
|
|
d44486f468 | ||
|
|
2a307a74da | ||
|
|
1a2fea84ff | ||
|
|
f603b229db | ||
|
|
fa753449ad | ||
|
|
fe19b270f9 | ||
|
|
5c96c6d773 | ||
|
|
637d0bf6de | ||
|
|
d917c697b0 | ||
|
|
1be21782fd | ||
|
|
2e15372aab | ||
|
|
5c6b9f1829 | ||
|
|
9c55378f49 | ||
|
|
e367436358 | ||
|
|
c9ebdace04 | ||
|
|
3e6e38e566 | ||
|
|
c83d4e5aea | ||
|
|
0e9d09c62e | ||
|
|
fe66caf5ac | ||
|
|
c58d61594b | ||
|
|
3cd3535c18 | ||
|
|
97ecd26749 | ||
|
|
2e70d2e599 | ||
|
|
3dd0986c4f | ||
|
|
899caeabe9 | ||
|
|
a2b73ea2bc | ||
|
|
bf32219154 | ||
|
|
6a669f1399 | ||
|
|
4ab1ed7fc9 | ||
|
|
89d03e5503 | ||
|
|
9a6e1d2a61 | ||
|
|
fad6983cf1 | ||
|
|
daeec311b2 | ||
|
|
db8c76c184 | ||
|
|
2ec7e6aa45 | ||
|
|
021aea1d8b | ||
|
|
1f4dfdba3f | ||
|
|
f0694f0daf | ||
|
|
baf412614c | ||
|
|
e1865fec62 | ||
|
|
1e255af3be | ||
|
|
1c99cb5c2d | ||
|
|
4ca21a3bff | ||
|
|
189d92f2a9 | ||
|
|
34a7e0f3fe | ||
|
|
17290ae3b3 | ||
|
|
8b65d240db | ||
|
|
bce6a43427 | ||
|
|
1c52cd71a9 | ||
|
|
898edb6c12 | ||
|
|
de3fa988b1 | ||
|
|
b42aec7bdf | ||
|
|
ea46a92f3f | ||
|
|
6197d0215a | ||
|
|
6fd342e265 | ||
|
|
395d968ab5 | ||
|
|
e41b7f7d6c | ||
|
|
fabf0109ff | ||
|
|
cabfdc0a54 | ||
|
|
6f4122f65c | ||
|
|
ce21a812c0 | ||
|
|
5a51f6bace | ||
|
|
a38d97896d | ||
|
|
c4b0c1435c | ||
|
|
a4445c411d | ||
|
|
e92bd36f9b | ||
|
|
61ff8884e0 | ||
|
|
b8af2e9d1d | ||
|
|
8084fa8f29 | ||
|
|
1066e55262 | ||
|
|
edfb23be23 | ||
|
|
516a1a7826 | ||
|
|
be1d87c5d4 | ||
|
|
b48ba939de | ||
|
|
b1ad16d482 | ||
|
|
ceb54fbc6a | ||
|
|
e42bcb5ec9 | ||
|
|
9cbc3a2265 | ||
|
|
e93990a6e4 | ||
|
|
bb1a0767a3 | ||
|
|
0b7afe4781 | ||
|
|
9a3de1f780 | ||
|
|
0ff099fb52 | ||
|
|
05a2e4b37b | ||
|
|
830a70ac94 | ||
|
|
e63a8c8482 | ||
|
|
855162bb03 | ||
|
|
d2c15cf57b | ||
|
|
02ce65b3a9 | ||
|
|
0bf1f89c13 | ||
|
|
74c3ab1b82 | ||
|
|
062ae6e9eb | ||
|
|
dcc5a4dd0b | ||
|
|
ba638f52e5 | ||
|
|
ffd904749e | ||
|
|
c037d3ea0a | ||
|
|
087c8980f0 | ||
|
|
70f50ff362 | ||
|
|
904e805935 | ||
|
|
04d478882e | ||
|
|
35cd790c8f | ||
|
|
1a26133a78 | ||
|
|
a028b774bf | ||
|
|
72b7bc210f | ||
|
|
5fe2efca1a | ||
|
|
3ce09775ac | ||
|
|
3a53c2d53b | ||
|
|
7ba27ec9d9 | ||
|
|
d74dcdea6c | ||
|
|
9cb86a7e54 | ||
|
|
826991e6d6 | ||
|
|
53157afd12 | ||
|
|
a165a3cb28 | ||
|
|
1d20018a26 | ||
|
|
c02238cab8 | ||
|
|
35a40f1aba | ||
|
|
6e55a630b4 | ||
|
|
9a17c8f72c | ||
|
|
04c17ac5ac | ||
|
|
686bd8dff1 | ||
|
|
bd635b8e43 | ||
|
|
0bd0476cb1 | ||
|
|
d562ca8a39 | ||
|
|
a31bd6eb0d | ||
|
|
d114b097bf | ||
|
|
993eb58d46 | ||
|
|
7aa048740b | ||
|
|
306f4c7b54 | ||
|
|
4334c8ec8c | ||
|
|
7aabdd1781 | ||
|
|
bb48c4607a | ||
|
|
0600b85e8a | ||
|
|
688d9fe4c1 | ||
|
|
683095173e | ||
|
|
0d70ed53a9 | ||
|
|
7d33b48b3a | ||
|
|
d7e2ef283a | ||
|
|
782eaff4d2 | ||
|
|
9bd2ea22f3 | ||
|
|
ee4ce5db4e | ||
|
|
b90d06aa5c | ||
|
|
ba47a11282 | ||
|
|
4041073c96 | ||
|
|
8830204c0c | ||
|
|
d932f8ea01 | ||
|
|
8cfa852077 | ||
|
|
1a75eb19d0 | ||
|
|
ae9faa2192 | ||
|
|
e087270b6d | ||
|
|
b8263b03bc | ||
|
|
09694ddec9 | ||
|
|
1572fafabe | ||
|
|
5709f469fc | ||
|
|
2ea9f8a2c6 | ||
|
|
a2e5989f3b | ||
|
|
02b385e0b7 | ||
|
|
e2454faa36 | ||
|
|
57e80e7b5e | ||
|
|
6505330b5f | ||
|
|
cd914c8726 | ||
|
|
beee4a06c8 | ||
|
|
291e163ee2 | ||
|
|
6e68e6047a | ||
|
|
ce8bd7fae3 |
5
.github/workflows/publish-edge-snap.yml
vendored
5
.github/workflows/publish-edge-snap.yml
vendored
@@ -12,10 +12,9 @@ jobs:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: snapcore/action-build@v1
|
||||
id: build
|
||||
with:
|
||||
snapcraft-args: --enable-experimental-extensions
|
||||
- uses: snapcore/action-publish@v1
|
||||
env:
|
||||
SNAPCRAFT_STORE_CREDENTIALS: ${{ secrets.STORE_LOGIN }}
|
||||
with:
|
||||
store_login: ${{ secrets.STORE_LOGIN }}
|
||||
snap: ${{ steps.build.outputs.snap }}
|
||||
release: edge
|
||||
|
||||
@@ -147,14 +147,6 @@ install(DIRECTORY examples DESTINATION share/qelectrotech)
|
||||
install(DIRECTORY titleblocks DESTINATION share/qelectrotech)
|
||||
install(FILES LICENSE ELEMENTS.LICENSE CREDIT README ChangeLog DESTINATION share/doc/qelectrotech)
|
||||
install(FILES misc/qelectrotech.desktop DESTINATION share/applications)
|
||||
install(FILES misc/x-qet-element.xml
|
||||
misc/x-qet-project.xml
|
||||
misc/x-qet-titleblock.xml
|
||||
DESTINATION share/mime/application)
|
||||
install(FILES misc/x-qet-element.desktop
|
||||
misc/x-qet-project.desktop
|
||||
misc/x-qet-titleblock.desktop
|
||||
DESTINATION share/mimelnk/application)
|
||||
install(FILES misc/qelectrotech.xml DESTINATION share/mime/packages)
|
||||
install(FILES misc/qelectrotech.appdata.xml DESTINATION ${QET_APPDATA_PATH})
|
||||
install(FILES ${QM_FILES} DESTINATION ${QET_LANG_PATH})
|
||||
|
||||
@@ -3,6 +3,31 @@ Changelog
|
||||
|
||||
If by accident I have forgotten to credit someone in the CHANGELOG, email me and I will fix it.
|
||||
|
||||
__3.3.4__
|
||||
---------
|
||||
|
||||
* Fix compilation under Qt 6.2+ and stricter Qt compile settings. - _Christoph Cullmann_
|
||||
|
||||
__3.3.3__
|
||||
---------
|
||||
|
||||
* Support for Qt 6.3+ - Fixed deprecated `QCryptographicHash::addData()` that will only support `QByteArrayView` going further. - _Moody Liu_
|
||||
|
||||
__3.3.2__
|
||||
---------
|
||||
|
||||
* Fixed crash caused by sending a `writeAck` on a removed connection. - _Nicolas Werner_
|
||||
|
||||
__3.3.1__
|
||||
---------
|
||||
|
||||
* Added support for _AppImage_ dynamic executable paths. - _Michael Klein_
|
||||
|
||||
__3.3.0__
|
||||
---------
|
||||
|
||||
* Fixed message fragmentation issue causing crashes and incorrectly / inconsistently received messages. - _Nils Jeisecke_
|
||||
|
||||
__3.2.0__
|
||||
---------
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
cmake_minimum_required(VERSION 3.7.0)
|
||||
cmake_minimum_required(VERSION 3.12.0)
|
||||
|
||||
project(SingleApplication LANGUAGES CXX)
|
||||
|
||||
@@ -38,3 +38,13 @@ endif()
|
||||
|
||||
target_compile_definitions(${PROJECT_NAME} PUBLIC QAPPLICATION_CLASS=${QAPPLICATION_CLASS})
|
||||
target_include_directories(${PROJECT_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
|
||||
target_compile_definitions(${PROJECT_NAME} PRIVATE
|
||||
QT_NO_CAST_TO_ASCII
|
||||
QT_NO_CAST_FROM_ASCII
|
||||
QT_NO_URL_CAST_FROM_STRING
|
||||
QT_NO_CAST_FROM_BYTEARRAY
|
||||
QT_USE_QSTRINGBUILDER
|
||||
QT_NO_NARROWING_CONVERSIONS_IN_CONNECT
|
||||
QT_NO_KEYWORDS
|
||||
QT_NO_FOREACH
|
||||
)
|
||||
|
||||
@@ -35,7 +35,7 @@ To include the library files I would recommend that you add it as a git
|
||||
submodule to your project. Here is how:
|
||||
|
||||
```bash
|
||||
git submodule add git@github.com:itay-grudev/SingleApplication.git singleapplication
|
||||
git submodule add https://github.com/itay-grudev/SingleApplication.git singleapplication
|
||||
```
|
||||
|
||||
**Qmake:**
|
||||
@@ -182,7 +182,8 @@ bool SingleApplication::sendMessage( QByteArray message, int timeout = 100 )
|
||||
```
|
||||
|
||||
Sends `message` to the Primary Instance. Uses `timeout` as a the maximum timeout
|
||||
in milliseconds for blocking functions
|
||||
in milliseconds for blocking functions. Returns `true` if the message has been sent
|
||||
successfully. If the message can't be sent or the function timeouts - returns `false`.
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
// Allow secondary instances
|
||||
SingleApplication app( argc, argv );
|
||||
|
||||
qWarning() << "Started a new instance";
|
||||
|
||||
@@ -248,10 +248,7 @@ bool SingleApplication::sendMessage( const QByteArray &message, int timeout )
|
||||
if( ! d->connectToPrimary( timeout, SingleApplicationPrivate::Reconnect ) )
|
||||
return false;
|
||||
|
||||
d->socket->write( message );
|
||||
bool dataWritten = d->socket->waitForBytesWritten( timeout );
|
||||
d->socket->flush();
|
||||
return dataWritten;
|
||||
return d->writeConfirmedMessage( timeout, message );
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -131,21 +131,34 @@ QString SingleApplicationPrivate::getUsername()
|
||||
void SingleApplicationPrivate::genBlockServerName()
|
||||
{
|
||||
QCryptographicHash appData( QCryptographicHash::Sha256 );
|
||||
#if QT_VERSION < QT_VERSION_CHECK(6, 3, 0)
|
||||
appData.addData( "SingleApplication", 17 );
|
||||
#else
|
||||
appData.addData( QByteArrayView{"SingleApplication"} );
|
||||
#endif
|
||||
appData.addData( SingleApplication::app_t::applicationName().toUtf8() );
|
||||
appData.addData( SingleApplication::app_t::organizationName().toUtf8() );
|
||||
appData.addData( SingleApplication::app_t::organizationDomain().toUtf8() );
|
||||
|
||||
if ( ! appDataList.isEmpty() )
|
||||
appData.addData( appDataList.join( "" ).toUtf8() );
|
||||
appData.addData( appDataList.join(QString()).toUtf8() );
|
||||
|
||||
if( ! (options & SingleApplication::Mode::ExcludeAppVersion) ){
|
||||
appData.addData( SingleApplication::app_t::applicationVersion().toUtf8() );
|
||||
}
|
||||
|
||||
if( ! (options & SingleApplication::Mode::ExcludeAppPath) ){
|
||||
#ifdef Q_OS_WIN
|
||||
#if defined(Q_OS_WIN)
|
||||
appData.addData( SingleApplication::app_t::applicationFilePath().toLower().toUtf8() );
|
||||
#elif defined(Q_OS_LINUX)
|
||||
// If the application is running as an AppImage then the APPIMAGE env var should be used
|
||||
// instead of applicationPath() as each instance is launched with its own executable path
|
||||
const QByteArray appImagePath = qgetenv( "APPIMAGE" );
|
||||
if( appImagePath.isEmpty() ){ // Not running as AppImage: use path to executable file
|
||||
appData.addData( SingleApplication::app_t::applicationFilePath().toUtf8() );
|
||||
} else { // Running as AppImage: Use absolute path to AppImage file
|
||||
appData.addData( appImagePath );
|
||||
};
|
||||
#else
|
||||
appData.addData( SingleApplication::app_t::applicationFilePath().toUtf8() );
|
||||
#endif
|
||||
@@ -158,7 +171,7 @@ void SingleApplicationPrivate::genBlockServerName()
|
||||
|
||||
// Replace the backslash in RFC 2045 Base64 [a-zA-Z0-9+/=] to comply with
|
||||
// server naming requirements.
|
||||
blockServerName = appData.result().toBase64().replace("/", "_");
|
||||
blockServerName = QString::fromUtf8(appData.result().toBase64().replace("/", "_"));
|
||||
}
|
||||
|
||||
void SingleApplicationPrivate::initializeMemoryBlock() const
|
||||
@@ -257,26 +270,52 @@ bool SingleApplicationPrivate::connectToPrimary( int msecs, ConnectionType conne
|
||||
writeStream << static_cast<quint8>(connectionType);
|
||||
writeStream << instanceNumber;
|
||||
#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
|
||||
quint16 checksum = qChecksum(QByteArray(initMsg, static_cast<quint32>(initMsg.length())));
|
||||
quint16 checksum = qChecksum(QByteArray(initMsg.constData(), static_cast<quint32>(initMsg.length())));
|
||||
#else
|
||||
quint16 checksum = qChecksum(initMsg.constData(), static_cast<quint32>(initMsg.length()));
|
||||
#endif
|
||||
writeStream << checksum;
|
||||
|
||||
// The header indicates the message length that follows
|
||||
return writeConfirmedMessage( static_cast<int>(msecs - time.elapsed()), initMsg );
|
||||
}
|
||||
|
||||
void SingleApplicationPrivate::writeAck( QLocalSocket *sock ) {
|
||||
sock->putChar('\n');
|
||||
}
|
||||
|
||||
bool SingleApplicationPrivate::writeConfirmedMessage (int msecs, const QByteArray &msg)
|
||||
{
|
||||
QElapsedTimer time;
|
||||
time.start();
|
||||
|
||||
// Frame 1: The header indicates the message length that follows
|
||||
QByteArray header;
|
||||
QDataStream headerStream(&header, QIODevice::WriteOnly);
|
||||
|
||||
#if (QT_VERSION >= QT_VERSION_CHECK(5, 6, 0))
|
||||
headerStream.setVersion(QDataStream::Qt_5_6);
|
||||
#endif
|
||||
headerStream << static_cast <quint64>( initMsg.length() );
|
||||
headerStream << static_cast <quint64>( msg.length() );
|
||||
|
||||
socket->write( header );
|
||||
socket->write( initMsg );
|
||||
bool result = socket->waitForBytesWritten( static_cast<int>(msecs - time.elapsed()) );
|
||||
if( ! writeConfirmedFrame( static_cast<int>(msecs - time.elapsed()), header ))
|
||||
return false;
|
||||
|
||||
// Frame 2: The message
|
||||
return writeConfirmedFrame( static_cast<int>(msecs - time.elapsed()), msg );
|
||||
}
|
||||
|
||||
bool SingleApplicationPrivate::writeConfirmedFrame( int msecs, const QByteArray &msg )
|
||||
{
|
||||
socket->write( msg );
|
||||
socket->flush();
|
||||
return result;
|
||||
|
||||
bool result = socket->waitForReadyRead( msecs ); // await ack byte
|
||||
if (result) {
|
||||
socket->read( 1 );
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
quint16 SingleApplicationPrivate::blockChecksum() const
|
||||
@@ -321,33 +360,36 @@ void SingleApplicationPrivate::slotConnectionEstablished()
|
||||
QLocalSocket *nextConnSocket = server->nextPendingConnection();
|
||||
connectionMap.insert(nextConnSocket, ConnectionInfo());
|
||||
|
||||
QObject::connect(nextConnSocket, &QLocalSocket::aboutToClose,
|
||||
QObject::connect(nextConnSocket, &QLocalSocket::aboutToClose, this,
|
||||
[nextConnSocket, this](){
|
||||
auto &info = connectionMap[nextConnSocket];
|
||||
Q_EMIT this->slotClientConnectionClosed( nextConnSocket, info.instanceId );
|
||||
this->slotClientConnectionClosed( nextConnSocket, info.instanceId );
|
||||
}
|
||||
);
|
||||
|
||||
QObject::connect(nextConnSocket, &QLocalSocket::disconnected, nextConnSocket, &QLocalSocket::deleteLater);
|
||||
|
||||
QObject::connect(nextConnSocket, &QLocalSocket::destroyed,
|
||||
QObject::connect(nextConnSocket, &QLocalSocket::destroyed, this,
|
||||
[nextConnSocket, this](){
|
||||
connectionMap.remove(nextConnSocket);
|
||||
}
|
||||
);
|
||||
|
||||
QObject::connect(nextConnSocket, &QLocalSocket::readyRead,
|
||||
QObject::connect(nextConnSocket, &QLocalSocket::readyRead, this,
|
||||
[nextConnSocket, this](){
|
||||
auto &info = connectionMap[nextConnSocket];
|
||||
switch(info.stage){
|
||||
case StageHeader:
|
||||
readInitMessageHeader(nextConnSocket);
|
||||
case StageInitHeader:
|
||||
readMessageHeader( nextConnSocket, StageInitBody );
|
||||
break;
|
||||
case StageBody:
|
||||
case StageInitBody:
|
||||
readInitMessageBody(nextConnSocket);
|
||||
break;
|
||||
case StageConnected:
|
||||
Q_EMIT this->slotDataAvailable( nextConnSocket, info.instanceId );
|
||||
case StageConnectedHeader:
|
||||
readMessageHeader( nextConnSocket, StageConnectedBody );
|
||||
break;
|
||||
case StageConnectedBody:
|
||||
this->slotDataAvailable( nextConnSocket, info.instanceId );
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
@@ -356,7 +398,7 @@ void SingleApplicationPrivate::slotConnectionEstablished()
|
||||
);
|
||||
}
|
||||
|
||||
void SingleApplicationPrivate::readInitMessageHeader( QLocalSocket *sock )
|
||||
void SingleApplicationPrivate::readMessageHeader( QLocalSocket *sock, SingleApplicationPrivate::ConnectionStage nextStage )
|
||||
{
|
||||
if (!connectionMap.contains( sock )){
|
||||
return;
|
||||
@@ -376,29 +418,35 @@ void SingleApplicationPrivate::readInitMessageHeader( QLocalSocket *sock )
|
||||
quint64 msgLen = 0;
|
||||
headerStream >> msgLen;
|
||||
ConnectionInfo &info = connectionMap[sock];
|
||||
info.stage = StageBody;
|
||||
info.stage = nextStage;
|
||||
info.msgLen = msgLen;
|
||||
|
||||
if ( sock->bytesAvailable() >= (qint64) msgLen ){
|
||||
readInitMessageBody( sock );
|
||||
writeAck( sock );
|
||||
}
|
||||
|
||||
bool SingleApplicationPrivate::isFrameComplete( QLocalSocket *sock )
|
||||
{
|
||||
if (!connectionMap.contains( sock )){
|
||||
return false;
|
||||
}
|
||||
|
||||
ConnectionInfo &info = connectionMap[sock];
|
||||
if( sock->bytesAvailable() < ( qint64 )info.msgLen ){
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void SingleApplicationPrivate::readInitMessageBody( QLocalSocket *sock )
|
||||
{
|
||||
Q_Q(SingleApplication);
|
||||
|
||||
if (!connectionMap.contains( sock )){
|
||||
if( !isFrameComplete( sock ) )
|
||||
return;
|
||||
}
|
||||
|
||||
ConnectionInfo &info = connectionMap[sock];
|
||||
if( sock->bytesAvailable() < ( qint64 )info.msgLen ){
|
||||
return;
|
||||
}
|
||||
|
||||
// Read the message body
|
||||
QByteArray msgBytes = sock->read(info.msgLen);
|
||||
QByteArray msgBytes = sock->readAll();
|
||||
QDataStream readStream(msgBytes);
|
||||
|
||||
#if (QT_VERSION >= QT_VERSION_CHECK(5, 6, 0))
|
||||
@@ -424,7 +472,7 @@ void SingleApplicationPrivate::readInitMessageBody( QLocalSocket *sock )
|
||||
readStream >> msgChecksum;
|
||||
|
||||
#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
|
||||
const quint16 actualChecksum = qChecksum(QByteArray(msgBytes, static_cast<quint32>(msgBytes.length() - sizeof(quint16))));
|
||||
const quint16 actualChecksum = qChecksum(QByteArray(msgBytes.constData(), static_cast<quint32>(msgBytes.length() - sizeof(quint16))));
|
||||
#else
|
||||
const quint16 actualChecksum = qChecksum(msgBytes.constData(), static_cast<quint32>(msgBytes.length() - sizeof(quint16)));
|
||||
#endif
|
||||
@@ -438,8 +486,9 @@ void SingleApplicationPrivate::readInitMessageBody( QLocalSocket *sock )
|
||||
return;
|
||||
}
|
||||
|
||||
ConnectionInfo &info = connectionMap[sock];
|
||||
info.instanceId = instanceId;
|
||||
info.stage = StageConnected;
|
||||
info.stage = StageConnectedHeader;
|
||||
|
||||
if( connectionType == NewInstance ||
|
||||
( connectionType == SecondaryInstance &&
|
||||
@@ -448,21 +497,30 @@ void SingleApplicationPrivate::readInitMessageBody( QLocalSocket *sock )
|
||||
Q_EMIT q->instanceStarted();
|
||||
}
|
||||
|
||||
if (sock->bytesAvailable() > 0){
|
||||
Q_EMIT this->slotDataAvailable( sock, instanceId );
|
||||
}
|
||||
writeAck( sock );
|
||||
}
|
||||
|
||||
void SingleApplicationPrivate::slotDataAvailable( QLocalSocket *dataSocket, quint32 instanceId )
|
||||
{
|
||||
Q_Q(SingleApplication);
|
||||
Q_EMIT q->receivedMessage( instanceId, dataSocket->readAll() );
|
||||
|
||||
if ( !isFrameComplete( dataSocket ) )
|
||||
return;
|
||||
|
||||
const QByteArray message = dataSocket->readAll();
|
||||
|
||||
writeAck( dataSocket );
|
||||
|
||||
ConnectionInfo &info = connectionMap[dataSocket];
|
||||
info.stage = StageConnectedHeader;
|
||||
|
||||
Q_EMIT q->receivedMessage( instanceId, message);
|
||||
}
|
||||
|
||||
void SingleApplicationPrivate::slotClientConnectionClosed( QLocalSocket *closedSocket, quint32 instanceId )
|
||||
{
|
||||
if( closedSocket->bytesAvailable() > 0 )
|
||||
Q_EMIT slotDataAvailable( closedSocket, instanceId );
|
||||
slotDataAvailable( closedSocket, instanceId );
|
||||
}
|
||||
|
||||
void SingleApplicationPrivate::randomSleep()
|
||||
@@ -471,7 +529,7 @@ void SingleApplicationPrivate::randomSleep()
|
||||
QThread::msleep( QRandomGenerator::global()->bounded( 8u, 18u ));
|
||||
#else
|
||||
qsrand( QDateTime::currentMSecsSinceEpoch() % std::numeric_limits<uint>::max() );
|
||||
QThread::msleep( 8 + static_cast <unsigned long>( static_cast <float>( qrand() ) / RAND_MAX * 10 ));
|
||||
QThread::msleep( qrand() % 11 + 8);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
@@ -61,9 +61,10 @@ public:
|
||||
Reconnect = 3
|
||||
};
|
||||
enum ConnectionStage : quint8 {
|
||||
StageHeader = 0,
|
||||
StageBody = 1,
|
||||
StageConnected = 2,
|
||||
StageInitHeader = 0,
|
||||
StageInitBody = 1,
|
||||
StageConnectedHeader = 2,
|
||||
StageConnectedBody = 3,
|
||||
};
|
||||
Q_DECLARE_PUBLIC(SingleApplication)
|
||||
|
||||
@@ -79,8 +80,12 @@ public:
|
||||
quint16 blockChecksum() const;
|
||||
qint64 primaryPid() const;
|
||||
QString primaryUser() const;
|
||||
void readInitMessageHeader(QLocalSocket *socket);
|
||||
bool isFrameComplete(QLocalSocket *sock);
|
||||
void readMessageHeader(QLocalSocket *socket, ConnectionStage nextStage);
|
||||
void readInitMessageBody(QLocalSocket *socket);
|
||||
void writeAck(QLocalSocket *sock);
|
||||
bool writeConfirmedFrame(int msecs, const QByteArray &msg);
|
||||
bool writeConfirmedMessage(int msecs, const QByteArray &msg);
|
||||
static void randomSleep();
|
||||
void addAppData(const QString &data);
|
||||
QStringList appData() const;
|
||||
|
||||
@@ -13,6 +13,8 @@
|
||||
"--socket=fallback-x11",
|
||||
"--device=dri",
|
||||
"--share=ipc",
|
||||
"--share=network",
|
||||
"--socket=cups",
|
||||
"--filesystem=host"
|
||||
],
|
||||
"modules": [
|
||||
|
||||
@@ -1,17 +1,17 @@
|
||||
From 2a390b5188fe070295090b1bd37273d12963b371 Mon Sep 17 00:00:00 2001
|
||||
From 14f0685ddcf3a7d64bb85a3e9a9ac97c369bb508 Mon Sep 17 00:00:00 2001
|
||||
From: Laurent Trinques <scorpio@qelectrotech.org>
|
||||
Date: Sat, 26 Sep 2020 22:52:52 +0200
|
||||
Subject: [PATCH] build: Fix the installation paths
|
||||
|
||||
---
|
||||
qelectrotech.pro | 14 +++++++-------
|
||||
1 file changed, 7 insertions(+), 7 deletions(-)
|
||||
qelectrotech.pro | 10 +++++-----
|
||||
1 file changed, 5 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/qelectrotech.pro b/qelectrotech.pro
|
||||
index 2901a30d5..1019a9870 100644
|
||||
index 7baddbb08..5dcda04b6 100644
|
||||
--- a/qelectrotech.pro
|
||||
+++ b/qelectrotech.pro
|
||||
@@ -5,20 +5,20 @@
|
||||
@@ -5,18 +5,18 @@
|
||||
# Chemins utilises pour la compilation et l'installation de QET
|
||||
unix {
|
||||
# Chemins UNIX
|
||||
@@ -25,12 +25,8 @@ index 2901a30d5..1019a9870 100644
|
||||
QET_LANG_PATH = 'share/qelectrotech/lang/'
|
||||
QET_EXAMPLES_PATH = 'share/qelectrotech/examples/'
|
||||
- QET_LICENSE_PATH = 'doc/qelectrotech/'
|
||||
- QET_MIME_XML_PATH = '../share/mime/application/'
|
||||
- QET_MIME_DESKTOP_PATH = '../share/mimelnk/application/'
|
||||
- QET_MIME_PACKAGE_PATH = '../share/mime/packages/'
|
||||
+ QET_LICENSE_PATH = 'share/doc/qelectrotech/'
|
||||
+ QET_MIME_XML_PATH = 'share/mime/application/'
|
||||
+ QET_MIME_DESKTOP_PATH = 'share/mimelnk/application/'
|
||||
+ QET_MIME_PACKAGE_PATH = 'share/mime/packages/'
|
||||
QET_DESKTOP_PATH = 'share/applications/'
|
||||
QET_ICONS_PATH = 'share/icons/hicolor/'
|
||||
@@ -40,5 +36,5 @@ index 2901a30d5..1019a9870 100644
|
||||
}
|
||||
win32 {
|
||||
--
|
||||
2.28.0
|
||||
2.35.1
|
||||
|
||||
|
||||
@@ -1,17 +1,5 @@
|
||||
#!/bin/sh
|
||||
|
||||
# check if _only_ the correct framework snap is connected
|
||||
framework_name=$(grep "name:" $SNAP/kf5/meta/snap.yaml | cut -d" " -f2)
|
||||
if [ "$framework_name" != "kde-frameworks-5-qt-5-15-3-core20" ]; then
|
||||
downloads_dir=$(xdg-user-dir DOWNLOAD)
|
||||
test ! -d "$downloads_dir" && mkdir -p "$downloads_dir"
|
||||
instructions_file="snap.qelectrotech.update-instructions.html"
|
||||
target="$downloads_dir/$instructions_file"
|
||||
cp "$SNAP/update-instructions/$instructions_file" "$target"
|
||||
xdg-open "$target"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# migrate .qet directory from SNAP_USER_DATA to SNAP_USER_COMMON
|
||||
from="$SNAP_USER_DATA/.qet"
|
||||
to="$SNAP_USER_COMMON/.qet"
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -56,12 +56,6 @@ parts:
|
||||
organize:
|
||||
'*': bin/
|
||||
|
||||
update-instructions:
|
||||
plugin: dump
|
||||
source: build-aux/snap/local/update-instructions
|
||||
organize:
|
||||
'*': update-instructions/
|
||||
|
||||
qet-tb-generator:
|
||||
plugin: python
|
||||
source: https://github.com/raulroda/qet_tb_generator-plugin.git
|
||||
@@ -82,7 +76,7 @@ parts:
|
||||
- rsync
|
||||
override-build: |
|
||||
rsync -a --ignore-existing /snap/kde-frameworks-5-qt-5-15-3-core20-sdk/current/ /
|
||||
|
||||
|
||||
dxf-to-qet:
|
||||
after: [kde-sdk-setup]
|
||||
plugin: nil
|
||||
@@ -101,16 +95,14 @@ parts:
|
||||
build-packages:
|
||||
- git
|
||||
- libsqlite3-dev
|
||||
override-pull: |
|
||||
snapcraftctl pull
|
||||
override-build: |
|
||||
displayed_version=$(grep "displayedVersion" sources/qet.h | tr -d "\";" | cut -d" " -f5)
|
||||
snap_version="${displayed_version}~$(git rev-parse --short=8 HEAD)"
|
||||
snap_version="${displayed_version}-g$(git rev-parse --short=8 HEAD)"
|
||||
modified_displayed_version="${snap_version}.snap"
|
||||
sed -i -E "s|const QString displayedVersion =.*|const QString displayedVersion =\"$modified_displayed_version\";|" sources/qet.h
|
||||
snapcraftctl set-version "$snap_version"
|
||||
override-build: |
|
||||
qmake "$SNAPCRAFT_PART_SRC/qelectrotech.pro"
|
||||
make -j$(nproc)
|
||||
make -j${SNAPCRAFT_PARALLEL_BUILD_COUNT}
|
||||
make install INSTALL_ROOT="$SNAPCRAFT_PART_INSTALL"
|
||||
override-stage: |
|
||||
snapcraftctl stage
|
||||
|
||||
@@ -47,8 +47,6 @@ endif()
|
||||
endif()
|
||||
|
||||
message("QET_LICENSE_PATH " ${QET_LICENSE_PATH})
|
||||
message("QET_MIME_XML_PATH " ${QET_MIME_XML_PATH})
|
||||
message("QET_MIME_DESKTOP_PATH " ${QET_MIME_DESKTOP_PATH})
|
||||
message("QET_MIME_PACKAGE_PATH " ${QET_MIME_PACKAGE_PATH})
|
||||
message("QET_DESKTOP_PATH " ${QET_DESKTOP_PATH})
|
||||
message("QET_ICONS_PATH " ${QET_ICONS_PATH})
|
||||
|
||||
@@ -28,8 +28,6 @@ if(UNIX AND NOT APPLE)
|
||||
set(QET_LANG_PATH "share/qelectrotech/lang/")
|
||||
set(QET_EXAMPLES_PATH "share/qelectrotech/examples/")
|
||||
set(QET_LICENSE_PATH "doc/qelectrotech/")
|
||||
set(QET_MIME_XML_PATH "../share/mime/application/")
|
||||
set(QET_MIME_DESKTOP_PATH "../share/mimelnk/application/")
|
||||
set(QET_MIME_PACKAGE_PATH "../share/mime/packages/")
|
||||
set(QET_DESKTOP_PATH "share/applications/")
|
||||
set(QET_ICONS_PATH "share/icons/hicolor/")
|
||||
@@ -47,8 +45,6 @@ if(APPLE)
|
||||
set(QET_LANG_PATH "../Resources/lang/")
|
||||
set(QET_EXAMPLES_PATH "share/qelectrotech/examples/")
|
||||
set(QET_LICENSE_PATH "doc/qelectrotech/")
|
||||
set(QET_MIME_XML_PATH "../share/mime/application/")
|
||||
set(QET_MIME_DESKTOP_PATH "../share/mimelnk/application/")
|
||||
set(QET_DESKTOP_PATH "share/applications/")
|
||||
set(QET_ICONS_PATH "share/icons/hicolor/")
|
||||
set(QET_MAN_PATH "man/")
|
||||
|
||||
@@ -0,0 +1,223 @@
|
||||
<definition type="element" width="550" hotspot_y="65" height="70" link_type="simple" version="0.90" hotspot_x="265">
|
||||
<uuid uuid="{c99de07b-0296-4e75-8a90-3b5c533510e8}"/>
|
||||
<names>
|
||||
<name lang="en">24 pin connector female+male</name>
|
||||
<name lang="hu">24 tűs csatlakozó anya+apa</name>
|
||||
</names>
|
||||
<elementInformations>
|
||||
<elementInformation show="1" name="manufacturer">Weidmüller</elementInformation>
|
||||
<elementInformation show="1" name="supplier"></elementInformation>
|
||||
<elementInformation show="1" name="manufacturer_reference">HDC HE 24 MS 25-48</elementInformation>
|
||||
<elementInformation show="1" name="quantity"></elementInformation>
|
||||
<elementInformation show="1" name="description"></elementInformation>
|
||||
<elementInformation show="1" name="label"></elementInformation>
|
||||
<elementInformation show="1" name="comment"></elementInformation>
|
||||
<elementInformation show="1" name="plant"></elementInformation>
|
||||
<elementInformation show="1" name="designation"></elementInformation>
|
||||
<elementInformation show="1" name="machine_manufacturer_reference"></elementInformation>
|
||||
<elementInformation show="1" name="unity"></elementInformation>
|
||||
</elementInformations>
|
||||
<informations></informations>
|
||||
<description>
|
||||
<dynamic_text frame="false" z="1" text_from="ElementInfo" rotation="0" keep_visual_rotation="false" uuid="{c28b53eb-1e17-4e90-b9af-ff86d19d1a56}" Valignment="AlignTop" Halignment="AlignLeft" y="-90" text_width="-1" x="-270" font="Sans Serif,8,-1,5,50,0,0,0,0,0">
|
||||
<text></text>
|
||||
<info_name>label</info_name>
|
||||
</dynamic_text>
|
||||
<line y1="-36" y2="-45" length2="1.5" antialias="false" x2="-240" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="-240" length1="1.5"/>
|
||||
<text rotation="0" color="#000000" text="12" y="-40" x="1" font="Sans Serif,7,-1,5,50,0,0,0,0,0"/>
|
||||
<text rotation="0" color="#000000" text="20" y="-40" x="161" font="Sans Serif,7,-1,5,50,0,0,0,0,0"/>
|
||||
<text rotation="0" color="#000000" text="4" y="-40" x="-159" font="Sans Serif,7,-1,5,50,0,0,0,0,0"/>
|
||||
<text rotation="0" color="#000000" text="8" y="-40" x="-79" font="Sans Serif,7,-1,5,50,0,0,0,0,0"/>
|
||||
<text rotation="0" color="#000000" text="3" y="-40" x="-179" font="Sans Serif,7,-1,5,50,0,0,0,0,0"/>
|
||||
<text rotation="0" color="#000000" text="2" y="-40" x="-199" font="Sans Serif,7,-1,5,50,0,0,0,0,0"/>
|
||||
<line y1="-36" y2="-45" length2="1.5" antialias="false" x2="-20" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="-20" length1="1.5"/>
|
||||
<line y1="-25" y2="-14" length2="1.5" antialias="false" x2="-160" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="-160" length1="1.5"/>
|
||||
<line y1="-25" y2="-14" length2="1.5" antialias="false" x2="-200" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="-200" length1="1.5"/>
|
||||
<line y1="-36" y2="-45" length2="1.5" antialias="false" x2="0" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="0" length1="1.5"/>
|
||||
<line y1="-25" y2="-14" length2="1.5" antialias="false" x2="0" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="0" length1="1.5"/>
|
||||
<line y1="-25" y2="-14" length2="1.5" antialias="false" x2="-80" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="-80" length1="1.5"/>
|
||||
<line y1="-25" y2="-14" length2="1.5" antialias="false" x2="-240" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="-240" length1="1.5"/>
|
||||
<line y1="-36" y2="-45" length2="1.5" antialias="false" x2="260" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="260" length1="1.5"/>
|
||||
<line y1="-25" y2="-14" length2="1.5" antialias="false" x2="160" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="160" length1="1.5"/>
|
||||
<line y1="-25" y2="-14" length2="1.5" antialias="false" x2="-120" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="-120" length1="1.5"/>
|
||||
<line y1="-36" y2="-45" length2="1.5" antialias="false" x2="-40" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="-40" length1="1.5"/>
|
||||
<arc antialias="true" width="6" height="6" start="-180" angle="-180" style="line-style:normal;line-weight:normal;filling:none;color:black" y="-35" x="-3"/>
|
||||
<line y1="-25" y2="-14" length2="1.5" antialias="false" x2="-40" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="-40" length1="1.5"/>
|
||||
<rect rx="0" antialias="false" width="2" height="7" style="line-style:normal;line-weight:normal;filling:black;color:black" y="-32" ry="0" x="-161"/>
|
||||
<rect rx="0" antialias="false" width="2" height="7" style="line-style:normal;line-weight:normal;filling:black;color:black" y="-32" ry="0" x="-201"/>
|
||||
<line y1="-25" y2="-14" length2="1.5" antialias="false" x2="260" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="260" length1="1.5"/>
|
||||
<arc antialias="true" width="6" height="6" start="-180" angle="-180" style="line-style:normal;line-weight:normal;filling:none;color:black" y="-35" x="-243"/>
|
||||
<text rotation="0" color="#000000" text="18" y="-40" x="121" font="Sans Serif,7,-1,5,50,0,0,0,0,0"/>
|
||||
<line y1="-25" y2="-14" length2="1.5" antialias="false" x2="240" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="240" length1="1.5"/>
|
||||
<rect rx="0" antialias="false" width="2" height="7" style="line-style:normal;line-weight:normal;filling:black;color:black" y="-32" ry="0" x="-241"/>
|
||||
<text rotation="0" color="#000000" text="10" y="-40" x="-39" font="Sans Serif,7,-1,5,50,0,0,0,0,0"/>
|
||||
<text rotation="0" color="#000000" text="7" y="-40" x="-99" font="Sans Serif,7,-1,5,50,0,0,0,0,0"/>
|
||||
<arc antialias="true" width="6" height="6" start="-180" angle="-180" style="line-style:normal;line-weight:normal;filling:none;color:black" y="-35" x="257"/>
|
||||
<rect rx="0" antialias="false" width="2" height="7" style="line-style:normal;line-weight:normal;filling:black;color:black" y="-32" ry="0" x="-41"/>
|
||||
<line y1="-36" y2="-45" length2="1.5" antialias="false" x2="-60" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="-60" length1="1.5"/>
|
||||
<line y1="-25" y2="-14" length2="1.5" antialias="false" x2="-180" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="-180" length1="1.5"/>
|
||||
<line y1="-36" y2="-45" length2="1.5" antialias="false" x2="240" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="240" length1="1.5"/>
|
||||
<text rotation="0" color="#000000" text="19" y="-40" x="141" font="Sans Serif,7,-1,5,50,0,0,0,0,0"/>
|
||||
<text rotation="0" color="#000000" text="6" y="-40" x="-119" font="Sans Serif,7,-1,5,50,0,0,0,0,0"/>
|
||||
<rect rx="0" antialias="false" width="2" height="7" style="line-style:normal;line-weight:normal;filling:black;color:black" y="-32" ry="0" x="-121"/>
|
||||
<text rotation="0" color="#000000" text="11" y="-40" x="-19" font="Sans Serif,7,-1,5,50,0,0,0,0,0"/>
|
||||
<text rotation="0" color="#000000" text="5" y="-40" x="-139" font="Sans Serif,7,-1,5,50,0,0,0,0,0"/>
|
||||
<rect rx="0" antialias="false" width="2" height="7" style="line-style:normal;line-weight:normal;filling:black;color:black" y="-32" ry="0" x="-1"/>
|
||||
<text rotation="0" color="#000000" text="24" y="-40" x="241" font="Sans Serif,7,-1,5,50,0,0,0,0,0"/>
|
||||
<rect rx="0" antialias="false" width="2" height="7" style="line-style:normal;line-weight:normal;filling:black;color:black" y="-32" ry="0" x="-81"/>
|
||||
<rect rx="0" antialias="false" width="2" height="7" style="line-style:normal;line-weight:normal;filling:black;color:black" y="-32" ry="0" x="259"/>
|
||||
<line y1="-25" y2="-14" length2="1.5" antialias="false" x2="40" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="40" length1="1.5"/>
|
||||
<rect rx="0" antialias="false" width="2" height="7" style="line-style:normal;line-weight:normal;filling:black;color:black" y="-32" ry="0" x="-181"/>
|
||||
<text rotation="0" color="#000000" text="16" y="-40" x="81" font="Sans Serif,7,-1,5,50,0,0,0,0,0"/>
|
||||
<line y1="-36" y2="-45" length2="1.5" antialias="false" x2="-80" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="-80" length1="1.5"/>
|
||||
<line y1="-36" y2="-45" length2="1.5" antialias="false" x2="220" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="220" length1="1.5"/>
|
||||
<line y1="-36" y2="-45" length2="1.5" antialias="false" x2="-100" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="-100" length1="1.5"/>
|
||||
<line y1="-37" y2="-32" length2="1.5" antialias="false" x2="270" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="270" length1="1.5"/>
|
||||
<line y1="-25" y2="-14" length2="1.5" antialias="false" x2="-20" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="-20" length1="1.5"/>
|
||||
<line y1="-25" y2="-14" length2="1.5" antialias="false" x2="-100" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="-100" length1="1.5"/>
|
||||
<text rotation="0" color="#000000" text="15" y="-40" x="61" font="Sans Serif,7,-1,5,50,0,0,0,0,0"/>
|
||||
<text rotation="0" color="#000000" text="23" y="-40" x="221" font="Sans Serif,7,-1,5,50,0,0,0,0,0"/>
|
||||
<rect rx="0" antialias="false" width="2" height="7" style="line-style:normal;line-weight:normal;filling:black;color:black" y="-32" ry="0" x="-21"/>
|
||||
<arc antialias="true" width="6" height="6" start="-180" angle="-180" style="line-style:normal;line-weight:normal;filling:none;color:black" y="-35" x="-23"/>
|
||||
<text rotation="0" color="#000000" text="22" y="-40" x="201" font="Sans Serif,7,-1,5,50,0,0,0,0,0"/>
|
||||
<text rotation="0" color="#000000" text="14" y="-40" x="41" font="Sans Serif,7,-1,5,50,0,0,0,0,0"/>
|
||||
<line y1="-32" y2="-32" length2="1.5" antialias="false" x2="274" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="266" length1="1.5"/>
|
||||
<line y1="-25" y2="-14" length2="1.5" antialias="false" x2="80" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="80" length1="1.5"/>
|
||||
<rect rx="0" antialias="false" width="2" height="7" style="line-style:normal;line-weight:normal;filling:black;color:black" y="-32" ry="0" x="-101"/>
|
||||
<line y1="-30" y2="-30" length2="1.5" antialias="false" x2="272" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="268" length1="1.5"/>
|
||||
<rect rx="0" antialias="false" width="2" height="7" style="line-style:normal;line-weight:normal;filling:black;color:black" y="-32" ry="0" x="79"/>
|
||||
<line y1="-25" y2="-14" length2="1.5" antialias="false" x2="-140" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="-140" length1="1.5"/>
|
||||
<text rotation="0" color="#000000" text="21" y="-40" x="181" font="Sans Serif,7,-1,5,50,0,0,0,0,0"/>
|
||||
<line y1="-25" y2="-14" length2="1.5" antialias="false" x2="-60" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="-60" length1="1.5"/>
|
||||
<arc antialias="true" width="6" height="6" start="-180" angle="-180" style="line-style:normal;line-weight:normal;filling:none;color:black" y="-35" x="-43"/>
|
||||
<text rotation="0" color="#000000" text="13" y="-40" x="21" font="Sans Serif,7,-1,5,50,0,0,0,0,0"/>
|
||||
<text rotation="0" color="#000000" text="9" y="-40" x="-59" font="Sans Serif,7,-1,5,50,0,0,0,0,0"/>
|
||||
<rect rx="0" antialias="false" width="2" height="7" style="line-style:normal;line-weight:normal;filling:black;color:black" y="-32" ry="0" x="-61"/>
|
||||
<arc antialias="true" width="6" height="6" start="-180" angle="-180" style="line-style:normal;line-weight:normal;filling:none;color:black" y="-35" x="-63"/>
|
||||
<rect rx="0" antialias="false" width="2" height="7" style="line-style:normal;line-weight:normal;filling:black;color:black" y="-32" ry="0" x="-141"/>
|
||||
<line y1="-28" y2="-28" length2="1.5" antialias="false" x2="271" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="269" length1="1.5"/>
|
||||
<text rotation="0" color="#000000" text="17" y="-40" x="101" font="Sans Serif,7,-1,5,50,0,0,0,0,0"/>
|
||||
<arc antialias="true" width="6" height="6" start="-180" angle="-180" style="line-style:normal;line-weight:normal;filling:none;color:black" y="-35" x="237"/>
|
||||
<arc antialias="true" width="6" height="6" start="-180" angle="-180" style="line-style:normal;line-weight:normal;filling:none;color:black" y="-35" x="-83"/>
|
||||
<line y1="-25" y2="-14" length2="1.5" antialias="false" x2="120" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="120" length1="1.5"/>
|
||||
<line y1="-36" y2="-45" length2="1.5" antialias="false" x2="200" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="200" length1="1.5"/>
|
||||
<arc antialias="true" width="6" height="6" start="-180" angle="-180" style="line-style:normal;line-weight:normal;filling:none;color:black" y="-35" x="-103"/>
|
||||
<line y1="-25" y2="-14" length2="1.5" antialias="false" x2="200" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="200" length1="1.5"/>
|
||||
<rect rx="0" antialias="false" width="2" height="7" style="line-style:normal;line-weight:normal;filling:black;color:black" y="-32" ry="0" x="39"/>
|
||||
<line y1="-25" y2="-14" length2="1.5" antialias="false" x2="60" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="60" length1="1.5"/>
|
||||
<line y1="-36" y2="-45" length2="1.5" antialias="false" x2="180" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="180" length1="1.5"/>
|
||||
<rect rx="0" antialias="false" width="2" height="7" style="line-style:normal;line-weight:normal;filling:black;color:black" y="-32" ry="0" x="119"/>
|
||||
<line y1="-25" y2="-14" length2="1.5" antialias="false" x2="-220" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="-220" length1="1.5"/>
|
||||
<line y1="-36" y2="-45" length2="1.5" antialias="false" x2="-120" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="-120" length1="1.5"/>
|
||||
<rect rx="0" antialias="false" width="2" height="7" style="line-style:normal;line-weight:normal;filling:black;color:black" y="-32" ry="0" x="199"/>
|
||||
<line y1="-36" y2="-45" length2="1.5" antialias="false" x2="-140" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="-140" length1="1.5"/>
|
||||
<line y1="-36" y2="-45" length2="1.5" antialias="false" x2="160" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="160" length1="1.5"/>
|
||||
<line y1="-36" y2="-45" length2="1.5" antialias="false" x2="-160" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="-160" length1="1.5"/>
|
||||
<rect rx="0" antialias="false" width="2" height="7" style="line-style:normal;line-weight:normal;filling:black;color:black" y="-32" ry="0" x="59"/>
|
||||
<line y1="-36" y2="-45" length2="1.5" antialias="false" x2="-180" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="-180" length1="1.5"/>
|
||||
<rect rx="0" antialias="false" width="2" height="7" style="line-style:normal;line-weight:normal;filling:black;color:black" y="-32" ry="0" x="159"/>
|
||||
<rect rx="0" antialias="false" width="2" height="7" style="line-style:normal;line-weight:normal;filling:black;color:black" y="-32" ry="0" x="239"/>
|
||||
<line y1="-36" y2="-45" length2="1.5" antialias="false" x2="-200" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="-200" length1="1.5"/>
|
||||
<line y1="-36" y2="-45" length2="1.5" antialias="false" x2="140" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="140" length1="1.5"/>
|
||||
<line y1="-36" y2="-45" length2="1.5" antialias="false" x2="-220" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="-220" length1="1.5"/>
|
||||
<line y1="-25" y2="-14" length2="1.5" antialias="false" x2="220" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="220" length1="1.5"/>
|
||||
<line y1="-25" y2="-14" length2="1.5" antialias="false" x2="140" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="140" length1="1.5"/>
|
||||
<arc antialias="true" width="6" height="6" start="-180" angle="-180" style="line-style:normal;line-weight:normal;filling:none;color:black" y="-35" x="217"/>
|
||||
<rect rx="0" antialias="false" width="2" height="7" style="line-style:normal;line-weight:normal;filling:black;color:black" y="-32" ry="0" x="139"/>
|
||||
<rect rx="0" antialias="false" width="2" height="7" style="line-style:normal;line-weight:normal;filling:black;color:black" y="-32" ry="0" x="219"/>
|
||||
<line y1="-25" y2="-14" length2="1.5" antialias="false" x2="100" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="100" length1="1.5"/>
|
||||
<line y1="-25" y2="-14" length2="1.5" antialias="false" x2="180" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="180" length1="1.5"/>
|
||||
<arc antialias="true" width="6" height="6" start="-180" angle="-180" style="line-style:normal;line-weight:normal;filling:none;color:black" y="-35" x="-123"/>
|
||||
<arc antialias="true" width="6" height="6" start="-180" angle="-180" style="line-style:normal;line-weight:normal;filling:none;color:black" y="-35" x="197"/>
|
||||
<arc antialias="true" width="6" height="6" start="-180" angle="-180" style="line-style:normal;line-weight:normal;filling:none;color:black" y="-35" x="-143"/>
|
||||
<arc antialias="true" width="6" height="6" start="-180" angle="-180" style="line-style:normal;line-weight:normal;filling:none;color:black" y="-35" x="-163"/>
|
||||
<rect rx="0" antialias="false" width="2" height="7" style="line-style:normal;line-weight:normal;filling:black;color:black" y="-32" ry="0" x="99"/>
|
||||
<rect rx="0" antialias="false" width="2" height="7" style="line-style:normal;line-weight:normal;filling:black;color:black" y="-32" ry="0" x="179"/>
|
||||
<arc antialias="true" width="6" height="6" start="-180" angle="-180" style="line-style:normal;line-weight:normal;filling:none;color:black" y="-35" x="-183"/>
|
||||
<arc antialias="true" width="6" height="6" start="-180" angle="-180" style="line-style:normal;line-weight:normal;filling:none;color:black" y="-35" x="177"/>
|
||||
<arc antialias="true" width="6" height="6" start="-180" angle="-180" style="line-style:normal;line-weight:normal;filling:none;color:black" y="-35" x="-203"/>
|
||||
<arc antialias="true" width="6" height="6" start="-180" angle="-180" style="line-style:normal;line-weight:normal;filling:none;color:black" y="-35" x="-223"/>
|
||||
<arc antialias="true" width="6" height="6" start="-180" angle="-180" style="line-style:normal;line-weight:normal;filling:none;color:black" y="-35" x="157"/>
|
||||
<rect rx="0" antialias="false" width="2" height="7" style="line-style:normal;line-weight:normal;filling:black;color:black" y="-32" ry="0" x="-221"/>
|
||||
<arc antialias="true" width="6" height="6" start="-180" angle="-180" style="line-style:normal;line-weight:normal;filling:none;color:black" y="-35" x="137"/>
|
||||
<line y1="-25" y2="-14" length2="1.5" antialias="false" x2="20" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="20" length1="1.5"/>
|
||||
<line y1="-36" y2="-45" length2="1.5" antialias="false" x2="120" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="120" length1="1.5"/>
|
||||
<text rotation="0" color="#000000" text="1" y="-40" x="-219" font="Sans Serif,7,-1,5,50,0,0,0,0,0"/>
|
||||
<line y1="-36" y2="-45" length2="1.5" antialias="false" x2="100" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="100" length1="1.5"/>
|
||||
<line y1="-36" y2="-45" length2="1.5" antialias="false" x2="80" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="80" length1="1.5"/>
|
||||
<line y1="-36" y2="-45" length2="1.5" antialias="false" x2="60" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="60" length1="1.5"/>
|
||||
<line y1="-36" y2="-45" length2="1.5" antialias="false" x2="40" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="40" length1="1.5"/>
|
||||
<line y1="-36" y2="-45" length2="1.5" antialias="false" x2="20" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="20" length1="1.5"/>
|
||||
<arc antialias="true" width="6" height="6" start="-180" angle="-180" style="line-style:normal;line-weight:normal;filling:none;color:black" y="-35" x="117"/>
|
||||
<arc antialias="true" width="6" height="6" start="-180" angle="-180" style="line-style:normal;line-weight:normal;filling:none;color:black" y="-35" x="97"/>
|
||||
<arc antialias="true" width="6" height="6" start="-180" angle="-180" style="line-style:normal;line-weight:normal;filling:none;color:black" y="-35" x="77"/>
|
||||
<arc antialias="true" width="6" height="6" start="-180" angle="-180" style="line-style:normal;line-weight:normal;filling:none;color:black" y="-35" x="57"/>
|
||||
<arc antialias="true" width="6" height="6" start="-180" angle="-180" style="line-style:normal;line-weight:normal;filling:none;color:black" y="-35" x="37"/>
|
||||
<arc antialias="true" width="6" height="6" start="-180" angle="-180" style="line-style:normal;line-weight:normal;filling:none;color:black" y="-35" x="17"/>
|
||||
<rect rx="0" antialias="false" width="2" height="7" style="line-style:normal;line-weight:normal;filling:black;color:black" y="-32" ry="0" x="19"/>
|
||||
<line y1="-37" y2="-32" length2="1.5" antialias="false" x2="-250" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="-250" length1="1.5"/>
|
||||
<line y1="-32" y2="-32" length2="1.5" antialias="false" x2="-246" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="-254" length1="1.5"/>
|
||||
<line y1="-30" y2="-30" length2="1.5" antialias="false" x2="-248" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="-252" length1="1.5"/>
|
||||
<line y1="-28" y2="-28" length2="1.5" antialias="false" x2="-249" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="-251" length1="1.5"/>
|
||||
<line y1="-60" y2="-60" length2="1.5" antialias="false" x2="270" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="-250" length1="1.5"/>
|
||||
<line y1="-60" y2="-50" length2="1.5" antialias="false" x2="280" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="270" length1="1.5"/>
|
||||
<line y1="-50" y2="-10" length2="1.5" antialias="false" x2="280" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="280" length1="1.5"/>
|
||||
<line y1="-10" y2="0" length2="1.5" antialias="false" x2="270" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="280" length1="1.5"/>
|
||||
<line y1="0" y2="0" length2="1.5" antialias="false" x2="-250" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="270" length1="1.5"/>
|
||||
<line y1="0" y2="-10" length2="1.5" antialias="false" x2="-260" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="-250" length1="1.5"/>
|
||||
<line y1="-10" y2="-50" length2="1.5" antialias="false" x2="-260" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="-260" length1="1.5"/>
|
||||
<line y1="-50" y2="-60" length2="1.5" antialias="false" x2="-250" end2="none" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" x1="-260" length1="1.5"/>
|
||||
<terminal name="" type="Generic" uuid="{2fd7e019-01c1-4cf6-9c8c-e8adca3ce496}" orientation="s" y="-14" x="240"/>
|
||||
<terminal name="" type="Generic" uuid="{6a39b490-3888-4356-91cc-0a6574a30788}" orientation="n" y="-45" x="-140"/>
|
||||
<terminal name="" type="Generic" uuid="{30fe38ae-876f-478a-83d5-22342403d1bb}" orientation="n" y="-45" x="120"/>
|
||||
<terminal name="" type="Generic" uuid="{6d000d02-1a83-4d64-816c-40b834beef4f}" orientation="s" y="-14" x="120"/>
|
||||
<terminal name="" type="Generic" uuid="{7e0e49fe-4d0a-4560-9f78-a0e160283578}" orientation="s" y="-14" x="-200"/>
|
||||
<terminal name="" type="Generic" uuid="{26db0fbd-62c0-4de4-97ac-5b0bf685cef4}" orientation="s" y="-14" x="-180"/>
|
||||
<terminal name="" type="Generic" uuid="{9e7a5014-3d0f-4f58-880a-9517e77f17ee}" orientation="s" y="-14" x="-160"/>
|
||||
<terminal name="" type="Generic" uuid="{98fdfeec-a022-4d30-bfb1-915a2bb00351}" orientation="s" y="-14" x="-80"/>
|
||||
<terminal name="" type="Generic" uuid="{ed4b19f3-15b5-432c-a9c8-bee918a2429b}" orientation="s" y="-14" x="-60"/>
|
||||
<terminal name="" type="Generic" uuid="{f3c3c49c-4170-46ff-a474-fd1fea020156}" orientation="n" y="-45" x="-100"/>
|
||||
<terminal name="" type="Generic" uuid="{da25c11c-260c-4fb8-9a9b-ae8d11c96e6d}" orientation="n" y="-45" x="-240"/>
|
||||
<terminal name="" type="Generic" uuid="{bcfc8484-a82a-4585-a428-a9ffc2a676d7}" orientation="n" y="-45" x="-160"/>
|
||||
<terminal name="" type="Generic" uuid="{ab25a69a-5c8c-469e-9da7-b79e3ebeb4ba}" orientation="n" y="-45" x="-220"/>
|
||||
<terminal name="" type="Generic" uuid="{ef7db529-e31c-4f39-b831-8c578fb43462}" orientation="s" y="-14" x="20"/>
|
||||
<terminal name="" type="Generic" uuid="{a21c8338-b99c-44a6-9b42-e71b936344ea}" orientation="s" y="-14" x="200"/>
|
||||
<terminal name="" type="Generic" uuid="{aacb7245-00e4-4588-8960-4c3aaea6085b}" orientation="n" y="-45" x="60"/>
|
||||
<terminal name="" type="Generic" uuid="{b6143a32-a9c1-40aa-8e94-c64e0d217a8f}" orientation="s" y="-14" x="-40"/>
|
||||
<terminal name="" type="Generic" uuid="{7ee9a07f-0bf2-42f4-bf51-cabae0875328}" orientation="n" y="-45" x="100"/>
|
||||
<terminal name="" type="Generic" uuid="{b03f6f6e-658a-49fa-84bd-03243a44ff18}" orientation="s" y="-14" x="60"/>
|
||||
<terminal name="" type="Generic" uuid="{a88754c9-bf2c-4e3d-aa45-95113c37c426}" orientation="s" y="-14" x="-140"/>
|
||||
<terminal name="" type="Generic" uuid="{efb0a56a-20ec-49ab-a470-dec34ed12027}" orientation="n" y="-45" x="260"/>
|
||||
<terminal name="" type="Generic" uuid="{8ad57bf7-4125-4268-9817-e0d84a3e80c7}" orientation="s" y="-14" x="100"/>
|
||||
<terminal name="" type="Generic" uuid="{66764cb9-b07b-4d38-bea0-4caefd955b61}" orientation="n" y="-45" x="-120"/>
|
||||
<terminal name="" type="Generic" uuid="{bfaa681e-3fc9-4806-8b32-36af6ae51932}" orientation="s" y="-14" x="180"/>
|
||||
<terminal name="" type="Generic" uuid="{4607cb5a-db47-40aa-9cfe-e22de405bf88}" orientation="s" y="-14" x="-20"/>
|
||||
<terminal name="" type="Generic" uuid="{951d1e08-5f4d-4034-aecb-b6b8033d0dcf}" orientation="n" y="-45" x="-40"/>
|
||||
<terminal name="" type="Generic" uuid="{f28988c9-363c-4486-a22f-a5365a15da8a}" orientation="n" y="-45" x="-180"/>
|
||||
<terminal name="" type="Generic" uuid="{31805e67-1014-4ed3-83d0-6e15db99bbb7}" orientation="s" y="-14" x="-220"/>
|
||||
<terminal name="" type="Generic" uuid="{bdb67495-8137-4c88-9986-671070320ce6}" orientation="n" y="-45" x="0"/>
|
||||
<terminal name="" type="Generic" uuid="{434fcf9a-7e51-481d-a6c7-9269d6d99b29}" orientation="s" y="-14" x="-100"/>
|
||||
<terminal name="" type="Generic" uuid="{7fede45b-d5cf-468a-9cca-52aff95a1c78}" orientation="s" y="-14" x="80"/>
|
||||
<terminal name="" type="Generic" uuid="{c7897fc8-739e-4c72-b524-a8d7ba6f2b6b}" orientation="n" y="-45" x="-60"/>
|
||||
<terminal name="" type="Generic" uuid="{bef0d722-d69f-4489-b8f1-2afb03de1784}" orientation="s" y="-14" x="220"/>
|
||||
<terminal name="" type="Generic" uuid="{9ae10c41-be73-4e99-9423-568ff93475fd}" orientation="n" y="-45" x="-200"/>
|
||||
<terminal name="" type="Generic" uuid="{8a60a879-ccf3-4c21-a0ab-3a2ae2d01dbe}" orientation="n" y="-45" x="200"/>
|
||||
<terminal name="" type="Generic" uuid="{24426091-f2ec-4154-aba3-6bdaec485c4f}" orientation="n" y="-45" x="20"/>
|
||||
<terminal name="" type="Generic" uuid="{ba1e41da-e37c-4f54-8237-618421d1e344}" orientation="s" y="-14" x="0"/>
|
||||
<terminal name="" type="Generic" uuid="{b28694f6-eac6-4eb9-9c3c-ed0cc49328e6}" orientation="n" y="-45" x="40"/>
|
||||
<terminal name="" type="Generic" uuid="{2481d2c4-d913-4d55-a48a-20eef116dc46}" orientation="s" y="-14" x="-120"/>
|
||||
<terminal name="" type="Generic" uuid="{1e6a6de8-1126-4ec0-a8dc-833a14913da6}" orientation="n" y="-45" x="-20"/>
|
||||
<terminal name="" type="Generic" uuid="{24d3c3fe-8549-4e16-b8b3-dc2fa1675be6}" orientation="n" y="-45" x="80"/>
|
||||
<terminal name="" type="Generic" uuid="{5dbff03f-b71c-4f41-81e4-5093fafce82f}" orientation="s" y="-14" x="160"/>
|
||||
<terminal name="" type="Generic" uuid="{da4a5bbe-5aa7-4493-99b6-e87b73d6b858}" orientation="n" y="-45" x="-80"/>
|
||||
<terminal name="" type="Generic" uuid="{071a2b7e-4a5a-465a-b040-0e3579f36665}" orientation="s" y="-14" x="260"/>
|
||||
<terminal name="" type="Generic" uuid="{fe47517f-462b-4a9a-a2c3-ae756dbfefe8}" orientation="n" y="-45" x="140"/>
|
||||
<terminal name="" type="Generic" uuid="{1f24bdb1-cc99-4d89-8d89-8e104aaf498e}" orientation="n" y="-45" x="220"/>
|
||||
<terminal name="" type="Generic" uuid="{2738bb7b-c6be-4aa4-81c9-31e4e457cf31}" orientation="s" y="-14" x="-240"/>
|
||||
<terminal name="" type="Generic" uuid="{4d909e53-50b1-4b45-b8c3-262038f6c247}" orientation="n" y="-45" x="160"/>
|
||||
<terminal name="" type="Generic" uuid="{0e87f452-86a3-45ef-a66b-8ed92e08899d}" orientation="n" y="-45" x="180"/>
|
||||
<terminal name="" type="Generic" uuid="{1c6e1ab1-d98f-4322-bc2b-def58fefbea7}" orientation="s" y="-14" x="40"/>
|
||||
<terminal name="" type="Generic" uuid="{1f0b7ff5-9f52-4517-b749-018b5bfa59dd}" orientation="n" y="-45" x="240"/>
|
||||
<terminal name="" type="Generic" uuid="{8adac905-77b9-471f-8822-4ac63d3f6cf6}" orientation="s" y="-14" x="140"/>
|
||||
</description>
|
||||
</definition>
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user