Category Archives: IoT

What are the differences between improving the design (and operation) of a smart city, an aircraft engine, a muscle car, a large enterprise, and/or an integrated commercial global cloud services platform …all running at hyperscale?

COPYRIGHT © 2016-2017 by Michael Herman, Toronto, Canada. All rights reserved. [Updated June 16, 2018]

Question: What are the differences between improving the design (and operation) of:

  • a smart city,
  • an aircraft engine,
  • a muscle car,
  • a large enterprise, and/or
  • an integrated commercial global cloud services platform
  • …all running at hyperscale?

Answer: None.

Scroll down to see the use cases; then the list of resources at the bottom of this article.

Use Case 1: Aircraft engine, and
Use Case 2: 
Muscle car

Continuous Transformation 2

Figure 1. Continuous Transformation Model: Aircraft Engines and Muscle Cars

Use Case 3: Smart city,
Use Case 4: Large enterprise operating at hyperscale, and
Use Case 5: 
Integrated commercial global cloud services platform operating at hyperscale

Continuous Transformation 1.png

Figure 2. Continuous Transformation Model: Smart Cities, Large Enterprises, and Cloud Services Platforms

Diving Deeper: #Graphitization

To go deeper, checkout #Graphitization of the Enterprise (click here) as well as the list of references below.

progressive-ea-model-1-0-9-peam3-ea-chasm-auto-dots

Figure 3. #Graphitization Continuous Transformation Model

 

progressive-ea-model-1-0-11-peam5-1010

Figure 4. Continuous Transformation Framework: Process Groups and Activities

References

  1. Michael Herman, Blockchain Developer, Enterprise Architect and Data Scientist: #Graphitization Inventor  (click here)
  2. Continuous Transformation and Transformative Change are key principles of the Total Enterprise Architecture Model (TEAM) (click here)
  3. To dig deeper, check out Graphitization of the Enterprise (click here)
  4. [Enterprise Architecture, Big Data, CRM, ERP, …] Tools and Methods Don’t Generate Business Value (click here)

Best regards,

Michael Herman
Enterprise Architect and Data Scientist
Parallelspace Corporation
M: 416 524-7702
E: mwherman@parallelspace.net
B: http://hyperonomy.com
L: https://www.linkedin.com/in/mwherman/recent-activity/posts/
Skype: mwherman2000

Living at the intersection of Enterprise Architecture, Enterprise Knowledge, and Data Science

1 Comment

Filed under ArchiMate, Architecture Reference Models, Crossing the EA Charm, Data Science, Enterprise Architecture, Graphitization, How do we think, IoT, Space Flight

Crossing the Enterprise Architecture Chasm

chasm

Enterprise Architecture Chasm

What is the Enterprise Architecture Chasm?  First, a quick Google search didn’t find any previous references to the term Enterprise Architecture Chasm, at least not in the context I’m using it.  So what am I talking about?  We need to recognize the difference, the practical gap, that will always exist between EA models, plans, and other artifacts and an enterprise’s actual strategies, systems, assets, and processes. There will always be a gap because of several factors:

  • Time to design
  • Time to plan
  • Time to act
  • Time to operate
  • Time to measure new outcomes

and, lastly, the completeness and faithfulness of transformative changes that are actually implemented relative what’s documented in the enterprise architecture.  Here’s a picture highlighting this gap, the Enterprise Architecture Chasm.

progressive-ea-model-1-0-9-peam3-ea-chasm-dots

Figure 1. Total Enterprise Architecture Model (TEAM): Enterprise Architecture Chasm

This iterative 4-step management cycle is called the Continuous Transformation Framework. At a given time, there isn’t just 1 Continuous Transformation cycle at work in an organization but there can be several, even hundreds, dependent on the size and complexity of your enterprise.

Homework Question: Which dimensions or metrics can be used to characterize or benchmark the size of the Enterprise Chasm in an organization?

Strategy Chasm

Is the EA Chasm the only chasm?  No.  In most organizations, there is most likely a Strategy Chasm as well – the gap between the organization’s motivations and strategies and what is represented and planned for in the enterprise architecture.  Same set of issues.  They just occur earlier in the process.  Here’s an example of the Strategy Chasm. (Click to enlarge this diagram.)

progressive-ea-model-1-0-6-peam3-chasms

Figure 2. Team Enterprise Architecture Model (TEAM): Strategy Chasm and Enterprise Architecture Chasm

In the Fall of 2016, two webinars were presented that looked how to extend traditional enterprise architecture methods (e.g. TOGAF) to be more complete/fill in some gaps.  The first talk, 7 Reasons Why IT4IT™ is Good for Architects presented by Dan Warfield and Sven van Dijk, looked to The Open Group’s IT4IT for answers on how to cross the enterprise architecture chasm. The second talk, BIZBOK® Guide and TOGAF® Standard: Business Architecture Value Proposition presented by Chris Armstrong  and Wally McLaughlin, looked at a related set of problems from a Business Architecture and BIZBOK perspective.

To what extent are your EA methods, repositories, and tools helping your organization cross the Strategy Chasm and the EA Chasm?

Will IT4IT and BIZBOK and other methods (e.g. ITIL) help cross or close the gap?

“Time will tell…”

Best regards,
Michael Herman (Toronto)
Parallelspace Corporation

p.s. These diagrams on based on the Progressive Enterprise Architecture Model described here.

12 Comments

Filed under ArchiMate, Architecture Reference Models, continuous transformation, Crossing the EA Charm, Digital Transformation, Enterprise Architecture, Enterprise Architecture Chasm, IoT, ModelMate

Microsoft Cortana Connected Car Demo (aka Vehicle Telemetry Analytics Solution): Deep Dive

I finally found the documentation for the Microsoft Cortana Suite (aka Vehicle Telemetry Analytics Solution).  You can find it here: https://azure.microsoft.com/en-us/documentation/articles/cortana-analytics-playbook-vehicle-telemetry-deep-dive/

In addition, Matthew Roche had an excellent presentation at the MS Build 2016 Conference on the same topic/solution: Cortana Analytics Suite and Information Management

Michael Herman (Toronto)

Leave a comment

Filed under Cortana, IoT, Microsoft Azure

FYHumor: A list of humorous Internet of Things (IoT) and other sightings

Rather than pollute my blog with several FYHumor IoT postings, I’ll gather them here into this single article (reverse chronological order).  Some of these listing might be a bit on the “colorful” side …even judged in poor taste by some.  Others might judged to not even be funny. Caveat Emptor

4. This was tweeted yesterday…

frameworks-what-do-you-do-for-a-living

3. Just took the socks out of the dryer: Does anyone know of an Event/IoT Hub and Machine Learning module that will sort and fold socks?

2. “If you don’t have a real office, does that make you an Internet Thing?”  Michael Herman, April 2016.

Have a great day wherever you are and to whatever you’re connect to.

{ ID: “me”, cornerof: “University and Adelaide” }

IMAG2280

1.  External IoT gone too far …

FB_IMG_1462559745080

Leave a comment

Filed under Humor, IoT

Microsoft Azure Stack POC Architecture Reference Model (ARM): ArchiMate Model – version 1-0-7 – April 30, 2016

[Updated March 3, 2017]

PLEASE POST A COMMENT ABOUT WHY THIS PAGE IS IMPORTANT TO YOU.
This particular page is 1 of my top 5 most viewed pages (ever) and I’d like to understand why. Thank you!

MS Azure Stack POC 1-0-7

Figure 1. Parallelspace Logical/Physical Architecture View: Microsoft Azure Stack POC (April 2016)

[Click here for a larger version of the ArchiMate model]

Notes

  • The actual drive letters will vary from system to system. Don’t fret these details.
  • I’ll keep adding more detail to the model as I work through the full deployment of the Microsoft Azure Stack POC.

The above ArchiMate enterprise architecture model was created with Archi 3.2 – The Free ArchiMate Modeling Tool.  Download the latest version of Archi from here.

Here’s what the original Microsoft drawing (a Visio sketch – not a model) looks like in April 2016 (from https://azure.microsoft.com/en-us/documentation/articles/azure-stack-architecture/):

image1

Figure 2. Microsoft Azure Conceptual Architecture View: Microsoft Azure Stack POC (April 2016)

[Click here for a larger version of the Microsoft drawing.]  It’s mostly useless but typical of what you’d expect in a Microsoft marketecture diagram.

Microsoft has subsequently updated their conceptual architecture diagram (March 1, 2017). It now looks like this (at the same URL noted above).  The new diagram is an improvement and I can’t help but imagine it was influenced by my ArchiMate model.

ms-azure-stack-2017-image1

Figure 3. Microsoft Azure Architecture View: Microsoft Azure Stack POC (March 2017)

For a topic that in theory has a relatively narrow audience, this article has had an extraordinary number of views over the past year.

Best regards,
Michael Herman (Toronto)
mwherman@parallelspace.net

p.s. I can only assume it is Microsofties trying to learn a little bit more about enterprise architecture.  You can see the (good) results in Figure 3 (above).

7 Comments

Filed under ArchiMate, Architecture Reference Models, Crossing the EA Charm, Enterprise Architecture, Graphitization, IoT, Microsoft Azure, Parallelspace TDM

IoT JSON Message Formats: JSON Blow Darts, JSON Arrows, JSON Spears, and JSON Freight Trains

Parallelspace Corporation Technical Note TN0101

IoT JSON Message Formats: JSON Blow Darts, JSON Arrows, JSON Spears, and JSON Freight Trains.

Parallelspace Confidential Information
Document Version 1.1
April 26, 2016

Michael Herman
Principal Architect
Parallelspace Corporation
mwherman@parallelspace.net

Abstract

This document describes motivation, problem statement, solution options, and recommendations for a layered or tiered approach for the Parallelspace TEAM IoT JSON message format based on a set of documented requirements. The final solution is based on the definition of four (4) message formats: JSON Blow Darts, JSON Arrows, JSON Spears, and JSON Freight Trains.

 

 

Introduction

This document describes motivation, problem statement, solution options, and recommendations for a layered or tiered approach for the Parallelspace TEAM IoT JSON message format based on a set of documented requirements. The final solution is based on the definition of four (4) message formats: JSON Blow Darts, JSON Arrows, JSON Spears, and JSON Freight Trains.

 

CONTEXT

The Context section provides background information for the topics covered in the Discussion section that follows immediately after this section.

Definitions

The following list of terms and their definitions are used in the Discussion section.

Thing A Thing is a physical or virtual object or entity.  Physical Things are usually connected directly or indirectly to the Internet.
Event A Change of State of a Thing
Change of State Change in the number of properties, the name of a property, the attributes of a property, or the value of a property associated with a Thing.
Message Serialization of an Event (i.e. the change in the state of a physical or virtual object or entity). In addition, a Message can be used to capture and communicate the initial and/current state of Things at rest (i.e. Things are haven’t undergone a recent change in state).
Event Hub Local service that Things send Event information to.
Event Hub Gateway Centralized, possibly distributed, usually cloud-based, services that aggregates Messages (Event information) from a Local Event Hub or possibly other Event Hub Gateways or Event Hub Pipelines.
Event Hub Pipelines A pipeline of activities that post-process Messages received by an Event Hub Gateway.

 

Additional Resources

The following list of additional resources will be helpful in further understanding the context of the Discussion section.

JSON-Schema standard on GitHub. https://github.com/json-schema/json-schema

 

DISCUSSION

Motivation

Many IoT example applications use very simple message formats consisting of a device ID and small number of parameters.  This approach is suitable for simple devices sending Change of State information to an Event Hub so that Messages can in turn be forwarded to a central, usually cloud-based Event Hub Gateway.

However, in production solution scenarios, there are additional requirements for an IoT messaging architecture to support additional metadata properties, message filtering, message routing, batching of multiple events into single messages, batching of multiple events into multiple messages, large properties (potentially forcing the creation of messages that are larger than the capabilities of the IoT technology stack, etc.)

Problem Statement

Define a series of IoT JSON message formats, from simple to more complex, that support the diverse range of production requirements.

Solution Options

The available solutions options can be organized around 2 primary axes:

Messaging requirements axis

Single, heterogeneous message format or a multi-level architecture that defines multiple message formats that build upon one and other.

Recommended Solution

The recommended solution incorporates and builds upon the 2 message format axes describe above.  The messaging requirements include:

  • Serialization of Change of Simple State
  • Single Event per Message payload support
  • Serialization of Change of Complex State
  • Support for External Message Tags (most often defined by the IoT stack)
  • Internal Message Properties (separate from the Event state information)
  • Multiple Event per Message payload support
  • Self-documenting Message formats based on JSON-Schema
  • Base64 Encoding/serialization of large Internal Properties
  • Multipart Message support for batching multiple Events into multiple Messages

Four levels or tiers of IoT JSON message formats are supported:

  • JSON Blow Darts (lightweight)
  • JSON Arrows (medium weight)
  • JSON Spears (medium-heavy weight)
  • JSON Freight Trains (heaviest weight message format the supports all of the listed requirements and multipart messages of unlimited length)

The relationship between the IoT JSON message formats and the capabilities they support are documented in Table 1. IoT JSON Message Format Capabilities.

Table 1. IoT JSON Message Format Capabilities

Parallelspace TEAM-IoT JSON Message Formats 1-0-1

JSON Blow Darts

JSON Blow Darts are the simplest form of JSON messages consisting of a single, simple, serialized, JSON object with a minimal number of properties and values. For example:

{

“latitude”: 43.0525803,

“longitude”: -76.1546939,

“temperature”: 220,

“units”: “F”

}[1]

JSON Arrows

JSON Arrows include all of the capabilities of a Blow Dart plus optionally adds the following capabilities to a IoT JSON Message:

  • Serialization of Change of Complex State
  • Support for External Message Tags

The Message may include nested child objects (nested arbitrarily deep) as well as additional message tags or properties attached to the JSON Message as external properties.  The latter external tags are often defined by the IoT Event Hub platform (e.g. Microsoft Azure Service Bus Event Hubs). The following is a simple extension of the previous Blow Dart example:

{

“latitude”: 43.0525803,

“longitude”: -76.1546939,

“temperature”: 220,

“units”: “F”,

“location”: {

“name”: “Dinosaur Bar-B-Que”,

“address”: “246 W Willow St, Syracuse, NY 13202, USA”,

“contacts”: {

“telephone”: “+1 315-476-4937”,

“website”: “http://www.dinosaurbarbque.com”

}

}

}

The following is an example of the external tags that may be attached to an Arrow. JSON notation is being used as a convenience. Often the IoT Event Hub platform will use a different mechanism, on-the-wire format and/or transport.

{

“signature”: “http://tempuri.org/Parallelspace/TEAM/”,
“sent”: “2016-04-24T08:48:45.001”

}

JSON Spears

JSON Spears are like Arrows but also provide the additional capabilities:

  • Internal Message Properties (separate from the Event state information)
  • Multiple Event per Message payload support

Below is an example of some additional properties that might be included as part of the body of an IoT JSON Message.

{

“eventsSource”: {

“timestamp”: “2016-04-24T08:48:45.001”,

“ipv4Address”: “192.168.150.202”,

“ipv6Address”: “fe80::e9d6:3cb2:9fa3:8c2e%28”,

“hostName”: “PSN-WIN8-057”

},

“processingHistory”: [

{

“timestamp”: “2016-04-24T08:48:45.001”,

“hostName”: “PSN-WIN81-001”,

“applicationComponent”: “C:/Windows/System32/WindowsPowerShell/v1.0/powershell.exe”,

“applicationArguments”: [“arg1”, “arg2”]

}

]

}

The next example illustrates internal properties are combined with the capability to support multiple events in a single IoT JSON Message:

{

“payload”: {

“eventsSource”: {

“timestamp”: “2016-04-24T08:48:45.001”,

“ipv4Address”: “192.168.150.202”,

“ipv6Address”: “fe80::e9d6:3cb2:9fa3:8c2e%28”,

“hostName”: “PSN-WIN81-001”

},

“processingHistory”: [

{

“timestamp”: “2016-04-24T08:48:45.001”,

“hostName”: “PSN-WIN81-001”,

“applicationComponent”: “C:/Windows/System32/WindowsPowerShell/v1.0/powershell.exe”,

“applicationArguments”: [“arg1”, “arg2”]

}

],

“events”: [

{

“latitude”: 43.0525803,

“longitude”: -76.1546939,

“temperature”: 220,

“units”: “F”,

“timestamp”: “2016-04-24T08:46:45.014”

},

 

{

“latitude”: 43.0525803,

“longitude”: -76.1546939,

“temperature”: 219,

“units”: “F”,

“timestamp”: “2016-04-24T08:48:45.015”

}

]

}

}

 

JSON Freight Trains

You can think of JSON Freight Trains as completely self-documenting and able to represent arrays of events of arbitrary large size.  The head of the train includes a reference to the JSON-Schema used to define the overall Freight Train IoT JSON Message format. The box cars and tanker cars that follow the engine are the arrays of events that we’ve seen in JSON Spear messages.  When the number of events in the array is too large (e.g. exceeds the capacity of the underlying IoT Event Hub platform), the array can be subdivided and sent as multiple, multipart JSON Freight Train messages.  The multipart information is represented and transported as external message properties.  Here is an example:

{

“$schema”: “http://tempuri.org/Parallelspace/TEAM/1.0/BBQ.Device/1.0/AcmeBBQ/1.0/Data/JSON-Schema.json”,

“payload”: {

“eventsSource”: {

“timestamp”: “2016-04-24T08:48:45.001”,

“ipv4Address”: “192.168.150.202”,

“ipv6Address”: “fe80::e9d6:3cb2:9fa3:8c2e%28”,

“hostName”: “PSN-WIN81-001”

},

“processingHistory”: [

{

“timestamp”: “2016-04-24T08:48:45.001”,

“hostName”: “PSN-WIN81-001”,

“applicationComponent”: “C:/Windows/System32/WindowsPowerShell/v1.0/powershell.exe”,

“applicationArguments”: [“arg1”, “arg2”]

}

],

“events”: [

{

“latitude”: 43.0525803,

“longitude”: -76.1546939,

“temperature”: 220,

“units”: “F”,

“timestamp”: “2016-04-24T08:46:45.014”

},

 

{

“latitude”: 43.0525803,

“longitude”: -76.1546939,

“temperature”: 219,

“units”: “F”,

“timestamp”: “2016-04-24T08:48:45.015”

}

]

}

}

The external message properties for a Freight Train IoT JSON message might look like the following.

{

“signature”: “http://tempuri.org/Parallelspace/TEAM/”,

“sent”: “2016-04-24T08:48:45.001”,

“psn.multipart”: {

“enabled”: “true”,

“numberofparts”: 6,

“partnumber”: 1,

“size”: 3425

},

“psn.masterMultipartID”: “ED3B42A2-3196-4937-91EE-0076747F79EB”,

“psn.multipartID”: “28A0C24B-CB84-4A16-8679-01035B844888”

}

 

Conclusions

This document described motivation, problem statement, solution options, and recommendations for a layered or tiered approach for the Parallelspace TEAM IoT JSON message format based on a set of documented requirements. The final solution is based on the definition of four (4) message formats: JSON Blow Darts, JSON Arrows, JSON Spears, and JSON Freight Trains.

This document described each of these 4 IoT JSON message formats and provided an example of each format.

 

NOTICES

The information contained in this document represents the current view of Parallelspace Corporation on the issues discussed as of the date of publication. Because Parallelspace Corporation must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Parallelspace Corporation, and Parallelspace Corporation cannot guarantee the accuracy of any information presented after the date of publication.

This document is for informational purposes only. Parallelspace Corporation MAKES NO WARRANTIES, EXPRESS, IMPLIED, OR STATUTORY, AS TO THE INFORMATION IN THIS DOCUMENT.

Complying with all applicable copyright laws is the responsibility of the user. Parallelspace Corporation grants you the right to reproduce this document, in whole or in part, specifically and solely for the purpose of personal education.

Parallelspace Corporation may have patents, patent applications, trademarks, copyrights, or other intellectual property rights covering subject matter in this document. Except as expressly provided in any written license agreement from Parallelspace Corporation, the furnishing of this document does not give you any license to these patents, trademarks, copyrights, or other intellectual property.

Unless otherwise noted, the example companies, organizations, products, domain names, e-mail addresses, logos, people, places and events depicted herein are fictitious, and no association with any real company, organization, product, domain name, email address, logo, person, place or event is intended or should be inferred.

© 2001-2016 Parallelspace Corporation. All rights reserved.

Parallelspace Corporation, Truly Collaborative Business Solutions, Parallelspace Total Enterprise Architecture Management and Parallelspace TEAM are either registered trademarks or trademarks of Parallelspace Corporation in the United States, Canada and/or other countries. The names of actual companies and products mentioned herein may be the trademarks of their respective owners

[1] Trivia: Fictitious temperature reading of one of the BBQ smokers at the Dinosaur Bar-B-Que in Syracuse, NY.

2 Comments

Filed under IoT, JSON Messages

Enterprise IoT and Total Enterprise Architecture Awesome Scenario #2: Microsoft MAP Toolkit

[Caveat: The Microsoft Assessment and Planning (MAP) Toolkit strictly speaking does not use any of the Azure services that support the Microsoft Azure IoT Suite.  That being said the MAP Toolkit is a great example of what the analysis experience might be like.  Maybe some day there will be a direct pipe from Azure Event Hubs/Stream Analytics/Data Factory and the MAP Toolkit discovery, logging and tracking capabilities.]

Previously I highlighted that one of the Delve Analytics videos was a great example of what an Enterprise IoT experience might look like.  In this post, I’m highlighting a second example: The Microsoft Assessment and Planning (MAP) Toolkit.

Here is some what dated overview video but check it out just the same.  You’ll certainly get the idea.

Lastly, here’s a second screen shot from the MAP Toolkit sample database – the one the results from drilling down to learn more about your organization’s Windows Server 2008 R2 deployment/upgrade readiness.

MAP 1

Michael Herman (Toronto)

 

Leave a comment

Filed under IoT, Parallelspace TDM

Enterprise IoT and Total Enterprise Architecture Awesome Scenario #1: Delve Analytics

[Caveat: Delve Analytics (and the Microsoft Office Graph) strictly speaking do not use any of the Azure services that support the Microsoft Azure IoT Suite.  That being said Delve Analytics is a great example of what the analysis experience might be like.  Maybe some day there will be a direct pipe from Azure Event Hubs/Stream Analytics/Data Factory into the Office Graph.  Given this crosses product group boundaries, I wouldn’t expect this to come about any time soon.]

Today, I ran across this 9 minute video with Ryan Fuller about a new Office Graph capability called Delve Analytics.

This video is an absolutely great example of the Enterprise IoT landscape I talked about in my article from a couple days ago: External IoT vs. Internal IoT: Beware of the Hype Cycle.  … an absolutely perfect example.

Here’s a link to the YouTube video Introducing Delve Analytics in Office 365 (April 6, 2016).

Watch it …it’s only 9 minutes.

Michael Herman (Toronto)

1 Comment

Filed under IoT, Parallelspace TDM

External IoT vs. Internal IoT: Beware of the Hype Cycle

Subtitle: Fusing Enterprise IoT and Traditional Enterprise Architecture

Context

External IoT – External world of devices, events, connections, storage, and analysis; the “traditional” Internet of Things; the world of devices outside the enterprise.

Internal IoT – Internal world within the enterprise consisting of business processes, business objects, actors and roles; application components, application services, application functionality, and data objects; and lastly, infrastructure consisting of servers, networks, data stores, foundation services, and foundational functionality. The “hum” within an Enterprise.

Enterprise IoT – The confluence or integration of External IoT and Internal IoT landscapes centered around a particular enterprise organization. Often represented and accessed as an enterprise graph.

Ecosystem IoT – The confluence or integration of 2 or more separate Enterprise IoT landscapes (complete or partial) centered around a specific ecosystem or community. Supporting Federated Enterprise Architecture.

Discussion

Do some of these latter terms sound familiar?  If so, you likely have some exposure, background, and experience with the practice of Enterprise Architecture Management (EAM).  Having lived on both sides of the IoT divide for more than a decade, it’s interesting to watch how the current rage around IoT is almost exclusively focused on External IoT and it’s coupling to Business Intelligence and Analysis.

What about what’s happening inside the business, information, application and infrastructure architecture of our own enterprises? …regardless of whether the “things” are internal to your organization, external to your organization, or, possibly, part of someone else’s organization (e.g. owned by a client, customer, partner, …), it’s all part of the Enterprise IoT landscape.

A good name for the combination of External IoT and Internal IoT is the “Enterprise of Things” …but another organization is already using this term.

Ultimately, this is all about the Internet of Things merged and being combined with Enterprise Architecture Management: Enterprise IoT.

“More news at 11…”

Michael Herman (Toronto)

4 Comments

Filed under Crossing the EA Charm, Definitions, Enterprise Architecture, Graphitization, IoT, Progressive Enterprise Architecture Map (PEAM)